Find the clause.
Cite the source.
In seconds, not hours.

Kartotecha turns scanned case files into a searchable, citable knowledge base — built for Polish-language legal documents, hosted entirely in the EU.

okres wypowiedzenia umowy najmu
3 results
„Najemca może wypowiedzieć niniejszą umowę z zachowaniemtrzymiesięcznego okresu wypowiedzenia, ze skutkiem na koniec miesiąca kalendarzowego.”
umowa_najmu_Stokado.pdf·p. 4 §7.2
„Strony ustalają, żetermin wypowiedzenia wynosi jeden miesiąc w przypadku zwłoki w zapłacie czynszu przekraczającej dwa okresy rozliczeniowe.”
aneks_nr_2_skan.pdf·p. 2 §3
„…w zakresie nieuregulowanym stosuje się przepisy Kodeksu cywilnego owypowiedzeniu najmu lokali użytkowych.”
akt_notarialny_skan.pdf·p. 12

Illustration of a matter search. Every passage links back to its source page.

Hosted entirely in the EU·Data never leaves EU infrastructure·Built for GDPR-sensitive case files

How it works

Upload, read, retrieve, confirm. Nothing in the chain is a black box.

01

Upload

Drop in scanned PDFs, sorted into matters (cases, deals, client files).

02

OCR & tag

Kartotecha reads even low-quality Polish-language scans and tags key facts automatically — invoice numbers, parties, dates.

03

Search, ask, or review

Find a clause instantly, ask a question and get a cited answer, or run the same questions across an entire document set at once.

04

Confirm

Every extracted fact is reviewable. Nothing is final until a person says so.

Search that understands your documents

Hybrid search fuses meaning-based and exact-text matching, so a clause number or a client's name surfaces as reliably as a conceptual question — reranked for precision, not just recall.

Answers with a citation, always

Every answer is grounded in your own documents and points back to exactly where it came from. Kartotecha never answers from outside what you've uploaded.

Review hundreds of documents at once

Ask the same set of questions across an entire matter's documents in one pass — a structured, correctable grid instead of opening each file by hand.

Matters, teams, and access control

Organize by case or client, grant access by person or team, and keep every tenant's documents fully isolated from every other.

Security & compliance

Built for documents you can't be careless with

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.

Built to integrate

Prefer to build it into your own platform?

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.

View API documentation
POST /v1/query
$ 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
    }
  ]
}

Ready to make your case files searchable?

Request a demo and we'll show you Kartotecha against a sample set of your own documents.