HoopSights

How it works

How HoopSights turns the game you already filmed into a full box score.

No rig. No crew. No live feed. You upload recorded game video; the engine reads it frame by frame and gives you stats, shot data, and a highlight reel for both teams.
HoopSights is AI basketball analytics that works on footage you already have. You upload a recorded game, the engine analyzes it frame by frame after the fact, and you get back a full box score, shot data, and a highlight reel — for both teams and every player. This page explains exactly how that happens.
This is the long, honest version. We walk through the footage you need, every stage the engine runs, the plays it tags today versus what’s still on the roadmap, how we think about accuracy, and what happens to your players’ data. If you want the technology before you trust the stats, read on.
INPUT
one recorded game, one fixed camera
PROCESS
frame-by-frame, after the game
OUTPUT
box score + shot data + highlight reel, both teams
see how the analysis works
analyzed frame A recorded basketball possession analyzed by HoopSights: players in detection boxes with jersey numbers, a tracked shot arc, and a box-score line. 3 PT ZONE BALL #12 #7 #23 BOX SCORE · FROM RECORDED FOOTAGE #12 PTS 14 REB 06 AST 03 STL 02 3PT MAKE +3
recorded · analyzed post-game GAME-042.MP4

What happens between your upload and your results?

You record a game with one camera, upload the file, and the engine processes it after the fact. It detects players, the ball, jersey numbers, and the court; segments the floor into shot-value zones; sorts players by jersey color; recognizes a set of plays; assembles a box score for both teams; and renders your outputs. Results come back after processing — not live.
🎥
01
Record
02
Upload
03
Analyze
04
Assemble
▮▯
05
Deliver
Five steps, in order: record, upload, analyze, assemble, deliver. The recording is something most programs already do — one camera that can see the whole court. The upload is a file transfer. Everything interesting happens in the analyze and assemble steps, which run on a server, frame by frame, with no one sitting courtside tapping a clipboard.
The rest of this page opens up the analyze step, because that is the part people actually want to understand before they trust a number. We go stage by stage, in the order the engine runs them, and we tell you what each stage can and can’t do today.

Record.

One fixed camera, full court in frame. No second angle, no mounted hardware, no operator.

Upload.

Send the recorded file. Processing starts on the server — your phone is free.

Analyze.

The engine reads the footage frame by frame: detection, court zones, player sorting, play recognition.

Assemble.

Events become a box score and per-player lines for both teams, plus shot data.

Deliver.

You get a box score, shot data, a highlight reel, a coach summary, and player/parent reports.

Jump to the pipeline

Stage 1 · Detection

What does the engine actually see in each frame?

In every frame, the engine detects four things: each player, the ball, jersey numbers, and the court itself. This is the foundation everything else is built on — you can’t count a rebound or place a shot until you know where the players, the ball, and the lines are. It runs on every sampled frame, automatically.
Detection is the unglamorous part that makes the rest possible. A fine-tuned vision model scans the footage and locates people, the ball, the digits on jerseys, and the court markings. Of those, the ball is the hardest: it’s small, fast, and often hidden behind a hand or a body, so the engine reasons about it across frames rather than trusting any single one.
Detection alone is a commodity — plenty of systems can put a box around a player. What matters is everything that comes after: turning a stream of boxes into shot values, team rosters, plays, and a box score that adds up. That’s the rest of this page.

1

Place the camera at mid-court.

Not on a baseline or in a corner. Mid-court sees the whole floor and keeps players a consistent size.

2

Get it up high.

Elevated — from the stands, a tripod on a riser, or a mount. Higher beats lower; a floor-level angle is the hardest case for any engine. [VERIFY] recommended height.

3

Shoot in landscape, full court.

Rotate to landscape so both baskets and both sidelines stay in frame. If the court leaves the frame, the engine loses the play.

4

Keep it steady and reasonably sharp.

A tripod beats handheld. Shoot at [VERIFY] resolution / frame rate or better, and avoid filming straight into a bright window or light.

5

Record the whole game, then upload.

Start before tip-off, stop after the buzzer, and upload the file. The engine trims the dead time itself.

analyzed frame A recorded basketball possession analyzed by HoopSights: players in detection boxes with jersey numbers, a tracked shot arc, and a box-score line. 3 PT ZONE BALL #12 #7 #23 BOX SCORE · FROM RECORDED FOOTAGE #12 PTS 14 REB 06 AST 03 STL 02 3PT MAKE +3
recorded · analyzed post-game GAME-042.MP4
See the full recording checklist

Stage 1 · Detection

What does the engine actually see in each frame?

