Inspiration
When I started looking into going to the gym, getting a workout plan was easy. ChatGPT could make one in seconds. The problem was actually using it: the routine stayed in the chat, my workout logs lived somewhere else, and ChatGPT had no way to know what I completed or how much weight I used.
I built GymDeck to connect those steps. ChatGPT can create the plan directly inside the workout tracker, while GymDeck records what actually happens in the gym. That history gives the agent enough context to recommend what should change next. And the best part of all, it's free!
Training should still be a routine. The agent is most useful when it helps improve that routine over time or adapt it when something changes. For example, when equipment is unavailable, time is running short, or the user wants to have a change of scenery.
## What GymDeck does
GymDeck is a mobile-first workout tracker designed for human-agent collaboration through WebMCP.
A user can:
- Create and edit a multi-day workout plan
- Load a saved training day as today’s workout
- Track sets, reps, weight, effort, notes, rest time, and cardio
- Replace or reorder exercises during a workout
- Preserve completed work when a workout changes
- Review training history, volume, consistency, and personal records
- Receive clear progression recommendations based on previous performance
- Accept, edit, ignore, or apply those recommendations to the saved plan
Through WebMCP, ChatGPT can read and update the same workout state shown in the interface. It can create a plan, add or replace unavailable exercises, shorten a workout, log sets, review history, recommend a new weight, and apply that change directly to the next session.
Every human and agent change is visible in GymDeck’s activity history and recent changes can be undone.
## How I built it
GymDeck is built with React and TypeScript and hosted as a browser-based application without a built-in application server.
The app exposes 23 tools using document.modelContext.registerTool(). These tools are separated into focused read and write actions, including:
- Reading the athlete profile, current workout, saved plan, and exercise history
- Creating or editing training plans
- Adding, replacing, or reordering exercises
- Logging and correcting completed sets
- Adding timed cardio
- Reviewing progress
- Generating progression recommendations
- Applying accepted recommendations to the saved weekly plan
The normal interface and WebMCP tools call the same underlying state functions. This keeps the visible workout, history, recommendations, and agent actions synchronized.
All important data is stored locally in the browser using versioned persistence. GymDeck works after a refresh and supports JSON import and export, demo data, and a fresh-workspace option. It does not require authentication, an external database, an OpenAI API key, or a chatbot embedded inside the app.
## Challenges I faced
The biggest challenge was designing tools that an agent could use reliably.
The first versions were too ambiguous. An agent might update only today’s workout when the user meant to change the saved plan, or interpret creating a first plan as replacing existing data. I separated these actions into clearer tools for first-time plan creation, explicit plan replacement, editing saved days, and loading a plan day into today’s workout.
Another challenge was keeping history accurate across both human and agent actions. Correcting a completed set now updates its persisted history entry, repeated logging does not accidentally reopen a set, and replacing an exercise preserves work that was already completed.
Progression also needed to be more than a generic message. GymDeck now compares recorded performance with the saved prescription, explains why it recommends increasing, maintaining, or reducing a weight, and can apply the accepted change back to every matching exercise in the plan.
Finally, WebMCP support depends on the browser hosting the site. GymDeck’s manual workout interface works on mobile, but the complete agent workflow currently requires a WebMCP-capable desktop browser such as ChatGPT’s in-app browser.
## What I learned
I learned that WebMCP is not about placing a chatbot inside a website. The important part is giving an external agent a clear and dependable interface to the product’s real state.
Tool names, schemas, descriptions, safety boundaries, and return messages matter as much as the visual interface. Small, focused tools were much more reliable than broad actions that tried to handle every possible request.
I also learned that a useful agent experience needs visible results. When ChatGPT changes a workout, the user should immediately see what changed, understand why it changed, and remain able to edit or undo it.
GymDeck demonstrates how an agent can move beyond giving workout advice and directly help maintain a training routine that improves with the user. It is also licensed under the MIT license for all to use and develop.
Built With
- ai
- typescript
- webapp
- webmcp
Log in or sign up for Devpost to join the conversation.