Player database

0 players

ID Player Country Position Team Height Roles Scout-only Last observed

Player submission

Photograph a sheet, paste your notes, or fill it in by hand

Add a player

Quick intake

Method

Up to 4 pages.

Your photo or notes are sent to Wingspan’s assistant to read, and are not stored. Nothing is saved until you press Save.

Player

Measurements

Projection Scout-only

Low / mid / high major

Position and roles

Position

Roles

Report

0 / 320

Follow-up Scout-only

Still required

Who flagged this player

Private intel

Scout-only. Never shown to players or institutions.

Media and links

Photo upload is not connected yet — photos are not saved.

One per line.

No photo

No player selected. Add a player, or pick one from the roster.

Record Scout view History Film Questionnaire Scouting work
No photo on file

No player selected. Add a player, or pick one from the roster.

Basketball context

Team

Not recorded

Competition

Not recorded

Competition level

Not recorded

Position family

Not recorded

Physical & athletic

No measurements recorded.

Links

Data rights

No data-rights record on file.

Observation history

DateType What it addedEvidence

No observations recorded.

Every figure on this page will trace back to a row here — a date, a place and a named observer. A rating that cannot be traced that way is the black box the product is not allowed to be.

Scout report

No report written.

Film library

No film yet.

Full games are marked in gold because they are what moves a judgement. Wingspan stores the link and the context — team, opponent, competition, date, jersey — and makes no automatic assessment of the footage.

Wingspan

Start something

Add a playerNew submission form

Prompts

Events

No events yet.

NameSeasonDates CountryTeamsSessions

No events yet. Add one above.

Event

Teams

No teams yet.

Games

No games yet.

Note sessions

No note sessions yet.

Rosters

Add a team to start a roster.

Statistics

Add a team to import statistics.

Combines

No combines yet.

NameDateSite ModeEntriesSign-off

No combines yet. Add one above.

Reference bands

A scout's judgment call, stored with a name and a date — used while no cohort of 25 exists yet for a position family. See COMBINE.md §1.4.

FamilySexAgeMetric LowHighNoteSet by

No reference bands set yet.

Combine

Entries

PlayerHeightWingspan Max verticalFlags

No entries yet.

Entry

Add a player to begin.

Scouting Report

Evaluation

Raw notes

As written. Never changed by anything below.

Loading…

Strengths & weaknesses

Statistics

Loading…

Deep evaluation

Export

 

Prompts

The prompts behind every generated report: your six, plus the player report's, which Wingspan wrote.

Loading…

 

 

By player

Nothing parsed yet.

How it works

Your scouting process, and why Wingspan is built the way it is.

In Demo mode, the AI steps below use prepared stand-in responses. In the live app, they send your prompts to the model.

One tool instead of many Your process, step by step Decisions and why

One tool instead of many

Right now a report comes out of four separate places: a Jotform for player data, a notes app for live and video notes, AI chat threads with your own prompts for steps 3A through 8, and a manual PDF or social export at the end. Wingspan holds all of it in one place you own: the events and rosters, your notes, your prompts, every AI draft, and the final report.

Your process, step by step

Step 1

Player data collection

Today

A Jotform, filled by hand, plus FIBA rosters and box scores, federation and club sites, and whatever public profiles turn up.

In Wingspan

Add a competition, add its teams, then add roster rows by jersey number as you spot players — a name can wait. “New event” on Home or Events walks through the same three things — event, teams, first notes — one screen at a time, phone-first, straight into Notes when you're done. When you're ready for a profile, “Create player from #NN” on that roster entry's Evaluation screen opens Player submission prefilled with the event, team and listed position already on the roster row, and saving links the two automatically — no separate step, and nothing to re-type.

Step 2

Live / video scouting

Today

A notes app on your phone, one line per observation: “44: played primary ball handler.”

In Wingspan

One text box, one line per number, your exact format. It autosaves as you type and keeps an unsent copy on the phone if the gym's connection drops. Hands full courtside? Tap the mic and say “44, played primary ball handler” — it writes the line for you, in your format, and keeps listening until you tap it off. Game already on and nothing set up? “New capture” on Home starts writing straight away, with no event, team or roster, and you match it to an event later.

Step 3A

Strengths and weaknesses generation

Today

Paste the whole raw-notes dump into an AI chat with your “Elite Scouting Report Reorganization Prompt.”

In Wingspan

The “Organize all notes” button on a note session runs your prompt once for every number in that session, instead of one paste per player. Each result lands as a draft on that player's Evaluation screen, beside the raw notes, not in place of them.

Step 3B

Preserve source layers

Today

Nothing dedicated. The layers only stay apart because they live in different apps: the notes app, the AI chat, the exported document.

In Wingspan

A roster row's Evaluation screen keeps the raw notes, the AI-organized report and the final write-up as three separate blocks. Editing or regenerating one never touches the others, and once you edit a draft, “Show AI original” brings back exactly what the model wrote.

Step 4

Team statistical analysis

Today

Paste a box score or tournament sheet into an AI chat with your team-analysis prompt.

