# How We Built SpotMyTell (And Why AI Poker Tells Were Harder Than We Expected)
The idea started with a losing session.
I was playing $2/5 at a local card room. I'd been playing against the same guy for three hours. He was clearly readable — something about his timing was off when he bluffed — but I couldn't articulate what it was. I called a river bluff based on a feeling. Then I folded to a legitimate river bet an hour later, also based on a feeling.
I'd been right the first time and wrong the second time, and I had no real idea why. No systematic framework. Just intuition that sometimes worked and sometimes didn't.
I started researching. There was decent academic literature on physical behavioral tells in poker. There was some behavioral economics research on decision-making under uncertainty. There were YouTube channels with generic "poker tells" advice.
But nothing that systematically tracked tells across sessions, connected them to hand outcomes, and learned what was actually predictive versus what was noise.
That gap was SpotMyTell.
Technical Challenge 1: Training AI on Subjective Behavioral Data
The first challenge almost killed the project before it started.
Poker tell data is inherently subjective. What constitutes a "long tank"? What counts as "shaking hands"? Two observers watching the same hand will describe the behavior differently.
Machine learning works best on objective, labeled data. Images have pixels. Financial data has prices. Behavioral tell data has... descriptions that vary by who's describing them.
Our first approach: build a structured tagging system for behavioral observations. We created specific behavioral categories with tight definitions. Not "bet quickly" but "bet within X seconds of action." Not "seemed nervous" but "chip fumbling: chips rearranged without betting within Y seconds."
This worked better, but then we hit the next problem: we needed enough labeled data to train on.
Poker hand data (results, positions, bet sizes) exists in abundance. Hand histories from online poker contain millions of hands with precise data. But behavioral tells? Almost no labeled dataset existed.
We built one. We started with live stream footage — Hustler Casino Live, Poker Go, high-stakes live games. We tagged behavioral patterns manually: timing, chip handling, verbal cues, body language. Then we connected those behavioral tags to hand outcomes (what did the player have at showdown? What was the equity of their decision?).
This took months. The initial labeled dataset was roughly 12,000 hands with behavioral annotations. Small by ML standards, but enough to start identifying what was signal versus noise.
The key insight from that dataset: timing tells had the highest signal-to-noise ratio of any behavioral category. Physical tells were noisier. Verbal tells were harder to tag consistently. But timing — seconds from action to decision — was objective, consistent, and correlated with hand strength more reliably than anything else.
Technical Challenge 2: Video Processing at Scale
If behavioral tells are the product, video is the input.
Processing poker stream footage at scale turned out to be harder than we expected for a specific reason: poker footage is slow. Most of the time in a poker stream, nothing is happening. Players are mucking hands, shuffling chips, waiting for cards.
Our initial video processing pipeline was pulling every frame. That was computationally expensive and generated enormous amounts of irrelevant data.
The solution: action detection. We built a model that identifies "active decision moments" in poker footage — when a player is facing a bet, making a bet, or revealing cards. The system only processes behavior during these windows, ignoring the dead time.
This reduced processing time by about 73% and dramatically improved signal quality. When you're analyzing behavior, you want the behavior happening during decisions, not during the shuffle between hands.
The other video challenge: camera angles. Live streams don't maintain consistent camera positioning. The player who's perfectly centered in frame for one hand is half-visible in the next. We built a player tracking system that identifies the same player across camera cuts and angles.
This was harder than the tell detection itself, honestly. Facial recognition had privacy implications we weren't comfortable with at the time, so we used non-facial identifiers: seating position, clothing, stack size relative to other players. Not perfect, but functional.
Technical Challenge 3: Building a Poker-Specific NLP Model
Verbal tells require natural language processing. And general-purpose NLP models aren't trained on poker.
When we ran early test transcripts through GPT-3 and asked it to identify behavioral significance in poker speech patterns, it had no framework. "I'll put in a bet" was analyzed the same as "I'll fold here." The model had no poker context.
We built a fine-tuned NLP model specifically for poker verbal patterns. Training data: poker stream transcripts where we'd manually tagged verbal behavior relative to hand outcomes.
Examples of what the model needed to understand:
- "I might as well bet" followed by a large bet = suspicious (the dismissiveness is often performed)
- "I think you have [strong hand]" when folding = gathering information, sometimes a tell about what they were holding
- Abrupt topic changes after betting = avoidance behavior
- Repetition of bet size verbally = often uncertainty
The model needed to understand poker context — what's a normal thing to say versus an unusual thing — and temporal context (what happened before and after the verbal behavior).
Version 1 was mediocre. It caught obvious verbal patterns but missed subtle ones. Version 2 was trained on a larger dataset and performed significantly better. We're on version 4 now and it's doing things we didn't expect — identifying composite verbal/timing patterns that neither the verbal model nor the timing model would catch alone.
Technical Challenge 4: Making It Useful for Casual Players
The hardest non-technical challenge: making the tool useful for someone who plays $1/2 twice a week and isn't a data scientist.
Early versions of SpotMyTell produced excellent data that was nearly unusable for the target audience. Output looked like: "Player 3 exhibits timing distributions consistent with Cluster B behavioral patterns with 68% confidence, P-value 0.043."
Nobody wants that. Nobody can act on that at a poker table.
We had to translate the AI output into poker player language.
"Player 3 likely holds a strong hand when their betting time exceeds 12 seconds" is useful.
"Player 3 exhibits timing distributions consistent with Cluster B behavioral patterns" is not.
This translation layer took longer to build well than the underlying models. The challenge: different players understand poker at different levels. A GTO-aware player wants to know "what range does this timing tell suggest?" A recreational player wants "should I call or fold here?"
The solution we landed on: tiered output with different detail levels. The AI coaching feature gives you actionable summary tells. The player database gives you pattern details. The hand history review gives you the raw statistics if you want them.
We still think we can improve this. The translation layer is an ongoing project.
What Worked
Timing tells: Our best performing detection category. High accuracy, consistent across player types, and directly actionable.
Sizing pattern analysis: The hand history feature that catches your own leaks. Players consistently underestimate how readable their sizing patterns are.
Longitudinal player profiling: Building a tell database for a player across multiple sessions is where the compounding happens. Session 1 data alone is limited. Session 10 data for the same player is significantly more valuable.
The poker solver integration: Connecting behavioral tells to equity calculations. "Player shows this behavior pattern, which suggests range X, which means your equity in this spot is Y" — that connection between behavior and math is something we're proud of.
What Didn't Work
Real-time tell detection during live streams: We tried building a product that would analyze a live stream in real time and surface tells as they happened. The latency was too high, the false positive rate was too high, and the UX of constantly surfacing alerts during a stream was terrible.
We pivoted to post-session analysis. Better data quality, better analysis, more actionable output.
Physical tell detection from hand history alone: Hand histories don't contain physical behavior data. You can infer timing from action logs (online poker timestamps), but not hand trembling or posture. We built a manual tell-logging system to supplement hand histories, but adoption was low. Nobody wants to type "player 3 fumbled chips" after every hand.
The compromise: we made it easy to log tells post-session from memory. Quick tags, not detailed notes. That got adoption up. But the dream of fully automated physical tell detection from hand histories alone isn't realistic. You need video or manual input.
Generic tell advice as content marketing: We tried publishing "5 tells every poker player should know" content early on. It felt like everything else on the internet. Nobody shared it. Nobody engaged.
What worked was first-person, specific, data-driven content. "I uploaded 200 hands and found 3 leaks" performs infinitely better than "here are some common poker tells." We learned to write like poker players, not marketers.
What's Coming Next
I'll be honest about what's on the roadmap because I think poker players deserve honesty from their tools.
Better video analysis: We're working on processing user-submitted video clips — not just live streams — so you can upload a clip from your phone of a specific hand and get behavioral analysis on your opponent. Early testing looks promising but the quality of phone video at card rooms is... challenging.
Real-time session notes with AI assist: Instead of logging tells manually, you'd speak a note into your phone between hands: "Player 3 tanked river, had the nuts." The AI transcribes, tags, and files it in the player database automatically.
Cross-venue player matching: Some regulars play at multiple rooms. If you profile someone at Room A, it would be useful to have that profile available when you see them at Room B. We're exploring opt-in player identity matching that respects privacy.
More game types: We currently support Hold'em and PLO variants in the equity calculator. Short deck, mixed games, and stud variants are on the list but not yet built.
The Honest Limitations Right Now
SpotMyTell isn't magic. Here's what it can't do today:
- It can't read tells in real time at the table for you. You still need to develop observation skills.
- The behavioral AI needs 50+ hands on a player before the patterns are statistically meaningful. First-session data is directional at best.
- Video analysis works best on professional stream footage. Consumer-grade phone video is hit or miss.
- The NLP model works in English. Other languages are not well-supported yet.
- We don't have a mobile app. It's web-based. A mobile companion for quick post-hand note logging is being built.
We'd rather tell you what doesn't work than have you discover it yourself and feel misled. The stuff that does work — timing analysis, sizing pattern detection, longitudinal player profiling, hand history leak detection — works well. But it's not everything, and we're still building.
Why We Keep Building
Poker is the last major competitive game where behavioral analysis is still mostly done by intuition. Chess has engines. Sports have analytics. Even esports have detailed performance tracking.
Live poker players are still going off vibes.
Not because the data isn't there — it is. But because nobody built the tools to capture and analyze it systematically. The gap between "I think he's bluffing" and "his timing pattern matches his bluffing baseline with 78% confidence" is the gap between intuition and evidence.
We're trying to close it. We're not there yet. But we're closer than anything else I've seen.
What to do next: If you want to see what SpotMyTell catches that you don't, upload a hand history or start building a player profile on your regular opponents in the player database. The free tier gives you enough to see the value. Sign up here.