Add Top 20 multilingual ready replies

This commit is contained in:
danny 2025-12-24 12:18:45 +00:00
parent 25e306d4b0
commit a6222083e6
4 changed files with 407 additions and 2 deletions

View file

@ -143,7 +143,7 @@ Generate the deeper “no raw quotes” report directly from an Instagram export
## VoiceDNA (manual reply style)
`voice_dna/socialmediatorr.voice-dna.json` is a **safe-to-store** style fingerprint generated from the last 6 months of **manual (non-template) DM replies** (no raw DM quotes are included).
`voice_dna/voiceDNA_socialmediatorr_insta_dm.json` is a **safe-to-store** style fingerprint generated from the last 6 months of **manual (non-template) DM replies** (no raw DM quotes are included).
It also encodes a hard rule for the bot:
@ -151,7 +151,14 @@ It also encodes a hard rule for the bot:
Regenerate from a local Instagram export folder:
- `python3 -m sergio_instagram_messaging.generate_voice_dna --export-input /path/to/export-root --out voice_dna/socialmediatorr.voice-dna.json --owner-name "Sergio de Vocht" --window-months 6`
- `python3 -m sergio_instagram_messaging.generate_voice_dna --export-input /path/to/export-root --out voice_dna/voiceDNA_socialmediatorr_insta_dm.json --owner-name "Sergio de Vocht" --window-months 6`
## Ready Replies (Top 20)
Multi-language ready-made answers for the Top question topics (aligned to the VoiceDNA language-mirroring policy):
- `reply_library/top20_ready_answers.json` (programmatic)
- `reply_library/top20_ready_answers.md` (copy/paste)
## Webhooks (new messages → auto-reply)

View file

