> ## Documentation Index
> Fetch the complete documentation index at: https://docs.fliiq.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Autonomous Fitness Coach

> A scheduled job that tracks your fitness progress over time

This example demonstrates Fliiq's daemon, scheduled jobs, and progressive memory — a daily fitness coaching job that adapts based on your history.

## The Setup

A user wanted daily workout reminders tailored to their tennis training goals. They asked Fliiq in a chat session:

```
"Set up a daily fitness coaching job that runs at 11am. I play competitive
tennis and want to improve my speed and endurance. Track my progress over time."
```

## What Fliiq Created

The agent called `create_job` and wrote this YAML:

```yaml theme={null}
name: tennis-fitness-coach
trigger:
  type: cron
  schedule: "0 15 * * *"       # 3pm UTC = 11am EDT
prompt: |
  You are my personal tennis fitness coach. Read your job memory
  to see my workout history and goals. Today, suggest a workout
  focused on tennis-specific fitness (speed, agility, endurance).

  Adapt based on what I did yesterday — don't repeat the same
  workout two days in a row. Track progression (weights, reps,
  distances) and note improvements.

  Keep it concise: warm-up, main workout, cool-down.
skills:
  - memory_read
  - memory_write
  - get_current_time
enabled: true
```

## How It Works

### First Run

The agent has no history, so it creates a baseline:

```markdown theme={null}
# Tennis Fitness Coach — Job Memory

## Goals
- Improve lateral speed for court coverage
- Build endurance for 3-set matches
- Strengthen serve power (shoulder/core)

## Workout Log

### 2026-02-08 (Day 1)
- Warm-up: 5min jump rope, dynamic stretches
- Main: Lateral shuffle drills (4x30s), resistance band shoulder rotations,
  3x12 medicine ball slams, 20min interval run (1min sprint/2min jog)
- Cool-down: 10min stretch, foam roll quads
```

### Subsequent Runs

Each day, the agent reads its memory, sees what was done previously, and varies the workout:

```markdown theme={null}
### 2026-02-09 (Day 2)
- Yesterday was speed-focused, switching to endurance
- Main: 30min steady-state run, 3x20 bodyweight squats, plank holds
  (3x45s → progressed from 3x30s on Day 1), agility ladder drills
- Note: Increased plank hold from 30s to 45s. Good progression.
```

### Over Weeks

The memory accumulates workout history. The agent tracks progression:

```markdown theme={null}
## Progress Notes
- Plank: 30s → 45s → 60s over 3 weeks
- Interval run pace: improving, can sustain 1min sprint at higher speed
- Lateral agility: noticeably quicker change of direction
```

## Adding Telegram Delivery

After a week of the job running, the user wanted daily workouts delivered straight to Telegram instead of just logging to the audit trail. They told Fliiq:

```
"The tennis-fitness-coach job is running successfully but not delivering
messages to Telegram. Can you fix it?"
```

Fliiq investigated and found that its own job delivery system only supported email and SMS — Telegram wasn't wired up yet. In a single conversation, the agent:

1. Read the job config and found `delivery.type: telegram` was already set
2. Diagnosed that the executor's `_build_delivery_hint()` function had no Telegram branch
3. Added Telegram delivery support to the executor
4. Added `send_telegram` to the job's skills list
5. Sent a test message to verify — delivered instantly

The whole fix took about 60 seconds. The next scheduled run delivered a full workout plan to Telegram:

```
🎾 Tennis Fitness Coach — Tuesday, Feb 17

Today: Power & Rotational Strength (45 min)

Warm-up (5 min)
☐ Jump rope — 2 min
☐ Arm circles + hip openers — 3 min

Main (35 min)
☐ Medicine ball rotational throws — 4×8 each side
☐ Single-leg Romanian deadlifts — 3×10 each
☐ Resistance band forehand/backhand pulls — 3×12
☐ Box jumps — 4×6
☐ Plank with shoulder taps — 3×40s

Cool-down (5 min)
☐ Shoulder stretch + quad stretch + hip flexors

💡 5.0 Focus: At tournament level, every shot is hit
with full-body rotation. 4.0 players arm the ball —
train the kinetic chain so power comes from the ground up.

Reply with completion status to log to memory!
```

### Other delivery options

SMS delivery works the same way:

```yaml theme={null}
delivery:
  type: sms
  to: "+1555123456"
```

Or email:

```yaml theme={null}
delivery:
  type: email
  to: "you@gmail.com"
```

## Managing the Job

```bash theme={null}
fliiq job list                          # See status and next run
fliiq job logs tennis-fitness-coach     # View run history
fliiq job output tennis-fitness-coach   # Last workout text
fliiq job run tennis-fitness-coach      # Manual trigger
```

## The Key Insight

The combination of **scheduled execution** + **per-job memory** + **delivery channels** creates a persistent, adaptive agent that reaches you where you are. Each run builds on the last. The agent isn't just generating random workouts — it's tracking your progression, varying exercises, adapting to your performance, and delivering results to your phone.

When the delivery channel wasn't wired up, Fliiq diagnosed and fixed the gap itself — no manual coding required. This self-fixing pattern means Fliiq's capabilities grow as you use it.

This pattern applies to any domain: language learning, daily journaling, project status tracking, email digests with deduplication.
