How we build AI scouting reports you can actually trust
A look under the hood at how Ball Coach turns MaxPreps schedules, Hudl stats, and your notes into a scouting report — and the guardrails that keep it honest.
AI scouting reports are easy to demo and hard to trust. A flashy paragraph that invents a player's tendencies is worse than no report at all — it sends your team into a game prepared for the wrong thing.
Here's how we approach it so the output is something you can hand to your assistants without a second guess.
Start from real data, not vibes
Every report is grounded in data we can point to: your MaxPreps schedule, Hudl stat uploads, and the manual context coaches add. The model never gets to "fill in" a stat line it wasn't given.
We pass structured inputs and ask for schema-validated output, so the shape of the report is fixed before a single word is generated:
const { object } = await generateObject({
model: resolveModel(program),
schema: scoutReportSchema, // zod — every field is required and typed
prompt: buildScoutPrompt({ schedule, stats, coachNotes }),
});If the model returns something that doesn't fit the schema, the call fails loudly instead of shipping a malformed report.
Keep the model on a short leash
Two rules do most of the work:
- Cite or omit. A claim about an opponent has to trace back to a stat or a coach's note. No source, no claim.
- Prefer "unknown" over invented. When the data is thin, the report says so rather than guessing.
The failure mode we design against
The dangerous output isn't the one that's obviously wrong — it's the confident, plausible sentence that happens to be false. Most of our guardrails exist to catch exactly that.
Coaches stay in control
The report is a starting point, not the final word. You can edit any section, add context the data can't capture, and regenerate. The point is to save you the hour of assembly, not to replace your read on the game.
What's next
We're extending the same grounded approach to self-scout and the Playbook. The goal never changes: print-ready prep you'd be comfortable putting your name on.
Have a scouting workflow you want us to support? Let us know — a lot of what ships here starts as a coach's request.