Pipeline trace - Who won the Najzer vs Ebster tennis match in the 2026 W15 Klagenfurt Round of 32?

Cached example: this is the 2026-05-12 Najzer vs Ebster match replayed from disk. For a live walkthrough of a fresh prediction, use the /demo/start SSE stream on the dashboard.
What you're looking at: a replay of one full forecast lifecycle; good behavior means each stage produces a clear artifact, and the final card links the probability distribution back to the resolved outcome.

Step-by-step replay of how the production agent forecast a single resolved event. Each card shows one pipeline stage's input -> output, with real data from the cached prediction. The live /observatory view shows the same shape for every PA call as it lands.

1
Receive webhook Prophet Arena

Event: Who won the Najzer vs Ebster tennis match in the 2026 W15 Klagenfurt Round of 32?

Category: Sports - Outcomes: 2 - Close time: 2026-05-13T09:58:49Z

Resolution rule: If Kaja Najzer wins the Najzer vs Ebster professional tennis match in the 2026 W15 Klagenfurt Round of 32 after a ball has been played, then the market resolves to Yes.

Outcomes list (2)
  • Kaja Najzer
  • Anna Lena Ebster
2
Build query _build_query()

Query string sent to Brave Search:

Who won the Najzer vs Ebster tennis match in the 2026 W15 Klagenfurt Round of 32?

The query is the event title verbatim, plus the most informative outcome label when present. Brave indexes news articles, official sources, and aggregators.

3
Retrieve evidence _brave_search(query, count=5)

Brave returned snippets from these URLs (dedupe by domain, .gov/.edu/exchanges prioritized):

  1. https://www.tennislive.net/wta/match/kaja-najzer-VS-anna-lena-ebster/w15-klagenfurt-2026/
  2. https://tennistonic.com/stat-tournaments/?m=wta&tid=16997&p1=74844&p2=85696&Anna-Lena-EbstervsKaja-Najzer=
  3. https://www.sofascore.com/tennis/match/kaja-najzer-anna-lena-ebster/xuedsjkMd
  4. https://azscore.com/tennis/game/kaja-najzer-anna-lena-ebster-2026-05-12

If the BRAVE_SEARCH_API_KEY env var is missing or rate-limited, the agent falls back to predict_multi_outcome (no retrieval). Live observability shows the chosen path.

4
Forecast Anthropic Opus 4.7 - single call

System prompt enforces calibration scale (0.50 = no view -> 0.90 = near-certain), market-odds anchoring, and strict-JSON output.

Model's rationale (returned with the probabilities):

Evidence [2] states Ebster defeated Najzer.
5
Parse JSON _parse_multi_outcome_json()

5-stage parser ladder: direct -> clean -> regex outer -> regex outer cleaned -> regex inner map. For this event: parsed 2 per-outcome probabilities cleanly.

6
Match outcome labels _match_outcome_label() - 4-pass

4-pass canonical match: exact -> case-insensitive -> whitespace-stripped -> alphanumeric-only. No fuzzy substring (silently mapping the wrong outcome is worse than uninformed prior).

This event: all 2 model-emitted labels mapped to canonical outcomes successfully.

7
Longshot floor + renormalize apply_longshot_guard(probs, n_outcomes)

Each per-outcome probability floored at min(0.10, max(0.05, 0.5/n)); Kalshi paper says >60% buyer loss below 10c contracts. After floor, renormalize from the above-floor entries only.

8
Return to Prophet Arena POST /predict response

Final per-outcome distribution (sorted by probability):

outcomep
Anna Lena Ebster90.0%
Kaja Najzer10.0%

Actual winner: Anna Lena Ebster - single-binary Brier loss on this event: 0.0100