Skip to main content
All projects
CenturionAI · Proposal GeneratorCrewAI · FastAPI · Next.jsSkills ShowcaseLive

Describe your business problem.
Receive a board-ready business case in 90 seconds.

The top consulting firms do not send proposals. They send diagnostic reports that make the client feel understood before recommending anything. The diagnosis is what creates trust, urgency, and conversion. The CenturionAI Proposal Generator replicates that mechanism — four AI agents analyse the problem, surface the real cost of inaction in Rand, design a specific technical solution, and compile a BRIDGE-framework business case. In 90 seconds. At no charge.

Two things simultaneously

What the visitor experiences

A free, industry-specific diagnostic brief with a 12-month Rand projection and a phased implementation proposal. The PDF is theirs to keep regardless of what they decide. No login. No commitment. No sales pressure before they have read the output.

What this demonstrates

Four-agent CrewAI orchestration on Railway. SSE streaming frontend. Rule-based industry classifier. Progressive diagnostic reveal. PDF generation via ReportLab. Lead capture in Supabase. Email delivery via Resend. LangSmith traces on every run.

The PDF is emailed to both parties

When a prospect submits their email, Resend delivers the PDF to them and to Wandile simultaneously. When the discovery call happens, both parties have already read the same document. The call starts with context — not introductions. This is the system replacing a 30-minute "tell me about your business" conversation with a 30-minute "here is what I found and here is what we should build."

4 agents · 90 seconds · BRIDGE framework · LangSmith traced · Priced in Rand · PDF to both parties

What this system does — three jobs

This is not a proposal generator. It is a diagnostic engine with a proposal attached.

The fundamental repositioning: McKinsey and BCG do not send proposals. They send diagnostics that make the client feel understood before recommending anything. The diagnostic is what creates trust. By the time the client reads the recommendation, they have already received insight they did not have before they engaged. That is the mechanism this replicates.

01

Proof of capability

The tool is the proof. A visitor does not need to believe claims about multi-agent AI. They watch four agents work on their own business problem and judge the output themselves. The Business Analyst surfaces the cost of inaction from their own numbers. The Solutions Architect names a specific stack and justifies the framework choice. The Alter Ego selects proof points relevant to this exact industry. The Proposal Writer compiles a 500–700 word business case that reads as if one expert wrote it.

The visitor participates in the demonstration.

02

First impression

This is the first real encounter most prospects have with CenturionAI's technical capability. The design of the interface communicates what words cannot — agent cards expanding with live output, the progressive diagnostic reveal, the BRIDGE-framework document, the LangSmith trace link that lets a technical evaluator verify every reasoning step. If the proposal reads like a template, the system has failed.

The interface design is part of the proof.

03

Sales infrastructure

The proposal is emailed to both the prospect and Wandile. When the discovery call happens, both parties have already read the same document. The call starts with context — not introductions. This is the system replacing a 30-minute "tell me about your business" conversation with a 30-minute "here is what I found and here is what we should build" conversation. The free diagnostic is the lead magnet. The paid diagnostic is the first consulting engagement.

The system streamlines the discovery process it is demonstrating.

How it works — six stages

Every stage delivers value before asking for anything.

The user gives information twice — first freely, then in structure. The system works visibly. The system gives back more than it received. The user makes a decision. Both parties fulfil their commitment. In that order, without exception.

01

INTAKE

Problem Input

What the user sees

One textarea. One question: "What problem is your business trying to solve?" No login. No account. No required fields beyond the problem text itself. A character counter. Continue activates at 30 characters.

What runs behind it

On Continue: frontend fires two parallel calls — `/api/propose/classify` (rule-based, instant, zero tokens) and `/api/propose/articulate` (Claude Haiku, ~200 tokens). Both return before Stage 2 renders. If articulate fails: cleaned raw text is used — Stage 2 is never blocked.

Design rule

No friction at this stage. A serious prospect fills in 8 questions in Stage 2 — not here.

02

STRUCTURED FORM

Structured Form

What the user sees

The AI-articulated restatement of their problem shown in an editable textarea. Industry detected with confidence percentage and regulatory tags. Eight structured fields — 4 required, 4 optional.

What runs behind it

