Home  /  Projects  /  Live Operations Dashboard ← All six case studies

In plain English: Managers could not see productivity, quality, turnaround and SLA exposure in one place. I built a single rule-driven screen over the existing live data. The report states plainly that managers received it positively but did not adopt it into their routine; it remained my own supervision view.

Executive Project Case Study

One Screen to Run the Day

A live operations dashboard for an 80-performer verification department — built in Google Apps Script to turn scattered live data into a single, rule-driven supervision view for productivity, quality, SLA exposure and performer status.
Khaled Medhat Mahmoud · Team Leader, Case Validation
Global Primary Source Verification Provider · Education-document verification operation
Built and deployed April 2026 · Maintained and used continuously
Scope note. This case study describes a working internal application. Company, client and employee identities, case records, internal links, credentials and source code are excluded. All interface views shown here are illustrative mockups built for this document, not screenshots of the deployed environment; the values inside them are synthetic.
A · Executive snapshot

One dashboard for a department that runs on live operational data

Business problemThe operating picture for an 80-performer department was split across live working sheets, daily reporting outputs and separate turnaround reports. A manager had to locate and reconcile productivity, quality, TAT and error data before supervision could begin, and feedback on errors and SLA exposure usually arrived the next day.
My role and contributionTeam Leader, Case Validation. I defined the operational requirements, wrote the decision rules and thresholds, configured the SLA and target logic, designed the three views and the per-performer drill-down, built and deployed the application in Google Apps Script with AI-assisted code generation, and I am its only daily user.
SolutionA three-view web dashboard — Live Monitor (per-performer output by task type, hourly throughput, average case time, true shift hours, live status, SLA exposure), Productivity and Quality — with rule-based flags, click-through per-performer detail, date-range selection and CSV export on every view.
Methods and toolsGoogle Apps Script (web app, rules engine, aggregation, export), the existing live Google Sheets working sheets, the existing daily analytics outputs for whole-month views, and AI-assisted implementation under my direction.
Project statusImplemented and deployed in April 2026, continuously maintained and used by me since. Demonstrated to the operational managers, who responded positively; it was not adopted into their daily routine and remains my own supervision view.
Verified outcomesNo audited before-and-after measurement exists. The value is documented as observed operating change — inactive performers detected, same-day errors corrected before recurrence, rushed pace flagged, cases pushed before their turnaround expired — plus one owner estimate: roughly 70% less time spent locating and reconciling the same information.
Important limitationsNo measured baseline or time study; the 70% figure is an estimate from daily experience. The access layer was not independently security-audited. Thresholds need contextual interpretation because case mix and waiting time affect both output and duration. The board reports and prioritises; it does not make performance decisions.
80
Performers covered, all stages
3
Views: Live Monitor, Productivity, Quality
7
Automatically evaluated management rules
~70%
Owner estimate: time to assemble the daily view
0
New data sources or API calls created

The operating context

My team verifies education documents. A case arrives against a client, is validated, may require an insufficiency follow-up, may be corrected after a quality finding, and sometimes has to be answered back to the applicant. Every case carries a turnaround commitment that is defined by client, stage and case type, and every client carries a daily target. The department of 80 performers works in parallel across Validation, Insufficiency, Error Correction, Post, applicant responses and additional assigned tasks.

All of that data already existed, and most of it was already live: the validation and insufficiency working sheets carried the case records and the elapsed-time fields that the team itself maintained. The daily reporting workflow, the client and stage SLA rules, the error taxonomy and the daily analytics outputs had been built in earlier work.

What did not exist was anywhere to see those signals together, while the day was still running. The reporting layer was retrospective by design: it described yesterday well and told me nothing about the performer sitting three cases away from a breach at 14:00.

The problem I set out to solve

Not "produce more reports" — the reports existed. The problem was composition: no single place combined productivity, pace, quality, case duration, live status and turnaround exposure into one prioritised list, and no rule applied those signals automatically, so every one of them had to be interpreted by hand before I could decide who needed attention.

B · Executive summary

What I built, and what it changed

