Rocket Money, the personal finance app formerly known as Truebill, spent four years running its merchant detection on regular expressions and an increasingly tangled decision table. That worked when the company only cared about a handful of cancellation and negotiation categories. But as the subscription economy exploded and the product scope widened, the team found itself tuning regexes constantly and fighting collisions. A bag-of-words model with a per-class architecture came next, and it was mothballed for being a maintenance nightmare.

The clean-slate rebuild landed on a BERT-family model handling text classification across more than 4,000 classes. The team built labeling queues in Retool, gold-standard validation datasets, and drift detection monitoring, then evaluated everything offline in their GCP warehouse before touching production. The real bottleneck wasn’t model quality — it was serving. The legacy regex pipeline processed over 100 million transactions per month with bursty load patterns, and Rocket Money had no in-house MLOps team. Senior ML Engineer Nicolas Kuzak put it plainly: Hugging Face wasn’t just a vendor, but a partner “invested in our goals and outcomes.”

They auditioned three options: a hand-rolled hosting solution from prototyping, AWS SageMaker, and Hugging Face’s Inference API. SageMaker was clunky given their GCP-centric stack — exporting models across cloud providers introduced bugs. Hugging Face handled a slice of traffic within a week. A three-month evaluation followed, with gradual traffic increases and simulated worst-case load tests before full commitment.

The deeper challenge Kuzak’s team faces is class economics. Every one of those 4,000+ classes represents ongoing labeling, validation, and maintenance effort. Adding a class isn’t free, so the team has to weigh user value and business impact before expanding the taxonomy. That’s a constraint most text-classification teams don’t have to think about. Merchant entropy — the cryptic, truncated strings that payment processors inject into transaction data — keeps drift detection genuinely hard, and Rocket Money is still figuring out what realistic benchmarking looks like under those conditions.