Rebels SC
Rebels SC — GU15 ECNL RL
2026-27 Season · Team Dashboard · Updated June 5, 2026 · @gu15rebelsecnlrl · @rebelssc
League play: TBD · Preseason: 1W-2L
All games (3 GP)
1W · 2L · 0D
2026 Rebels Showcase
Goals scored / conceded
3 / 6
GD: −3
Shot attempts for / against
15 / 27
8 of 10 vs Beach FC from inside the box
Next games
See Calendar tab
Staff: Head Coach Gabe · Assistant Coach Kooi · Team Manager Jenn
Where the team is right now
This is a brand-new roster — the 2026-27 group played its first three games together at the 2026 Rebels Showcase (May 30-31, GU15 Elite bracket). The team went 1-2 against a deliberately tough draw: both losses came against Girls Academy (GA) league opposition, including SDSC Surf, who went on to win the entire bracket. Every result below is a baseline, not a verdict — this group had zero games of chemistry coming in.
What's working. The team converted its biggest moments (penalty vs Surf, corner-sequence equalizer and a late winner vs Beach FC). Possession improved after halftime in all three games. Against Beach FC the attack generated 10 attempts with 8 from inside the box — when this team gets into the final third, it creates real chances.
What we're building. Progressing the ball against high-pressure GA-level teams — possession too often ended in our own half in those games. Defending corners and the scrambles after them: set-piece sequences factored into goals conceded in all three games. Cutting down fouls that hand opponents free kicks and corners.
Schedule context. Two GA-league opponents (a level above RL) on day one, including back-to-back games the same day. The Beach FC win came on day two against NPL-level opposition. ECNL RL conference schedule has not been released yet — league games will appear here as they're played.
Set pieces, both directions. Two of our three goals came from set-piece situations (penalty, corner sequence), and our most dangerous spells started from corners and free kicks. The flip side: set-piece defending is the single clearest training priority the data shows.
How this dashboard works
Games are recorded with a Veo Cam 3 and analyzed with Veo's AI match analysis. Numbers shown here (shots, possession, corners) come from auto-detected events — they're reliable for patterns but can miss individual events, so treat them as close estimates. A full written report for each game is under Match reports. League standings will be added once ECNL RL conference play begins.
Goals — for and against, by game
Shot attempts — for and against, by game
The attempts chart tells the season-so-far story in one image: against GA-level pressure (games 1-2) the team was held to 5 total attempts across two games; against NPL-level opposition (game 3) it produced 10 in one game. Closing that gap against stronger teams is the core development goal heading into league play.
Passing distribution by third — season
Each bar = one game's completed passes split by third of the field. The green slice — passing into the attacking third — is what we're working to grow: 7% → 11% → 15% across the three showcase games. (Some of that rise reflects a step down in opponent level — two GA teams, then an NPL team — so league play is the real test.)
Passing map — where we move the ball
Our completed passes by Veo pitch zone, attacking upward. Same color scale across all four so games compare directly. Zone "involvement" (Veo doesn't reliably state pass origin vs destination); at ~90-115 passes/game over 18 zones this is a tendency picture — the season average is the most reliable read.
fewer passesmore(same scale all four, 0–49)
vs Surf
L 1-2 · 85% central
▲ attacking00016133863491230000
vs City SC
L 0-3 · 75% central
▲ attacking10026122654323230101
vs Beach FC
W 2-1 · 78% central
▲ attacking14038033362315063000
Season average
3 games · per-game avg
▲ attacking0.71.30.02.06.70.72.732.35.73.037.33.01.34.01.00.30.00.3
Unmistakable across all three games: passing collapses into the central column (85% / 75% / 78%), with two midfield zones (8 & 11) holding ~65-77% of every pass, while both flanks and the attacking third stay nearly empty. The development priority the data keeps pointing to: use the width, switch the field, and progress into wide forward areas.
Shot map — shots & goals by location
Every detected shot and goal at its Veo pitch coordinate, both teams, normalized for the halftime end-switch so we always attack right (blue) and opponents attack left (red). Detected events only — Veo misses some shots, and events without coordinates aren't plotted. All 3 showcase games. Each game's coordinates were normalized to its own camera frame (Surf's was mirrored vs the others), so we always attack right (blue), opponents left (red).
opponents attack ◀▶ we attack
our shotour goalshot againstgoal against
All three games: for 12 shots / 3 goals, against 21 shots / 6 goals. The shape is stark — opponents' shots and 5 of our 6 conceded goals came from inside our box (red cluster, much of it off set pieces); our own attempts crowd the right box, especially close-range central. Develop: defend the box & set pieces; keep generating those central chances and finish more. (City's 40:28 corner goal had no coordinate, so it isn't plotted.)
Results so far
Wins
1
2-1 comeback vs Beach FC
Losses
2
Both vs GA-league opposition, incl. the eventual champion
Draws
0
 
Click any game to expand the full post-game analysis. Reports are generated from Veo match video and written for the whole team — players, parents, and staff.
May 31 vs Beach FC (Nacho Lopez) U15 NPL W 2–1 Rebels Showcase

📷 Game Photos (Google Photos) · Game Photos (Memento)

▶ Watch full game on Veo

The story

A comeback win the team controlled. Rebels out-attempted Beach FC 10 to 3, with 8 of those 10 chances coming from inside the box. Beach scored against the run of play from a corner just before halftime — but the response was immediate and sustained: 7 attempts after the break, an equalizer off our own corner sequence, and an open-play winner with two minutes left. Beach FC didn't register a single attempt in the second half.

Goals & key moments
2' & 6' — early Rebels chances from close range set the tone
30' — Beach FC goal (0-1) off a corner sequence, right before half
34'-37' — strong restart: two quick Rebels chances
39' — REBELS GOAL (1-1) — corner → shot → finish, mirror image of theirs
48'-58' — one-way traffic: four more Rebels attempts + a free-kick shot
59' — REBELS GOAL (2-1) — open play, the winner
By the numbers
RebelsBeach FC
Shot attempts103
Goals21
Attempts from inside the box8
2nd-half attempts70
1st-half possession54.5%45.5%
Passing by third — our completed passes
9%
76%
15%
Defensive · Middle · Attacking third — the one we grow
Passing map
completed passes by zone
▲ attacking14038033362315063000
Shot map
● shot ★ goal · blue=us red=opp
opp ◀▶ us
What stood outBall progression worked all game — attacks flowed through the left and central lanes into the final third, and corners were a genuine weapon. The response to going behind (2 goals after trailing) showed real character from a three-game-old roster.
What we're working onFirst-half finishing (3 good chances, 0 goals), defending corner sequences (their only goal), and discipline — 10 fouls gave a restart-dependent team exactly the free kicks and corners they wanted.
May 30 vs City SC San Diego G2012 GA Blue L 0–3 Rebels Showcase

📷 Game Photos (Google Photos) · Game Photos (Memento)

▶ Watch full game on Veo

The story

The toughest scoreline of the weekend, with context that matters: this was the second game of the day, against a GA-league team that won its group without conceding a goal. City SC scored early, then used corners and sustained pressure around our box to add two more. The encouraging part: Rebels won the possession battle after halftime (50.5%) and created two chances from inside the box — the game's pattern improved even as the score didn't.

Goals & key moments
5' — City SC goal (0-1), open play, early
17' & 22' — Rebels chances, our best of the first half
35'-40' — heavy City SC pressure spell: 5 shots, 4 corners
40' — City SC goal (0-2) at the end of the corner-pressure sequence
50' — City SC penalty — saved/missed, a big moment
51' & 56' — Rebels' two best chances, both from inside the box
58' — City SC goal (0-3), open play
By the numbers
RebelsCity SC
Shot attempts413
Goals03
Corners15
2nd-half possession50.5%49.5%
Possession in attacking third14.6%
Passing by third — our completed passes
8%
81%
11%
Defensive · Middle · Attacking third — the one we grow
Passing map
completed passes by zone
▲ attacking10026122654323230101
Shot map
● shot ★ goal · blue=us red=opp
opp ◀▶ us
What stood outThe halftime adjustment was real — possession jumped from 40% to 50.5% and both of our most dangerous chances came after the break. The team also strung together clean 6- and 7-pass sequences, an early sign of connection in a new group.
What we're working onGetting out of our own half against a strong press — too much of our possession lived in the defensive third. And defending repeated corner pressure: their second goal came at the end of a four-corner spell.
May 30 vs SDSC Surf GU15 GA L 1–2 Rebels Showcase

📷 Game Photos (Google Photos) · Game Photos (Memento)

▶ Watch full game on Veo

The story

The new roster's first-ever game together, against the team that went on to win the entire showcase. Surf controlled territory (55.3% possession) and scored early, adding a second just after the hour-mark of pressure. Rebels answered within four minutes from the penalty spot and kept the deficit at one the rest of the way. A telling stat for the weekend: our penalty was the only goal Surf conceded in four games, including the final.

Goals & key moments
4' — Surf goal (0-1), early, from inside the box
14'-24' — Surf pressure spell: 5 shots, 2 corners
30' — Rebels corner, a positive start to the second half
36' — Surf goal (0-2), inside the box
40' — REBELS GOAL (1-2) — penalty, converted under pressure
44'-59' — Surf pushed for a third; the defense held the line
By the numbers
RebelsSurf
Shot attempts111
Goals12
Corners24
Possession44.7%55.3%
2nd-half possession48.6%51.4%
Passing by third — our completed passes
4%
88%
7%
Defensive · Middle · Attacking third — the one we grow
Passing map
completed passes by zone
▲ attacking00016133863491230000
Shot map
● shot ★ goal · blue=us red=opp
opp ◀▶ us
What stood outConverting the one big moment — a penalty against the bracket's best team, after going two down, in the roster's first game. Possession improved from 41.5% to 48.6% across the halves, and the team earned six second-half free kicks plus two corners by playing forward.
What we're working onCreating chances against elite pressure — one attempt all game is the headline number to grow. Surf's corner-and-second-ball pressure also produced shot after shot; defending those sequences cleanly is a clear priority.
2026 Rebels Showcase · GU15 Elite · May 30-31 · SoCal Sports Complex
A standalone preseason tournament — these games do not count toward ECNL RL league standings. The bracket was deliberately strong: two Girls Academy (GA) league teams, one NPL team, and us.
Game film (Veo): vs Surf · vs City SC · vs Beach FC
📷 Photos: Game Photos (Google Photos) · Game Photos (Memento) — add your own shots, too.
Final group standings
#TeamGPWDLGFGAGD
1City SC San Diego G2012 GA Blue3210100+10
2SDSC Surf GU15 GA321071+6
3Rebels SC ECNL RL GU15 ★310236−3
4BFC Nacho Lopez U15 NPL3003114−13

Final: SDSC Surf 3-1 City SC San Diego. The scheduled May 31 City-Surf group game was cancelled by mutual agreement (both teams had clinched) — the final served as that matchup. Source: MatchPro tournament site.

What the weekend told us
The team belongs on the field with GA-level opposition. One-goal game with the eventual champion, and the only goal they conceded all weekend. The 0-3 vs City SC came in a second-game-of-the-day spot against the group winner.
The development map is unusually clear for June. Three games of video agree: (1) progressing the ball against a strong press, (2) defending corners and second balls, (3) discipline on fouls. Those three items are the preseason training plan, straight from the data.
Upcoming games
Practices

Mondays, Wednesdays & Thursdays · 6:15–7:45 PM
Southwestern College T-1 (large turf) · 900 Otay Lakes Rd, Chula Vista

Occasional cancellations and time changes happen — the subscribed calendar below is always the source of truth.

Phone calendar subscription

A subscribe-on-your-phone link will be shared once sign-in access is set up. The game cards above are always current in the meantime.

What the team developer is working on for the team — open items, feature requests, and what each one is for. Suggestions welcome.
In progress
Dashboard online with Google sign-inIn progress

Goal: reach this dashboard from any device by signing in with the same Google account you already use for team photos — no more passing files around. Access will be limited to team families and staff.

Planned
Post-game text message summaryPlanned

Goal: every family gets a short text recap right after each game — score, headline, and a key stat or two — without waiting for the full match report here.

Photo galleries in match reportsPlanned

Goal: each match report shows photos from that game, with a browsable gallery and a filter to find your player by jersey number.

Photos matched to game momentsPlanned

Goal: photos appear next to the moment they captured in the match timeline — the goal celebration photo sits beside the goal it celebrates, eventually with the video clip alongside.

Tap a goal to jump to it in the filmPlanned

Goal: make each goal in a match recap a link that jumps straight to that moment in the Veo video. A first version was tried and pulled back because the timing didn't line up reliably — revisiting once we can pull exact moment markers from Veo.

Veo accounts for every playerPlanned

Goal: unlock individual player features in our game video — per-player stats, tagging players in clips and events, and personal highlight reels. This also lets future match reports recognize individual contributions, which the video analysis currently can't do.

Player highlight clipsPlanned

Goal: each player gets a personal highlight reel pulled automatically from game film.

Player statisticsPlanned

Goal: per-player season stats — minutes, goals, assists — tracked by jersey number.

Competition analysisPlanned

Goal: scouting on upcoming opponents plus league standings and the playoff race.

Live-stream linksPlanned

Goal: when a game is streamed live, the link shows up here so you can watch from anywhere.

Recently completed

Team dashboard launched — overview, charts, full match reports, and showcase results (June 4)
Charts rendering fix (June 4)
Calendar tab with upcoming games + live calendar subscription link (June 4)

About / Nerdy Stuff
← back to dashboard
For the curious (and the IT parents). Here's what this dashboard is, where the numbers come from, and how it's built — in plain English first, then the technical details.
In plain English
What this is

A one-stop page for our GU15 team: schedule, game recaps with stats, film and photo links, and where the team is trending. It's a passion project maintained by a team parent, not an official club system.

Where the info comes from

The schedule comes live from PlayMetrics. Game film and stats come from our Veo camera and its AI analysis. Results come from the tournament/league sites. Photos are the shared team albums. Everything is reviewed by a human before it's posted.

How it stays current

After each game the manager adds the recap and updates the numbers; the site refreshes itself within a minute. The schedule updates on its own from PlayMetrics.

How it works (the flow)
1) Data sourcesVeo (video + AI), PlayMetrics (schedule), MatchPro (results), photos2) Team manager + Claude Coworkcaptures, reviews & verifies; organized with PARA + CODE3) git commit + pushto a private GitHub repository4) Cloudflare Pagesauto-builds the site in ~30 seconds5) Cloudflare AccessGoogle sign-in, limited to team families6) Parents & coachesopen the dashboard on any device
What we do & don't show (data & privacy)
We protect the kids first. Players are never identified by last name anywhere on this site — jersey numbers or first-name-and-initial only. No personal contact info, addresses, or birthdates. Access is limited to team families via Google sign-in.
Read the stats as a guide, not gospel. The AI auto-detects events from video and misses some — so shot/pass counts are "what was detected," and we say so on the charts. We cross-check the AI's numbers against the match totals before publishing, and flag anything uncertain rather than guessing.
Technical details
Stack & hosting