I built a live operations dashboard in Google Apps Script that gives one manager a single screen for an 80-performer department: who is working, who is not, who is moving too fast, which cases are approaching their turnaround limit, and which errors were made today — with every signal classified automatically by rules I defined.

How it works

The dashboard creates nothing and fetches nothing new. It reads the same live working sheets the team works on, so its figures move as the sheets move — continuously, without a manual refresh. For whole-month views it reuses the daily analytics outputs my reporting workflow already produces. A rules engine sitting between the data and the screen does the interpreting: minutes since the last recorded case completion become a live status; hourly throughput is compared with the expected pace and with the pace at which quality is actually achievable; each open case is measured against the SLA rule for its client, stage and case type; and errors logged today are grouped by stage, field and category.

What I personally contributed

What it changed

Before the dashboard, my supervision routine began with assembling a picture: open the live validation sheet, open the live insufficiency sheet, find the quality numbers, check the turnaround report, then reconcile them. Feedback on an error made at 11:00 typically reached me through a report cycle. After it, the board is the first thing I open, the signals are already classified, and the questions arrive while they are still answerable — who has gone quiet, who is rushing, which case is about to expire, which rule did this performer misread this morning.

I estimate that consolidating the required information into one place removed roughly 70% of the time I used to spend searching for the right sheet and re-reading the same numbers. That is my own estimate from daily experience, not a measured time study, and I present it as such. What I can state as observed is behavioural: I now detect an inactive performer within the half hour the rules allow instead of noticing it later in the day; I raise a same-day error with the performer while the case is still fresh; and I catch rushed work before it reaches quality review.

Where the project stands

The application is complete and in daily use by me, and it has not been adopted company-wide. I demonstrated it to the operational managers, who responded positively to it, but it was not taken into their routine, so it continues as my own supervision view. I am explicit about this: the claim in this document is a working tool that a manager uses every day, not an organisation-wide rollout.

C · Business context and problem definition

The operating picture was scattered, and the feedback was late

How work actually ran

Each performer works from their own case records, maintained in the live working sheets, across the stages that apply to the client and case type. Two things make a supervisor's job harder than simply counting cases. First, a case is not one event: it is a start, a wait, a decision, and a closure, and the elapsed time that matters includes the waiting. Second, the same performer is doing several kinds of work at once — validation cases, first- and second-level reviews, applicant responses, additional assigned tasks — so a single total tells a manager very little.

Who was affected, and how

StakeholderConsequence of the pre-dashboard situationEvidence status
Team leader (me)The first part of the day went into assembling and reconciling the view before any supervision could start; feedback on errors and turnaround exposure arrived with the report cycle rather than with the case.Observed
Performers (80)A performer who went quiet, or started rushing, or misread a rule, was identified late — so coaching happened the next day instead of the same morning.Observed
ClientsTurnaround commitments are defined per client, stage and case type with daily targets; without a live view of cases approaching those limits, exposure was only visible once it had been met.Reported
ErrorsError information existed, but the manager had to retrieve it separately to know which rule a performer had misread today.Reported

Constraints that shaped the solution

D · Data discovery and root cause analysis

The data was never the problem — the absence of composition was

My first step was to inventory what already existed rather than to request new data: the live validation and insufficiency sheets and the elapsed-time fields within them, the quality and productivity daily records, the client and stage SLA rules, the daily target per case type and stage, the error taxonomy used in Post, Validation and Insufficiency, and the daily analytics outputs already produced by my reporting workflow. The conclusion was that the department was already data-rich and report-poor: the signals existed, but nothing joined them into a decision.

Symptom I observedContributing factorUnderlying cause
"I could not tell who was stuck without checking each sheet."Signals for productivity, pace, quality and duration lived in different views.The reporting layer was built to describe a period after it had finished. Nothing in the stack translated live operational records into a prioritised list of who needed attention, so the manager had to do that translation manually, every morning, with no rules applied.
"I discovered the error after the day was over."Error information was retrievable but not surfaced in the working context.
"A case was close to its limit and I found out afterwards."SLA rules existed per client and stage but were applied to records, not surfaced as live exposure.
"I could see that someone was fast, but not whether that was good."Output was counted without a defined pace benchmark or a quality-linked threshold.
Root cause statement

