FTE × hours/day × days/weekThe source stays in Engagement and syncs into Creative through filtered views. All calculation happens locally in Creative.
Created ≥ 1/6/2025Action Time ≥ 1/6/20252. Cr. In Progress · 2. Cr. ReWork · 3. Review Output · 4. Ready to ScheduleBoth views must keep the same start date. If they drift apart, events lose their task or tasks lose their events, and both drop out of the report.
Each measure is read from the event history, not from the task's current status. That is how we know when each step actually happened.
The Task ID in the event history changes when the task type changes, so matching on the full text failed for 227 events. Pasting links by hand also stops at a row limit.
TSK field = REGEX_EXTRACT({Task ID}, "TSK[0-9]+"), a stable key that never changes| Field | Computed from History | Meaning |
|---|---|---|
| Actual Start | MIN · In Progress | first handoff to Creative |
| Last Creative Event | MAX · In Progress / ReWork | last time it was with Creative |
| Last Review Output | MAX · Review Output | last delivery for review |
| Last Ready | MAX · Ready to Schedule | fallback delivery |
| Last Rework | MAX · ReWork | last send-back |
| Review Rounds | COUNT · ReWork | number of revision rounds |
A delivery doesn't count if the task went back to Creative after it. Ready to Schedule was added because 112 published tasks skipped Review Output and would have been misread as rework.
Every task gets exactly one of 7 classifications. Only OK · Ready for reporting counts in the metrics; the rest are shown under data quality.
A formula shown as a single-select silently falls back to the default option when its text doesn't exactly match an option name. We caught this on 149 tasks and fixed it.
The built-in WORKDAY_DIFF assumes a Saturday–Sunday weekend. So we built a formula that reads each team's own working days from Local Teams.
Wait Span (Days): calendar days in Qatar timeStart Weekday: weekday of the creation date (0 = Sunday)Checked on 1,306 tasks against an independent calculation: 0 mismatches.
Standard hours come from the task type, and count only for the tracks the task actually needs.
| Team | Members | Days | h/day | Weekly |
|---|---|---|---|---|
| Engagement Creative | 3 | Sun → Thu | 8 | 120 h |
| App Artwork | 2 | Sun → Thu | 8 | 80 h |
The team lead isn't counted in capacity, because Members Count only counts members. This can be revisited with the Creative manager.
| Automation | Trigger | Action |
|---|---|---|
| RQ2690 | Link Event to Task | A History event whose Tasks link is empty and TSK is filled | Finds the task where TASK ID = TSK, then fills Tasks |
| RQ2690 | Link Producers – New | A task with Producer Names and an empty Producers link | Fills Producers from Producer Names by name match |
| RQ2690 | Link Producers – Changed | When Video Producer or Design Producer is edited (only those) | Refills Producers from Producer Names |
The Changed automation watches the two producer fields only, so its own update to Producers never re-triggers it.
For existing records we switched the trigger formula to "" and back, so they matched the condition again and the automation ran on them.
The vertical line marks full capacity.
| What we checked | Scope | Result |
|---|---|---|
| Start, delivery and rounds rollups | all tasks | 0 mismatches |
| Actual Delivery logic | all tasks | 0 mismatches |
| Producer → person links | 4,506 | 4,506 / 4,506 |
| Wait Span · Weekday · Work Days | 1,306 | 0 mismatches |
| Weekly capacity | 2 teams | 120 h · 80 h |
| Every dashboard figure | 15/9 → 12/10 | exact match |
The first AI-generated (Omni) version of the dashboard read 5 wrong fields: publish date instead of delivery, wait instead of cycle time, capacity instead of review rounds… and showed 1,439% utilization.
We rewrote the element by hand with fixed field IDs, and made it show a clear error if it can't read a field, instead of silently showing wrong numbers.
Each of the 36 fields we created carries a description of what it computes, its source and who uses it, prefixed RQ2690 |.