In every frame, the engine detects four things: each player, the ball, jersey numbers, and the court itself. This is the foundation everything else is built on — you can’t count a rebound or place a shot until you know where the players, the ball, and the lines are. It runs on every sampled frame, automatically.
Detection is the unglamorous part that makes the rest possible. A fine-tuned vision model scans the footage and locates people, the ball, the digits on jerseys, and the court markings. Of those, the ball is the hardest: it’s small, fast, and often hidden behind a hand or a body, so the engine reasons about it across frames rather than trusting any single one.
Detection alone is a commodity — plenty of systems can put a box around a player. What matters is everything that comes after: turning a stream of boxes into shot values, team rosters, plays, and a box score that adds up. That’s the rest of this page.
person
Person detection. Every player on the floor, located in each frame — the basis for tracking who did what.
ball
Ball detection. The ball, tracked across frames to survive the moments it's occluded.
number
Jersey-number detection. The digits on the back of the jersey, read where the angle and resolution allow.
court
Court detection. The lines and markings, so the engine knows the geometry of the floor.
analyzed frame A recorded basketball possession analyzed by HoopSights: players in detection boxes with jersey numbers, a tracked shot arc, and a box-score line. 3 PT ZONE BALL #12 #7 #23 BOX SCORE · FROM RECORDED FOOTAGE #12 PTS 14 REB 06 AST 03 STL 02 3PT MAKE +3
recorded · analyzed post-game GAME-042.MP4

the full feature set

analyzed frame A recorded basketball possession analyzed by HoopSights: players in detection boxes with jersey numbers, a tracked shot arc, and a box-score line. 3 PT ZONE BALL #12 #7 #23 BOX SCORE · FROM RECORDED FOOTAGE #12 PTS 14 REB 06 AST 03 STL 02 3PT MAKE +3
recorded · analyzed post-game GAME-042.MP4

Stage 2 · Court & shot value

How does it know a shot was worth two or three?

The engine segments the court into zones — distinguishing the 1-, 2-, and 3-point areas — and maps where each shot is taken. Because the floor is divided by value, a made shot from beyond the arc is scored as three and a shot inside it as two, automatically. That’s also what lets it build a shot chart.
Court detection from Stage 1 gives the engine the lines; segmentation turns those lines into meaning. Once the floor is divided into shot-value zones, every shot location carries a value without anyone tagging it. This is the difference between knowing a shot went in and knowing it was a three.
It also produces the shot chart — the map of where on the floor a player or a team is scoring from. For a coach, that’s the picture behind the points: who’s living at the rim, who’s a spot-up threat, where the offense is actually generating value.
shot charts in the product
what colleges use this for

Stage 3 · Player classification

How does it tell the two teams apart — without a roster upload?

HoopSights sorts players into two teams by jersey color, and it handles any pair of colors with no per-team retraining and no setup. You don’t tag yourself, upload a roster to make it work, or train a model for your team. The engine reads the colors on the floor and splits the game into two sides on its own.
This is the part most automated stat tools quietly hand back to you. Many ask you to tag which player is you after processing, or to upload a roster so the system can attribute stats. That’s manual work, and it breaks the moment a new team shows up. HoopSights classifies by jersey color, so a brand-new matchup with colors it has never seen works the same as any other — no retraining, no per-team configuration.
It’s the reason the engine produces stats for both teams and every player, not just one tagged user. For a club running many teams, a tournament running many games, or a coach scouting an opponent, that’s the whole point: every game works out of the box, for both sides.
Where it’s hard, we say so. Two teams in very similar colors are the genuine challenge — that’s the case where any color-based system has to work hardest, and the one place a distinct-color matchup gives you cleaner results.
no retrain
No per-team retraining. Any colors, any new team, first game — it works without a model being trained for you.
no tagging
No 'tag yourself' step. You don't identify players by hand after processing for the stats to attribute.
both sides
Both teams, every player. Because sides come from color, the box score covers everyone on the floor.
why clubs pick this
scouting an opponent
analyzed frame A recorded basketball possession analyzed by HoopSights: players in detection boxes with jersey numbers, a tracked shot arc, and a box-score line. 3 PT ZONE BALL #12 #7 #23 BOX SCORE · FROM RECORDED FOOTAGE #12 PTS 14 REB 06 AST 03 STL 02 3PT MAKE +3
recorded · analyzed post-game GAME-042.MP4

Stage 4 · Action recognition

Which plays does it recognize today?