Supported by the inventory: the operating data was complete and live, and the reporting workflow was sound for retrospective analysis. The gap was a missing composition and classification layer between those records and the manager's decision. This is the cause the project targets, and it is directly testable: if the layer is added, the signals arrive already ranked, and the manual translation step disappears.

I did not treat this as a quality problem in the performers, a client problem, or a sheet-layout problem. The evidence pointed to a supervision-visibility problem, and the solution was built to address exactly that.

E · Solution design and AI-directed development

One application, three views, one rules engine

EXISTING OPERATIONAL DATA Live validation sheet cases + elapsed-time fields Live insufficiency sheet cases + elapsed-time fields Quality & productivity daily records, error taxonomy Daily analytics outputs whole-month productivity & quality SLA rules per client / stage / case GOOGLE APPS SCRIPT WEB APP Read layer pulls today from the live sheets Rules engine status, pace, SLA exposure, errors Aggregation per performer, per hour, per day View services drill-down, date range, CSV export Access scoping manager view / all-team view DASHBOARD VIEWS 1 · Live Monitor today's output, pace, TAT, status, SLA 2 · Productivity daily and monthly output, on-time rate 3 · Quality errors by stage, field and category Management decision contact · re-task · coach pace · correct the rule now · clear the blocker read serve same day the sheets keep being the record of record
Figure 1 — Reconstructed data flow. The dashboard reads the existing live sheets and the existing analytics outputs; it creates no new data and calls no external API. Reconstructed diagram

Design decisions I made

AI-directed development

My method was to specify the operational logic in language a reviewer could check, then direct AI to implement it inside Google Apps Script, then test the behaviour against the live sheets and correct what did not match. The rules, thresholds, SLA logic, view structure and interaction design were mine; the code was produced with AI assistance and reviewed by me against the behaviour I had specified and against the behaviour I could observe in the live sheets. Where output diverged from the specification, I corrected the rule, not the expectation — several of the persistent defects were analytical rather than syntactic, for example the treatment of waiting time inside a case duration and the boundary conditions of the 15 and 30 minute status bands, and the corrections came from testing against real records. Every feature added after the first release — the per-performer drill-down and the productivity trend graph — came from using the board in a real shift and noticing what was missing.

E · Solution design — the Live Monitor

The main screen: a live view of the whole team

The Live Monitor opens on the current shift. A summary band at the top carries the shift-level figures — how many performers are active, how many validation and insufficiency cases are being worked in the hour per performer, and the team's average TAT. Below it, one row per performer shows the day's output split by task type, the total, the hours the performer actually worked, and the live status. A performer name is a link: it opens that performer's cases, errors, average TAT and shift hours for the day. The left rail carries the three dashboard tabs, a date-range control and the CSV export.

Operations Dashboard  ·  Live Monitor
Date range: Today  |  Export CSV  |  Signed in: K. Medhat (all-team view)
Views
1 · Live Monitor
2 · Productivity
3 · Quality
Controls
Date range
Export CSV
54 / 80
Performers active on shift
312 / 5.8
Validation + insufficiency cases in this hour — team / per performer
38 min
Average TAT of performers today
3
Inactive beyond 30 min
PerformerValidation1st & 2nd LevelApplicant Responses Add. TaskTotal CasesTrue Shift HoursLive Status
P-014 ▸11421184.1Active
P-021 ▸9310133.8Active
P-033 ▸12502194.3Idle 18m
P-047 ▸14610214.2Idle 27m
P-052 ▸310043.5Inactive 41m
P-066 ▸7231133.9Active
P-071 ▸10411164.0Active
P-088 ▸621093.7Active
P-091 ▸510063.6Inactive 36m
Hourly throughput — team average per performer
rushed band > 10 / hour low band < 4 / hour 091011 121314 1516 357 686 55.8
Cases closed per hour, team average per performer Rushed threshold (> 10/hour) Low-output threshold (< 4/hour)
Turnaround exposure — cases approaching or past SLA
CaseClientStageElapsedSLAStatus
CR-88421Client AValidation3 h 12 m4 hApproaching
CR-88437Client BInsufficiency26 h 40 m24 hBreached
CR-88455Client CValidation2 h 05 m6 hOn track
CR-88462Client AInsufficiency21 h 10 m24 hApproaching
Figure 2 — Illustrative mockup of the Live Monitor view. This is a designed representation of the application I built, not a screenshot of the deployed environment; performer identifiers, case references and all values are synthetic. The table columns, the summary band, the hourly throughput view, the turnaround-exposure panel and the tab rail reproduce the fields and structure described above. Illustrative mockup Synthetic data
E · Solution design — the rules engine

