Ask in plain words, like "what are the best bets today?" or "why are we skipping the Bears?". Answers come only from the picks, odds, injury reports and track record synced into this app. It won't make up odds, and it's a guide, not a guarantee. The first question asks you to allow Claude, on your own account.
Finished games, newest first: the final score, what the model picked and how it went.
Every line you've scanned, most recent first.
Set your stake and what you want to win. It builds the ticket with the best real chance of hitting at that payout from the synced moneylines, using the market's fair (no-vig) odds -- the most accurate numbers this app has. It can't make a long shot likely; it just stops you paying extra for the same payout.
Pick legs from the games already in the app (every sport, games not started yet), with the odds the app synced. This just multiplies the honest payout math; it does not tell you whether the bet is good.
DeVig.AI picks only from the games in the app, across every sport it has synced — NFL, MLB, and NBA together, not just one — favoring picks tagged "real signal" over anything flagged as unproven, and never combines two legs from the same game. It explains its reasoning below — it is not a guarantee, and combining picks always multiplies risk.
Every pick on Home is what a model thinks. This tab is where those models are checked: each one's record so far, the rules it was locked with before its first pick, and the experiments still running. None of the models has been proven to beat the betting odds yet; About sums up what testing has found.
Log loss: lower is better (it rewards honest percentages, not just picking winners). "vs base" compares log loss with the baseline: Better means the whole 95% range was better, Unclear means it could go either way. Strict LR and Trees are the two challengers; Avg of 3 averages them with the baseline. The market close knows things the models can't (late news), so it is a ceiling, not a fair rival.
Saved on this device.
Their games show up in My tracking and under ★ Tracked on Home, every week, without tapping Track.
Every pick in this app is what a model thinks, built from past games and free public data. None of the models has been proven to beat the betting odds. When their picks were checked against real prices on past seasons, the market's own odds were more accurate, so treat a pick as one more opinion, not a sure thing. Nothing here places bets.
Who wins (moneyline): the models pick winners well above a coin flip (NFL about 66%, MLB 56%, NBA 63.5% on past seasons), and their most confident picks are right more often (NFL ~77%, MLB 61%, NBA 78% in the top quarter). Favorites win often but pay little, and those picks didn't make money against real odds.
Spreads: the NFL spread model is about a coin flip (54.6% on held-out games). MLB's run-line confidence tiers held up on past games but were never checked against real run-line prices.
Player props: the props model beat a simple player hit rate on past seasons but was less accurate than Kalshi's own prices.
NFL over/unders, key-number spreads and the low-total dog: each looked positive on past seasons without being confirmed, so each is being followed live on Kalshi prices.
The Testing tab shows every model's live record, the rules each test was locked with before its first pick, and the experiments still running.
DeVig is free and runs on free public data: Kalshi prices, ESPN scores and stats, and open game histories. Paid data would let it test more ideas and fix known gaps: real sportsbook odds history to check every model against the actual price, live injury and lineup feeds, and player tracking stats. If it's useful to you, a donation goes straight to that data. Nothing changes for anyone who doesn't donate, and DeVig never takes or places bets.
Support DeVigDeVig.AI reads a photo of any sportsbook odds screen and does the honest math on it: the implied probability baked into a price, the fair (de-vigged) probability once you give it both sides of a market, and which of several prices is actually the better number, regardless of the plus/minus sign.
Every price under History and Parlay comes directly from the odds you provide — nothing there is generated by a model claiming to beat the market. (The one exception is the decision history inside the History tab, which is a log of this app's own past ML/Spread/Teaser calls — see Track record below.) Treat those probabilities as what the market itself is saying, priced correctly — not as a recommendation.
Home shows what a real prediction model actually says about this week's games, alongside the market's own line, synced in from this project's testing pipeline. It is not a black box making a fresh claim every week — every number on it traces back to a specific, dated test, and the results have mostly been negative. Here is the full, honest record:
Moneyline (who wins) — the one piece with real, held-out evidence behind it: 65.85% accuracy on a clean holdout test the model never trained on.
Spread (margin of victory) — tested and found to have no real edge: its edge estimate correlates with actual cover outcomes at essentially 0.03, indistinguishable from noise, and roughly 20 separate attempts at a genuinely different spread system (different features, different architectures, different theories of the edge) all failed the same way. On real held-out games it lands at 54.55% against the spread (2024-2025 combined, n=88) — barely above a coin flip. This app keeps showing it anyway, deliberately: not as a pick, but as information and as filler for a parlay leg when you already like a game for other reasons.
Totals (over/under) — tested three separate ways (two earlier prototypes, then a rigorous walk-forward re-test), and all three lost to the market, the third one by a statistically significant margin. A fourth attempt, built around how real NFL scores cluster on specific numbers rather than a smooth curve, is either in progress or has closed the same way — check the project notes for the current status.
Other angles tried and found to add nothing: whether the starting QB changed, weather (wind/temperature/dome) for sides, and a QB-specific trailing performance rating. An automated decider that would pick between markets was also tested and found to make things worse, not better, than just trusting the frozen models directly.
Weather over/under -- LIVE TEST. A later check of weather against closing totals (2011–2025) made +4.8% ROI, but it officially failed its main test and used game-day weather, not forecasts. So it's being tested live: forecast-based over/under picks, at Pinnacle's price until Oct 18, 2026 and on Kalshi's price since. The evening before game day an early read from that day's forecast shows first, and the pick about 3 hours before kickoff replaces it. One season can't confirm it.
Key-number ladder -- LIVE TEST. Straight spreads are a coin flip, but NFL games end on 3, 7 and 10 far more than other margins, while books price their alternate spreads with a fairly even cost per half-point. So before kickoff the app pulls a full alternate-spread ladder (DraftKings and Hard Rock until Oct 18, 2026; Kalshi's spread ladder since) and compares every rung with how often that exact line actually covered in 7,276 real NFL games (1999-2025) with a similar spread. Only rungs priced better than that real cover rate are shown, with a confidence tier: HIGH (still profitable at the low end of the real cover range), MEDIUM (+3% or more at the best estimate) or LEAN (small edge, info only). One test pick per game is tracked against real results. The tiers measure confidence in the math, not proven profit -- this is an experiment until the live test is judged.
Low-total dog -- LIVE TEST. When the over/under is 41 or lower, the book expects a low-scoring, close game, so the underdog getting +3 to +7.5 has a better shot to cover. In 2011-2025 this made +2.3% over 460 bets (profitable in 9 of 15 seasons) -- positive but not proven, so it is shown as LOW confidence and tracked live with no extra odds cost.
Confidence-based filtering and the Decision badge (NFL): tested on the same held-out data described above. For moneyline, restricting to the model's most confident picks genuinely raised accuracy -- top 25% most confident hit 77% versus 66% overall, and the improvement held up statistically. For spread, the identical test found nothing: the model's most "confident" spread picks were not more accurate than its least confident ones, matching the noise finding above. That's why every NFL game card's Decision badge only ever says ML or PASS -- never Spread. It isn't an oversight: this project checked twice (a clean-holdout audit, and the confidence test above) and found no basis for ever recommending a straight NFL spread pick, so this app won't manufacture one just to fill out a third option. A game gets an ML decision only once its confidence clears one of the two validated bars above; otherwise it's a PASS, meaning this project hasn't earned the right to call it, not that nothing is happening in that game. One honest caveat either way: this is one exploratory result on a holdout set, not yet confirmed against live, forward-only results -- treat the higher number as promising, not proven. MLB is different and gets its own SPREAD badge -- see the MLB section below.
After 22 straight failed attempts to predict the straight spread correctly, this project tried something structurally different: instead of picking a side, buy extra points (a "teaser") using the real football scoring numbers -- 3, 7, 10 -- as the buying increments, so being right by a wide margin matters less than clearing a number the market rarely lands exactly on. Checked against 2019-2025 real closing lines and outcomes, walk-forward, with no model involved at all:
Underdogs getting 2 to 3 points, teased up 10 points covered 83.9% of the time (192 real games) -- and the walk-forward search independently re-picked this exact same band from scratch, using only each year's prior seasons, four years running (2022-2025). That stability is why this is graded the strongest lead in this app. Underdogs getting 1.5 to just under 2 points, teased up 6 points (the classic, previously-published "Wong teaser") covered 77.6% across all 7 seasons tested -- stable, but close enough to today's real -120/-130 six-point teaser price that it's graded marginal, not confirmed. Big favorites teased down were tested the identical way and were not stable over time (77% early seasons, 62% late) -- deliberately left out.
This project also tested whether the model's own moneyline confidence could help pick which of these underdogs to bet. It added nothing -- essentially zero correlation, no usable pattern by confidence quartile. This isn't a model-driven pick; it's a plain rule based on where the real market line falls, which is why the app can show it without any "confidence" number attached to it the way the ML pick has one.
What this app does and does not do here: when a synced game's real market line falls into one of the two bands above, its card shows a TEASER SIGNAL badge, and the Home tab collects all of this week's candidates into one list. A real teaser bet needs two such legs from two different games, combined at your sportsbook as one wager -- this app flags candidates, it does not place, combine, or price that bet for you. Most importantly: no standard sportsbook publishes a 2-team, 10-point teaser price the way they do for 6 or 7 points, so the real return depends on the actual number your book quotes -- check it before betting. This is also, honestly, a single walk-forward result, not yet independently re-confirmed the way this project requires before calling something fully proven.
Nothing here is hidden after the fact. When a test fails, it stays failed and stays visible — the point of this tab is to show you exactly what's actually been earned, not to look impressive.
MLB uses a different, purpose-built model (Model C: 10 trailing-stat features -- team runs scored/allowed and starting-pitcher ERA/K-BB over each side's last games -- fit with the same plain logistic regression approach as NFL's spread model, not the NFL winner model itself). Its baseline is lower than NFL's because single MLB games are simply noisier: 55.9% moneyline accuracy overall on 22,337 real games (2015-2025, excluding 2020 and postseason/All-Star games), versus NFL's ~66%. That's expected, not a red flag -- MLB's own real sportsbooks run tighter, closer-to-even moneylines than NFL for the same reason.
Moneyline confidence filtering is real here too, and tested to the same statistical standard as NFL's: a Bonferroni-corrected bootstrap test (10,000 resamples, 3 simultaneous comparisons) found accuracy climbs to 58.9% at the top-50%-confidence bar (n=11,168) and 61.1% at the top-25% bar (n=5,584), both with confidence intervals entirely above zero -- a real, passed test, not just a first look. Same honest caveat as NFL: this is holdout evidence, not yet confirmed against live, forward-only results.
Spread (the run line) uses a fixed home -1.5 run line (real MLB run lines follow whichever team is favored, not always home, so this is a stated simplification -- see project notes). The full-coverage headline number, 63.5% accuracy, is mostly an illusion: home only covers -1.5 in 36.2% of real games, so always picking away already gets 63.4% for free. But on top of that baseline, MLB_SPREAD_SELECTIVE_COVERAGE_V1 -- the same Bonferroni-corrected bootstrap test (10,000 resamples, 3 simultaneous comparisons) that validated moneyline's confidence tiers above -- found the model's own confidence tiering is real here too: accuracy climbs to 67.64% at the top-50%-confidence bar (n=11,168) and 70.51% at the top-25% bar (n=5,584), both with confidence intervals entirely above zero. That's why MLB game cards now show a separate SPREAD badge (COVER or PASS) alongside the ML one, the same way the moneyline Decision badge works. One thing this result does NOT show, stated plainly: it has not been benchmarked against real sportsbook run-line prices (no historical spread odds were used anywhere in training or testing this model), so a COVER read is a claim about the model's own demonstrated accuracy, not a claim that the pick beats a real market price -- and like everything else on this page, it's not yet confirmed against live, forward-only results.
No Teaser Signal for MLB. The NFL teaser finding is built entirely around NFL's own scoring numbers (3, 7, 10 points) and was only ever tested on real NFL closing lines. MLB's run line doesn't have an equivalent structure, and no teaser research has been done for it -- so MLB game cards never show a teaser badge, on purpose, not because the feature was forgotten.
NBA uses its own Model C: 8 team-level features -- each side's points scored and allowed over its last 10 games, days of rest (capped at 5) and back-to-back flags -- fit with plain logistic regression. There's no player, injury or lineup data in it yet. Before it was allowed anywhere near this app it had to pass a pre-registered walk-forward test (NBA_MONEYLINE_V1, 2022-23 to 2025-26): it beat a team-record-only baseline by a real, pre-set margin, in all four test seasons individually. Its overall held-out accuracy is 63.5% (n=4,923).
Confidence filtering is real here too, from a separate pre-registered test (NBA_SELECTIVE_COVERAGE_V1, the same Bonferroni-corrected bootstrap method as MLB): accuracy climbs to 71.7% at the top-50%-confidence bar (n=2,462) and 77.7% at the top-25% bar (n=1,231), both with confidence intervals entirely above zero, and the pattern held in every one of the four seasons. That's where the NBA ML/PASS bars on game cards come from. Two honest limits: the most confident NBA games are mostly big favorites, which the betting market prices as favorites too, so a high hit rate is not the same as beating the price -- no betting odds were used in either test; and none of this is confirmed on live, forward-only games yet. The 2026-27 season is that test.
No spread, total or teaser for NBA. The NBA tracker only models who wins. Game cards show the moneyline and the model's read, nothing else, on purpose.
The Track record card on Home tallies every decision this app has ever actually made, split into three separate counters. ML decisions are real and validated for both sports. The third row is always Teaser Signal (NFL only, information only). The middle row depends on sport: for NFL it's "Spread read (info only)" -- not a validated pick, shown purely for transparency. For MLB it's "Spread decisions -- real edge", a second validated pick type on top of ML, tallied against its own real accuracy bar the same way ML is. Every record is written the moment that week's picks lock, before any game is played, so the log can't be quietly reshuffled after seeing results — and outcomes get filled in afterward from official final scores, never guessed or estimated. The full game-by-game decision history — what was picked and how it turned out, "pending" until the real result is in — lives under the History tab, alongside your saved lines.
The photo is read by Claude, on your own account — the first time you use it in a session it'll ask you to allow that. Always check the extracted numbers against the photo before trusting them; OCR on a phone screen photo isn't perfect, which is why every field is editable before you save it. Below the scanner, this same tab holds the decision history described above and every line you've saved, most recent first — everything about what this app has read or predicted lives in one place rather than split across tabs. If you share this page with friends, saved history may not carry across accounts the same way for everyone — it's built as a personal tool first.
Tell it your stake and what you want to win (say $10 to win $1,000). It searches the synced moneylines for the ticket of up to 5 legs, one per game, that reaches that payout with the highest real chance of hitting, using the market's no-vig odds -- in this project's tests the market's own odds were the most accurate numbers available, more than the model's. It usually prefers a few underdogs over a long string of favorites, because every leg adds the book's cut. It shows the real odds of hitting and the book's edge on each ticket. It cannot make a long shot likely or profitable; a 100-to-1 ticket hits roughly once in 110-150 tries even when built well.
Every moneyline pick now shows the win rate its price needs to break even next to the model's own number. When the price needs more than the model gives (say -900, which needs 90%, on a 72% pick), the pick is tagged Price too steep: it loses money over time even if the model is exactly right. It's a label only; the picks themselves are unchanged. A pick that passes the check is not proven profitable either, because the market has been more accurate than the model in testing.
Every NFL matchup now has prop tabs (Passing, Rushing, Receiving, Touchdowns and more) showing NFL player props (yards, catches, attempts, touchdowns and more) priced on Kalshi, plus Polymarket when it has the same line. Prices are shown as normal sportsbook odds with Kalshi's small fee included, and many Polymarket lines are thin, so they're flagged. Next to each line is our prop model's chance. It uses only each player's own past games (recent ones count more), checked on 2023-2025 seasons, where it was well calibrated for established players and beat a simple hit rate, but not on touchdowns. It knows nothing about injuries, teammates, depth charts or weather, and there were no old Kalshi prices to test it against. So its picks are tracked live under rules locked before the first pick, and judged at 300 picks or the end of the season (see Testing). Until then, a difference between the model and the price is not a reason to bet.
The Lab, now inside the Testing tab, is a separate NFL experiment. Three challenger models (built on the same 63 past-game features as Model 1.0, each trained only on seasons before the one it predicts) are logged at every Wednesday lock next to the frozen Model 1.0 and the de-vigged market price, with the exact odds quote time, and a fixed hypothetical rule. Records are append-only and results are added later as separate entries, so nothing can be rewritten after kickoff. Counting starts with the Week 6 lock, and no conclusion is drawn before the season ends. Nothing in the Lab changes the Home picks, and nothing is bet.
Player props can be legs too: tap any prop's Over or Under odds inside a matchup to add it (tap again to remove), pick labeled props from the game list, or let DeVig.AI or the long-shot builder use them. Prop legs use Kalshi's price with its fee included; Kalshi doesn't sell them as one parlay and sportsbooks price prop parlays differently, so the combined odds are a guide. Prop labels are unproven until the props test says otherwise. The Parlay tab pulls legs from any book you've scanned and saved — it isn't limited to the books this project fetches live lines for — and multiplies their payouts together. That naive multiplication is the correct math only when the legs are truly independent. When two legs come from the same game, real books shade the combined price down because the outcomes are correlated; this tool flags that case and tells you the number shown is an upper bound, not a real quote, rather than trying to fake a correlation adjustment it can't actually compute.