Required: team size (dropdown), annual revenue (dropdown), what success looks like in 6 months (text, 200 chars), estimated cost of the problem (text, 200 chars). Optional: what has been tried, current systems, decision maker, timeline. "Generate My Proposal" activates only when Fields 1–4 are complete.

Design rule

This is a qualification filter. A prospect who will not invest 3 minutes to describe their situation is not ready to receive an R80,000 proposal.

03

AGENT CARDS

Diagnostic

What the user sees

Four agent cards run sequentially. Active card: orange border, spinner. Completed card: green border, expands to show the finding in 2–3 sentences. Pending cards: 40% opacity. Progress text below: "This takes 60–90 seconds. Do not close this page."

What runs behind it

Frontend calls `/api/propose/stream` SSE endpoint on Railway. Agent findings arrive as `agent_complete` SSE events with structured finding text extracted from raw output. The `complete` event carries the full proposal text and proof element. LangSmith traces every step.

Design rule

The finding text is the cleaned agent output in Wandile's voice — specific, credible, not a status update.

04

OUTPUT

Business Case Document

What the user sees

Full BRIDGE-framework proposal displayed as a readable document — not a preview, not blurred. Eight sections: Hook (Rand figure + uncomfortable truth), Business Context, Real Problem, Insight, Direction (specific stack + justified framework), Relevant Proof, Go-Forward Plan (three phases in Rand), Easy Next Step.

What runs behind it

Document rendered from the `complete` SSE event's proposal text. Rand projections calculated from client's own numbers — Field 4 cost estimate — not benchmarks. Pricing ranges use the low-to-mid range from the CenturionAI pricing guide.

Design rule

All Rand figures are based on the client's own input. "Industry data suggests firms like yours lose up to R2 million" is never acceptable. "Based on your input of 120 hours at R250/hour" is.

05

PROOF

Proof Element

What the user sees

Industry-specific sample output showing what the built system would actually produce — shown below the proposal and above the offer gate.

What runs behind it

Generated by `get_proof_element(industry, problem)` in `knowledge.py`. Returned in the `complete` SSE event as `proof_element`. For low-confidence classifications: three relevant capability examples instead of one industry-specific sample.

Design rule

Show, not tell. The proposal describes what will be built. The proof element demonstrates it.

06

OFFER + DELIVERY

Offer Gate

What the user sees

Four commitment-reducing guarantees displayed before the email form. Two fields: Name and Email. Button: "Send Me the PDF." PDF sent to both the prospect and Wandile via Resend (`proposals@centurionai.co.za`). Both parties have the same document before the discovery call.

What runs behind it

Frontend calls `/api/propose/lead` → backend saves lead to Supabase, generates PDF via ReportLab, calls Resend API for dual delivery, returns `pdf_filename`. Confirmation screen shows direct download link + discovery call CTA. Tier 2 upsell lives in the email sequence, not on the confirmation screen.

Design rule

The full proposal is shown before the email gate. Blurring the proposal or showing a teaser damages trust. The PDF is the convenient format, not the content gate.

The four-agent CrewAI crew

Four agents. Sequential. Each builds on the previous one's output.

Agents run in sequence — not in parallel. Each agent receives the output of the previous one as context for its own task. The final proposal is the result of four specialist reasoning passes over the same problem, not a single monolithic generation. The BRIDGE framework is not a formatting choice — it is the architecture each agent maps to. There is no generic output when the architecture is this specific.

Agent 01

Business Analyst

B + I — Business Understanding + Insight

Reads the structured intake — articulated problem, team size, revenue, cost estimate, systems in use. Identifies the real problem beneath the stated problem. Surfaces the cost of inaction in Rand, calculated from the client's own numbers — not industry benchmarks or assumed multipliers. Uses the RAG tool to pull relevant context from the CenturionAI portfolio.

Output:Real cost of inaction in Rand · Root cause vs symptom · Industry-specific business context
Agent 02

AI Solutions Architect

R + D — Relevant Proof + Differentiation

Designs the specific technical solution. Selects and justifies the right framework — LangGraph vs CrewAI vs Claude API vs RAG pipeline — based on the actual problem, not a generic recommendation. Pulls prior work from the portfolio RAG to demonstrate directly applicable proof. Names the stack. Justifies every choice.

