Weekly time-allocation report from Google Calendar every Friday at 5pm

Geni reads the past seven days of your Google Calendar, categorizes every meeting with AI, logs hours per bucket to a Google Sheet, and posts a narrative weekly summary to Slack.

Agentic Task
Google CalendarGoogle SheetsSlackPersonal ProductivityOperationsAI ReportsDaily DigestsMeeting Workflows
PromptCreate

I want a weekly time-allocation report that shows where my hours actually went, delivered every Friday at 5pm America/New_York. Trigger this on a cron schedule.

When the workflow runs, call Google Calendar List Events for the past seven days on my primary calendar. Pull the start time, end time, title, attendees, color, and description for each event. Skip all-day events and any event I declined.

For every remaining event, categorize it into one of these buckets: Customer meetings, Internal sync, Recruiting, 1:1s, Focus time, Personal. Use a combination of signals: attendee email domains (external domains that are not mine count as Customer), title keywords (interview or candidate maps to Recruiting, 1:1 or one on one maps to 1:1s, focus or block or deep work maps to Focus time), and event color when present. If a meeting is ambiguous, use your judgement and pick the closest bucket.

For each bucket compute total hours (sum of durations) and meeting count. Also identify the three longest meetings of the entire week across all buckets, with title, duration, and bucket.

Then call Google Sheets Append Values on the Time Tracking tab of my time tracking spreadsheet. Append one row per bucket with these columns: date (the Friday the report covers, ISO format), bucket name, hours (one decimal), meeting count. Include all six buckets even if hours are zero, so the data accumulates cleanly over time.

Before posting the summary, call Google Sheets Get Values on the Time Tracking tab to read the prior weeks of data. Compute week-over-week deltas per bucket (this week's hours minus last week's hours) and identify the bucket with the largest absolute change.

Finally, call Slack Send a Message to post a short narrative summary to my personal Slack channel. The message should include: a one-line headline with total tracked hours, a clean bucket breakdown (bucket: hours, meeting count, delta vs last week with arrow), the three longest meetings of the week, and a one-line observation that calls out where I spent more or less time than usual based on the largest delta. Keep the tone direct and skimmable.

What does this prompt do?

  • Runs every Friday at 5pm ET on a cron trigger and pulls the past seven days of events from your primary Google Calendar.
  • Uses AI to categorize each meeting into buckets like Customer meetings, Internal sync, Recruiting, 1:1s, Focus time, and Personal based on attendee domains, title keywords, and event color.
  • Logs one row per bucket to a Time Tracking tab in Google Sheets so hours and meeting counts accumulate week over week.
  • Posts a short narrative Slack summary to your personal channel with the bucket breakdown, the three longest meetings, week-over-week deltas, and a one-line observation about where your time shifted.

What do I need to use this?

  • A connected Google Calendar account with read access to your primary calendar.
  • A connected Google Sheets account and a spreadsheet with a tab named Time Tracking (columns: date, bucket, hours, meeting count).
  • A connected Slack account and the channel or DM where the weekly summary should land.
  • A rough sense of your bucket definitions (which attendee domains count as customers, which titles map to recruiting, etc.) so the agent can categorize accurately.

How can I customize it?

  • Change the cadence or delivery time (Sunday night, Monday 8am, daily instead of weekly) by editing the cron trigger.
  • Add, remove, or rename buckets and tune the categorization rules (domains, keywords, colors) to match how you actually work.
  • Swap the Slack destination for a Notion page, an email digest, or a different channel, and adjust the narrative tone or length.

FAQs

How does the agent decide which bucket a meeting belongs to?
It combines three signals: attendee email domains (external customer domains vs your own), event title keywords (interview, 1:1, focus, sync), and event color if you color-code your calendar. You describe your buckets in plain English and the agent applies judgement to each event.
Does this work with multiple calendars or just my primary?
The default reads only your primary calendar. You can extend the prompt to include additional calendars by name, and the agent will merge events across them before categorizing.
Where do the week-over-week deltas come from?
From the Time Tracking tab itself. Each Friday the agent appends new rows, then reads back recent prior rows to compute changes per bucket and call out the largest shift.
Can I get this as an email instead of a Slack message?
Yes. Replace the Slack step with a Gmail Send Email step in the prompt and the workflow author will wire it up the same way.
What if I take vacation or have a slow week?
Buckets with zero hours are still logged so the sheet stays consistent, and the narrative will note the lighter week instead of inventing trends.

Related templates

Auto-fix your calendar when a flight slips, and flag what's at risk

When your flight moves, your calendar times get corrected automatically and you get a Slack note naming the meetings you're about to miss.

Google Calendar
AviationStack
Slack
Agentic Task
Trace phishing emails to the sending IP and report abuse

Every 15 minutes, forwarded phishing reports get traced back to the server that really sent them, with a verdict in Slack and the worst senders reported.

AbuseIPDB
Gmail
Slack
Agentic Task
Weekly Amazon S3 bucket security audit posted to Slack

Every Monday, check every S3 bucket for public exposure, missing encryption and weak backup settings, then get the risks ranked in Slack.

Amazon S3
Slack Bot
Google Sheets
Agentic Task
Turn procurement portal tenders into CRM deals each morning

Every weekday at 7am, sign in to the tender portals you track, filter new notices against your bid criteria, and open a deal for the ones worth chasing.

Anchor Browser
Google Sheets
HubSpot
+1
Agentic Task
Draft polite follow-ups for emails that never got a reply

Every weekday at 4pm, spot the threads that went quiet, stage a ready-to-send nudge in your mailbox, and get a ranked Slack recap.

Aurinko
Google Sheets
Slack Bot
Agentic Task
Turn each week's football fixtures into a venue staffing plan

Every Monday, rank the week's matches by expected demand, put the big ones on your venue calendar, and post a rota-ready summary to Slack.

API-Sports
Google Calendar
Slack
Agentic Task

See where your week actually went.

Connect Google Calendar, Google Sheets, and Slack once, and Geni delivers a categorized time-allocation report every Friday at 5pm.