Skip to content
Scouting & Strategy·Lesson 22 of 32

Project 5: Assemble a One-Page Pre-Match Prep Sheet

Turn your data into a single printable sheet the drive team can read in the minute before a match.

Sign in to track progress, earn XP, and save lessons.

Goal

The most underrated scouting deliverable: a one-page brief generated for the next match that the drive coach can absorb at a glance. It converts your whole pipeline into a decision the drive team can act on between matches.

What goes on the page

Keep it to one page; a drive coach has seconds. For an upcoming qualification match, include:

  • Your alliance (3 partners): each robot's primary scoring role (e.g., "L4 coral, ~5/match", "deep climb reliable", "algae + defense") pulled from your rank sheet.
  • Opponent alliance (3 robots): same, plus a flag for their biggest threat and any reliability red flags ("tips on hard turns", "failed climb 2 of last 3").
  • The RP math for this match: can your alliance realistically reach the Coral RP (7 coral on each of 4 levels) and the Barge RP (16 barge points)? If two partners can deep-climb, the Barge RP is basically free, which may change whether you push for the Coopertition bonus (2 algae in each alliance's processor) to ease the Coral RP to 3 levels.
  • A recommended plan: one or two sentences. "They have no L4 scorer; play aggressive offense and let 254 climb deep. Skip processor algae unless we are up by 20."

Auto-generating it

If you did Projects 3-4, you can template this. A simple Python approach reads the TBA schedule, looks up each team in your rank table, and fills a Jinja or f-string HTML template you print to PDF:

upcoming = [m for m in tba.event_matches('2025cc')
            if m['comp_level'] == 'qm' and m['alliances']['red']['score'] in (None, -1)]
next_match = sorted(upcoming, key=lambda m: m['match_number'])[0]
for color in ('red', 'blue'):
    for team in next_match['alliances'][color]['team_keys']:
        num = int(team[3:])
        row = rank_lookup[num]   # your dict from Project 4
        print(color, num, row['role'], row['epa_total'], row['endgame'])

(TBA reports an unplayed match's score as -1, so filter on that or on None.) Even without code, a duplicated Google Sheets template with VLOOKUP(teamNumber, rank!A:Z, ...) cells fills itself when you type three team numbers.

Communication discipline

The sheet is the handoff between the data subteam and the drive team. Two rules make it land:

  1. One source of truth. The strategist who builds the sheet is the only voice giving the drive coach numbers during the match cycle. Mixed messages in the queue line lose matches.
  2. Confidence labels, not false precision. Write "deep climb: reliable (5/5)" or "L4: shaky (2/6, 1 sample partner)", so the coach weights advice by how much data backs it.

Practice the handoff

Run a dry alliance cycle at a meeting: generate the sheet for a past match, have a mock drive coach read it in 60 seconds, then quiz them on the opponent's biggest threat. If they cannot answer, the sheet is too dense. The page that wins is the one that gets read.

Key takeaways

  • A one-page brief per match (partner roles, opponent threats, RP math, a 1-2 sentence plan) is the deliverable that actually changes drive-team decisions.
  • Templating with TBA's schedule plus your rank table auto-fills the sheet; even VLOOKUP in Sheets works without code.
  • Use confidence labels and a single strategist voice so advice is weighted by data quality and the queue line stays clear.

Lesson quiz

Required

Answer all 3 questions correctly to complete this lesson.

1.On a REEFSCAPE pre-match prep sheet, which endgame action is worth the most points and should be flagged for an opponent's strong climber?

2.For predicting teleop coral output, which point values per coral are correct for L1 through L4?

3.What should a prep sheet note as the requirement for an alliance to earn the Coral ranking point (without Coopertition)?

Answer every question to submit.