Deblo.ai
AI tutoring for 250 million African students
Educational platform for CP to Terminale with a Pro tier offering 101 specialized AI advisors across 14 business functions (finance, IT, HR, marketing, legal, ops, and more). French-first. Phone + WhatsApp OTP authentication.
Building Deblo
A GO on the Founder's Own Voice: How We Decided Déblo Duo Was Ready for a Beta
We tested Déblo Duo's translation engine on clips the CEO recorded himself. Amounts were 94% correct in the input transcript and 82% in the spoken translation. That gap decided where on-screen numbers come from.
Déblo Duo Is on Google Play: The App I Was Waiting For, and the Argument About When to Ship It
Déblo Duo, our real-time voice interpreter, is live on Google Play in 178 countries. Why I held it back while the agents pushed to ship, and what each side got right.
Why Déblo Duo Is a Second App: The Rule We Wrote to Stop Making More
Déblo Duo is a live AI interpreter: each person speaks their language and hears the other in theirs. Why it became a separate app, and the rule we wrote so it stays the exception.
The Prompt Said Announce It. The Model Didn't. So the Worker Did: Closing a 15-Second Silence in Déblo Voice
Déblo Voice went silent for about 15 seconds whenever a hard question triggered a deep search. The prompt already required an announcement, but the native-audio model emits the function call as its first token. The silence also had two parts, tool execution then reply latency, so no prompt could close it. We moved the guarantee into the LiveKit worker: a pre-recorded announcement in the session's own voice and language, and a soft typing sound while the agent thinks. Proven in production on October 16, 2026: 14 and 17.5 seconds of model-side silence, about 0.4 seconds heard by the user.
The Segfault That Wasn't Ours: Shipping Déblo's Launch-Day Tracking On Launch Night — Env-Gated Analytics, Native-Store Attribution, Three Bugs The Compiler Could Not See, And An Out-Of-Memory Build We Diagnosed Instead Of Reverting
On July 1, 2026 — launch day — the risk was never the copy. It was the paid campaigns going out blind. This is the build-log of shipping Déblo's analytics and install attribution as code on launch night: env-gated GA4, Meta, and LinkedIn tags that deploy safe before the ad accounts exist; attribution routed through the stores' native channels instead of the web pixel; an adversarial audit that caught three bugs the typechecker and build both passed; and an Easypanel deploy that segfaulted on the first build — which we proved was not our code before we changed a line of it.
Why The Word 'Médicament' Has To Find The Word 'Paracétamol': How We Replaced Postgres Full-Text Search With Google's Latest Embedding Model To Serve The African Mother Who Doesn't Know Pharmacology
On June 2, 2026, a mom asked Déblo 'do I have medications to take this week?' — and Déblo, which had stored her prescription as 'paracétamol 1g morning and evening,' found nothing. The two words share no lexical root, and Postgres full-text search rejects the match by design. Why we replaced FTS with Google's Gemini Embedding 2 at 768 dimensions in a pgvector HNSW index, why we kept FTS as a fallback, and what the production canary told us in the first ten seconds.
Pulse: How We Replaced The Pitch Deck With A Real-Time Voice AI That Investors Can Ask Direct Questions To — On The Same Foundation As The Consumer Product
Pulse is the investor-facing surface of Déblo, built on the same FastAPI backend, same LiveKit worker, same Gemini Live model. Magic-link HMAC RBAC, thirty-five voice tools plus three helpers, a Postgres materialized view for retention math, the radical-minimalism home redesign, and the one-shot action tools prompt rule. Due diligence as demo.
Déblo Opens Its Doors: After Fifteen Months Of Building And Three Apple Reviews, The Real-Time Voice And Eyes AI We Made For The Billion People Without Access To Expertise Is About To Be Public
On May 29, 2026, Apple approved Déblo for distribution. The launch post that names the thesis — one billion people locked out of AI by keyboards, English, credit cards, and literacy — the two moats, the trio Voice plus Eyes plus Chat, the engineering methodology, and what June 1 actually looks like.
Eleven Bugs Between Submit And Ship: A Five-Hour Dual-Store Submission Session, Walked Through Bug By Bug, From RCT-Folly Podspecs To Sixteen-Kilobyte Page Sizes
Eleven distinct bugs found and shipped in a single five-hour dual-store submit session, from RCT-Folly podspecs under Expo SDK 54 to a sixteen-kilobyte Android page-size warning. Bug by bug, what broke, what the fix looked like, which three required persistence-layer follow-ups, and which one we deferred cleanly to versionCode 3.
Naming The Six Partners: How An Apple Rejection Forced Us To Reverse The Decision To Hide Our Stack, And Why The Reversal Was The Right Product Call
Apple's three-guideline rejection on build 1.0.5 forced us to reverse the session-178 CEO decision to hide the AI stack. Why we now name OpenRouter, Google Gemini Live, Anthropic Claude, Mistral, Datalab Marker, and Sentry in the consent modal before the Accept button — and what the reversal taught us about disclosure surfaces.
Step Zero Wasn’t Enough: How Validating A Constructor But Not The Runtime Took Down Every Déblo Voice Session The Hour We Shipped Real-Time Camera Streaming
Phase 14 shipped Déblo Eyes — real-time camera streaming over LiveKit to Gemini Live native audio. The first deploy took down every voice session in production within ninety seconds because our Step 0 had validated the constructor without exercising the runtime path. The build log of how Déblo got eyes, what an incomplete pre-flight check cost us, and which polish items we shipped versus deferred.
The Em-Dash That Killed Production: How One Marketing Tagline In An HTTP Header Took Down Déblo’s Chat For 24 Hours
Two days before App Store submission, Déblo’s entire chat product silently broke. No spinner, no toast, no error in the UI — just dead air. The 24-hour outage came down to a single « é » in an HTTP header value raising UnicodeEncodeError before any request to OpenRouter ever left the backend. The post-mortem of a false hypothesis, a Sentry trace, and a 6-line fix that unblocked the launch.