DEV Community

Cover image for I built a local AI workout planner for my gym-obsessed friend
Ohm Anand
Ohm Anand

Posted on

I built a local AI workout planner for my gym-obsessed friend

This is a submission for the Hacktoberfest Weekend Challenge: Build for a Friend

What I Built

My friend Ritesh is a proper gym guy.

He already enjoys lifting and spends a lot of time training, so motivation isn't really his problem.

Structure is.

Some days he'd train chest, another day triceps, and there wasn't always a clear structure for how his muscle groups should fit together across the week.

Legs were another problem. He didn't know many leg exercises, so they were easier to neglect.

So I built LiftMate around that problem.

LiftMate asks for:

  • Training goal
  • Experience level
  • Training days
  • Session duration
  • Available equipment
  • Muscle priorities

It then builds a structured workout around those constraints.

But I didn't want it to be just another app that generates a workout and leaves you there.

The actual flow is:

Plan → Train → Log → Progress

You can start the workout, log every set, complete the session and get a recommendation for what to do next time.

I showed the working version to Ritesh, and the project was built around the way he actually trains rather than around a generic fitness-app idea.

Demo

Watch the LiftMate Demo

The demo shows the complete flow:

Onboarding → Personalized Workout → Local AI Personalization → Active Workout → Set Logging → Completion → Progression

A look inside LiftMate





The screenshots show the onboarding flow, personalized workout, AI explanation, active workout and completed session.

Code

GitHub: https://github.com/ohm-7643/LiftMate

The repository contains the complete LiftMate application, including the frontend, backend, database, workout planner, AI integration and validation logic.

How I Built It

The most important design decision I made was simple:

I didn't let the AI design the entire workout.

LiftMate has a deterministic workout planner that handles the parts that should be predictable:

  • Exercise selection
  • Equipment constraints
  • Muscle-group priorities
  • Sets and reps
  • Rest periods
  • Session duration
  • Weekly training structure
  • Progression

Then I added Qwen3-8B, running locally through Ollama.

Qwen has a much smaller job.

It personalizes the workout.

The model can prioritize a couple of exercises based on the user's goals and provide a short coaching note.

The AI response is then validated before it reaches the user.

LiftMate checks that:

  • The exercises are actually allowed
  • The user's equipment supports them
  • There are no duplicates
  • They fit the planned focus
  • The prescriptions stay within allowed limits
  • The response has the expected structure

If the local model fails, times out or returns something invalid, LiftMate falls back to the deterministic workout.

So the architecture is:

User Profile → Deterministic Planner → Qwen3-8B → Validation → Workout

That separation was intentional.

I wanted the model to make the experience more personal without making the whole application depend on whatever the model happens to generate.

Why Does Open Innovation Matter?

I could have called a closed AI API and asked it to generate a workout.

That would have been easier.

But for LiftMate, running an open-weight model locally made more sense.

With Qwen3-8B running through Ollama, the AI personalization can happen on the user's own machine. A fitness profile doesn't have to be sent to a third-party AI provider just to decide which exercises to prioritize.

It also gives me control.

I can inspect the prompts, change the rules, swap the model, or experiment with another open model without rebuilding the whole application around one provider.

More importantly, I don't have to blindly trust the model.

The deterministic planner remains responsible for the actual workout structure, while the model adds personalization on top.

That was probably the biggest thing I learned from this project:

Open-source AI doesn't have to mean letting the model do everything.

For LiftMate:

AI personalizes.

Rules keep it reliable.

My Agent Session

I didn't use DevRelay for this project, so I'm leaving this optional section out.

Prize Categories

No partner category claimed.

Top comments (0)