TLTan LeBackend & automation · CalgaryLet’s talk
← All systemsRetail · GMD Stores, 2021–2023

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.

60+vendor invoice layouts parsed
0downtime per deploy
  1. 01
    MailboxWebJob watches the shared invoice mailbox
  2. 02
    Parsevendor-specific layouts, configured in the database
  3. 03
    Reconcilemismatches quarantined for review
  4. 04
    Approve & receiverole-based workflow, container receiving
  5. 05
    Pick & 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.

Contact · Let’s talk

Have a system that should run itself by now?

Tell me what people still do by hand every morning, or what breaks when nobody is watching. I'll map the shortest path to a job that just runs.

Project brief