AI Agents Durations Daily¶
Table: WBP_DB.GOLD.RPT_AI_AGENTS_DURATIONS_DAILY
Materialization: View (zero storage)
Replaces: OPERATIONS.AGGREGATE.WARBYPARKER_RPT_AI_AGENTS_DURATIONS_DAILY
Overview¶
Daily duration report for AI-enabled Warby Parker agents. Tracks time spent in each status type (ACTIVE, ACW, AWAY, etc.) broken down by agent, date, type, and context. Includes CONTEXT_COUNT to enable average duration per context calculations (e.g. ACW by context type).
Audience: Operations analytics, Tableau dashboards, QA/coaching workflows.
Data Sources¶
| # | Source | Purpose | Join Key |
|---|---|---|---|
| 1 | Gladly API AgentDurationsReportV2 |
Primary — raw status span records | — |
| 2 | CORE_DB.SILVER.ROSTER_WARBYPARKER |
BambooHR roster — provides DIRECT_LEADER |
GLADLY_NAME = AGENT |
| 3 | dbt seed ai_agents.csv |
Static AI agent list — provides WAVE assignment |
AGENT_NAME = AGENT |
Pipeline / Data Flow¶
flowchart LR
A[Gladly API\nAgentDurationsReportV2] -->|Airflow extract| B[S3 Ingest\nagent_durations_DATE.csv]
B -->|Copy-then-Peek| C[S3 Stage\nstandardized headers]
C -->|COPY INTO\nbatch_replace| D[WBP_DB.BRONZE\nGLADLY_AGENT_DURATIONS]
D -->|dbt incremental| E[WBP_DB.SILVER\nAGENT_DURATIONS]
E -->|dbt view| F[WBP_DB.GOLD\nRPT_AI_AGENTS_DURATIONS_DAILY]
G[CORE_DB.SILVER\nROSTER_WARBYPARKER] -->|LEFT JOIN| F
H[dbt seed\nai_agents.csv] -->|INNER JOIN| F
Schedule & Refresh¶
| Property | Value |
|---|---|
| Airflow DAG | warbyparker_gladly_daily |
| Schedule | 50 6 * * * — 6:50 AM EST, every day |
| Time window | Previous day's data (lag: 1 day) |
| Timezone | America/New_York |
| Retries | 2 × 5 min |
| Bronze strategy | batch_replace (DELETE WHERE BATCH_ID + COPY INTO) |
Target Endpoint¶
WBP_DB.GOLD.RPT_AI_AGENTS_DURATIONS_DAILY
Materialized as a view — no storage cost; queries compute on demand from Silver. Part of the Gold report layer (rpt_ prefix convention).
Column Reference¶
| Column | Type | Source | Description |
|---|---|---|---|
DATE |
DATE | Silver (start_time::DATE) |
Date of agent duration activity |
AGENT |
VARCHAR | Gladly API | Agent name from status span record |
WAVE |
VARCHAR | dbt seed ai_agents.csv |
AI wave assignment (Wave 1 / Wave 2) |
DIRECT_LEADER |
VARCHAR | ROSTER_WARBYPARKER.GLADLY_NAME |
Agent's direct leader from BambooHR (nullable) |
TYPE |
VARCHAR | Gladly TYPE_FIELD |
Duration type — ACTIVE, ACW, AWAY, etc. |
CONTEXT |
VARCHAR | Gladly CONTEXT |
ACW sub-type context; null for non-ACW types |
TOTAL_DURATION_MIN |
FLOAT | Computed | Sum of duration_mins per agent/date/type/context group |
CONTEXT_COUNT |
INTEGER | Computed | Row count per group; used for average: total_duration_min / context_count |
Metrics Computed¶
| Metric | Formula | Use Case |
|---|---|---|
TOTAL_DURATION_MIN |
SUM(duration_mins) per group |
Total time in a status type per day |
CONTEXT_COUNT |
COUNT(*) per group |
Denominator for avg duration per context |
| Average duration per context | TOTAL_DURATION_MIN / CONTEXT_COUNT |
Compute in BI layer (Tableau) |
Duration types (from Gladly TYPE_FIELD): ACTIVE, ACW, AWAY, and others as returned by the API.
Context is populated only for ACW rows, providing the sub-type breakdown (e.g. wrap-up reason codes).
AI Agents in Scope¶
The view uses an INNER JOIN on the ai_agents seed — only agents in this table appear in results.
Wave 1 — Enabled 2026-01-21¶
| Agent |
|---|
| Angelica Madrid |
| Aubrey Sombilon |
| Dianne Grace Emar |
| Kyna Montorio |
| Mariel Perez |
| Michael Louis Cavile |
| Myrna Gabion |
| Rodmer De Los Reyes |
| Sanshe Surmieda |
| Terence John Haro |
Wave 2 — Enabled 2026-02-02¶
| Agent |
|---|
| Anjanette Baytos |
| Carlo Gian Chin |
| Fritz Joshua Fernandez |
| Jeffrey Sormillo |
| Joseph Torrena |
| Raffy Tampos |
| Shaina Rica Palmares |
Known Limitations / Notes¶
- Non-AI agents excluded: The
INNER JOINonai_agents.csvmeans any agent not in the seed will not appear in this view, even if they have duration data in Silver. DIRECT_LEADERcan be null: The roster join is aLEFT JOIN— agents not matched inROSTER_WARBYPARKERwill havenullforDIRECT_LEADER.- Wave assignment is static: Wave and enablement date come from the dbt seed file, not a live HR system field. Updates require a seed file change and dbt re-run.
- Context is sparse:
CONTEXTis only populated forACWtype rows. All other types will shownullfor context. - View latency: This is a view — data reflects the most recent Silver state. Silver is updated by the daily Airflow DAG at ~6:50 AM EST (previous day's data).