How Vezta Works
High-level architecture and data flow
Vezta brings together data from multiple prediction market platforms and delivers it to you through a single, unified interface. Here is how the pieces fit together.
Data Flow
How Aggregation Works
Vezta continuously ingests market data from Polymarket and from Kalshi (via DFlow on Solana) through their respective APIs. The backend processes this data through several stages:
1. Market Ingestion
The backend runs scheduled BullMQ jobs that pull market listings, prices, order book data, and trade history from each source. New markets are discovered automatically. Both connectors fetch the top events by volume (capped at 200 events per source on the shared VM).
2. Normalization
Polymarket and Kalshi have different data formats. The NormalizerService standardizes everything into a unified Market schema -- titles, categories, outcomes, prices, volumes, and resolution dates -- so you can compare across platforms seamlessly.
3. Real-Time Updates
Once markets are ingested, Vezta maintains live connections:
- Polymarket prices stream over a persistent WebSocket connector (
wss://ws-subscriptions-clob.polymarket.com) - DFlow (Kalshi) prices stream over
DflowWsConnector(wss://prediction-markets-api.dflow.net/api/v1/ws) - Polymarket RTDS streams BTC/ETH/SOL/XRP Chainlink oracle prices used for short-duration crypto markets
All updates are broadcast to connected web clients via Socket.IO channels.
4. Short-Duration Pipeline
Rapid-cycle crypto Up/Down markets (Polymarket 5-minute, Kalshi 15-minute) run on a dedicated real-time pipeline isolated from the standard sync. New slots are auto-discovered every 15 seconds and registered with the persistent WebSocket connector for instant price updates.
5. Signal Detection
Beyond raw market data, the backend runs two intelligence pipelines:
- News signal pipeline monitors RSS, GDELT, NewsData, CryptoNews, X/Twitter, and Telegram (~60 sources combined), classifies each article, and links it to relevant markets
- Insider-signals pipeline detects smart-money wallets on Polymarket through 11-layer bot filtering and 10-metric scoring, then fans out alerts to Telegram channels (
@vezta_signals), Expo push, and the in-app monitor feed
What This Means for You
As a trader, aggregation gives you several advantages:
- Better price discovery -- See prices from both Polymarket and Kalshi side by side. When the same event is available on both platforms, you can compare and trade where conditions are most favorable.
- Broader market coverage -- Some markets exist only on Polymarket, others only on Kalshi. Vezta surfaces all of them in one place.
- Unified portfolio -- Vezta tracks all your positions in a single portfolio view, regardless of underlying exchange.
- Faster reaction time -- Real-time WebSocket updates surface price movements the moment they happen.
- Smart-money alerts -- The insider-signals pipeline surfaces high-conviction whale trades before they show up in basic leaderboards.
Custody Model
Vezta is non-custodial. Funds remain with the underlying settlement layer. Vezta routes orders, manages metadata, and tracks results, but never takes custody of your assets.
| Exchange | Custody | Settlement |
|---|---|---|
| Polymarket | Gnosis Safe (1-of-1) on Polygon, deterministic CREATE2 address per user. EOA signs orders, Safe holds USDC.e. Gasless via Builder Relayer. | USDC.e on Polygon |
| Kalshi (via DFlow) | Your own Solana wallet -- Phantom, Solflare, etc. Outcome tokens are SPL Token-2022 in your wallet. | USDC on Solana |
DFlow tokenizes Kalshi's CFTC-regulated markets as SPL tokens on Solana. You sign Solana transactions directly from your wallet -- the backend only proxies quote and status calls. KYC for buying is handled once via DFlow Proof (powered by Stripe Identity) and is free.
Platform Components
| Component | Role |
|---|---|
Backend API (vezta-be) | Market ingestion, trade routing, portfolio tracking, authentication, signals |
| PostgreSQL 17 | Persistent storage for markets, positions, users, signals (~40 Prisma models) |
| Redis | Application cache, Socket.IO pub/sub adapter, BullMQ job queues |
Web App (vezta-fe) | Browser-based trading terminal (Next.js 16, dark mode, lime-green accent) |
| WebSocket | Real-time data delivery for prices, orderbook, orders, notifications, signals |
| Telegram Bots | @vezta_signal_bot (insider alerts) and @vezta_bot (interactive trading, in development) |
A native mobile app is in design (plans/mobile/) but is not yet shipped.