Skip to main content

Building AllCars,
in public.

Engineering notes from a one-person Cyprus car-market platform. Pricing engine internals, scraper architecture, incident write-ups, and weekly progress. No marketing fluff — the actual decisions and the actual numbers behind them.

Filter:

All posts

· 2 May 2026

A 7-day silent failure: when 2.1% success looked normal

The detail-page scraper shipped 31 / 1,456 successes for a week before anyone noticed. The fix wasn't in the code — it was in the alerting floor.

6 min read
· 28 Apr 2026

The Audi TT that was simultaneously a coupe and a cabriolet

A coupe on one source got merged with a cabriolet on another because the cross-matcher weighed price and engine but never read body type. Hard-veto signals, post-hoc.

7 min read
· 22 Apr 2026

Why we shrink toward the prior, segment by segment

Adaptive Bayesian shrinkage with k = σ²_within / σ²_between. A two-line formula that fixed the long tail of "deal of the year" false positives in thin segments.

8 min read
· 15 Apr 2026

How one person keeps every used car in Cyprus live in one search

A look behind the scenes at AllCars.cy — the deliberately boring engineering choices that keep the index fast and always fresh.

5 min read
· 8 Apr 2026

The same Cyprus car, three listings: how AllCars spots duplicates

Phone, image-hash, plate OCR, and specs. How four signals combine (and how single-signal merges nuked our data integrity for a week).

10 min read
· 1 Apr 2026

Picking dark-mode tokens that survive a year of feature creep

Five surface levels, one accent, lessons from rebuilding the panel three times. Token table at the bottom, copy if useful.

4 min read
· 25 Mar 2026

Three years from now: when listings come back as 2027 cars

575 million km on the odometer. Year 2028. Every parser breaks the same way. Validation at the ingest boundary, not at the query.

5 min read
· 18 Mar 2026

Akerlof's lemons, on a 2014 Mercedes

Value × Quality multiplicative architecture, the V-Q gap, and how we actually flag listings that smell wrong before a buyer drives an hour to view it.

11 min read
· 10 Mar 2026

Cron jobs lie. Watchdogs that don't.

A cron entry that succeeded 100% of runs while doing nothing. Mtime guards, sliding-window rate alerts, and the small ops bot that wakes me up.

6 min read

Get new posts when they ship.

Plus the weekly market report. No spam, no tracking pixels, no "marketing automation". One Telegram channel, one RSS feed.