Operations analytics

Measuring how long a department makes people wait

A shared inbox with no visibility became a measured service line with a response time anyone can check.

inbox-response-analyticsin production
Client
Healthcare education provider
Period
2024-2026
Stack
Node.js, Mail API, PostgreSQL, Next.js
26.5h
median reply, starting point
0.9h
median reply, two years later
0
message bodies stored

The problem

A department email box handled thousands of student threads a year. Nobody could answer the only question that mattered: when someone writes to us, how long do they actually wait? Student records rules meant the message bodies were off limits.

What I built

A collector that reads only envelope metadata through the mail API, never message content, and stores thread timing in Postgres. Delta sync keeps it current without re-reading history. Reporting separates replies to real people from machine traffic, because mixing them hides the number that matters.

Result

Median reply time to a human correspondent went from just over a day to under an hour across two years, and the number stayed visible enough that it could not quietly drift back.

Node.jsMail APIPostgreSQLNext.js
All projects