Today, HoopSights recognizes a defined set of actions: rebound, assist, shot, block, made and missed goal, and steal. That set is what’s shipped and live now. Other actions — turnovers, fouls, screens, deflections and more — are on the roadmap and not claimed as live. We tell you what it tags today, not what it might tag later.
TAGGED TODAY
SHIPPED
Rebound
Assist
Shot
Block
Made goal
Missed goal
Steal
Tagged today (shipped). Rebound, assist, shot, block, made goal, missed goal, steal.
ON THE ROADMAP
NOT LIVE
Turnovers
Fouls
Screens
Deflections
More
On the roadmap (not live). Additional actions such as turnovers, fouls, screens, and deflections — coming, not claimed now. [VERIFY] before any is moved to shipped.
Action recognition is where a stream of detections becomes basketball. The engine watches sequences of frames and classifies the plays in the shipped set, then ties each to the players involved and the moment it happened. A made or missed goal combines with the shot-value zone from Stage 2, so points land in the box score with the right value.
We draw a hard line between shipped and roadmap on purpose. Plenty of marketing implies a tool tags everything; the honest answer is that every system has a current set and a wish list. Here’s ours, stated plainly — and if a play type isn’t on the shipped list, the engine doesn’t claim it.
the full capability list
what’s coming
Box Score · Both Teams
FINAL • 41–38
Team A
41
PlayerPTSREBASTBLKSTLFG
#111453126–11
#7926014–9
#51181205–8
#3732013–6
TEAM4118123418–34
Team B
38
PlayerPTSREBASTBLKSTLFG
#241664107–13
#9842023–7
#12625112–6
#33871304–9
TEAM3819125316–35
One flagged cell foreshadows the accuracy section — aggregates stay steadier than any single play.

Stage 5 · Stat assembly

How does it build a box score for every player on both teams?

The recognized plays become events with timestamps and the players involved. The engine aggregates those events into per-player stat lines and team totals — for both teams — and cross-checks them so the numbers are internally consistent. The result is a full box score, not a single tagged player’s stats.
Each event — a rebound by this player, a made three from that zone — gets attributed and rolled up. Because team sides come from jersey color and players from detection and number reading, the box score fills out for everyone on the floor, both benches, automatically.
Aggregate numbers tend to be steadier than any single possession. If one rebound is misattributed, the team’s totals can still be right, and shooting percentages over a whole game are more reliable than a frame-by-frame audit of one play. That’s the right place to start trusting any automated stat line — and the next section is honest about where it’s harder.
box scores and reports
player and parent reports

Stage 6 · Outputs

What do you actually get back?

Five things from one upload: a full box score (per player and team), shot data and a shot chart, an automatically assembled highlight reel, a coach summary, and per-player reports for players and parents. The format and export options are listed per output — confirm the exact formats before relying on a specific one.
The outputs are built to be used, not just admired. A box score you can coach and report from, shot data that shows where value is coming from, a reel families actually want to share, a summary that saves a coach an evening of film, and a player report a recruit can attach to an email.
Where an output exports — a CSV, an image, a video file, a link — is listed on each one. We keep those specifics honest rather than promising a format we haven’t shipped.

output 01

Box score.

Per-player and team totals for both sides. Image and/or CSV — [VERIFY] exact formats.

output 02

Shot data & shot chart.

Where shots came from and which fell, mapped to the value zones.

output 03

Highlight reel.

Clips selected from the recognized events and assembled automatically — no editor.

output 04

Coach summary.

The game's stat story in a form a coach can read fast and act on.

output 05

Player / parent reports.

A per-player line and clips — the recruiting and development view.

outputs for players →
outputs for tournaments →

The honest table

What's shipped today, and what's still on the roadmap?

Shipped today: person, ball, jersey-number, and court detection; 1/2/3-point zone segmentation; jersey-color player classification with no per-team retraining; the action set rebound, assist, shot, block, made/missed goal, and steal; and full box scores for both teams. More actions and advanced metrics are roadmap — real, but not live yet.
This table is the whole truth about capability in one place. If something is in the shipped column, it works now. If it’s in the roadmap column, it’s coming and we won’t pretend otherwise. We’d rather lose a feature-checklist comparison than tell you a number is real before it is.
Capability
Shipped Today
Roadmap
Detection
Person, ball, jersey number, court
Higher-resolution edge cases
Court & Shot Value
1 / 2 / 3-point zone segmentation
Deeper spatial metrics
Player Sorting
Jersey-color, no per-team retraining, no tagging
Per-player identity refinements
Actions
Rebound, assist, shot, block, made/missed goal, steal
Turnovers, fouls, screens, deflections, more
Box Score
Both teams, every player
Advanced/derived metrics
Live In-Game
Not offered — post-game only
Tournament live scores: scoped service, [VERIFY]
the roadmap and updates

The honest version

How accurate is it - and when does it fail?

Honestly: accuracy depends on what you’re measuring and how clean the footage is. There are four kinds that matter — did an event happen, was it credited to the right player, was it timed right, and do the totals add up. HoopSights publishes a figure for each only once it’s measured against a held-out, hand-labeled test set — never a guess.

