Prior / evidence-backed household analytics

Interesting signals from the receipt corpus.

A static Cloudflare report generated from deterministic insight cards. Every claim below carries a metric, confidence score, method, and supporting rows.

2,581
receipts
5,575
categorized rows
13.7%
median repeated-SKU increase
+2.3
basket index move

What it tells us

The data is now big enough to find patterns, and the strongest immediate value is reliability triage: refresh stale sources, finish Amazon classification, and reconcile imported payments against receipts.

1. Coverage is realThe corpus has thousands of receipts and line items across Amazon, Costco, and Home Depot. It is useful for longitudinal questions now.
2. Taxonomy is improvingDeterministic rules now categorize 5,575 non-fraud rows. Costco is usable for broad categories; Amazon still has the largest remaining gap.
3. Price pressure shows up in repeat SKUsThe clean repeated-SKU detector finds a median increase of 13.7%, while the repeated-SKU basket index moved +2.3.

Price movers

ORG STRAWBRY 907 G / 2 LB
28.6%
BLUEBERRIES 510 G / 18 OZ
25.0%
GOLD KIWI 3 LBS
25.0%
3LB SHINGO
20.0%
GREEN GRAPES 1.36 KG / 3 LB
20.0%
PINEAPPLE EACH
17.3%
Prime Membership Fee
16.8%
ORG BANANAS 3 LB / 1.36 KG
13.7%

Bars show normalized same-SKU price change. Multi-unit receipt lines are normalized before comparison.

Insight cards

warning

Some imports are stale

2 store imports have no receipt in the last 60 days.

metric: max_days_since_receipt value: 113 confidence: 0.95 topic: coverage
storelatest_receiptdays_old
amazon2026-03-18113
homedepot2026-03-23108
Method: Compare each store's latest receipt date to today's date.
warning

Receipt/payment reconciliation is measurable

1 of 1 store-like payment transactions lack an exact receipt match.

metric: unmatched_payment_candidates value: 1 confidence: 0.80 topic: coverage
storecandidate_paymentsmatchedunmatchedcandidate_amountmatched_amount
homedepot101250.000.00
Method: Match negative financial transactions mentioning Amazon, Costco, or Home Depot to receipts by store, amount within $0.02, and date within three days.
warning

Same-SKU price increases are visible

15 repeated SKUs rose at least 10%; median increase is 13.7%.

metric: median_same_sku_pct_increase value: 13.7 confidence: 0.75 topic: prices
storeitem_numberdescriptionbuy_countfirst_datelast_date
costco512515ORG STRAWBRY 907 G / 2 LB112024-03-262025-12-22
costco57554BLUEBERRIES 510 G / 18 OZ132023-07-192026-05-05
costco6995GOLD KIWI 3 LBS122025-07-092026-06-21
costco1589323LB SHINGO52023-09-152025-12-22
costco47825GREEN GRAPES 1.36 KG / 3 LB122023-09-152026-05-05
Method: Compare median of first three and latest three observed package prices for SKUs bought at least three times. Obvious receipt-line multiples are normalized before comparison.
info

Data inventory is queryable

2581 receipts and 5963 line items across 3 stores.

metric: receipt_count value: 2581 confidence: 1.00 topic: coverage
storereceiptstotal_spendfirst_datelast_date
amazon2,273104,472.512004-04-232026-03-18
costco14639,778.062023-03-292026-06-21
homedepot16232,338.112024-02-262026-03-23
Method: Direct counts from db.receipts and db.line_items.
info

Deterministic categories are now populated

5575 non-fraud rows have categories; best store coverage is 100.0%.

metric: best_categorized_pct value: 100.0 confidence: 0.85 topic: data_quality
storeitemscategorizedcategorized_pct
homedepot637637100.00
costco1,6061,54596.20
amazon3,7203,39391.20
Method: Count non-empty non-FRAUD categories after deterministic Costco/Amazon classification and Home Depot taxonomy import.
info

Some rows are partial-confidence extractions

Low-confidence rows represent up to 1.6% of a store's items.

metric: low_confidence_item_pct value: 1.6 confidence: 0.85 topic: data_quality
storelow_confidence_itemsavg_confidencepct_items
costco250.501.60
Method: Find line_items.confidence below 0.85 by store.
info

Repeated-SKU basket index is available

Largest repeated-SKU basket index move is +2.3 points for costco.

metric: largest_basket_index_change value: 2.3 confidence: 0.75 topic: prices
storefirst_monthlatest_monthfirst_indexlatest_indexindex_change
costco2023-032026-06100.00102.302.30
Method: For SKUs bought at least three times, normalize receipt-line multiples, index each SKU to its first observed month, then take the monthly median index by store. Stores need at least two SKUs in the latest basket to be summarized.
info

Recent monthly spend changed materially

Largest recent 3-month average shift is -70.3% for homedepot.

metric: largest_recent_3mo_pct_shift value: -70.3 confidence: 0.70 topic: spend
storeprevious_monthsrecent_monthsprevious_avgrecent_avgpct_change
homedepot2025-10, 2025-11, 2025-122026-01, 2026-02, 2026-03806.28239.66-70.30
Method: Compare latest three monthly spend totals with the prior three months.

Reliability model

These are executable checks now, not just report copy. Run uv run prior verify-reliability to gate raw provenance, normalized rows, auditable insight cards, and HTML grounding.

Collect rawKeep original retailer exports and GraphQL responses untouched under raw/.
Normalize structured rowsInsert into SQLite with dedup keys, confidence scores, and raw-file provenance.
Generate auditable insightsUse deterministic DuckDB queries, not model guesses, for metrics and evidence.
Let LLMs summarize, not inventThe HTML narrative is allowed to be helpful only after the measured cards exist.

Next best work

Refresh stale sourcesAmazon and Home Depot are older than the 60-day freshness threshold.
Import bank/card statementsOnly 1 store-like payment candidate is available, so reconciliation coverage is still thin.
Investigate unmatched paymentsThe reconciliation report lists payment rows that do not have exact receipt matches.