Production-style hackathon POC for a premium, multilingual, conversational AI banking IVR using autonomous agents.
- Backend: Node.js, Fastify, TypeScript
- Frontend: Next.js, TailwindCSS, Framer Motion
- AI/LLM: CrewAI-ready orchestration + OpenRouter
- STT/TTS: Faster-Whisper (live service) + ElevenLabs (integration point)
- Telephony: Twilio Voice + Media Streams WebSocket
- Data: MongoDB + ChromaDB
- Realtime: WebSockets
- Twilio Voice webhook returns TwiML with
<Connect><Stream .../></Connect> - Twilio media WebSocket endpoint receives audio chunks
- Mu-law 8k audio decoded to PCM16 in backend
- PCM chunks streamed to Faster-Whisper service (
apps/stt) - Live transcript fed into orchestrator and dashboard in realtime
- AI response audio sent back over Twilio bidirectional media stream
- Copy env:
cp .env.example .env- Start dependencies locally:
- MongoDB on
localhost:27017 - ChromaDB on
localhost:8000(example:chroma run --host 0.0.0.0 --port 8000)
- One-command startup:
./scripts/start-local.sh- Seed data (first run or reset):
npm run seedServices:
- Backend:
http://localhost:8080 - Dashboard:
http://localhost:3000 - STT:
http://localhost:9000
- Voice webhook URL:
POST https://<public-url>/twilio/voice - Media stream URL is embedded by backend from
TWILIO_WEBHOOK_BASE_URLas:wss://<public-url>/twilio/media-stream-ws
POST /api/calls/start{ callId, phone }POST /api/calls/utterance{ callId, text }POST /api/calls/verify-otp{ callId, otp }POST /twilio/voiceGET /twilio/media-stream-ws(WebSocket)GET /api/healthWS /realtime
apps/backend/src/agentsapps/backend/src/toolsapps/backend/src/ragapps/backend/src/telephonyapps/backend/src/websocketapps/backend/src/servicesapps/backend/src/memoryapps/backend/src/authapps/backend/src/databaseapps/backend/src/embeddingsapps/backend/src/logsapps/dashboardapps/stt
- In Twilio Console, create a TwiML App:
- Voice Request URL:
https://<public-url>/twilio/client/voice - Method:
POST
- Voice Request URL:
- Create Twilio API Key/Secret (for Voice SDK token).
- Set in
.env:TWILIO_ACCOUNT_SIDTWILIO_API_KEY_SIDTWILIO_API_KEY_SECRETTWILIO_TWIML_APP_SIDTWILIO_WEBHOOK_BASE_URL
- Restart app and open
http://localhost:3000/softphone. - Click
Connect Calland allow microphone permission.
This repository is owned and maintained by Disha Singh.