Output:Named technical stack · Framework justification · Prior work pulled from RAG
Agent 03

Wandile Alter Ego

R — Relevant Proof (personal layer)

Maps the solution to specific personal experience. Selects the right differentiator blocks — FAIS regulatory background for financial services, SOW Logistics experience for operational problems, voice AI deployments for sales-driven businesses — and crafts the opening hook that makes the proposal feel authored, not generated.

Output:2–3 industry-relevant proof points · Differentiator blocks applied · Authored opening hook
Agent 04

Proposal Writer

G + E — Go-Forward Plan + Easy Next Step

Compiles the full BRIDGE-framework business case from the three preceding agents' outputs. Applies the CenturionAI pricing guide in Rand — conservative ranges, low-to-mid pricing on a first proposal. Builds the phased delivery plan. Ends with one specific, actionable next step. 500–700 words. Reads as if one expert wrote it.

Output:BRIDGE-framework proposal · Phased Go-Forward Plan in Rand · One specific next step

The BRIDGE framework — each section maps to an agent output

B

Business Understanding

Who the business is, what it does, what context the decision lives in — proved we did the work before recommending anything

R

Real Problem

The actual problem — often different from the stated one. The root cause, not the symptom

I

Insight

The uncomfortable truth. The thing they had not named. The cost of inaction in Rand, from their own numbers

D

Differentiation

Why this solution, from this builder — specific prior work, specific regulatory knowledge, specific stack justification

G

Go-Forward Plan

Three phases with Rand pricing ranges and timelines — conservative, sequenced, buildable

E

Easy Next Step

One action. One ask. No ambiguity about what happens after reading the proposal

Stage 5 — Proof element

Show, not tell. Every industry has a sample output.

The proposal describes what will be built. The proof element demonstrates it. Shown below the business case document and above the offer gate — before the prospect has committed to anything — an industry-specific sample output shows exactly what the built system would produce.

The proof element is generated by get_proof_element(industry, problem) in knowledge.py and returned in the complete SSE event. For low-confidence classifications (below 70%), three relevant capability examples are shown instead of one industry-specific sample.

11 industries. 11 different proof elements. The visitor reads the proposal about their problem and immediately sees what the output of the built system looks like in their context. The gap between "this sounds interesting" and "I can see exactly what this would produce for us" is closed before the email gate.

Financial ServicesInsuranceLegalLogisticsRetail / E-commerceReal EstateHealthcareTechnologyEducationManufacturingEstate Administration

Financial Services / Accounting

A sample clause analysis from a standard SA commercial lease — what the document AI flags, explains, and what the client is legally entitled to.

Logistics

A sample automated quote follow-up sequence — three messages timed at 2hr, 24hr, and 72hr after quote submission, pre-filled with the quote details.

Legal

A sample CCMA referral deadline tracker — 30-day countdown from date of dismissal, with the Section 191(1)(b)(i) calculation shown explicitly.

Insurance

A sample TCF compliance checklist with automated status tracking and escalation triggers per outcome category.

Estate Administration

A sample deceased estate progress dashboard — 6 phases, current status, next deadline, document checklist by phase.

Retail / SME

A sample lead pipeline showing automated follow-up triggered by form submission — 3-touch sequence with response tracking.

Stage 6 — The offer gate

Four guarantees before the email field appears.

The offer gate is not a form — it is a commitment exchange. The prospect has already received the full proposal and the proof element at no cost. The email form is the mechanism for PDF delivery — not a content gate. Four commitment-reducing guarantees are displayed before the form renders.

01

Discovery call is free

30 minutes. No commitment. No sales pressure. The call is a conversation about the proposal — not a sales presentation.

02

Phase 1 scope document is included

The prospect sees exactly what gets built, in what order, at what cost — before committing to anything. The scope document is produced before any build commitment.

03

40/40/20 payment terms

40% on scope sign-off. 40% on delivery. 20% on go-live. Nobody pays in full upfront. The risk is shared.

04

The PDF is theirs regardless

The proposal is delivered whether the prospect engages CenturionAI or not. The value is given first. The relationship is earned after.

Two-tier model

Tier 1 — Current build

Free Diagnostic Brief