A single self-contained HTML file (no framework) hosted on Cloudflare Pages. Charts are hand-built SVG plus Chart.js. Access is gated by Cloudflare Access with Google as the identity provider — an allow-list of team emails, no passwords to manage.

Deploy pipeline

Source lives in a private GitHub repo. A git push to main triggers a Cloudflare Pages build that redeploys in ~30 seconds — no manual upload. Every build stamps a version ID (in the footer); the page checks a /version endpoint on load and tells you if you're viewing a cached copy.

Data pipeline

Match analysis comes from Veo's Coach Assist via a consistent, structured request, then every figure is reconciled against the game's own totals before it's entered. The live calendar is pulled server-side by a small Cloudflare Pages Function (so credentials stay off the page) and cached briefly. Passing zone maps and shot maps are drawn from Veo's pitch coordinates/zones, normalized per game for the halftime end-switch (each match's camera frame is handled individually).

How this project is organized (PARA + CODE)

Behind the scenes the manager runs this in a Claude “Cowork” project organized on two well-known knowledge-management standards. PARA (Projects, Areas, Resources, Archive) files everything by how it's used — e.g. match reports and opponent scouting are ongoing “Areas,” reference material is “Resources.” CODE (Capture, Organize, Distill, Express) is the workflow: capture raw game data, organize it into the right place, distill it into the key takeaways, and express it as the recaps and charts you see here. It keeps a season's worth of data tidy and repeatable.

Built with AI assistance. Questions or want to help maintain it? Ask the team manager.
Rebels SC GU15 ECNL RL · 2026-27 · Prepared from Veo Cam 3 match video, Veo AI match analysis, and MatchPro tournament results · Stats are auto-detected from video and may undercount individual events · Questions or corrections: team developer · About / Nerdy Stuff · Build v25-2dc1aa2d · 2026-06-06 19:47 UTC · Follow the team: @gu15rebelsecnlrl · Club: @rebelssc