Inspiration
There's been breaking news about suspected Polymarket insiders cashing in on bets made from what appear to be inside information. This has brought lots of attention to Polymarket, and many flocking to the site now want to know how they can follow the next insider account. There are certain things that insiders may be believed to have in common, so it would be great to have a user-friendly interface for testing your hypotheses.
What it does
PolyWatcher uses the public Polymarket API to give traders more in-depth data on the latest big-movers in their favorite markets. Users test any hypotheses about the publicly available data on these accounts like:
- Do certain accounts enter markets earlier than others?
- Are there consistent position sizes, timing patterns, or market selections?
- How do “top-performing” accounts behave differently from the median trader?
After doing so, they can track profiles of interest and make more informed trades.
How we built it
We built PolyWatcher as a full-stack analytics engine that bridges Polymarket's public APIs to surface hidden patterns in trader behavior.
-The backend is a Flask service written in Python that continuously ingests real-time trade data from Polymarket's Data API and enriches it with social profiles from the Gamma API. We use concurrent threading to efficiently batch-fetch trader handles and aggregate metrics across thousands of transactions. The core detection algorithm calculates profit/loss by correlating buy and sell orders per wallet, then applies multi-dimensional filters to isolate wallets with "unnatural conviction." Gemini then creates a summary for the returned data, operating off a strict system prompt to give consistent answer formats for each use.
-On the frontend, we built a Next.js 16 interface with a real-time filtering system that passes user-defined parameters through API routes to the backend, allowing users to drill down into specific markets or timeframes. The entire system runs on a stateless request-response architecture, making it lightweight and easy to deploy while still handling thousands of trades and profiles in near real-time.
The system:
- Pulls market, trade, and account-level data from the Polymarket API.
- Structures and aggregates this data into interpretable features (timing, volume, market confidence shifts, win-rate over time).
- Uses an LLM to translate natural-language user questions into structured queries and analytical summaries.
- Presents results through a simple, user-friendly interface focused on exploration rather than conclusions.
This approach allows non-technical users to ask complex questions (e.g. “Which accounts tend to buy before odds move significantly?”) without needing SQL, Python, or prior data science experience.
Challenges we ran into
One major challenge was in processing such large volumes of data and doing it quickly for a smooth user experience, which we had to implement clever workarounds for efficiency.
Other challenges included:
Normalizing noisy on-chain and market data into meaningful signals. Avoiding misleading correlations in small sample sizes. Designing explanations that communicate uncertainty clearly instead of overstating confidence. Making advanced analytics understandable without oversimplifying them.
Accomplishments that we're proud of
Built an end-to-end pipeline from public market data to human-readable insights. Made prediction market analysis accessible to non-technical users. Designed platform that encourages hypothesis testing rather than definitive claims. Created an interface that surfaces uncertainty and limitations instead of hiding them.
What we learned
This project reinforced how easily data can be misinterpreted without proper context. Prediction markets are probabilistic systems, and even highly accurate traders can be wrong for long periods of time. Without clear framing, users tend to overfit recent outcomes or mistake correlation for signal.
We learned how strongly interface design shapes decision-making. Confusing filters, poorly structured dashboards, unclear metrics, or overloaded charts can push users toward incorrect conclusions even when the underlying data is sound.
What's next for PolyResearch
If we had more time, we would:
- Allow users to save preset filters to a dashboard, which shows new trades in real-time
- Add longitudinal tracking of trader behavior over time.
- Allow users to save and compare hypotheses across markets.
- Introduce lightweight statistical validation (e.g. confidence intervals, baselines).
Built With
- cursor
- fast
- nextjs
- polymarket
- python
- typescript


Log in or sign up for Devpost to join the conversation.