AI Product · Conversational AI · Custom Build
Sous-Chef
The AI chatbot that converts visitors into briefed leads, live on theappchefs.com and doubling as a working demo of what the studio builds.
Role
AI Product Design & Engineering
Scope
Conversational AI · Lead Capture
Built with
Claude Haiku 4.5 · Claude API · Vercel AI SDK
Year
2026

The challenge
For a studio claiming “AI-Native,” a generic contact form isn't a credential; it's a liability. Visitors needed proof, not promises: a tangible AI experience that demonstrated the studio's capability and moved them through the funnel automatically.
The chatbot also had to work as a portfolio piece in its own right, not just a service tool: every visitor interacting with Sous-Chef is experiencing a live demo of what The App Chefs builds.
What I did
Built Sous-Chef from scratch as a Claude Haiku 4.5–powered conversational agent, embedded as a floating widget on theappchefs.com.
Designed the conversation to walk visitors through services with interactive inline cards (a services grid, plan tiers, and an embedded Calendly modal) instead of static text.
Used Claude's tool calling to capture qualified leads automatically: once real intent is in context, it emails the lead via Resend; no form required.
Gave it a chef-themed personality (a “Whisking… Sautéing…” status indicator) and sub-second streaming so it feels alive, not scripted.
Built a custom security layer: per-IP rate limiting, origin allowlist, input validation, plus prompt caching that cuts repeat-input cost ~90%, keeping it fast and cheap to run at scale.
How someone actually uses it
User message
A visitor types in the floating widget, sent to /api/chat as JSON over HTTPS.
Security gate
Per-IP rate limit (10/min, 60/hr), origin allowlist, and hard input caps block abuse before it ever reaches the model.
System prompt + knowledge base
Sous-Chef's persona plus The App Chefs' services, pricing, and FAQs, marked cache_control: ephemeral, so repeat input costs ~90% less.
Claude Haiku 4.5 decides
Just chat
Streams a normal conversational reply, in character.
Call capture_lead
Once name, email, and a brief are in context, it calls the tool with a structured payload (never invented) and Resend emails the lead instantly.
Emit a UI directive
Emits a component token mid-stream; the widget swaps it for an interactive services, plans, or Calendly card.
Every path streams back token-by-token over Server-Sent Events, with a chef-themed “Whisking… Sautéing…” indicator while it thinks.
Real numbers, real users.
<0s
Time to first streamed token
0
Inline rich components (services, plans, Calendly, lead badge)
$0.000
Avg. cost per full lead-capture conversation