Read-only Stripe tooling that took Udacity's graduate reimbursement backlog from months behind to near real-time.
Finish your Nanodegree inside the promised window and Udacity gave you back half of everything you'd paid. I loved that program. Brilliant incentive alignment, tuition turned into a bet the company wanted you to win. One problem. Because we were slow to process the refunds, we were hitting recent graduates with a huge negative experience right when they should have been at peak satisfaction.
Back in the mid-2010s Udacity was on a roll. Sebastian Thrun had put MOOCs on the map, the Nanodegree brand was catching, and tens of thousands of students were flooding into the programs, fueled by the 50% incentive. My title was Alumni Community Manager, which made me the canary in the coal mine. Every student in that refund queue was a graduate, which made them mine. The people waiting longest were exactly the ones who had loved Udacity enough to finish, and their final experience of the company had turned into "we're holding your money." I could watch that sourness leak into the community I was building.
Silicon Valley startups of that era had a very particular dysfunction. Try things fast, see what works, don't plan for scale. This was a classic case. When dozens of Nanodegree students a month graduated, support could process reimbursements by hand. At hundreds a day, it broke. We were victims of our own success. And anyone who has ever worked in customer support knows one thing clearly. You are the last group to get engineering support. We had tons of brilliant engineers, but they were tasked with the work perceived as high value, building self-driving cars, improving creative tooling. Support was grinding the queue down by hand, and nobody was treating the backlog as a thing you could fix rather than a thing you could staff. So I had a problem, no engineering resources, and some recently acquired application-development skills. I sat down with the customer support lead.
The backlog wasn't laziness. It was arithmetic. Refunding a student half their money means knowing how much money that was, and that number didn't exist anywhere. Students paid month by month, sometimes for years, across replaced cards, coupons, and price changes, and all of it lived in Stripe, whose dashboard is a fine place to read one transaction and a miserable place to reconstruct three years of them. So an agent looked up a student, walked the payment history line by line, untangled which charges counted, worked out the half, and processed it. Sometimes an hour per student when things got weird. Multiply by tens of thousands of graduates and "months behind" stops being surprising.
The design decision I'm still proud of is that the tool encoded almost nothing. I was a new engineer, and I knew precisely how far to trust a new engineer's unsupervised payment logic, which is not at all. So instead of automating the judgment, I surfaced everything the judgment needed. Pull up a student and their whole payment history appeared at once, every charge across every card and coupon and price change, linked through to the real records in Stripe. The processor clicked through, marked which charges counted, and the tool totaled a suggested reimbursement. A human confirmed every number before money moved, and because the tool stayed read-only against the payment data, a whole class of security questions never came up. React on the front, REST underneath, Stripe as the source of truth.
Reimbursements went from an hour each to a couple of minutes, sometimes under one. The backlog went from months behind to near real-time. A graduate's last interaction with Udacity went back to being the money showing up.
Copywriters say the real work hides in the ignored words on a page, the error messages and button labels nobody drafts on purpose. My version is that the biggest opportunities lie in the ignored edges of the org chart. Revenue centers get the attention. A cost center has to catch fire before anyone looks at it. But support and community are where your happiest customers show up the moment something matters to them, and this backlog was quietly unspending everything the refund program had bought. Just because a group doesn't feel important doesn't mean it isn't critical. The dashboard was a small build. Knowing which corner of the company to aim it at was the work.
Say hi.
Got a problem that looks like this one? I want it.
Got one so new nobody's even scoped it? I want that one more.