Work Intelligence
Tier: Pro/Agency | Type: User-Facing UI
Part of Client Retainer Intelligence & Tracking.
Overview
An analytics layer that turns raw activity log data into actionable operational intelligence. Surfaces patterns, risks, and insights as slides in the topbar stats ticker carousel, visible from every page. No manual tagging or extra inputs required -- everything is computed from existing logged hours, work types, and retainer settings.
Where It Appears
All intelligence surfaces in the topbar stats ticker -- a rotating carousel at the top of every page. The ticker auto-rotates every 6 seconds with manual arrow navigation. Clicking an arrow stops auto-rotation so you can read a specific slide.
The ticker also shows a slide counter (e.g., "5/18") and an info tooltip explaining how daily targets are calculated.
Intelligence Modules
Burnout & Compression Detection
Compares your required daily pace against your actual historical average to detect unsustainable workload compression.
| Slide | Triggers When | Color |
|---|---|---|
| "Required pace is 2x your average" | Daily target is 2x+ your 30-day average hours/day | Red |
| "Pace 50% above your average" | Daily target is 1.5-2x your average | Orange |
| "Pace 20% above your average" | Daily target is 1.2-1.5x your average | Yellow |
| "X heavy days ahead at Yh/day" | Daily target >= 8h with 3+ workdays left | Orange |
How it works: The system calculates your average hours per workday over the last 30 days (only counting days where work was actually logged). It then compares the current required daily pace against this personal baseline, not an arbitrary threshold.
Momentum Tracking
Compares your progress this month against last month at the same calendar point, and tracks work streaks.
| Slide | Triggers When | Color |
|---|---|---|
| "+X% ahead of last month at this point" | 10%+ more hours logged by this day vs. same day last month | Green |
| "X% behind last month at this point" | 5-20% fewer hours than last month at the same point | Yellow |
| "X% behind last month at this point" | 20%+ fewer hours than last month | Orange |
| "X-day work streak" | 5+ consecutive workdays with logged hours | Green |
| "X-day work streak building" | 3-4 consecutive workdays with logged hours | Green |
How it works: Queries total hours logged from the 1st of the current month through today, and compares against the same date range last month. Streaks count consecutive workdays (respecting the weekend toggle) where any hours were logged.
Client Silence Detection
Flags clients with active retainers but no recent work logged, helping distinguish operational delays from forgotten accounts.
| Slide | Triggers When | Color |
|---|---|---|
| "ClientName -- X days since last work" | 21+ days since last logged activity | Red |
| "ClientName -- X days since last work" | 14-20 days since last logged activity | Orange |
| "ClientName -- X days since last work" | 10-13 days since last logged activity | Yellow |
How it works: Queries the most recent activity log entry with a duration for each site. Shows up to 2 silent clients, sorted by longest silence first. Clients with no activity history are measured from their billing period start date.
Time Sink & Scope Creep Detection
Identifies clients consuming disproportionate shares of your total monthly hours and flags potential scope creep.
| Slide | Triggers When | Color |
|---|---|---|
| "ClientName consumed X% of hours this month" | Any single client accounts for 25%+ of total monthly hours | Purple |
| "ClientName at Xx allocated hours" | A client's logged hours are 2x+ their retainer quota | Orange |
How it works: Calculates each client's percentage of total hours logged this month. The scope creep detection compares actual logged hours against the client's retainer_hours quota. Only the worst offender is shown to avoid slide overload.
Work Category Breakdown
Shows how your time is distributed across different types of work.
| Slide | Triggers When | Color |
|---|---|---|
| "Time split: Website Work 34% - Meetings 22% - SEO 18%" | At least one work category has 5%+ of monthly hours | Gray |
How it works: Groups all activity log entries with duration by their work_type metadata field (from the Log Work modal). Shows the top 3 categories by percentage. Work types are mapped to friendly labels:
| Work Type | Display Label |
|---|---|
| phone_call | Phone Calls |
| client_meeting | Meetings |
| research | Research |
| seo | SEO |
| website_work | Website Work |
| dns_hosting | DNS/Hosting |
| email_correspondence | |
| competitor_analysis | Competitor Analysis |
| social_media | Social Media |
| design_work | Design |
| third_party_setup | Third-Party Setup |
| administrative | Admin |
| content_planning | Content Planning |
| google_ads | Google Ads |
| created | Content Creation |
| analyzed | Analysis |
Existing Ticker Slides
The intelligence slides appear alongside the existing operational slides in the ticker:
| # | Slide | Purpose |
|---|---|---|
| 1 | Daily target summary | "Work Xh today to stay on track" |
| 2 | Hours remaining | Total across all sites with days to deadline |
| 3 | Today's progress | Hours logged today vs. target |
| 4 | Urgent tier | Sites due in 1-3 days |
| 5 | Soon tier | Sites due in 4-7 days |
| 6 | On track tier | Sites with 8+ days remaining |
| 7 | Next deadline | Closest billing cycle closing |
| 8 | Cycles closing | Multiple cycles closing within 7 days |
| 9 | Completed sites | Sites with quota fully delivered |
| 10 | Overdelivered | Sites exceeding quota |
| 11 | Zero activity | Sites with 0h logged this period |
| 12 | Heaviest site | Site with the most hours remaining |
| 13 | Almost done | Sites within 2h of completion |
| 14 | Unreachable today | Daily target exceeds available hours today |
| 15+ | Intelligence slides | Compression, momentum, silence, sinks, categories |
Data Source
All intelligence is computed server-side in the /api/burnout-check endpoint. No additional API calls or database tables are needed -- everything uses the existing activity_log table, sites table (retainer settings), and users table (work schedule preferences).
Notes / Edge Cases
- Intelligence slides only appear when their conditions are met. A healthy, well-paced workload may show very few intelligence slides.
- Momentum comparison requires at least some hours logged last month. If last month has no data, a simpler "Xh logged this month so far" slide appears instead.
- The 30-day historical average only counts days where work was actually done (not zero-hour days), providing a realistic baseline.
- Client silence detection uses
json_extract(metadata, '$.duration_minutes') > 0to find the last real work entry, ignoring zero-duration system events.