node test/selfcheck.mjsGive it a niche.
Get a tool site that ranks.
It reads the topic, builds a working tool for it, and checks every figure against a primary source before anything ships. A reservoir tracker on live USGS gages. A take-home pay estimator on this year's HMRC rates. When a value will not prove, the run stops and the page waits for you.
Four values cleared. One did not, so the page shipped without the unit that depended on it, rather than with a plausible substitute.
Set it up once. It ships tools for every niche you point it at.
This isn't a service and it isn't a one-off build. You install the pipeline on your own machine, give it a niche, and it researches, verifies, builds and stages a tool site. Then you do it again. And again. The sites below came out of the same command you'd be running.
- Unlimited sites, unlimited niches. No per-site fee, no seat count, no metering
- Runs on your machine, your API key, your hosting. Nothing routes through me
- 14 anti-fabrication layers plus 5 originality layers, on every page it makes
- Eleven provider adapters behind one environment variable, nine of them named LLM vendors plus an offline stub and a custom endpoint. Claude is the one proven end to end
- Everything it produces is yours, including the sites, the data and the repos
- You pay for your own inference. Against a Claude subscription that is nothing, and the cheaper providers cost a fraction of a dollar per build once you have picked one
Who this is for
Solo operators
You want a portfolio of small tool sites that earn. Run the pipeline once per niche instead of hand-building each one.SEO agencies
You need pages a client's legal team won't flinch at. Every figure traces back to the source it cites, on every site you run it for.Indie hackers
You've watched AI content get de-indexed and you want the opposite problem. Fewer pages, none of them junk.You do not have to take any of this on faith. Six sites it built are linked below, each one live, each figure traceable to the source it cites.
Two ways to make a page
The second one publishes less. That's the entire advantage.
The rule the whole thing runs on
The model never states a number. Code fetches every value, recomputes it, then re-fetches the citation to confirm it still says what was claimed. That refusal is the product.
Measured, not asserted
None of these are marketing figures. The engine numbers come from a test run you can reproduce against a clean checkout in under a minute. The traffic numbers are this operator's own Search Console totals.
# what a run looks like. code does the arithmetic, not the model. $ node orchestrator.mjs --site example-cooking-converter --dry-run 01..09 ok stage 04 validated 5 constants via L2-L5 US cup = 236.5882365 ml water = 236.164 g per cup stage 10 blocked, awaiting human sign-off → Nothing published. The gate worked.
What it shipped
six of the 34 liveToolsThatRank has shipped 34 live tool sites citing primary sources including USGS, HMRC and the IRS. Six are listed below, and all 34 are the properties measured on the measured data page.
Each one is a working tool, not an article about one. Some calculate, some convert, and one takes no input at all because its job is to read 25 live gages and tell you whether you can launch a boat. The model didn't write a single figure on them. Code fetched and recomputed all of it. Every domain below was registered between 19 and 22 June 2026, so read the traffic as six weeks of compounding, not a mature fleet.
Built by Michael Lip, a solo developer whose code is merged into 66 open-source projects holding 241,000+ stars between them, among them Prefect, Puter and Google's Chrome extension samples. The same agentic pipeline runs every property listed here. None of it's hand-maintained.
Pull-request counts come from the GitHub API and exclude self-merges. Named projects: PrefectHQ/prefect, HeyPuter/puter, GoogleChrome/chrome-extensions-samples. Star counts and the 36-above-1,000 detail were summed over those 66 repositories on and came to 241,827. Extension totals come from the one file that holds them for the whole estate, which recorded 87 extensions and 87,500 users on . Those extensions are a separate business from this pipeline and are here as evidence that one person ships, not as output of the product you are buying.
Revenue is a dated reading, not a live feed. Read from the Stripe API on , the account held 38 active subscriptions worth $267.86 MRR, and two of those sit on a one-dollar seven-day trial price, so 36 pay full price. Traffic comes from this operator's own Search Console. He holds 35 verified domains, 34 of them readable by the reporting account, and those 34 are the sites counted above. Over the 30 days to the 34 took 1,826 clicks in total. Strip out belikenative.com and zovo.one, which predate the pipeline and were not built by it, and 533 remain. That 533 is the number this product earned. Every figure in this grid carries the date it was read, and a reading goes stale.
How a page gets made
Research runs first on purpose. Generate first and you're checking hallucinations afterwards. Go the other way round and there's nothing left to invent.
Research before writing
Agents read primary sources and extract claims. Nothing is drafted yet. A claim with no source is dropped at the door.
Validate every value
Each number gets fetched from its primary source, cross-checked against the median of its citations, then range and freshness checked. Anything that fails is held.
Generate against the bundle
Prose is written only from validated data. Every figure stays a token the build step fills from code.
Refute it
A separate agent attacks each claim. Two refutations out of three kills it. Then every cited URL is re-fetched and must still contain the claim.
Earn the ranking
Originality layers read what already ranks and score what this page adds beyond it. A page that only restates the competition is blocked.
Stop at the human gate
A clean run halts and waits for a person. The pipeline never publishes on its own.
Runs on any LLM
One environment variable, PSEO_PROVIDER. Name a model that doesn't exist and it throws a loud config error instead of guessing.
Where the guarantee stops
The floor is correctness. But correctness isn't a growth strategy, and pretending otherwise would be its own kind of fabrication.
Refuse to fabricate
No invented numbers, no uncited claims, no stale data presented as fresh. That floor holds under adversarial audit.
Build real utility
Working tools, not articles about tools. A calculator, a converter, a live data tracker. Utility is what earns the ranking.
Manufacture authority
Links, brand and time still decide competitive niches. Correctness is necessary. It isn't sufficient.
Publish for you
Every clean run stops at a human gate. Deployment's opt in, and it degrades to a preview on any stack.
Who is behind this
One person, in public. The work happens where you can watch it, not behind a landing page.
Questions people actually ask
How do you stop an LLM from hallucinating numbers?
ToolsThatRank removes the model's permission to write numbers. Its 14 trust layers pin each figure to a cited primary source, and code recomputes the deterministic ones.
Can AI-generated tools rank in Google?
Google's March 2024 spam policies named scaled content abuse, which targets pages generated mainly to manipulate rankings rather than help anyone, no matter whether a human or a machine made them. A working tool isn't that. Utility and verified data are what earn the position, and the originality layers block any page that only restates what already ranks.
What is a programmatic SEO pipeline?
A system that generates many pages from one template and a data source. Most produce thin, near-duplicate pages. This one won't emit a page whose numbers can't be traced back to a primary source. That's why it finishes fewer pages than it starts.
What exactly do I get for $99?
The full pipeline, one time, yours to keep. Fourteen trust layers, five originality layers, eleven provider adapters (nine named LLM vendors, plus an offline stub and a custom endpoint), the site templates and the deploy step. You run it on your own machine against your own API key, for as many niches as you want. There is no per-site fee and no metering. API spend is yours. Run it against a Claude subscription and the marginal cost is nothing. The cheaper HTTP providers cost a fraction of a dollar per build, and frontier models through the CLI cost more, so pick the provider that fits your budget.
Which LLM does it need?
Eleven adapters ship, nine of them named LLM vendors, and the other two are an offline stub and a custom endpoint you point anywhere. You pick with one environment variable. Claude runs through the local CLI and that's the battle-tested path, while OpenAI, Kimi, GLM, DeepSeek and Ollama all share an OpenAI-compatible HTTP adapter. Get the model name wrong and it throws. Loudly, rather than guessing.