What the dashboard decides, and how

The rules are the substance of the project. Each one turns a raw record into a label, and each label has a defined management response. A rule is written so that it can be tested against the sheets: a threshold, a source, and an interpretation.

SignalRule as I defined itThreshold / basisWhere it appearsManagement response
Live statusMinutes elapsed since the performer's last recorded case completion, from the elapsed-time field already maintained in the working sheet.Active ≤ 15 min · Idle 15–30 min · Inactive > 30 minLive Monitor, colour-codedContact the performer, understand the reason, re-task or unblock
Low outputCases closed by the performer in the current hour, compared with the expected pace for the shift.< 4 cases/hour (normal pace 6)Live Monitor, hourly viewCheck workload, task availability or blockers; assign work or support
Rushed paceCases closed in the hour, compared with the pace at which the required quality is actually achievable.> 10 cases/hour (quality pace 5/hour)Live Monitor, hourly viewReinforce the balance between speed and quality before quality review finds it
Case durationElapsed time per case — including waiting — compared with the performer's own working-sheet average for the same stage.Deviation from the performer's own averagePerformer drill-downCheck case complexity, process friction, or whether the case was rushed
Turnaround exposureElapsed time on open cases measured against the SLA rule held in the dashboard for that client, stage and case type.SLA per client × stage × caseExposure panel, per caseReview priority, clear the blocker, move the case before it expires
Same-day errorsErrors logged today, grouped by stage, error field and error category, taken from the quality records.Post, Validation and Insufficiency stagesQuality view, per performerDiscuss the specific rule or field with the performer while it is still correctable
Target progressCompleted volume against the daily target defined per case type and per stage.Daily target per case type × stageClient and target viewClient-level conversation and reallocation
Live case activity from the live working sheets Check 1 · Status minutes since last case ≤15 Active · 15–30 Idle · >30 Inactive Check 2 · Pace cases closed this hour <4 low · 4–10 normal · >10 rushed Check 3 · Commitment elapsed vs SLA / daily target on track · approaching · breached Priority list classified and ranked per performer, per case, per hour — no manual interpretation required + quality check: today's errors by stage and field Manager acts re-task · coach pace · correct the rule · clear the blocker · prioritise the manager still verifies the context
Figure 3 — Reconstructed decision logic. Every check evaluates live records and returns a label; the labels are assembled into the prioritised list the manager works from. The manager still verifies the context before acting — the dashboard ranks attention, it does not make decisions. Reconstructed diagram
Why the pace rule matters more than it looks

The normal pace is six cases an hour, but five cases an hour is the pace at which good quality is actually achievable. A performer closing eleven or more in an hour is not producing more value — they are compressing the reading, checking and decision steps that quality is made of, and the cost of that arrives later at quality review. The dashboard therefore flags high output as a quality risk, not as a success. This is the rule I would defend hardest, because it is the one that changes a manager's behaviour: without it, the fastest number on the board is the one that looks best.

E · Solution design — depth on demand

One click from a row to the case, and from a tab to the month

Performer drill-down

Clicking a performer name in the Live Monitor opens that performer's day: every case worked today with its client, stage, timings and SLA position, every error logged with the field and category, the average TAT, and the true shift hours. The drill-down exists because the summary row tells a manager that something is worth a look, and only the detail tells them what.

