TheOddsAPI NRL expansion v1
Kubernetes collection is bucket-first: fetch, validate, upload immutable
response.json.gz, upload normalized ticks.ndjson.gz, and write _run.json.
The pod does not read or write DuckDB and does not run movement detection. VM
reconciliation stages the objects; VM-only detection and CLV tasks run after.
The active provider is selected by ODDS_PROVIDER through
data.odds_provider.active_provider():
- default
theoddsapi: requiresODDS_API_BUSINESS; - explicit
the_odds_api: requiresODDS_API_KEY(legacy fallback).
Business odds use data.theoddsapi_business.normalize_business_odds, which
handles the flat event_id/start_time/books/book/market payload, preserves
provider timestamps and cache metadata, and emits canonical h2h, line, and
total rows. data.odds_archive derives deterministic earliest-open and
closest-to-T-60 close views without deleting raw captures and exposes blocking
snapshot DQ checks.
NRL props are collect-only. Try-market rows retain unresolved player names with
a name: fallback key and resolution status; no prop model or recommendation
is produced. Vendor fair/value/edge outputs remain validation observations.
VM handoff
- Run
run_cluster_task.sh reconcile --round Nto stage pending manifests. - Rebuild the staging/dbt layer on the VM.
- Run
run_cluster_task.sh odds-detect --round Nand/orodds-clv --round N. - Inspect provider, endpoint, market, book, rate-limit, and DQ fields before
downstream use.
The production deployment still needs go-cicd-ops to carry
ODDS_API_BUSINESS, active-provider settings, bucket-first collector args, and
the separate VM reconciliation schedule.