Built by operators, for operators

Case Studies

Eight problems our team worked through: what was wrong, what caused it, what we changed, and what it did to margin and operations.

AP automation for restaurants · Continuous improvement

From 20% to 70% gross margin

Cost per invoice fell by two-thirds while volume grew 50%.

The problem

The company processed supplier invoices for independent restaurants and pulled out the line items, so restaurants could track costs by product and supplier. In March 2016, processing cost $1.67 per invoice. Line-item extraction cost another $1.67 and took 24 hours, so it wasn't offered to every customer yet. An invoice with line items cost $3.34 to process, all of what it brought in. Gross margin sat near 20%.

The root cause

Every line item was typed by hand, twice. Two processors each extracted the same invoice, a senior processor checked every line, and the batch was imported by hand. Product names and units were re-keyed for vendors the system already knew. Slow internet at the offshore team meant invoices moved in batches of 25 to 200, and only one person on the day shift was trained to verify them. Queues built up and a 24-hour lag became normal.

What we did

A one-page improvement plan put a cost on every step and set targets for extraction: $0.80 per invoice and a 4-hour turnaround. We built extraction into the app. The database already knew each vendor's products and units, so the app filled those fields and checked the extraction itself. A processor typed 3 fields instead of a whole invoice, and the manual check went away.

With no transit time, there was no reason to hold invoices, so they moved one at a time, first in, first out. We trained the night shift to verify, so two shifts worked the queue. Labor per invoice fell by two-thirds, and a second outsourced team and 3 of 5 US contractors were wound down. Extraction went live in July 2016, and cost per invoice was tracked for 90 days after.

↑ Back to all case studies

Food distribution · Kaizen, A3

Better quality with fewer QC staff

QC went from 100% of carts to 30%, and carts with a picking error fell from ~72% to ~10%.

The problem

An experienced manager checked every picked cart, item by item. QC took about 13 minutes per order, and roughly 7 in 10 carts had at least one error. At the planned 80 to 100 orders a day, QC would need seven full-time checkers per warehouse and about 1.6 labor-hours per order. Even at low volume, a full aisle of carts sat waiting for QC.

The root cause

QC was applied to every cart and every picker because there was no data on who was reliable. Without picker-level accuracy history, the only safe policy was to check everyone, every time. Quality was inspected at the end of the line instead of built into the pick, so its cost grew with every order.

What we did

The app started tracking each picker's error rate and speed, and a bonus paid on both, earned only when a cart shipped clean. The fastest way to earn more was to pick accurately.

Once a picker's error rate held under 1%, the app moved them to "super-picker" status and checked 1 in 10 of their carts. If a sample slipped past about 1.5%, they went back to full QC until they recovered. New pickers stayed at 100%. We also changed the app to pick by bin location instead of category, and automated the paperwork for out-of-stocks and cart labels.

↑ Back to all case studies

Food distribution · A3, gap analysis

A post-acquisition operations turnaround

From about $1M a month in contribution margin burn to profitable.

The problem

After the company acquired three regional distributors, fulfillment fell apart. Fill rate dropped to about 75%. Shrink ran 17–18% for the month and hit 28% in one week, with full pallets of food thrown out. On-time delivery fell as low as 24%, about 22% of orders shipped with an error, and a physical count found errors in 90% of storage locations. Nightly replenishment jobs jumped from about 70 to over 300. The operation was burning about $1M a month in contribution margin.

The root cause

It was tempting to blame the crews. The gap analysis found something more precise: the warehouse had been physically rebuilt, with new racking, a new freezer, and hundreds of new locations, but the warehouse management system's logic was never updated. Old locations kept their old rules, new ones had none, and many had no dimensions entered.

So replenishment sent product to slots too small to hold it, left others empty, and scattered single SKUs across as many as 886 locations. The system recreated the mess faster than crews could clear it. There had also been no full inventory count of the acquired businesses, so counts weren't trusted and product was double-bought.

What we did

We ran two tracks at once, because neither worked alone. Track one stopped the bleeding by hand: daily triage to clear staging lanes and trailers, replenish the top 1,000 items, consolidate each SKU to one location, and cycle-count by aisle, with corporate staff trained and on the floor.

Track two fixed the cause. We rebuilt the WMS into a hybrid slotting model (fixed locations for fast movers, dynamic slots for the rest), re-zoned the facility to the new racking, and added logic to consolidate inventory instead of scattering it. Then we added barcode scanning with QA hard-stops across receiving, picking, loading, and delivery, and wrote it all into daily standard work.

↑ Back to all case studies

Food distribution · Gap analysis

Cutting the cash float 90%

About $1M of working capital freed, and the supplier credit line no longer needed.

The problem

The company paid its supplier for a customer's product almost immediately, but customers paid three to four business days later. On about 70% of revenue, it was fronting the supplier's cash. Covering that took a line of credit from the supplier itself, capped at $200,000, and the supplier refused to raise it. As volume grew, the float climbed toward $1M and the credit limit became a ceiling on growth.

The root cause

Supplier payments weren't linked to customer billing. Nothing tied what a customer was billed to what the supplier was paid for the same order, so the company fronted 100% of product cost and reconciled by hand afterward. It already had API access to the supplier's invoices and had its own customer invoices. The data to link them existed. It just wasn't connected.

What we did

A completed delivery now split the payment automatically. The platform took each customer's payment, sent the product portion straight to the supplier's bank account matched to its invoice, and kept only the company's share, about 8% (delivery fees, alcohol, tax-exempt items). The last customers paying by check moved to card and ACH.

The supplier got a self-service portal showing each payout against the exact invoices it covered, to the cent, so it could check at any time that it had been paid in full, and move the staff who had matched wires by hand. A monthly reconciliation investigated every mismatch and automated it away.