Live
  • 4-agent CrewAI crew — 90 seconds, fully automated
  • BRIDGE-framework proposal — 500–700 words
  • 12-month Rand projection from client's own numbers
  • Industry-specific proof element
  • PDF to both parties via Resend
  • LangSmith trace link included
  • Discovery call CTA in PDF footer

What a consulting firm would charge R50,000 to produce — delivered in 90 seconds at no charge.

Tier 2 — Specification complete

Deep Diagnostic Report

Build not started
  • Document upload — contracts, financials, process maps
  • Real market benchmarking via Tavily web search agents
  • Financial modelling agent — 12/24/36-month Rand projections
  • Custom proof of concept — live, running demo
  • 20–30 page PDF report (vs 500–700 word proposal)
  • 24–48 hour delivery
  • Two price points: R2,500 (report) or R5,000 (report + 1hr strategy session)

What a consulting firm would charge R150,000–R500,000 to produce — delivered in 48 hours for R2,500–R5,000. Build begins after free tier is live and generating leads.

Conversion targets

Email conversion (proposal → email submit)

40%+

Discovery call bookings (email → call booked)

15%+

Free → paid tier conversion (post-launch)

5–8%

Paid diagnostic → implementation engagement

30%+

Average implementation contract value

R80,000–R200,000

Technical architecture

What runs under the proposal.

A rule-based industry classifier and an AI articulation call run in parallel before the crew starts. The crew streams findings as SSE events — each agent's output arrives as it completes, not as a batch after 90 seconds. LangSmith traces every step and the trace link is embedded in the PDF. Both parties receive the PDF via Resend before the prospect has left the confirmation screen.

Problem description
Structured form (8 fields)
Industry classification

Parallel pre-crew calls

/propose/classify

Rule-based · instant · zero tokens · 11 industries · confidence + regulatory tags

/propose/articulate

Claude Haiku · ~200 tokens · professional restatement · fallback to cleaned raw text

/propose/stream — FastAPI SSE · CrewAI 4-agent crew · Railway

A01

Business Analyst

A02

AI Solutions

A03

Wandile Alter

A04

Proposal Writer

Sequential · Each agent receives previous output · RAG tool (LangChain + ChromaDB) available to all

SSE events streaming to frontend

agent_complete

×4 — one per agent · finding text + agent name

complete

Full proposal text + proof element + LangSmith URL

error

Partial text rendered · no blank screen

/propose/lead → Supabase

Name · email · company · problem · industry · session ID · PDF filename

ReportLab PDF

Branded · CTA footer · LangSmith trace URL embedded · download link returned

Resend dual delivery

Prospect + Wandile · proposals@centurionai.co.za · before confirmation screen renders

Agent orchestration

CrewAI — sequential crew, 4 specialist agents, structured task outputs

LLM — Agents 2/3/4

Anthropic Claude Sonnet — instruction following, structured BRIDGE output

LLM — Articulate

Anthropic Claude Haiku — problem restatement, ~200 tokens, runs in parallel with classifier

RAG

LangChain + ChromaDB — portfolio docs, differentiator blocks, pricing guide

Observability

LangSmith — full trace per run, every node, shareable public link, included in PDF

Streaming

FastAPI SSE — `agent_complete` events with finding text, `complete` event with full proposal + proof element

PDF generation

ReportLab — branded PDF, discovery call CTA in footer, LangSmith trace URL embedded

Email delivery

Resend API — `proposals@centurionai.co.za` → prospect + Wandile · dual delivery on every submission

Lead storage

Supabase PostgreSQL — name, email, company, problem text, industry, confidence, session ID, PDF filename

Industry classifier

Rule-based Python — 11 industries, zero tokens, instant, regex + keyword patterns

Frontend

Next.js 14 App Router · TypeScript · Tailwind CSS · Vercel · auto-deploy from main

Backend

FastAPI Python · Railway · api.centurionai.co.za · auto-deploy from main

LangSmith observability

Every proposal run is traced. The trace link is in the PDF.

Every proposal run produces a LangSmith trace. A shareable public link is displayed on the confirmation screen immediately after the crew completes — and embedded in the PDF footer. A technical evaluator who receives the proposal can verify exactly how every agent reasoned, what RAG searches ran, and what the total run cost.

