Signal feed
The Signals tab in the Markets terminal shows a dedicated feed of all markets where the AI has found a meaningful divergence from the current price. Unlike the AI Pick badges on market cards (which are just indicators), the signal feed shows full signal data with rich filtering.Signal card anatomy
Each SignalFeedCard displays:Card animations
- Dealt layout: Cards cascade from the top with spring physics (stagger delay per card)
- Grid layout: Cards fade in with scale-up animation
- Hover: Card lifts with shadow enhancement
Filters
The signal feed has independent filters at the top:Signal type filter
Category filter
Dropdown with all available market categories. Filters signals to only show markets in the selected category.Info modal
A ”?” button that opens an explanatory modal describing each signal type in detail.Sorting
Pagination
The signal feed uses cursor-based infinite pagination:- Page size: 50 signals per page
- Cursor format:
{confidence}:{condition_id}for stable ordering - More signals load as you scroll near the bottom
- Total signal count displayed at the top
Data pipeline
The signal feed has its own data pipeline:- API:
GET /api/signals/feedwith query params for all filters - Server: Queries
market_signalstable, joins withmarket_catalogfor enrichment - Caching: 2-minute server-side cache on the feed (skipped for cursor requests), 5-minute cache on total count
- Post-filtering: Tags (OR match), keyword search, date range, minimum volume, sentiment, trending status are all applied after the initial query
- Hook:
useSignalFeedmanages the infinite query state, parses results, memoizes for performance - Enrichment: Each signal is enriched with live prices from the SSE price pool
Signal data model
Each signal contains:
The feed API enriches each signal with live market data: question, category, live YES/NO prices (from SSE), volume, 24h volume, liquidity, and end date.

