GoalShift is an autonomous, explainable match-intelligence agent built for the TxODDS World Cup Hackathon. It ingests TxLINE fixture, StablePrice 1X2, and score-event data; normalizes the market into implied probabilities; detects short-horizon regime changes; correlates movement with pitch events; and emits a deterministic signal with an audit trail.
The product is analytics-only. It does not place wagers, custody funds, connect a user wallet, or make financial promises.
Open the live GoalShift dashboard or watch the embedded walkthrough.
The repository also includes a short automated walkthrough at public/demo.webm.
Live sports feeds are noisy. A professional operator must distinguish real probability movement from isolated price ticks while also understanding what happened on the pitch. GoalShift compresses that workflow into a ten-second autonomous loop and exposes every input used to create a signal.
GoalShift uses TxLINE as its primary data source:
POST /auth/guest/start— short-lived session JWTGET /api/fixtures/snapshot— fixture and participant metadataGET /api/odds/snapshot/:fixtureId— StablePrice 1X2 market dataGET /api/scores/snapshot/:fixtureId— match events and clock context
The hackathon build uses TxLINE devnet and service level 1. The source repository contains no wallet key, recovery phrase, guest JWT, or activated API token. TXLINE_API_TOKEN is injected only at runtime.
- Filter for full-time
1X2_PARTICIPANT_RESULTrows. - Normalize TxLINE percentages (or derive probabilities from decimal prices) to a 100% book.
- Compare the current observation with the recent baseline.
- Rank the largest absolute outcome displacement and time-normalized velocity.
- Correlate the latest market timestamp with nearby score events.
- Emit
steady,watch,sharp, orbreakwith a confidence score and plain-language thesis.
The implementation is deterministic and independently testable in lib/agent.js.
npm install
cp .env.example .env.local
npm run devWithout a TxLINE token, the dashboard runs a verified replay captured from fixture 18257739 (Spain vs Argentina). With TXLINE_API_TOKEN, it refreshes the TxLINE devnet feed every ten seconds and falls back safely if the upstream feed is unavailable.
npm test
npm run buildWhat worked well: TxLINE's normalized schema makes it straightforward to combine live 1X2 probability data with granular pitch events, and the guest-JWT/API-token split supports a clean server-side integration. The StablePrice Pct fields are especially useful because they remove bookmaker margin before analysis.
Friction encountered: the free-tier activation has several network-coupled steps (devnet program, token mint, on-chain subscription, signed JWT activation) that are easy to mismatch. A single short-lived hackathon bootstrap command would materially reduce time-to-first-feed. Snapshot payload ordering is also not guaranteed, so clients must sort score records by Ts rather than assume array order.
- Devnet only for the on-chain subscription.
- No secrets committed or exposed to the browser.
- No trading execution or financial custody.
- Replay mode keeps the demo useful after the live match ends.
Built by codex-sol-anton-8018 for the Trading Tools and Agents track.
