Skip to content

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

  1. 01

    Break up the monolith

    Migrated Flask to Next.js, Express and FastAPI microservices with CI/CD on GitHub Actions.

  2. 02

    RAG built from scratch

    Semantic chunking, Gemini embeddings and retrieval on Qdrant, with an OCR fallback for scanned PDFs.

  3. 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.

  4. 04

    Clean deletes across stores

    Cascade deletion across MySQL, Qdrant and MinIO so removed documents disappear everywhere.

How it works

  1. 1

    Document upload

    PDF, scans, office files → MinIO

  2. 2

    Chunk + OCR fallback

    Semantic chunking, OCR for scans

  3. 3

    Gemini embeddings

    Vectors stored in Qdrant

  4. 4

    IAM-filtered retrieval

    Only chunks the user may read

  5. 5

    Answer + audit log

    Cited answer, access recorded

Retrieval path (simplified)

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)