Built with Anthropic Opus 4.6 | by CozMx
Build a Tool That Should Exist — Eliminate busywork. Make hard things effortless.
Running a fencing tournament is a logistical nightmare. Score sheets are handwritten, results must be manually entered from photos, referees need constant coordination, and spectators have no visibility into live results. A single tournament with 120+ fencers generates hundreds of score sheets, announcements, and bracket updates — all managed by a small volunteer committee under time pressure.
FenceFlow replaces this manual chaos with an AI-powered operations platform that automates scoring, coordinates referees, and delivers real-time results to every stakeholder.
Referees photograph handwritten score sheets. A first-pass Sonnet model reads the scores via OCR. When confidence drops below 80%, Opus 4.6 activates extended thinking — a second-pass analysis that re-examines ambiguous cells, applies fencing rule constraints (V0-V5 range, diagonal symmetry), and produces a transparent reasoning chain. The committee sees exactly which cells were corrected and why.
An agentic loop powered by Opus 4.6 with tool use monitors the tournament in real time. It auto-approves high-confidence score sheets, flags anomalies for human review, detects when all pools in an event are complete, and can stop events automatically. Each decision is logged with full reasoning.
After each pool is approved, Opus 4.6 generates color commentary about upsets, dominant performances, and emerging storylines — streamed token-by-token over WebSocket. The live typing animation appears on both the public view and the committee dashboard.
Coaches access a multi-turn chat assistant powered by Opus 4.6 with full Bradley-Terry engine context — fencer strength ratings, win probability trajectories, pairwise head-to-head records, and Monte Carlo DE simulation results (10,000 runs). The system combines touch-level statistical modeling with AI-generated performance insights, helping coaches understand matchup dynamics and make data-driven tactical decisions.
The system generates polished PA announcements for key tournament moments — event starts, pool completions, DE results. Announcements are refined by Opus 4.6 and delivered via browser text-to-speech and Telegram integration.
| Layer | Technology |
|---|---|
| Backend | FastAPI (Python 3.11) |
| Frontend | React 18 + Vite |
| AI | Anthropic Opus 4.6 (vision, tool use, extended thinking, streaming, prompt caching) |
| Real-time | WebSocket (native) |
| Messaging | Telegram Bot API |
| Data | CSV-based (no database required) |
| Role | Access | Capabilities |
|---|---|---|
| Committee | Dashboard (code-protected) | Start/stop events, review scores, manage referees, monitor agent, broadcast announcements |
| Referee | Portal (code-protected) | View pool assignments, photograph and upload score sheets, edit scores |
| Coach | Chat interface (code-protected) | Query tournament state, ask about fencers, get strategic insights |
| Public | Open access | Live leaderboards, pool results, DE brackets, streaming commentary, announcements |
Backend:
cd backend
pip install -r requirements.txt
python main.py
# API runs on http://localhost:3001
# Docs at http://localhost:3001/docsFrontend:
cd frontend
npm install
npm run dev
# App runs on http://localhost:3000Python 3.11 · FastAPI · React 18 · Vite · Anthropic SDK · WebSocket · Telegram Bot API · CSV data storage
Current fencing software does not offer public APIs. Connecting FenceFlow to live tournament systems requires federation approval. For this reason, the demo was simulated using real tournament data from 1 out of 30 tournament events hosted in November 2025, featuring 121 fencers, 18 pools, 10 referees, across 3 weapon events. Built solo in 6 days using Claude Code.
View the full tournament data on Fencing Time Live
This project is licensed under the PolyForm Noncommercial License 1.0.0. Free for noncommercial use — see the license for details.
For detailed system design, see docs/design-doc.md.





