Aller au contenu

En production

Accueil IA — standard téléphonique intelligent

Un agent vocal qui répond aux appels entrants 24h/24 : il accueille au nom de l'entreprise, qualifie la demande, prend le rendez-vous, transfère au bon collaborateur et envoie le compte rendu avec la transcription. Facturé à la minute.

Nature
Produit en ligne
Statut
En production
Stack
IA vocaleTwilioNestJSNext.jsStripeMulti-tenantSaaS
Voir le site en ligne(nouvel onglet)

Pour un artisan, un garage ou un cabinet, chaque appel manqué est un client perdu — et personne ne peut décrocher en permanence. Accueil IA prend le relais sans changer les habitudes : le numéro existant reste en place, seul un renvoi conditionnel est configuré.

Ce que fait l'agent

  • Décroche, se présente au nom de l'entreprise, collecte nom, téléphone, email et motif, qualifie la demande.
  • Transfère vers un collaborateur disponible ou prend un message ; pose un rendez-vous et envoie un rappel SMS la veille.
  • Après chaque appel : email de rapport avec résumé et transcription horodatée.
  • Cinq langues d'interface (fr, en, es, pt, de) avec parité vérifiée par script.

Architecture

  • SaaS multi-tenant fail-closed : une extension Prisma (TENANT_PRISMA) injecte automatiquement l'organisation dans chaque requête et lève une exception hors contexte. L'isolation est prouvée par des tests contre une vraie base, pas par convention.
  • Voix : Twilio ConversationRelay gère la reconnaissance, la synthèse et l'interruption (barge-in) ; l'API streame le texte du modèle en WebSocket. Conversation sur Claude Haiku ou Sonnet selon le plan, résumés sur Haiku.
  • Travaux asynchrones (rapport, emails, réconciliation) en BullMQ sur Redis : le webhook Twilio doit répondre vite, le reste se fait derrière avec retry.
  • Stack : NestJS 11, Prisma 7 avec adaptateur pg, PostgreSQL 17, Redis 7 ; Next.js 16, React 19, Tailwind v4 (tokens OKLCH), TanStack Query, React Hook Form + Zod.

L'argent est exact

  • Minutes facturées = durée réelle Twilio, arrondie à la seconde, première minute indivisible. Chaque UsageRecord est idempotent (unique par identifiant d'appel) : un webhook rejoué ne facture pas deux fois.
  • Stripe : abonnement + usage à la minute (et un compteur SMS dédié), idempotence par table d'événements, entitlements décidés par la base, prix affichés lus depuis Stripe — jamais codés en dur dans l'interface.
  • Coûts LLM bornés : durée maximale d'appel, plafond de minutes par jour et par organisation, coupe-circuit de coût global ; chaque appel au modèle est journalisé.

Sécurité et conformité

  • Webhooks authentifiés par signature (Twilio, Stripe HMAC sur le corps brut), CSRF double-submit, throttling Redis par utilisateur ou IP, argon2id avec hash factice anti-énumération.
  • RGPD : aucune donnée d'appelant dans les logs (numéros et emails masqués, IP hachées), transcriptions en base uniquement, purgées selon la rétention du plan. Conforme aux obligations de transparence de l'AI Act pour un agent conversationnel.

Ce qui a été difficile

La latence perçue. Un silence de deux secondes au téléphone est insupportable : l'architecture streame le premier mot du modèle avant la fin de la réponse, sépare les actions longues (prise de rendez-vous) du flux de parole, et mesure chaque étape. Supervision Sentry vers GlitchTip auto-hébergé, sondes /health/live et /health/ready.

Installation sur votre infrastructure

Cette application peut être déployée sur votre propre serveur — VPS, cloud privé ou on-premise — en instance dédiée : votre nom de domaine, votre base de données, vos données chez vous. Je prends en charge l'installation, le durcissement du serveur, les sauvegardes, la supervision et la maintenance, ainsi que les adaptations fonctionnelles à votre métier.