Home
Writing
Blog
Deep dives on projects I have built: architecture decisions, what I learned, and what I would do differently.
Series
Birr AI
3 parts
- Building Birr AI: a Django + React navigator for NBE directivesHow I shaped Birr AI around source-grounded regulatory answers, a real document index, and a constrained RAG orchestrator instead of a loose chatbot.
- Streaming grounded answers: the SSE architecture behind Birr AIHow Birr AI streams RAG answers with async Django, Server-Sent Events, persisted messages, and source payloads without adding WebSockets or a separate realtime service.
- Keeping Birr AI current: the nightly document ingestion pipelineHow the Birr AI ingestion job discovers NBE files, extracts Markdown, embeds chunks into pgvector, handles quotas, and stays resumable with ordinary Django models.
Series
EvalBoard
3 parts
- EvalBoard: treating prompts like testsHow EvalBoard models datasets, prompt templates, runs, and per-row results so LLM behavior can be measured instead of judged from one good demo.
- BYOK in EvalBoard: provider access without storing secretsHow EvalBoard supports OpenAI-compatible LLM providers, sends user API keys per request, and keeps provider integration small while accepting the tradeoffs of browser-held keys.
- EvalBoard analytics: turning run history into a dashboard with the Django ORMHow EvalBoard uses aggregate queries, conditional counts, cached stats, and Recharts to summarize LLM evaluation history from one DRF endpoint.
Series
E-Commerce API
3 parts
- From cart to order: safe checkout in a Django e-commerce APIHow the e-commerce API turns carts into orders with price snapshots, row locks, atomic transactions, F expressions, and stock validation that prevents overselling.
- Chapa payments: treating the provider as the source of truthHow the e-commerce API initializes Chapa payments, stores pending transactions, verifies webhooks, and atomically updates payment and order state.
- Testing an e-commerce API as a complete workflowHow the e-commerce API uses pytest-django, DRF test clients, OpenAPI docs, Docker, and CI to protect the registration, checkout, and payment paths.
Series
Virtual Blood Bank
3 parts
- Virtual Blood Bank: modeling healthcare workflows beyond CRUDHow the Virtual Blood Bank API models facilities, blood units, inter-facility requests, and request history for a healthcare workflow where state changes matter.
- Least-privilege roles and request transitions in Virtual Blood BankHow VBB separates clinicians, supply staff, and admins, then routes every blood request action through an authorizer and lifecycle service.
- Inventory summaries, expiry alerts, and notifications in Virtual Blood BankHow VBB turns facility inventory into dashboard summaries, low-stock alerts, expiring-soon flags, notification events, and audit records without overbuilding infrastructure.