← Back to Directory
šŸ’Ŗ

Personal Fitness Coach

Build an agent that tracks workouts, sends reminders, and generates monthly PR reports

šŸ¤– 0 ↑ 0 ↓ Ā |Ā  šŸ‘¤ 0 ↑ 0 ↓
intermediateā± 30 minutesšŸ”„ 8 swappable alternatives

šŸ§‚ Ingredients

šŸ”Œ APIs

workout_data_and_exercise_history

šŸ”„ Alternatives:

Strava — Better for cardio/runningFitbit — All-day activity trackingStrong — Popular weightlifting tracker

sms_reminders_when_you_haven_t_worked_out

šŸ”„ Alternatives:

Vonage — Competitive SMS pricingMessagebird — Global SMS coveragePlivo — Cost-effective for high volume

schedule_workout_sessions

šŸ”„ Alternatives:

Outlook Calendar — Microsoft ecosystemCal Com — Open-source scheduling

šŸ“‹ Step-by-Step Build Guide

STEP 1

Connect to Hevy API and pull your workout history for the past 30 days

1. Connect to Hevy API and pull your workout history for the past 30 days

Connect to Hevy API and pull your workout history for the past 30 days

Steps:
1. Validate all required inputs are available
2. Execute the operation described above
3. Verify the result meets expected output format
4. Handle errors gracefully — retry transient failures, log and alert on persistent ones
5. Return structured output with status and any relevant data

If any required data is missing, request it from the user before proceeding.

šŸ§‘ Human Required

  • • ## Connect the API 1. Sign up for the service if you don't have an account 2. Find the API settings in your account dashboard 3. Generate an API key or access token 4. Share the key with your agent when prompted šŸ’” Most services have a free tier that's sufficient to get started.
STEP 2

Set up a daily cron job to check your last workout date via GET /workouts

2. Set up a daily cron job to check your last workout date via GET /workouts

Configure the scheduled job to run at the specified time.

Define the cron schedule: minute hour day-of-month month day-of-week
Common patterns:
- Daily at 7:30am: "30 7 * * *"
- Weekdays at 9am: "0 9 * * 1-5"  
- Every 5 minutes: "*/5 * * * *"
- First of month at 8am: "0 8 1 * *"

The job should:
1. Log start time
2. Execute the pipeline steps in sequence
3. Handle failures gracefully — retry transient errors, skip and alert on persistent ones
4. Log completion time and status
5. Send output through the configured delivery channel

šŸ§‘ Human Required

  • • ## Configure the Schedule Your agent needs to know when to run this task. You'll be asked: - **When**: Time of day and timezone (e.g., "7:30 AM Eastern") - **How often**: Daily, weekdays only, weekly, etc. - **Delivery**: Where to send results (Slack, email, SMS, etc.) The agent handles the scheduling — you just set your preferences.
STEP 3

If >2 days since last workout, send a nudge via Twilio SMS or Pushover notificat

3. If >2 days since last workout, send a nudge via Twilio SMS or Pushover notification

Send a notification to the user via the configured messaging channel.

For Pushover:
POST https://api.pushover.net/1/messages.json
Body: { token: {APP_TOKEN}, user: {USER_KEY}, message: "{notification_text}", title: "{title}", priority: 0 }

For Twilio SMS:
POST https://api.twilio.com/2010-04-01/Accounts/{SID}/Messages
Body: To={phone}, From={twilio_number}, Body={message_text}

Keep the message concise — under 160 characters for SMS, under 500 for push.
Include the most actionable information first.
Log: timestamp, channel, recipient, message preview, delivery status.
STEP 4

Monthly

4. Monthly: query all workouts, extract sets/reps/weight for squat, bench, and deadlift

Monthly: query all workouts, extract sets/reps/weight for squat, bench, and deadlift

Steps:
1. Validate all required inputs are available
2. Execute the operation described above
3. Verify the result meets expected output format
4. Handle errors gracefully — retry transient failures, log and alert on persistent ones
5. Return structured output with status and any relevant data

If any required data is missing, request it from the user before proceeding.
STEP 5

Calculate PRs by comparing max weight Ɨ reps across the month

5. Calculate PRs by comparing max weight Ɨ reps across the month

Process the data and calculate the requested metrics.

Steps:
1. Validate input data — check for nulls, out-of-range values, duplicates
2. Apply the calculation/aggregation logic
3. Compare against benchmarks or previous periods if available
4. Format results with appropriate precision (2 decimal places for percentages, whole numbers for counts)

Include: current value, previous value, change (absolute and %), trend direction (↑↓→).
Flag any anomalies: values >2 standard deviations from the mean.

If insufficient data for a reliable calculation, state the minimum needed and return partial results.
STEP 6

Generate a formatted Markdown report with PR highlights, volume trends, and cons

6. Generate a formatted Markdown report with PR highlights, volume trends, and consistency score

Compile the gathered data into a structured report.

Format as clean Markdown with:
- Title/date header
- Executive summary (2-3 sentences)
- Key metrics section with actual numbers
- Detailed sections with bullet points
- Action items or recommendations at the end

Keep it scannable — busy people read reports in 30 seconds.
Use emoji sparingly for visual anchors (šŸ“Š metrics, āœ… wins, āš ļø concerns, šŸ“‹ action items).
Include data comparisons: "X this period vs Y last period (↑Z%)"

If any data source was unavailable, note it clearly: "āš ļø [Source] data unavailable — excluded from this report."
STEP 7

Send the report via email or SMS on the 1st of each month

7. Send the report via email or SMS on the 1st of each month

Send the compiled content via email using the configured email API.

Compose the email:
- To: {recipient_email}
- Subject: {subject_line}
- Body: Format as clean HTML with proper headings, bullet points, and styling.
  Use inline CSS for compatibility. Keep it mobile-friendly (max-width: 600px).

Send via the configured email provider (SendGrid, Resend, or SES).
Verify the response indicates successful delivery (202 for SendGrid, 200 for Resend).
Log: timestamp, recipient, subject, and delivery status.

If send fails, retry once after 3 seconds. If it fails again, save the email content locally and alert the user.

šŸ¤– Example Agent Prompt

Connect to Hevy API and pull your workout history for the past 30 days

Steps:
1. Validate all required inputs are available
2. Execute the operation described above
3. Verify the result meets expected output format
4. Handle errors gracefully — retry transient failures, log and alert on persistent ones
5. Return structured output with status and any relevant data

If any required data is missing, request it from the user before proceeding.

Copy this prompt into your agent to get started.

šŸ’Ŗ Personal Fitness Coach — PincerAPI Cookbook