↑ Back to all case studies

14-person startup · Annual & quarterly planning

Cutting seven goals to three

A facilitated planning offsite turned an unranked goal list into three measured objectives, and a 30-agent build into three workflows.

The problem

The company had found its market and planned to triple revenue. Asked for his top five goals for the year, the CEO listed six, then remembered a seventh. None were ranked. Two pre-offsite surveys named the same top blocker: prioritization. Five of twelve people asked leadership to start prioritizing, and four wanted to stop treating everything as urgent. Asked for one word to describe the culture, the CEO said "survival."

The root cause

The goals were real, but they lived in one person's head, unranked and not shared, so each function worked toward a different one. With no ranked list and no way to turn goals into owned work, "urgent" was the only prioritization signal the company had. It bought one-off exceptions that added complexity and left no time for the fixes that would have prevented them.

What we did

A four-day offsite, phones in a box. Two anonymous surveys, answered by most of the team, meant the room opened with the team's own words rather than the CEO's.

Seven goals came down to three, the number a team can actually carry. All three had to sit on the real bottleneck, which was collections, not the thirty AI agents on the wish list. A key result reading "test 10–30 agents" was struck out and rewritten as three agent workflows: deal desk, close, and collect.

"We've really gone from survival to thrival. I don't look at the bank balance every week and think, what's gonna happen next week."The CEO, six months later

↑ Back to all case studies

Food distribution · Kaikaku, scenario planning

Replacing a sole supplier in 14 months

Owned warehouses and direct sourcing, built while revenue grew from about $75M to $155M.

The problem

The whole business ran on one supplier. It bought product from that wholesaler's stores, used its inventory, and routed trucks from its docks. In July 2018, with the company at about $75M in annualized revenue, the supplier said the partnership no longer worked at current pricing. The options were to build an independent supply chain from scratch, or shut down.

Why small fixes wouldn't work

Getting better at buying from the supplier couldn't fix a dependency on it. The system itself was the constraint. That calls for a redesign (Kaikaku), not incremental improvement (Kaizen).

What we did

In a two-day event with an owner from every function, the team designed the new system backward from the target state. They mapped five scenarios, from "the supplier does nothing" to "the supplier finds out and cuts us off tomorrow," with target metrics for churn, out-of-stocks, and new customers in each.

A seven-flows gap analysis turned problems into a build list: scrape supplier pricing, set up about 2,800 SKUs in a new ERP, secure a building with racking, refrigeration, and permits, hire and schedule a 35-person crew, and script customer retention for every scenario. Because one leak could trigger the worst case, the work ran as a separate team in a separate office, and a staged worst-case drill tested readiness before go-live.

Fourteen months after the call, the first orders shipped from the company's own 75,000 sq ft warehouse, with its own vendor relationships and its own warehouse and inventory systems. The existing business kept growing the whole time.

↑ Back to all case studies

Food distribution · A3, SIPOC

From a 22-hour to a 6-minute support response

Structured intake, automatic routing, and self-service let support scale.

The problem

First response on support tickets averaged 22 hours, which frustrated customers and drove churn. Requests came in over five disconnected channels, including a ticketing tool, calls to operations, messages to sales reps, and a 1-800 line, and about half were resolved outside any system. Only 10% came through the app, and only 10% were assigned to the right person automatically. Calls went to voicemail, and an executive still took 5–10 support calls a day.

The root cause

There was no structured front door. Customers couldn't say which order or issue a ticket was about, so a person had to read, categorize, and route every message. The most common questions (credits, returns, invoices, delivery delays) had no self-service path, and even a small credit needed escalation.

With several warehouses, agents had to search multiple systems to find which one filled an order. Customers called for delivery times on trucks the company already tracked by GPS. And with so much work outside the ticketing system, no one could see the real queue.

What we did

In the app, the customer picks the order and the issue, which creates a tagged, linked ticket. The system routes it to the right group and agent, with alerts for overdue tickets. Every channel feeds one system: a masked 1-800 line, in-app chat, and calling.

Agents see delivery and billing details on each ticket, including which warehouse filled the order, and can approve credits up to $50 per order and $500 per customer a year without escalating. Customers can see their invoices, credits, returns, and truck location in the app. Root-cause tags on resolved tickets go back to operations to fix what generates them.

↑ Back to all case studies

Regional hospital · Kaizen

Cutting a 5-month patient wait to 2

Faster room turnover and better pre-op readiness in a GI suite.

The problem

A GI and endoscopy suite with two rooms took about 29 minutes to turn a room over, scope out to scope in. That capped the day at about 10 procedures per room, while more than 560 patients waited up to five months for a colonoscopy. Physicians often worked through lunch to keep up.

The root cause

The team mapped the changeover role by role (physician, techs, two nurses) and ran 5 Whys on the longest delays. The changeover was only part of it. Often the next case couldn't start because the physician was covering clinic or on call, or because the next patient wasn't ready: a late arrival, prep or fasting not followed, no nurse free for a difficult IV, no open bed, or missing orders in a records system not built for GI.

What we did

The team worked on readiness and standardization at the same time. They wrote standard work for room turnover, with a defined tech-and-nurse flow and supplies staged where each step needs them. They added a standard GI order set and recovery protocol to the records system, plus a shorter pre-procedure summary.

For pre-op, they set up an IV placement priority process, standard prep and fasting screening, and a cleaner handoff. And they redesigned the block schedule and staffing to work down the backlog.

↑ Back to all case studies

Have a problem like one of these?

Talk to us about working through it together, or run the same methods yourself with Lean AI.