docs-puller

Transparent by design

The method,
not the mystique.

The public demo is small enough to audit and complete enough to prove the full retrieval path.

Architecture

One engine.
Two hard boundaries.

01 / BROWSER

Static Astro site

No account, cookie, or origin secret.

02 / EDGE

Cloudflare BFF

Validates, limits, strips, and measures.

03 / ORIGIN

Go + SQLite FTS5

Token-gated and read-only on Fly.

The browser can ask

A bounded query, one reviewed source filter, and a result limit from 1 to 10.

The browser cannot reach

The origin token, local roots, private corpora, arbitrary modes, or mutable operations.

Corpus v1

24 public pages.
Every input named.

The deployment accepts only the files in its signed manifest. A new content digest requires review and a fresh eval.

SQLite

8

Public domain documentation

FTS5, WAL, JSON, query planning

Go

8

CC BY 4.0 website content, unless noted otherwise

spec, memory model, modules, pipelines

PostgreSQL

8

PostgreSQL documentation license

indexes, MVCC, JSONB, WAL

The source list is versioned at eval/sample-corpus/sources.md. Production also records each retrieved content digest and the final index digest.

Frozen baseline

Claims with a replay button.

The public fixture contains 24 identifier-style and natural-language queries. It uses BM25 only. No reranker or model call can improve the score.

Hit@1

95.8%

23 of 24 queries put a correct page first.

Hit@5

100%

Every measured query found a correct page in five results.

MRR

0.979

Correct pages appear close to the top across the fixture.

p50

<1 ms

Measured engine time on the frozen local baseline.

This proves

The exact engine and corpus can retrieve expected public pages at the published floor.

This does not prove

Human adoption, production usage, revenue, or performance on a private corpus.

Privacy and limits

Safe by a small surface.

No visitor state

  • No account or cookie.
  • No browser bearer token.
  • No raw query in application telemetry.
  • No local or private corpus path.

Bounded requests

Query
2–160 chars
Results
1–10
Origin timeout
4 s
Response
64 KiB
Document excerpt
32 KB
Search rate
30 / min
Mode
fts5 only

Rate enforcement: Cloudflare uses the connecting address only to derive an ephemeral rate bucket. The Worker does not write the address or its derived value to logs or analytics.

Reproduce it

No special access required.

Build the same public corpus, index it, and run the fixture with the open CLI.

terminalpublic sample replay
$ git clone https://github.com/nstranquist/docs-puller
$ cd docs-puller
$ go build -tags sqlite_fts5 -o bin/docs-puller .
$ corpus="$(mktemp -d)"
$ bin/docs-puller pull \
    --from eval/sample-corpus/sources.md --out "$corpus"
$ bin/docs-puller reindex --out "$corpus"
$ bin/docs-puller eval \
    --fixture eval/sample-corpus/fixture.yaml \
    --out "$corpus" --json