Repository navigation
Releases: destinjones/carfinder
Release list
v1.2.1 · Front pages match the four states; archived on Zenodo
A patch so the front pages say what the app says, and the first release archived on Zenodo.
Changed
- The website, README and About page use the four states (checked, listed, converted, estimated) instead of "preliminary" and "confirmed or estimate", and count 4,228 rows with a photo, as the scorecard does (two Telluride model years share one photo).
- Releases from this one on are archived on Zenodo with a DOI, so a version can be cited and keeps existing if the repository moves;
CITATION.cffis what Zenodo reads for the title, author, licence and keywords.
No data or pricing change: the 1.2.1 row in docs/data-quality-history.csv equals the 1.2.0 row. Full notes in CHANGELOG.md.
v1.2.0 · Four states, floors with margin, build-and-price links everywhere
Four honest states instead of one vague one, floors that cannot be tripped by adding data, and build-and-price links in every car market.
Added
- Four row states. Every row is exactly one of checked (a person compared it to the maker's page after compile; none yet, this is where per-row verification goes), listed (the maker's published price on the compile date), converted (a published list in another currency at a dated rate: aircraft outside the US) or estimated (modelled from announcements, trade press or dealer quotes). Cards, the sheet's new Status line, the copied report, the masthead count and the filter label all use them; "preliminary" is gone. Aircraft are now 89% from a published list (865 converted, 1 listed) instead of "99.9% estimates".
- Per-vertical floors with margin in
data/quality-floor.json: rows from a published list (cars 68%, bikes 32%, boats 10%, aircraft 86%) and photos (cars 84%, bikes 62%, boats 3%, aircraft 93%), plus a ceiling on makers without a linked page (159) and a floor on build-and-price coverage for all car rows (42%). Adding boats can no longer break cars, and a vertical that stands still is visible. - Build-and-price links in all eleven car markets: 1,215 of 2,729 car rows (44.5%, from 337) link the maker's configurator or price page for that market, each one found through a search result or a fetch of the page.
- A quality history.
docs/data-quality-history.csvkeeps one row per release (v1.0.0 and v1.1.0 measured from their commits with the same script), so the trajectory survives rebuilds; the build upserts the current version. - The World tab's "rates have moved" flag is a button with a real tooltip (aria-describedby, shown on hover, focus or tap); the toast that confirms "Copy the details" and "Share" is a polite live region that exists before anything is announced into it.
Changed
docs/DATA-QUALITY.mdand the methodology page's "What is measured" table show the four states, the per-vertical floors and the build-and-price coverage per market.- The masthead reads "of 414 prices, 49 estimated" (or "93 converted") with a link to what the states mean.
Still the weakest vertical: boats (11% from a published list, 4% with a photo). The checked state is empty by design until rows are verified one by one.
Full notes in CHANGELOG.md; the measured scorecard is docs/DATA-QUALITY.md.
v1.1.0 · The measured trust layer
Citations behind every tax row, dated exchange rates, honest wording, and a data-quality scorecard that CI keeps from regressing. Full notes in CHANGELOG.md.
Added
- A citation on every state row: the state revenue-department, DMV or statute page behind each US sales-tax rate (52 of 52) and the transport-department page or Motor Vehicles Taxation Act behind each Indian road-tax slab (27 of 27). The methodology page prints them as a Source column; the detail sheet links the one behind the region you picked.
- Build-and-price links for 36 US brands (337 of 414 US car rows), linked in preference to the homepage. Sources recorded as a name only are marked not linked instead of reading like citations.
- Dated exchange-rate tables: every ECB table the data has used, with the Bank of Russia ruble rate per day, which table each dataset was compiled or converted at and which the World tab converts at. The World tab flags the largest currency move since the lists were compiled; the detail sheet states the row's own.
tools/fx.mjspulls a table,tools/air.pyregenerates the aircraft rows. - Estimates in the open: the masthead counts them on every tab, the filter box says how many it toggles, the methodology page tables them per dataset.
- "Copy the details" next to "Wrong price? Tell us": the same report on the clipboard, no account needed.
docs/DATA-QUALITY.md, measured at every build bysrc/quality.js;test/quality.test.mjsfails CI when a number drops below its floor indata/quality-floor.json. Today: 5,700 rows, 44.2% confirmed, 94.9% with a maker link, 74.2% with a photo, 0 duplicate brand keys.- The version next to the data-as-of date, linked to its release; printed sheets carry the provenance block and the permalink.
Changed
- "Verified" is now "Compiled" (a dataset date; there are no per-row verification dates yet).
- One spelling per maker: Fiat, SEAT, MINI, INFINITI, INEOS, Citroën.
- Rubles at the Bank of Russia official rate instead of an unsourced 73.5 ₽/$; aircraft rows re-converted at their own compile-day rates.
- Permalink history hygiene: filters and typing rewrite the entry, opening a sheet adds one (Back closes it, Forward reopens it), closing a sheet goes back over its entry.
CarFinder 1.0.0
The first tagged release: four verticals (cars and trucks, motorcycles and scooters, boats and jet skis, planes, jets and helicopters), eleven countries, 5,700 vehicles with list, dealer and on-road prices for the buyer's state or city, and every price traceable to its source. One self-contained HTML page, no account, no ads, no tracking.
Live: https://destinjones.github.io/carfinder/ · App: https://destinjones.github.io/carfinder/carfinder.html · How we calculate: https://destinjones.github.io/carfinder/methodology.html
Added
- Provenance on every price. Each detail sheet has a "Where this price comes from" panel: the maker's price list (linked), what the dataset was compiled from, the verification date, whether the row is confirmed or an estimate and why, and which region's tax rules were applied.
data/sources.jsonholds the compile dates, the exchange-rate date and the per-dataset sources; the masthead shows the data-as-of date on every tab. - Permalinks. The vertical, country, region, every filter, the sort, the comparison set and the open sheet live in the URL hash, so any view can be shared and restored. "Share view" in the masthead and "Share" in the detail and compare sheets copy the link.
- How we calculate (
methodology.html), generated by the build from the same data the app ships with: the three prices and rounding rules, data-as-of dates, exchange rates, dealer bands, every country's state and fee tables, the bike, boat and aircraft fee lines, the research notes with their sources, and the corrections path. - Corrections path. "Wrong price? Tell us" in every detail sheet opens a prefilled GitHub issue; issue templates for wrong prices, missing vehicles and bugs; a pull-request template;
SECURITY.md. - Installable and offline. A web app manifest and a versioned service worker (page and fonts cached, HTML network-first, photos never cached). A print stylesheet.
- Aircraft. 971 planes, business jets, helicopters, gyroplanes, gliders and eVTOLs in every country, priced from the factory list with each country's aviation taxes, registration and running costs; knots and nautical miles with their mph, km/h, mile and km twins; fuel burn per flight hour at local avgas and Jet-A prices.
- Research notes for US bikes and boats and for aircraft under
docs/tax-notes/.
Changed
- Fee hooks are evaluated before region rate tables, so a hook line can carry rates, caps and exemptions as parameters.
- The offline browser checks no longer count aborted Wikimedia photo loads as page errors.
Full history in CHANGELOG.md.