Inspiration
Alestra's challenge: customers repeat the same explanation up to 3 times and wait up to 3 weeks for a proposal. Sales reps don't know the portfolio in depth, an architect almost always has to join, and quotes are built by hand even though 60% are standard products with fixed prices. The knowledge exists; it just doesn't reach the rep during the call. We want to empower the salesperson, not replace them.
We validated the idea today with Alestra's Business Architect: real-time questions for the seller during the call, Claude summarizing into actionable items, upsell, nearshoring as a large part of their business, security as a priority (Active Directory roles, Microsoft multi-factor authentication, each client visible only to its seller, encrypted data), and Word/PDF export.
What it does
- A bot joins the meeting and transcribes live. Teams comes first; Meet and Zoom work through the same bot (Vexa).
- Three agents in the console (call notes, sales advisor and solution validation) extract needs with the customer's verbatim words, then recommend and quote using only the 45 products (SKUs) of Alestra's SIMULATED catalog. The system cannot propose a product outside that catalog.
- It routes each case A to E (A standard, B standard with add-ons, C custom, D missing information, E not viable) and applies the catalog's 10 escalation rules (ESC-01 to ESC-10) to decide when an architect steps in.
- A deterministic decision model picks the best questions for the rep from a 599-question bank (catalog, alestra.mx's public portfolio, competitor objections, nearshoring and industry scenarios) and says why each one matters, for example because it could change the route. Claude only rewords the question text; it never invents products or prices.
- Pricing is deterministic (computed by code, not by Claude): 24- or 36-month term (-5% / -10%), bundles (-8%), Microsoft 365 volume (-3% from 100 users), 16% VAT and 30-day validity. If the total discount exceeds 10%, the proposal goes to human validation. Every line cites its rule.
- Guardrails against invention: catalog products only, prices looked up by code, evidence quotes, "I don't know — an architect validates" when the catalog has no answer, and human approval before anything is presented.
- Security: each meeting is visible only to its seller; the email summary goes only to the owning seller; closed sign-up; usage limits; the bot only joins real Teams, Meet or Zoom links; automatic deletion by retention; raw audio off; audit log; and transcript encryption, ready and mandatory for real data (guided by OWASP ASVS and Top 10).
How we built it
- Built end to end with Claude Code, in a multi-agent workflow.
- At runtime, Claude rewords the seller's questions for the customer (through a Claude Code sidecar, no API key in the demo) and, if ANTHROPIC_API_KEY is set, also writes the meeting summary (optional; without it, rules are used). In every case the decision model, the route and the prices are computed by code: Claude cannot add products or prices.
- Console: Next.js 14, Tailwind, Zustand. Backend: Cloudflare Workers (Hono), Durable Objects, D1, R2, better-auth. Vexa bot on Fly.io with OpenAI transcription.
- Two independent pricing engines, TypeScript and Python, agree to the cent; Python also generates the question bank and rejects any product or amount that is not in the catalog.
- Design in Figma.
Challenges
- Keeping the AI from inventing: verbatim quotes, SKUs and prices by code only, and "I don't know" as a valid answer.
- Ambiguous rules (e.g. whether the 10% cap includes term and bundle discounts) are left as proposals to validate with Alestra.
- Joining three pieces built in parallel in one day: console, meeting bot and catalog engine.
- Security: a demo handling customer transcripts needs isolation, limits and auditing from the start.
Accomplishments
- Measured: 445 automated tests pass, with type checking and the production build clean; the route is correct on 9 of 10 catalog cases; the two pricing engines agree to the cent.
- An adversarial audit removed 3 invented products: the system can now only propose the 45 products of the simulated catalog.
- Estimated operating cost: about USD 0.27 to 0.33 per 30-minute meeting in a 20-seller pilot (an estimate from our cost analysis, not a measurement; transcription is the largest cost).
- Example CASO-03 PagoFácil: SIM-AWS-04, route C (CNBV/ESC-04), $35,000 + VAT $5,600.
- Live transcription and the console's funnel agents run together on the main branch.
- A demo video with two fictional cases from the simulated catalog (PagoFácil, route C; Clínica Dental, route B). Everything with human approval.
What we learned
- Trust comes from showing where each fact came from (quote, rule, SKU), not from a model that sounds sure.
- Separating what the LLM understands from what code computes makes the solution auditable.
- Standard and custom deals need different handling: immediate close versus an architect brief.
What's next (next phase, not built yet)
- Entra ID SSO and MFA; RBAC (seller, technician, director).
- Field-level database encryption with keys in Azure Key Vault (Alestra runs on Azure and SQL). Transcripts are already encrypted with our own key.
- Word export (a PDF quote download already exists in the demo) and e-signature for the budget.
- Seller-to-technician assignment.
- CRM connectors (Salesforce, HubSpot, Dynamics) and Office integration.
- Validate the inferred rules with Alestra and measure real indicators (sessions per requirement, time to proposal).
Try it out
- PRIVATE repository: https://github.com/paramos-io/claude-hackaton-tech-week (read-only access for judges and Alestra as soon as the staff shares their usernames; steps in docs/ACCESO_JUECES.md). Branch: main.
- Live demo: runs locally (
npm install && npm run dev, http://localhost:3000); see docs/GRABAR_DEMO.md. - Pitch deck: https://drive.google.com/file/d/1OzR07ox75Q-ZyMty2HPCZ2_0ieh4pUS0/view
What is real and what is simulated
| Part | Status |
|---|---|
| Meeting bot (Teams; Meet/Zoom via Vexa) and live transcription | Real |
| Call-notes, sales-advisor and solution-validation agents; A-E routing and ESC rules; decision model | Real, on a SIMULATED catalog |
| Deterministic quoting (TypeScript and Python) | Real, on SIMULATED prices |
| Catalog (45 SKUs), prices and 10 cases | Simulated (provided by Alestra for the challenge) |
| Demo video | Fictional cases (PagoFácil, Clínica Dental) on a demo server with a scripted dialogue; the agent and quoting engine is the real one |
| Transcript encryption | Ready in the code; enforced with REQUIRE_TRANSCRIPT_ENC=1 for real data |
| Claude rewording and summaries | Real; optional in deployment (falls back to rules if unavailable) |
| SSO/MFA, RBAC, Key Vault, Word export, e-signature, CRM | Not built; next phase |
Built With
- better-auth
- claude
- claude-code
- cloudflare-d1
- cloudflare-r2
- cloudflare-workers
- durable-objects
- figma
- fly.io
- hono
- next.js
- openai
- python
- tailwindcss
- typescript
- vexa
- vitest
- zod
- zustand