CognxSafeTrack commited on
Commit
86d6011
·
1 Parent(s): 3edeaeb

feat(ai): fully operational v1.0 criteria engine and 5-level curriculum (10 modules)

Browse files
apps/api/src/routes/ai.ts CHANGED
@@ -169,22 +169,27 @@ export async function aiRoutes(fastify: FastifyInstance) {
169
  });
170
  const { answers, lessonText, exercisePrompt, userLanguage, businessProfile, exerciseCriteria } = bodySchema.parse(request.body);
171
 
172
- console.log(`[AI] Generating feedback for answers (Lang: ${userLanguage}).`);
173
 
174
  try {
175
  const feedback = await aiService.generateFeedback(answers, exercisePrompt, lessonText, userLanguage, businessProfile, exerciseCriteria);
176
 
177
- // Assemble the "WOW" 3-line feedback for WhatsApp
 
 
 
178
  const formattedFeedback = `✨ *Coach XAMLÉ* :\n\n` +
179
- `📝 ${feedback.rephrase}\n` +
180
  `🌟 ${feedback.praise}\n` +
 
181
  `💡 ${feedback.action}`;
182
 
183
  return {
184
  success: true,
185
  text: formattedFeedback,
186
- isQualified: feedback.isQualified ?? true,
187
- missingElements: feedback.missingElements || []
 
 
188
  };
189
  } catch (err: any) {
190
  if (err?.name === 'QuotaExceededError') {
 
169
  });
170
  const { answers, lessonText, exercisePrompt, userLanguage, businessProfile, exerciseCriteria } = bodySchema.parse(request.body);
171
 
172
+ console.log(`[AI] Generating v1.0 feedback for answers (Lang: ${userLanguage}).`);
173
 
174
  try {
175
  const feedback = await aiService.generateFeedback(answers, exercisePrompt, lessonText, userLanguage, businessProfile, exerciseCriteria);
176
 
177
+ // 🌟 Standard Feedback UX: 3 lines 🌟
178
+ // 1. Encouragement/Validation (PRAISE)
179
+ // 2. Diagnostic (REPHRASE)
180
+ // 3. Action / Help (ACTION)
181
  const formattedFeedback = `✨ *Coach XAMLÉ* :\n\n` +
 
182
  `🌟 ${feedback.praise}\n` +
183
+ `📝 ${feedback.rephrase}\n` +
184
  `💡 ${feedback.action}`;
185
 
186
  return {
187
  success: true,
188
  text: formattedFeedback,
189
+ isQualified: feedback.isQualified,
190
+ missingElements: feedback.missingElements || [],
191
+ confidence: feedback.confidence,
192
+ notes: feedback.notes
193
  };
194
  } catch (err: any) {
195
  if (err?.name === 'QuotaExceededError') {
apps/api/src/services/ai/index.ts CHANGED
@@ -52,47 +52,77 @@ class AIService {
52
  }
53
 
54
  /**
55
- * Generates a short pedagogical feedback for the student's answer.
56
  */
57
- async generateFeedback(userInput: string, expectedExercise: string, lessonContent: string, userLanguage: string = 'FR', businessProfile?: any, exerciseCriteria?: any): Promise<{ rephrase: string, praise: string, action: string, isQualified: boolean, missingElements: string[] }> {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
58
  const businessContext = businessProfile ? `BUSINESS DE L'ÉTUDIANT : Activity: ${businessProfile.activityLabel}, Customer: ${businessProfile.mainCustomer}, Offer: ${businessProfile.offerSimple}` : '';
59
- const criteriaContext = exerciseCriteria ? `CRITÈRES DE RÉUSSITE SPÉCIFIQUES :\n${JSON.stringify(exerciseCriteria, null, 2)}` : '';
 
 
 
 
 
60
 
61
  const prompt = `
62
- Tu es un coach business sénégalais, expert, bienveillant et motivant (XAMLÉ).
63
 
64
  ${businessContext}
65
  ${criteriaContext}
66
 
67
  CONTEXTE :
68
- L'étudiant répond à un exercice.
69
  Leçon : "${lessonContent}"
70
  Exercice : "${expectedExercise}"
71
- Réponse : "${userInput}"
72
 
73
  MISSION :
74
- Génère un feedback "WOW" en exactement 3 éléments courts :
75
- 1. REPHRASE : Reformule sa réponse pour la rendre plus professionnelle ou claire.
76
- 2. PRAISE : Une validation enthousiaste (ex: "Machallah !", "Excellent !").
77
- 3. ACTION : Un conseil pratique et immédiat lié à son business${businessProfile?.activityLabel ? ` (${businessProfile.activityLabel})` : ''}.
 
 
 
 
 
 
 
 
 
 
 
78
 
79
- POUR L'ÉVALUATION (isQualified) :
80
- ${exerciseCriteria ? `Utilise PRIORITAIREMENT les "CRITÈRES DE RÉUSSITE SPÉCIFIQUES" fournis ci-dessus.` : `Vérifie si la réponse contient : QUI (client), QUOI (produit), COMMENT (méthode de vente).`}
81
- Si un de ces critères manque, marque isQualified comme false. Sinon, true.
82
-
83
  CONTRAINTES :
84
- - LANGUE : "${userLanguage === 'WOLOF' ? 'WOLOF' : 'Français'}". JAMAIS D'ANGLAIS.
85
- - TAILLE : Maximum 15 mots par élément.
86
  - CONTEXTE : Ne cite jamais "Manga Deaf".
87
  `;
88
 
89
  const schema = z.object({
90
- rephrase: z.string().describe("Reformulation courte"),
91
- praise: z.string().describe("Encouragement enthousiaste"),
92
- action: z.string().describe("Conseil pratique immédiat"),
93
- isQualified: z.boolean().describe("Vrai si la réponse remplit les objectifs (basé sur les critères spécifiques si fournis)"),
94
- missingElements: z.array(z.string()).describe("Liste des éléments manquants. Vide si tout est là.")
 
 
95
  });
 
96
  return this.provider.generateStructuredData(prompt, schema);
97
  }
98
 
 
52
  }
53
 
54
  /**
55
+ * Generates a short pedagogical feedback for the student's answer based on v1.0 criteria.
56
  */
57
+ async generateFeedback(
58
+ userInput: string,
59
+ expectedExercise: string,
60
+ lessonContent: string,
61
+ userLanguage: string = 'FR',
62
+ businessProfile?: any,
63
+ exerciseCriteria?: any
64
+ ): Promise<{
65
+ rephrase: string,
66
+ praise: string,
67
+ action: string,
68
+ isQualified: boolean,
69
+ missingElements: string[],
70
+ confidence: number,
71
+ notes: string
72
+ }> {
73
  const businessContext = businessProfile ? `BUSINESS DE L'ÉTUDIANT : Activity: ${businessProfile.activityLabel}, Customer: ${businessProfile.mainCustomer}, Offer: ${businessProfile.offerSimple}` : '';
74
+
75
+ // Standardize Criteria Context v1.0
76
+ const criteriaContext = exerciseCriteria ? `
77
+ CRITÈRES DE RÉUSSITE v1.0 :
78
+ ${JSON.stringify(exerciseCriteria, null, 2)}
79
+ ` : 'CRITÈRES PAR DÉFAUT : La réponse doit être polie, en lien avec le sujet et contenir au moins un élément concret.';
80
 
81
  const prompt = `
82
+ Tu es un coach business sénégalais (XAMLÉ), expert, bienveillant et extrêmement motivant.
83
 
84
  ${businessContext}
85
  ${criteriaContext}
86
 
87
  CONTEXTE :
88
+ L'étudiant répond à un exercice WhatsApp.
89
  Leçon : "${lessonContent}"
90
  Exercice : "${expectedExercise}"
91
+ Réponse de l'étudiant : "${userInput}"
92
 
93
  MISSION :
94
+ 1. Évalue la réponse selon les CRITÈRES v1.0 fournis.
95
+ 2. Génère un feedback "WOW" structuré.
96
+
97
+ RÈGLES D'ÉVALUATION (isQualified) :
98
+ - Calcule le score basé sur les 'mustInclude' (poids élevés) et 'shouldInclude'.
99
+ - Un critère est rempli si l'intention est présente, même si les mots exacts diffèrent (tolérance terrain).
100
+ - Si 'exerciseCriteria.success.threshold' est présent, respecte 'minMustPass' et 'minScore'.
101
+ - Pour AUDIO : Si le texte semble tronqué ou incohérent, utilise la politique 'sttPolicy'.
102
+ - 'missingElements' doit contenir les IDs des critères 'mustInclude' manquants.
103
+
104
+ CONSIGNES DE RÉDACTION (Feedback 3 lignes) :
105
+ - REPHRASE : Reformule sa réponse pour la valoriser (max 15 mots).
106
+ - PRAISE : Une validation enthousiaste et culturelle (ex: "Machallah !", "Naka de ?", "Excellent !").
107
+ - ACTION : Un conseil pratique immédiat lié à son business.
108
+ Si isQualified=false, l'action doit être une aide à la réussite (ex: "Essaye de préciser à qui tu vends").
109
 
 
 
 
 
110
  CONTRAINTES :
111
+ - LANGUE : "${userLanguage === 'WOLOF' ? 'WOLOF' : 'Français'}".
112
+ - ZÉRO ANGLAIS. ZÉRO HALLUCINATION (ne pas inventer de faits non cités).
113
  - CONTEXTE : Ne cite jamais "Manga Deaf".
114
  `;
115
 
116
  const schema = z.object({
117
+ rephrase: z.string().describe("Reformulation courte valorisante"),
118
+ praise: z.string().describe("Validation enthousiaste (ex: Machallah)"),
119
+ action: z.string().describe("Conseil pratique immédiat ou aide à la remédiation"),
120
+ isQualified: z.boolean().describe("Vrai si le score >= minScore ET éléments requis présents"),
121
+ missingElements: z.array(z.string()).describe("Liste des IDs des critères 'mustInclude' manquants"),
122
+ confidence: z.number().describe("Niveau de confiance de l'IA dans son évaluation (0 à 1)"),
123
+ notes: z.string().describe("Notes internes sur le calcul du score (optionnel)")
124
  });
125
+
126
  return this.provider.generateStructuredData(prompt, schema);
127
  }
128
 
apps/whatsapp-worker/src/index.ts CHANGED
@@ -168,17 +168,23 @@ const worker = new Worker('whatsapp-queue', async (job: Job) => {
168
  } as any
169
  });
170
 
171
- // 🌟 Adaptive Pedagogy: Remediation Logic 🌟
172
  let nextDay = currentDay + 1;
173
 
174
- // If Day 1 and not qualified -> Jour 1bis (1.5)
175
- if (currentDay === 1 && feedbackData?.isQualified === false) {
176
- console.log(`[WORKER] Day 1 remediation triggered for User ${userId}`);
177
- nextDay = 1.5;
 
 
 
 
 
178
  }
179
- // If we were in 1.5 and now qualified -> move to Day 2
180
- else if (currentDay === 1.5 && feedbackData.isQualified !== false) {
181
- nextDay = 2;
 
182
  }
183
 
184
  await prisma.enrollment.updateMany({
 
168
  } as any
169
  });
170
 
171
+ // 🌟 Adaptive Pedagogy: Dynamic Remediation Logic v1.0 🌟
172
  let nextDay = currentDay + 1;
173
 
174
+ if (feedbackData?.isQualified === false) {
175
+ const remediationDay = (exerciseCriteria as any)?.remediation?.dayNumber;
176
+ if (remediationDay && remediationDay !== currentDay) {
177
+ console.log(`[WORKER] Dynamic remediation triggered for User ${userId}: Day ${currentDay} -> ${remediationDay}`);
178
+ nextDay = remediationDay;
179
+ } else {
180
+ console.log(`[WORKER] Exercise not qualified but no remediation day defined. Staying on Day ${currentDay}.`);
181
+ nextDay = currentDay;
182
+ }
183
  }
184
+ // If we were in a remediation day (fractional) and now qualified -> move to next integer day
185
+ else if (currentDay % 1 !== 0 && feedbackData?.isQualified !== false) {
186
+ nextDay = Math.floor(currentDay) + 1;
187
+ console.log(`[WORKER] Remediation successful for User ${userId}. Moving to Day ${nextDay}.`);
188
  }
189
 
