aircall-agent-activity*
Live Unlock agent KPI dashboard pulling direct from AirCall. Active hours, contacts, conversion rate, leads per hour, leads per contact. For Tom. Werner sign-off pending.
E1 Job
The app reads live call and availability data from AirCall and surfaces a single-screen activity dashboard covering every active Unlock agent. Active hours are calculated as time in "available" or "busy" (on-call) status, excluding AirCall break and custom-away periods. Tom gets a net productive-hours figure, not a raw login-time total.
Five KPIs refresh every 60 seconds. No manual AirCall export required.
E2 Inputs
| Source | Data | Pattern |
|---|---|---|
| AirCall REST /v1/users |
Agent roster | On-load, 5 min cache |
| AirCall REST /v1/users/{id}/availability |
Status per agent (available / busy / break) | Poll 60s |
| AirCall REST /v1/calls |
Call records (duration, tags, agent) | Poll 60s, today filter |
| AirCall Webhooks optional uplift |
Live availability + call events | Push (reduces polling lag) |
| Pipedrive TBD | Lead conversion status | Daily batch if opted |
E3 Outputs
| Output | Destination | Freq |
|---|---|---|
| Live dashboard | Cowork artifact or hosted URL | Auto-refresh 60s |
| Active Hours | Dashboard tile (HH:MM) | Live |
| Contacts | Dashboard tile (integer) | Live |
| Conversion Rate | Dashboard tile (%) | Live / daily if Pipedrive |
| Leads / Hour | Dashboard tile (decimal) | Live |
| Leads / Contact | Dashboard tile (decimal) | Live |
E4 Integrations
V2.1 Position
Layer 3, ACID Suite / Sales Loop. Reads from Layer 5 (AirCall service connector, optionally Pipedrive). No writes to any canonical layer. Read-only posture confirmed.
AirCall REST API
Auth via API key (env config, not hard-coded). Rate limit: 60 req/min. Polling budget for up to 20 agents at 60s = within limit. At 30+ agents, polling auto-extends to 90s with no manual intervention.
Pipedrive (TBD, Option B)
REST API, /deals filtered by phone number match. Requires phone number format normalisation step. +0.5 Roy-days. Only if Werner selects Option B for conversion rate.
systems*
Element 5 shows data flow between systems. Element 6 shows actor responsibilities. Werner uses both for different questions.
werner sign-off*
Five decisions needed before this gets built. Built via Claude Code.