A real travel agency’s sales flow, run by an agent pipeline I design, build and operate.
- ROLE
- DESIGN ENGINEER — DESIGN · CODE · DEPLOY · OPERATE
- COMPANY
- TYPE:ZERO (client: Blive Viagens)
- TIMELINE
- 2026 — in production
- SCOPE
- Agent pipeline architecture · Proposal block system · Full-stack build · Production operations

CONTEXT
A family-run travel agency selling Orlando packages — every proposal handcrafted across three tools, one attendant at a time.
- Real agency, real clients
- Briefings arrive on WhatsApp
- 2026
- In production since April
- 95
- Proposals in the first 2 months
THE CHALLENGE
The bottleneck wasn’t demand — it was 27 minutes of skilled handwork per proposal, unscalable by design.
27 minutes per proposal
WhatsApp → claude.ai → Canva → site, by hand, every single time.
130+ Canva designs
Every proposal “unique” — beautiful, and impossible to scale or automate.
A static PDF at the end
No updates after sending, no telemetry, no way to know what happened next.
WHAT I DID
Verified before building
A one-day spike falsified the original Canva-API plan (9 required tools didn’t exist publicly) — pivoted to the Claude Agent SDK before writing the pipeline.
De-LLM’d the deterministic parts
Replaced a monolithic LLM interpreter with a typed block-parser — 98s/$0.18 → 12ms/$0 — proven by an A/B replay harness: 25/25 identical quotes.
Rebuilt the design layer as blocks
14 hand-tuned HTML/CSS blocks replaced 130+ Canva designs, with a variant catalog and a Zod-driven editor. Clients never noticed.
Shipped the web proposal — and operate it
Static PDF became a mobile-first web page with pure-CSS animation and WhatsApp-ready previews. Designed, coded, deployed and run on my own infra.
The deliverable clients actually see: a mobile-first web proposal (they open it from WhatsApp), hand-tuned CSS, pure-CSS animation — assembled by the pipeline from reusable blocks in minutes.





THE PIPELINE
Three phases, each gated by a human — the attendant stays in control, the machine does the work.
- 01
BRIEFING
Semi-structured WhatsApp text pasted by the attendant — dates, pax, parks, hotel hints.
- 02
INTERPRET
Typed block-parser (regex + Zod): 12ms, $0. Small validated LLM calls only where fields are ambiguous.
- 03
QUOTE
Parallel calls to the agency’s GraphQL and partners — hotels, tickets, insurance, cars — into a mixed cart with coupon.
- 04
ASSEMBLE
Variant matching picks each block; the proposal is persisted as a jsonb snapshot — render is instant and stable.
- 05
SHIP
Public web proposal behind an unguessable link, WhatsApp-tuned preview — plus a print-mode PDF.




OUTCOMES
The full before/after is charted below — measured, not estimated.
27 min → 1–4 min
Per proposal, depending on product count — the agency’s whole production bottleneck removed.
Invisible to clients
Proposals became reusable blocks and nobody noticed — each one still reads one-of-a-kind.
Observable and priced
Every run logged, every LLM call costed — cost per proposal is a database column, not a guess.
WHAT I LEARNED
Verify before you build
One spike falsified the whole plan and saved weeks. Plausible APIs lie; bytes don’t.
LLMs only where they earn it
The best agent system is mostly deterministic code, with small validated LLM calls at the gaps.
Design systems scale trust
Blocks kept the handmade feel at pipeline speed — governance is what makes automation invisible.
Results
TIME PER PROPOSAL
BRIEFING → QUOTE
INTERPRETER COST
Manual flow (WhatsApp → claude.ai → Canva → site) vs. the pipeline, measured on real proposals.
PROPOSALS / 2 MO
TIME PER PROPOSAL
BLOCKS ← 130+ DESIGNS
INTERPRETER COST
“Clients never noticed the proposals became blocks — each one still feels handmade.”