Quote Automation. Real revenue, through a pipeline the AI can’t misuse.
- Status
- In production — real client quotes run through it
- Client
- M4U Events (NJ events company)
- Stack
- Python · FastAPI · Claude · Slack · Zoho · Google APIs
- Scale
- 480-test suite · 7 email templates · 87 CLI options
- Year
- 2025–26

After every sales call, a salesperson hand-built a pricing email: re-listening to the call, applying a catalog of pricing rules and event conventions, formatting a branded email, booking the follow-up, updating the CRM, telling the team. Error-prone, slow, and it all lived in one person’s head. The follow-up is where deals cool off.
- ◆Automatic intake — when the call recorder finishes a transcript, a webhook starts the pipeline; each meeting is processed exactly once (idempotent by meeting ID).
- ◆Claude classify + extract — is this a sales call? Then pull couple, date, venue, events, guest counts — from versioned, reviewable prompt files.
- ◆Slack approve-then-send — the rep gets an edit-then-approve modal in Slack. Nothing reaches a client until a human taps Approve.
- ◆The full follow-up in one shot — branded pricing email (7 templates, travel-aware via driving-distance lookup), Google Meet follow-up invite, CRM note + task + stage, and a Slack reply to the team thread — all fired together.
- ◆Ops discipline — staged workers with event-logged transitions, a replay harness, and a deferred-CRM reconciler for records that aren’t ready yet.
- 1Call recorder webhook fires — transcript fetched
- 2Claude: classify the call, extract quote fields
- 3Rep gets a Slack modal: edit, then Approve
- 4Email + calendar invite + CRM log + Slack reply fire together
- 5Every transition event-logged; failures retry from their stage
The go-live gate. Tests can prove code; they can’t prove an LLM won’t hallucinate a guest count into a price. So the pipeline ships behind an adversarial evaluation suite: real-shaped transcripts that try to prompt-inject the extractor, decoy numbers, five categories of calls that merely look like sales calls. The gate must pass 100% before anything goes live — and it caught failures ordinary tests never would have.
The other hard part is the blast radius: this system emails real clients about real money. That’s why approval is human, sends are idempotent, templates are convention-locked, and the CRM logger fails open — a CRM outage can never block a client’s quote.
- ✓480 automated tests — run green in under ten seconds, gating every change.
- ✓Eval gate: adversarial golden set passing 100% at go-live.
- ✓Production sends verified end-to-end — email, invite, CRM entry, and Slack reply confirmed in the database, not assumed.
In production at M4U Events. The Slack modal is now the primary intake for post-call quotes — the machine does the follow-up while the conversation is still warm.
I own the approval gate that stands between the model and a client’s inbox. Claude Code built the pipeline, and Claude runs inside it — firewalled by the eval suite. How I work →
Run an events business? I built Ajna for you.
AI automation for wedding & event vendors — quotes in minutes instead of days, a human always in the loop.