OperationsCozmX FencingEngineering

Lessons From Running a Real Business That Made Me a Better Engineer

Personal Essay

I've hosted regional fencing tournaments for three years through CozmX Fencing. Dozens of events. Hundreds of competitors. Real money, real logistics, real failure modes that no rollback command can fix. And I'm convinced this made me a sharper ML engineer than any Kaggle competition or coursework ever could.

CozmX Fencing — By the Numbers

3
Years Running
Dozens
Events Hosted
100s
Competitors
0
Rollback Commands

Systems Fail at the Seams, Not the Centers

A tournament isn't one problem. It's registration, bracket generation, venue coordination, referee scheduling, real-time scoring, and parent communication — all stitched together with duct tape and trust.

The breakdowns never happen inside any single function. They happen in the handoffs.

The Cascade

A referee arrives 15 minutes late
Pool bout starts behind schedule
Direct elimination bracket backs up
40 families standing around losing confidence

The Engineering Parallel

I see the exact same failure pattern in production ML pipelines. Models don't fail. Integrations fail. I learned to think in handoffs before I ever deployed a multi-agent system, and that instinct has saved me repeatedly at OptiU.

Your System's Real User Doesn't Care About Your System

Fencers and their families don't care about my bracket algorithm. They care that the event runs on time, that results are fair, and that their kid's name is spelled right on the scorecard.

That reframing changed how I build ML products.

What Engineers Optimize

Model MAPE: 12.3%
Inference latency: 340ms p99
Architecture: LSTM + attention

What Users Actually Care About

"Am I sitting on dead inventory?"
"Will I miss a sales opportunity?"
"Can I trust this number?"

Orienting around the downstream consequence, not the technical metric, is something I internalized on gym floors long before I applied it to production code.

Resource Allocation Under Real Constraint

At a tournament, you don't get to scale horizontally. You have the referees you have. The strips you have. The hours you have. You optimize or you fail publicly.

That scarcity mindset became my default engineering posture. At a startup with no dedicated MLOps team and limited compute, I don't reach for the biggest model or the most complex architecture. I reach for the cheapest decision that still works, then I iterate.

Same Mindset, Different Domain

Tournament Day
Referees: 3 fewer than needed
Strips: Fixed count, can't add more
Time: Venue closes at 6 PM, period
Result: Finished on time anyway
Startup ML
MLOps team: Just me
Compute: Budget constrained
Time: Clients expect results now
Result: Cheapest decision that works

The Core Lesson

Running a business with real operational stakes gave me something most junior engineers lack:

An allergic reaction to abstraction without accountability.

Every system I build, I ask the same question I ask before every tournament: if this breaks at 2 PM on a Saturday with 200 people watching, what happens?
That question changes how you write code.