AI shipped product · Mobile

A training log for BJJ athletes.

BJJ training apps are either bloated with competition stats or too generic to reflect how people actually train. I built a lightweight alternative around a quick logging flow and an AI coach that remembers previous weeks, then tested it with a small group of practitioners to see what actually held up.

11 days
Concept → shipped
<15 sec
Reported beta logging
Up to 3
Prior coaching recommendations

Tatami

Tatami's live log form with duration, technique, session type, and optional reflections.

Live app · Log form in guest mode

Constraint

The users most likely to pay weren’t the users to design for.

Hobbyists have the most retention potential and the least tolerance for friction. The coaching layer also needs rich data to work.

Competitors may be more willing to pay, but hobbyists significantly outnumber them and may be the stickier audience. They are also the least tolerant of a logging flow that feels like work.

That created a real tension: keep the log fast enough to use after training while still gathering enough context for an AI coach to say something useful.

Decisions

Three calls resolved the friction-versus-data tension.

Each decision traded a richer default for the harder choice that kept the log fast enough to actually get used.

Strip the log form to three taps

I cut everything non-essential and collapsed the date field because most logs happen the same day. An AI coach is only as good as its data, and a form people skip produces worse data than a form they complete. Completion rate beats field richness.

Tatami's log form with duration, technique, and optional reflections before a guest demonstration session.

Guest-mode walkthrough · Example session

Choose 60 minutes and Closed Guard, then Save. Skip the optional review and open Progress to see the session recorded. Reflections stay empty.

Give the AI coach memory across weeks

Instead of regenerating a stateless summary, I stored each week’s coaching recommendation and injected the last three as context. For hobbyists without a coach present, continuity is the trust mechanism. Without memory, it feels like a novelty. With it, it starts to feel like a relationship.

Tatami Coach screen showing a previous recommendation and the option to generate a weekly summary.
Earlier screen · Coaching recommendations in context

Exclude submission tracking deliberately

Every comparable app includes it. I kept it out of the training-room experience because turning practice into a scoreboard changes the social dynamic. The product’s job is to support the training room, not surveil it.

Tatami's live Progress screen with a training streak, weekly goal, activity calendar, and focus areas, showing three local example sessions.
Live Progress · Example sessions in guest mode

AI insight

Tone isn’t a style dial. It’s an identity you have to specify.

The first coaching prompt sounded punitive. ‘Direct and honest’ reliably collapsed into authoritative and judgmental whenever the model had negative data to work with.

The fix was not softening the copy. I reframed the persona from a coach reviewing performance to an experienced training partner sharing an observation.

“LLM tone is not a dial between formal and casual. It is a function of the role the model believes it is playing.”

Final product

Log a session. Track the pattern. Get coaching that remembers.

  1. Log a session

    Choose a duration and techniques, then save. Add reflections when you have more to say.

  2. Track progress

    See training consistency without turning the gym into a scoreboard.

  3. Receive AI coaching

    Use saved recommendations from previous weeks as context for the next coaching response.

Beta signal

A fast log still needs useful coaching context.

Initial beta feedback described core logging as taking under fifteen seconds. The coaching layer can refer to saved recommendations from previous weeks, while optional reflections add context about the session. The design tradeoff is keeping the log quick without losing the detail that helps make coaching useful.

What I expected
Optional reflections would add useful coaching context without slowing the core log.
What users did
Initial feedback described quick core logging. Reflections remained optional rather than a requirement for saving a session.
What I learned
Keep the core log quick, and make it easy to add reflective context separately.

Next time

Reflections shouldn’t compete with the fast logging flow.

I’d test a separate post-session reflection prompt, such as a notification two hours later, so adding context doesn’t compete with the quick logging flow.