Bops
A team of AI bots that runs your business ops: inbox, pipeline, invoices, reports. Each one has its own computer, email and phone number, and remembers everything.
翻訳待ち
No updates detected yet. GitHub releases will appear here.
Assistant vocal IA inbound : répond au téléphone (Twilio + Deepgram + Claude + ElevenLabs), prise de RDV et support client
翻訳待ち
Loading the full README. The saved excerpt is shown below.
Assistant vocal IA qui répond à un vrai numéro de téléphone et gère deux cas d'usage : prise de rendez-vous (vérifier, réserver, modifier, annuler) et support client (FAQ via RAG, tickets, escalade vers un humain). ✅ Projet complet et déployé en production : serveur temps réel sur Railway (EU West), dashboard sur Vercel, base Supabase, numéro Twilio français actif. Démo live : appeler le numéro, choisir sa langue (FR/EN), et converser.Read the full README ↗
Assistant vocal IA qui répond à un vrai numéro de téléphone et gère deux cas d'usage : prise de rendez-vous (vérifier, réserver, modifier, annuler) et support client (FAQ via RAG, tickets, escalade vers un humain).
✅ Projet complet et déployé en production : serveur temps réel sur Railway (EU West), dashboard sur Vercel, base Supabase, numéro Twilio français actif. Démo live : appeler le numéro, choisir sa langue (FR/EN), et converser.
Appel entrant → menu de langue (DTMF, FR/EN) → annonce de transparence IA
→ Twilio Media Streams (WebSocket, μ-law 8kHz)
→ Serveur FastAPI (orchestration, asyncio)
→ Deepgram STT streaming (endpointing = fin de tour de parole)
→ Claude Haiku 4.5 (tool_use : RDV, RAG support, escalade,
raccrochage — exécution SPÉCULATIVE sur les transcripts
provisoires, effets de bord gelés jusqu'à confirmation)
→ TTS ElevenLabs par WebSocket stream-input (voix native par
langue, prosodie continue, connexion pré-ouverte)
→ envoi cadencé au débit de lecture réel (AudioPacer)
→ Retour audio vers l'appelant — barge-in à tout moment
→ PostgreSQL (RDV, tickets, base de connaissances, call_logs)
→ API admin (lecture seule) → Dashboard Next.js
Le serveur temps réel (server/) maintient un WebSocket ouvert pendant toute
la durée de chaque appel → Railway plutôt que du serverless. Le dashboard
admin (dashboard/, Next.js, consultation seule) est déployé séparément sur
Vercel et consomme l'API admin en lecture seule du serveur temps réel.
Pipeline modulaire STT→LLM→TTS (plutôt que speech-to-speech natif) : chaque étage est observable, testable et remplaçable — le compromis est la latence, optimisée étage par étage. Latence moyenne par tour (silence confirmé → premier octet audio), mesurée sur appels téléphoniques réels :
| Étape | Latence moyenne |
|---|---|
| Pipeline initial (HTTP par phrase, région US testée) | 2468 ms |
| Retour EU West + interjections courtes + prompt caching | 1426 ms |
| + exécution spéculative + TTS WebSocket + pré-connexion | 1071 ms ✅ (objectif < 1200 ms) |
Les tours où la spéculation aboutit (transcript provisoire == final) descendent à 420-713 ms. Leviers principaux, dans l'ordre d'impact :
Le réalisme conversationnel : barge-in avec mémoire des interruptions
(l'agent sait ce qu'il a eu le temps de dire), relances naturelles variées
pendant les recherches, marqueurs oraux légers, jamais plus de trois
créneaux énoncés d'affilée, et raccrochage par l'agent en fin de
conversation (outil end_call).
eleven_v4_turbo) n'est pas
disponible sur leur WebSocket : le projet privilégie la continuité de
prosodie et la latence (eleven_flash_v2_5 + session continue).cd server
python -m venv .venv && source .venv/bin/activate
pip install -r requirements.txt
cp .env.example .env # remplir les clés
uvicorn app.main:app --reload
Exposer le serveur à Twilio en dev : ngrok http 8000, puis configurer le
webhook Voice du numéro Twilio sur https://<ngrok>/voice et PUBLIC_HOST
dans .env sur l'hôte ngrok.
cd server && pytest
This is the beginning of the README. Read the rest at the original. Read the full README ↗