Tameni
livebuilt at TameniThe backend of a health app that reads lab reports from photos — OCR plus Gemini extraction, a five-stage matching engine, a health score, and family profiles — on Google Cloud.
- 1,015
- Commits
- 845
- Test cases
- 12
- Django apps
- 5
- Matching stages
PROBLEM
Patients collect lab reports as paper and photos, from different labs that name the same test in different ways. Tameni's Flutter app lets them photograph a report and get structured, trackable results. The backend has to read messy images reliably, map every lab's naming to one catalogue, flag critical values, and protect some of the most sensitive personal data there is.
WHAT'S IN IT
- Uploads go into a Celery pipeline: PaddleOCR reads the image, a guard rejects non-reports, and Gemini extracts structured results against a versioned schema.
- Prompts and schemas stored in the database with one live version per task, so extraction can be improved without a redeploy, and every prompt test run recorded.
- A health score calculated from numeric and categorical results, with trends and stale-data badges, recalculated in the background after changes settle.
- Field-level encryption of national ID, phone, and email, with HMAC hashes for lookups, a two-step GDPR-style deletion flow, and an audit log of every API request.
- Family groups with invited and guest members, FCM push notifications, doctor referrals, Paymob subscriptions, and mobile version gating — deployed with Docker, Gunicorn, and Nginx on GCP.
ROLE
Backend & cloud engineer (part-time) and author of nearly all of the backend's 1,000+ commits — Django API, OCR/AI pipeline, security, and the GCP deployment.
NOTABLE DECISION
Matching a lab's test name to the catalogue is a five-stage waterfall, not one AI call: exact match, then learned aliases, then fuzzy matching, and only then a single batched Gemini request for whatever is left — with low-confidence results sent to a human review queue. Cheap deterministic steps handle most names, the model only sees the hard cases, and every approved alias makes the next report cheaper.