Operations Dashboard  ·  Live Monitor  ›  Performer P-033
Today  |  Export CSV  |  Back to Live Monitor
19
Total cases today
41 min
Average TAT (incl. waiting)
4.3 h
True shift hours
2
Errors today
12 / hr
Peak-hour pace (rushed band)
Cases worked today — 5 of 19 shown
CaseClientStageTaskElapsedSLAStatus
CR-88390Client AValidationValidation3 h 05 m4 hApproaching
CR-88402Client CValidationValidation48 m6 hOn track
CR-88418Client BInsufficiencyInsufficiency2 h 20 m24 hOn track
CR-88433Client A1st / 2nd Level1st & 2nd Level1 h 10 m4 hOn track
CR-88447Client DValidationAdd. Task52 m6 hOn track
Errors today
StageError fieldCategoryTime
ValidationDate rangeDocument interpretation11:42
InsufficiencySource requirementMissing document13:05
Average TAT is calculated on elapsed time and therefore includes waiting time on the case.
Figure 4 — Illustrative mockup of the per-performer drill-down. Synthetic data; not a screenshot of the deployed environment. Illustrative mockup Synthetic data

Productivity and Quality views

The second and third tabs carry the productivity and quality analysis, including the whole-month horizon. Their underlying structure, indicators and reporting logic are documented in the separate operational-analytics case study, so this case study does not repeat them; what belongs here is the architectural point — the same views are served inside the same application, and the monthly horizon is served from the daily analytics outputs rather than from a new pipeline. Both views accept the same date-range control and the same CSV export as the Live Monitor.

Operations Dashboard  ·  Productivity  |  Quality
Date range: 01–31 of month  |  Export CSV
Views
1 · Live Monitor
2 · Productivity
3 · Quality
Controls
Date range
Export CSV
Productivity — month
PerformerCasesAvg TATOn-time rateErrors
P-01431239 m96%3
P-02126842 m94%6
P-03334135 m93%8
P-04728944 m95%4
Quality — month
StageError fieldCategoryCountPerformer
PostName spellingDocument interpretation14P-021
ValidationDate rangeDocument interpretation11P-033
InsufficiencySource requirementMissing document9P-014
Whole-month figures are served from the daily analytics outputs of the existing reporting workflow; today's figures are served from the live sheets.
Figure 5 — Illustrative mockup of the Productivity and Quality tabs. Synthetic data; not a screenshot of the deployed environment. The detailed indicators behind these two views are covered in the separate operational-analytics case study. Illustrative mockup Synthetic data
F · Project management and implementation

Building inside a fixed environment, one controlled release

Scope, dependencies and constraints

Implementation phases

PhaseWhat was builtDecision and outcome
Requirements & rules (Apr 2026)Page inventory, field list, the seven management rules with thresholds, SLA and target logic, access scoping.Rules were written as testable statements before coding, so behaviour could be specified independently of the interface.
Build & deployment (Apr 2026)Read layer, rules engine, aggregation, the three views, access scoping, deployed as a web app.Deployment as a web app means the board is a URL any authorised manager can open, with no installation step on their side.
Verification against live recordsRules tested against real sheets: status boundaries, hourly bucketing, duration including waiting, SLA matching per client and stage, drill-down totals reconciled to the summary row.Several analytical defects were found and corrected here — notably the treatment of waiting time inside durations and edge cases at the status boundaries.
First operational useDaily supervision from the board; intervention on inactive, rushed and error-related signals.Use in a live shift, not a test, is what exposed the gaps that the first release had.
Enhancement (ongoing)Per-performer drill-down on click, productivity trend graph added above the board, additional options and refinements as the shift demanded them.Enhancement requests came from operating the tool, and were the reason the board stayed useful rather than becoming another report.

Risks and how I handled them

