Calendar time audit dashboard with meeting cost estimates
Pick any week or month and see where your hours actually went: internal versus external, recurring versus one-off, and what each standing meeting really costs.
Build me a calendar time audit dashboard I open at the end of every week and every month to see where my time actually went. It runs on Aurinko for calendar data and Google Sheets for period-over-period tracking. This is a reporting surface I open on a rhythm, not something that runs on a schedule.
The main view starts with a date range picker with presets for this week, last week, this month, and last month, plus a custom range. When I pick a range, load my calendars with List Calendars and pull every event in the window with List Events In Range against each calendar. Time ranges are ISO 8601 with a timezone offset, so build them in my calendar's timezone rather than UTC. Both list operations paginate: they return a nextPageToken that you pass back as pageToken, and you must follow every page or long ranges will silently under-report. Use Get Calendar when you need a calendar's display name or timezone for labeling.
Break the total hours into the cuts I care about, each as its own card or section: internal versus external hours, decided by whether attendee email domains match my own; recurring series versus one-off meetings; hours per person; hours per outside company, grouped by attendee email domain; meetings I organized versus meetings I was invited to; after-hours and weekend time; and how much unbroken focus time was left over in the gaps between bookings. Aurinko has no contacts operations, so person and company grouping has to come from the attendee email addresses on the events themselves and the domains inside them, not from an address book.
Two counting rules are essential and I want them baked in. First, a single event with many attendees still only consumes one block of my time. Attendee lists are for grouping hours by person and company, never for multiplying my own total, and the per-person and per-company cuts should be clearly labeled as overlapping views of the same underlying hours so the sub-totals are not mistaken for a sum. Second, exclude declined events, all-day blocks, and out-of-office entries from the totals by default, with a single visible toggle to include them and recompute everything.
Give me a ranked biggest time sinks table showing the recurring series eating the most hours in the period. Group events into series by their recurrence identity, falling back to matching title plus organizer plus attendee set when the underlying provider does not expose a clean series id. Columns: series title, number of occurrences in the period, total hours, attendee count, my category tag, and estimated cost.
I set an hourly rate once in settings and the dashboard puts a cost estimate against each recurring series. Let me choose whether the cost reflects just my own hours or the whole room, meaning my hours multiplied by attendee count, since the whole-room number is usually the stronger argument for killing a standing meeting. The rate is app-side persistence, not a calendar field.
Every number on the dashboard should be clickable and drill into the underlying events behind it, showing date, time, duration, organizer, and attendees for each one. From that drill-down I want to act: shorten a series or change its cadence with Update Calendar Event, and cancel one outright with Delete Calendar Event. Confirm destructive actions before they run, be explicit about whether the change hits one occurrence or the whole series, and refresh the affected numbers afterward. Aurinko events use ETag optimistic concurrency, so an update needs the current record's ETag in the If-Match header. On a 409 mismatch, refetch the event and retry rather than surfacing a raw error.
Let me tag any recurring series with a category of my own, such as client work, internal sync, one-on-one, or interviews. Store these tags app-side keyed to the series identity so the label sticks for future periods and I only ever tag a series once. Add a category breakdown to the dashboard alongside the other cuts, and let me manage the category list itself.
Add a button that appends the period summary to a tracking spreadsheet with Google Sheets Append Values: the period start and end, total hours, internal and external hours, recurring and one-off hours, organized versus invited hours, after-hours and weekend hours, focus time, meeting count, and total estimated cost. Read that sheet back so the dashboard can show this period against the last one with deltas, plus a trend line over all recorded periods. Let me point it at an existing spreadsheet, or offer to create one with the right headers on first use. Guard against appending the same period twice, and let me overwrite a period's row if I rerun the audit after cancelling something.
Settings should hold my own email domain for the internal versus external split, my hourly rate and cost mode, what counts as after hours and which days are my weekend, my category list, and the tracking spreadsheet. Everything must work identically whether the calendar lives on Gmail, Office 365, Exchange, iCloud, or IMAP, so lean on the unified calendar surface and degrade gracefully when a provider does not return a field like recurrence or response status rather than failing the whole view.
Long date ranges mean a lot of pages of events, so show real loading progress while a period is being pulled and make the numbers feel fast once loaded. The point of the dashboard is a calibration check between where I think my time goes and where it actually went, so lead with the headline hours and the biggest time sinks rather than burying them under configuration.
What does this prompt do?
- Pulls every calendar your account can reach and every event in the date range you pick, then breaks your time into the cuts that matter: internal versus external, recurring series versus one-off meetings, hours per person and per outside company, meetings you organized versus ones you were invited to, and after-hours or weekend time
- Ranks your biggest time sinks so you can see which standing meetings eat the most hours, and puts a dollar cost against each one based on an hourly rate you set once
- Shows how much unbroken focus time was left between bookings, so you can see what the meeting load actually costs your deep work
- Lets you click any number to see the underlying meetings, then shorten or cancel a dead-weight series right from the drill-down
- Saves each period summary to a tracking spreadsheet so the dashboard can compare this week or month against the last one and build a trend over time
What do I need to use this?
- A connected work calendar. It works the same whether your calendar lives on Gmail, Office 365, Exchange, iCloud, or IMAP
- A Google account with a spreadsheet you want to use for period-over-period tracking, or let the app create one for you
- Your own email domain, so the app can tell internal meetings apart from external ones
- An hourly rate you are comfortable using for meeting cost estimates. You set this once and can change it any time
How can I customize it?
- Change the default date range to match your rhythm, whether you review weekly, monthly, or by quarter
- Adjust what counts as after hours and which days count as your weekend
- Decide whether declined meetings, all-day blocks, and out-of-office entries stay excluded from your totals or get counted in
- Set your own categories for recurring meetings, such as client work, internal sync, one-on-one, or interviews, and the labels stick for future periods
- Change the hourly rate used for cost estimates, or set different rates for different kinds of work
FAQs
Does this work if my calendar is not on Google?
How does it know which meetings are internal versus external?
Will a big meeting with twenty people inflate my numbers?
Do meetings I declined count against my time?
Can I actually cancel a meeting from the dashboard?
How does the cost estimate work?
Related templates
Stop buying stale lists. Reps run a saved search, work the results like an inbox, and only the accounts they approve ever reach your CRM.
Drag creators through Sourced to Wrapped on a board grouped by campaign, with audience stats on every card and a one-click brief for each creator.
Pick a repricing rule, send an assistant out to check competitor pages, then approve the new prices that clear your margin floor.
See the projected bounce rate for any outbound send before it goes out, and keep the launch button locked until the list is clean enough to be safe.
Pick any date range and see what each device in your home actually cost to run, not just how many kilowatt-hours it used.
Search three months of global coverage on your topic, rank the outlets actually writing about it, and draft a tailored pitch for each one.
Find out where your week actually went.
Stop guessing about your meeting load. Get the real breakdown, the cost of every standing meeting, and a one-click way to cancel the ones that are not worth it.