Spec read from want.json — the same file the monitor uses, so a change here changes the
scheduled runs too. 79 listings from the last pipeline run, generated 2026-10-30 23:22.
Titles link to the actual listing.
Live refetch works because the request goes to this same origin, which forwards it to the 2dehands API
and answers with `Access-Control-Allow-Origin` — the browser could not call the API directly, which is why this page used
to be limited to re-filtering the last run. Facet fields (condition, RAM band, storage type, GPU presence, price,
postcode, distance) are applied server-side; fields the platform has no facet for (GPU/CPU model, storage size, DDR type)
are read from listing text and stay flagged when a listing does not state them. Live rows are classified by
`spec.py` on the server — the same implementation the scheduled runs use. If the service is unreachable the page falls
back to its own copy of the rules over the embedded snapshot, and the header says which one produced what is here.
Good matches — every gate met on stated facts
Partial matches — a machine that holds part of the spec, but a stated value is below it
Cannot be judged — the listing never stated what the spec needs