01 — The match
The 300
One match, one week, one target: 300 raw reps. The match runs inside your existing group chat — no new app to open, no schedule to agree on.
-
01
Pick exercises
The crew picks two or three exercises for the match. Anything countable — push-ups, squats, lunges.
-
02
Any reps, any order
Log from the chat or the app, any time. Ten before coffee, forty at midnight. Mix exercises freely.
-
03
First to target closes
The match closes the moment a player's raw reps hit the target — 300 by default. Sudden-death energy, all week.
-
04
Effort-adjusted winner
Raw reps settle the clock. Handicapped scores settle the winner — your tier multiplies every rep you log.
02 — The handicap
Effort beats fitness
Every player carries a fitness tier, and the tier multiplies every rep. A couch player's push-up is worth more than an athlete's. This is the real engine math — drag the slider.
New to it, or restarting. Every rep counts double-ish.
score
The classic upset
Same match. Target closed by the athlete — winner is someone else.
300 raw × 0.85
190 raw × 1.50
Couch wins by 30 — on 110 fewer reps.
v1 ships self-set tiers (socially policed — your mates know what you can do). v2, Phase 3: the multiplier is replaced by measured effort — reps × (your %HRR ÷ your baseline).
03 — The system
One engine, every chat
Thin adapters translate platform events into a single command bus. One API, one match engine — every group chat. Adding Messenger later is one adapter, not a rewrite.
- WhatsApp — chat adapter
- Slack — chat adapter
- Messenger — Phase 4
- RWF API — command bus
- game-core — match engine
- Postgres — history
- Redis — live state
04 — Verification
Counted, not trusted
Rep counts are cheap to lie about, so the system verifies them — in layers, each shipping in a different phase.
Camera counting
MoveNet pose detection counts your reps live in the browser tab — no app install, no approvals, no GPU bill.
Any BLE heart-rate strap
Web Bluetooth reads any BLE chest strap. Live heart rate feeds the effort engine and grounds the handicap in physiology.
Wearable cloud cross-check
WHOOP, Garmin and Google Health imports verify effort after the fact and tune your handicap over time.
05 — Features
Built to stay fun
The match is the hook. These are the reasons the group chat keeps playing on week twelve.
Taunts
Every log broadcasts to the chat. Trash talk is a feature, not a bug.
Charity pots
Losers pay into the pot. The winner picks where it goes.
Pick your days
Choose which days count. Busy Tuesday? The match only sees the days you picked.
Seasons
Leagues and season standings give the long arc — beyond any single match.
Shareable result cards
Every match ends with a card built for the group chat.
Corporate mode
Slack enterprise install, team-vs-team leagues, org dashboards.
06 — Roadmap
Where this goes
From due diligence this week to a corporate revenue engine — each phase proves the loop before it adds a layer.
-
Phase 0Now
Due diligence & alignment
Private repo, landscape and wearables research, business analysis — done. Next: founder call, Figma audit, MVP scope and equity alignment.
-
Phase 2~6–8 weeks
MVP — the 300 loop
game-core match engine, WhatsApp + Slack bots, PWA with in-browser camera counting, handicap v1. Goal: 3–5 real group chats playing weekly.
-
Phase 3~+8 weeks
Effort truth & wearables
Handicap v2 on measured %HRR, any BLE strap via Web Bluetooth, watch companions, seasons, auto-cut shareable clips.
-
Phase 4Business layer
Corporate & scale
Slack enterprise, org dashboards, team leagues, charity-pot partner, wearable cloud verification, Messenger. The revenue engine.