Skip to content

Optional live-tennis match-state enrichment for the tennis EV branch (data feed; branch ready) #1

Description

@bensynapse

Disclosure: I maintain the Live Tennis API — judge this on the merits.

PRs look to be turned off on this repo, so I'm opening an issue instead: I have a small, tested change ready on a fork and would be glad to send it as a PR if you enable them (or you're welcome to cherry-pick it).

What

Adds lib/live-tennis.ts — a live-tennis match-state DATA source that enriches the tennis branch of your EV pipeline with in-match signal: score (sets/games/points), current server, a three-valued break-point flag (Yes/No/UNDEF — suppressed inside tiebreaks, UNDEF when the server is unknown), and terminal status (completed / retired / walkover).

How it fits your seam

It consumes your real MatchedOpportunity type (lib/matching.ts, emitted by matchH2HGames for the tennis branch of app/api/ev/route.ts:GET) and returns OpportunityWithLiveState = MatchedOpportunity & { liveState? } — pure enrichment, no change to how you compute or rank EV. The module mirrors lib/odds-api.ts conventions (typed interfaces, in-memory TTL cache, bounded 429 retry, X-API-Key header, quota-header capture). It is a data feed, not a trading venue or executor.

Tests / build

lib/live-tennis.test.ts — 11 cases on Node's built-in node:test (zero new deps), covering the break-point truth table, decided-status detection, match-state derivation, and surname/side-order player matching. npm test → 11 passed; tsc --noEmit clean (no new type errors); test files excluded from the Next build via tsconfig.json.

The change

Branch (ready to PR or cherry-pick): https://github.com/bensynapse/PolyPulse/tree/add-live-tennis-state
Diff: main...bensynapse:PolyPulse:add-live-tennis-state

Data source

Live Tennis API (livetennisapi.com). FREE tier — live scores + match-state + players (ranking + Elo) + fixtures, 30 req/min & 100 req/day, no card — covers this: key at https://livetennisapi.com/subscribe/free , base https://api.livetennisapi.com/api/public/v1, header X-API-Key, responses {"data":[...]}. The WS push feed and model win-probability are ULTRA (paid) and are not used here. MIT reference toolkit: https://github.com/livetennisapi/polymarket-tennis

No worries if tennis enrichment isn't a direction you want — closing this is a fine answer.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions