
About Kodo Analytics
Kodo (鼓動) is Japanese for pulse or heartbeat — the steady rhythm of signal underneath the daily noise of a fantasy slate.
Independent fantasy baseball analytics. Built to surface the signal your roster needs — buy-low candidates, save-streamer adds, two-start pitcher matchups, lineup-spot movement, prospect call-ups, platoon deployment, and a Yahoo OAuth-connected suite for managing your own league — and to do it with transparency about where every number comes from.
What this site does
A daily-refreshed analytics platform for 12-team standard mixed fantasy baseball leagues (Yahoo / ESPN / Sleeper). Every page is data-anchored — no vibes-based rankings, no unattributed hot takes. When a signal says BUY-LOW you can click through to see the xStats gap that drove it.
Find Value
Today's buy-low / sell-high board, hot streaks, cold spells — all backed by xStats vs actuals.
Hitting lenses
Quality of contact, stolen-base watch, playing-time trends, platoon watch + deployment.
Pitching lenses
Two-start pitchers, velocity watch, Stuff+ Lab with per-pitch arsenal scores.
Bullpen
Closer grid, leverage rankings, save streamer, rest watch — operator-curated blocklists keep swing-arms out.
Prospects
Rankings, call-up watch, recent call-ups, prospect buy-low / sell-high, MiLB stat leaderboards with L7/L14/L30 windows.
My League (Yahoo)
Connect your Yahoo league for matchup view, team analysis, optimizer, free agents, trade analyzer, and auto adds.
Lineups + schedule
Today's lineups, depth charts, pitcher calendar, weekly schedule with home-road splits.
Articles + cards
Daily morning briefing, top adds, player deep dives, two-start previews — plus shareable 1080×1080 social cards.
Where the data comes from
Every stat, projection, and signal traces to a public source we ingest on a fixed cadence. We don't scrape competitor sites and we don't rely on subjective rankings — when in doubt, source the number.
The authoritative source for every counting stat and roster move.
Pitch-level + batted-ball data. Underlies every xStats-driven signal.
Two-system projection blend (55% Steamer, 45% ZiPS) plus the canonical wRC+ + WAR leaderboard back-fill. We do NOT pull park factors, wOBA, or in-season FIP from FanGraphs — those are computed in-house.
Used only with your explicit OAuth consent. Credentials never leave the OAuth flow; we only see what Yahoo's API exposes.
Rule-based classifier filters game-recap noise out before tweets surface in the feed.
Computed from raw Statcast pitch data — scored relative to MLB-pitcher mean (100 = average). Snapshot history table enables true L21-vs-season deltas.
The models behind the signals
Six engines feed the signals you see across the site. Each one turns raw data into a single, trustworthy call — and each is built to stay quiet unless the data genuinely warrants attention.
Buy-low / sell-high engine. Finds players whose results don't match their underlying quality of contact. For every hitter and pitcher, we compare what actually happened (wOBA, AVG, ERA, WHIP) against what should have happened given their batted-ball and pitch data (the "x" versions: xwOBA, xBA, xERA, xFIP). A big enough gap in either direction fires the signal — a hitter outperforming his xStats is a sell-high, one underperforming is a buy-low. Two guardrails keep it honest: a percentile cap limits output to roughly the top 10% of each pool, so "BUY-LOW" never gets stamped on half the league, and sample-size weighting filters out 10-plate-appearance noise.
Leverage proxy (ALI). Measures how high-stakes each reliever's innings actually are. We compute an average leverage index — a standard measure of how much the game is on the line in a given moment — from real usage patterns: saves, holds, blown saves, inherited runners, and outs recorded. This powers the closer grid, the save-streamer card, and the "deserves it vs. has it" flag, which fires when a setup man's leverage over the last 90 days quietly outpaces his team's named closer — often the first sign of a bullpen change coming.
Stuff+ leaderboard. Grades the raw nastiness of every pitch, independent of results. Built in-house from pitch-level Statcast data — velocity, spin, location, movement — into an overall Stuff+ score plus a breakdown for each pitch in the arsenal. We snapshot it daily, which lets the trends pages and article generator cite true 21-day movement once enough history accumulates (roughly three weeks in).
Projection blend. Our forward-looking forecast for every player. We blend the public Steamer and ZiPS systems with an in-house prior, then weight by playing time and by how stable each stat is at the current sample. The math respects each stat's nature: counting stats (HR, RBI, K) sum, while rate stats (AVG, ERA) are weighted by at-bats or innings rather than crudely averaged. It re-blends every night once the day's game logs land.
Injury update pipeline. Keeps the injury picture current without fabrication. Each morning we hand Claude yesterday's curated injury table plus today's Yahoo IL list, with web search enabled, and get back a clean diff — who's newly hurt, who changed status, what's genuinely new. The hard rule: every cited source must be a real outlet (MLB.com, The Athletic, ESPN, RotoWire, or a verified beat writer). Any row carrying news but no traceable source is automatically scrubbed before it ever reaches the page.
Catcher framing nudge. A small but real adjustment most tools ignore. Using Statcast's called-strikes-above-average (CSAA) — how many extra strikes a catcher steals with his glove — we nudge a pitcher's projection by up to ±0.5 K/9 when a strong (or weak) framer is locked into the starting role behind him.
How the articles work
Every article on the site is a collaboration between Claude (Anthropic) and the site creator. Neither writes alone — the model handles assembly + writing speed, the operator handles editorial judgement + accuracy. The four stages every article passes through:
Pipeline pulls season + rolling stats, Statcast peripherals, depth charts, injuries, transactions, and beat-reporter tweets into structured data blocks.
Claude reads the data block + a strict prompt that forbids inventing any name, stat, date, or quote not in the data. Verdict tiers + section structure are fixed per article type.
Every draft lands in admin as status=draft. The site creator reads it, edits title / summary / body, removes anything overplayed, and presses publish. No article auto-publishes.
Post-publish validators flag news-without-source rows, broken player links, and claims not derivable from data. Whole article invalidates if a hard rule fires.
The result: deep dives skew higher-touch — the operator drafts more of the prose; daily briefings skew higher-automation — Claude drafts most of the text, the operator edits and decides what actually ships.
Article types
Top 15-20 storylines from yesterday's slate.
Yahoo's biggest add-rate movers, each with opportunity + AAA context.
Single SP pick under 50% owned, graded the next day.
Long-form profile: arc, splits, xStats, arsenal, verdict.
Sunday — every 2-start SP for the week tiered Start / 50-50 / Bench.
Recently promoted + doorstep prospects with role context.
9-player tiers by xStats vs actuals gap, hidden value section.
Monday — near-returns + recent activations + fresh IL hits.
Saturday — L7 vs L30 PA/G shifts per hitter.
Closer grid changes, rising setup arms, save speculators.
Splits-exploitable adds + bench-against risks.
L7 / L14 movers anchored to xStats so it isn't all BABIP noise.
Who runs this
Kodo Analytics is a one-person project, built and maintained by Brandon Landry — an economics-trained analyst and long-time fantasy baseball player. The codebase, models, ingestion pipelines, editorial review, and articles are all the work of one operator — no investors, no advertorial placements, no aggregated feeds from third parties dressed up as original analysis.
The economics background shapes how the site approaches signal extraction: prefer real-data signals over narrative, weight by sample size, treat uncertainty explicitly, and never claim a number you can't source.
If you spot a mis-attributed stat, want a feature, or have a question about methodology, the fastest path is email — see below.
Independence + fair use
Kodo Analytics is an independent analytics tool. Not affiliated with, endorsed by, or sponsored by Major League Baseball, MLB Advanced Media, MLB Properties, or any MLB club. Team names, abbreviations, logos, and player names are used solely for identification under nominative fair use. All trademarks and copyrights are the property of their respective owners.
Statistical data is sourced from the public MLB Stats API and Baseball Savant. Cited tweets are linked back to the original author's post — we don't republish tweet content beyond brief quotes for editorial context. Comment moderation uses Anthropic's Claude API; user-submitted comment content is never sold or used for training.