Kartotecha turns scanned case files into a searchable, citable knowledge base — built for Polish-language legal documents, hosted entirely in the EU.
Illustration of a matter search. Every passage links back to its source page.
Upload, read, retrieve, confirm. Nothing in the chain is a black box.
Drop in scanned PDFs, sorted into matters (cases, deals, client files).
Kartotecha reads even low-quality Polish-language scans and tags key facts automatically — invoice numbers, parties, dates.
Find a clause instantly, ask a question and get a cited answer, or run the same questions across an entire document set at once.
Every extracted fact is reviewable. Nothing is final until a person says so.
Hosted on EU infrastructure end to end — API, database, search index, and every LLM/embedding call stay within the EU.
Every tenant's documents, search index, and chat history are fully isolated from every other tenant.
Access is scoped per case: people only see and search the matters they've been explicitly granted access to.
Every AI-extracted fact is stored separately from its human-confirmed value — nothing is silently overwritten, and every correction is attributed and timestamped.
Kartotecha is also a standalone API — the same OCR, search, and review engine behind the product above, callable directly from your own case-management system, DMS, or internal tools.
Full feature parity, not a cut-down subset. Upload, hybrid search, cited Q&A (including token-by-token streaming), multi-turn chat, and bulk review tables are all documented REST/SSE endpoints — everything the hosted product's screens do, your own UI can do too.
Your own machine credential. API keys (X-API-Key) are separate from user logins — generate and revoke them yourself from Settings, no provisioning wait on our side.
The same isolation and access control, no weaker integration path. Per-tenant data isolation and per-matter access grants are enforced identically for API callers and for people using the hosted app.
The same EU-only data residency, carried through every API call, not just the hosted product.
Typed metadata filters, not a freeform query string — invoice number, parties, dates, custom fields — so your own UI can build a structured filter form against a known schema instead of guessing at one.
Interactive, runnable docs: a live OpenAPI reference and a curl walkthrough covering every endpoint, not a static PDF spec that drifts from what's actually deployed.
$ curl -X POST \
https://api.kartotecha.pl/v1/query \
-H "X-API-Key: $KEY" \
-H "Content-Type: application/json" \
-d '{
"matter_id": "mat_8fd21",
"question": "Okres wypowiedzenia?"
}'{
"answer": "Trzymiesięczny okres
wypowiedzenia, ze skutkiem na
koniec miesiąca.",
"sources": [
{
"document": "umowa_najmu.pdf",
"page": 4,
"clause": "§7.2",
"score": 0.94
}
]
}Request a demo and we'll show you Kartotecha against a sample set of your own documents.