Weather-aware morning training brief on your calendar

Every weekday at 6am, get a recommended workout based on your recent training and today's weather, automatically blocked on your calendar.

Agentic Task
StravaWeatherGoogle CalendarPersonal ProductivityDaily DigestsAI Reports

Build me an agent workflow that runs every weekday at 6am in my local time zone and produces a weather-aware morning training brief, then books the recommended session on my Google Calendar.

Inputs I will configure on the workflow: my home latitude and longitude, my local time zone (e.g. America/New_York), my preferred training windows for the day (default: morning 6am-9am, midday 11am-2pm, evening 5pm-8pm), my Google Calendar ID (default: primary), and an optional notes field describing my current training block (e.g. 'base season', 'taper week').

Each run the agent should:

1. Call Strava's List Athlete Activities operation for the last 7 days (after = now - 7 days) and Get Athlete Stats for the authenticated athlete. Use these to estimate current training load: total time and distance over the last 7 days, count of high-intensity vs easy sessions, days since last rest day, and a rough trend vs my recent totals.

2. Call Weather's Get Weather Forecast operation with my configured latitude and longitude. Inspect today's data points across the three configured windows (morning, midday, evening) for temperature, precipitation probability, precipitation volume, and wind speed. Convert to imperial or metric to match my preference.

3. Synthesize a short brief that decides:

- Sport type (run, ride, swim, strength, cross-train) based on what sports appear in my recent Strava activities and how loaded each one is.

- Intensity (easy, steady, intervals, long, rest) based on accumulated load: high recent load = easy or rest; low load + good weather = key session; very high load or multiple hard days in a row = mandatory rest.

- Window (morning / midday / evening) based on which window has the best conditions: prefer dry, moderate temps, low wind. If every window is poor (heavy rain, dangerous heat or cold, high wind), recommend an indoor swap (treadmill, trainer, pool, strength).

4. Call Google Calendar's Create Event operation on my configured calendar with:

- Summary: a one-line title like 'Easy run, 45 min (morning, 58F clear)'. If it's a rest day, prefix the title with 'Rest day:' and a one-line reason (e.g. 'Rest day: 6 days of training in a row').

- Start and end times matching the chosen window (default 60 minutes; longer for 'long' intensity, shorter for 'easy'). Use RFC3339 with my time zone.

- Description: the full brief, including last-7-day totals, why this sport/intensity was chosen, the forecast for the chosen window, and a 3-5 bullet session structure (warmup, main set, cooldown).

5. Output is one calendar event per weekday. If load and weather together suggest a true rest day, still create a calendar event so the decision is visible, but title it as a rest day and skip the session structure. Never create more than one event per day.

Constraints: do not modify or delete existing events. Do not overwrite events that already exist in the chosen window; if the window is fully booked, fall back to the next-best window and note the change in the description. Keep the brief tight and skimmable, not a wall of text.

Additional information

What does this prompt do?
  • Looks at your Strava activities from the last 7 days and your running totals to gauge how hard you've been training.
  • Checks today's hourly forecast for your home location across morning, midday, and evening windows.
  • Picks the best outdoor window and recommends a sport and intensity that fits your current load, from easy run to intervals to long ride to rest day.
  • Books a Google Calendar event for the chosen window with the session plan in the description, or schedules a clearly labeled rest day if recovery or weather says so.
What do I need to use this?
  • A Strava account connected so we can read your recent activities and totals.
  • A Google Calendar login so we can create the event on your primary calendar.
  • Your home coordinates and preferred time zone so the forecast and event times line up with where you actually train.
How can I customize it?
  • Change the schedule to run earlier, later, or on weekends if your training week looks different.
  • Adjust the windows we consider (for example, only mornings if you never train after work) or the sports we rotate between.
  • Tune how aggressive the load logic is, so the brief leans more conservative during a build block or more ambitious during base season.

Frequently asked questions

Does this actually look at how tired I am?
It uses your last 7 days of activities plus your running totals from Strava as a proxy for accumulated load. If volume or intensity has been high, the brief leans toward an easy session or a rest day. It does not read HRV or sleep data.
What happens on a bad weather day?
If the forecast shows rain, extreme heat, cold, or high wind across every window, the brief will recommend an indoor swap or a rest day and label the calendar event accordingly instead of forcing you outside.
Will it overwrite an existing calendar event?
No. It only creates a new event in the recommended window. If that slot is already booked, you can either move the workout or let the brief pick a different window the next day.
Can I use a different calendar instead of my primary one?
Yes. You can point it at any Google Calendar you have edit access to, for example a dedicated Training calendar, when you set the workflow up.
Does it work for cyclists and swimmers too, not just runners?
Yes. The brief looks at all the sport types in your recent Strava activities and can recommend rides, swims, or cross training, with indoor alternatives when conditions do not cooperate.

Stop second-guessing today's workout.

Connect Strava, Weather, and Google Calendar once, and Geni books a smart session for you every morning before 6am.