My stack The stack · Go

Go

Three of the things I maintain are Go, and all three are Go for the same reason: somebody else compiles them into their own program.

49,891lines across the retrieval engine, on Go 1.25
3repositories: the engine, pdfgrab and LLMGate
9packages in the engine — parser, tree, retrieval, ingest, storage, cache, queue, db, config
01Why Go and not the obvious alternative

All three of these are libraries before they are services. Somebody imports pdfgrab into their own binary; somebody runs the engine next to their own application. That changes the engineering problem: a panic in my code is an outage in theirs, and a dependency I pull in becomes a dependency they inherit.

Go is good at exactly that shape — one static binary, no runtime to install on the host, a standard library big enough that most of these have very few dependencies, and a compiler strict enough to catch the class of mistake that would otherwise reach somebody else’s production.

02What the engine actually does No chunking, and nothing embedded — which is the whole claim.
Vectorless, at ingest and at query

A PDF has no headings. Only glyphs with a size and a position.

parse the streamglyphs, lines, rects
rebuild the treereal sections, page ranges
persist itno chunks, no vectors
an LLM walks itopens what it needs
answers with citationsthe section, not the page

Vector RAG cuts a document into fragments and searches them by approximate similarity. The fragments have lost the structure that made the document answerable in the first place — so top-K becomes a guess and you maintain a second database to make the guess. Vectorless rebuilds the hierarchy at ingest and then has an LLM navigate it the way a person flips to the right page: read the table of contents, open the sections that matter, answer from them. Nothing is chunked and nothing is embedded.

03The three, and what each one is for Different problems, one reason for the language.
The retrieval engine

About 49,891 lines on Go 1.25, split across parser, tree, retrieval, ingest, storage, cache and queue, with Connect RPC generated through buf and benchmark commands beside the server.

pdfgrab

Walks the PDF content stream and surfaces positioned characters, lines, rects and curves. Tables are found by geometry rather than guessed from text order.

Coordinates, kept

Every extracted string keeps the coordinates it came from, so a rasterised page can be drawn with the evidence highlighted in place. That is the part pdfplumber does not give you, and the reason it exists.

LLMGate

Anthropic, OpenAI and Gemini behind one client with routing, fallback, cost tracking and composable middleware — so nothing above it is wired to a single vendor.

Quality is meaningless without its price.

the vectorless-bench harness, on reporting cost and latency beside recall
04On the benchmark, honestly The part where I do not have a number to give you.

The harness exists. The scores are not in the repository, so they are not on this page.

  • What is measuredvectorless-bench scores page- and section-grounded recall of the evidence on FinanceBench — SEC filings whose answers sit in dense financial tables, which is the hard case.
  • Against whatThe treewalk retrieval mode against a BM25 lexical floor and the upstream PageIndex library, on equal footing: same model, same hardware, cold cache.
  • How it is scoredRank-based statistics across tasks rather than a cherry-picked win, and cost and latency reported alongside quality.
  • Why there is no number hereThe result set is not published in the repository. I am not going to put a figure on this page that you cannot open the repo and check — so the method is described and the score is not claimed.
05The repository
The case study

vectorless-engine

Start at pkg/tree and pkg/retrieval — the first builds the structure, the second is the agentic loop that walks it. cmd/ holds the server and the benchmark commands.

The compiler is doing work on somebody else's behalf.

That is the argument for Go here, and it is specific: these are things other people build into their own programs, and strictness at compile time is cheaper than a panic in a stranger's service.