@ -0,0 +1,245 @@
{
"schema_version": "ready_replies/v1",
"voice_dna_ref": "voice_dna/voiceDNA_socialmediatorr_insta_dm.json",
"language_mode": "mirror_user_input_language",
"notes": [
"Pick the reply language to match the user's most recent message with enough text to classify (English / Spanish / French / Catalan).",
"If the user message is too short to detect, reuse the last detected language in the thread; if still unknown, ask which language they prefer.",
"Replace {PLACEHOLDERS} before sending."
],
"placeholders": {
"BOOK_LINK": "Direct link to the book/ebook page",
"VIDEO_LINK": "Direct link to the video",
"CALENDLY_LINK": "Direct link to the booking page",
"WHATSAPP_LINK": "Direct link to WhatsApp (wa.me/...)",
"PRICE": "Price string, include currency (e.g., €29)",
"TIMEFRAME": "Time estimate (e.g., 2 weeks, 30 days)",
"BASE_LOCATION": "Short location label (e.g., Chamonix)"
},
"replies": [
{
"rank": 1,
"topic": "Just one word: book",
"reply_id": "book_keyword",
"replies_by_language": {
"English": "Got it. Do you want the book link or the video first?",
"Spanish": "Perfecto 🙌\\n¿Quieres el enlace del ebook o prefieres que te mande el vídeo primero?",
"French": "OK. Tu veux le lien du livre ou la vidéo dabord ?",
"Catalan": "Perfecte. Vols lenllaç del llibre o el vídeo primer?"
}
},
{
"rank": 2,
"topic": "What is this?",
"reply_id": "what_is_this",
"replies_by_language": {
"English": "Its a simple, practical resource to help you move forward. What are you looking for right now?",
"Spanish": "Es un recurso práctico para avanzar.\\n¿Qué estás buscando ahora mismo?",
"French": "Cest un outil simple et pratique pour avancer. Tu cherches quoi en ce moment ?",
"Catalan": "És un recurs simple i pràctic per avançar. Què busques ara mateix?"
}
},
{
"rank": 3,
"topic": "Can you send the video?",
"reply_id": "send_video",
"replies_by_language": {
"English": "Sure — here it is: {VIDEO_LINK}. Want a quick summary first?",
"Spanish": "Claro 🙌 Aquí va el vídeo: {VIDEO_LINK}\\n¿Lo quieres con resumen en 3 líneas o lo ves y me dices qué te resonó?",
"French": "Bien sûr. Voilà la vidéo : {VIDEO_LINK}\\nTu veux un résumé rapide ou tu la regardes et tu me dis ce qui ta parlé ?",
"Catalan": "Sí. Aquí tens el vídeo: {VIDEO_LINK}\\nVols un resum ràpid o el mires i em dius què tha ressonat?"
}
},
{
"rank": 4,
"topic": "Other question",
"reply_id": "other_question",
"replies_by_language": {
"English": "Tell me in one sentence what you need, and Ill point you to the right next step.",
"Spanish": "Dime en 1 frase qué necesitas y te digo el siguiente paso 🙌",
"French": "Dismoi en 1 phrase ce que tu veux, et je te dis la prochaine étape.",
"Catalan": "Diguem en 1 frase què necessites i et dic el següent pas."
}
},
{
"rank": 5,
"topic": "Can you help me?",
"reply_id": "help_request",
"replies_by_language": {
"English": "Yes. What are you struggling with most right now?",
"Spanish": "Sí.\\n¿Qué es lo que más te está costando ahora mismo?",
"French": "Oui. Questce qui est le plus difficile pour toi en ce moment ?",
"Catalan": "Sí. Què és el que et costa més ara mateix?"
}
},
{
"rank": 6,
"topic": "Can you send the link?",
"reply_id": "send_link",
"replies_by_language": {
"English": "Sure. Is this for the book or to book a call?",
"Spanish": "Claro.\\n¿El enlace es para el ebook o para reservar una llamada?",
"French": "Bien sûr. Cest pour le livre ou pour réserver un appel ?",
"Catalan": "Clar. És per al llibre o per reservar una trucada?"
}
},
{
"rank": 7,
"topic": "What does it cost?",
"reply_id": "pricing",
"replies_by_language": {
"English": "Its {PRICE}. Want the link?",
"Spanish": "Son {PRICE}.\\n¿Te paso el enlace?",
"French": "Cest {PRICE}. Tu veux le lien ?",
"Catalan": "Són {PRICE}. Vols lenllaç?"
}
},
{
"rank": 8,
"topic": "Is this therapy?",
"reply_id": "therapy_boundary",
"replies_by_language": {
"English": "No — this isnt therapy in DMs. I can share resources and options. What are you looking for?",
"Spanish": "No, esto no es terapia por DM.\\nPuedo ayudarte con recursos y opciones.\\n¿Qué estás buscando?",
"French": "Non, ce nest pas une thérapie en DM. Je peux te partager des ressources et des options. Tu cherches quoi ?",
"Catalan": "No, això no és teràpia per DM. Puc compartir recursos i opcions. Què busques?"
}
},
{
"rank": 9,
"topic": "Where do I get the book?",
"reply_id": "get_book",
"replies_by_language": {
"English": "Here you go: {BOOK_LINK}. Did it open for you?",
"Spanish": "Aquí tienes el enlace: {BOOK_LINK}\\n¿Te llega bien?",
"French": "Tiens : {BOOK_LINK}. Ça souvre bien de ton côté ?",
"Catalan": "Aquí ho tens: {BOOK_LINK}. Se tobre bé?"
}
},
{
"rank": 10,
"topic": "I cant find it / it didnt arrive",
"reply_id": "delivery_issue",
"replies_by_language": {
"English": "No worries — lets fix it. What email did you use to buy (or send a screenshot of the receipt)?",
"Spanish": "Vale, lo solucionamos.\\n¿Con qué email lo compraste? (o mándame una captura del recibo)",
"French": "OK, on règle ça. Tu as acheté avec quel email ? (ou envoie une capture du reçu)",
"Catalan": "Ho arreglem. Amb quin email ho vas comprar? (o envia una captura del rebut)"
}
},
{
"rank": 11,
"topic": "How do I book a call?",
"reply_id": "book_call",
"replies_by_language": {
"English": "Book a call here: {CALENDLY_LINK}. What times work for you?",
"Spanish": "Reserva aquí: {CALENDLY_LINK}\\n¿Qué horarios te vienen bien?",
"French": "Réserve ici : {CALENDLY_LINK}. Quels créneaux te vont ?",
"Catalan": "Reserva aquí: {CALENDLY_LINK}. Quins horaris et van bé?"
}
},
{
"rank": 12,
"topic": "How do I start?",
"reply_id": "start",
"replies_by_language": {
"English": "To start, tell me your goal in one sentence and Ill tell you the first step.",
"Spanish": "Para empezar: dime tu objetivo en 1 frase y te digo el primer paso 🙌",
"French": "Pour commencer, dismoi ton objectif en 1 phrase et je te donne le premier pas.",
"Catalan": "Per començar, diguem el teu objectiu en 1 frase i et dic el primer pas."
}
},
{
"rank": 13,
"topic": "Can we talk on WhatsApp?",
"reply_id": "whatsapp",
"replies_by_language": {
"English": "We can. If you prefer WhatsApp: {WHATSAPP_LINK}. Want to continue there?",
"Spanish": "Podemos.\\nSi te va mejor WhatsApp: {WHATSAPP_LINK}\\n¿Te va bien que lo hablemos por allí?",
"French": "Oui. Si tu préfères WhatsApp : {WHATSAPP_LINK}. Ça te va de continuer làbas ?",
"Catalan": "Sí. Si prefereixes WhatsApp: {WHATSAPP_LINK}. Et va bé seguir per allà?"
}
},
{
"rank": 14,
"topic": "How does it work?",
"reply_id": "how_it_works",
"replies_by_language": {
"English": "Simple: you get the resource, apply it, and if you want we can go deeper. What do you want to improve?",
"Spanish": "Es simple:\\n1) te paso el recurso\\n2) lo aplicas\\n3) si quieres, lo afinamos juntos\\n¿Qué quieres mejorar?",
"French": "Cest simple : je te partage le contenu, tu lappliques, et si tu veux on va plus loin. Tu veux améliorer quoi ?",
"Catalan": "És simple: et passo el recurs, lapliques, i si vols ho aprofundim. Què vols millorar?"
}
},
{
"rank": 15,
"topic": "What are the steps?",
"reply_id": "steps",
"replies_by_language": {
"English": "1) Tell me what you want 2) I send the right link 3) You start. Whats your goal?",
"Spanish": "1) me dices qué buscas\\n2) te mando el enlace correcto\\n3) empiezas\\n¿Cuál es tu objetivo ahora mismo?",
"French": "1) Tu me dis ce que tu veux 2) je tenvoie le bon lien 3) tu commences. Ton objectif, cest quoi ?",
"Catalan": "1) Em dius què busques 2) tenvio lenllaç correcte 3) comences. Quin és el teu objectiu?"
}
},
{
"rank": 16,
"topic": "Is this real?",
"reply_id": "legit",
"replies_by_language": {
"English": "Yes. If you want, Ill send the official link. What are you looking to get out of it?",
"Spanish": "Sí, es real.\\nSi quieres, te mando el enlace oficial.\\n¿Qué estás buscando conseguir?",
"French": "Oui, cest réel. Si tu veux je tenvoie le lien officiel. Tu veux obtenir quoi exactement ?",
"Catalan": "Sí, és real. Si vols, tenvio lenllaç oficial. Què vols aconseguir exactament?"
}
},
{
"rank": 17,
"topic": "Is it free?",
"reply_id": "free",
"replies_by_language": {
"English": "The full thing isnt free, but I can share a free starting point. Want it?",
"Spanish": "No es gratis, pero sí tengo un punto de inicio gratuito.\\n¿Quieres que te lo pase?",
"French": "Ce nest pas gratuit, mais jai un point de départ gratuit. Tu veux que je te lenvoie ?",
"Catalan": "No és gratis, però tinc un punt dinici gratuït. Vols que tel passi?"
}
},
{
"rank": 18,
"topic": "Can I get a refund?",
"reply_id": "refund",
"replies_by_language": {
"English": "Sure — happy to help. Send me the purchase email + date and Ill sort it.",
"Spanish": "Claro, te ayudo.\\nPásame el email de compra + la fecha y lo reviso.",
"French": "Bien sûr. Envoiemoi lemail dachat + la date et je men occupe.",
"Catalan": "És clar. Enviam lemail de compra + la data i ho gestiono."
}
},
{
"rank": 19,
"topic": "How long does it take?",
"reply_id": "timeframe",
"replies_by_language": {
"English": "It depends, but usually {TIMEFRAME}. What are you trying to change?",
"Spanish": "Depende, pero normalmente {TIMEFRAME}.\\n¿Qué quieres cambiar tú?",
"French": "Ça dépend, mais en général {TIMEFRAME}. Tu veux changer quoi, toi ?",
"Catalan": "Depèn, però normalment {TIMEFRAME}. Què vols canviar tu?"
}
},
{
"rank": 20,
"topic": "Where are you based?",
"reply_id": "location",
"notes": [
"Added as a practical top-20 coverage item (not shown in the report's top-19 table for this export)."
],
"replies_by_language": {
"English": "Im based in {BASE_LOCATION} (CET) and I work online. Where are you based?",
"Spanish": "Estoy en {BASE_LOCATION} (CET) y trabajo online.\\n¿Tú dónde estás?",
"French": "Je suis basé à {BASE_LOCATION} (CET) et je travaille en ligne. Et toi, tu es où ?",
"Catalan": "Sóc a {BASE_LOCATION} (CET) i treballo online. I tu, on ets?"
}
}
]
}

