The short version
Every projection, matchup grade, and confidence figure on this site comes out of one shared pipeline, described below in the order it actually runs. Nothing here is aspirational: each paragraph names the table or the function doing the work, so you can go check it against the number on the page you came from.
The projections
FF Beacon is currently projecting players from Sleeper. That name is resolved live rather than typed into this page: currentProjectionSourceCached() checks which engine is switched on and projectionSourceDisplay() names it, so the day our own engine takes over from Sleeper, every heading that names a source updates with it instead of quietly going stale.
Before anything else touches it, the raw weekly number is rescored under your chosen league format. PPR, half PPR, and standard reprice every reception differently, and a TE premium or superflex league changes who a projection actually favors, so nothing downstream ever compares two players under mismatched scoring.
From there, the projection runs through three more adjustments in a fixed order: the matchup, a reliability discount, and a per-week injury designation when one applies. Each is its own section below.
The matchup model
Matchup difficulty comes from nfl_defense_vs_position, a table FF Beacon computes itself rather than trusts to the projection source. A player's best and worst projected week from that source differ by only 2.6 to 5.4 percent across a season, which means the source is publishing something close to a season average, not a real read on the defense the player is about to face.
The table is built from our own player game logs, more than 228,000 regular season rows with the opponent recorded on every one, back to 2020. Raw points allowed are corrected for the offenses a defense actually faced (a defense that happened to draw the six best offenses in the league looks generous for reasons that have nothing to do with the defense), then pulled back toward a neutral 1.0 by how much that position's matchup signal has actually held up from one year to the next. Whole-defense scoring persists the most (a measured year-over-year correlation around 0.32); wide receiver persists the least, measuring essentially flat to slightly negative. A wide receiver's matchup adjustment moves less than a running back's for exactly that reason.
The number applied to any given projection blends the two most recently played seasons, weighted toward the more recent one. Early in a season, before this year has enough games to trust on its own, that blend falls back to the two prior seasons instead, without anyone having to know what week it is.
The reliability discount
Every player carries a reliability multiplier read from player_projection_accuracy: how often the player's actual score has beaten the projection (beat rate), and how often the player has actually taken the field in a game the player was projected for (availability rate). A boom-or-bust player gets pulled back toward a more conservative number; a steady one keeps closer to the raw projection.
Recency counts for more than career history. A player's current season carries far more weight than a season from two years back, and within the current season itself a Week 1 result matters less by Week 12 than it did at the time. The exact weights are admin-tunable, but the shape is fixed: newer evidence counts for more, because roles and offenses change from year to year in a way a flat career average cannot see.
The multiplier is centered on the player's own position before it is ever applied. Sleeper's own projections, the only ones graded long enough to measure, run about 5 percent low at quarterback and about 3 percent high at tight end. Without centering, that source-wide bias would show up disguised as an individual player being unreliable.
The confidence figure
The confidence figure is a real probability, not a label picked by eye: the chance the player you are told to start actually outscores the next-best option, computed by winProbability() from each player's projected points and that player's own measured spread. The same function grades a real matchup on the League Pulse Schedules board, so a start/sit call and a weekly matchup projection are never running two different kinds of math to answer a similar question.
A confidence of 0.65 or higher reads as clear, 0.55 up to that reads as lean, and anything below reads as toss-up. When either player is missing a projection or a measured spread, the figure comes back unmeasured rather than a guessed 50 percent: an absence and a real even matchup are different things, and the site never treats them the same.
Values and sources
Player values, the ones behind the rankings board and the Trade Calculator, come from FF Beacon, KTC, FantasyCalc, and DynastyProcess. Pick the one you trust in the site header and every value on the site follows it, including trade grades and league power rankings. This is a separate system from the weekly projections above: a value answers what a player is worth right now, a projection answers what the player is expected to score this week.
A source only ever prices the formats it actually publishes, so the format picker hides any format the active source doesn't cover. If a shared link asks for a format the current source can't price, the site falls back to the closest format it can cover and says so with a banner, rather than silently changing your saved setting.
FF Beacon is currently the only source we hold dynasty draft pick values from, so any trade or roster that includes a pick prices it from FF Beacon, even on a page where your player values come from a different source. Pages that show a pick value say so.
What the models don't know
Real gaps, stated plainly rather than glossed over.
Weather
Nothing in the projection or matchup pipeline reads a forecast, a wind speed, or a dome designation. A kicker's outlook in a driving wind is the same number it would be in a dome.
Timing
Sleeper's injury designation, the only place the site learns a player is questionable, doubtful, or out, is synced once a day. A change to the injury report later in the week, the official inactive list published shortly before kickoff, and anything that happens to a player once a game is underway, all wait for the next day's sync before a projection reflects them. That is true whichever engine is projecting: both read the same daily sync for availability.
Game script from the betting market
FF Beacon is currently projecting from Sleeper, and Sleeper's own weekly projection does not read a point spread or a game total. Whatever game script it implies comes only from the volume Sleeper already expects a player to see, not from a betting line.
Where to see it working
Beacon Breakdown runs every step above on two to eight players at once. The FAAB Calculator and a synced league's Lineups and Positional WAR pages read the same projections and the same matchup table. Only the FF Beacon Values behind the Trade Calculator and the rankings board run on the source you pick in the header instead of this pipeline.