Home About Experience Projects Case studies Resources Articles Briefs Playbook Tools FAQ How we start Security Get in touch

Case study 13

The app said synced. The records said otherwise.

Confidential engagement, described by its shape. Every image and file on this page is rebuilt with invented data.

All case studies · 13 of 15

Case study 13

The app said synced. The records said otherwise.

WhereA back-office provider running time and spend administration for many small client accounts; details changed
RoleRemote operations assistant to the supervisor, owning the exception routine end to end
ScaleDozens of exceptions a day; a full outreach batch at a time; a weekly pay run deadline
StackSpreadsheets, scripts, a shared task tracker, email

A new mobile timekeeping app told people their clock-outs had synced while the records piled up with no end time. Counting the gap every day turned scattered complaints into a reported pattern, roughly two thirds of a full outreach batch were fixed the same day, and the supervisor gets a named list of non-responders before every pay run.

The app showed a success message at clock-out. In the back office, entries with a start time and no end time arrived by the dozen each day. The first response was the obvious one: treat each missing clock-out as one person's mistake and chase it with one email. That handled the row and hid the pattern.

Count the record, not the status light. I counted exceptions every day by entry date and kept a list of names that came back more than once. The same people kept reappearing after doing exactly what the app told them to do. That is not a training problem. It went to the supervisor as a pattern, with names and dates attached, together with placeholder entries that appeared after corrections.

Diff before sending anything. Each morning's list was compared with the last saved copy, so new, carried and cleared rows were separated before anyone was contacted. Test records and anything outside the current period came off first.

Exceptions queue tab: stacked daily pastes with diff status New, Carried or Resolved and a final status per row
Stacked daily pastes, diffed on Row ID plus item date
Daily Queue Snapshot summary: new, carried, updated and resolved counts per queue, every row reconciling OK
Summary: every queue reconciles before outreach
Exception Email Builder output: seven messages, four first contact and three repeat, two rows dated today skipped
One message per person; rows dated today skipped

Click any image to see it full size. Every file here is rebuilt with invented data.

One person, one message. Outreach went out as a batch: one message per person covering every open date, in the order the queue showed them, with addresses filled in. A first contact template introduced me and asked for the missing time. A repeat template skipped the introduction. Which one a person got came from a running contacted list, checked before every batch.

A confirmation with nothing to fill in. When a reply came in, the time was entered and the same two lines went back: the adjustment has been entered, the error has cleared, no further action needed. No dates, so nothing to get wrong.

Never today. Nothing dated today is ever contacted. An entry from today may still be in progress, and its clock-out is not missing yet.

Named, not counted. Before every pay run the non-responder list is rebuilt name by name from the latest queue and written as each name with its open dates, for the supervisor to call. It is never worked out by subtracting today's fixes from yesterday's total.

Daily Queue Snapshot, Summary tab: Exceptions, Oct 1 to Oct 2

Diff statusRows
Prior snapshot, Oct 113
Today, Oct 212
New3
Carried7
Updated2
Resolved4
ReconcilesOK
Match key = Row ID + Item date   13 prior = 7 carried + 2 updated + 4 resolved   12 today = 3 new + 7 + 2

Daily Queue Snapshot, Summary tab: waiting on person, by name

PersonRow IDsOpen dates
Avery ColeEX-4559, EX-4642Sep 28, Sep 30
Jordan PikeEX-4562Sep 27
Reese CalderEX-4895Sep 10
3 people4 rows
=COUNTIFS(Exceptions!$A$6:$A$200,$C$5,Exceptions!$J$6:$J$200,"Waiting on person")   latest snapshot only, never yesterday minus fixes

The results, in bands. Roughly two thirds of a full batch replied and were fixed the same day. Repeat introductions stopped once the contacted list existed. App capture failures reached the supervisor as a named pattern instead of one-off complaints, and every pay run started with names, not a number.

What went wrong
  1. At first each missing clock-out was chased as one person's error, one email at a time. The pattern only showed once the count was kept by date with repeat names tracked.
  2. People already contacted got a first contact introduction again. The contacted list started then and is checked before every batch.
  3. A message went out about an entry that was still in progress. That is where the never-today rule came from.
  4. Confirmations were rewritten per person with dates and times, and one draft dated an entry wrongly. Confirmations went generic.