whowantwhat

Status

fts on · db 83,612 KB
4,808live deals (7d)
518new in 24h
76%price extracted
76%store identified
95%categorized
512cross-confirmed
73%product identity (21% by size)
44,214price points / 62d

Sources

1 dead: CheapShark. Dead means silent past a day, or fetched and never once answered. Switch a source off in seeds.php when it is gone for good, which is also the honest way to quiet this line.

sourceeverylast fetchlast successstatusitemsnote
9to5Toys 45m 1h ago 1h ago 304 3274
Ben's Bargains 60m 1h ago 1h ago 200 9088
CheapShark 60m 26m ago 37d ago error 271 HTTP 429
DansDeals 60m 56m ago 56m ago 200 803
Doctor of Credit 60m 56m ago 56m ago 304 665
Freebies4Mom 120m 1h ago 1h ago 200 303
GamerPower 180m 26m ago 26m ago api 77
Hip2Save 60m 26m ago 26m ago 200 4089
I Heart Publix 60m 1h ago 1h ago 304 328
Koupon Karen 60m 26m ago 26m ago 304 98
Kroger Krazy 120m 26m ago 26m ago 304 455
Living Rich With Coupons 60m 1h ago 1h ago 200 891
MojoSavings 180m 56m ago 56m ago 304 40
Money Saving Mom 180m 1h ago 1h ago 200 1153
Passionate Penny Pincher 180m 56m ago 56m ago 200 1783
Slickdeals Frontpage 30m 56m ago 56m ago 200 12479
Southern Savers 120m 56m ago 56m ago 304 983
The Freebie Guy 120m 56m ago 56m ago 200 3623
Totally Target 60m 26m ago 26m ago 200 29
Woot 60m 1h ago 1h ago api 802
r/DiscountedProducts 90m 56m ago 56m ago 200 27
r/buildapcsales 90m 26m ago 1h ago 429 718 429 rate limited backoff ends in 2h
r/coupons 90m 1h ago 2h ago 429 64 429 rate limited backoff ends in 1h
r/deals 90m 26m ago 26m ago 200 45
r/freebies 90m 3h ago 4h ago 429 166 429 rate limited
Krazy Coupon Lady 60m never never 0 disabled

Floor gaps (uncategorized by the deterministic floor; the A4 instrument)

Traffic (first-party: counted at render, no cookies, no scripts, no addresses kept; bots filtered)

dayviewsvisitors
2026-10-14 135 119 so far
2026-10-13 141 122
2026-10-12 125 114
2026-10-11 134 118
2026-10-10 139 119
2026-10-09 109 93
2026-10-08 122 110
2026-10-07 144 131
2026-10-06 153 131
2026-10-05 127 114
2026-10-04 122 108
2026-10-03 163 135
2026-10-02 110 99
2026-10-01 102 95

Last 7 days by page: deals:store 471 / stacks 280 / deals 162 / deals:cat 72 / store 50 / privacy 5 / stores 4 / you 3 / list 2

Primary sources 3 adapters

adaptercalls todayitemsstatusprice history
CheapShark 16 271 error retained
GamerPower 16 77 api not retained
Woot 60 802 api not retained

Adapters answer to a call ledger the same way the model tiers do. "Not retained" means the provider's terms forbid keeping their prices, or the number is a claim rather than an observed price; the upsert refuses to write price history for those sources.

Model ceiling key present

tiermodel idtodaybudget
triage gemma-4-31b-it 246 14000/day
batch gemini-3.1-flash-lite 0 500/day
editor gemini-3.5-flash 1 20/day

Lab: last ran 26m ago · FAILED: Internal error encountered.

Backups: 7 kept, newest backup-2026-10-14.sqlite. They live outside the web root and never ride the clean tree.

Health: health.php answers 200 while the pipeline moves and 503 once nothing has ingested for two hours. Point an uptime pinger THERE, not at this page: this page returns a cheerful 200 with every cron dead, which is exactly how the site froze in August.

Digest: last written 2026-10-11. Triage runs hourly and the digest daily via cron; the web-cron URLs below force either one now.

Web cron (for the server; this machine already runs scheduled tasks)

Point any scheduler that can hit a URL at these (see DEPLOY.md):

https://mail.whowantwhat.com/cron.php?k=Vani...(hidden on a public site)&do=ingest    every 30 min
https://mail.whowantwhat.com/cron.php?k=Vani...(hidden on a public site)&do=triage    hourly
https://mail.whowantwhat.com/cron.php?k=Vani...(hidden on a public site)&do=digest    daily
https://mail.whowantwhat.com/cron.php?k=Vani...(hidden on a public site)&do=check     on demand
https://mail.whowantwhat.com/cron.php?k=Vani...(hidden on a public site)&do=backup    on demand (daily one runs itself)

Full token: set your own 'cron_token' in config.php (then it shows nowhere), read meta.cron_token in the db, or set a passphrase temporarily and revisit this page.