💡 The Inspiration

I noticed most voice AI agents in hackathons are built as slow, polite FAQ bots. But in a real B2B enterprise, every minute of churn risk is ARR walking out the door. I wanted to build an aggressive, ultra-low latency retention agent that actually fights to save accounts at machine speed, rather than just answering questions.

⚙️ What it does

Churn-Rescue AI is a concurrent swarm-dialing agent.

  • It dials multiple at-risk accounts simultaneously.
  • It handles live negotiations using dynamic LTV-capped incentives (it only offers higher discounts if the customer pushes back).
  • If a customer mentions an unknown competitor, it executes a live zero-shot OSINT web scrape to pull pricing data on the fly.
  • It closes the deal by generating a PDF Subscription Addendum and dispatching it via a simulated WhatsApp webhook.

🏗️ How I built it

I completely avoided heavy Node.js frameworks to keep things lean.

  • Brain: Groq Llama-3 70B.
  • Ears: AssemblyAI Real-time STT over WebSockets (PCM16/16 kHz).
  • Voice: A custom implementation of System.Speech mapping FSM sentiment scores directly to voice rate and volume (e.g., slowing down when the user is angry).
  • UI: Vanilla HTML/JS with CSS 3D Transforms and Chart.js for live ROI plotting.

🚧 Challenges I ran into

This was a pure engineering grind. Bypassing my local machine's strict App Control meant I couldn't rely on official SDKs or heavy libraries like Pydantic. I had to write custom REST and WebSocket handlers using pure Python standard libraries (like raw urllib for the Groq completions). Another nightmare was combining CSS 3D perspective with Chart.js responsive canvases. At one point, the charts triggered a width-runaway loop, forcing the columns to 56,000px wide and painting the entire viewport black under software GL. I had to manually clamp the flexbox geometry to fix it.

🏆 Accomplishments that I'm proud of

The "Graceful Degradation" architecture. Hackathon demos always break live. So, I built a complete offline fallback path: if the Groq/AssemblyAI keys are missing or timeout, the system seamlessly drops down to a deterministic static FSM and browser Web Speech API. The demo simply cannot break.

🚀 What's next

Connecting the Starlette ASGI edge directly to live PSTN telephony webhooks (like Twilio or the CALL-E infrastructure) to run the swarm logic against real phone numbers.

Share this project:

Updates

Submission history