RiskConsequence if unmanagedControl I applied
Source sheets become stale or inconsistentThe board would show confidently wrong numbers, which is worse than showing nothing.The board reads the live sheets directly rather than caching a copy, so it inherits their accuracy; figures carry the source's own timestamps.
Thresholds applied out of contextA performer on a complex case mix would be flagged unfairly, damaging trust in the tool.Thresholds are stated as pace bands with a quality benchmark, and case duration is compared to the performer's own average rather than a global one.
Waiting time misread as effortDuration rules would punish performers for cases that were held upstream.Case duration includes waiting by design, and the drill-down shows the case-level detail needed to separate the two before acting.
Single-user, single-owner dependencyOnly one person can maintain the logic; loss of that person would end the tool.Accepted for a personal supervision view, and flagged as a limitation rather than hidden. The rules are documented in the case study so they can be re-implemented.
Adoption without ownershipA tool handed to managers without a routine attached is not used.I demonstrated it and used it myself first; adoption by others remained optional and is not claimed in this document.
Access controlAn exposed board would reveal individual performance data.Access is implemented in the application and scoped by role, with a per-manager view and an all-team view for senior management. This was not independently security-audited.
G · Preventive improvement

Turning a daily manual judgement into a standing control

What makes this preventive rather than corrective is timing and standardisation. The manager no longer has to remember to check each signal, and the signals are no longer only available after the day is over. The controls below are the ones I actually implemented; the recommendations are marked as such.

ControlWhat it preventsStatusHow it works
Automatic activity statusA performer going quiet for 30+ minutes and being discovered hours later.ImplementedThe status is derived continuously from the elapsed-time field, so absence is visible without anyone asking.
Quality-linked pace bandSpeed being rewarded in the short term and paid for in quality review later.ImplementedOutput above ten cases an hour is flagged as a quality risk, not as productivity, because five an hour is the pace that sustains quality.
Live turnaround exposureA case passing its commitment before anyone looks at it.ImplementedOpen cases are measured against the SLA rule for their client, stage and case type, and approaching cases are listed with their owner.
Same-day error surfacingThe same field or rule being misread repeatedly across the day.ImplementedErrors are grouped by stage, field and category in the working context, so the conversation happens on the day the error was made.
Standard decision rulesInconsistent interpretation of the same metric between managers or between days.ImplementedThresholds are coded, so the classification of every performer and case is the same every time it is viewed.
Threshold calibration studyRules that drift away from the real pace of the work as staffing and case mix change.RecommendedRecalibrate the bands against a full month of actual distribution, per stage, and version the thresholds.
Exception handling for stale source dataDecisions taken on a board that is showing an out-of-date picture.RecommendedShow source freshness per panel and suppress signals that are stale beyond a defined limit.
Escalation to the notification workflowSignals that require action but are only seen when the manager happens to open the board.RecommendedPush the same rules into the existing notification routine so that a breach is announced rather than published.
H · Testing and validation

What I checked, and what remains unverified

There is no formal test record from the company environment — verification was performed during development against the live sheets, and the cases below are the checks I actually ran. They are presented as a test matrix reconstructed from that verification, not as an executed QA report.

CheckMethodOutcomeStatus
Status boundary behaviourRecords positioned at 14, 15, 16, 29, 30 and 31 minutes from the last completionLabels matched the specified bandsVerified during development
Hourly bucketingCompletions across an hour boundary and across a shift boundaryEach completion attributed to one hour and one dateVerified during development
Duration including waitingCases with a long hold between start and closureElapsed time reported with waiting included, as specifiedVerified during development
Drill-down reconciliationPerformer drill-down totals compared with the summary row and with the source sheetTotals agreed; one aggregation defect found and correctedVerified during development
SLA matchingCases checked against the rule for their client, stage and case type, including cases near the limitExposure states correct, including approaching-versus-breached boundaryVerified during development
Date range and CSV exportExports for today, a single week and a full monthExports matched the on-screen figuresVerified during development
Access scopingViews rendered under a manager scope and under the all-team scopePerformer lists limited to the intended scopeVerified during development
Independent security review of the access layer—Not performedNot verified
Controlled user trial with other managers—Not run as a sustained trialNot verified
I · Business impact and performance measurement

