# Case study: Retail Returns & Uplift Platform

> One system for collecting returned stock from stores nationwide, from the schedule to the signed proof, the sealed bag at the depot, and the supplier's claim. Hundreds of operators use its offline field app every day, and more than 37,000 uplifts were captured in the last year.

- URL: https://www.happen.software/case-studies/retail-returns-uplift-platform
- Publisher: Happen Software (https://www.happen.software/)

## At a glance

- **Client**: National retail returns specialist
- **Category**: Logistics · Field & mobile apps
- **Running**: Since 2018 · 8 years
- **Users**: Field operators, depot teams, schedulers, management, and suppliers' own staff
- **Engagement**: Build, run, and evolve, since 2018
- **Scale**: 37,000+ uplifts a year from nearly 2,000 stores, for 21 suppliers
- **Platforms**: Offline web app for operators, a management and supplier portal, and a stock portal
- **Integrations**: The merchandisers' returns app we also built, claim OCR and AI, Google Maps, and email
- **Visibility**: 18 dashboards, 25 reports on request, 10 scheduled reports, a report builder, and an AI assistant

## Outcomes

- **37,000+**: Uplifts captured in the last year, more than 3,100 a month
- **Hundreds**: Of operators collecting returned stock from stores around the country, every day
- **10,000+**: Stores set up for collection, with nearly 2,000 visited in the last year
- **21**: Suppliers with collections in the last year, of 33 set up

## Context

Our client collects returned stock from retail stores across the country for the suppliers who own it. They call each collection an uplift. Every uplift has to be planned, counted, sealed, approved by the supplier when it's large enough, proved with a signed document, matched to the store's claim, and tracked until the stock is safely in a depot.

That work used to be spread across off-the-shelf apps and plenty of Excel sheets. We built one system to run it end to end, and have kept extending it since 2018. The field app began as a store app on phones and now runs as an installable web app that works offline, so operators can capture a whole collection in a back room with no signal.

## The challenge

- **Work split across tools**: Off-the-shelf apps and spreadsheets each held part of the job, so nothing joined the visit, the approval, the claim, and the stock.
- **Proof the supplier will accept**: Each collection needs evidence: what was taken, in which sealed bag, from which store, signed by whom, and approved by the right person.
- **Stock that keeps moving**: Sealed bags pass from operator to truck to depot, and a missing bag or a weight that doesn't match has to show up the day it happens, not at month end.

## Before and after

| Area | Without it | With the platform |
|---|---|---|
| Scheduling | Visits planned by hand, store by store. | Appointments created every night, a week ahead, from each store's call-day templates. |
| Approval | Approvals chased by phone and email. | Each supplier's rules route an uplift to the right authoriser, with reminders until it's decided. |
| Proof | Evidence gathered after the fact. | One signed PDF per uplift with products, seals, weights, photos, claim documents, and a map. |
| Claims | Claim documents checked by eye. | OCR confirms the claim number on the photo, and AI compares the document with what was collected. |
| Stock | No single view of where each sealed bag is. | Every seal scanned at drop-off, assignment, and arrival, with missing seals listed on the spot. |
| Reporting | Reports built by hand in Excel. | 25 reports on request, 10 emailed on a schedule, a report builder for custom reports, and plain-language questions answered by AI. |

## An uplift, end to end

1. **Plan**: Each night, appointments are created a week ahead from every store's call days, skipping closed dates. Ad-hoc requests and those raised by merchandisers are added too, and at 16:30 each operator is emailed tomorrow's list.
2. **Capture**: In the store, with or without signal, the operator scans the seal numbers and records products, quantities, stock statuses, and photos for each supplier.
3. **Authorise**: If the value or units cross the supplier's rule for that region and channel, the named authoriser is emailed a link to approve or cancel. Requests still pending are re-sent at 13:30 on weekdays.
4. **Submit**: The operator adds the claim number and document photos, and blurred photos are rejected on the spot. Operator and store sign, and the app checks how far the operator is from the store.
5. **Verify**: OCR finds the claim number on the photo, then the signed PDF is emailed to the supplier's contacts, the operator, and anyone set up for that store. For suppliers that use it, AI reads the claim and flags any mismatch.
6. **Track the stock**: Bags are scanned into a depot with their weight and photos, assigned to an operator or truck, and checked in on arrival. Missing seals are listed when the arrival closes.

## What we built

- **Offline field app**: An installable web app with no app store needed. Schedules, products, rules, and photos are kept on the phone, so a whole uplift can be captured without signal and uploaded later. Paused work can carry on from another device.
- **Automatic scheduling**: Call-day and week templates per store and supplier create appointments a week ahead every night. Ad-hoc and bulk requests come in from Excel, and merchandisers' requests can be scheduled without anyone touching them.
- **Rule-based authorisations**: Each supplier sets value and unit bands by region and channel, and the most specific rule picks the authoriser. The rules applied are saved with every request, and pending requests are chased automatically.
- **Claim OCR & AI checks**: Blurred claim photos are blocked on the phone. OCR confirms the claim number on the document. For suppliers that use it, AI reads the claim's products and seal numbers and flags anything that doesn't match the collection.
- **Seal custody**: Every sealed bag is tracked through depot drop-off, operator and truck assignment, arrival, and stock on hand, with weight checks against target, seal age, and missing-seal reports.
- **Linked to merchandisers**: Return requests raised in the merchandisers' app, which we also built, arrive mapped to the right stores and products. Scheduled dates and outcomes go back, with units, weights, claim numbers, and a link to the signed document.
- **Dashboards & reports**: 14 operations dashboards, from outstanding authorisations to late appointments and operator locations, and 4 stock dashboards. 25 Excel reports on request, plus 10 emailed on a schedule.
- **Report builder**: Staff build their own multi-sheet Excel reports from more than 60 fields across uplifts, authorisations, claims, stock, and products, with grouping, totals, and sorting, or start from a sheet of an existing report. Reports are previewed, saved for the team, branded with the supplier's logo, and downloaded or emailed.
- **AI data assistant**: Staff ask questions in plain language, by typing or by voice, and get answers, tables, and Excel files. It reads through a read-only connection, limits each portal user to the data areas they're permitted, and follows written business rules.

## What each team gets

### Operators

- Tomorrow's appointments by email at 16:30
- Capture that works with no signal
- A 17:00 email listing anything overdue

### Depot teams

- Bags scanned in with weight and photos
- Stock assigned to operators or trucks
- Missing seals listed when an arrival closes

### Schedulers

- Appointments created a week ahead, automatically
- Ad-hoc and bulk requests imported from Excel
- Dashboards for unconfirmed, late, and unset visits

### Management

- A compliance report through the day
- Closed arrivals at 06:00 and a summary at 17:30
- Compliance month to date, and year to date at month end

### Suppliers

- Their own portal, limited to their own data
- A signed PDF for every collection
- A nightly month-to-date uplift summary, if they choose

### Authorisers

- Only the uplifts their rules send to them
- An email with the value and a link to decide
- A reminder at 13:30 on weekdays until it's done

## How it was delivered

- **2018, Launch**: Scheduling, uplift capture, seals, depots, and authorisations, built from March and set up for production by July.
- **2020–2022, Claims & merchandisers**: OCR checks on claim documents, the link to the merchandisers' returns app, and version 3 of the field app, which already cached itself for offline use.
- **2023–2024, Stock & AI claims**: A stock portal tracking every sealed bag through depots and trucks, and AI reading of claim documents.
- **2026, Web app & AI assistant**: The store app retired in favour of an installable offline web app, an AI data assistant and a report builder in the stock portal.

## Engineering

- Offline-first capture: work kept on the device and reconciled both ways, so a paused uplift can be picked up on another phone, and an uplift can be locked to one device.
- History that doesn't move: each uplift saves the store, supplier, operator, managers, VAT rate, and the authorisation rules applied at the time.
- Duplicate protection on every upload: finished uplifts aren't saved twice, seal numbers are checked, already-uploaded photos are reused, and scanning sessions are matched by content.
- Photo quality checked on the phone, and claim photos cleaned up on the server before OCR.
- An AI assistant with guardrails: a read-only database connection plus query checks, sensitive tables blocked, and permissions re-checked on every question.
- Email goes through a queue that retries failed sends, and reports are built in a background queue, so slow work never holds up an operator in the field.
- Kept current with regular technology, library, and framework updates, along with ongoing performance and security improvements.

Stack: .NET, ASP.NET Core, SQL Server, Angular, Ionic, Progressive web app, Google Maps, GitHub Actions

## Get in touch

Running field work on apps and spreadsheets? We'll talk through how one system could plan the visits, capture the proof offline, and track the stock for your team. Book a free 30-minute call with one of our engineers.

Contact: https://www.happen.software/contact or sales@happen.software
