Inspiration
Healthcare in Kenya runs on paper. Walk into most hospitals outside the major private facilities and you'll find patient histories scattered across notebooks, lost during referrals, and illegible when they matter most. A patient who can't read or write, or who only speaks their local language, is often left out of understanding their own diagnosis. I wanted to build something that didn't just digitize records, but actively closed the language and literacy gap between patients and the health system using AI not as a gimmick, but as the actual bridge between a patient's spoken words and a doctor's clinical notes.
That's what became Uzima Link: a multilingual, AI-powered digital health records platform designed specifically for the realities of Kenyan hospitals.
What it does Uzima Link gives every hospital three connected experiences: Patients can speak in their own language audio gets transcribed, translated, and turned into structured clinical entities automatically, so their symptoms are captured accurately even if they can't type or write in English. Kiosk operators support walk-in patients who need help registering and recording their visit, removing the literacy barrier at the front desk. Doctors get a clean, structured view of patient history and AI-extracted clinical entities, instead of hunting through paper files or garbled notes. Admins oversee users, roles, and hospital-wide records.
Behind the scenes, Google Gemini handles audio transcription, translation, and clinical entity extraction, turning a patient's raw voice recording into something a doctor can actually act on in seconds.
How I built it The backend is a layered FastAPI application with SQLAlchemy and PostgreSQL, built around clean separation of concerns so the AI pipeline, auth, and business logic don't tangle into each other. JWT handles authentication across the three roles, and Resend powers password reset flows. The frontend is Next.js 16 with React 19, styled with CSS Modules for full control over the multilingual, accessibility-first interface.
The AI pipeline is the heart of the product: a patient's spoken audio is transcribed, translated, and passed through Gemini for clinical entity extraction, converting unstructured speech into structured medical data doctors can trust.
I backed the whole system with a 50-test pytest suite covering the backend and 50 Cypress end-to-end tests covering real user flows across all three roles, because a health records platform that hasn't been tested rigorously isn't one hospitals can trust.
Challenges I ran into Environment instability: Python venv conflicts on Linux kept breaking my builds until I stabilized the whole setup with uv. Dependency hell: bcrypt and passlib had a version incompatibility that silently broke password hashing a quiet bug that could've been dangerous in production if it shipped unnoticed. Model deprecation mid-build: My original Gemini model was deprecated while I was actively building, forcing a live migration to gemini-3.5-flash without breaking the pipeline. Audio format issues: WebM audio from browser recordings had mime type mismatches that broke transcription until I traced it down to the actual encoding handoff between frontend and API.
Accomplishments that I'm proud of
Getting a full three-role, AI-integrated clinical pipeline working end-to-end, backed by over 100 tests total, is the accomplishment I'm proudest of. It's not a prototype that only works in a demo it's a system built to survive contact with real hospital workflows, real accents, real bad audio, and real edge cases in patient data.
What I learned I learned that in health tech, the AI is the easy part the hard part is everything around it: making sure a bcrypt version bump doesn't silently break authentication, making sure a deprecated model doesn't take down transcription mid-deployment, making sure the system degrades gracefully instead of catastrophically. I came out of this build with a much deeper respect for defensive engineering in domains where the stakes are someone's medical record, not just a shopping cart.
What's next for Uzima Link The next phase is piloting with a real Kenyan hospital to stress-test the AI pipeline against genuine multilingual, multi-accent patient audio, and using that feedback to harden the clinical entity extraction further. Longer-term, I want to expand language coverage, add offline-first support for low-connectivity clinics, and build out the admin analytics layer so hospital leadership can see patient trends across the records Uzima Link is quietly securing.
Built With
- bcrypt
- css-modules
- cypress
- fastapi
- gemini-api
- google-gemini
- javascript
- jwt
- machine-translation
- natural-language-processing
- next.js
- passlib
- postgresql
- pytest
- python
- react
- resend
- rest-api
- speech-to-text
- sqlalchemy
- uv
Log in or sign up for Devpost to join the conversation.