View file

@ -0,0 +1,153 @@
# Top 20 Ready-Made Answers (MultiLanguage)
**VoiceDNA:** `voice_dna/voiceDNA_socialmediatorr_insta_dm.json`
Rules:
- Reply in the **same language as the users message** (English / Spanish / French / Catalan).
- Replace `{PLACEHOLDERS}` before sending.
- Keep it short; end with a question when it helps the conversation continue.
---
## 1) Just one word: book
- English: `Got it. Do you want the book link or the video first?`
- Spanish: `Perfecto 🙌\n¿Quieres el enlace del ebook o prefieres que te mande el vídeo primero?`
- French: `OK. Tu veux le lien du livre ou la vidéo dabord ?`
- Catalan: `Perfecte. Vols lenllaç del llibre o el vídeo primer?`
## 2) What is this?
- English: `Its a simple, practical resource to help you move forward. What are you looking for right now?`
- Spanish: `Es un recurso práctico para avanzar.\n¿Qué estás buscando ahora mismo?`
- French: `Cest un outil simple et pratique pour avancer. Tu cherches quoi en ce moment ?`
- Catalan: `És un recurs simple i pràctic per avançar. Què busques ara mateix?`
## 3) Can you send the video?
- English: `Sure — here it is: {VIDEO_LINK}. Want a quick summary first?`
- Spanish: `Claro 🙌 Aquí va el vídeo: {VIDEO_LINK}\n¿Lo quieres con resumen en 3 líneas o lo ves y me dices qué te resonó?`
- French: `Bien sûr. Voilà la vidéo : {VIDEO_LINK}\nTu veux un résumé rapide ou tu la regardes et tu me dis ce qui ta parlé ?`
- Catalan: `Sí. Aquí tens el vídeo: {VIDEO_LINK}\nVols un resum ràpid o el mires i em dius què tha ressonat?`
## 4) Other question
- English: `Tell me in one sentence what you need, and Ill point you to the right next step.`
- Spanish: `Dime en 1 frase qué necesitas y te digo el siguiente paso 🙌`
- French: `Dismoi en 1 phrase ce que tu veux, et je te dis la prochaine étape.`
- Catalan: `Diguem en 1 frase què necessites i et dic el següent pas.`
## 5) Can you help me?
- English: `Yes. What are you struggling with most right now?`
- Spanish: `Sí.\n¿Qué es lo que más te está costando ahora mismo?`
- French: `Oui. Questce qui est le plus difficile pour toi en ce moment ?`
- Catalan: `Sí. Què és el que et costa més ara mateix?`
## 6) Can you send the link?
- English: `Sure. Is this for the book or to book a call?`
- Spanish: `Claro.\n¿El enlace es para el ebook o para reservar una llamada?`
- French: `Bien sûr. Cest pour le livre ou pour réserver un appel ?`
- Catalan: `Clar. És per al llibre o per reservar una trucada?`
## 7) What does it cost?
- English: `Its {PRICE}. Want the link?`
- Spanish: `Son {PRICE}.\n¿Te paso el enlace?`
- French: `Cest {PRICE}. Tu veux le lien ?`
- Catalan: `Són {PRICE}. Vols lenllaç?`
## 8) Is this therapy?
- English: `No — this isnt therapy in DMs. I can share resources and options. What are you looking for?`
- Spanish: `No, esto no es terapia por DM.\nPuedo ayudarte con recursos y opciones.\n¿Qué estás buscando?`
- French: `Non, ce nest pas une thérapie en DM. Je peux te partager des ressources et des options. Tu cherches quoi ?`
- Catalan: `No, això no és teràpia per DM. Puc compartir recursos i opcions. Què busques?`
## 9) Where do I get the book?
- English: `Here you go: {BOOK_LINK}. Did it open for you?`
- Spanish: `Aquí tienes el enlace: {BOOK_LINK}\n¿Te llega bien?`
- French: `Tiens : {BOOK_LINK}. Ça souvre bien de ton côté ?`
- Catalan: `Aquí ho tens: {BOOK_LINK}. Se tobre bé?`
## 10) I cant find it / it didnt arrive
- English: `No worries — lets fix it. What email did you use to buy (or send a screenshot of the receipt)?`
- Spanish: `Vale, lo solucionamos.\n¿Con qué email lo compraste? (o mándame una captura del recibo)`
- French: `OK, on règle ça. Tu as acheté avec quel email ? (ou envoie une capture du reçu)`
- Catalan: `Ho arreglem. Amb quin email ho vas comprar? (o envia una captura del rebut)`
## 11) How do I book a call?
- English: `Book a call here: {CALENDLY_LINK}. What times work for you?`
- Spanish: `Reserva aquí: {CALENDLY_LINK}\n¿Qué horarios te vienen bien?`
- French: `Réserve ici : {CALENDLY_LINK}. Quels créneaux te vont ?`
- Catalan: `Reserva aquí: {CALENDLY_LINK}. Quins horaris et van bé?`
## 12) How do I start?
- English: `To start, tell me your goal in one sentence and Ill tell you the first step.`
- Spanish: `Para empezar: dime tu objetivo en 1 frase y te digo el primer paso 🙌`
- French: `Pour commencer, dismoi ton objectif en 1 phrase et je te donne le premier pas.`
- Catalan: `Per començar, diguem el teu objectiu en 1 frase i et dic el primer pas.`
## 13) Can we talk on WhatsApp?
- English: `We can. If you prefer WhatsApp: {WHATSAPP_LINK}. Want to continue there?`
- Spanish: `Podemos.\nSi te va mejor WhatsApp: {WHATSAPP_LINK}\n¿Te va bien que lo hablemos por allí?`
- French: `Oui. Si tu préfères WhatsApp : {WHATSAPP_LINK}. Ça te va de continuer làbas ?`
- Catalan: `Sí. Si prefereixes WhatsApp: {WHATSAPP_LINK}. Et va bé seguir per allà?`
## 14) How does it work?
- English: `Simple: you get the resource, apply it, and if you want we can go deeper. What do you want to improve?`
- Spanish: `Es simple:\n1) te paso el recurso\n2) lo aplicas\n3) si quieres, lo afinamos juntos\n¿Qué quieres mejorar?`
- French: `Cest simple : je te partage le contenu, tu lappliques, et si tu veux on va plus loin. Tu veux améliorer quoi ?`
- Catalan: `És simple: et passo el recurs, lapliques, i si vols ho aprofundim. Què vols millorar?`
## 15) What are the steps?
- English: `1) Tell me what you want 2) I send the right link 3) You start. Whats your goal?`
- Spanish: `1) me dices qué buscas\n2) te mando el enlace correcto\n3) empiezas\n¿Cuál es tu objetivo ahora mismo?`
- French: `1) Tu me dis ce que tu veux 2) je tenvoie le bon lien 3) tu commences. Ton objectif, cest quoi ?`
- Catalan: `1) Em dius què busques 2) tenvio lenllaç correcte 3) comences. Quin és el teu objectiu?`
## 16) Is this real?
- English: `Yes. If you want, Ill send the official link. What are you looking to get out of it?`
- Spanish: `Sí, es real.\nSi quieres, te mando el enlace oficial.\n¿Qué estás buscando conseguir?`
- French: `Oui, cest réel. Si tu veux je tenvoie le lien officiel. Tu veux obtenir quoi exactement ?`
- Catalan: `Sí, és real. Si vols, tenvio lenllaç oficial. Què vols aconseguir exactament?`
## 17) Is it free?
- English: `The full thing isnt free, but I can share a free starting point. Want it?`
- Spanish: `No es gratis, pero sí tengo un punto de inicio gratuito.\n¿Quieres que te lo pase?`
- French: `Ce nest pas gratuit, mais jai un point de départ gratuit. Tu veux que je te lenvoie ?`
- Catalan: `No és gratis, però tinc un punt dinici gratuït. Vols que tel passi?`
## 18) Can I get a refund?
- English: `Sure — happy to help. Send me the purchase email + date and Ill sort it.`
- Spanish: `Claro, te ayudo.\nPásame el email de compra + la fecha y lo reviso.`
- French: `Bien sûr. Envoiemoi lemail dachat + la date et je men occupe.`
- Catalan: `És clar. Enviam lemail de compra + la data i ho gestiono.`
## 19) How long does it take?
- English: `It depends, but usually {TIMEFRAME}. What are you trying to change?`
- Spanish: `Depende, pero normalmente {TIMEFRAME}.\n¿Qué quieres cambiar tú?`
- French: `Ça dépend, mais en général {TIMEFRAME}. Tu veux changer quoi, toi ?`
- Catalan: `Depèn, però normalment {TIMEFRAME}. Què vols canviar tu?`
## 20) Where are you based?
Note: added as a practical top20 coverage item.
- English: `Im based in {BASE_LOCATION} (CET) and I work online. Where are you based?`
- Spanish: `Estoy en {BASE_LOCATION} (CET) y trabajo online.\n¿Tú dónde estás?`
- French: `Je suis basé à {BASE_LOCATION} (CET) et je travaille en ligne. Et toi, tu es où ?`
- Catalan: `Sóc a {BASE_LOCATION} (CET) i treballo online. I tu, on ets?`