The idea
A lightweight menu bar app (macOS and Windows) that reads your calendar, detects when you're in a meeting, and shows a live-ticking dollar figure — the running cost of that meeting based on attendee count and their hourly rate. Click it for a breakdown: who's in the room, what each person's time is worth, and how the total compares to the meeting's stated purpose. At the end of the week or month it rolls everything up into a report: total hours spent in meetings, total cost, and which recurring meetings are the most expensive habits on the calendar.
Why build this
Nobody sees the cost of a meeting because it never shows up on an invoice — it's just calendar time, which feels free. Every team has at least one recurring meeting that everyone privately agrees is too long or has too many people in it, but there's no number to point at to make the case for cutting it. A live cost ticker turns an abstract complaint ("this meeting is a waste of time") into a concrete one ("this meeting costs $38,000 a year and produces a five-line status update"). It's the same trick expense-tracking apps use for spending: visibility changes behavior even without enforcement. Now is a reasonable time to build it because calendar APIs (Google Calendar, Microsoft Graph) expose attendee lists cleanly, and most teams already have rough salary bands in an HR tool or spreadsheet that can be imported once.
Stack sketch
- Menu bar shell: Electron with
menubarfor cross-platform packaging, or a native Swift app for macOS-only v1 to keep it small and fast - Calendar integration: Google Calendar API and Microsoft Graph API (read-only, current + next event, attendee list)
- Local storage: SQLite for meeting history and rate configuration, no server required
- Rate model: per-person hourly rate entered manually, imported from a CSV, or estimated from a role → band mapping (e.g., "senior engineer" → $85/hr) set once at onboarding
- Reporting: a small local web view (served from the app itself) rendering weekly/monthly rollups with Chart.js
- Optional team mode: a lightweight sync server (Node + Postgres) for teams that want a shared dashboard instead of per-person local data
Scope for v1
- Menu bar ticker for the current meeting, pulling attendee count from the connected calendar
- Manual or CSV-imported hourly rates, no HR system integration
- Local-only storage and reporting, single user
- Simple end-of-week summary: total meeting hours, total cost, top 5 most expensive meetings
- Out of scope for v1: team-wide dashboards, Slack/email digest delivery, automatic role-to-rate inference, timezone-aware multi-region rate blending
Where it could go
The natural next step is a team mode: an opt-in shared dashboard where a manager can see aggregate meeting spend across their org without seeing individual salaries (rates get bucketed into bands before syncing). From there, a "meeting audit" report becomes a real feature — surfacing recurring meetings with declining attendance-to-cost ratios, or meetings that have crept in length over the past quarter. A further expansion is calendar-side nudges: before you invite twelve people to a 3pm sync, the app could show the projected hourly cost right in the calendar composer, the same way a shopping cart shows a running total before checkout.
Watch out for
Salary data is sensitive, so anything beyond single-user local mode needs careful handling — band-based estimates rather than exact figures, and no raw compensation numbers leaving the user's machine unless they explicitly opt into a synced team mode. There's also a UX tightrope: the goal is gentle awareness, not a guilt meter flashing red at people mid-meeting, so the default view should stay understated.