In Wingspan

Paste the same sheet into a stat import on the event screen. The team sheet totals the numbers, then Generate on Team analysis returns the top 5–6 players by combined production and flags the intriguing ones — strong per-40 production in limited minutes, an unusual rebound, steal, block or assist rate, a hot small sample, or high assists with high turnovers.

Step 5

Individual impact analysis

Today

A follow-up question in the same AI chat project: “Comment on [player]'s statistical impact on the team.”

In Wingspan

Your document has no standalone prompt for this step, just an example request and an expected-output list, so Wingspan wrote one from those, and it's on Prompts for you to rewrite. Generate, on that player's Evaluation screen, runs it against their numbers and the team's and comes back as an editable draft.

Step 6

Statistics formatting

Today

Paste a stat block into an AI chat with your “rewrite into exactly one line” prompt.

In Wingspan

The one-line stat line itself is computed from the stats you import, not guessed by the model, so it can never disagree with the real numbers. The model, using your prompt, only writes the two-sentence commentary and the three highlights.

Step 7

Tournament consistency analysis

Today

The same AI chat project as step 6, asked about consistency across the games.

In Wingspan

Your document has no standalone prompt for this step either, just an example request and example output, so Wingspan wrote one from those, and it's on Prompts for you to rewrite. With game-by-game stats imported, it runs from the player's Evaluation screen and reads the game-to-game spread, not just the average, the way you ask for it today.

Step 8

Deep evaluation generation

Today

Your DraftExpress-style prompt, pasted into AI chat along with the notes, the strengths and weaknesses report, and every stat output above.

In Wingspan

Generate, on the Evaluation screen, runs your prompt against all of it automatically: nothing to copy and paste. A live word count flags anything over your 350, and it stays a draft until you hit Finalize.

Beyond your process

Player report (all events)

This isn't one of your eight steps. Wingspan added it: on a player's record, one report built from every event he has been scouted at, with his trajectory from event to event, what more than one event agrees on, and what is still open. It has the same Generate, Edit, Finalize, print and email as an event report. Its prompt was written by Wingspan, not you, and it's on Prompts for you to rewrite or replace.

Decisions and why

A roster entry — jersey number, team, competition — is the subject of scouting work, not a player.

Why

You scout by number before you have a name. Linking the entry to a player later carries every note and document with it; nothing gets re-entered, and no number you wrote about once becomes a stray player record.

Your process document, step 1

A name for a roster entry not yet linked to a player is stored separately from the entry itself, not on the shared record.

Why

A name attached to a number nobody has linked yet is identifying data about a minor. It has no business sitting on the table every other query reads.

Wingspan build notes

Raw notes, the AI-organized report and the final evaluation stay three separate, always-visible layers — your step 3B.

Why

Nothing generated is allowed to overwrite what you wrote. “Show AI original” is a fact about the stored data, not a promise the screen happens to make.

Your process document, step 3B

Averages, percentages and the one-line stat line are computed in SQL from the numbers you import; the model is told not to calculate any of them.

Why

A generated report can't show a stat that disagrees with your real numbers, because the model never produces one.

Your process document, step 6

No player name ever reaches the model. Generation refers to players by jersey number, or by the literal token [PLAYER]; a name is substituted back in only after the response comes back.

Why

No name, and no database id of any kind, reaches an outside API — regardless of what you've typed into your own notes.

Wingspan build notes

Your prompts ship with your wording; chat-only lines (paste here, wait for me) are removed because the app supplies the inputs, and they stay editable. The guardrail rules are appended separately at generation time and can't be edited out.

Why

Keeps your exact wording under your control, while guaranteeing the instructions that keep names, invented numbers and recomputed averages out of a report can't be removed by accident.

Wingspan build notes

A notes session belongs to one event and one team, with an optional opponent — and can start with neither. A quick capture is matched to an event afterwards, where you pick which numbers (or single lines) were the opponent's.

Why

A bare jersey number only means something once there's a team and an event behind it, but the notes can't wait for setup. Matching later keeps every line exactly as you wrote it, lets you note both teams in one stream, and can be redone if you picked the wrong event or team.

Your process document, step 2

Dictation uses the browser's built-in speech recognition and writes plain text into your notes; nothing is stored as audio.

Why

Courtside, your hands are busy. Depending on your browser, speech may be processed by the browser vendor's own speech service (Google in Chrome, Apple in Safari) to turn it into text — Wingspan never sees or stores the audio itself. If that's not something you want on, the keyboard's own microphone dictates into the same text box with no Wingspan code involved at all.

Wingspan build notes

An AI draft never becomes the final evaluation by itself — Finalize is a separate, explicit action.

Why

You stay in control of what gets published, not the model.

Your process document, introduction

Event reports and a player report. An event report is one player at one event, built from that event's notes and stats — your eight steps, unchanged. The player report sits on the player's record and is built from every event: each event's finalized evaluation, stat line and strengths and weaknesses, plus his measurements over time.

Why

