IProcessor: invoice to store shelf
Operations platform for a multi-store retailer: an always-on Azure WebJob reads vendor invoices from the mailbox, parses 60+ PDF/XPS layouts and quarantines anything that doesn't reconcile; the web app carries goods through approval, receiving and RFID pick-and-pack with Zebra label printing. Zero-downtime deploys via GitLab slot swaps.
- 01MailboxWebJob watches the shared invoice mailbox
- 02Parsevendor-specific layouts, configured in the database
- 03Reconcilemismatches quarantined for review
- 04Approve & receiverole-based workflow, container receiving
- 05Pick & packRFID verification · Zebra labels per store
The problem
GMD Stores buys from dozens of import vendors and splits goods across several stores. Invoices arrived as PDFs and were keyed in by hand, reconciled against purchase orders in spreadsheets, then carried through warehouse receiving, store allocation and margin accounting. It took hours a day and left no audit trail.
What I built
Two parts:
- IProcessorPdfParser, an Azure WebJob that monitors a shared mailbox, extracts line items from each vendor’s invoice and writes them to the database. Originals are kept in Azure Blob Storage for review.
- IProcessorWebsite, an ASP.NET MVC app with role-based dashboards that takes an invoice through review, approval, container receiving, RFID-verified pick-and-pack, barcode scanning and per-store label printing.
Decisions that mattered
- Vendor layouts live in the database — header mappings and keyword tables — so a new or changed layout is a configuration change, not a redeploy.
- Zebra BrowserPrint talks to label printers directly, with no print dialogs on the warehouse floor.
- Server-side DataTables and AJAX partial updates, so tens of thousands of line items stay usable on warehouse tablets over Wi-Fi.
- RFID verification at pick-and-pack catches operator errors before a box ships.
Outcome
Invoice entry went from hours a day to review-only. 60+ vendors are parsed automatically, pick-and-pack errors are caught before shipment, and accounting reports come from one database instead of a folder of spreadsheets.