ABET — Architecture · workflow · data tables · storage · loops · gates
The whole system on one page: how raw odds become a married, edge-scored, live board; the exact data tables and where they live (local / GitHub / Cloudflare / HuggingFace / Oracle / Vercel / Supabase); the loops that keep it running; and the gates that keep it honest.
① The workflow — raw → married → edge → live board
① SOURCES — per-book scrapers (4-source redundancy)
Cloudflare Workers per-book, on-demand
HuggingFace Space abetco-live-odds
Oracle VM residential egress
GitHub Actions manifest-gated
② ENGINE — normalize each raw shape → canonical key → marry (a hashmap)
extract_mapped_v1.py · 9 archetype handlers · extraction_map_v1.json (20 books)
key = league · event · date · bet_type · selection · line → same key across books = one combined row
③ DATA TABLES — the served JSON (Vercel /data)
allbets/cat_*.json the married rows
crossbook_edge.json arbs · EV · middles
crossbook_history price time-series
live_status.json freshness beacon
edge_finder_v1.py
④ VIEWS — the board (100% client-side; polls the live data)
/crossbook-allbets · /crossbook-edge
/edge-math · /asset-coverage
/proofs · /scraper-health
LIVE LOOP (cron)
live_runner_v1.py
every ~15 min (Oracle/GH):
emit → edge → history → status
→ vercel --prod
board polls live_status → auto-refresh
HANDOFF LOOP
Codex ⇄ Claude
Codex un-gates a scraper →
ledger ping → Claude maps it
same session (novig/coral/ladbrokes)
HEALTH LOOP
source_health_probe_v1.py → fleet_truth.json (the ONE truth) → fleet_tickets.json → #it-tickets · gh_fleet_verify (manifest-gated, no false greens)
⛓ THE 5 PROOF GATES — a task is DONE only if ALL hold
① commit in origin/master ② output from the REAL pipeline ③ live portal verifies ④ ledger updated ⑤ Discord receipt
Blue = the data path · Green dashed = the live loop · Purple dashed = the Codex⇄Claude handoff. No synthetic data, no fake greens.
Status today: 19 books married · arb/EV/middle live · history + freshness beacon shipping · live loop = opt-in cron (ready).
② The data tables — click any to inspect the live JSON
Table What it is Schema (key fields) Live
③ Storage — what lives where (local + every cloud)
Location Role What's stored Status
④ The loops & their scripts
Loop Script (running code) What it does Owner