Case study · my academy

Soca BJJ
Glen Cove.

A Brazilian Jiu-Jitsu academy I co-own and teach at — and the live testbed for everything I build. One small business, wired end to end: the website, an AI content engine, the cameras, the climate, and a self-hosted hub that runs the back office. Nothing here is a mockup. It's running right now, on the mats in Glen Cove.

01 / 05
The website

A site that
fills classes.

A ground-up WordPress rebuild designed to do one job: turn a curious visitor into a booked intro class. Built on an 18-component design system, fed by live schedule data, and dressed in media the academy's own AI pipeline produces.

Soca BJJ Glen Cove websiteWordPress · React design system · live schedule
Design → conversion

The academy, online

Class schedule pulled from a single source of truth, a clear "start here" path for first-timers, instructor bios, and a booking flow that actually books. Real photography and AI-polished media throughout — no stock, no filler. It looks like the room feels.

18component system
liveschedule data
1clear path to book
02 / 05
Content, on tap

AI content &
real video.

A gym needs a steady stream of media — for the site, for social, for ads. Instead of a monthly retainer to an agency, the academy runs its own content engine. AI does the heavy lifting; a human keeps it honest.

Vision + search

The $11 photo library

4,696 photos captioned with AI vision for about eleven dollars, then searchable in plain English. It supplies gallery images, hover clips, and training-reel footage for the website automatically — pull "white gi, standing, laughing" and get exactly that.

Video creation

Production video, brand-locked

Hero and promo video generated with AI, then held to a hard rule: no AI text, no AI weirdness. Real logos composited back, seamless loops verified frame-by-frame, every clip checked against the real brand before it ships. Motion that looks shot, not synthesized.

AI-driven content

Copy that sounds like the room

Class descriptions, landing-page copy, and social posts drafted by AI on the academy's own voice and schedule, then reviewed before anything goes live. The boring 80% is automated; the judgment stays human.

Always current

Fed from the source

Media and schedule flow from the same systems that run the gym, so the site is never stale. Update the room, and the website updates itself.

03 / 05
The back office

A self-hosted hub
that runs it.

Off-the-shelf gym software fit badly and rented my data back to me. So the academy runs on a self-hosted business-management hub I built — members, schedule, tasks, and the daily operational glue, all on hardware I own.

mission-control — the self-hosted business hub
auth Google + Microsoft 365 SSO # server-verified tokens, per-person access levels
ops one task database, self-reconciling # a nightly AI closes what got done, files what didn't
brief 5 AM "needs attention" label prints # the day's priorities on a physical thermal label
data members, schedule, media — self-hosted # my hardware, my data, no per-seat SaaS bill
why because the off-the-shelf options fit badly # so I built the hub myself
Integrations

CRM, meet the cameras

The gym CRM wired to the attendance cameras, so who's actually on the mats feeds the back office — no clipboard, no manual check-in. If it has an API (or even if it doesn't), it gets connected.

Autonomous ops

The office that closes itself

A nightly job reads the day's activity and reconciles the task list; an hourly rebuild keeps the dashboard live. The repetitive back-office work runs on its own, with a human reviewing anything that touches money or members.

04 / 05
The plumbing

Automation you
can stand inside.

Underneath the website is real infrastructure — a self-hosted media server, a network with zero open ports, and AI that runs the physical building. You can walk into this automation.

Self-hosted media · Immich

The Immich server

Every photo and clip the academy shoots lands on a self-hosted Immich server — auto-imported, AI-tagged, de-duplicated, and organized without anyone touching a folder. It's the archive the website and the content engine draw from. When I moved it between machines I did it live: 166 GB over an encrypted mesh, 14,111 files verified byte-for-byte on both ends, one route flip, and nobody noticed.

166 GBmoved live
14,111files verified
0downtime
Self-hosted · AI-tagged
AI in the walls

The building runs itself

Computer vision drives the HVAC — no eco-mode while people are training. Doors lock on an occupancy-aware schedule with a 2 AM backstop, and the lights follow the room. Automation you can physically stand inside.

Network

Zero inbound ports

Tunneled ingress, mesh SSH between machines, nightly encrypted backups. The whole stack — website, hub, media server — is published to the internet without a single open port on the network.

05 / 05
What it produced

Proof on
the profile.

All of it aims at the same outcome — more of the right people walking through the door. When the marketing looked expensive and quiet, I ran the numbers instead of guessing.

Forensics

The ad audit

A forensic pass over $14,388 of Google Ads spend exposed fake conversion tracking sitting behind roughly six real leads. I rebuilt the tracking plan, ran a three-phase relaunch, and added a geofencing strategy aimed at the actual catchment area.

Reputation

5.0★ across 79 reviews

On the profile side: a 5.0-star rating across 79 reviews, with hours and details synced to 68 directories so the academy shows up correct everywhere someone might look for it.

Same playbook, one gym: a site built to convert, an AI content engine feeding it, a self-hosted hub running the back office, a media server and a smart building underneath, and marketing measured instead of assumed. That's what "wired together" looks like when it's your own business on the line.

Visit socabjjglencove.com →
Want this for your business?

One business,
wired together.

I did all of this for my own academy because I had to live with the result. I'll do the same for yours — website, content, automation, and the plumbing underneath.

Start a conversation →