Inspiration
Most matches are decided twice: once on the pitch and once on the prediction markets that trade them — yet the tools for each live in different worlds. Fans get highlight clips with no numbers; traders get prices with no context. We wanted one terminal where the same stream of match events powers understanding, prediction, and seeing the play — and where you can always tell what is real data and what is illustration.
What it does
Specter is a match intelligence terminal. One event spine (live ESPN text commentary or recorded matches — indistinguishable downstream) feeds every room:
- Study is the front door. Open any match and get a grounded report whose every minute citation is clickable, the key plays ranked by how much they swung the win probability, real-data numbers (shots, zone-based xG, momentum, shot map), and a Strategy tab with activity heatmaps, set-piece tendencies and standout players — computed from event data only.
- The Oracle is a Dixon-Coles-style in-play win-probability model that understands red cards, stoppage time and extra time. It is benchmarked on Brier score against honest baselines (0.497 vs 0.667 for a uniform coin), and its floors are pinned in CI.
- The market view shows Polymarket's live price in a reserved amber next to the model — the divergence between them is the interesting number. When no market exists, nothing is shown: absence is a value, not an error.
- The dramatization engine recreates plays on a minimalist 2D pitch: quick simulation of a whole match in minutes, a highlights reel that chains the key plays, a tactical board for every finding, and scene recreation from any citation. Everything invented for legibility is labeled DRAMATIZATION; everything measured is labeled DATA.
- The ghost is a grounded analyst you can ask questions. Its answers cite minutes and sources, both validated against the match facts — and when the data can't support an answer, it refuses. Refusal is a feature.
- Comparisons hold any number of studies side by side without ever losing your place.
How we built it
Python + FastAPI + Pydantic v2 on the backend, vanilla ES modules and canvas on the frontend — no build step. The architecture is an engine map: feed, brain (a deterministic template parser first, LLM second), director, simulation, oracle, strength, markets, evidence, study, agent. Each engine has named tuning knobs, a contract, and a benchmark that turns "does it feel better?" into a number.
The honesty rules are architectural, not editorial. Model pulses apply only when a play culminates on screen so the probability strip can never spoil a goal. The market price is deliberately real-time — the gap between what the market knows and what the drama has shown you is the product. LLM prose can only cite facts that exist; hallucinated citations kill the claim.
Challenges we ran into
Football clocks lie: minutes repeat and legally rewind (45+5 → 45, extra time after 90+9). We had to make arrival order the single chronology across the tracker, the HUD, the study and the scene player — sorting by minute silently corrupted timelines, and our own benchmark was doing exactly that. The subtlest bug: a knockout match frozen at "draw, 100%" while half an hour of extra time remained.
Accomplishments that we're proud of
Measured honesty. We built pre-match strength priors from three real providers (ESPN form, ClubElo, our own Elo flywheel) and a soft-evidence pipeline from attributed news — then our own Brier benchmark showed neither improves the model yet, so both gates ship closed, with the measurement recorded next to the flag. The system is designed so that a feature must earn its way into the model with evidence.
Also: 400+ offline tests across both suites, four engine benchmarks with CI floors, live integration suites against the real Polymarket and news APIs, and replays driven by genuine captured payloads — never invented fixtures.
What we learned
Grounding is a systems property. You don't get honest AI by prompting it to be honest; you get it by making every number come from typed data, every citation resolvable, and every visual invention labeled.
What's next for Specter
Executable market math (bid/ask, depth, frictions) instead of last-price divergence, a multi-match Desk for traders, richer evidence admission once the flywheel has enough recorded matches to re-open the gates — and the public claim ladder that language like "edge" would have to climb before we ever use it.
Built With
- brier-score
- canvas-2d
- css3
- dixon-coles
- elevenlabs
- es-modules
- espn
- fastapi
- featherless-ai
- html5
- httpx
- javascript
- llm
- node.js
- openai-sdk
- pollinations-ai
- polymarket-api
- pydantic
- pytest
- python
- rss
- uv
- uvicorn
- websockets
Log in or sign up for Devpost to join the conversation.