A jersey number at one tournament is the unit of scouting, but the question a club asks is about the player across all of them. Keeping the two apart means an event report never changes because of another event, and the player report says when a newer event report has been finalized since it was written. Same rules as every other report: no name reaches the model, and nothing is final until you finalize it.

Wingspan build notes

Demo mode keeps everything in this browser. Nothing is read from or written to the real backend while it's on.

Why

Lets you, or anyone you're showing this to, walk the whole workflow on demo data without touching your real data.

Wingspan build notes

WS360 and Combines are hidden, not deleted.

Why

Every route, data shape and backend call for both stays wired up. Switching one flag in FEATURES and regenerating the app brings either back.

Wingspan build notes

The solo-scout workflow comes first. The role switch is hidden, because a real scout has exactly one role, and the Institution surface is out of the prototype for now.

Why

The scout surface is the only one that creates data. Building multi-user or admin chrome before that is wasted effort.

Wingspan build notes

Open questions

  • Should the projection grade (LM…HM+) show on the evaluation? It's already captured from the stat import and is deliberately not shown here yet.
  • Are your tournament sheets usually totals or averages? Averages get stored as estimated totals and flagged as such.
  • Which outputs should be shareable outside Wingspan, and with whom — the consent question for minors, not a formatting one.
No photo

Your profile

Your profile is empty.

Start the role questionnaire
My profile Questionnaire History

Your target

Not recorded

Your privacy

Profile visibility

Not recorded

Photograph

Not recorded

Benchmark use

Not recorded

Wingspan does not rank you against other players and does not promise a scholarship or a contract. It shows where you stand and what a scout would still need to see.

One dotis noise

Five dots — three small above, two large below. An abstracted arm span, and a cluster of observations. The same dot builds every photograph on the site. Enough dots resolve into a player, which is what a scouting platform is for. The dot is the primitive; everything else follows.

Colour

Four. No more.

Ink

#0D0D0D · ground

Bone

#FAFAF7 · text, light ground

Gold

#FFCC00 · emphasis

Flare

#FF2B00 · live / gap only

Gold only ever sits on ink. Gold on ink is 11.7:1. Gold on bone is 1.6:1 and fails every threshold. On a light surface gold is a fill behind ink text, never text itself.

Flare appears exactly once on the marketing site — a 2px underline on the active nav item. That restraint is the point. Here it means live, in progress, or a performance gap, and nothing else.

Typography

line-height 0.68 is the signature

Extendyourreach

Compressed, 700, uppercase, line-height smaller than the font size so lines interlock. Broken by word, one word per line, sized to fill the measure. Never below 64px, never centred.

Display L

Section heroes

Display M

Page titles

Label — compressed caps

Column heads, stat labels. Wraps to two lines rather than truncating.

Shown in Archivo Narrow. Resolves to Tablet Gothic Compressed once self-hosting is licensed — single swap point in tokens.css.

Confidence track

Spec §4.8

Early

Developing

Stronger

The product's only formal rubric is a three-tier confidence label. The mark is five dots. Rendering confidence against a five-dot track makes the logo the reward state — a fully evidenced player is the mark. No percentage rings, no stars, no completion bars needed anywhere.

Signal types

Four types, four colours

Strong signal — evidence supports a positive conclusionGold, filled

Early signal — pattern visible, more evidence neededBone at 62%

Performance gap — below the target comparison rangeFlare

Evidence gap — not enough reliable data to concludeHollow. No fill, no colour.

An evidence gap renders as absence, not as another colour. The spec's fourth principle is honest confidence and its fifth is no black-box claims — an empty ring says “we don't know” in a way no coloured badge can. Missing data should look missing.

Data display

Stat cells — type does the work

Rebounds

7.6per game

Blocks

1.4per game

Turnovers

0.9per game

Gold marks the single most important number. Three golds would mean nothing.

Competition level — 1 is top

Level 3Development pro / high university

Position is marked, never filled up to — filling would imply 5 is best when 1 is. Numeral always shown.

Provenance

Categories, not rankings

Height

201 cm

Official combine12 Jul 2026

Wingspan

212 cm

Player entered03 Sep 2026

Standing reach

Not recorded

Needed for comparison

Source labels are provenance, not quality. Set small, muted, always adjacent to the value they qualify — never a coloured pill, because pills imply ranking and these are categories. “Verified” is the product's core claim, so it has to be visible on every fact.

WS360 badge

The mark is the chart
81WS360

Stronger — all domains clear

58WS360

Developing — athletic not measured

41WS360

Provisional — never gold

The badge and the chart are the same object. The arc is literally the 360 — the composite swept as degrees. Five dots sit on the ring, one per domain, echoing the parent mark's five: gold where that domain clears the target band, dim where it does not, hollow where it was never measured. A provisional rating puts no gold anywhere, because gold means the evidence is there.

Controls

Squared — 2px radius. Flat: no gradients, no glows, no drop shadows. Elevation is the ink ladder plus 1px borders. The dot is the only circle in the system.

Wingspan · design system v0.1 · framework-agnostic CSS, portable to any stack