Skip to content
Eliud Munyala
← All work

Records platform for 50+ diplomatic missions

A multi-tenant document and records management system with hybrid search and AI classification.

Role
Senior Technical Lead
Period
2025 – 2026
Sector
Government · foreign affairs
Team
5 engineers, 3 researchers
Stack
  • Django REST Framework
  • PostgreSQL RLS
  • ParadeDB BM25
  • pgvector
  • Celery
  • Zitadel OIDC

The problem

Over fifty missions needed one records system where each mission's documents stay isolated, every access is auditable, and staff can find a file in seconds.

What I built

  • Tenant isolation through PostgreSQL row-level security and per-tenant S3 prefixes; object-level permissions via django-guardian.
  • Zitadel OIDC single sign-on with MFA.
  • Hybrid search combining ParadeDB BM25 with pgvector semantic embeddings.
  • Async pipelines for OCR (Tesseract, Kreuzberg), IMAP ingestion and barcode routing.
  • LLM document classification through LiteLLM with a Groq → DeepSeek → Gemini fallback chain, plus FastText auto-categorisation.

Outcome

  • 49 API endpoints, 305 schema migrations and 2,000+ automated tests.
  • Serving 50+ missions from one codebase.

Updated 2026-10-17 · Client name withheld.

Need something like this?

Tell me what you're working on and I'll reply within one working day.

Start a conversation