190
  await prisma.enrollment.updateMany({
packages/database/content/tracks/T1-FR.json CHANGED
@@ -7,190 +7,391 @@
7
  {
8
  "dayNumber": 1,
9
  "title": "Qui, Quoi, Comment",
10
- "lessonText": "Aujourd'hui, on commence simple. Beaucoup de personnes disent : je fais le commerce. Mais ça ne veut rien dire. Dis-moi clairement : Tu aides QUI, à faire QUOI, et comment tu gagnes de l'argent. Exemple : Je vends du jus bissap aux étudiants devant l'université. Maintenant, c'est à toi. Dis ta phrase en 15 secondes.",
11
- "exercisePrompt": "Envoie-moi un court message vocal (ou texte) avec ta phrase d'activité :",
12
  "exerciseType": "AUDIO",
13
  "exerciseCriteria": {
14
- "mustMention": [
15
- "QUI",
16
- "QUOI",
17
- "COMMENT"
18
- ],
19
- "evaluationGuide": "L'élève doit identifier sa cible (QUI), son produit (QUOI) et le mode de vente ou rémunération (COMMENT)."
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
20
  }
21
  },
22
  {
23
  "dayNumber": 1.5,
24
  "title": "Remédiation : Précisons ta cible",
25
- "lessonText": "D'accord, on va préciser. Pour bien réussir, ta phrase doit répondre à 3 questions : QUI (ton client), QUOI (ton produit), et COMMENT (ta méthode). Exemple : 'Je vends (QUOI) des beignets aux (QUI) travailleurs du marché (COMMENT) le matin tôt.' Réessaie en incluant bien ces 3 points.",
26
- "exercisePrompt": "Renvoye-moi ta phrase corrigée avec QUI + QUOI + COMMENT :",
27
- "exerciseType": "AUDIO",
28
  "exerciseCriteria": {
29
- "mustMention": [
30
- "QUI",
31
- "QUOI",
32
- "COMMENT"
33
- ],
34
- "evaluationGuide": "Insiste sur la présence des 3 éléments. Sois patient mais rigoureux."
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
35
  }
36
  },
37
  {
38
  "dayNumber": 2,
39
  "title": "Le Résultat",
40
- "lessonText": "Le client n'achète pas ton produit. Il achète un résultat. Il n'achète pas du savon. Il achète la propreté. Va demander à 2 clients : Pourquoi tu achètes ça ? Écoute bien leurs mots.",
41
- "exercisePrompt": "Envoie un audio résumant les 2 réponses de tes clients.",
42
  "exerciseType": "AUDIO",
43
  "exerciseCriteria": {
44
- "evaluationGuide": "L'élève doit citer des bénéfices (ex: gain de temps, santé, plaisir) et non juste des caractéristiques techniques."
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
45
  }
46
  },
47
  {
48
  "dayNumber": 3,
49
  "title": "Cible Principale",
50
- "lessonText": "Si tu vends à tout le monde, tu ne vends à personne. Choisis un seul client principal. Qui est le plus intéressé par ton produit ?",
51
  "exercisePrompt": "Sélectionne ton client principal ci-dessous :",
52
  "exerciseType": "BUTTON",
53
  "buttonsJson": [
54
  {
55
- "id": "jeunes",
56
- "title": "Jeunes"
57
  },
58
  {
59
- "id": "femmes",
60
- "title": "Femmes"
61
  },
62
  {
63
- "id": "commercants",
64
- "title": "Commerçants"
65
  }
66
- ]
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
67
  },
68
  {
69
  "dayNumber": 4,
70
  "title": "Le Problème",
71
- "lessonText": "Ton client a un problème. Quel est son plus grand problème ? Parle à 3 personnes aujourd'hui. Pose cette question. Écoute sans expliquer ton produit.",
72
- "exercisePrompt": "Quel est le problème N°1 que tes clients t'ont partagé ?",
73
  "exerciseType": "TEXT",
74
  "exerciseCriteria": {
75
- "evaluationGuide": "L'élève doit ramener une douleur réelle (ex: 'trop cher', 'trop loin', 'pas de qualité')."
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
76
  }
77
  },
78
  {
79
  "dayNumber": 5,
80
  "title": "Le Moment",
81
- "lessonText": "À quel moment ton client a ce problème ?",
82
- "exercisePrompt": "Choisis le moment d'apparition du problème :",
83
  "exerciseType": "BUTTON",
84
  "buttonsJson": [
85
  {
86
- "id": "matin_midi",
87
- "title": "Matin ou Midi"
88
  },
89
  {
90
- "id": "soir",
91
- "title": "Le Soir"
92
  },
93
  {
94
- "id": "tout_le_temps",
95
- "title": "Tout le temps"
96
  }
97
  ]
98
  },
99
  {
100
  "dayNumber": 6,
101
  "title": "L'Existant",
102
- "lessonText": "Avant toi, il faisait comment ?",
103
- "exercisePrompt": "Donne-moi 2 solutions que ton client utilisait avant de te connaître :",
104
  "exerciseType": "TEXT",
105
  "exerciseCriteria": {
106
- "evaluationGuide": "L'élève doit identifier la concurrence directe ou indirecte (ex: 'marché', 'voisin', 'ne rien faire')."
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
107
  }
108
  },
109
  {
110
  "dayNumber": 7,
111
  "title": "Ta Solution",
112
- "lessonText": "Explique ta solution en mots simples. Pas compliqué.",
113
  "exercisePrompt": "Décris-moi ton offre très simplement en une phrase :",
114
  "exerciseType": "TEXT",
115
  "exerciseCriteria": {
116
- "evaluationGuide": "Vérifie la clarté. Un enfant de 10 ans doit comprendre."
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
117
  }
118
  },
119
  {
120
  "dayNumber": 8,
121
  "title": "Ta Force",
122
- "lessonText": "Tu ne peux pas promettre tout. Choisis une seule force.",
123
  "exercisePrompt": "Quelle est ta promesse principale ?",
124
  "exerciseType": "BUTTON",
125
  "buttonsJson": [
126
  {
127
- "id": "rapide",
128
- "title": "Rapide"
129
  },
130
  {
131
- "id": "moins_cher",
132
  "title": "Moins cher"
133
  },
134
  {
135
- "id": "fiable_proche",
136
- "title": "Fiable / Proche"
137
  }
138
  ]
139
  },
140
  {
141
  "dayNumber": 9,
142
  "title": "Le Test",
143
- "lessonText": "Parle à 5 personnes. Dis ta phrase. Combien disent OUI ?",
144
- "exercisePrompt": "Combien t'ont dit OUI ? (Envoie juste un chiffre)",
145
  "exerciseType": "TEXT",
146
  "exerciseCriteria": {
147
- "evaluationGuide": "L'élève doit donner un nombre entre 0 et 5. Encourage-le même si c'est 0."
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
148
  }
149
  },
150
  {
151
  "dayNumber": 10,
152
  "title": "Coûts simples",
153
- "lessonText": "Ton prix doit couvrir tes coûts. Note 2 dépenses importantes.",
154
- "exercisePrompt": "Quelles sont tes 2 plus grosses dépenses pour ce projet ?",
155
  "exerciseType": "TEXT",
156
  "exerciseCriteria": {
157
- "evaluationGuide": "L'élève doit citer des éléments réels (ex: 'matière première', 'transport', 'loyer')."
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
158
  }
159
  },
160
  {
161
  "dayNumber": 11,
162
- "title": "Avantage",
163
- "lessonText": "Pourquoi toi et pas un autre ?",
164
- "exercisePrompt": "Quel est ton vrai avantage concurrentiel ?",
165
- "exerciseType": "BUTTON",
166
- "buttonsJson": [
167
- {
168
- "id": "qualite",
169
- "title": "Qualité"
170
- },
171
- {
172
- "id": "rapidite",
173
- "title": "Rapidité"
174
- },
175
- {
176
- "id": "confiance",
177
- "title": "Confiance"
 
 
 
 
178
  }
179
- ]
180
  },
181
  {
182
  "dayNumber": 12,
183
  "title": "Mini Pitch",
184
- "lessonText": "Maintenant tu es prêt. Dis en 30 secondes : Je suis... J'aide... Parce que... Je vends... À...",
185
- "exercisePrompt": "C'est l'heure du test ! Envoie-moi un audio avec ton Mini Pitch de 30 secondes :",
186
  "exerciseType": "AUDIO",
187
  "exerciseCriteria": {
188
- "mustMention": [
189
- "QUI",
190
- "QUOI",
191
- "AVANTAGE"
192
- ],
193
- "evaluationGuide": "C'est l'examen final. Sois très motivé. Le pitch doit durer environ 30s et être fluide."
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
194
  },
195
  "badges": [
196
  "B_MODULE_1_OK"
 
7
  {
8
  "dayNumber": 1,
9
  "title": "Qui, Quoi, Comment",
10
+ "lessonText": "Bienvenue chez XAMLÉ ! Aujourd'hui, on commence simple. Beaucoup disent : 'je fais le commerce'. Mais ça ne dit rien à ton client. Dis-moi clairement : Tu aides QUI, à faire QUOI, et comment tu gagnes de l'argent ?",
11
+ "exercisePrompt": "Envoie ta phrase d'activité (ex: Je vends du riz aux voisins du quartier) :",
12
  "exerciseType": "AUDIO",
13
  "exerciseCriteria": {
14
+ "version": "1.0",
15
+ "type": "AUDIO",
16
+ "goal": "Définir la trinité business : QUI + QUOI + COMMENT",
17
+ "success": {
18
+ "mustInclude": [
19
+ {
20
+ "id": "WHO",
21
+ "desc": "la cible / client",
22
+ "weight": 3
23
+ },
24
+ {
25
+ "id": "WHAT",
26
+ "desc": "le produit / service",
27
+ "weight": 3
28
+ },
29
+ {
30
+ "id": "HOW",
31
+ "desc": "mode de vente / gain",
32
+ "weight": 2
33
+ }
34
+ ],
35
+ "threshold": {
36
+ "minScore": 5,
37
+ "minMustPass": 2
38
+ }
39
+ },
40
+ "evaluation": {
41
+ "tone": "coach_enthusiastic",
42
+ "format": "3_lines"
43
+ },
44
+ "remediation": {
45
+ "enabled": true,
46
+ "dayNumber": 1.5,
47
+ "message": "On y est presque ! Précise juste bien QUI est ton client et QUOI tu vends exactement.",
48
+ "hint": "Ex: Je vends ___ aux ___"
49
+ }
50
  }
51
  },
52
  {
53
  "dayNumber": 1.5,
54
  "title": "Remédiation : Précisons ta cible",
55
+ "lessonText": "D'accord, on va préciser. Pour réussir, ta phrase doit être un laser. Exemple : 'Je vends (QUOI) des beignets aux (QUI) travailleurs du marché (COMMENT) le matin.'",
56
+ "exercisePrompt": "Réessaie ta phrase avec QUI + QUOI + COMMENT :",
57
+ "exerciseType": "TEXT",
58
  "exerciseCriteria": {
59
+ "version": "1.0",
60
+ "type": "TEXT",
61
+ "goal": "Correction simplifiée de l'activité",
62
+ "success": {
63
+ "mustInclude": [
64
+ {
65
+ "id": "WHO",
66
+ "desc": "client",
67
+ "weight": 5
68
+ },
69
+ {
70
+ "id": "WHAT",
71
+ "desc": "produit",
72
+ "weight": 5
73
+ }
74
+ ],
75
+ "threshold": {
76
+ "minScore": 5,
77
+ "minMustPass": 1
78
+ }
79
+ },
80
+ "evaluation": {
81
+ "tone": "coach_enthusiastic",
82
+ "format": "3_lines"
83
+ }
84
  }
85
  },
86
  {
87
  "dayNumber": 2,
88
  "title": "Le Résultat",
89
+ "lessonText": "Le client n'achète pas ton produit, il achète un RÉSULTAT. Il n'achète pas une moustiquaire, il achète le sommeil sans paludisme.",
90
+ "exercisePrompt": "Quel résultat concret ton client obtient-il grâce à toi ?",
91
  "exerciseType": "AUDIO",
92
  "exerciseCriteria": {
93
+ "version": "1.0",
94
+ "type": "AUDIO",
95
+ "goal": "Identifier le bénéfice client (pas le produit)",
96
+ "success": {
97
+ "mustInclude": [
98
+ {
99
+ "id": "BENEFIT",
100
+ "desc": "gain de temps, santé, argent ou plaisir",
101
+ "weight": 5
102
+ }
103
+ ],
104
+ "threshold": {
105
+ "minScore": 5,
106
+ "minMustPass": 1
107
+ }
108
+ },
109
+ "evaluation": {
110
+ "tone": "coach_enthusiastic",
111
+ "format": "3_lines"
112
+ }
113
  }
114
  },
115
  {
116
  "dayNumber": 3,
117
  "title": "Cible Principale",
118
+ "lessonText": "Vendre à tout le monde = vendre à personne. Choisis ton client n°1. Les femmes ? Les jeunes ? Les boutiques ?",
119
  "exercisePrompt": "Sélectionne ton client principal ci-dessous :",
120
  "exerciseType": "BUTTON",
121
  "buttonsJson": [
122
  {
123
+ "id": "particuliers",
124
+ "title": "Particuliers"
125
  },
126
  {
127
+ "id": "boutiques",
128
+ "title": "Boutiques/Revendeurs"
129
  },
130
  {
131
+ "id": "entreprises",
132
+ "title": "Entreprises/L'État"
133
  }
134
+ ],
135
+ "exerciseCriteria": {
136
+ "version": "1.0",
137
+ "type": "BUTTON",
138
+ "goal": "Segmentation client",
139
+ "success": {
140
+ "mustInclude": [
141
+ {
142
+ "id": "CHOICE",
143
+ "desc": "a choisi un bouton",
144
+ "weight": 1
145
+ }
146
+ ],
147
+ "threshold": {
148
+ "minScore": 1,
149
+ "minMustPass": 1
150
+ }
151
+ }
152
+ }
153
  },
154
  {
155
  "dayNumber": 4,
156
  "title": "Le Problème",
157
+ "lessonText": "Derrière chaque vente, il y a un problème réglé. Si ton client ne soufre pas, il ne paye pas.",
158
+ "exercisePrompt": "Quel est le problème N°1 que tu règles pour ton client ?",
159
  "exerciseType": "TEXT",
160
  "exerciseCriteria": {
161
+ "version": "1.0",
162
+ "type": "TEXT",
163
+ "goal": "Identifier la douleur client",
164
+ "success": {
165
+ "mustInclude": [
166
+ {
167
+ "id": "PAIN",
168
+ "desc": "une difficulté réelle citée",
169
+ "weight": 5
170
+ }
171
+ ],
172
+ "threshold": {
173
+ "minScore": 5,
174
+ "minMustPass": 1
175
+ }
176
+ },
177
+ "evaluation": {
178
+ "tone": "coach_enthusiastic",
179
+ "format": "3_lines"
180
+ }
181
  }
182
  },
183
  {
184
  "dayNumber": 5,
185
  "title": "Le Moment",
186
+ "lessonText": "Quand ton client a-t-il besoin de toi ? S'il a soif à minuit mais que tu fermes à 18h, tu as un problème.",
187
+ "exercisePrompt": "Ton client a-t-il besoin de toi au quotidien ?",
188
  "exerciseType": "BUTTON",
189
  "buttonsJson": [
190
  {
191
+ "id": "chaque_jour",
192
+ "title": "Chaque jour"
193
  },
194
  {
195
+ "id": "parfois",
196
+ "title": "Parfois / Urgence"
197
  },
198
  {
199
+ "id": "rarement",
200
+ "title": "Rarement (Mariage, Fête)"
201
  }
202
  ]
203
  },
204
  {
205
  "dayNumber": 6,
206
  "title": "L'Existant",
207
+ "lessonText": "Avant toi, comment faisait-il ? Il achetait chez le voisin ou il faisait lui-même ?",
208
+ "exercisePrompt": "Donne un exemple de ce que ton client utilisait avant toi :",
209
  "exerciseType": "TEXT",
210
  "exerciseCriteria": {
211
+ "version": "1.0",
212
+ "type": "TEXT",
213
+ "goal": "Connaître la concurrence",
214
+ "success": {
215
+ "mustInclude": [
216
+ {
217
+ "id": "COMPETITOR",
218
+ "desc": "un concurrent ou solution alternative",
219
+ "weight": 5
220
+ }
221
+ ],
222
+ "threshold": {
223
+ "minScore": 5,
224
+ "minMustPass": 1
225
+ }
226
+ },
227
+ "evaluation": {
228
+ "tone": "coach_enthusiastic",
229
+ "format": "3_lines"
230
+ }
231
  }
232
  },
233
  {
234
  "dayNumber": 7,
235
  "title": "Ta Solution",
236
+ "lessonText": "C'est le moment d'être clair. Pas de grands mots tech. Explique ton produit à ta grand-mère.",
237
  "exercisePrompt": "Décris-moi ton offre très simplement en une phrase :",
238
  "exerciseType": "TEXT",
239
  "exerciseCriteria": {
240
+ "version": "1.0",
241
+ "type": "TEXT",
242
+ "goal": "Clarté de l'offre",
243
+ "success": {
244
+ "mustInclude": [
245
+ {
246
+ "id": "SOLUTION",
247
+ "desc": "description claire sans jargon",
248
+ "weight": 5
249
+ }
250
+ ],
251
+ "threshold": {
252
+ "minScore": 5,
253
+ "minMustPass": 1
254
+ }
255
+ },
256
+ "evaluation": {
257
+ "tone": "coach_enthusiastic",
258
+ "format": "3_lines"
259
+ }
260
  }
261
  },
262
  {
263
  "dayNumber": 8,
264
  "title": "Ta Force",
265
+ "lessonText": "Tu ne peux pas être le moins cher ET le plus rapide ET la meilleure qualité. Choisis ta force n°1.",
266
  "exercisePrompt": "Quelle est ta promesse principale ?",
267
  "exerciseType": "BUTTON",
268
  "buttonsJson": [
269
  {
270
+ "id": "rapidite",
271
+ "title": "Plus rapide"
272
  },
273
  {
274
+ "id": "prix",
275
  "title": "Moins cher"
276
  },
277
  {
278
+ "id": "qualite",
279
+ "title": "Meilleure qualité / Durable"
280
  }
281
  ]
282
  },
283
  {
284
  "dayNumber": 9,
285
  "title": "Le Test",
286
+ "lessonText": "Va sur le terrain. Parle à 3 personnes. Demande-leur : 'Si je vends X à tel prix, tu achètes ?'",
287
+ "exercisePrompt": "Combien de personnes sur les 3 ont dit OUI ? (Envoie un chiffre)",
288
  "exerciseType": "TEXT",
289
  "exerciseCriteria": {
290
+ "version": "1.0",
291
+ "type": "TEXT",
292
+ "goal": "Validation terrain (traction)",
293
+ "success": {
294
+ "mustInclude": [
295
+ {
296
+ "id": "NUMBER",
297
+ "desc": "un chiffre entre 0 et 3",
298
+ "weight": 5
299
+ }
300
+ ],
301
+ "threshold": {
302
+ "minScore": 5,
303
+ "minMustPass": 1
304
+ }
305
+ }
306
  }
307
  },
308
  {
309
  "dayNumber": 10,
310
  "title": "Coûts simples",
311
+ "lessonText": "Vendre c'est bien, gagner c'est mieux. Combien te coûte la fabrication d'un produit (transport inclus) ?",
312
+ "exercisePrompt": "Donne un coût estimé pour 1 unité de ton produit :",
313
  "exerciseType": "TEXT",
314
  "exerciseCriteria": {
315
+ "version": "1.0",
316
+ "type": "TEXT",
317
+ "goal": "Prise de conscience des coûts",
318
+ "success": {
319
+ "mustInclude": [
320
+ {
321
+ "id": "COST",
322
+ "desc": "un montant ou description de coût",
323
+ "weight": 5
324
+ }
325
+ ],
326
+ "threshold": {
327
+ "minScore": 5,
328
+ "minMustPass": 1
329
+ }
330
+ }
331
  }
332
  },
333
  {
334
  "dayNumber": 11,
335
+ "title": "Confiance",
336
+ "lessonText": "Dans le business au Sénégal, la confiance (kooluté) est tout. Comment rassures-tu ton client ?",
337
+ "exercisePrompt": "Quelle est ta méthode pour qu'on te fasse confiance ?",
338
+ "exerciseType": "TEXT",
339
+ "exerciseCriteria": {
340
+ "version": "1.0",
341
+ "type": "TEXT",
342
+ "goal": "Argument de confiance",
343
+ "success": {
344
+ "mustInclude": [
345
+ {
346
+ "id": "TRUST",
347
+ "desc": "preuve, recommandation ou garantie",
348
+ "weight": 5
349
+ }
350
+ ],
351
+ "threshold": {
352
+ "minScore": 5,
353
+ "minMustPass": 1
354
+ }
355
  }
356
+ }
357
  },
358
  {
359
  "dayNumber": 12,
360
  "title": "Mini Pitch",
361
+ "lessonText": "Bravo ! Tu as bouclé le Niveau 1. Maintenant, prouve-le. Donne ton pitch final en 30 secondes.",
362
+ "exercisePrompt": "Envoie un audio : Je suis [Nom], je vends [Quoi] aux [Qui] pour régler [Problème].",
363
  "exerciseType": "AUDIO",
364
  "exerciseCriteria": {
365
+ "version": "1.0",
366
+ "type": "AUDIO",
367
+ "goal": "Pitch final Niveau 1",
368
+ "success": {
369
+ "mustInclude": [
370
+ {
371
+ "id": "WHO",
372
+ "desc": "client",
373
+ "weight": 3
374
+ },
375
+ {
376
+ "id": "WHAT",
377
+ "desc": "offre",
378
+ "weight": 3
379
+ },
380
+ {
381
+ "id": "WHY",
382
+ "desc": "problème/valeur",
383
+ "weight": 4
384
+ }
385
+ ],
386
+ "threshold": {
387
+ "minScore": 7,
388
+ "minMustPass": 2
389
+ }
390
+ },
391
+ "evaluation": {
392
+ "tone": "coach_enthusiastic",
393
+ "format": "3_lines"
394
+ }
395
  },
396
  "badges": [
397
  "B_MODULE_1_OK"
packages/database/content/tracks/T1-WO.json CHANGED
@@ -1,5 +1,5 @@
1
  {
2
- "trackId": "de450e93-7312-4120-ac2c-b0a362d43f71",
3
  "title": "Comprendre Son Business (WOLOF)",
4
  "language": "WOLOF",
5
  "description": "Apprenez à définir, tester et vendre votre projet en 12 leçons.",
@@ -7,190 +7,391 @@
7
  {
8
  "dayNumber": 1,
9
  "title": "Kan, Lan, Naka",
10
- "lessonText": "Tey, danuy tàmbalee ak lu yomb. Nit ñu bari dañuy wax : dama def commerce. Waaye loolu amul solo. Wax ma leer : Yaay jàppalé KAN, mu def LAN, te naka nga amee xaalis. Misaal : Damaa jaay jus bissap ci taalibe yu université. Léegi sa waxtu la. Wax sa activité ci 15 seconde.",
11
- "exercisePrompt": "Yónnee ma ab kàddu (audio) walla message bu gatt ngir wax sa mbir :",
12
  "exerciseType": "AUDIO",
13
  "exerciseCriteria": {
14
- "mustMention": [
15
- "KAN",
16
- "LAN",
17
- "NAKA"
18
- ],
19
- "evaluationGuide": "L'élève doit identifier sa cible (KAN), son produit (LAN) et sa méthode (NAKA)."
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
20
  }
21
  },
22
  {
23
  "dayNumber": 1.5,
24
- "title": "Remédiation : Leeral sa mbir",
25
- "lessonText": "Waaw, dinañu ko gën a leerale. Ngir sa mbir neex, sa phrase war na tontu ci 3 laaj : KAN (sa kiliifa), LAN (sa produit), ak NAKA (nan ngay défee). Misaal : 'Damaa jaay (LAN) mburu ci (KAN) ligeey kat yi (NAKA) suba tël.' Ñaataal ko léegi, te bul fatte benn ci ñetti point yii.",
26
- "exercisePrompt": "Renvoyé ma sa phrase bu leeral, booleel KAN + LAN + NAKA :",
27
- "exerciseType": "AUDIO",
28
  "exerciseCriteria": {
29
- "mustMention": [
30
- "KAN",
31
- "LAN",
32
- "NAKA"
33
- ],
34
- "evaluationGuide": "Insiste sur la compréhension de KAN, LAN, NAKA. Sois très encourageant."
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
35
  }
36
  },
37
  {
38
  "dayNumber": 2,
39
- "title": "Li nga fay jaay",
40
- "lessonText": "Kiliifa bi du jënd sa produit rek. Mu jënd ab résultat. Du jënd savon rek. Mu jënd set. Dem laaj 2 kiliifa : Lu tax nga jënd lii ? Déggal bu baax li ñuy wax.",
41
- "exercisePrompt": "Yónnee ma audio ngir tënk ñaari tontu ya.",
42
  "exerciseType": "AUDIO",
43
  "exerciseCriteria": {
44
- "evaluationGuide": "L'élève doit parler du bénéfice (ex: propreté, santé) et non juste de l'objet."
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
45
  }
46
  },
47
  {
48
  "dayNumber": 3,
49
- "title": "Sa Kiliifa",
50
- "lessonText": "Su nga jaay ci ñépp, doo jaay ci kenn. Tànnal benn kiliifa bu mag. Kan moo gën a soxla sa produit ?",
51
- "exercisePrompt": "Tànnal sa kiliifa bu mag ci suuf :",
52
  "exerciseType": "BUTTON",
53
  "buttonsJson": [
54
  {
55
- "id": "ndaw_nyi",
56
- "title": "Ndaw ñi / Jeunes"
57
  },
58
  {
59
- "id": "jigeen_nyi",
60
- "title": "Jigeen ñi / Femmes"
61
  },
62
  {
63
- "id": "jaaykat_yi",
64
- "title": "Jaaykat yi / Comms"
65
  }
66
- ]
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
67
  },
68
  {
69
  "dayNumber": 4,
70
  "title": "Jafe-jafe bi",
71
- "lessonText": "Sa kiliifa am na jafe jafe. Lan mooy jafe jafe bu gën a rëy ? Dem waxtaan ak 3 nit. Laaj leen. Bul def publicité.",
72
- "exercisePrompt": "Lan mooy jafe jafe bu gën a mag bi sa kiliifa yi am ?",
73
  "exerciseType": "TEXT",
74
  "exerciseCriteria": {
75
- "evaluationGuide": "L'élève doit rapporter un problème concret entendu sur le terrain."
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
76
  }
77
  },
78
  {
79
  "dayNumber": 5,
80
- "title": "Kañ la ?",
81
- "lessonText": "Kañ la jafe jafe bi di ñëw ?",
82
- "exercisePrompt": "Tànnal jamono ji jafe jafe bi di faral di am :",
83
  "exerciseType": "BUTTON",
84
  "buttonsJson": [
85
  {
86
- "id": "suba_bëccëg",
87
- "title": "Suba walla Bëccëg"
88
  },
89
  {
90
- "id": "ngoon",
91
- "title": "Ngoon / Guddi"
92
  },
93
  {
94
- "id": "saa_su_ne",
95
- "title": "Saa su nekk"
96
  }
97
  ]
98
  },
99
  {
100
  "dayNumber": 6,
101
  "title": "Li fi amoon",
102
- "lessonText": "Balaa yaw, naka la daan def ?",
103
- "exercisePrompt": "Wax ma ñaari pexe yi kiliifa bi daan jëfandikoo balaa xam sa produit :",
104
  "exerciseType": "TEXT",
105
  "exerciseCriteria": {
106
- "evaluationGuide": "L'élève doit identifier comment le client se débrouillait avant."
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
107
  }
108
  },
109
  {
110
  "dayNumber": 7,
111
- "title": "Sa Solution",
112
- "lessonText": "Wax sa solution ci wax yu yomb.",
113
- "exercisePrompt": "Tënkal sa solution ci benn phrase bu yomb :",
114
  "exerciseType": "TEXT",
115
  "exerciseCriteria": {
116
- "evaluationGuide": "La phrase doit être simple et compréhensible par tous."
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
117
  }
118
  },
119
  {
120
  "dayNumber": 8,
121
- "title": "Sa Doole",
122
- "lessonText": "Bul promettre lépp. Tànnal benn doole.",
123
- "exercisePrompt": "Lan mooy sa dige bu mag ?",
124
  "exerciseType": "BUTTON",
125
  "buttonsJson": [
126
  {
127
- "id": "gaaw",
128
- "title": "Dafa gaaw"
129
  },
130
  {
131
- "id": "yomb",
132
- "title": "Dafa yomb / Prix"
133
  },
134
  {
135
- "id": "woor",
136
- "title": "Dafa woor"
137
  }
138
  ]
139
  },
140
  {
141
  "dayNumber": 9,
142
- "title": "Seet bi",
143
- "lessonText": "Dem waxtaan ak 5 nit. Ñaata ñu wax WAAN ?",
144
- "exercisePrompt": "Ñaata nit ñoo wax WAAN ? (Bind ma chiffre bi rek)",
145
  "exerciseType": "TEXT",
146
  "exerciseCriteria": {
147
- "evaluationGuide": "L'élève doit donner le nombre de 'S' (oui) reçus sur 5 tests."
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
148
  }
149
  },
150
  {
151
  "dayNumber": 10,
152
- "title": "Dépense yi",
153
- "lessonText": "Sa priix war na japp sa dépense. Bind ñaari dépense.",
154
- "exercisePrompt": "Bind ma ñaari dépense yu gën a rëy ci sa mbir :",
155
  "exerciseType": "TEXT",
156
  "exerciseCriteria": {
157
- "evaluationGuide": "L'élève doit lister des dépenses concrètes liées à son activité."
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
158
  }
159
  },
160
  {
161
  "dayNumber": 11,
162
- "title": "Lu tax yaw ?",
163
- "lessonText": "Lu tax yaw te du keneen ?",
164
- "exercisePrompt": "Lan nga gën a mën ci ñeneen ñi ?",
165
- "exerciseType": "BUTTON",
166
- "buttonsJson": [
167
- {
168
- "id": "baax",
169
- "title": "Dafa baax"
170
- },
171
- {
172
- "id": "gaaw",
173
- "title": "Dafa gaaw"
174
- },
175
- {
176
- "id": "koolute",
177
- "title": "Kooluté / Confiance"
 
 
 
 
178
  }
179
- ]
180
  },
181
  {
182
  "dayNumber": 12,
183
  "title": "Mini Pitch",
184
- "lessonText": "Léegi nga hazır. Wax ci 30 seconde : Man ma... Damaa jàppalé... Ndax... Damaa jaay... Ci...",
185
- "exercisePrompt": "Yónnee ma sa Pitch bu gatt ci 30 seconde :",
186
  "exerciseType": "AUDIO",
187
  "exerciseCriteria": {
188
- "mustMention": [
189
- "KAN",
190
- "LAN",
191
- "DOOLE"
192
- ],
193
- "evaluationGuide": "Examen final. Le pitch doit être convaincant, en Wolof pur."
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
194
  },
195
  "badges": [
196
  "B_MODULE_1_OK"
 
1
  {
2
+ "trackId": "db45873a-4412-4f36-963a-7845f1238901",
3
  "title": "Comprendre Son Business (WOLOF)",
4
  "language": "WOLOF",
5
  "description": "Apprenez à définir, tester et vendre votre projet en 12 leçons.",
 
7
  {
8
  "dayNumber": 1,
9
  "title": "Kan, Lan, Naka",
10
+ "lessonText": "Dalal jàmm ci XAMLÉ ! Tey danuy tàmbale lu yomb. Ñu bari dañuy wax : 'damay def commerce'. Waaye loolu leeralul sa kiliifa dara. Wax ma bu leer : ÑAN ngay jàppalè, LAN ngay def, te NAKA ngay amé xaalis ?",
11
+ "exercisePrompt": "Yónnee ma sa phrase (ex: Damay jaay cere biir quartier bi) :",
12
  "exerciseType": "AUDIO",
13
  "exerciseCriteria": {
14
+ "version": "1.0",
15
+ "type": "AUDIO",
16
+ "goal": "Définir la trinité business : ÑAN + LAN + NAKA",
17
+ "success": {
18
+ "mustInclude": [
19
+ {
20
+ "id": "WHO",
21
+ "desc": "ñan (kiliifa)",
22
+ "weight": 3
23
+ },
24
+ {
25
+ "id": "WHAT",
26
+ "desc": "lan (produit)",
27
+ "weight": 3
28
+ },
29
+ {
30
+ "id": "HOW",
31
+ "desc": "naka (naka ngay jaayé)",
32
+ "weight": 2
33
+ }
34
+ ],
35
+ "threshold": {
36
+ "minScore": 5,
37
+ "minMustPass": 2
38
+ }
39
+ },
40
+ "evaluation": {
41
+ "tone": "coach_enthusiastic",
42
+ "format": "3_lines"
43
+ },
44
+ "remediation": {
45
+ "enabled": true,
46
+ "dayNumber": 1.5,
47
+ "message": "Waaw, mu ngi ñëw ! Leeralal ma bu baax ÑAN mooy sa kiliifa te LAN ngay jaay exactement.",
48
+ "hint": "Ex: Damay jaay ___ ñi ___"
49
+ }
50
  }
51
  },
52
  {
53
  "dayNumber": 1.5,
54
+ "title": "Pexe : Leeral sa kiliifa",
55
+ "lessonText": "Baax na, danuy gën a leeral. Ngir nga roussi, sa phrase dafa war a leer nàññ. Exemple : 'Damay jaay (LAN) mburu (ÑAN) wa kër yi (NAKA) suba sa tel.'",
56
+ "exercisePrompt": "Réessaiel sa phrase ak ÑAN + LAN + NAKA :",
57
+ "exerciseType": "TEXT",
58
  "exerciseCriteria": {
59
+ "version": "1.0",
60
+ "type": "TEXT",
61
+ "goal": "Correction simplifiée de l'activité (WOLOF)",
62
+ "success": {
63
+ "mustInclude": [
64
+ {
65
+ "id": "WHO",
66
+ "desc": "ñan",
67
+ "weight": 5
68
+ },
69
+ {
70
+ "id": "WHAT",
71
+ "desc": "lan",
72
+ "weight": 5
73
+ }
74
+ ],
75
+ "threshold": {
76
+ "minScore": 5,
77
+ "minMustPass": 1
78
+ }
79
+ },
80
+ "evaluation": {
81
+ "tone": "coach_enthusiastic",
82
+ "format": "3_lines"
83
+ }
84
  }
85
  },
86
  {
87
  "dayNumber": 2,
88
+ "title": "Njariñ li",
89
+ "lessonText": "Kiliifa bi du jënd sa produit, dafay jënd NJARIÑ li mu koy uutal. Du jënd moustiquaire, dafay jënd nelaw bu neex te amul fital.",
90
+ "exercisePrompt": "Yan njariñ la sa kiliifa di am ci yaw ?",
91
  "exerciseType": "AUDIO",
92
  "exerciseCriteria": {
93
+ "version": "1.0",
94
+ "type": "AUDIO",
95
+ "goal": "Identifier le bénéfice client (WOLOF)",
96
+ "success": {
97
+ "mustInclude": [
98
+ {
99
+ "id": "BENEFIT",
100
+ "desc": "njariñ (wergu yaram, jamono, mbégte)",
101
+ "weight": 5
102
+ }
103
+ ],
104
+ "threshold": {
105
+ "minScore": 5,
106
+ "minMustPass": 1
107
+ }
108
+ },
109
+ "evaluation": {
110
+ "tone": "coach_enthusiastic",
111
+ "format": "3_lines"
112
+ }
113
  }
114
  },
115
  {
116
  "dayNumber": 3,
117
+ "title": "Sa Kiliifa bu mag",
118
+ "lessonText": "Jaay ñépp = jaayul kën. Tannal benn kiliifa bu mag. Jigéen ñi ? Ndaw ñi ? Boutiques yi ?",
119
+ "exercisePrompt": "Tannal sa kiliifa bu mag ci yii :",
120
  "exerciseType": "BUTTON",
121
  "buttonsJson": [
122
  {
123
+ "id": "particuliers",
124
+ "title": "Nit ñi / Kër yi"
125
  },
126
  {
127
+ "id": "boutiques",
128
+ "title": "Boutiques / Grossistes"
129
  },
130
  {
131
+ "id": "entreprises",
132
+ "title": "Entreprises / L'État"
133
  }
134
+ ],
135
+ "exerciseCriteria": {
136
+ "version": "1.0",
137
+ "type": "BUTTON",
138
+ "goal": "Segmentation client (WOLOF)",
139
+ "success": {
140
+ "mustInclude": [
141
+ {
142
+ "id": "CHOICE",
143
+ "desc": "tann na benn",
144
+ "weight": 1
145
+ }
146
+ ],
147
+ "threshold": {
148
+ "minScore": 1,
149
+ "minMustPass": 1
150
+ }
151
+ }
152
+ }
153
  },
154
  {
155
  "dayNumber": 4,
156
  "title": "Jafe-jafe bi",
157
+ "lessonText": "Saa su nekk nit di jënd, dafa am jafe-jafe bu mu bëgg dakkal. Su kiliifa bi sonnul, du fay xaalis.",
158
+ "exercisePrompt": "Lan mooy jafe-jafe bi nga koy dakkal ?",
159
  "exerciseType": "TEXT",
160
  "exerciseCriteria": {
161
+ "version": "1.0",
162
+ "type": "TEXT",
163
+ "goal": "Identifier la douleur client (WOLOF)",
164
+ "success": {
165
+ "mustInclude": [
166
+ {
167
+ "id": "PAIN",
168
+ "desc": "jafe-jafe bu leer",
169
+ "weight": 5
170
+ }
171
+ ],
172
+ "threshold": {
173
+ "minScore": 5,
174
+ "minMustPass": 1
175
+ }
176
+ },
177
+ "evaluation": {
178
+ "tone": "coach_enthusiastic",
179
+ "format": "3_lines"
180
+ }
181
  }
182
  },
183
  {
184
  "dayNumber": 5,
185
+ "title": "Jamono bi",
186
+ "lessonText": "Kañ la sa kiliifa soxla la ? Su bëggé naan ci diggu bëccëk te sa boutique dafa faye, am nga jafe-jafe.",
187
+ "exercisePrompt": "Sa kiliifa dafa la soxla bis bu ne ?",
188
  "exerciseType": "BUTTON",
189
  "buttonsJson": [
190
  {
191
+ "id": "chaque_jour",
192
+ "title": "Bis bu ne"
193
  },
194
  {
195
+ "id": "parfois",
196
+ "title": "Léeg léeg / Urgence"
197
  },
198
  {
199
+ "id": "rarement",
200
+ "title": "Rarement (Mariage, Fête)"
201
  }
202
  ]
203
  },
204
  {
205
  "dayNumber": 6,
206
  "title": "Li fi amoon",
207
+ "lessonText": "Lata yaw di ñëw, naka la doon def ? Da doon jënd ci dëkkëndo bi walla da doon faye gën a jar ?",
208
+ "exercisePrompt": "Waxal ma benn exemple lu sa kiliifa doon def lata yaw :",
209
  "exerciseType": "TEXT",
210
  "exerciseCriteria": {
211
+ "version": "1.0",
212
+ "type": "TEXT",
213
+ "goal": "Connaître la concurrence (WOLOF)",
214
+ "success": {
215
+ "mustInclude": [
216
+ {
217
+ "id": "COMPETITOR",
218
+ "desc": "pexe bu kiliifa bi amoon",
219
+ "weight": 5
220
+ }
221
+ ],
222
+ "threshold": {
223
+ "minScore": 5,
224
+ "minMustPass": 1
225
+ }
226
+ },
227
+ "evaluation": {
228
+ "tone": "coach_enthusiastic",
229
+ "format": "3_lines"
230
+ }
231
  }
232
  },
233
  {
234
  "dayNumber": 7,
235
+ "title": "Sa Pexe",
236
+ "lessonText": "Léegi leeralal sa pexe. Bul jëfandiku wax yu seer. Nettoolil ma sa mbir naka kooku maam di dégge.",
237
+ "exercisePrompt": "Leeralal ma sa pexe ci benn phrase :",
238
  "exerciseType": "TEXT",
239
  "exerciseCriteria": {
240
+ "version": "1.0",
241
+ "type": "TEXT",
242
+ "goal": "Clarté de l'offre (WOLOF)",
243
+ "success": {
244
+ "mustInclude": [
245
+ {
246
+ "id": "SOLUTION",
247
+ "desc": "pexe bu leer",
248
+ "weight": 5
249
+ }
250
+ ],
251
+ "threshold": {
252
+ "minScore": 5,
253
+ "minMustPass": 1
254
+ }
255
+ },
256
+ "evaluation": {
257
+ "tone": "coach_enthusiastic",
258
+ "format": "3_lines"
259
+ }
260
  }
261
  },
262
  {
263
  "dayNumber": 8,
264
+ "title": "Sa Doolé",
265
+ "lessonText": "Mënoo am lépp. Dangay gaaw ? Walla daggay yomb ? Walla sa mbir moo gën a baax ?",
266
+ "exercisePrompt": "Lan mooy sa doolé ?",
267
  "exerciseType": "BUTTON",
268
  "buttonsJson": [
269
  {
270
+ "id": "rapidite",
271
+ "title": "Dama gën a gaaw"
272
  },
273
  {
274
+ "id": "prix",
275
+ "title": "Dama gën a yomb"
276
  },
277
  {
278
+ "id": "qualite",
279
+ "title": "Sama mbir moo gën a dëgër"
280
  }
281
  ]
282
  },
283
  {
284
  "dayNumber": 9,
285
+ "title": "Natt bi",
286
+ "lessonText": "Demal ci terrain bi. Waxal ak 3 nit. Laaj leen : 'Su ma jaayé lii ci prix bii, daggay jënd ?'",
287
+ "exercisePrompt": "Ñata nit ñoo la wax WAAW ? (Bindal chiffre bi rek)",
288
  "exerciseType": "TEXT",
289
  "exerciseCriteria": {
290
+ "version": "1.0",
291
+ "type": "TEXT",
292
+ "goal": "Validation terrain (WOLOF)",
293
+ "success": {
294
+ "mustInclude": [
295
+ {
296
+ "id": "NUMBER",
297
+ "desc": "chiffre diggenté 0 ak 3",
298
+ "weight": 5
299
+ }
300
+ ],
301
+ "threshold": {
302
+ "minScore": 5,
303
+ "minMustPass": 1
304
+ }
305
+ }
306
  }
307
  },
308
  {
309
  "dayNumber": 10,
310
+ "title": "Li ngay faye",
311
+ "lessonText": "Jaay baax na, waaye gagné moo gën. Ñata ngay faye ngir uut benn produit (transport bi ci biir) ?",
312
+ "exercisePrompt": "Bindal ma estimé bi ngay faye ngir benn produit :",
313
  "exerciseType": "TEXT",
314
  "exerciseCriteria": {
315
+ "version": "1.0",
316
+ "type": "TEXT",
317
+ "goal": "Prise de conscience des coûts (WOLOF)",
318
+ "success": {
319
+ "mustInclude": [
320
+ {
321
+ "id": "COST",
322
+ "desc": "prix walla lan lay faye",
323
+ "weight": 5
324
+ }
325
+ ],
326
+ "threshold": {
327
+ "minScore": 5,
328
+ "minMustPass": 1
329
+ }
330
+ }
331
  }
332
  },
333
  {
334
  "dayNumber": 11,
335
+ "title": "Kooluté",
336
+ "lessonText": "Ci businessu Senegaal, kooluté mooy lépp. Naka ngay def ngir kiliifa bi dëgërël sa wax ?",
337
+ "exercisePrompt": "Lan ngay def ngir ñu gën laa woolu ?",
338
+ "exerciseType": "TEXT",
339
+ "exerciseCriteria": {
340
+ "version": "1.0",
341
+ "type": "TEXT",
342
+ "goal": "Argument de confiance (WOLOF)",
343
+ "success": {
344
+ "mustInclude": [
345
+ {
346
+ "id": "TRUST",
347
+ "desc": "garantie walla kooluté",
348
+ "weight": 5
349
+ }
350
+ ],
351
+ "threshold": {
352
+ "minScore": 5,
353
+ "minMustPass": 1
354
+ }
355
  }
356
+ }
357
  },
358
  {
359
  "dayNumber": 12,
360
  "title": "Mini Pitch",
361
+ "lessonText": "Félicitations ! Mat nga Niveau 1. Léegi, wone ko. Waxal sa pitch bi ci 30 seconde.",
362
+ "exercisePrompt": "Yónnee ma audio : Maangi tudd [Nom], damay jaay [Lan] ñi [Ñan] ngir dakkal [Jafe-jafe].",
363
  "exerciseType": "AUDIO",
364
  "exerciseCriteria": {
365
+ "version": "1.0",
366
+ "type": "AUDIO",
367
+ "goal": "Pitch final Niveau 1 (WOLOF)",
368
+ "success": {
369
+ "mustInclude": [
370
+ {
371
+ "id": "WHO",
372
+ "desc": "ñan",
373
+ "weight": 3
374
+ },
375
+ {
376
+ "id": "WHAT",
377
+ "desc": "lan",
378
+ "weight": 3
379
+ },
380
+ {
381
+ "id": "WHY",
382
+ "desc": "lu tax",
383
+ "weight": 4
384
+ }
385
+ ],
386
+ "threshold": {
387
+ "minScore": 7,
388
+ "minMustPass": 2
389
+ }
390
+ },
391
+ "evaluation": {
392
+ "tone": "coach_enthusiastic",
393
+ "format": "3_lines"
394
+ }
395
  },
396
  "badges": [
397
  "B_MODULE_1_OK"
packages/database/content/tracks/T2-FR.json CHANGED
@@ -2,122 +2,191 @@
2
  "trackId": "T2-FR",
3
  "title": "Structurer Son Modèle Économique (FR)",
4
  "language": "FR",
5
- "description": "Apprenez à gérer vos coûts, vos prix et votre rentabilité pour un business durable.",
6
  "days": [
7
  {
8
  "dayNumber": 1,
9
- "title": "Tes Revenus",
10
- "lessonText": "Bienvenue au Niveau 2 ! Aujourd'hui, on regarde d'où vient l'argent. Tu ne vends peut-être pas qu'une chose. Réfléchis : Comment ton client te paye ? À l'unité ? Par abonnement ? Au service ?",
11
- "exercisePrompt": "Quelles sont tes 2 principales sources de revenus aujourd'hui ?",
12
  "exerciseType": "TEXT",
13
  "exerciseCriteria": {
14
- "evaluationGuide": "L'élève doit citer des sources de revenus claires (ex: vente de pain, livraison)."
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
15
  }
16
  },
17
  {
18
  "dayNumber": 2,
19
- "title": "Coûts Fixes",
20
- "lessonText": "Même si tu ne vends rien aujourd'hui, tu as des dépenses. C'est ce qu'on appelle les coûts fixes (loyer, crédit, abonnement tel).",
21
- "exercisePrompt": "Cite 2 dépenses que tu dois payer CHAQUE MOIS, peu importe tes ventes :",
22
- "exerciseType": "TEXT",
23
- "exerciseCriteria": {
24
- "evaluationGuide": "Vérifie que ce sont des coûts fixes (ex: loyer, salaire fixe) et non des matières premières."
25
- }
26
- },
27
- {
28
- "dayNumber": 3,
29
- "title": "Coûts Variables",
30
- "lessonText": "Plus tu vends, plus tu dépenses. C'est le coût variable (farine pour le pain, essence pour le transport).",
31
- "exercisePrompt": "Quel est le coût principal qui augmente quand tu vends plus ?",
32
- "exerciseType": "TEXT",
33
- "exerciseCriteria": {
34
- "evaluationGuide": "L'élève doit identifier une matière première ou un coût lié à la production."
35
- }
36
- },
37
- {
38
- "dayNumber": 4,
39
- "title": "La Marge",
40
- "lessonText": "La marge, c'est ce qui reste dans ta poche après avoir payé ton produit. Si tu vends à 100 et que ça te coûte 60, ta marge est de 40.",
41
- "exercisePrompt": "Prends ton produit phare. Quel est son prix de vente et son coût de revient ?",
42
- "exerciseType": "TEXT",
43
- "exerciseCriteria": {
44
- "evaluationGuide": "L'élève doit donner deux chiffres. Calcule mentalement si la marge semble positive."
45
- }
46
- },
47
- {
48
- "dayNumber": 5,
49
- "title": "Prix vs Valeur",
50
- "lessonText": "Le prix est ce qu'ils payent, la valeur est ce qu'ils reçoivent. Pourquoi un client accepterait de payer plus cher chez toi ?",
51
- "exercisePrompt": "Quelle 'valeur' justifies-tu pour ton prix ?",
52
  "exerciseType": "BUTTON",
53
  "buttonsJson": [
54
  {
55
- "id": "qualite",
56
- "title": "Qualité supérieure"
57
  },
58
  {
59
- "id": "temps",
60
- "title": "Gain de temps"
61
- },
62
- {
63
- "id": "service",
64
- "title": "Service après-vente"
65
  }
66
  ]
67
  },
68
  {
69
- "dayNumber": 6,
70
- "title": "Tester le Prix",
71
- "lessonText": "As-tu déjà essayé d'augmenter ton prix ? Souvent, on a peur, mais le client accepte si la valeur est là.",
72
- "exercisePrompt": "Si tu augmentais ton prix de 10% demain, que se passerait-il selon toi ?",
73
  "exerciseType": "TEXT",
74
  "exerciseCriteria": {
75
- "evaluationGuide": "L'élève doit analyser l'impact sur ses clients (peur de perdre des clients ou confiance)."
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
76
  }
77
  },
78
  {
79
- "dayNumber": 7,
80
- "title": "L'Offre Packagée",
81
- "lessonText": "Ne vends pas juste un objet. Vends une solution complète. Exemple : Pas juste du café, mais un 'Petit Déjeuner Complet'.",
82
- "exercisePrompt": "Comment pourrais-tu combiner 2 produits pour créer un 'Pack' ?",
83
  "exerciseType": "TEXT",
84
  "exerciseCriteria": {
85
- "evaluationGuide": "L'élève doit proposer une offre groupée cohérente."
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
86
  }
87
  },
88
  {
89
- "dayNumber": 8,
90
- "title": "Segment Rentable",
91
- "lessonText": "Certains clients te coûtent plus qu'ils ne te rapportent. Quel est le client qui te donne le moins de problèmes et le plus de marge ?",
92
- "exercisePrompt": "Décris ton client 'idéal' qui paye bien et sans discuter.",
93
  "exerciseType": "TEXT",
94
  "exerciseCriteria": {
95
- "evaluationGuide": "L'élève doit cibler une catégorie rentable."
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
96
  }
97
  },
98
  {
99
- "dayNumber": 9,
100
- "title": "Projection",
101
- "lessonText": "Imagine le mois prochain. Combien d'unités dois-tu vendre pour payer tous tes frais fixes (ton point mort) ?",
102
- "exercisePrompt": "Donne un chiffre approximatif de ventes nécessaires par mois :",
103
  "exerciseType": "TEXT",
104
  "exerciseCriteria": {
105
- "evaluationGuide": "L'élève doit montrer qu'il comprend la notion de point mort (break-even)."
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
106
  }
107
  },
108
  {
109
- "dayNumber": 10,
110
- "title": "Plan Financier",
111
- "lessonText": "Bravo ! Tu as fini le Niveau 2. Tu maîtrises tes chiffres. Maintenant, résume : Chiffre d'affaires visé, Coûts totaux, Bénéfice espéré.",
112
- "exercisePrompt": "Envoie un audio résumant ton plan : Combien tu veux gagner et comment ?",
113
  "exerciseType": "AUDIO",
114
  "exerciseCriteria": {
115
- "mustMention": [
116
- "CHIFFRE",
117
- "COUT",
118
- "BENEFICE"
119
- ],
120
- "evaluationGuide": "L'élève doit montrer une cohérence entre son ambition et ses coûts."
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
121
  },
122
  "badges": [
123
  "B_MODULE_2_OK"
 
2
  "trackId": "T2-FR",
3
  "title": "Structurer Son Modèle Économique (FR)",
4
  "language": "FR",
5
+ "description": "Apprenez à calculer votre rentabilité et à gérer votre argent comme un pro.",
6
  "days": [
7
  {
8
  "dayNumber": 1,
9
+ "title": "D'où vient l'argent ?",
10
+ "lessonText": "Bienvenue au Niveau 2 ! Aujourd'hui, on liste tes sources de revenus. Est-ce que tu vends un produit, un service, ou les deux ?",
11
+ "exercisePrompt": "Quelles sont tes 2 sources de revenus principales ?",
12
  "exerciseType": "TEXT",
13
  "exerciseCriteria": {
14
+ "version": "1.0",
15
+ "type": "TEXT",
16
+ "goal": "Identifier les flux de revenus",
17
+ "success": {
18
+ "mustInclude": [
19
+ {
20
+ "id": "REVENUE",
21
+ "desc": "au moins une source de revenu claire",
22
+ "weight": 5
23
+ }
24
+ ],
25
+ "threshold": {
26
+ "minScore": 5,
27
+ "minMustPass": 1
28
+ }
29
+ },
30
+ "evaluation": {
31
+ "tone": "coach_enthusiastic",
32
+ "format": "3_lines"
33
+ }
34
  }
35
  },
36
  {
37
  "dayNumber": 2,
38
+ "title": "Vendre une fois vs plusieurs",
39
+ "lessonText": "C'est plus facile de vendre à un client qui te connaît déjà. Est-ce que ton client achète une seule fois (ex: un lit) ou souvent (ex: du riz) ?",
40
+ "exercisePrompt": "Ton client revient-il te voir tous les mois ?",
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
41
  "exerciseType": "BUTTON",
42
  "buttonsJson": [
43
  {
44
+ "id": "souvent",
45
+ "title": "Oui, souvent"
46
  },
47
  {
48
+ "id": "rarement",
49
+ "title": "Rarement / Une fois"
 
 
 
 
50
  }
51
  ]
52
  },
53
  {
54
+ "dayNumber": 3,
55
+ "title": "Le Prix Juste",
56
+ "lessonText": "Ton prix = Coût de revient + Marge. Si tu oublies tes frais de transport, tu travailles gratuitement.",
57
+ "exercisePrompt": "Comment as-tu fixé ton prix actuel ?",
58
  "exerciseType": "TEXT",
59
  "exerciseCriteria": {
60
+ "version": "1.0",
61
+ "type": "TEXT",
62
+ "goal": "Comprendre la fixation du prix",
63
+ "success": {
64
+ "mustInclude": [
65
+ {
66
+ "id": "METHOD",
67
+ "desc": "description d'un calcul ou comparaison",
68
+ "weight": 5
69
+ }
70
+ ],
71
+ "threshold": {
72
+ "minScore": 5,
73
+ "minMustPass": 1
74
+ }
75
+ }
76
  }
77
  },
78
  {
79
+ "dayNumber": 4,
80
+ "title": "La Marge",
81
+ "lessonText": "La marge, c'est ce qui te reste dans la poche après avoir payé TOUS les frais. Sans marge, ton business meurt.",
82
+ "exercisePrompt": "Sur 1000 FCFA vendus, combien te reste-t-il après avoir payé la marchandise ?",
83
  "exerciseType": "TEXT",
84
  "exerciseCriteria": {
85
+ "version": "1.0",
86
+ "type": "TEXT",
87
+ "goal": "Calcul de marge brute",
88
+ "success": {
89
+ "mustInclude": [
90
+ {
91
+ "id": "MARGIN",
92
+ "desc": "un montant ou pourcentage",
93
+ "weight": 5
94
+ }
95
+ ],
96
+ "threshold": {
97
+ "minScore": 5,
98
+ "minMustPass": 1
99
+ }
100
+ }
101
  }
102
  },
103
  {
104
+ "dayNumber": 5,
105
+ "title": "Le Point Mort",
106
+ "lessonText": "Combien de produits dois-tu vendre par jour juste pour payer ton loyer et tes charges ?",
107
+ "exercisePrompt": "Donne un chiffre : Combien de ventes minimum par jour ?",
108
  "exerciseType": "TEXT",
109
  "exerciseCriteria": {
110
+ "version": "1.0",
111
+ "type": "TEXT",
112
+ "goal": "Seuil de rentabilité",
113
+ "success": {
114
+ "mustInclude": [
115
+ {
116
+ "id": "BREAKEVEN",
117
+ "desc": "un chiffre réaliste",
118
+ "weight": 5
119
+ }
120
+ ],
121
+ "threshold": {
122
+ "minScore": 5,
123
+ "minMustPass": 1
124
+ }
125
+ }
126
  }
127
  },
128
  {
129
+ "dayNumber": 6,
130
+ "title": "Investir vs Dépenser",
131
+ "lessonText": "Acheter une machine pour produire plus est un investissement. Acheter un nouveau téléphone perso est une dépense.",
132
+ "exercisePrompt": "Quel serait ton prochain gros investissement business ?",
133
  "exerciseType": "TEXT",
134
  "exerciseCriteria": {
135
+ "version": "1.0",
136
+ "type": "TEXT",
137
+ "goal": "Capacité d'investissement",
138
+ "success": {
139
+ "mustInclude": [
140
+ {
141
+ "id": "INVEST",
142
+ "desc": "un actif productif",
143
+ "weight": 5
144
+ }
145
+ ],
146
+ "threshold": {
147
+ "minScore": 5,
148
+ "minMustPass": 1
149
+ }
150
+ }
151
  }
152
  },
153
  {
154
+ "dayNumber": 7,
155
+ "title": "Le Petit Plan Financier",
156
+ "lessonText": "Bravo ! Tu maîtrises tes chiffres. Envoie-moi un audio pour résumer : Mon prix est de..., ma marge est de..., mon objectif est de vendre X par jour.",
157
+ "exercisePrompt": "Envoie ton résumé financier par audio :",
158
  "exerciseType": "AUDIO",
159
  "exerciseCriteria": {
160
+ "version": "1.0",
161
+ "type": "AUDIO",
162
+ "goal": "Synthèse financière Niveau 2",
163
+ "success": {
164
+ "mustInclude": [
165
+ {
166
+ "id": "PRICE",
167
+ "desc": "prix mentionné",
168
+ "weight": 3
169
+ },
170
+ {
171
+ "id": "MARGIN",
172
+ "desc": "marge mentionnée",
173
+ "weight": 3
174
+ },
175
+ {
176
+ "id": "VOLUME",
177
+ "desc": "objectif de vente",
178
+ "weight": 4
179
+ }
180
+ ],
181
+ "threshold": {
182
+ "minScore": 6,
183
+ "minMustPass": 2
184
+ }
185
+ },
186
+ "evaluation": {
187
+ "tone": "coach_enthusiastic",
188
+ "format": "3_lines"
189
+ }
190
  },
191
  "badges": [
192
  "B_MODULE_2_OK"
packages/database/content/tracks/T2-WO.json CHANGED
@@ -2,122 +2,191 @@
2
  "trackId": "T2-WO",
3
  "title": "Structurer Son Modèle Économique (WOLOF)",
4
  "language": "WOLOF",
5
- "description": "Apprenez à gérer vos coûts, vos prix et votre rentabilité pour un business durable.",
6
  "days": [
7
  {
8
  "dayNumber": 1,
9
- "title": "Sa Xaalis",
10
- "lessonText": "Dalal jàmm ci Niveau 2 bi ! Tey, danuy seet fan la xaalis bi di jóge. Mën na nekk ne du benn mbir rek ngay jaay. Naka la sa kiliifa di la faye ? Ci saa si ? Benn par benn ? Walla abonnement ?",
11
- "exercisePrompt": "Fan la sa ñaari source de revenus yu gën a mag di jóge tey ?",
12
  "exerciseType": "TEXT",
13
  "exerciseCriteria": {
14
- "evaluationGuide": "L'élève doit identifier ses sources de revenus (ex: jaay mburu, livraison)."
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
15
  }
16
  },
17
  {
18
  "dayNumber": 2,
19
- "title": "Dépense yu sax",
20
- "lessonText": "Saa su nekk, am na dépense yu sax (loyer, crédit, frais téléphone), waxuma la sax ndax de nga jaay walla déet.",
21
- "exercisePrompt": "Bindal ma ñaari dépense yu sax yu ngay faye WÉER WU NEKK :",
22
- "exerciseType": "TEXT",
23
- "exerciseCriteria": {
24
- "evaluationGuide": "Vérifie que ce sont des charges fixes (loyer, factures régulières)."
25
- }
26
- },
27
- {
28
- "dayNumber": 3,
29
- "title": "Dépense yu ko boole",
30
- "lessonText": "Su nga jaayee lu bari, sa dépense di yokku. Misaal mooy farine bi walla essence bi.",
31
- "exercisePrompt": "Lan mooy dépense bi di yokku su sa jaay yokkukee ?",
32
- "exerciseType": "TEXT",
33
- "exerciseCriteria": {
34
- "evaluationGuide": "L'élève doit citer un coût variable lié à la production ou au service."
35
- }
36
- },
37
- {
38
- "dayNumber": 4,
39
- "title": "Marge bi",
40
- "lessonText": "Marge bi mooy li ngay am ci sa poos su nga fayee sa produit. Su nga jaayee 100, te produit bi jural la 60, sa marge mooy 40.",
41
- "exercisePrompt": "Tànnal sa produit bi gën a rëy. Ñaata la koy jaayee te ñaata la la jar ?",
42
- "exerciseType": "TEXT",
43
- "exerciseCriteria": {
44
- "evaluationGuide": "L'élève doit donner le prix de vente et le coût de revient pour évaluer la marge."
45
- }
46
- },
47
- {
48
- "dayNumber": 5,
49
- "title": "Prix ak Solo",
50
- "lessonText": "Prix bi mooy li ñuy faye, waaye Solo bi mooy li ñuy am. Lu tax kiliifa bi bëgg a faye lu yéeg ci sa mbir ?",
51
- "exercisePrompt": "Lan mooy 'Solo' (Valeur) bi nga koy jaay ?",
52
  "exerciseType": "BUTTON",
53
  "buttonsJson": [
54
  {
55
- "id": "qualite",
56
- "title": "Dafa baax lool / Qualité"
57
- },
58
- {
59
- "id": "temps",
60
- "title": "Dafa fije / Gain de temps"
61
  },
62
  {
63
- "id": "service",
64
- "title": "Kooluté / Service"
65
  }
66
  ]
67
  },
68
  {
69
- "dayNumber": 6,
70
- "title": "Natt Prix bi",
71
- "lessonText": "De nga mas a yokk sa prix ? Ñu bari dañuy ragal, waaye su produit bi baaxee, kiliifa yi dinañu ko nangu.",
72
- "exercisePrompt": "Su nga yokkoon sa prix 10% suba, lan mooy xéw selon yaw ?",
73
  "exerciseType": "TEXT",
74
  "exerciseCriteria": {
75
- "evaluationGuide": "L'élève doit réfléchir à l'élasticité de son prix et à la réaction de ses clients."
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
76
  }
77
  },
78
  {
79
- "dayNumber": 7,
80
- "title": "Offre 'Pack'",
81
- "lessonText": "Bul jaay benn mbir rek. Jaay pexe mu mat. Misaal : Bul jaay café rek, jaay 'Petit Déjeuner' mu mat.",
82
- "exercisePrompt": "Naka nga mën a boolee ñaari produit ngir def ko benn 'Pack' ?",
83
  "exerciseType": "TEXT",
84
  "exerciseCriteria": {
85
- "evaluationGuide": "L'élève doit proposer une offre groupée (bundle)."
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
86
  }
87
  },
88
  {
89
- "dayNumber": 8,
90
- "title": "Kiliifa bu rentabel",
91
- "lessonText": "Am na kiliifa yoony lu ñuy jural bariwul te dañuy sonnale. Yan kiliifa ñoo la gën a jural marge ?",
92
- "exercisePrompt": "Leeral ma sa kiliifa 'idéal' bi di faye te du la sonnale.",
93
  "exerciseType": "TEXT",
94
  "exerciseCriteria": {
95
- "evaluationGuide": "L'élève doit identifier ses meilleurs clients."
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
96
  }
97
  },
98
  {
99
- "dayNumber": 9,
100
- "title": "Point Mort",
101
- "lessonText": "Xalaatal wéer bi di ñëw. Ñaata nga war a jaay ngir faye sa dépense yu sax yépp ?",
102
- "exercisePrompt": "Wax ma ñata nga war a jaay ci wéer ngir bénéfice tàmbalee ñëw ?",
103
  "exerciseType": "TEXT",
104
  "exerciseCriteria": {
105
- "evaluationGuide": "L'élève doit estimer son seuil de rentabilité."
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
106
  }
107
  },
108
  {
109
- "dayNumber": 10,
110
- "title": "Plan bi",
111
- "lessonText": "Félicitations ! Nga pare Niveau 2 bi. Léegi tënkal ma : Ñaata nga bëgg a am (CA), Ñaata nga war a dépenser, ak Ñaata ngay denc (Bénéfice).",
112
- "exercisePrompt": "Yónnee ma audio ngir tënk sa plan : Ñaata nga bëgg a am te naka ?",
113
  "exerciseType": "AUDIO",
114
  "exerciseCriteria": {
115
- "mustMention": [
116
- "CA",
117
- "DEPENSE",
118
- "BENEFICE"
119
- ],
120
- "evaluationGuide": "L'élève doit résumer son modèle économique de manière cohérente."
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
121
  },
122
  "badges": [
123
  "B_MODULE_2_OK"
 
2
  "trackId": "T2-WO",
3
  "title": "Structurer Son Modèle Économique (WOLOF)",
4
  "language": "WOLOF",
5
+ "description": "Apprenez à calculer votre rentabilité et à gérer votre argent comme un pro.",
6
  "days": [
7
  {
8
  "dayNumber": 1,
9
+ "title": "Fan la xaalis di jóge ?",
10
+ "lessonText": "Dalal jàmm ci Niveau 2 ! Tey danuy lim fan la sa xaalis di dugge. Ndax dangay jaay produit, walla service, walla ñari yépp ?",
11
+ "exercisePrompt": "Fan la sa xaalis gën a dugge (lim ma ñaari mbir) ?",
12
  "exerciseType": "TEXT",
13
  "exerciseCriteria": {
14
+ "version": "1.0",
15
+ "type": "TEXT",
16
+ "goal": "Identifier les flux de revenus (WOLOF)",
17
+ "success": {
18
+ "mustInclude": [
19
+ {
20
+ "id": "REVENUE",
21
+ "desc": "li koy uutal xaalis bu leer",
22
+ "weight": 5
23
+ }
24
+ ],
25
+ "threshold": {
26
+ "minScore": 5,
27
+ "minMustPass": 1
28
+ }
29
+ },
30
+ "evaluation": {
31
+ "tone": "coach_enthusiastic",
32
+ "format": "3_lines"
33
+ }
34
  }
35
  },
36
  {
37
  "dayNumber": 2,
38
+ "title": "Jaay benn yoon walla yu bari",
39
+ "lessonText": "Dafa gën a yomb nga jaayaat kiliifa bu la xam ba pare. Ndax sa kiliifa dafay jëndaat bis bu ne walla dafay jënd benn yoon rekk ?",
40
+ "exercisePrompt": "Sa kiliifa dafay dellu si léeg léeg ?",
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
41
  "exerciseType": "BUTTON",
42
  "buttonsJson": [
43
  {
44
+ "id": "souvent",
45
+ "title": "Waaw, saa su ne"
 
 
 
 
46
  },
47
  {
48
+ "id": "rarement",
49
+ "title": "Déet, benn yoon rekk"
50
  }
51
  ]
52
  },
53
  {
54
+ "dayNumber": 3,
55
+ "title": "Prix bu dëggu",
56
+ "lessonText": "Sa prix = Li nga faye + Sa njariñ (marge). Su nga fatte li nga faye ci transport walla courant, dangay liggeeyal keneen.",
57
+ "exercisePrompt": "Naka nga faye sa prix tey ?",
58
  "exerciseType": "TEXT",
59
  "exerciseCriteria": {
60
+ "version": "1.0",
61
+ "type": "TEXT",
62
+ "goal": "Comprendre la fixation du prix (WOLOF)",
63
+ "success": {
64
+ "mustInclude": [
65
+ {
66
+ "id": "METHOD",
67
+ "desc": "naka la kalkulé prix bi",
68
+ "weight": 5
69
+ }
70
+ ],
71
+ "threshold": {
72
+ "minScore": 5,
73
+ "minMustPass": 1
74
+ }
75
+ }
76
  }
77
  },
78
  {
79
+ "dayNumber": 4,
80
+ "title": "Sa Marge",
81
+ "lessonText": "Marge bi, mooy li la koy des ci sa poos su nga faye faye yi ba pare. Su amul marge, sa business du wéy.",
82
+ "exercisePrompt": "Su nga jaayé 1000 FCFA, ñata moo la koy des su nga faye marchandise bi ?",
83
  "exerciseType": "TEXT",
84
  "exerciseCriteria": {
85
+ "version": "1.0",
86
+ "type": "TEXT",
87
+ "goal": "Calcul de marge brute (WOLOF)",
88
+ "success": {
89
+ "mustInclude": [
90
+ {
91
+ "id": "MARGIN",
92
+ "desc": "montant walla pourcentage bu leer",
93
+ "weight": 5
94
+ }
95
+ ],
96
+ "threshold": {
97
+ "minScore": 5,
98
+ "minMustPass": 1
99
+ }
100
+ }
101
  }
102
  },
103
  {
104
+ "dayNumber": 5,
105
+ "title": "Point Mort",
106
+ "lessonText": "Ñata produit nga war a jaay bis bu ne ngir dakkal sa looyer ak sa faye yi ?",
107
+ "exercisePrompt": "Bindal ma benn chiffre : Ñata nga war a jaay minimum bis bu ne ?",
108
  "exerciseType": "TEXT",
109
  "exerciseCriteria": {
110
+ "version": "1.0",
111
+ "type": "TEXT",
112
+ "goal": "Seuil de rentabilité (WOLOF)",
113
+ "success": {
114
+ "mustInclude": [
115
+ {
116
+ "id": "BREAKEVEN",
117
+ "desc": "chiffre bu leer",
118
+ "weight": 5
119
+ }
120
+ ],
121
+ "threshold": {
122
+ "minScore": 5,
123
+ "minMustPass": 1
124
+ }
125
+ }
126
  }
127
  },
128
  {
129
+ "dayNumber": 6,
130
+ "title": "Investir walla Faye",
131
+ "lessonText": "Jënd machine ngir liggeey mu gën a gaaw mooy investir. Jënd portable bu bees ngir sa bopp, loolu faye la.",
132
+ "exercisePrompt": "Lan mooy sa prochain gros investissement ci sa business ?",
133
  "exerciseType": "TEXT",
134
  "exerciseCriteria": {
135
+ "version": "1.0",
136
+ "type": "TEXT",
137
+ "goal": "Capacité d'investissement (WOLOF)",
138
+ "success": {
139
+ "mustInclude": [
140
+ {
141
+ "id": "INVEST",
142
+ "desc": "mbir mur koy gën a uutal xaalis",
143
+ "weight": 5
144
+ }
145
+ ],
146
+ "threshold": {
147
+ "minScore": 5,
148
+ "minMustPass": 1
149
+ }
150
+ }
151
  }
152
  },
153
  {
154
+ "dayNumber": 7,
155
+ "title": "Sa Plan Financier",
156
+ "lessonText": "Baax na ! Xam nga sa chiffre yi. Yónnee ma audio ngir résumer : Sama prix mu ngi tollu ci..., sama marge mu ngi tollu ci..., dama bëgg a jaay X bis bu ne.",
157
+ "exercisePrompt": "Yónnee ma sa résumé financier ci audio :",
158
  "exerciseType": "AUDIO",
159
  "exerciseCriteria": {
160
+ "version": "1.0",
161
+ "type": "AUDIO",
162
+ "goal": "Synthèse financière Niveau 2 (WOLOF)",
163
+ "success": {
164
+ "mustInclude": [
165
+ {
166
+ "id": "PRICE",
167
+ "desc": "prix bi",
168
+ "weight": 3
169
+ },
170
+ {
171
+ "id": "MARGIN",
172
+ "desc": "marge bi",
173
+ "weight": 3
174
+ },
175
+ {
176
+ "id": "VOLUME",
177
+ "desc": "ñaata lay jaay",
178
+ "weight": 4
179
+ }
180
+ ],
181
+ "threshold": {
182
+ "minScore": 6,
183
+ "minMustPass": 2
184
+ }
185
+ },
186
+ "evaluation": {
187
+ "tone": "coach_enthusiastic",
188
+ "format": "3_lines"
189
+ }
190
  },
191
  "badges": [
192
  "B_MODULE_2_OK"
packages/database/content/tracks/T3-FR.json CHANGED
@@ -7,86 +7,248 @@
7
  {
8
  "dayNumber": 1,
9
  "title": "Pourquoi les gens achètent",
10
- "lessonText": "Bienvenue au Niveau 3 ! On va parler vente. Les gens n'achètent pas par logique, mais par émotion. Ils achètent pour résoudre une peur ou pour gagner un plaisir.",
11
- "exercisePrompt": "Écoute ton client aujourd'hui. Quelle émotion exprime-t-il le plus ?",
12
  "exerciseType": "TEXT",
13
  "exerciseCriteria": {
14
- "evaluationGuide": "L'élève doit identifier une émotion (ex: peur de manquer, fierté, soulagement)."
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
15
  }
16
  },
17
  {
18
  "dayNumber": 2,
19
  "title": "L'Argumentaire Simple",
20
- "lessonText": "Ton argumentaire doit être court. 'Je fais X pour que tu obtiennes Y'. Concentre-toi sur le bénéfice final.",
21
  "exercisePrompt": "Donne ton meilleur argument de vente en une phrase :",
22
  "exerciseType": "TEXT",
23
  "exerciseCriteria": {
24
- "evaluationGuide": "La phrase doit être orientée bénéfice et non caractéristique technique."
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
25
  }
26
  },
27
  {
28
  "dayNumber": 3,
29
  "title": "Les Objections",
30
- "lessonText": "'C'est trop cher' ou 'Je vais réfléchir'. Une objection n'est pas un non, c'est une demande d'information supplémentaire.",
31
  "exercisePrompt": "Quelle est l'objection que tu entends le plus souvent ?",
32
  "exerciseType": "TEXT",
33
  "exerciseCriteria": {
34
- "evaluationGuide": "L'élève doit ramener une objection réelle du terrain."
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
35
  }
36
  },
37
  {
38
  "dayNumber": 4,
39
  "title": "Storytelling Local",
40
- "lessonText": "Raconte l'histoire d'un client satisfait. Les gens se reconnaissent dans les histoires des autres entrepreneurs du quartier.",
41
- "exercisePrompt": "Raconte en 2 phrases comment tu as aidé un client précis récemment :",
42
  "exerciseType": "TEXT",
43
  "exerciseCriteria": {
44
- "evaluationGuide": "Vérifie la structure : Problème -> Solution -> Résultat heureux."
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
45
  }
46
  },
47
  {
48
  "dayNumber": 5,
49
  "title": "Script WhatsApp",
50
- "lessonText": "Sur WhatsApp, sois rapide et direct. Utilise des emojis pour être chaleureux. Propose toujours une étape suivante (appel ou visite).",
51
- "exercisePrompt": "Écris le premier message que tu envoies à un nouveau contact sur WhatsApp :",
52
  "exerciseType": "TEXT",
53
  "exerciseCriteria": {
54
- "evaluationGuide": "Le message doit être poli, clair et inclure un 'appel à l'action'."
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
55
  }
56
  },
57
  {
58
  "dayNumber": 6,
59
  "title": "Le Pitch 30s",
60
- "lessonText": "Tu as 30 secondes pour convaincre dans un taxi ou au marché. Va à l'essentiel.",
61
  "exercisePrompt": "Envoie un audio de ton pitch de 30 secondes concentré sur la vente :",
62
  "exerciseType": "AUDIO",
63
  "exerciseCriteria": {
64
- "evaluationGuide": "Le pitch doit être percutant et donner envie d'en savoir plus."
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
65
  }
66
  },
67
  {
68
  "dayNumber": 7,
69
  "title": "Le Pitch 2min",
70
- "lessonText": "Cette fois, tu as le temps. Explique ton parcours, ton produit et pourquoi tu es unique.",
71
  "exercisePrompt": "Envoie un audio de 2 minutes pour présenter ton business en profondeur :",
72
  "exerciseType": "AUDIO",
73
  "exerciseCriteria": {
74
- "evaluationGuide": "Le pitch doit être structuré et passionné."
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
75
  }
76
  },
77
  {
78
  "dayNumber": 8,
79
  "title": "Simulation Réelle",
80
- "lessonText": "C'est l'heure du test final. Imagine que je suis un client difficile qui dit 'Ton concurrent est moins cher'.",
81
- "exercisePrompt": "Réponds-moi par audio pour me convaincre d'acheter chez toi :",
82
  "exerciseType": "AUDIO",
83
  "exerciseCriteria": {
84
- "mustMention": [
85
- "QUALITÉ",
86
- "SERVICE",
87
- "CONFIANCE"
88
- ],
89
- "evaluationGuide": "L'élève doit défendre sa valeur sans dénigrer le concurrent."
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
90
  },
91
  "badges": [
92
  "B_MODULE_3_OK"
 
7
  {
8
  "dayNumber": 1,
9
  "title": "Pourquoi les gens achètent",
10
+ "lessonText": "Bienvenue au Niveau 3 ! Les gens n'achètent pas par logique, mais par émotion. Ils achètent pour résoudre une peur ou gagner un plaisir.",
11
+ "exercisePrompt": "Quelle émotion principale ton produit apporte-t-il à ton client ?",
12
  "exerciseType": "TEXT",
13
  "exerciseCriteria": {
14
+ "version": "1.0",
15
+ "type": "TEXT",
16
+ "goal": "Identifier l'émotion d'achat",
17
+ "success": {
18
+ "mustInclude": [
19
+ {
20
+ "id": "EMOTION",
21
+ "desc": "fierté, sécurité, plaisir ou gain mentionné",
22
+ "weight": 5
23
+ }
24
+ ],
25
+ "threshold": {
26
+ "minScore": 5,
27
+ "minMustPass": 1
28
+ }
29
+ },
30
+ "evaluation": {
31
+ "tone": "coach_enthusiastic",
32
+ "format": "3_lines"
33
+ }
34
  }
35
  },
36
  {
37
  "dayNumber": 2,
38
  "title": "L'Argumentaire Simple",
39
+ "lessonText": "Ton argumentaire doit être court : 'Je fais X pour que tu obtienne Y'. Concentre-toi sur le résultat final.",
40
  "exercisePrompt": "Donne ton meilleur argument de vente en une phrase :",
41
  "exerciseType": "TEXT",
42
  "exerciseCriteria": {
43
+ "version": "1.0",
44
+ "type": "TEXT",
45
+ "goal": "Rédaction d'un argumentaire orienté bénéfice",
46
+ "success": {
47
+ "mustInclude": [
48
+ {
49
+ "id": "BENEFIT",
50
+ "desc": "un bénéfice concret pour le client",
51
+ "weight": 5
52
+ }
53
+ ],
54
+ "threshold": {
55
+ "minScore": 5,
56
+ "minMustPass": 1
57
+ }
58
+ }
59
  }
60
  },
61
  {
62
  "dayNumber": 3,
63
  "title": "Les Objections",
64
+ "lessonText": "'C'est trop cher' n'est pas un non. C'est une demande de preuve. Montre la valeur avant d'expliquer le prix.",
65
  "exercisePrompt": "Quelle est l'objection que tu entends le plus souvent ?",
66
  "exerciseType": "TEXT",
67
  "exerciseCriteria": {
68
+ "version": "1.0",
69
+ "type": "TEXT",
70
+ "goal": "Identifier les freins à la vente",
71
+ "success": {
72
+ "mustInclude": [
73
+ {
74
+ "id": "OBJECTION",
75
+ "desc": "un frein réel (prix, temps, confiance)",
76
+ "weight": 5
77
+ }
78
+ ],
79
+ "threshold": {
80
+ "minScore": 5,
81
+ "minMustPass": 1
82
+ }
83
+ }
84
  }
85
  },
86
  {
87
  "dayNumber": 4,
88
  "title": "Storytelling Local",
89
+ "lessonText": "Raconte l'histoire d'un client satisfait. 'Le voisin de Rufisque a pris mon produit et maintenant il gagne 2h par jour'.",
90
+ "exercisePrompt": "Raconte en 2 phrases comment tu as aidé un vrai client récemment :",
91
  "exerciseType": "TEXT",
92
  "exerciseCriteria": {
93
+ "version": "1.0",
94
+ "type": "TEXT",
95
+ "goal": "Preuve sociale par le récit",
96
+ "success": {
97
+ "mustInclude": [
98
+ {
99
+ "id": "STORY",
100
+ "desc": "un exemple concret de client aidé",
101
+ "weight": 5
102
+ }
103
+ ],
104
+ "threshold": {
105
+ "minScore": 5,
106
+ "minMustPass": 1
107
+ }
108
+ }
109
  }
110
  },
111
  {
112
  "dayNumber": 5,
113
  "title": "Script WhatsApp",
114
+ "lessonText": "Sur WhatsApp, sois rapide. Utilise des emojis pour être chaleureux. Propose toujours une étape suivante (appel ou visite).",
115
+ "exercisePrompt": "Écris le premier message que tu envoies à un nouveau contact WhatsApp :",
116
  "exerciseType": "TEXT",
117
  "exerciseCriteria": {
118
+ "version": "1.0",
119
+ "type": "TEXT",
120
+ "goal": "Script de premier contact WhatsApp",
121
+ "success": {
122
+ "mustInclude": [
123
+ {
124
+ "id": "POLITE",
125
+ "desc": "salutation polie",
126
+ "weight": 2
127
+ },
128
+ {
129
+ "id": "CLEAR",
130
+ "desc": "raison du message",
131
+ "weight": 3
132
+ },
133
+ {
134
+ "id": "CTA",
135
+ "desc": "appel à l'action (clique, appelle, passe voir)",
136
+ "weight": 3
137
+ }
138
+ ],
139
+ "threshold": {
140
+ "minScore": 5,
141
+ "minMustPass": 2
142
+ }
143
+ }
144
  }
145
  },
146
  {
147
  "dayNumber": 6,
148
  "title": "Le Pitch 30s",
149
+ "lessonText": "Imagine que tu croises ton client idéal dans le taxi. Tu as 30 secondes pour le convaincre.",
150
  "exercisePrompt": "Envoie un audio de ton pitch de 30 secondes concentré sur la vente :",
151
  "exerciseType": "AUDIO",
152
  "exerciseCriteria": {
153
+ "version": "1.0",
154
+ "type": "AUDIO",
155
+ "goal": "Pitch de vente rapide",
156
+ "success": {
157
+ "mustInclude": [
158
+ {
159
+ "id": "HOOK",
160
+ "desc": "accroche captivante",
161
+ "weight": 3
162
+ },
163
+ {
164
+ "id": "VALUE",
165
+ "desc": "valeur apportée",
166
+ "weight": 4
167
+ },
168
+ {
169
+ "id": "CTA",
170
+ "desc": "invitation à l'action",
171
+ "weight": 3
172
+ }
173
+ ],
174
+ "threshold": {
175
+ "minScore": 7,
176
+ "minMustPass": 2
177
+ }
178
+ },
179
+ "evaluation": {
180
+ "tone": "coach_enthusiastic",
181
+ "format": "3_lines"
182
+ }
183
  }
184
  },
185
  {
186
  "dayNumber": 7,
187
  "title": "Le Pitch 2min",
188
+ "lessonText": "Léegi am nga jamono. Explique ton parcours, ton produit et pourquoi tu es le meilleur.",
189
  "exercisePrompt": "Envoie un audio de 2 minutes pour présenter ton business en profondeur :",
190
  "exerciseType": "AUDIO",
191
  "exerciseCriteria": {
192
+ "version": "1.0",
193
+ "type": "AUDIO",
194
+ "goal": "Pitch de présentation complet",
195
+ "success": {
196
+ "mustInclude": [
197
+ {
198
+ "id": "EXPERTISE",
199
+ "desc": "pourquoi toi (expérience)",
200
+ "weight": 3
201
+ },
202
+ {
203
+ "id": "PROOF",
204
+ "desc": "résultats obtenus",
205
+ "weight": 4
206
+ },
207
+ {
208
+ "id": "FUTURE",
209
+ "desc": "vision ou demande",
210
+ "weight": 3
211
+ }
212
+ ],
213
+ "threshold": {
214
+ "minScore": 7,
215
+ "minMustPass": 2
216
+ }
217
+ }
218
  }
219
  },
220
  {
221
  "dayNumber": 8,
222
  "title": "Simulation Réelle",
223
+ "lessonText": "Dernier test : Je suis un client difficile qui dit 'Ton concurrent est moins cher'. Convaincs-moi !",
224
+ "exercisePrompt": "Réponds-moi par audio pour défendre ta valeur :",
225
  "exerciseType": "AUDIO",
226
  "exerciseCriteria": {
227
+ "version": "1.0",
228
+ "type": "AUDIO",
229
+ "goal": "Gestion d'objection finale",
230
+ "success": {
231
+ "mustInclude": [
232
+ {
233
+ "id": "VALUE",
234
+ "desc": "insister sur la qualité/service",
235
+ "weight": 5
236
+ },
237
+ {
238
+ "id": "TRUST",
239
+ "desc": "rassurer le client",
240
+ "weight": 5
241
+ }
242
+ ],
243
+ "threshold": {
244
+ "minScore": 5,
245
+ "minMustPass": 1
246
+ }
247
+ },
248
+ "evaluation": {
249
+ "tone": "coach_enthusiastic",
250
+ "format": "3_lines"
251
+ }
252
  },
253
  "badges": [
254
  "B_MODULE_3_OK"
packages/database/content/tracks/T3-WO.json CHANGED
@@ -7,61 +7,179 @@
7
  {
8
  "dayNumber": 1,
9
  "title": "Lu tax nit di jënd",
10
- "lessonText": "Dalal jàmm ci Niveau 3 bi ! Danuy wax ci mbirum jaay. Nit ñi duñuy jënd ndax logique, dañuy jënd ndax li ñu yëg (émotion). Dañuy jënd ngir dakkal tiitaange walla ngir am mbégte.",
11
- "exercisePrompt": "Déggal sa kiliifa tey. Lan mooy yëg-yëg (émotion) bi mu gën a wone ?",
12
  "exerciseType": "TEXT",
13
  "exerciseCriteria": {
14
- "evaluationGuide": "L'élève doit identifier une émotion (ex: tiitaange, mbégte, fije)."
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
15
  }
16
  },
17
  {
18
  "dayNumber": 2,
19
  "title": "Wax ju gàtt te leer",
20
- "lessonText": "Sa waxu jaay war na gàtt. 'Damay def lii ngir nga am lée'. Waxal ci njariñ bi kiliifa bi di am ci sa produit.",
21
  "exercisePrompt": "Bindal ma sa meilleur argument de vente ci benn phrase :",
22
  "exerciseType": "TEXT",
23
  "exerciseCriteria": {
24
- "evaluationGuide": "La phrase doit mettre en avant le bénéfice (njariñ) pour le client."
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
25
  }
26
  },
27
  {
28
  "dayNumber": 3,
29
  "title": "Su ñu waxee 'Dafa jar'",
30
- "lessonText": "'Dafa jar' walla 'Dinaa ko xalaat'. Loolu du 'Dét', waaye dafa bëgg gën a xam sa produit.",
31
  "exercisePrompt": "Lan mooy wax ji ngay gën a faral di dégg ci kiliifa yi (objections) ?",
32
  "exerciseType": "TEXT",
33
  "exerciseCriteria": {
34
- "evaluationGuide": "L'élève doit rapporter une objection réelle (ex: prix, confiance)."
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
35
  }
36
  },
37
  {
38
  "dayNumber": 4,
39
  "title": "Nettooli pexe",
40
- "lessonText": "Nettooli pexe bi benn kiliifa amoon te nga jàppalé ko. Nit ñi dañuy gën a nangu su ñu déggee pexe ñeneen ñi.",
41
- "exercisePrompt": "Nettoolil ma ci ñaari phrase naka nga jàppalee benn kiliifa légui rek :",
42
  "exerciseType": "TEXT",
43
  "exerciseCriteria": {
44
- "evaluationGuide": "Vérifie la structure : Problème -> Solution -> Résultat."
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
45
  }
46
  },
47
  {
48
  "dayNumber": 5,
49
  "title": "Script WhatsApp",
50
- "lessonText": "Ci WhatsApp, war nga gaaw te leer. Jëfandiku emojis ngir neexal waxtaan bi. Laaj ko kiliifa bi kañ la mën a ñëw walla woo la.",
51
  "exercisePrompt": "Bindal ma premier message bi ngay yónnee kiliifa bu bees ci WhatsApp :",
52
  "exerciseType": "TEXT",
53
  "exerciseCriteria": {
54
- "evaluationGuide": "Le message doit être poli, clair et inviter à une action."
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
55
  }
56
  },
57
  {
58
  "dayNumber": 6,
59
  "title": "Pitch 30s",
60
- "lessonText": "Am nga 30 seconde ngir convaincre nit ci taxi walla ci marché bi. Waxal li gën a am solo rek.",
61
  "exercisePrompt": "Yónnee ma audio sa pitch bu gàtt ci 30 seconde ngir jaay sa mbir :",
62
  "exerciseType": "AUDIO",
63
  "exerciseCriteria": {
64
- "evaluationGuide": "Le pitch doit être percutant et rapide."
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
65
  }
66
  },
67
  {
@@ -71,22 +189,66 @@
71
  "exercisePrompt": "Yónnee ma audio bu mat 2 minute ngir leeral sa business bu baax :",
72
  "exerciseType": "AUDIO",
73
  "exerciseCriteria": {
74
- "evaluationGuide": "Le pitch doit être complet et convaincant."
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
75
  }
76
  },
77
  {
78
  "dayNumber": 8,
79
  "title": "Natt bi",
80
- "lessonText": "Léegi natt bi tollu na. Naka ngay tontu kiliifa bu la wax 'Sa concurrent dafa yomb' ?",
81
  "exercisePrompt": "Yónnee ma audio ngir convaincre ma ma jënd ci yaw :",
82
  "exerciseType": "AUDIO",
83
  "exerciseCriteria": {
84
- "mustMention": [
85
- "BAAX",
86
- "KOOLUTÉ",
87
- "SERVICE"
88
- ],
89
- "evaluationGuide": "L'élève doit défendre sa valeur sans parler mal de la concurrence."
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
90
  },
91
  "badges": [
92
  "B_MODULE_3_OK"
 
7
  {
8
  "dayNumber": 1,
9
  "title": "Lu tax nit di jënd",
10
+ "lessonText": "Dalal jàmm ci Niveau 3 bi ! Nit ñi duñuy jënd ndax logique, dañuy jënd ndax li ñu yëg (émotion). Dañuy jënd ngir dakkal tiitaange walla ngir am mbégte.",
11
+ "exercisePrompt": "Yan yëg-yëg la sa produit di uutal sa kiliifa ?",
12
  "exerciseType": "TEXT",
13
  "exerciseCriteria": {
14
+ "version": "1.0",
15
+ "type": "TEXT",
16
+ "goal": "Identifier l'émotion d'achat (WOLOF)",
17
+ "success": {
18
+ "mustInclude": [
19
+ {
20
+ "id": "EMOTION",
21
+ "desc": "tiitaange, kooluté, mbégte walla plaisir",
22
+ "weight": 5
23
+ }
24
+ ],
25
+ "threshold": {
26
+ "minScore": 5,
27
+ "minMustPass": 1
28
+ }
29
+ },
30
+ "evaluation": {
31
+ "tone": "coach_enthusiastic",
32
+ "format": "3_lines"
33
+ }
34
  }
35
  },
36
  {
37
  "dayNumber": 2,
38
  "title": "Wax ju gàtt te leer",
39
+ "lessonText": "Sa waxu jaay war na gàtt : 'Damay def lii ngir nga am lée'. Waxal ci njariñ bi kiliifa bi di am.",
40
  "exercisePrompt": "Bindal ma sa meilleur argument de vente ci benn phrase :",
41
  "exerciseType": "TEXT",
42
  "exerciseCriteria": {
43
+ "version": "1.0",
44
+ "type": "TEXT",
45
+ "goal": "Rédaction d'un argumentaire orienté bénéfice (WOLOF)",
46
+ "success": {
47
+ "mustInclude": [
48
+ {
49
+ "id": "BENEFIT",
50
+ "desc": "njariñ bu leer",
51
+ "weight": 5
52
+ }
53
+ ],
54
+ "threshold": {
55
+ "minScore": 5,
56
+ "minMustPass": 1
57
+ }
58
+ }
59
  }
60
  },
61
  {
62
  "dayNumber": 3,
63
  "title": "Su ñu waxee 'Dafa jar'",
64
+ "lessonText": "'Dafa jar' du 'Dét'. Dafa bëgg gën a xam sa produit. Woneel njariñ li lata nga koy wax prix bi.",
65
  "exercisePrompt": "Lan mooy wax ji ngay gën a faral di dégg ci kiliifa yi (objections) ?",
66
  "exerciseType": "TEXT",
67
  "exerciseCriteria": {
68
+ "version": "1.0",
69
+ "type": "TEXT",
70
+ "goal": "Identifier les freins à la vente (WOLOF)",
71
+ "success": {
72
+ "mustInclude": [
73
+ {
74
+ "id": "OBJECTION",
75
+ "desc": "jafe-jafe (prix, jamono, kooluté)",
76
+ "weight": 5
77
+ }
78
+ ],
79
+ "threshold": {
80
+ "minScore": 5,
81
+ "minMustPass": 1
82
+ }
83
+ }
84
  }
85
  },
86
  {
87
  "dayNumber": 4,
88
  "title": "Nettooli pexe",
89
+ "lessonText": "Nettooli pexe bi benn kiliifa amoon. 'Benn dëkkëndo ci Rufisque da doon jënd sama produit tey mu ngi nélaw bu neex'.",
90
+ "exercisePrompt": "Nettoolil ma naka nga jàppalee benn kiliifa légui rek :",
91
  "exerciseType": "TEXT",
92
  "exerciseCriteria": {
93
+ "version": "1.0",
94
+ "type": "TEXT",
95
+ "goal": "Preuve sociale par le récit (WOLOF)",
96
+ "success": {
97
+ "mustInclude": [
98
+ {
99
+ "id": "STORY",
100
+ "desc": "exemple bu leer ci kiliifa bu contane",
101
+ "weight": 5
102
+ }
103
+ ],
104
+ "threshold": {
105
+ "minScore": 5,
106
+ "minMustPass": 1
107
+ }
108
+ }
109
  }
110
  },
111
  {
112
  "dayNumber": 5,
113
  "title": "Script WhatsApp",
114
+ "lessonText": "Ci WhatsApp, war nga gaaw. Jëfandiku emojis ngir neexal waxtaan bi. Laaj ko kiliifa bi kañ la mën a ñëw walla woo la.",
115
  "exercisePrompt": "Bindal ma premier message bi ngay yónnee kiliifa bu bees ci WhatsApp :",
116
  "exerciseType": "TEXT",
117
  "exerciseCriteria": {
118
+ "version": "1.0",
119
+ "type": "TEXT",
120
+ "goal": "Script de premier contact WhatsApp (WOLOF)",
121
+ "success": {
122
+ "mustInclude": [
123
+ {
124
+ "id": "POLITE",
125
+ "desc": "nuyu bu neex",
126
+ "weight": 2
127
+ },
128
+ {
129
+ "id": "CLEAR",
130
+ "desc": "lu tax nga koy bind",
131
+ "weight": 3
132
+ },
133
+ {
134
+ "id": "CTA",
135
+ "desc": "appel à l'action (clique, woo ko, ñëwal)",
136
+ "weight": 3
137
+ }
138
+ ],
139
+ "threshold": {
140
+ "minScore": 5,
141
+ "minMustPass": 2
142
+ }
143
+ }
144
  }
145
  },
146
  {
147
  "dayNumber": 6,
148
  "title": "Pitch 30s",
149
+ "lessonText": "Naka ngay convaincre kiliifa bi ngay guiss ci taxi walla ci marché bi ci 30 seconde ?",
150
  "exercisePrompt": "Yónnee ma audio sa pitch bu gàtt ci 30 seconde ngir jaay sa mbir :",
151
  "exerciseType": "AUDIO",
152
  "exerciseCriteria": {
153
+ "version": "1.0",
154
+ "type": "AUDIO",
155
+ "goal": "Pitch de vente rapide (WOLOF)",
156
+ "success": {
157
+ "mustInclude": [
158
+ {
159
+ "id": "HOOK",
160
+ "desc": "wax bu neex",
161
+ "weight": 3
162
+ },
163
+ {
164
+ "id": "VALUE",
165
+ "desc": "njariñ li",
166
+ "weight": 4
167
+ },
168
+ {
169
+ "id": "CTA",
170
+ "desc": "baax na",
171
+ "weight": 3
172
+ }
173
+ ],
174
+ "threshold": {
175
+ "minScore": 7,
176
+ "minMustPass": 2
177
+ }
178
+ },
179
+ "evaluation": {
180
+ "tone": "coach_enthusiastic",
181
+ "format": "3_lines"
182
+ }
183
  }
184
  },
185
  {
 
189
  "exercisePrompt": "Yónnee ma audio bu mat 2 minute ngir leeral sa business bu baax :",
190
  "exerciseType": "AUDIO",
191
  "exerciseCriteria": {
192
+ "version": "1.0",
193
+ "type": "AUDIO",
194
+ "goal": "Pitch de présentation complet (WOLOF)",
195
+ "success": {
196
+ "mustInclude": [
197
+ {
198
+ "id": "EXPERTISE",
199
+ "desc": "lu tax yaw (expérience)",
200
+ "weight": 3
201
+ },
202
+ {
203
+ "id": "PROOF",
204
+ "desc": "résultats yi",
205
+ "weight": 4
206
+ },
207
+ {
208
+ "id": "FUTURE",
209
+ "desc": "vision walla demande",
210
+ "weight": 3
211
+ }
212
+ ],
213
+ "threshold": {
214
+ "minScore": 7,
215
+ "minMustPass": 2
216
+ }
217
+ }
218
  }
219
  },
220
  {
221
  "dayNumber": 8,
222
  "title": "Natt bi",
223
+ "lessonText": "Natt bi tollu na : Naka ngay tontu kiliifa bu la wax 'Sa concurrent dafa yomb' ?",
224
  "exercisePrompt": "Yónnee ma audio ngir convaincre ma ma jënd ci yaw :",
225
  "exerciseType": "AUDIO",
226
  "exerciseCriteria": {
227
+ "version": "1.0",
228
+ "type": "AUDIO",
229
+ "goal": "Gestion d'objection finale (WOLOF)",
230
+ "success": {
231
+ "mustInclude": [
232
+ {
233
+ "id": "VALUE",
234
+ "desc": "defendre valeur bi (baax, dëgër)",
235
+ "weight": 5
236
+ },
237
+ {
238
+ "id": "TRUST",
239
+ "desc": "kooluté",
240
+ "weight": 5
241
+ }
242
+ ],
243
+ "threshold": {
244
+ "minScore": 5,
245
+ "minMustPass": 1
246
+ }
247
+ },
248
+ "evaluation": {
249
+ "tone": "coach_enthusiastic",
250
+ "format": "3_lines"
251
+ }
252
  },
253
  "badges": [
254
  "B_MODULE_3_OK"
packages/database/content/tracks/T4-FR.json CHANGED
@@ -7,48 +7,82 @@
7
  {
8
  "dayNumber": 1,
9
  "title": "Pourquoi Formaliser ?",
10
- "lessonText": "Bienvenue au Niveau 4 ! Aujourd'hui, on casse les mythes. La formalisation n'est pas qu'une histoire de taxes, c'est ta porte d'entrée vers la croissance.",
11
- "exercisePrompt": "Selon toi, quel est le plus gros obstacle qui t'empêche de formaliser ton business aujourd'hui ?",
12
  "exerciseType": "TEXT",
13
  "exerciseCriteria": {
14
- "evaluationGuide": "L'élève doit identifier un frein (ex: peur des impôts, complexité, coût)."
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
15
  }
16
  },
17
  {
18
  "dayNumber": 2,
19
  "title": "Avantages Fiscaux & Légaux",
20
- "lessonText": "Savais-tu qu'en étant formel, tu peux répondre à des appels d'offres et protéger ton patrimoine personnel ?",
21
  "exercisePrompt": "Lequel de ces avantages t'intéresse le plus ?",
22
  "exerciseType": "BUTTON",
23
  "buttonsJson": [
24
  {
25
- "id": "appels_offres",
26
- "title": "Appels d'offres"
27
  },
28
  {
29
- "id": "credit",
30
- "title": "Accès au crédit"
31
  },
32
  {
33
- "id": "protection",
34
- "title": "Protection juridique"
35
  }
36
  ]
37
  },
38
  {
39
  "dayNumber": 3,
40
  "title": "Crédibilité Partenaires",
41
- "lessonText": "Les gros fournisseurs et les banques demandent des papiers. Sans formalisation, tu restes coincé avec des petits volumes.",
42
- "exercisePrompt": "Quelle opportunité as-tu manqué par manque de formalisation ?",
43
  "exerciseType": "TEXT",
44
  "exerciseCriteria": {
45
- "evaluationGuide": "L'élève doit réfléchir à une situation concrète (ex: refus de prêt, contrat perdu)."
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
46
  }
47
  },
48
  {
49
  "dayNumber": 4,
50
  "title": "Organisation Simple",
51
- "lessonText": "On ne te demande pas d'être un expert comptable. Juste d'avoir un classeur avec tes factures et tes reçus bien rangés.",
52
  "exercisePrompt": "As-tu aujourd'hui un endroit unique où tu ranges tous tes reçus ?",
53
  "exerciseType": "BUTTON",
54
  "buttonsJson": [
@@ -69,35 +103,85 @@
69
  {
70
  "dayNumber": 5,
71
  "title": "Gestion de Stock",
72
- "lessonText": "Ton stock, c'est de l'argent qui dort. Si tu ne sais pas ce que tu as, tu perds de l'argent chaque jour.",
73
  "exercisePrompt": "Fais un inventaire rapide de tes 3 produits les plus chers. Combien en as-tu ?",
74
  "exerciseType": "TEXT",
75
  "exerciseCriteria": {
76
- "evaluationGuide": "L'élève doit montrer qu'il peut compter ses actifs principaux."
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
77
  }
78
  },
79
  {
80
  "dayNumber": 6,
81
  "title": "Le Cahier de Cash",
82
- "lessonText": "Note chaque entrée et chaque sortie. Ne mélange jamais ton argent personnel avec celui du business.",
83
- "exercisePrompt": "Si tu devais séparer tes comptes demain, quelle serait la plus grosse difficulté ?",
84
  "exerciseType": "TEXT",
85
  "exerciseCriteria": {
86
- "evaluationGuide": "L'élève doit identifier la difficulté de séparation perso/pro."
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
87
  }
88
  },
89
  {
90
  "dayNumber": 7,
91
- "title": "Plan Action 90 Jours",
92
- "lessonText": "Bravo ! Tu as compris l'importance de la structure. Prochaine étape : Ton plan de formalisation pour les 3 prochains mois.",
93
- "exercisePrompt": "Envoie un audio décrivant ta première action concrète pour formaliser ton business :",
94
  "exerciseType": "AUDIO",
95
  "exerciseCriteria": {
96
- "mustMention": [
97
- "ACTION",
98
- "DÉLAI"
99
- ],
100
- "evaluationGuide": "L'élève doit proposer une action réaliste (ex: s'informer à la mairie, ouvrir un compte)."
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
101
  },
102
  "badges": [
103
  "B_MODULE_4_OK"
 
7
  {
8
  "dayNumber": 1,
9
  "title": "Pourquoi Formaliser ?",
10
+ "lessonText": "Bienvenue au Niveau 4 ! La formalisation n'est pas qu'une histoire de taxes, c'est ta porte d'entrée vers les gros contrats et le crédit.",
11
+ "exercisePrompt": "Quel est le plus gros obstacle qui t'empêche de formaliser ton business ?",
12
  "exerciseType": "TEXT",
13
  "exerciseCriteria": {
14
+ "version": "1.0",
15
+ "type": "TEXT",
16
+ "goal": "Identifier les freins à la formalisation",
17
+ "success": {
18
+ "mustInclude": [
19
+ {
20
+ "id": "BARRIER",
21
+ "desc": "peur des impôts, complexité ou coût cité",
22
+ "weight": 5
23
+ }
24
+ ],
25
+ "threshold": {
26
+ "minScore": 5,
27
+ "minMustPass": 1
28
+ }
29
+ },
30
+ "evaluation": {
31
+ "tone": "coach_enthusiastic",
32
+ "format": "3_lines"
33
+ }
34
  }
35
  },
36
  {
37
  "dayNumber": 2,
38
  "title": "Avantages Fiscaux & Légaux",
39
+ "lessonText": "En étant formel, tu peux protéger ton patrimoine perso. Tes dettes business ne touchent pas ta maison.",
40
  "exercisePrompt": "Lequel de ces avantages t'intéresse le plus ?",
41
  "exerciseType": "BUTTON",
42
  "buttonsJson": [
43
  {
44
+ "id": "protection",
45
+ "title": "Protection du patrimoine"
46
  },
47
  {
48
+ "id": "appels",
49
+ "title": "Appels d'offres"
50
  },
51
  {
52
+ "id": "financement",
53
+ "title": "Accès au financement"
54
  }
55
  ]
56
  },
57
  {
58
  "dayNumber": 3,
59
  "title": "Crédibilité Partenaires",
60
+ "lessonText": "Les banques et les gros fournisseurs demandent des papiers. Sans ça, tu restes un petit commerçant de quartier.",
61
+ "exercisePrompt": "Quelle opportunité as-tu manqué par manque de papiers officiels ?",
62
  "exerciseType": "TEXT",
63
  "exerciseCriteria": {
64
+ "version": "1.0",
65
+ "type": "TEXT",
66
+ "goal": "Prise de conscience du coût d'opportunité",
67
+ "success": {
68
+ "mustInclude": [
69
+ {
70
+ "id": "MISSED",
71
+ "desc": "exemple de contrat ou prêt manqué",
72
+ "weight": 5
73
+ }
74
+ ],
75
+ "threshold": {
76
+ "minScore": 5,
77
+ "minMustPass": 1
78
+ }
79
+ }
80
  }
81
  },
82
  {
83
  "dayNumber": 4,
84
  "title": "Organisation Simple",
85
+ "lessonText": "Pas besoin d'être comptable. Commence par un classeur pour tes reçus et tes factures.",
86
  "exercisePrompt": "As-tu aujourd'hui un endroit unique où tu ranges tous tes reçus ?",
87
  "exerciseType": "BUTTON",
88
  "buttonsJson": [
 
103
  {
104
  "dayNumber": 5,
105
  "title": "Gestion de Stock",
106
+ "lessonText": "Ton stock, c'est ton argent. Si tu ne sais pas ce que tu as, tu perds de l'argent chaque jour.",
107
  "exercisePrompt": "Fais un inventaire rapide de tes 3 produits les plus chers. Combien en as-tu ?",
108
  "exerciseType": "TEXT",
109
  "exerciseCriteria": {
110
+ "version": "1.0",
111
+ "type": "TEXT",
112
+ "goal": "Contrôle d'inventaire",
113
+ "success": {
114
+ "mustInclude": [
115
+ {
116
+ "id": "INVENTORY",
117
+ "desc": "liste de produits avec quantités",
118
+ "weight": 5
119
+ }
120
+ ],
121
+ "threshold": {
122
+ "minScore": 5,
123
+ "minMustPass": 1
124
+ }
125
+ }
126
  }
127
  },
128
  {
129
  "dayNumber": 6,
130
  "title": "Le Cahier de Cash",
131
+ "lessonText": "Note chaque entrée et chaque sortie. Ne mélange jamais ton argent de poche avec celui du business.",
132
+ "exercisePrompt": "Si tu devais séparer tes comptes demain, quelle serait la difficulté ?",
133
  "exerciseType": "TEXT",
134
  "exerciseCriteria": {
135
+ "version": "1.0",
136
+ "type": "TEXT",
137
+ "goal": "Séparation des finances perso/pro",
138
+ "success": {
139
+ "mustInclude": [
140
+ {
141
+ "id": "DIFFICULTY",
142
+ "desc": "analyse de la difficulté de séparation",
143
+ "weight": 5
144
+ }
145
+ ],
146
+ "threshold": {
147
+ "minScore": 5,
148
+ "minMustPass": 1
149
+ }
150
+ }
151
  }
152
  },
153
  {
154
  "dayNumber": 7,
155
+ "title": "Plan d'Action",
156
+ "lessonText": "Bravo ! Tu as compris la structure. Quelle est ta première action concrète pour formaliser ?",
157
+ "exercisePrompt": "Envoie un audio décrivant ton action pour les 30 prochains jours :",
158
  "exerciseType": "AUDIO",
159
  "exerciseCriteria": {
160
+ "version": "1.0",
161
+ "type": "AUDIO",
162
+ "goal": "Plan d'action de formalisation",
163
+ "success": {
164
+ "mustInclude": [
165
+ {
166
+ "id": "ACTION",
167
+ "desc": "action concrète (ex: aller à la mairie)",
168
+ "weight": 5
169
+ },
170
+ {
171
+ "id": "DEADLINE",
172
+ "desc": "un délai cité",
173
+ "weight": 5
174
+ }
175
+ ],
176
+ "threshold": {
177
+ "minScore": 7,
178
+ "minMustPass": 1
179
+ }
180
+ },
181
+ "evaluation": {
182
+ "tone": "coach_enthusiastic",
183
+ "format": "3_lines"
184
+ }
185
  },
186
  "badges": [
187
  "B_MODULE_4_OK"
packages/database/content/tracks/T4-WO.json CHANGED
@@ -7,48 +7,82 @@
7
  {
8
  "dayNumber": 1,
9
  "title": "Lu tax war a formaliser ?",
10
- "lessonText": "Dalal jàmm ci Niveau 4 bi ! Tey, danuy leeral benn mbir. Formalisation du rek mbirum impôts, waaye mooy sa bunt bi ngay jaar ngir sa business mag.",
11
- "exercisePrompt": "Selon yaw, lan mooy jafe jafe bi la gën a tée formaliser sa business tey ?",
12
  "exerciseType": "TEXT",
13
  "exerciseCriteria": {
14
- "evaluationGuide": "L'élève doit identifier un frein réel (ex: ragal impôts, compliquée)."
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
15
  }
16
  },
17
  {
18
  "dayNumber": 2,
19
  "title": "Njariñ li ci nekk",
20
- "lessonText": "De nga xam ne su sa mbir bindoone, mën nga am accès ci appels d'offres yi te sa alal ci bopp dina woor ?",
21
- "exercisePrompt": "Benn ci njariñ yii, yan moo la gën a soxal ?",
22
  "exerciseType": "BUTTON",
23
  "buttonsJson": [
24
  {
25
- "id": "appels_offres",
26
- "title": "Appels d'offres"
27
  },
28
  {
29
- "id": "credit",
30
- "title": "Accès au crédit"
31
  },
32
  {
33
- "id": "protection",
34
- "title": "Sama alal woor"
35
  }
36
  ]
37
  },
38
  {
39
  "dayNumber": 3,
40
  "title": "Kooluté bi",
41
- "lessonText": "Fournisseur yu mag yi ak banque yi, dañuy laaj papier. Su sa mbir bindoowul, doo mën am volume yu mag.",
42
- "exercisePrompt": "Benn opportunité yan nga mas a ñàkk ndax sa mbir bindoowul ?",
43
  "exerciseType": "TEXT",
44
  "exerciseCriteria": {
45
- "evaluationGuide": "L'élève doit donner un exemple de contrat ou prêt manqué."
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
46
  }
47
  },
48
  {
49
  "dayNumber": 4,
50
  "title": "Organiser sa mbir",
51
- "lessonText": "Dinu la laaj nga nekk expert comptable. Dama bëgg rek nga am benn classeur booy denc sa facture ak sa reçu yi.",
52
  "exercisePrompt": "Am nga tey benn place booy denc sa reçu yépp ?",
53
  "exerciseType": "BUTTON",
54
  "buttonsJson": [
@@ -69,11 +103,26 @@
69
  {
70
  "dayNumber": 5,
71
  "title": "Gestion Stock",
72
- "lessonText": "Sa stock, xaalis la bu nélaw. Su nga xamul li nga am, yaay ñàkk xaalis saa su nekk.",
73
  "exercisePrompt": "Limal ma sa ñaari produit yu gën a jar xaalis. Ñaata nga ci am léegi ?",
74
  "exerciseType": "TEXT",
75
  "exerciseCriteria": {
76
- "evaluationGuide": "L'élève doit montrer qu'il suit son inventaire principal."
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
77
  }
78
  },
79
  {
@@ -83,21 +132,56 @@
83
  "exercisePrompt": "Su nga bëggoon a séparer sa deux comptes suba, lan mooy jafe jafe bi ?",
84
  "exerciseType": "TEXT",
85
  "exerciseCriteria": {
86
- "evaluationGuide": "L'élève doit réfléchir à la difficulté de séparer les finances personnelles et professionnelles."
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
87
  }
88
  },
89
  {
90
  "dayNumber": 7,
91
  "title": "Plan Action bi",
92
- "lessonText": "Félicitations ! Nga xam njariñu structuration. Sa plan bi di ñëw ci 3 mois : Lan ngay tàmbalee def ngir formaliser ?",
93
- "exercisePrompt": "Yónnee ma audio ngir wax ma première action bi ngay tàmbalee def :",
94
  "exerciseType": "AUDIO",
95
  "exerciseCriteria": {
96
- "mustMention": [
97
- "ACTION",
98
- "DÉLAI"
99
- ],
100
- "evaluationGuide": "L'élève doit proposer une action concrète et réaliste."
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
101
  },
102
  "badges": [
103
  "B_MODULE_4_OK"
 
7
  {
8
  "dayNumber": 1,
9
  "title": "Lu tax war a formaliser ?",
10
+ "lessonText": "Dalal jàmm ci Niveau 4 bi ! Formalisation du mbirum impôts rekk, waaye mooy sa bunt bu ngay jaar ngir am contrat yu mag ak crédit.",
11
+ "exercisePrompt": "Lan mooy jafe-jafe bi la gën a tée formaliser sa business ?",
12
  "exerciseType": "TEXT",
13
  "exerciseCriteria": {
14
+ "version": "1.0",
15
+ "type": "TEXT",
16
+ "goal": "Identifier les freins à la formalisation (WOLOF)",
17
+ "success": {
18
+ "mustInclude": [
19
+ {
20
+ "id": "BARRIER",
21
+ "desc": "ragal impôts, jafe walla seer cités",
22
+ "weight": 5
23
+ }
24
+ ],
25
+ "threshold": {
26
+ "minScore": 5,
27
+ "minMustPass": 1
28
+ }
29
+ },
30
+ "evaluation": {
31
+ "tone": "coach_enthusiastic",
32
+ "format": "3_lines"
33
+ }
34
  }
35
  },
36
  {
37
  "dayNumber": 2,
38
  "title": "Njariñ li ci nekk",
39
+ "lessonText": "Su sa mbir bindoone, daggay protéger sa alal bopp. Sa boru business du touché sa kër walla sa auto.",
40
+ "exercisePrompt": "Sa yan njariñ moo la ci gën a soxal ?",
41
  "exerciseType": "BUTTON",
42
  "buttonsJson": [
43
  {
44
+ "id": "protection",
45
+ "title": "Sama alal woor"
46
  },
47
  {
48
+ "id": "appels",
49
+ "title": "Appels d'offres"
50
  },
51
  {
52
+ "id": "financement",
53
+ "title": "Accès ci xaalis"
54
  }
55
  ]
56
  },
57
  {
58
  "dayNumber": 3,
59
  "title": "Kooluté bi",
60
+ "lessonText": "Banque yi ak fournisseur yu mag yi, papier lañuy laaj. Su nga amul papier, daggay des commerçant bu ndaw rekk.",
61
+ "exercisePrompt": "Baax na, yan opportunité nga mas a ñàkk ndax sa mbir bindoowul ?",
62
  "exerciseType": "TEXT",
63
  "exerciseCriteria": {
64
+ "version": "1.0",
65
+ "type": "TEXT",
66
+ "goal": "Prise de conscience du coût d'opportunité (WOLOF)",
67
+ "success": {
68
+ "mustInclude": [
69
+ {
70
+ "id": "MISSED",
71
+ "desc": "contrat walla prêt bu mu ñàkk",
72
+ "weight": 5
73
+ }
74
+ ],
75
+ "threshold": {
76
+ "minScore": 5,
77
+ "minMustPass": 1
78
+ }
79
+ }
80
  }
81
  },
82
  {
83
  "dayNumber": 4,
84
  "title": "Organiser sa mbir",
85
+ "lessonText": "Dinu la laaj nga nekk expert comptable. Tàmbaleel ak benn classeur booy denc sa facture ak sa reçu yi.",
86
  "exercisePrompt": "Am nga tey benn place booy denc sa reçu yépp ?",
87
  "exerciseType": "BUTTON",
88
  "buttonsJson": [
 
103
  {
104
  "dayNumber": 5,
105
  "title": "Gestion Stock",
106
+ "lessonText": "Sa stock, sa xaalis la. Su nga xamul li nga am, yaay ñàkk xaalis saa su nekk.",
107
  "exercisePrompt": "Limal ma sa ñaari produit yu gën a jar xaalis. Ñaata nga ci am léegi ?",
108
  "exerciseType": "TEXT",
109
  "exerciseCriteria": {
110
+ "version": "1.0",
111
+ "type": "TEXT",
112
+ "goal": "Contrôle d'inventaire (WOLOF)",
113
+ "success": {
114
+ "mustInclude": [
115
+ {
116
+ "id": "INVENTORY",
117
+ "desc": "produit yi ak ñaata lañu",
118
+ "weight": 5
119
+ }
120
+ ],
121
+ "threshold": {
122
+ "minScore": 5,
123
+ "minMustPass": 1
124
+ }
125
+ }
126
  }
127
  },
128
  {
 
132
  "exercisePrompt": "Su nga bëggoon a séparer sa deux comptes suba, lan mooy jafe jafe bi ?",
133
  "exerciseType": "TEXT",
134
  "exerciseCriteria": {
135
+ "version": "1.0",
136
+ "type": "TEXT",
137
+ "goal": "Séparation des finances perso/pro (WOLOF)",
138
+ "success": {
139
+ "mustInclude": [
140
+ {
141
+ "id": "DIFFICULTY",
142
+ "desc": "jafe-jafe ci jaxasse xaalis",
143
+ "weight": 5
144
+ }
145
+ ],
146
+ "threshold": {
147
+ "minScore": 5,
148
+ "minMustPass": 1
149
+ }
150
+ }
151
  }
152
  },
153
  {
154
  "dayNumber": 7,
155
  "title": "Plan Action bi",
156
+ "lessonText": "Félicitations ! Nga xam njariñu structuration. Lan mooy première action bi ngay tàmbalee def ngir formaliser ?",
157
+ "exercisePrompt": "Yónnee ma audio ngir wax ma action bi ngay def ci 30 bis yii di ñëw :",
158
  "exerciseType": "AUDIO",
159
  "exerciseCriteria": {
160
+ "version": "1.0",
161
+ "type": "AUDIO",
162
+ "goal": "Plan d'action de formalisation (WOLOF)",
163
+ "success": {
164
+ "mustInclude": [
165
+ {
166
+ "id": "ACTION",
167
+ "desc": "action bu leer (ex: dem ci mairie)",
168
+ "weight": 5
169
+ },
170
+ {
171
+ "id": "DEADLINE",
172
+ "desc": "jamono mu leer",
173
+ "weight": 5
174
+ }
175
+ ],
176
+ "threshold": {
177
+ "minScore": 7,
178
+ "minMustPass": 1
179
+ }
180
+ },
181
+ "evaluation": {
182
+ "tone": "coach_enthusiastic",
183
+ "format": "3_lines"
184
+ }
185
  },
186
  "badges": [
187
  "B_MODULE_4_OK"
packages/database/content/tracks/T5-FR.json CHANGED
@@ -11,14 +11,33 @@
11
  "exercisePrompt": "Quel montant as-tu besoin pour passer à l'étape suivante de ton business ?",
12
  "exerciseType": "TEXT",
13
  "exerciseCriteria": {
14
- "evaluationGuide": "L'élève doit donner un montant réaliste."
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
15
  }
16
  },
17
  {
18
  "dayNumber": 2,
19
  "title": "Les 5C du Crédit",
20
  "lessonText": "La banque regarde ton CARACTÈRE, ta CAPACITÉ de remboursement, ton CAPITAL, tes CONDITIONS et ta COUVERTURE (garantie).",
21
- "exercisePrompt": "Lequel de ces 5 points te semble être ta plus grande force aujourd'hui ?",
22
  "exerciseType": "BUTTON",
23
  "buttonsJson": [
24
  {
@@ -42,40 +61,112 @@
42
  "exercisePrompt": "Si on te prête 1 million, en combien de mois pourrais-tu le rembourser ?",
43
  "exerciseType": "TEXT",
44
  "exerciseCriteria": {
45
- "evaluationGuide": "L'élève doit faire une estimation réaliste de sa capacité de remboursement."
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
46
  }
47
  },
48
  {
49
  "dayNumber": 4,
50
  "title": "Garanties Alternatives",
51
- "lessonText": "Tu n'as pas de titre foncier ? Il existe des garanties alternatives : caution solidaire, nantissement de matériel, ou fonds de garantie.",
52
  "exercisePrompt": "Quelle garantie pourrais-tu proposer à une banque ?",
53
  "exerciseType": "TEXT",
54
  "exerciseCriteria": {
55
- "evaluationGuide": "L'élève doit identifier une garantie possible (ex: stock, matériel, personne)."
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
56
  }
57
  },
58
  {
59
  "dayNumber": 5,
60
  "title": "Le Pitch Financeur",
61
- "lessonText": "On ne vend pas un produit à un banquier, on lui vend une certitude de remboursement. Montre-lui que tu maîtrises tes chiffres.",
62
- "exercisePrompt": "Envoie un audio pour me convaincre de te prêter de l'argent pour ton projet :",
63
  "exerciseType": "AUDIO",
64
  "exerciseCriteria": {
65
- "mustMention": [
66
- "BESOIN",
67
- "RENTABILITÉ",
68
- "GARANTIE"
69
- ],
70
- "evaluationGuide": "Le pitch doit être professionnel et basé sur les chiffres."
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
71
  }
72
  },
73
  {
74
  "dayNumber": 6,
75
  "title": "Certification Finale",
76
- "lessonText": "Félicitations ! Tu as parcouru tout le chemin. Tu as la vision, le modèle, la vente, la structure et le financement. Tu es un entrepreneur XAMLÉ !",
77
  "exercisePrompt": "Résume ton parcours en une phrase de fierté :",
78
  "exerciseType": "TEXT",
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
79
  "badges": [
80
  "B_MODULE_5_OK",
81
  "B_GRADUATED_XAMLE"
 
11
  "exercisePrompt": "Quel montant as-tu besoin pour passer à l'étape suivante de ton business ?",
12
  "exerciseType": "TEXT",
13
  "exerciseCriteria": {
14
+ "version": "1.0",
15
+ "type": "TEXT",
16
+ "goal": "Évaluer le besoin de financement",
17
+ "success": {
18
+ "mustInclude": [
19
+ {
20
+ "id": "AMOUNT",
21
+ "desc": "un montant réaliste",
22
+ "weight": 5
23
+ }
24
+ ],
25
+ "threshold": {
26
+ "minScore": 5,
27
+ "minMustPass": 1
28
+ }
29
+ },
30
+ "evaluation": {
31
+ "tone": "coach_enthusiastic",
32
+ "format": "3_lines"
33
+ }
34
  }
35
  },
36
  {
37
  "dayNumber": 2,
38
  "title": "Les 5C du Crédit",
39
  "lessonText": "La banque regarde ton CARACTÈRE, ta CAPACITÉ de remboursement, ton CAPITAL, tes CONDITIONS et ta COUVERTURE (garantie).",
40
+ "exercisePrompt": "Lequel de ces 5 points te semble être ta plus grande force ?",
41
  "exerciseType": "BUTTON",
42
  "buttonsJson": [
43
  {
 
61
  "exercisePrompt": "Si on te prête 1 million, en combien de mois pourrais-tu le rembourser ?",
62
  "exerciseType": "TEXT",
63
  "exerciseCriteria": {
64
+ "version": "1.0",
65
+ "type": "TEXT",
66
+ "goal": "Estimation de la capacité de remboursement",
67
+ "success": {
68
+ "mustInclude": [
69
+ {
70
+ "id": "PERIOD",
71
+ "desc": "un délai de remboursement cohérent",
72
+ "weight": 5
73
+ }
74
+ ],
75
+ "threshold": {
76
+ "minScore": 5,
77
+ "minMustPass": 1
78
+ }
79
+ }
80
  }
81
  },
82
  {
83
  "dayNumber": 4,
84
  "title": "Garanties Alternatives",
85
+ "lessonText": "Pas de titre foncier ? Utilise la caution solidaire, le nantissement de matériel, ou les fonds de garantie.",
86
  "exercisePrompt": "Quelle garantie pourrais-tu proposer à une banque ?",
87
  "exerciseType": "TEXT",
88
  "exerciseCriteria": {
89
+ "version": "1.0",
90
+ "type": "TEXT",
91
+ "goal": "Identifier des garanties réelles",
92
+ "success": {
93
+ "mustInclude": [
94
+ {
95
+ "id": "GUARANTEE",
96
+ "desc": "stock, matériel, caution humaine ou solidaire",
97
+ "weight": 5
98
+ }
99
+ ],
100
+ "threshold": {
101
+ "minScore": 5,
102
+ "minMustPass": 1
103
+ }
104
+ }
105
  }
106
  },
107
  {
108
  "dayNumber": 5,
109
  "title": "Le Pitch Financeur",
110
+ "lessonText": "Au banquier, on vend une certitude de remboursement. Montre-lui que tu maîtrises tes chiffres et ton risque.",
111
+ "exercisePrompt": "Envoie un audio pour me convaincre de te prêter de l'argent :",
112
  "exerciseType": "AUDIO",
113
  "exerciseCriteria": {
114
+ "version": "1.0",
115
+ "type": "AUDIO",
116
+ "goal": "Pitch de demande de financement",
117
+ "success": {
118
+ "mustInclude": [
119
+ {
120
+ "id": "NEED",
121
+ "desc": "besoin précis",
122
+ "weight": 3
123
+ },
124
+ {
125
+ "id": "REPAY",
126
+ "desc": "preuve de capacité de remboursement",
127
+ "weight": 4
128
+ },
129
+ {
130
+ "id": "GUARANTEE",
131
+ "desc": "garantie citée",
132
+ "weight": 3
133
+ }
134
+ ],
135
+ "threshold": {
136
+ "minScore": 7,
137
+ "minMustPass": 2
138
+ }
139
+ },
140
+ "evaluation": {
141
+ "tone": "coach_enthusiastic",
142
+ "format": "3_lines"
143
+ }
144
  }
145
  },
146
  {
147
  "dayNumber": 6,
148
  "title": "Certification Finale",
149
+ "lessonText": "Félicitations ! Tu es un entrepreneur XAMLÉ. Tu as la vision, le modèle, la vente, la structure et le financement.",
150
  "exercisePrompt": "Résume ton parcours en une phrase de fierté :",
151
  "exerciseType": "TEXT",
152
+ "exerciseCriteria": {
153
+ "version": "1.0",
154
+ "type": "TEXT",
155
+ "goal": "Célébration finale",
156
+ "success": {
157
+ "mustInclude": [
158
+ {
159
+ "id": "PRIDE",
160
+ "desc": "expression de fierté ou réussite",
161
+ "weight": 5
162
+ }
163
+ ],
164
+ "threshold": {
165
+ "minScore": 5,
166
+ "minMustPass": 1
167
+ }
168
+ }
169
+ },
170
  "badges": [
171
  "B_MODULE_5_OK",
172
  "B_GRADUATED_XAMLE"
packages/database/content/tracks/T5-WO.json CHANGED
@@ -7,11 +7,30 @@
7
  {
8
  "dayNumber": 1,
9
  "title": "Banque vs Microfinance",
10
- "lessonText": "Dalal jàmm ci Niveau bi gën a mag ! Tey, danuy seet fan ngay utée xaalis. Banque, Microfinance, walla Investisseurs ? Ñépp am nañu sen règle yu fële.",
11
- "exercisePrompt": "Ñaata xaalis nga soxla ngir yokk sa business tey ?",
12
  "exerciseType": "TEXT",
13
  "exerciseCriteria": {
14
- "evaluationGuide": "L'élève doit donner un montant réaliste pour son projet."
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
15
  }
16
  },
17
  {
@@ -42,7 +61,22 @@
42
  "exercisePrompt": "Su ñu la abaloon 1 million, ci ñata wéer nga ko mën a faye ?",
43
  "exerciseType": "TEXT",
44
  "exerciseCriteria": {
45
- "evaluationGuide": "L'élève doit estimer son délai de remboursement de manière logique."
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
46
  }
47
  },
48
  {
@@ -52,22 +86,61 @@
52
  "exercisePrompt": "Yan garantie nga mën a propose banque bi ?",
53
  "exerciseType": "TEXT",
54
  "exerciseCriteria": {
55
- "evaluationGuide": "L'élève doit proposer une garantie (matériel, caution, etc.)."
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
56
  }
57
  },
58
  {
59
  "dayNumber": 5,
60
  "title": "Pitch Financeur",
61
  "lessonText": "Doo jaay banquier bi sa produit, dangay jaay kooluté ne mën nga fay sa bor. Wone ko ne nga xam sa chiffre yi.",
62
- "exercisePrompt": "Yónnee ma audio ngir convaincre ma ma abal la xaalis ngir sa projet :",
63
  "exerciseType": "AUDIO",
64
  "exerciseCriteria": {
65
- "mustMention": [
66
- "SOXLA",
67
- "NJARIÑ",
68
- "GARANTIE"
69
- ],
70
- "evaluationGuide": "Le pitch doit être professionnel et précis en Wolof."
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
71
  }
72
  },
73
  {
@@ -76,6 +149,24 @@
76
  "lessonText": "Félicitations ! Nga pare lépp. Am nga gis-gis bi, pexe bi, jaay bi, organisation bi, ak financement bi. Entrepreneur XAMLÉ nga !",
77
  "exercisePrompt": "Bindal ma benn phrase ngir wone sa mbégte ci parcours bi :",
78
  "exerciseType": "TEXT",
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
79
  "badges": [
80
  "B_MODULE_5_OK",
81
  "B_GRADUATED_XAMLE"
 
7
  {
8
  "dayNumber": 1,
9
  "title": "Banque vs Microfinance",
10
+ "lessonText": "Dalal jàmm ci Niveau bi gën a mag ! Tey danuy seet fan ngay utée xaalis. Banque, Microfinance, walla Investisseurs ? Ñépp am nañu sen règle yu fële.",
11
+ "exercisePrompt": "Ñata xaalis nga soxla ngir yokk sa business tey ?",
12
  "exerciseType": "TEXT",
13
  "exerciseCriteria": {
14
+ "version": "1.0",
15
+ "type": "TEXT",
16
+ "goal": "Évaluer le besoin de financement (WOLOF)",
17
+ "success": {
18
+ "mustInclude": [
19
+ {
20
+ "id": "AMOUNT",
21
+ "desc": "montant bu leer",
22
+ "weight": 5
23
+ }
24
+ ],
25
+ "threshold": {
26
+ "minScore": 5,
27
+ "minMustPass": 1
28
+ }
29
+ },
30
+ "evaluation": {
31
+ "tone": "coach_enthusiastic",
32
+ "format": "3_lines"
33
+ }
34
  }
35
  },
36
  {
 
61
  "exercisePrompt": "Su ñu la abaloon 1 million, ci ñata wéer nga ko mën a faye ?",
62
  "exerciseType": "TEXT",
63
  "exerciseCriteria": {
64
+ "version": "1.0",
65
+ "type": "TEXT",
66
+ "goal": "Estimation de la capacité de remboursement (WOLOF)",
67
+ "success": {
68
+ "mustInclude": [
69
+ {
70
+ "id": "PERIOD",
71
+ "desc": "jamono mu dëggu",
72
+ "weight": 5
73
+ }
74
+ ],
75
+ "threshold": {
76
+ "minScore": 5,
77
+ "minMustPass": 1
78
+ }
79
+ }
80
  }
81
  },
82
  {
 
86
  "exercisePrompt": "Yan garantie nga mën a propose banque bi ?",
87
  "exerciseType": "TEXT",
88
  "exerciseCriteria": {
89
+ "version": "1.0",
90
+ "type": "TEXT",
91
+ "goal": "Identifier des garanties réelles (WOLOF)",
92
+ "success": {
93
+ "mustInclude": [
94
+ {
95
+ "id": "GUARANTEE",
96
+ "desc": "matériel, caution walla dëkkëndo",
97
+ "weight": 5
98
+ }
99
+ ],
100
+ "threshold": {
101
+ "minScore": 5,
102
+ "minMustPass": 1
103
+ }
104
+ }
105
  }
106
  },
107
  {
108
  "dayNumber": 5,
109
  "title": "Pitch Financeur",
110
  "lessonText": "Doo jaay banquier bi sa produit, dangay jaay kooluté ne mën nga fay sa bor. Wone ko ne nga xam sa chiffre yi.",
111
+ "exercisePrompt": "Yónnee ma audio ngir convaincre ma ma abal la xaalis :",
112
  "exerciseType": "AUDIO",
113
  "exerciseCriteria": {
114
+ "version": "1.0",
115
+ "type": "AUDIO",
116
+ "goal": "Pitch de demande de financement (WOLOF)",
117
+ "success": {
118
+ "mustInclude": [
119
+ {
120
+ "id": "NEED",
121
+ "desc": "li nga soxla",
122
+ "weight": 3
123
+ },
124
+ {
125
+ "id": "REPAY",
126
+ "desc": "naka ngay faye",
127
+ "weight": 4
128
+ },
129
+ {
130
+ "id": "GUARANTEE",
131
+ "desc": "garantie bi",
132
+ "weight": 3
133
+ }
134
+ ],
135
+ "threshold": {
136
+ "minScore": 7,
137
+ "minMustPass": 2
138
+ }
139
+ },
140
+ "evaluation": {
141
+ "tone": "coach_enthusiastic",
142
+ "format": "3_lines"
143
+ }
144
  }
145
  },
146
  {
 
149
  "lessonText": "Félicitations ! Nga pare lépp. Am nga gis-gis bi, pexe bi, jaay bi, organisation bi, ak financement bi. Entrepreneur XAMLÉ nga !",
150
  "exercisePrompt": "Bindal ma benn phrase ngir wone sa mbégte ci parcours bi :",
151
  "exerciseType": "TEXT",
152
+ "exerciseCriteria": {
153
+ "version": "1.0",
154
+ "type": "TEXT",
155
+ "goal": "Célébration finale (WOLOF)",
156
+ "success": {
157
+ "mustInclude": [
158
+ {
159
+ "id": "PRIDE",
160
+ "desc": "mbégte walla roussi",
161
+ "weight": 5
162
+ }
163
+ ],
164
+ "threshold": {
165
+ "minScore": 5,
166
+ "minMustPass": 1
167
+ }
168
+ }
169
+ },
170
  "badges": [
171
  "B_MODULE_5_OK",
172
  "B_GRADUATED_XAMLE"