Let’s talk
← All case files

Case / 2025.07 · Platform · DevOps

Need to Know

ABAC-gated RAG for an internal knowledge fabric

Self-hosted RAG across runbooks, postmortems, API docs, contracts and financials — zero leak budget, immutable audit trail, persona-gated retrieval.

/Platform-Org/ · Shipped

Zero RBAC leaks across 14 months · 87% query satisfaction · ~40 hours of review time recovered per quarter.

Hands typing a search query on a laptop

/ 01 · Stakes

What was on the line.

A platform-engineering org had a knowledge problem hiding inside an access problem: runbooks, postmortems, API specs, contracts, board materials and comp bands — six functions, four sensitivity tiers, one sprawling corpus.

Two SaaS RAG tools were killed by procurement because the corpus couldn’t leave their cloud. Engineers were grepping across Confluence, GitHub and the VDR every time they needed to remember why a service was decommissioned.

/ 02 · Approach

How we built it, in five moves.

  1. 01

    Ingest-time tier tagging on every chunk

    Documents are normalized, PII is redacted with natural phrasing preserved, and a T1–T4 tier tag is written alongside each embedding for its whole life in the store.

  2. 02

    Hybrid retrieval behind ACL gate 1

    Every query carries the asker’s tier and attributes. The candidate set is filtered before dense and BM25 retrieval fire, then a cross-encoder reranks.

  3. 03

    Fresh-permission check at gate 2

    ACLs can change inside a token’s lifetime, so gate 2 re-fetches current permissions and drops anything that no longer passes.

  4. 04

    Citation validation at gate 3

    Every citation in the model’s answer is checked against the asker’s allow-list. An out-of-tier or fabricated reference withholds the answer with a trace ID.

  5. 05

    Immutable WORM audit ledger

    Every request, allowed or refused, is written to S3 Object Lock in compliance mode with 7-year retention — not even the root account can delete it.

/ 03 · Challenges

What got in the way, and how we resolved it.

Challenge · 01

A stale-permission window: revokes can land mid-session inside a 15-minute token.

Resolution

A fresh ACL lookup on every request, behind a 60-second cache; the token TTL is only the fallback floor.

Challenge · 02

PII inside legitimately accessible documents.

Resolution

Ingest-time scanning with redaction and named-entity recovery, so sentences stay readable and the redaction state travels with the chunk.

Challenge · 03

A model that refuses everything is correct and useless.

Resolution

An over-refusal budget of 5% or less, tracked weekly and sampled by the GRC team; none missed in audit across 14 months.

/ 04 · Outcomes

What changed, in numbers.

0
RBAC leaks · 14 months
4.2s
P95 query latency
87%
Query satisfaction
40h
Review time recovered / quarter

/ 05 · Evidence

Deployed single-tenant on the customer’s own cloud. SOC 2 Type II audited. The audit ledger has been exported directly by external auditors across two full cycles.
Next case file · Public Sector · Crowd OperationsOne Fact — Crowd operations doctrine for a Kumbh-scale gathering, 2027Open file