1307scout shows every statistic we can, so you can look at the numbers and draw your own conclusions. Ratings and the other derived stats on this page are there to supplement those numbers, not replace them. A grade is a quick summary to help you decide where to look, and the stats behind it are always shown next to it.
Every team can have two separate grades. Neither one knows the other exists.
| Scouting rating | Official rating | |
|---|---|---|
| Built from | Match and pit entries from our own scouts | Match results synced from FRC Events and The Blue Alliance |
| Measures | What this robot did on its own | About how many points this team adds to its alliance per match (OPR) |
| Seasons | This season's form only (2026 REBUILT) | Every synced match |
| Updates | As soon as an entry is saved | Within about a minute of a sync |
They're kept apart so a team is rated on whichever data it actually has. A team with a full official record but no scouting coverage still gets an official grade, and when the two grades disagree, that's useful to see.
Both ratings turn into a letter the same way. Each team gets a score (0 to 100 for scouting, points per match for official), then the grade comes from the share of rated teams with the same score or lower. A grade is a ranking among the teams in our database, not a measure against all of FRC.
| Grade | Share of rated teams at or below this score | In other words |
|---|---|---|
| S | 90% or more | Top 10% |
| A | 75% to 90% | Next 15% |
| B | 50% to 75% | Next 25% |
| C | 25% to 50% | Next 25% |
| D | 10% to 25% | Next 15% |
| F | Under 10% | Bottom 10% |
| NR | Not rated: fewer than 3 matches of that kind of data (for the official rating, 3 qualification matches) | |
| T | Test team: tagged by staff and left out of the grading | |
A team's score is a weighted blend of seven parts, each from 0 to 100. These are the bars in the Rating breakdown on the Team Database. "Ranked" means the share of scouted teams at or below this team on that measure, so 80 means it's level with or ahead of 80% of them.
| Weight | Part | How it's measured |
|---|---|---|
| 32 | FUEL scoring | Average FUEL points per match, ranked. Matches where the scout marked the role as Defense or Feeder are left out, so a good defender isn't graded as a bad scorer. |
| 16 | Climbing | Average TOWER points per match (auto and teleop), ranked. |
| 16 | Reliability | 1 − (disabled rate + 0.6 × broke-down rate + 0.4 × stuck rate), never below 0. Not ranked. |
| 11 | Shooting efficiency | The average of two things: FUEL per volley (ranked) and scouted accuracy, where 1 to 5 maps to 0 to 100. |
| 11 | Robot capability | The team's latest pit entry, scored in the table below. Not ranked. |
| 9 | Autonomous | 80% average auto points (ranked) and 20% how often it left the starting zone. |
| 5 | Fouls avoided | 1 − foul or card rate. Not ranked. |
From Table 6-4 of the 2026 game manual. Avg pts / match on a team's card is FUEL plus TOWER points, across all of its matches.
| Action | Points |
|---|---|
| FUEL in an active HUB (auto or teleop) | 1 each |
| TOWER L1 in auto | 15 |
| TOWER L1 / L2 / L3 in teleop | 10 / 20 / 30 |
Each pit question answered scores from 0 to 1, and the answers are averaged. Questions left blank are skipped. The robot photo and notes aren't scored.
| Question | Score |
|---|---|
| Highest TOWER level | None 0, L1 0.33, L2 0.67, L3 1 |
| Fits under a TRENCH | No 0, Yes 1 |
| Ground intake | None 0, Front or Side 0.7, Front and side 1 |
| Shooter type | Fixed flywheel 0.4, Other 0.5, Adjustable hood 0.7, Turret 1 |
| Drivetrain | Mecanum or Other 0.5, Tank 0.65, West Coast 0.8, Swerve 1 |
| Max FUEL held | Capacity ÷ 30, up to 1 |
| Max shooting range | Range in feet ÷ 20, up to 1 |
| Uses AprilTag vision | No 0, Yes 1 |
One number, from results only: the team's OPR, which estimates how many points it adds to its alliance each match. An OPR of 64 means "about 64 points per match, on top of its partners". It's worked out from the qualification matches at each event, then averaged across the team's events:
Results against a tougher field say more about a team, so each event also counts by the tier staff set on it:
| Event tier | Match weight |
|---|---|
| FIRST Championship | 2.0× |
| District Championship | 1.5× |
| Qualifier | 1.0× |
| Off-season | 0.75× |
Playoff matches aren't used, and neither is win rate. Both depend heavily on partners: a robot picked onto a dominant alliance wins and scores a lot without doing much itself. Record and average alliance score are still shown next to the rating as plain stats.
Why OPR. This replaced an earlier score (60% average alliance score + 40% win rate) after both were tested on the full 2026 season. Built from matches before the FIRST Championship, OPR picked the winner of 76% of Championship qualification matches, against 71% for the old score, and its grades matched an independent rating (Statbotics EPA) far more often. Adjusting OPR for how high each event or week scored was tested too, and made it worse.
The Alliance View adds two estimates for a full red and blue match-up. Our Matches shows the same win chance for each upcoming match.
Each alliance gets a Scouting grade and an Official grade, kept separate like team grades. The three teams' scores are added together, then compared against every possible 3-team alliance from the rated teams, using the same S to F cutoffs as above. An S alliance has a combined score in the top 10% of all alliances those teams could form. All three teams must be rated, otherwise the grade is NR, and a test team counts as not rated.
This estimates how likely each alliance is to outscore the other, from two separate sources. A source is only used if all six teams have at least 3 matches in it.
| Scouted | Official | |
|---|---|---|
| Expected score | The three robots' Avg pts / match, added up | The three teams' OPRs (official rating scores), added up |
| Uncertainty | The three robots' variances, added up | The average of the three teams' alliance-score variances |
A team's variance measures how far its scores swing from match to match, and is increased by 1/n for a team with n matches, so less data means less certainty. It's never treated as less than a 5 point swing. Each source then turns the expected gap into a chance:
The headline number is the average of the sources available, and it's kept between 5% and 95%. Both sources are shown beside it, because when they disagree, that's worth knowing.
Treat this as a rough guide:
The Playoff Selection page ranks every team at the event that hasn't joined an alliance. It adds no new score: the two ratings stay separate, and the raw stats sit beside them.
Pick an event at the top of the Team Database to see its qualification standings. They're worked out from the synced FRC Events / TBA qualification matches, since the sync doesn't bring in the official ranking table.
Official scores cover a whole alliance. OPR (offensive power rating) estimates how much of that one team adds. It treats each alliance's number as the sum of its three robots' numbers, then finds the per-team values that best fit every qualification match at the event.
A program on a team laptop reads match video and saves an estimate for each robot. It reads the scoreboard and the clock from the stream overlay, follows each robot's bumpers on the wide shot, and tells robots apart by reading their bumper numbers. These numbers are shown in their own Vision section and never enter a rating.
Bumper numbers are often too small or blurry to read on a broadcast. When a robot's number can't be read, the program compares how the robot looks with how that team's robot looked in other matches of the season where its number was read clearly. Matches from the same event count first, since robots change between events. If that doesn't settle it either, a robot is only identified when it's the one team on its alliance left.
| Stat | How it's worked out |
|---|---|
| Estimated FUEL scored | Every rise in the alliance's score is split between its robots. A robot in its own alliance zone just before counts most, one elsewhere counts a little, and one out of view counts in between. The end of auto and the end of the match are skipped, since TOWER points land then. The split is then scaled to the official FUEL points: the alliance score minus each robot's official TOWER points and the foul points. |
| Left starting zone (auto) | The robot crossed its alliance-zone line during auto. |
| Distance driven | Second-by-second movement on the field, skipping gaps and impossible jumps. |
| Time in each zone | Seconds the robot was tracked in its own zone, the neutral zone and the opponent's zone. |
| Time stopped | Seconds in teleop, before endgame, where the robot moved less than 6 inches in a second. A long stop can mean a disabled robot. |
| Close contacts | Separate times the robot came within 40 inches of an opponent. |
| Identified by number, by look | The share of the robot's tracked time it was identified by reading its bumper number, and by how it looks. The rest was by being the only team left. |
| Confidence | The share of the match the robot was tracked, cut by up to half when it wasn't identified. Being identified by look counts a little over half as much as by bumper number. Under 50% is shown as low. |
The Match Flags page runs these checks on each played qualification match. Test teams are left out.
| Flag | Level | When it's raised |
|---|---|---|
| Team isn't in this match | High | An entry's team isn't in that match's line-up, or the match is past the end of the schedule. |
| TOWER doesn't match | High | A scouted auto or endgame TOWER level differs from the official result for that robot. |
| Not scouted | Medium, or Low with vision | No one scouted the robot. It's Low when vision covered it with 50% confidence or more. |
| Scouts disagree | Medium | Two entries for one robot differ by more than 10 FUEL and 30% of their average, or give different TOWER levels. |
| Alliance FUEL doesn't add up | Medium | All three robots are scouted, and their FUEL total is more than 20 points and 35% away from the official FUEL points. |
| FRC Events and TBA disagree | Medium | The two sources have different scores for the match. |
| Vision saw the robot stopped | Medium | Vision saw a stop of 20 seconds or more, and no scout marked the robot disabled or broken down. |
| FUEL far from usual | Low | The entry is more than 15 FUEL and 3 spreads from the team's median at the event, with 3 or more other matches. The spread is 1.48 times the median distance from the median, which matches a standard deviation when there are no outliers. |
| Vision disagrees | Low | Vision's FUEL estimate differs from the scouts by more than 15 FUEL and more than half of the larger number, or it disagrees on leaving the starting zone. |
| Vision scoreboard read is off | Low | Vision's final score differs from the official score by more than 5, both with and without foul points (the broadcast scoreboard usually doesn't show those until after the match), so its numbers for that match may be off. Not checked when the video ends before the match does. |
Who to scout next lists the next three unplayed qualification matches. It highlights the three robots in each with the smallest share of their played matches scouted by a person.
These appear on the Team Database and Alliance View. They use plain, unweighted numbers, so they won't always match the rating's inputs.
| Stat | How it's calculated |
|---|---|
| Win % | Wins ÷ matches played. A tie counts as played but not as a win, and matches aren't weighted by event tier. |
| Qualification / Playoff win % | The same, for just those matches. The number in brackets is the match count. |
| Avg score margin | Average of alliance score − opponent score, across wins and losses. |
| Score swing | Standard deviation of alliance score, shown from 3 matches. Lower means steadier. |
| Red / Blue / Station win % | Win % for just the matches on that alliance color or at that driver station. |
| Biggest win / Biggest loss | The largest positive and negative score margin. |
| Longest win streak | Most wins in a row, by event date and match order. Ties and losses end a streak. |
| Last 5 | The last five results, by event date and match order. |
| Teleop FUEL trend | Average of the last 3 entries minus the average of all earlier ones, shown from 5 entries. |
| Scouting / Official rank | Position by score among rated teams, leaving out test teams. Teams level on score share a rank. |
| All scouted stats | For every form field: average, low and high for numbers, Yes % for yes/no answers, and each answer's share for choices. Blank answers aren't counted. |
| Score breakdown | The same summary for everything FRC Events or TBA report per match. These are alliance totals unless marked "this robot". |
| Estimated contribution (OPR) | One team's share of each alliance number, explained above. |
| Climb rate | Share of entries with a teleop TOWER level other than None. |
| Usual role / Main FUEL source | The most common answer, with how often it was chosen. |
| Combined scouted pts | On the Alliance View, the sum of each team's Avg pts / match. |
| OPR (pts added / match) | On the Alliance View and Team Database, the team's official rating score, explained above. |
The calculations live in team_ratings() and team_official_ratings() in
SQL/rebuild_all.sql, and the Team Database applies the final grading. OPR is in
js/opr.js, the vision estimates in the vision/ worker, and the flag checks
in flags.html. If they change, this page should change with them.