A .NET plugin that sits next to retail POS systems it has never seen, captures every sale, keeps working offline on 32-bit Windows 7 tills, and feeds a receipt pipeline I moved into our own backend.
Context
hello again is a loyalty platform. Shops already have a cash register, often from a vendor we have never worked with and sometimes decades old, and we may not change it.
The plugin runs next to it on the till. It reads each sale from whatever the POS gives off (a print job, a file, a barcode, a screen, a UI element), finds the loyalty customer, redeems rewards and sends the receipt to the backend.
The real screens are under NDA, so this page shows the design and the decisions instead.
Requirements
| Constraint | What it means |
|---|---|
| Hardware | Windows 7 to 11, 32-bit processes, 4 GB RAM, weak CPUs, often over remote desktop |
| POS | Known and unknown vendors: native Win32, Java, browser-based; often running elevated |
| Availability | Never block or crash the cashier's sale; every wait is bounded |
| Network | Flaky; receipts survive offline periods and restarts, with no duplicates |
| Privacy | GDPR: diagnostics never record what is typed on the till |
Architecture
Hover or tap any box for a plain-English explanation. Dashed boxes are systems I integrate with, not ones I built.
What I built
Key decisions
Short architecture decision records: the situation, what I chose, and what it cost.
Failure modes
Generic bug classes from a long-running Windows process on small machines.
AI developments
Finding out why a till stopped sending receipts used to take one person's laptop and memory. Now support asks a shared, audited agent from the dashboard. Every answer follows one report shape: verdict, timeline, code location, root cause, what was ruled out, how to verify.
Outcome