mats

AI SHIPPED PRODUCT

Note-taking tool for martial artists

Every technique you learn on the mat is gone by morning; MATS is a post-training logging system that structures messy brain dumps into a queryable backlog using an AI chat interface.

STACK

Claude (product thinking + prompt engineering + prototyping) → Lovable (React/Vite build) → Vercel (deployment) + Microsoft Clarity + Tally

YEAR

2026

DURATION

Concept to shipped in 3 weeks, solo

THE CONSTRAINT

The core interaction happens when users are physically exhausted, on their phones, immediately after training. Every additional tap, field, or decision is a reason not to log. The AI chat had to be fast and forgiving enough to accept genuinely messy input; not cleaned-up notes, but "got submitted with an arm bar need to review gordon's escape instructional" typed with sweaty thumbs.

3 KEY DECISIONS

Delete on completion, not archive The alternative was preserving completed entries in an archive view; a common pattern in task managers. I chose deletion because MATS is an action queue, not a journal. Every completed technique staying in the list increases the cognitive load of scanning what still needs work. The tradeoff is real: one beta user lost a technique he wanted to reference later, which surfaced a genuine product tension between "tool for action" and "tool for memory." That tension is now a v1.1 decision, not a bug.

Constrained JSON action schema over free-form AI output The alternative was letting the AI respond conversationally and parse intent from natural language each time. I chose a strict JSON block appended at the end of every response - four action types only, one block per message - because it made the AI's database writes deterministic and auditable. Free-form output works in demos. It fails at 11pm when a user's note is ambiguous and the AI has to decide whether "worked the guard" means add a technique or advance an existing one.

Two modes with sub-tabs over a unified list The alternative was a single filterable list of all entries. I chose a hard split between TRAIN (pre and post-training workflow) and WATCH (instructional library) because the mental context is completely different; one is about tomorrow's mat session, the other is about a study backlog that spans weeks. Mixing them in one list with filters would have made the app faster to build and slower to use.

THE AI-SPECIFIC INSIGHT

The failure mode I hit wasn't the AI giving wrong answers; it was the AI being too helpful. Early prompt versions produced empathetic, conversational responses with approval gates before adding entries to the database. That pattern works for a general assistant. It's wrong for a post-training logging tool, where the user wants to dump information and trust that it was handled, not review a confirmation card. The fix was explicit tone instructions and a hard schema constraint: act first, confirm in one line, never ask. The broader principle is that LLM default behavior optimizes for user trust in the general case. Specialized tools often need the opposite; speed and invisibility over transparency and confirmation.

OUTCOME
  • Live at mats-phi.vercel.app with two beta users logging real training sessions within 72 hours of deployment; unprompted, without a prompt from me

  • Two pieces of unsolicited feedback in the first week: one bug report (line breaks not preserving) and one fundamental product challenge (deletion vs. archive); both surfaced real design decisions I had documented but not tested

  • The TODAY tab - the pre-training game plan feature - was not discovered or used by either beta user without explanation, which means the onboarding is not doing its job regardless of how well the feature works

WHAT I'D DO DIFFERENTLY

Build the onboarding last but test it first; I wrote three screens that explained the product accurately and none that communicated what to do in the first sixty seconds.

PORTFOLIO

MORE CASE STUDIES

LIVE APP

GEOSPATIAL PAIRING

AI SHIPPED PRODUCT

MOBILE-FIRST ENTERPRISE

WORKFLOW OPTIMIZATION

B2B SAAS DESIGN