What I can evidence, and what I would measure next

MetricBaselineResultEvidence statusValidation method
Time to assemble the daily supervision viewNot measured≈ 70% less time spent locating and reconciling the required informationEstimated (owner)Log navigation and reconciliation time for 10 working days before and after; compare median
Time to detect an inactive performerManual check of the elapsed-time column in the sheetsAutomatic label within the 30-minute band, without a manual checkObservedCompare status timestamps with the elapsed-time field for a full month
Time to act on a same-day errorError visible only on retrieval, typically in the next reporting cycleReviewed with the performer on the day it occurredObservedLog same-day error discussions against the error timestamps
Turnaround exposure visibilityKnown only when a report was retrievedApproaching and breached cases listed with their owner and SLAObservedRecord at-risk cases flagged before their limit and compare with actual breaches
Rushed-pace detectionNot surfaced in the working viewFlagged in the same hour, before quality reviewObservedCorrelate hourly pace flags with subsequent error rates for the same performers
Error rate and SLA breach rate attributable to the dashboardNot measuredNot measuredUnverifiedRequires a baseline period before deployment and a defined control group; not attempted
Adoption beyond the author—One active user; not adopted into the managers' routineObservedNot applicable
Validation plan for the measures that do not yet exist
KPIFormulaData sourcePeriodTarget
Supervision view preparation timeMinutes from start of shift to first management decision, logged dailySupervisor log (new)10 working days, pre and postTo be set after the baseline is captured
Inactive-performer detection latencyMinutes from last case completion to the status label appearingLive sheet timestamps vs. dashboard label1 month, continuousAt or below the defined band (30 min)
Same-day error action rateErrors discussed on the day of the error ÷ errors logged in the periodError log plus discussion log1 monthTarget to be defined after the first month of measurement
Pre-empted SLA breachesCases flagged as approaching before their limit ÷ cases flagged as approachingDashboard exposure log1 monthTo be set after baseline
Rule precisionFlagged performers who genuinely need intervention ÷ total flaggedSupervisor confirmation per flag2 weeksTo be set with the first calibration cycle

No target is asserted here, because no baseline exists to set one against. These are the measurements that would convert the current observations into verified results. Test & measurement plan

J · Lessons learned and roadmap

What I would do differently, and what comes next

Lessons from running it every day

Roadmap

Next stepWhy it mattersEffort / dependency
Threshold calibration studyThe bands are set from operational judgement; a month of real data per stage would make them defensible.Low effort — data already exists in the sheets
Baseline measurement of supervision timeConverts the 70% estimate into a verified figure and allows a target to be set.Low effort — requires a supervisor log for 10 days
Supervised rollout to other managersThe per-manager scoping already exists, so the tool is technically ready; the missing ingredient is an operating routine and ownership, not code.Medium — depends on management sponsorship
Push rules into the notification workflowTurns a board that must be opened into exceptions that are announced.Medium — reuses the existing alerting routine
Source freshness indicator per panelProtects the credibility of the whole board when an upstream sheet is late.Low effort — metadata already available
Independent access-control reviewThe access layer was designed for a multi-manager deployment and has not been externally reviewed.Low effort — application-scoped
Apr 2026 Requirements, rules, build, deployment Apr 2026 → Daily supervision from the board; defects corrected Ongoing Performer drill-down, trend graph, further options Next Calibration, baseline measurement, rollout
Figure 6 — Timeline of the project from build through continuous operational use to the planned validation work. Reconstructed timeline
K · Skills demonstrated

What this project shows I can do

