Il y a environ 250 millions d'enfants en âge scolaire en Afrique subsaharienne. Le continent ajoute plus d'élèves chaque année que toute autre région de la planète. La pénurie d'enseignants se chiffre en millions -- l'UNESCO estime un déficit de 15 millions d'enseignants d'ici 2030. Le soutien scolaire privé, là où il existe, coûte entre 5 000 et 25 000 FCFA de l'heure, bien au-delà des moyens de la plupart des familles.
Et voici ce que la plupart des entreprises d'edtech de la Silicon Valley ratent complètement : le programme scolaire est français. Pas seulement la langue -- toute la structure pédagogique. Du CP (Cours Préparatoire, 6 ans) à la Terminale (18 ans), les élèves de 23 pays africains suivent le programme du système français avec ses propres niveaux scolaires, ses formats d'examen (CEPE, BEPC, BAC) et ses classifications de matières. Quand une élève ivoirienne a besoin d'aide pour son « devoir de SVT pour la classe de 3ème », elle n'a pas besoin de Khan Academy. Elle a besoin d'un tuteur qui comprend ce que la 3ème signifie, ce que couvre la SVT à ce niveau, et qui peut l'expliquer en français avec des références qu'elle reconnaît.
C'est le problème que Deblo.ai a été construit pour résoudre. Pas un chatbot avec une couche de traduction française. Un tuteur IA conçu pour le programme scolaire africain dès le départ, qui coûte quelques centimes par question et qui fonctionne sur les appareils que les élèves possèdent réellement.
Le double produit
Deblo n'est pas un seul produit. C'est deux produits qui partagent un même backend.
Deblo K12 s'adresse aux élèves du CP (6 ans) à la Terminale (18 ans). Il couvre plus de 15 matières : Mathématiques, Français, Anglais, Histoire-Géographie, Sciences de la Vie et de la Terre, Physique-Chimie, Philosophie, Informatique, et plus encore. Il adapte son langage, son ton et son approche pédagogique en fonction du niveau de l'élève. Un élève de CP reçoit des QCM (questionnaires à choix multiples) avec des mangues et des analogies du marché. Un élève de Terminale reçoit un questionnement socratique et des techniques de démonstration formelle.
Deblo Pro s'adresse aux professionnels africains -- experts-comptables, juristes, auditeurs, fiscalistes, responsables RH, développeurs et entrepreneurs. Il comprend le SYSCOHADA (le référentiel comptable utilisé dans 17 nations africaines), le droit des affaires OHADA, la conformité fiscale et les procédures d'audit. Il peut générer des feuilles de calcul Excel avec des écritures comptables, rédiger des mémorandums juridiques en PDF, exécuter du code dans un terminal sandboxé, rechercher sur le web la législation en vigueur, et envoyer les résultats par e-mail ou WhatsApp.
Les deux produits sont accessibles via la même interface de chat. Le changement de mode se fait à la création de la conversation, et le prompt système, les outils disponibles et les coûts en crédits s'adaptent en conséquence.
Le système de crédits
Nous avons tarifé Deblo pour l'Afrique. Pas pour San Francisco. Pas pour Paris. Pour Abidjan, Dakar, Douala, Kinshasa.
L'unité monétaire à l'intérieur de Deblo est le crédit. Un crédit équivaut à environ 5 FCFA -- soit environ 0,008 USD. Un message texte coûte 1 crédit. Une analyse de photo coûte 2 crédits. Une requête Pro coûte 3 crédits. Un appel vocal coûte 5 crédits par minute.
Chaque nouvel utilisateur reçoit 200 crédits de bienvenue. Chaque jour, chaque utilisateur obtient 30 crédits gratuits -- suffisamment pour qu'un élève pose 30 questions sans rien payer. Le rechargement quotidien se réinitialise à minuit, et le système vérifie à chaque requête :
pythonRECHARGE_OPTIONS = [
{"id": "r10", "credits": 20, "bonus": 0, "price_fcfa": 100},
{"id": "r50", "credits": 100, "bonus": 0, "price_fcfa": 500},
{"id": "r100", "credits": 200, "bonus": 10, "price_fcfa": 1000},
{"id": "r500", "credits": 1000, "bonus": 50, "price_fcfa": 5000},
{"id": "r1k", "credits": 2000, "bonus": 160, "price_fcfa": 10000},
{"id": "r5k", "credits": 10000, "bonus": 1000, "price_fcfa": 50000},
{"id": "r10k", "credits": 20000, "bonus": 2400, "price_fcfa": 100000},
{"id": "r20k", "credits": 40000, "bonus": 6000, "price_fcfa": 200000},
{"id": "r50k", "credits": 100000, "bonus": 20000, "price_fcfa": 500000},
{"id": "r100k", "credits": 200000, "bonus": 50000, "price_fcfa": 1000000},
]La plus petite recharge est de 100 FCFA (~0,16 USD) pour 20 crédits. C'est 20 questions répondues par un tuteur IA pour le prix d'un sachet d'eau. Les paliers de bonus récompensent les achats plus importants -- le forfait à 10 000 FCFA inclut 2 160 crédits, soit un bonus de 8 %.
Le grand livre des crédits est la source unique de vérité pour tous les mouvements financiers. Chaque événement lié aux crédits -- bonus d'inscription, recharge quotidienne gratuite, achat, bonus IA, déduction de message -- est enregistré comme une entrée immuable avec une direction, un montant, un solde courant, un type d'événement et une référence optionnelle :
pythonclass CreditLedger(Base):
"""Source unique de vérité pour TOUS les mouvements de crédits."""
__tablename__ = "credit_ledger"
id = Column(UUID(as_uuid=True), primary_key=True, default=uuid4)
user_id = Column(UUID(as_uuid=True), ForeignKey("users.id"), nullable=False)
direction = Column(String(6), nullable=False) # 'credit' | 'debit'
amount = Column(Integer, nullable=False) # toujours positif
balance_after = Column(Integer, nullable=True)
event = Column(String(30), nullable=False) # signup_bonus, purchase, usage_text, etc.
description = Column(String(255), nullable=False)
reference_id = Column(UUID(as_uuid=True), nullable=True)
conversation_id = Column(UUID(as_uuid=True), nullable=True)
created_at = Column(DateTime(timezone=True), server_default=func.now())Cette conception signifie que nous pouvons reconstituer l'historique des crédits de n'importe quel utilisateur à n'importe quel moment. Pas de tickets de support « où sont passés mes crédits ? » auxquels nous ne pourrions pas répondre. Le grand livre sait.
La structure du programme scolaire
Le programme du système français utilisé en Afrique de l'Ouest et en Afrique centrale suit une progression spécifique que Deblo doit comprendre nativement. Ce n'est pas un simple tableau de correspondance -- c'est un savoir-faire métier fondamental qui façonne chaque prompt système, chaque adaptation par niveau et chaque flux de préparation aux examens.
Primaire :
CP - Cours Préparatoire (6-7 ans)
CE1 - Cours Élémentaire 1 (7-8 ans)
CE2 - Cours Élémentaire 2 (8-9 ans)
CM1 - Cours Moyen 1 (9-10 ans)
CM2 - Cours Moyen 2 (10-11 ans)
--> Examen : CEPE (Certificat d'Études Primaires Élémentaires)
Collège :
6ème - Sixième (11-12 ans)
5ème - Cinquième (12-13 ans)
4ème - Quatrième (13-14 ans)
3ème - Troisième (14-15 ans)
--> Examen : BEPC (Brevet d'Études du Premier Cycle)
Lycée :
2nde - Seconde (15-16 ans)
1ère - Première (16-17 ans)
Tle - Terminale (17-18 ans)
--> Examen : BAC (Baccalauréat), Séries : A (Littéraire), C (Mathématiques), D (Sciences)Chaque niveau scolaire possède un overlay de classe distinct dans le prompt système. Un élève de CP voit des phrases courtes, des exemples concrets de la vie quotidienne ivoirienne et des quiz QCM interactifs. Un élève de Terminale reçoit un langage académique rigoureux, des démonstrations formelles et une méthodologie orientée examen.
Les examens sont tout aussi spécifiques. Le CEPE à la fin du CM2 est la porte d'entrée du primaire vers le collège. Le BEPC à la fin de la 3ème détermine l'admission au lycée. Le BAC à la fin de la Terminale -- divisé en Série A (littéraire), C (mathématiques) et D (sciences) -- détermine l'éligibilité à l'université. Chaque examen a son propre format, son propre minutage et ses propres conventions de notation. Deblo les comprend tous et peut générer des examens blancs dans le format officiel, avec en-têtes, allocations de temps et barèmes.
Le protocole de streaming du chat
Quand un élève envoie un message, Deblo ne renvoie pas une réponse JSON. Il ouvre un flux de Server-Sent Events et envoie les tokens en temps réel. L'élève voit l'IA « taper » -- les mots apparaissent au fur et à mesure que le LLM les génère. Ce n'est pas un choix cosmétique. Sur les réseaux mobiles africains où la latence peut dépasser 500 ms par aller-retour, attendre 10 à 15 secondes pour une réponse complète donne l'impression que l'application est gelée. Le streaming donne un retour immédiat : l'IA travaille, la réponse arrive.
Le flux SSE transporte plus que du texte. Il transporte des événements structurés : des widgets de quiz qui s'affichent sous forme de cartes à choix multiples cliquables, des liens de téléchargement pour les PDF et feuilles de calcul générés, des mises à jour du solde de crédits après déduction, et des indicateurs de progression des outils montrant ce que fait l'IA (« Recherche sur le web... », « Génération de votre document... »). Un seul message de chat peut produire une douzaine d'événements SSE de types différents, chacun géré par un composant frontend dédié.
event: content
data: {"text": "Pour résoudre cette équation du second degré, "}
event: content
data: {"text": "on utilise le discriminant $\\Delta = b^2 - 4ac$."}
event: tool_start
data: {"name": "interactive_quiz", "id": "call_abc"}
event: quiz
data: {"question": "Quel est le discriminant de $2x^2 + 3x - 5$ ?",
"options": ["29", "49", "-31", "19"]}
event: credits
data: {"free": 29, "recharge": 100, "total": 129}
event: done
data: {"conversation_id": "uuid", "title": "Équation du second degré"}La stack technique
Deblo est construit sur une stack moderne classique, choisie pour la rapidité de développement et la simplicité opérationnelle :
- Frontend : SvelteKit 2 avec Svelte 5 runes, TailwindCSS 4, 60+ composants
- Backend : Python FastAPI avec async SQLAlchemy, 100+ endpoints API répartis dans 18 fichiers de routes
- Base de données : PostgreSQL 17 avec JSONB pour les messages de conversation, pgvector pour les embeddings
- Cache / Queue : Redis pour le suivi de progression SSE, la coordination des tâches de fond, l'état des quiz
- LLM : OpenRouter comme passerelle -- DeepSeek V3 pour le texte, GPT-4o Mini pour la vision, Claude pour le raisonnement complexe
- Mobile : Monorepo Expo React Native avec 4 packages partagés
- Paiements : 0fee.dev (notre propre passerelle de paiement), Stripe, PaiementPro/XPaye pour Orange Money, Wave, MTN MoMo, M-Pesa
Le backend est une seule application FastAPI avec 18 modules de routes :
pythonapp.include_router(chat.router, prefix="/api", tags=["chat"])
app.include_router(auth.router, prefix="/api/auth", tags=["auth"])
app.include_router(credits.router, prefix="/api/credits", tags=["credits"])
app.include_router(curriculum.router, prefix="/api", tags=["curriculum"])
app.include_router(parent.router, prefix="/api/parent", tags=["parent"])
app.include_router(upload.router, prefix="/api/upload", tags=["upload"])
app.include_router(admin.router, prefix="/api/admin", tags=["admin"])
app.include_router(org.router, prefix="/api/org", tags=["org"])
app.include_router(projects.router, prefix="/api", tags=["projects"])
app.include_router(webhooks.router, prefix="/webhooks", tags=["webhooks"])
app.include_router(contact.router, prefix="/api", tags=["contact"])
app.include_router(voice.router, prefix="/api", tags=["voice"])
app.include_router(pay.router, prefix="/api/pay", tags=["pay"])
app.include_router(tasks.router, prefix="/api/tasks", tags=["tasks"])
app.include_router(referral.router, prefix="/api/referral", tags=["referral"])
app.include_router(notifications.router, prefix="/api/notifications", tags=["notifications"])
app.include_router(suggestions.router, prefix="/api/suggestions", tags=["suggestions"])
app.include_router(stats.router, prefix="/api/stats", tags=["stats"])Chaque routeur est maître de son domaine. Le routeur chat gère le CRUD des conversations, le streaming des messages et la boucle agentique d'outils. Le routeur auth gère le WhatsApp OTP, Google OAuth, les codes d'accès et l'émission des JWT. Le routeur crédits gère les requêtes de solde, le listing des forfaits de recharge et l'initiation des achats.
Six pays, treize devises
Deblo prend actuellement en charge 6 pays : la Côte d'Ivoire, le Sénégal, le Cameroun, la République Démocratique du Congo, le Gabon et le Burkina Faso. Chaque pays a sa propre devise, ses propres méthodes de paiement et ses propres fournisseurs de mobile money.
Les prix sont stockés en FCFA (le Franc CFA utilisé dans les zones UEMOA et CEMAC) et convertis en devise locale à l'affichage. Pour les pays hors zone CFA -- comme la RDC avec son Franc congolais -- nous maintenons des taux de change en temps réel.
Le flux de paiement est volontairement simple. Un élève appuie sur un forfait de recharge, choisit son mode de paiement (Orange Money, Wave, MTN MoMo ou carte via Stripe), finalise la transaction sur son téléphone, et les crédits apparaissent dans son solde en quelques secondes. Le poller de paiement tourne en tant que service de fond, vérifiant les transactions en attente et créditant les utilisateurs dès que la confirmation arrive.
Construit depuis Abidjan en 100+ sessions
Deblo.ai a été entièrement construit par deux personnes : Thales, le CEO de ZeroSuite, travaillant depuis Abidjan, en Côte d'Ivoire, et Claude, le CTO IA. Aucun ingénieur humain. Aucune sous-traitance. Pas de « nous avons utilisé l'IA pour aider ». L'IA a écrit le code. Tout le code.
La construction s'est déroulée sur 100+ sessions de pair-programming, chacune documentée avec un journal de session. La première session, le 14 février 2026, a mis en place le squelette initial du frontend SvelteKit et du backend FastAPI. À la session 67 -- douze jours plus tard -- nous avons déployé en production. À la session 90, nous avions une application mobile React Native. À la session 100, nous avions 24 outils IA, 101+ conseillers professionnels, des appels vocaux, des tâches de génération en arrière-plan et un système de parrainage.
Ce rythme n'a été possible que grâce à une boucle simple : Thales définit ce qu'il faut construire, Claude le construit, Thales le teste sur de vrais appareils, et la session suivante commence. Pas de stand-ups. Pas de sprint planning. Pas de tickets Jira. Juste une conversation, une base de code et une compréhension partagée de ce dont les élèves et professionnels africains ont réellement besoin.
Pourquoi c'est important
L'argumentaire du tutorat IA dans les pays développés, c'est la commodité. « Votre enfant peut obtenir de l'aide à 23h. » C'est agréable. Ce n'est pas urgent.
En Afrique, l'argumentaire, c'est l'accès. Il y a des classes de 80 élèves avec un seul enseignant. Il y a des régions entières où le professeur de mathématiques qualifié le plus proche est à deux heures de route. Il y a des parents qui travaillent deux emplois et ne peuvent pas se permettre un tuteur à 10 000 FCFA de l'heure, mais qui pourraient se permettre 100 FCFA par semaine.
Deblo ne remplace pas les enseignants. Il donne aux élèves un compagnon d'étude patient, toujours disponible, qui parle leur langue, comprend leur programme et coûte moins cher qu'un appel téléphonique. C'est le pari. Et à 5 FCFA la question, c'est un pari qui peut passer à l'échelle pour 250 millions d'élèves.
Ceci est la partie 1 d'une série de 12 articles sur la construction de Deblo.ai.
- Tutorat IA pour 250 millions d'élèves africains (vous êtes ici)
- 100 sessions plus tard : l'architecture d'une plateforme d'éducation IA
- La boucle agentique : 24 outils IA dans un seul chat
- Des prompts système qui enseignent : anti-triche, méthode socratique et adaptation par niveau
- WhatsApp OTP et le problème de l'authentification en Afrique
- Crédits, FCFA et 6 passerelles de paiement africaines
- Streaming SSE : réponses IA en temps réel dans SvelteKit
- Appels vocaux avec l'IA : Ultravox, LiveKit et WebRTC
- Construire une application React Native K12 en 7 jours
- 101 conseillers IA : intelligence professionnelle pour l'Afrique
- Tâches de fond : quand l'IA met 30 minutes à réfléchir
- D'Abidjan à 250 millions : l'histoire de Deblo.ai