- invoice_number
- MRFL4…0006
- total
- 220.00 USD
Invoice · Amount due $220.00 USD
indx
The problem
Nobody should hand-wire a pipeline per document type
Section titled “Nobody should hand-wire a pipeline per document type”To use AI on internal documents, someone has had to decide up front which model and which parser reads each data type. Bespoke pipelines pile up, one per format. Months pass between a pilot and production.
indx exists to remove that decision. One routing layer sends each page to the cheapest path that works, and returns AI-ready output — text, structured metadata, chunks, and embeddings — for an index you control.
The ladder
Every page takes the cheapest rung that works
Section titled “Every page takes the cheapest rung that works”Routing escalates over four capability kinds. Most pages stop at the first rung. Every rung below the selected one stays in the plan as a fallback, so no page is silently dropped.
Read what is already text
The text layer already exists. Extraction runs on CPU at near-zero cost.
Recognize scanned pages
PP-OCR on CPU. An optional install: –extra ocr.
Escalate the hard pages
A vision model reads what OCR cannot. GPU or hosted. An optional install: –extra vlm.
End at a person, never at a loss
The terminal rung. A human can read anything, so nothing disappears.
What you get
Blocks you can address, trace, and embed
Section titled “Blocks you can address, trace, and embed”Use the output directly
Blocks are addressable: document, page, region, chunk. Each carries text, status, hierarchy, and provenance.
Keep structure when it exists
Specialist capabilities attach extracted fields to the block that stated them. Nothing is flattened into plain text.
Prepare retrieval and agents
Chunk blocks can carry versioned embeddings. The matching query encoder is exposed through the same core.
Explain every result
The plan, every execution attempt, actual usage, and explicit unreadable states stay in the response.
Who it’s for
Three callers. One contract.
Section titled “Three callers. One contract.”Retrieval and agent pipelines
Chunk text and versioned embeddings for an index you control. The matching query encoder comes with them, or the vectors are useless later.
Document-processing applications
Applications that must answer for their processing. The plan and the trace answer what it cost, where it ran, and what happened to page 47.
Corpus operators
The cheap path whenever it is sufficient. Explicit escalation when it is not. The difference is measurable, not asserted.
None of them wants a router. They want outcomes — see goals and non-goals.
Measured
Real documents. Honest numbers.
Section titled “Real documents. Honest numbers.”The repository owns a benchmark over seventeen real multi-page documents, 1,361 pages. These three figures depend on no label. Both sides of the cost comparison are estimates from the same economics table, and accuracy is scored over a labelled subset whose labels are still under review, so no accuracy figure is quoted here.
Read the benchmark details before treating these as production claims.
Goals
Backbone first. Everything else waits for measured baselines.
Section titled “Backbone first. Everything else waits for measured baselines.”Working now
- Explainable plans, reproducible per input
- Execution with declared fallbacks and a full trace
- HTTP, CLI, and Python interfaces over one contract
- A repository-owned benchmark
Planned
- Corpus classification on CPU
- Difficult enterprise data: handwriting, drawings, spreadsheets
- Agent-readable export to an index you control
Non-goals
- Owning your vector index
- Heavy processing during planning
- Silent re-planning during execution
The full lists live in goals and non-goals. The feature-by-feature catalog, with examples, is features.
Extend
A capability is an install, not a code change
Section titled “A capability is an install, not a code change”Capabilities are separate distributions discovered through the indx.capabilities entry point. Installing one makes it routable. The default install carries no model weights and no credentials.
Extend indx walks through building your own.
Active development. Routing, execution, fallbacks, and the HTTP, CLI, and Python interfaces are implemented. Output quality is not measured yet. OCR, VLM, and model-backed embedding engines are optional installs. Common questions are answered in the FAQ.