The proposal is the business deliverable. The trace is the technical credential. A visitor who claims to build multi-agent AI systems provides a trace link. A visitor who does not is making an unverified claim.

This is not a demo feature. This is how every CenturionAI system is instrumented from day one.

What the LangSmith trace shows

  • Each agent's full reasoning chain — every thought, visible and inspectable
  • Tool calls made — which RAG searches ran, what was retrieved, what was rejected
  • Token usage per agent and total run cost in USD
  • Latency per step — where the 90 seconds is actually spent
  • Agent handoffs — what each agent received from the previous one
  • Total cost estimate for the full crew run — included in the PDF

The story this tells

"I build production-grade AI systems with full observability. I don't just ship a prompt — I monitor every step, know exactly what it costs, and can show you the reasoning chain for every output the system has ever produced."

Tier 2 — Specification complete · Build not yet started

The Deep Diagnostic Report. Seven agents. Real documents. R2,500–R5,000.

The free tier uses only what the client tells us in a form. The paid tier analyses actual contracts, financials, and process documents — and adds a Market Research agent that pulls real industry benchmarks, a Financial Modelling agent that produces 12/24/36-month Rand projections from the client's own data, and a Proof of Concept Builder that delivers a live, runnable demonstration of one core capability. Build begins after the free tier is live and generating leads.

01

Business Analyst (enhanced)

Same as free tier + DocumentAnalysisTool — reads actual uploaded contracts, financials, and process documents

02

Market Research Agent (new)

TavilySearchTool — real industry benchmarks, competitor landscape, regulatory updates, market sizing

03

Financial Modelling Agent (new)

12/24/36-month Rand projections from client's own data · breakeven · sensitivity analysis · all assumptions stated

04

Solutions Architect (enhanced)

References actual documents and market research — can specify integrations with existing named systems (e.g. Xero API)

05

Alter Ego Agent (same)

Same as free tier — selects 2–3 proof points relevant to this specific industry and problem

06

Proof of Concept Builder (new)

Generates a working, runnable demonstration of one core capability — not a mockup. Live URL or detailed technical specification.

07

Report Writer (replaces Proposal Writer)

20–30 page consulting report — Executive Summary, Problem Diagnosis, Market Context, Financial Analysis, Proposed Solution, Roadmap

New backend components required

File upload endpoint — /propose/upload · PDF/DOCX/XLSX · Supabase Storage · 2 days
Web search agent — Tavily API tool for Solutions Architect · real benchmarking data · 2 days
Financial modelling agent — Agent 3 · 12/24/36-month Rand projections · sensitivity analysis · 4 days
PayFast integration — R2,500 / R5,000 price points · ITN webhook · IP allowlist · 3 days
PoC template engine — Per-industry runnable demos · live URL or detailed spec + screenshots · 3 days
Strategy session booking — Calendly API · auto-scheduled on R5,000 purchase · 1 day

New environment variables (Railway)

RESEND_API_KEY — email delivery (both tiers)

TAVILY_API_KEY — web search for Tier 2 agents

PAYFAST_MERCHANT_ID

PAYFAST_MERCHANT_KEY

PAYFAST_PASSPHRASE

Estimated build time

Backend3–4 weeks
Frontend2–3 weeks
Total4–6 weeks after Tier 1 stable

Have a business problem that needs an AI solution?

Describe it.
The more specific, the more useful.

Industry, team size, the actual problem, what has been tried, what it is costing. "We process 40 clients with a team of 12 and it takes 3 hours per client" is better than "we have an efficiency problem." The agents work better with real context. The Rand figures must feel specific and credible — they come from your numbers, not benchmarks.

Example input that works well

"We are a 12-person accounting firm in Pretoria. Our clients send us contracts and tax documents but we spend 3 hours per client manually reading and summarising them. We cannot scale past 40 clients without hiring another senior accountant at R35,000 per month. We have tried shared templates in SharePoint but it broke down above 20 clients."
✓ Real problem named✓ Numbers included✓ Current state described✓ Cost of the problem stated✓ What was tried

After you submit

Watch 4 agents diagnose your problem in real time
Read the BRIDGE-framework business case in full
Submit your email — PDF sent to you and Wandile immediately
Book the discovery call — both of you have already read the same document