How it started
I almost said no to this one. The brief sounded like a thousand other warehouse digitisation pitches I've watched go nowhere. New hardware nobody asked for. A WMS replacement that wasn't a replacement. A pilot that lives forever and never goes floor wide.
What changed my mind was a phone call with the IT director, who said something like, "I don't need a new system. I need to stop losing three days of every quarter because we still count on paper." That, I could work with.
This is a distribution operator with a 15,000 square meter warehouse and a team that has been doing inventory counts the same way for fifteen years. Paper forms on clipboards. Two person teams, one counter and one writer. A supervisor reconciling discrepancies in Excel for three days after the count itself was done. Everyone hated the reconciliation step and yet everyone defended it, because the moment a number got disputed, only the paper trail could settle it.
The honest cost wasn't the time. It was the energy. The whole warehouse went into a kind of low grade panic every quarter, and that mood lingered for a week.
What we built
We didn't replace anything. We slid in next to the existing setup and quietly absorbed the worst stage of the process.
The first two days, before any code, I spent on the floor. Listening. Watching the count happen. That's how I learned the pairs always read location codes back to each other before writing them down. That the handheld scanners they already had were used for picking but never for counting, because the counting form didn't live in the scanner software. That one specific aisle always took twice as long because it stored a SKU family with three nearly identical variants. None of that would have come out in a Zoom call.
Out of those notes came the system.
A canvas app on Power Apps, running on the phones operators already carried, in their pockets, every shift. Three screens. Open a session. Scan and count, with the option to type the number for the items that didn't scan cleanly. Close the session. The form on screen mirrors the paper form down to the field order, so people learned the new way in a single shift.
A supervisor app, separate, with a live map of the warehouse. Locations turn green as they're counted. The supervisor stops asking "where are we?" by radio because she can already see.
A Power Automate flow at the back end that compares each closed session to the WMS snapshot and writes discrepancies to a SharePoint list. The reconciliation team works that list. The controller signs off on adjustments, full stop. We didn't automate that decision because that decision is exactly the one a human should keep.
The first count
We piloted on one aisle. One. That single aisle, counted under the new system, turned in zero reconciliation work. Not because the system was magic but because the dispute that always slowed reconciliation down didn't show up. There was nothing to dispute. The numbers were the numbers, time stamped, traceable, with the operator's name attached.
The next quarter, the count ran across the whole floor. Two days, not six. The supervisor told me afterwards she finally sat down for lunch that week.
What we left out, on purpose
No native mobile app. The operators already had Power Apps installed for two other internal tools, so they didn't need to download anything. A native build would have added six weeks and an app store review to a ten week project, and for what.
No automatic write back to the WMS. The controller signs off on adjustments, full stop. Automating that was outside the brief and, honestly, the wrong place to automate.
No "let's also build a picking module" scope creep. The brief was counting. The brief stayed counting.
The handoff
The internal Power Platform analyst on the client's team shadowed the build from week three onward. By week eight, she'd extended two of the Power Automate flows herself. Governance lives entirely on their side: solution packaging, environments, licence allocation. I closed the project on week ten. No retainer, no dependency. They ran the next quarterly count without me, and I only heard about it afterwards.
That's the kind of ending I want for every project. The client doesn't need me anymore, and they're proud of the system they own.