Can an archive nobody can read be made answerable without losing the page it came from?
The systemTRINIDAD
Ask a plain question of 5,400 rare Texas documents, from the Spanish colonial records through the early 1900s, and get an answer cited to the scanned page it came off.
- Sector
- Archives and legal research
- Role
- Sole operator. Ingest, retrieval, interface, API.
- Read
- 4 min read
Every answer arrives with the scanned page it came from, so a researcher can go check it in one click.
An archive is only as useful as the part of it you can find.
Texas has one of the deepest colonial records in North America. Spanish land grants. Viceroy orders. Expedition journals. Church and mission books. Battle accounts. Legislative archives. Most of it sits in scans, which means it sits in images, which means a keyword search over it returns nothing. A researcher who wants to know what a specific alcalde did in 1798 has one move: read until they find it, or know a person who already did.
TRINIDAD is the instrument I built to close that gap. Ask it a plain question. It answers out of the documents and tells you which scanned page the answer came off.
What is actually in it
5,435 documents and 1,065,357 indexed passages, running roughly 1519 to 1950. The corpus is not one collection but several, and the collections do not overlap much:
- Blake Papers, 26,729 passages, 1734 to 1845
- Bexar Archives, 8,404 passages, 1717 to 1836
- Castañeda Collection, 5,765 passages, 1519 to 1950
- Bancroft Collection, 2,728 passages, 1519 to 1900
- Bolton Collection, 2,051 passages, 1519 to 1820
Every one of those numbers is on the live system, next to the collection it describes. That is on purpose. A number a reader cannot check is a number I should not be printing.
The part that matters
Nothing comes from the web.
An answer is assembled out of the corpus and nothing else, and it arrives with the source file and the page number attached. Click it and you get the original scan. Not a summary of the scan, not a link to a landing page about the scan. The image of the page, at the passage the claim came from.
That constraint is the whole design. Retrieval systems that reach out to the open web feel more capable and are worth less, because the moment a claim cannot be traced you have to verify the entire answer by hand, and then you might as well have read the documents yourself. Provenance is not a feature bolted on the side. It is the reason the thing is usable at all.
The pipeline that supports it: OCR over the scans, transcripts prioritized for search where a transcript exists, and a daily reprocess so new material lands without a rebuild. There is a public API, because a researcher's real workflow is rarely a chat box.
What it runs on
No model was trained on the archive. That is the part most people get backwards.
You do not train a model on your documents. You hand it the documents at query time. The scans are the knowledge base. The model is the reasoning engine. They stay separate, and that separation is what makes the citation possible: the answer can point at a page because the page was in front of the model when it answered.
The stack, plainly:
- Qdrant for vector search across the passages
- Ollama running qwen2.5:7b on local hardware, so a query costs electricity and nothing else
- Docling and PyMuPDF on ingest, because the corpus is a mix of scanned pages and born-digital text and the two need different handling
- Stripe metered billing, so an institution pays for the tokens it consumes rather than for a seat
- API keys for institutional access
No cloud model in the answer path. No per-query fee to a lab in San Francisco. Four centuries of records, queried in seconds, cited to the page.
What it does not do
Coverage after 1900 is thin. Labor history, Mexican-American civil rights, indigenous oral history, and modern personal papers are barely represented. Not everything is indexed yet.
And it is sometimes wrong. It says so on the front page.
That last line took a while to leave in. The pull is to hide it, because a system that admits error looks weaker than one that does not. It isn't. A researcher who knows where the floor is can work on top of it. One who has been told the floor is everywhere will step through it eventually, and then nothing the system ever said is trustworthy again.
Why this generalizes
Swap the archive and the shape holds. Case files. Inspection reports. Twelve years of maintenance logs. Any corpus too large to read, where being wrong has a cost and somebody eventually has to defend the answer to a person who was not in the room.
The three requirements are always the same. The answer traces to a source. The source opens in one click. The system tells you where its coverage ends.
That is the build. Everything else is interface.
If your problem has this shape, say so in three sentences and I will tell you plainly whether it fits.
Email hello@celayasolutions.com ↗Architecture
OCR over the scans (Docling and PyMuPDF), passages embedded into Qdrant, retrieval answered by a local model (Ollama, qwen2.5:7b), every answer carrying the page it was drawn from. Metered API behind Stripe.
Built out of
- Semantic retrieval
- OCR pipeline
- Page-level citation
- Public API
Evidence produced
- 1,065,357 passages, published on trinidad.town beside the collection they describe.
- Every answer links to the scanned page, so a researcher can check it in one click.
Known limitations
- OCR quality on the oldest hands is uneven, and a bad read propagates into retrieval.
Status
Live. Deployed and answering right now. Started 2025.
Artifacts
Running at
trinidad.town ↗Shares with
- ARK →
Corpus-grounded retrieval with citation
- DRAMATURG →
The same archive, mined for story
- PLAZA →
Public records, made searchable
- Celaya Solutions Research →
Provenance-aware retrieval