feat: website analysis pipeline, voice agent, configurator improvements
All checks were successful
Build & Push / build-and-push (push) Successful in 6m2s

- Site analysis: cheerio HTML parsing, inline tech stack detection (~20 CMS/framework/analytics signatures), Google PageSpeed API integration
- Gemini Live voice agent: WebSocket-based real-time voice mode with live transcript, selection chips, and mid-conversation website analysis
- Type/Talk mode toggle with silent capability detection
- Stepped progress animation during brief generation (4 animated steps)
- URL + thoughts fields in Step 2, phone + contact preference in Step 3
- AI prompt improvements: dedicated website analysis section, 30-min call, concrete benefits, industry depth
- Email redesign: branded templates with logo, proper markdown rendering for both client and admin
- French locale support for AI-generated briefs
- Smaller checkmark, compact booking CTA, expanded brief area

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-03-28 13:41:35 +01:00
parent 16cd2a74ee
commit bab45b981e
19 changed files with 2923 additions and 119 deletions

View File

@@ -70,8 +70,8 @@
"complete": {
"title": "Your project brief is ready",
"subtitle": "Check your inbox - we've sent a detailed brief to {email}",
"bookTitle": "Book a Consultation",
"bookSubtitle": "30 minutes to discuss your brief with our team",
"nextStep": "Next step: let's talk through your brief",
"bookSubtitle": "Book a free 30-minute call to discuss your project and next steps.",
"bookCall": "Book a Call",
"briefPreview": "Your project brief",
"reachDirectly": "Or reach us directly at"
@@ -136,13 +136,43 @@
"timeline": "Timeline",
"name": "Your name",
"company": "Company",
"email": "Email address"
"email": "Email address",
"phone": "Phone",
"phoneOptional": "(optional)",
"contactPreference": "Preferred contact method",
"contactEmail": "Email",
"contactPhone": "Phone",
"contactWhatsapp": "WhatsApp",
"currentSiteUrl": "Current website",
"currentSiteUrlOptional": "(optional)",
"currentSiteUrlPlaceholder": "https://yourwebsite.com",
"currentSiteThoughts": "Thoughts on your current site",
"currentSiteThoughtsPlaceholder": "What's working, what isn't, what you'd like to change..."
},
"summary": {
"heading": "Your selections",
"aiEnhancement": "AI Enhancement"
},
"generating": "Generating",
"generatingSteps": {
"preparingBrief": "Preparing your brief",
"analyzingSite": "Analyzing your current website",
"runningAudit": "Running performance audit",
"generatingBrief": "Generating your personalized brief"
},
"mode": {
"type": "Type",
"talk": "Talk"
},
"voice": {
"agentName": "LetsBe project assistant",
"capturedSoFar": "Captured so far",
"endConversation": "End Conversation",
"analyzingSite": "Analyzing your site...",
"connecting": "Connecting...",
"mute": "Mute",
"unmute": "Unmute"
},
"privacy": "Your information is private and will never be shared.",
"generateBrief": "Generate My Brief",
"nextStep": "Next Step",

View File

@@ -70,8 +70,8 @@
"complete": {
"title": "Votre brief projet est prêt",
"subtitle": "Vérifiez votre boîte mail - nous avons envoyé un brief détaillé à {email}",
"bookTitle": "Réservez une Consultation",
"bookSubtitle": "30 minutes pour discuter de votre brief avec notre équipe",
"nextStep": "Prochaine étape : discutons de votre brief",
"bookSubtitle": "Réservez un appel gratuit de 30 minutes pour discuter de votre projet.",
"bookCall": "Réserver un Appel",
"briefPreview": "Votre brief projet",
"reachDirectly": "Ou contactez-nous directement à"
@@ -136,13 +136,43 @@
"timeline": "Calendrier",
"name": "Votre nom",
"company": "Entreprise",
"email": "Adresse email"
"email": "Adresse email",
"phone": "Téléphone",
"phoneOptional": "(facultatif)",
"contactPreference": "Mode de contact préféré",
"contactEmail": "Email",
"contactPhone": "Téléphone",
"contactWhatsapp": "WhatsApp",
"currentSiteUrl": "Site web actuel",
"currentSiteUrlOptional": "(facultatif)",
"currentSiteUrlPlaceholder": "https://votresite.com",
"currentSiteThoughts": "Vos impressions sur votre site actuel",
"currentSiteThoughtsPlaceholder": "Ce qui fonctionne, ce qui ne fonctionne pas, ce que vous aimeriez changer..."
},
"summary": {
"heading": "Vos sélections",
"aiEnhancement": "Enrichissement IA"
},
"generating": "Génération",
"generatingSteps": {
"preparingBrief": "Préparation de votre brief",
"analyzingSite": "Analyse de votre site actuel",
"runningAudit": "Audit de performance en cours",
"generatingBrief": "Génération de votre brief personnalisé"
},
"mode": {
"type": "Écrire",
"talk": "Parler"
},
"voice": {
"agentName": "Assistant projet LetsBe",
"capturedSoFar": "Informations recueillies",
"endConversation": "Terminer la conversation",
"analyzingSite": "Analyse de votre site...",
"connecting": "Connexion en cours...",
"mute": "Couper le micro",
"unmute": "Activer le micro"
},
"privacy": "Vos informations sont privées et ne seront jamais partagées.",
"generateBrief": "Générer Mon Brief",
"nextStep": "Étape Suivante",