Why we built FaziCore — and what schools actually need.
Most school management systems were designed for a market that doesn't exist in Kenya. We threw out the playbook and started with the question every deputy principal asked us: 'can it run on a phone in a power cut?'
In 2023 I visited fourteen schools across Nairobi, Mombasa and Kisumu. I sat with principals, deputy principals, exam coordinators and bursars. I asked one question: what does your end-of-term feel like?
The answers were remarkably consistent. Chaos. Spreadsheets emailed back and forth at midnight. WhatsApp groups with 200 teachers. A bursary office running three different books and reconciling them by hand on the last day.
Every school I visited had tried a school management system. Most had given up on it. The reasons were always the same:
- It didn't work offline. Kenya's electricity and data are improving — but "improving" isn't "reliable," and a system that dies in a power cut is useless to a deputy principal printing report cards at 11pm.
- It was built for a Western school structure. Fee collection via M-Pesa was bolted on as an afterthought, if at all. CBC (Competency-Based Curriculum) support was missing. Kenyan grading systems weren't native.
- Training was a one-day workshop and a PDF manual. Then the vendor disappeared.
The question that changed the design
One deputy principal in Kisumu — I'll call her Mrs. Achieng — put it better than anyone else. She pulled out her phone, a mid-range Android running on mobile data, and said: "Can it run on this, in a power cut?"
That became the design constraint for FaziCore. Not "feature-complete" or "enterprise-grade." Can it run on a mid-range Android on mobile data, in a power cut?
Everything else followed from that question.
The technical decisions that question forced
We chose a progressive web app architecture — not a native app, because schools don't have a budget to buy everyone iPhones, and the Play Store review cycle is too slow for the update cadence we needed. A PWA can be installed from a link, works offline via service workers, and updates silently.
We built offline-first from day one. All critical data — student records, exam marks, attendance — is stored locally in IndexedDB and synced to the server when connectivity is available. The sync is conflict-aware: if two teachers mark the same paper offline, we surface the conflict and let the exam coordinator resolve it. We don't silently overwrite.
M-Pesa is native, not bolted on. We integrated Daraja directly, not through a third-party aggregator. This matters for two reasons: lower transaction fees, and full control over the reconciliation data. Every M-Pesa payment creates a ledger entry that the bursary can pull into their end-of-month report with one click.
What we still got wrong (and fixed)
Our first exam module was too faithful to how exams worked on paper. We built it for a coordinator who understood the old process. The problem: the old process was broken. It was designed around paper because paper was the only option. We were automating a workaround, not solving the underlying problem.
Version two of the exam module was designed around the outcome the coordinator needed — a complete, error-checked mark sheet, ready for the printer — and worked backwards from there. It's the version that's in production today.
Where we are now
FaziCore is in beta with four schools. End-of-term 2 ran on it in April 2026. Three of the four schools processed report cards in under two days — compared to a week-plus by hand. The fourth hit a sync issue we've since resolved.
We're opening the waitlist. If you run a Kenyan school and you're tired of the spreadsheet chaos, get in touch.