Event detection

Did a shot, rebound, block, or steal actually happen? Contested, occluded plays are harder. Figure: [VERIFY].

Measured accuracy [VERIFY]

Attribution

Was the event credited to the right player? Depends on number reading and tracking holding through traffic. Figure: [VERIFY].

Measured accuracy [VERIFY]

Timing

Is the event's timestamp aligned to when it happened? Needed for clean clips and possessions. Figure: [VERIFY].

Measured accuracy [VERIFY]

Aggregate vs play-by-play

Are the totals right even if a single event slipped? Aggregates are usually steadier than any one possession.

Measured accuracy [VERIFY]

Any system that gives you one accuracy number is hiding something. Detecting that a shot happened is a different problem from crediting it to the right player, which is different again from whether the final box-score total is right. We’d rather explain the four than quote a single flattering figure.
So here’s our stance: until a number is measured against a hand-labeled test set, we describe what the engine does well and where it struggles — plainly — and we keep the figure as a verified value, not a marketing claim. That honesty is deliberate. An automated engine is not a perfect human scorekeeper, and pretending otherwise is how trust gets lost.

Strong

Clear, full-court footage, distinct jersey colors, decent lighting — the conditions most games are already filmed in. Aggregate box-score numbers you can coach and report from.

Hard

Heavy occlusion in a crowded paint, poor gym lighting, low resolution or an extreme angle, and two teams in near-identical colors. Better footage is the fix you control.

our accuracy methodology →

Privacy & data

What happens to your footage and your players' data?

Footage involving minors is treated as private by default. A player’s profile isn’t public unless the right consent is in place, the program controls who sees what, footage and data aren’t sold, and a player’s data can be removed on request. For school, club, and youth basketball, this matters more than any stat.
Most of the players in this footage are children, so privacy is the starting assumption, not an afterthought. The default is private: nothing about a minor is published to the open web unless consent allows it, and the organization holds the controls over access and retention.
We keep this honest too. Where a specific regime or retention term applies, it’s stated and verified rather than implied — and the references below point to the actual rules, not our paraphrase of them.
Role View Stats View Clips Share Remove
Player
Parent / guardian
Coach
Program admin
Public

Private by default.

Minors' profiles aren't public without the right consent; the program controls access.

You control the data.

Who can see what, and the ability to have a player's data removed on request.

Not sold.

Footage and analytics aren't sold or published to the open web by default.

Stated retention.

Footage and data are retained and deleted on stated terms — [VERIFY] the exact windows.

privacy & data ->
what schools need to know ->

Turnaround & where to start

How long does it take, and where should you start?

Results come back after processing, not live — you upload, the engine works, and your outputs arrive when it’s done. The exact turnaround window is stated as a confirmed range rather than a promise. Where you start depends on who you are: a coach, a player or parent, or a program or tournament.
Turnaround is a function of game length and queue, and we publish a real range rather than a hero number. If you need predictable timing for an event, that’s a conversation we’ll have honestly up front. [VERIFY] the exact turnaround window.
From here, the fastest way to understand the value is your own footage. Upload one game for a free sample, or book a short walkthrough and we’ll run you through a real output.

01 / coaches

Coaches

Box scores, shot charts, opponent scouting, and a summary that saves a film night.

for coaches →

02 / players & parents

Players & parents

An auto-updating profile, stats, and a recruiting reel from footage you already have.

for players & parents ->

03 / programs & tournaments

Programs & tournaments

Many teams or many games, both-team coverage, and event-ready content.

programs ->

tournaments ->

The honest FAQ

The honest FAQ

FAQ Section

It uses computer vision to read recorded game video frame by frame. The engine detects players, the ball, jersey numbers, and the court; segments the floor into shot-value zones; sorts players by jersey color; recognizes a set of plays; and assembles a box score and shot data for both teams. HoopSights does this after the game, not live.

No. HoopSights is post-game analytics. You record the game, upload the file, and the engine processes it afterward. It is not a live-streaming or real-time in-game stats product.

No. One fixed camera that can see the whole court is enough. The elevated mid-court angle most programs already film from a tripod or the stands works perfectly.

No. HoopSights automatically sorts players into two teams by jersey color with no manual tagging or setup required.

Detection of players, ball, jersey numbers, court recognition, shot zones, assists, rebounds, steals, blocks, made and missed shots, plus a complete box score for both teams.

Both teams and every player are analyzed automatically without manually tagging individual athletes.

Accuracy depends on video quality, camera angle, lighting, and player visibility. Higher-quality footage generally produces the most accurate results.

Scroll to Top