Two collections: every car sold in the US, and what agents have been caught doing - #6
Merged
Merged
Conversation
…caught doing Automotive. The catalogue is every make, model and year sold in the US since 1984 (EPA/DOE), the record against each one is NHTSA's — recalls, owner complaints, NCAP crash tests — and all four are US public domain, so unlike most of what this site indexes these rows are ours to redistribute outright. None of the three can be asked "what is new", so the adapters walk NHTSA's own year → make → model tree, resuming from the cursor and spending a budget a run. Rows land from the first run rather than after the last one. But nobody arrives holding a feed. They arrive holding a VIN. So /vin decodes one and answers the whole question at once: what the car is, what is recalled on it, what owners report going wrong, how it crashed in testing, what it gets to the gallon, what it is due for, where to buy the part and who nearby fixes it. Four upstreams in parallel, each allowed to fail on its own — a busy Overpass costs the mechanics list, not the profile around it. Two things are ours rather than the government's, and say so in the payload. The service schedule is a general interval model over the decoded powertrain, not any manufacturer's schedule, because those are licensed. And parts are searches rather than a catalogue, because fitment data (ACES/PIES) is licensed too. An EV is never told to change its oil. AI incidents. Rogue AI Tracker publishes two read-only JSON APIs and documents them in its own llms.txt, so that is the front door used here. Its robots.txt sets `ai-train=no, use=reference`, and that is honoured in what is kept, not just in what is said: title, its own summary, and every primary source it cites — never the review body. So the collection does not stand on one site, the AI Incident Database is indexed alongside it, CC BY-SA and ours to keep. The feeds are free like every other collection. The assembled vehicle lookups are metered: five an hour free, then the crawl pass that already exists at a dollar a day, or thirty a month. That is the price a buyer actually named. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_012BzJdwiBGU9hmMGE5fBxjA
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Automotive
Every make, model and year sold in the US since 1984 (EPA/DOE fuel-economy database), and NHTSA's record against each one — safety recalls, owner complaints, NCAP crash tests. All four upstreams are US federal public domain, keyless, no quota: unlike most of what this site indexes, these rows are ours to redistribute outright.
None of them can be asked "what is new" — every one is keyed by (model year, make, model). So the adapters walk NHTSA's own
year → make → modeltree, resuming from the cursor and spending a lookup budget per run. A full sweep takes about a day and then goes round again; rows land from the first run rather than after the last one.But nobody arrives holding a feed. They arrive holding a VIN.
/vindecodes one and answers the whole question at once — verified end to end against a real Postgres:A second decode of the same VIN is served from our own table in 6ms instead of 163ms, and which VINs get asked about is itself a signal worth keeping.
Four upstreams are asked in parallel and each may fail on its own: a busy Overpass costs the mechanics list, not the profile around it.
What is ours, and marked so
Two sections are not the government's, and the payload says so rather than implying otherwise:
basis: "general-interval"and a disclaimer.AI incidents
Rogue AI Tracker publishes two read-only JSON APIs and documents them in its own llms.txt as the machine-readable way in, so that is the front door used here rather than a scrape of the React app.
Its robots.txt sets
Content-Signal: search=yes, ai-train=no, use=reference. That is honoured in what is kept, not just in what is said:details,whyItMatters,fullText,eli5— the substantive review body is theirsEvery such item is tagged
reference-onlywithdata.redistribution: "reference", so a bulk export can exclude it while the public-domain and CC0 sources stay clean. There is a test asserting the review body never reaches an item.So the collection does not stand on one site: the AI Incident Database is indexed alongside it (CC BY-SA 4.0, ours to keep and redistribute with attribution). Its GraphQL endpoint is now origin-locked to browsers, so the public feed is the supported way in.
Pricing
The feeds are free and unmetered, like every other collection. The assembled vehicle lookups are metered — five an hour free, then the crawl pass that already exists at $1/day, or $30/month. Pro includes them. That is the price a buyer actually named, and the day-pass shape matches how they described their willingness to pay.
Verified
0008applies to Postgres 16 and to the PGlite schema test/vin,/c/automotive,/c/ai-incidents,/f/do-not-drive,/f/rogue-agent-incidents,/llms.txtall 200Fixed along the way: a jsonb value handed to Bun's object-insert form goes in as a JSON string and reads back quoted — the VIN decode now uses an explicit column list with
::text::jsonb, as the rest of the codebase does.🤖 Generated with Claude Code
https://claude.ai/code/session_012BzJdwiBGU9hmMGE5fBxjA