A payments dashboard stopped falling over at midnight.
A reconciliation tool kept timing out during settlement. The team had been told to hire more people. The fix was mostly putting work back where it belonged.
At midnight, settlement started. Then the tickets did.
Support could watch the queue fill up with 'where is my money?' messages while the dashboard sat there spinning until about 4am.
The old build loaded every transaction into the browser and summed it in JavaScript. That looks fine in a demo with twelve rows. It does not look fine with nine hundred thousand.
We thought it was a frontend problem. It was really a 'please let the database do database work' problem.
Put the work in the right place.
Moved work out of the browser
Reconciliation moved into scheduled jobs. Aggregates landed in a materialized view. The dashboard read a few thousand rows instead of trying to eat the whole ledger.
Then did the unglamorous part
The settlement job retries. Alerts reach a human before customers notice. The status page tells the truth. No new framework. No rewrite-in-Rust victory lap.
Fewer pages. Faster nights. One person.
Settlement reconciliation, from start to finished view.
Transactions a night, now summed in the database.
Engineer. They had been told they needed six.
Midnight pages since. The status page tells the truth now.
Got a midnight problem of your own?
Tell me what is falling over. If I am not the right fit, I will say so.