All workCase study · Feb 2025 – now

My Annotator

A telestrator for football coaches, from a side project to a paid product with a Chrome extension.

RoleEverything: product, design, code, ops
StatusLive, Stripe billing
StackNext.js 16, React 19, Prisma 7
My Annotator landing page with annotated amateur match footage
The brief

Coaches want to show a player exactly what went wrong, on the frame where it happened, without analysis software or an analyst.

Who
A coach preparing alone at a desk
Volume
A 90-minute match, 20 to 40 marks
Goal
Play it back live with the player

What I built.

Built and run solo · 20 months
01

Draw on the video

Arrows, rings, zones and freehand over YouTube or your own files, with undo and shortcuts.

02

Replay links

Share a session that deep-links to the exact moment and mark.

03

Teams and roles

Owner, coach, staff and viewer roles, collaborators and comments per video.

04

Exports

PNG frames, JSON and a printable review sheet for the dressing room.

05

Plans and billing

Free, Coach, Team and Club tiers on Stripe, with referral tracking.

06

Promo videos in code

Landscape, vertical and short promos rendered with Remotion.

The extension · v2.3

One click from the match to the board.

A Manifest V3 extension adds an Annotate button to YouTube, Vimeo and Wistia pages and opens the clip in the app. The button lives in a shadow root so it never fights the host page's styles.

Permissions
storage, activeTab. Nothing else.
Sign-in
Not required since 2.2
Build
TypeScript + esbuild
Chrome Web Store ↗
Store screenshot: the Annotate this video button on a YouTube match page
Decisions

What I'd tell another solo founder.

  1. 01

    Removed the sign-in wall.

    Since August 2026, guests draw right away and their work saves in the browser. They make an account once it's worth it.

  2. 02

    Pivoted to one audience.

    It started as a tool for teachers, students and creators. Narrowing to football coaches made the product, the copy and the look sharper. Even the plans are named for who pays: Coach, Team and Club.

  3. 03

    Audited the copy against the code.

    Unshipped features came off the landing page, and shipped ones that were never announced went on.

  4. 04

    Prototyped ball tracking.

    A separate Python prototype detects players and the ball with YOLO and RF-DETR, and only accepts ball tracks that move plausibly across the pitch. It stays out of the app until a coach can confirm what it finds. Human in the loop, not auto-magic.

Next case studyHighlightsA 4.3 GB match cut into a reel in about two minutes, in the browser.
03 — Contact

Have a product in mind? Let’s ship it.

A role, a product to build from scratch or a club that needs a website. I reply within a day or two.

bricebraquin@live.fr