IDFortech Indotama × Krakatau Jasa Industri · 2025 – 2026
RAG document repository for an industrial enterprise
Six tools merged into one platform on microservices, then a from-scratch RAG pipeline with IAM-filtered retrieval on Qdrant — 75% faster deploys.
Tech Lead
- faster deployments, weekly → daily
- 75%faster deployments, weekly → daily
- faster PostgreSQL queries
- 40%faster PostgreSQL queries
- MinIO storage uptime
- 99.9%MinIO storage uptime
Context
The situation
Fortech Indotama builds enterprise software and AI for industrial clients. The SuperApp was later extended for PT Krakatau Jasa Industri as a production document repository.
The problem. Six separate tools on a Flask monolith shipped weekly at best, and employees could not search thousands of documents — many of them scanned PDFs — while respecting who is allowed to see what.
Approach
Key decisions
- 01
Break up the monolith
Migrated Flask to Next.js, Express and FastAPI microservices with CI/CD on GitHub Actions.
- 02
RAG built from scratch
Semantic chunking, Gemini embeddings and retrieval on Qdrant, with an OCR fallback for scanned PDFs.
- 03
Permissions inside retrieval
IAM filters are applied at query time, so the model only ever sees chunks the user may read; every access is audit-logged.
- 04
Clean deletes across stores
Cascade deletion across MySQL, Qdrant and MinIO so removed documents disappear everywhere.
How it works
- 1
Document upload
PDF, scans, office files → MinIO
- 2
Chunk + OCR fallback
Semantic chunking, OCR for scans
- 3
Gemini embeddings
Vectors stored in Qdrant
- 4
IAM-filtered retrieval
Only chunks the user may read
- 5
Answer + audit log
Cited answer, access recorded
Outcome
Results
- Deployment time cut 75%; releases moved from weekly to daily.
- Average PostgreSQL query time cut 40%; MinIO storage at 99.9% uptime.
- 14 production features shipped in one 30-hour sprint, including an observability pipeline.
Next case study
Solvara Reserva: booking and deposits for clinics and rentals
Solvara (own product)