Blog
All articles. All pillars. All authors.
101 AI Advisors: Professional Intelligence for Africa
60+ specialized AI advisors across 14 categories: SYSCOHADA accountants, OHADA lawyers, tax specialists. How we built professional intelligence for Africa.
Observability: Tracking Every LLM Call in Production
AILog tracks every LLM call. SystemSetting enables config without redeploy. ExerciseResult measures learning. The admin dashboard behind the obscured route.
Detecting AI Agents in Your Codebase
A 3-tier detection hierarchy: Co-Authored-By commit trailers, environment variables (CLAUDE_CODE, CURSOR_SESSION), and TTY heuristics for identifying AI-generated code changes.
Credits, FCFA, and 6 African Payment Gateways
USD-cent pricing, 13 currencies, Orange Money and M-Pesa, 3 payment gateways, webhook-driven confirmation, and a background poller. Monetizing an African SaaS.
Cron Jobs and Preview Environments: Two Features, Zero Downtime
How we built cron job scheduling with timeout enforcement and preview environments with PR webhook integration -- developed in parallel using git worktree isolation.
Voice Calls With AI: Ultravox, LiveKit, and WebRTC
Real-time voice conversations with the AI tutor: Ultravox sessions, LiveKit WebRTC, photo analysis mid-call, and per-minute credit billing.
Monitoring and Alerts: Email, Slack, Discord, Telegram, Webhooks
Building a monitoring system with periodic Docker stats collection, threshold-based alert evaluation, and multi-channel dispatch to Email, Slack, Discord, Telegram, and webhooks.
100 Sessions Later: The Architecture of an AI Education Platform
FastAPI + SvelteKit + PostgreSQL + Redis + React Native. 24+ tables, 100+ endpoints, 60+ components, SSE streaming. The full architecture of Deblo.ai.
34 Rules to Catch Deployment Mistakes Before They Happen
We built a pure-Rust static analysis engine with 34 rules across 8 categories to catch security issues, misconfigurations, and deployment mistakes before they reach production.
#094 -- The Raw Tag: Escape Hatch for HTML
How FLIN's <raw> tag enables injecting trusted HTML directly into the DOM -- powering markdown rendering, SVG icons, and rich content display while maintaining security.
#113 -- Request Body Validators
How FLIN's validate blocks enforce type safety, constraints, and business rules on incoming request data -- declarative validation that runs before your handler code and returns structured error responses.
WhatsApp OTP and the African Authentication Problem
Email does not work. SMS is expensive. WhatsApp is universal. How we built authentication for Africa with WhatsApp OTP, Google OAuth, and student access codes.