Original Idea
Meeting Cost Calculator A browser extension that shows the real-time dollar cost of any calendar meeting based on attendee salaries, encouraging shorter, smaller meetings.
Product Requirements Document (PRD): CostlyMeetings
1. Executive Summary
CostlyMeetings is a high-performance browser extension and analytics platform designed to solve the "invisible cost" of organizational meetings. By integrating directly with Google Calendar and Microsoft Outlook, it provides real-time financial transparency to meeting organizers and participants. Leveraging 2026-standard security and real-time data streaming, CostlyMeetings empowers teams to make data-driven decisions about their time, reducing meeting bloat and recovering thousands of dollars in hidden labor costs.
2. Problem Statement
Organizations lose an estimated 15–20% of their collective salary budget to unproductive meetings. The primary cause is the "Invisibility of Cost": organizers view meetings as "free" because the labor expense is not quantified at the point of creation. This leads to over-invitation, excessive duration, and a lack of accountability for the financial ROI of synchronized time.
3. Goals & Success Metrics
- Goal 1: Provide immediate cost transparency during meeting creation and live calls.
- Goal 2: Maintain 100% security of sensitive salary data.
- Goal 3: Reduce average meeting duration across client organizations by 15% within 6 months.
Success Metrics:
- Adoption Rate: >70% of invited users install the extension within the first 30 days of organizational rollout.
- Behavioral Change: Average number of meeting attendees per event decreases by >10% over one quarter.
- Performance: <100ms latency for cost-ticker updates on calendar side panels.
4. User Personas
- Olivia (Operations Manager): Needs to track department-wide burn rates and identify "meeting-heavy" teams to optimize operational efficiency.
- Tim (Team Lead): Wants to justify shorter stand-ups to his team and avoid "meeting fatigue" while staying within a project’s billable hour budget.
- Ellen (Executive): Requires high-level visibility into total company spend on recurring meetings without seeing individual employee salaries.
5. User Stories
- As an Organizer, I want to see the projected cost of a meeting while I am adding guests, so I can reconsider if everyone’s presence is financially justified.
- As an Admin, I want to sync salary data from BambooHR automatically, so I don't have to manually update rates every time someone gets a raise.
- As an Attendee, I want the individual salary details to be hidden while still seeing the total meeting cost, to maintain privacy.
- As a Finance Lead, I want to export a monthly CSV of meeting costs per department to include in our overhead analysis.
6. Functional Requirements
6.1 Calendar Integration
- The extension must overlay a "Cost Ticker" on Google Calendar and Outlook Web.
- It must detect changes in attendee lists or meeting duration in real-time.
6.2 Salary Calculation Engine
- Support for manual hourly rate input or role-based averages (e.g., "Senior Engineer = $150/hr").
- Automatic currency conversion based on organization settings.
6.3 Real-Time Cost Ticker
- A live, counting ticker displayed during Google Meet or Zoom calls showing the dollar amount rising as the clock ticks.
6.4 Analytics Dashboard
- Historical breakdown of spend by department, meeting type, and organizer.
- Identification of "Top 10 Most Expensive Recurring Meetings."
6.5 Privacy & Permissions
- Role-based access control (RBAC) to determine who can see individual vs. aggregate rates.
- Option for "Zero-Knowledge" local storage of salary data for highly sensitive teams.
7. Technical Requirements
7.1 Frontend (Chrome Extension & Dashboard)
- Framework: React v19.2.1 (utilizing React Compiler 1.0 for auto-memoization).
- Styling: Tailwind CSS v4.1.x (utilizing the Oxide Rust engine).
- Extension Framework: WXT (utilizing Manifest V3).
- UI Standard: Native Side Panel API for persistent, non-intrusive overlays.
7.2 Backend & Infrastructure
- Runtime: Node.js v24.x (LTS).
- Database: PostgreSQL 16+ with Prisma v7.0 (utilizing the TypeScript-native/Wasm runtime).
- Real-time Data: Server-Sent Events (SSE) for cost-ticker updates.
- Background Jobs: AWS Lambda Durable Functions for historical calendar syncs.
7.3 API & Integrations
- Google Calendar API: Utilizing
syncTokenfor incremental delta fetches. - Microsoft Graph API: Utilizing
@odata.deltaLinkfor event-driven updates. - HRIS Sync: Integration with BambooHR and Workday APIs via custom Node.js middleware.
8. Data Model
| Entity | Attributes | Relations |
| :--- | :--- | :--- |
| Organization | id, name, currency, avg_rate_default, kek_id (Master Key) | Has many Users, Meetings |
| User | id, email, role, encrypted_salary, dek_blob (Encrypted DEK) | Belongs to Org |
| MeetingEvent | id, provider_id, start_time, end_time, total_cost | Has many Participants |
| Participant | meeting_id, user_id, hourly_rate_at_time | Link User to Meeting |
9. API Specification (Key Endpoints)
GET /api/v1/sync/calendar
- Description: Triggers incremental delta sync using
syncToken. - Response:
202 Accepted(Processes via BullMQ).
GET /api/v1/stream/cost/:meetingId
- Description: SSE stream providing the live cost increment based on active duration.
- Data Format:
event: update \n data: {"currentTotal": 450.25}
10. UI/UX Requirements
- Pattern: Use Shadow DOM v2 for all calendar injections to prevent style bleed.
- Visibility: The sidebar should only trigger when an "Event View" or "Event Edit" modal is active (using throttled
MutationObserver). - Dashboard: Use skeleton loaders for financial reports and Puppeteer for generating "Board-Ready" PDF summaries.
11. Non-Functional Requirements
- Security: Application-Level Encryption (ALE) with Envelope Encryption for all salary fields.
- Compliance: SOC2 Type II and ISO 27001 (2026 standards).
- Performance: Dashboard reports must generate in <2s for datasets up to 100,000 events.
- Accessibility: WCAG 2.1 Level AA compliance for all dashboard components.
12. Out of Scope
- Employee payroll processing or direct payment integration.
- Meeting transcription or AI summarization of meeting content (focus is strictly financial).
- Support for non-web calendar clients (e.g., legacy Outlook Desktop app).
13. Risks & Mitigations
- Risk: Salary data leak. Mitigation: Use Post-Quantum Cryptography (ML-KEM) and ensure the Node.js server never sees the master KEK.
- Risk: Extension slows down Calendar UI. Mitigation: Run all math in MV3 Service Workers and use the native Side Panel API to avoid DOM heavy-lifting.
14. Implementation Tasks
Phase 1: Foundation & Security
- [ ] Initialize WXT project with React 19.2.1 and Tailwind 4.1.
- [ ] Configure Prisma 7.0 with PostgreSQL 16.
- [ ] Implement Application-Level Encryption (ALE) module using AES-256-GCM and AWS KMS.
- [ ] Set up OAuth 2.1 flow with PKCE for Google/Microsoft.
Phase 2: Core Extension Development
- [ ] Implement Side Panel API UI for cost visualization.
- [ ] Build MutationObserver logic for Google Calendar event detection.
- [ ] Develop the real-time cost-ticker using Server-Sent Events (SSE).
- [ ] Create Shadow DOM wrappers for calendar detail injections.
Phase 3: Data Sync & HRIS
- [ ] Implement Google
syncTokenlogic for background event fetching. - [ ] Build Microsoft Graph
deltaLinksynchronization worker. - [ ] Create custom middleware for BambooHR webhook ingestion.
- [ ] Set up AWS Lambda Durable Functions for initial historical data ingestion.
Phase 4: Dashboard & Reporting
- [ ] Build React 19 dashboard for organizational cost analytics.
- [ ] Implement ExcelJS for formatted financial exports (.xlsx).
- [ ] Integrate Puppeteer for high-quality PDF report generation.
- [ ] Add "Privacy Toggle" logic for masking individual user data.
Phase 5: Launch & Compliance
- [ ] Conduct SOC2 Type II readiness audit.
- [ ] Finalize Chrome Web Store Manifest V3 submission.
- [ ] Implement weekly email summary cron job via Vercel Edge Workflows.
- [ ] Perform "React2Shell" vulnerability scan and finalize production build.