CompetencyMy contributionEvidence in this projectBusiness or technical value
Business analysis & requirementsTurned "I need visibility of my team" into a page inventory, a field list, seven testable rules and a data-source map.Live Monitor layout, rule set, view structureThe build started from decisions, not from features
Operational data analysisDefined pace bands, status bands, SLA and target logic, and made waiting time an explicit part of the duration definition.Rules table, threshold basisDistinguishes a genuinely slow performer from a blocked one
Problem framing & root causeEstablished that the data existed and the reporting layer was retrospective; targeted the missing composition and classification layer.Root cause statement, symptom-to-cause matrixPrevented a duplicate reporting effort that would have added no value
Workflow & system designDesigned a three-view application with a drill-down, a date-range control and CSV export, reading existing sheets with no new data store.Figures 1–5A single tool that fits the existing data flow instead of competing with it
AI-directed developmentSpecified the logic and thresholds, directed AI-assisted implementation in Google Apps Script, tested behaviour against live records and corrected analytical defects.Testing matrix, build phasesRules exist as executable, testable statements rather than as prose
Quality & preventive controlConverted recurring manual judgement into coded checks for inactivity, rushed pace, SLA exposure and same-day errors.Control tableDetection moves from retrospective to same-day, and becomes consistent
People leadershipUsed the board daily to detect inactivity, coach pace against quality, and correct specific rules while the day was still open.Use cases, results tableCoaching happens on the day, with the specific case in hand
Honest measurementSeparated observed behaviour, an owner estimate and unmeasured metrics, and wrote a validation plan for the gaps.Results and measurement tablesClaims a reader can audit, which is what makes the rest credible

Positioning note. My contribution to this project is requirements definition, rule and threshold design, interface and workflow design, AI-directed implementation, testing and validation, and daily operational use. The code was produced with AI assistance under my direction and reviewed by me against the behaviour I specified; I do not present this as independent manual software engineering.

Related case studies in this portfolio cover the validation and insufficiency sheet automation, the automated workflow control and the operational analytics suite on which this dashboard depends.

Evidence, limitations and boundaries

What this case study claims — and what it does not

Supported by the project

  • A live multi-view operations dashboard, built in Google Apps Script and deployed as a web app in April 2026, covering an 80-performer department.
  • Three views — Live Monitor, Productivity, Quality — with automatic rule evaluation, per-performer drill-down, date-range selection and CSV export.
  • Seven management rules with stated thresholds, including activity status at 15 and 30 minutes, low output below four cases an hour, rushed pace above ten, and turnaround exposure measured per client, stage and case type.
  • Data read from the existing live working sheets and daily analytics outputs; no new data source, no new API integration, no separate database.
  • Continuous maintenance and daily operational use by me, including the drill-down and the productivity trend graph added after first release.
  • Observed changes in how quickly inactivity, rushing and same-day errors are identified and acted on.

Not claimed

  • Organisation-wide adoption. The tool was demonstrated to the operational managers, who responded positively, but it was not taken into their routine; it remains my own supervision view.
  • A measured time saving. The ~70% figure is my own estimate from daily experience, with no baseline or time study behind it.
  • An error-rate or SLA-breach improvement attributable to the dashboard. No such measurement was made, and the results table says so.
  • Independent verification of the access layer, or of the whole application, by anyone outside my own use.
  • Any screenshot, client name, employee name, case record, internal link, credential or source code. Every interface shown here is an illustrative mockup with synthetic values.
Design boundary that matters most

The dashboard surfaces signals and prioritises attention. It does not judge people. A status label, a pace flag or a turnaround warning is the start of a conversation, not a conclusion about a performer, and every one of them needs the case behind it before it becomes a decision. That is why the drill-down exists, and why I read the case before I contact anyone.

Closing reflection

This project did not create new data, and it did not replace the sheets my team works on. What it did was remove the daily translation step between a working record and a management decision, and replace it with rules that classify the signals the same way every time. The three parts of that sentence matter separately: the live view, the classification, and the consistency. Any one of them alone would have left me assembling the morning picture by hand.

The tool runs on the environment I was given, inside the constraints I actually work under, and it is still the first thing I open in the morning. That is the honest measure of it: not a showcase feature, but a working instrument that I depend on, and that I extended every time it fell short of what the shift needed.

Khaled Medhat Mahmoud · Team Leader, Case Validation · Live Operations Dashboard · Executive case study. All interface views in this document are illustrative mockups containing synthetic data and are not screenshots of the deployed environment.