Polymarket × Kalshi Opportunity Scanner
A tool for normalising catalogs, verifying market correspondence and estimating size-aware opportunities from real order books.

Context / task
The same event on two platforms rarely shares a title, outcome structure and close time.
A simple price comparison creates false signals: you must first confirm the markets describe the same condition, then account for direction, depth, fees and snapshot delay.
What was done
The scanner loads and normalises Polymarket and Kalshi catalogs, blocks candidates by category and time, then computes a fuzzy score with an optional embedding component.
Candidates are never confirmed automatically: an operator reviews the wording and sets a direction map.
For approved pairs the system reads order books, walks price levels, computes VWAP, fees, available size, time skew and the opportunity lifecycle.
Key capabilities
- async clients for two APIs
- market catalog normalisation
- fuzzy matching and optional embeddings
- human-in-the-loop review
- same/inverse direction mapping
- size-aware order-book walk
- fee-adjusted net edge
- time-skew control between snapshots
- SQLite history
- opportunity lifecycle
- scheduled polling
- daily and decision reports
- bankroll scenario modelling
- CLI and desktop GUI
- read-only architecture with no trade execution
Technical side
Read-only architecture: the system does not execute trades.
Human-in-the-loop verification: candidates are not confirmed automatically.
Any found difference is not presented as guaranteed arbitrage.
Project materials

Next case
Leo7Media
Similar task