← Our work

Case study · Pyper GO · Unattended retail

A marine store with no staff and no till.

Pyper Marine runs small marine-supply stores in the Caribbean where boat crews buy parts with nobody behind the counter. Pyper GO is the kiosk that makes it work: tap a crew card, scan the parts, bill the vessel. No card, no cash, no staff.

Visit Pyper Marine
Who it's for
Boat crews at Pyper Marine's stores
Our role
Product, engineering, Shopify integration and device setup
Built
June to September 2026
Status
Deployed; crew rollout next
The Pyper GO kiosk asking a crew member to tap their crew card

Working end to end on day one.

1 dayto a working bill-to-vessel checkout
10days of build, spread over ten weeks
0staff or card machines in the store
4screens from tap to receipt

The store runs itself, so the checkout has to.

A self-checkout in a supermarket still has someone nearby. Pyper Marine's stores don't. Every purchase has to be identified, priced, billed and taken off the shelf with nobody there to help.

Nobody behind the counter

Pyper Marine runs small marine-supply stores in the Caribbean, where crews come in for parts with no staff present. There is no one to take payment and no terminal to take it on.

Every sale belongs to a boat

Crews buy on their vessel's account, and crew move between boats. Every purchase has to land on the right vessel, the one the crew member is on today.

Billing shouldn't need a detective

Unattributed sales mean a weekly reconciliation job. The back office should be able to batch-invoice each vessel without chasing who bought what.

Small slices, real hardware, the live store.

We didn't build in the dark for months. A thin version worked on the first day, and every risky assumption met the real kiosk or the real store as early as we could arrange it.

  1. 1Discover

    Decisions on paper before code

    We wrote the scope as three objectives and six capabilities, then put every open question to the client as a decision: card only or card plus PIN, how the kiosk resets, whether repair job numbers belong in the first release. Each one was answered and recorded.

  2. 2Ship

    A walking skeleton on day one

    By the end of the first day, one thin slice worked end to end: tap, scan, bill to the vessel. Every later piece hung off that skeleton, first on the real Zebra hardware, then against the live store and its locations.

  3. 3Measure

    Test the plan against the real store

    The plan called for a small database of our own. A read-only probe of the live Shopify store showed it could hold everything we needed, so the database was dropped. The first real order went through the live store before anyone called it done.

Tap, scan, bill the vessel.

Four screens, designed for a standing crew member at arm's length, possibly with wet hands. Large targets, almost no typing, and no payment step at all.

Tap a card to start

A crew member taps their NFC crew card. The kiosk knows who they are and which vessel they're on right now, with no username or password.

Scan the parts

The kiosk's built-in scanner adds each part to the cart as it's scanned. Swipe a line to remove it.

Bill to my vessel

One large button. The order goes to the vessel's company account at its own price list, marked unpaid, ready for the weekly invoice run.

Job numbers for repairs

Crews can add a technical ticket number at checkout. It lands on the order as a tag, so repair work can be charged on to the right job.

Stock leaves the right shelf

Each kiosk is linked to its store's location. When an order closes, stock comes off that store, not the warehouse, so inventory stays true across sites.

Resets itself

After 45 seconds idle, a 15-second countdown appears, then the session and cart clear. The next crew member never sees the last one's order.

Under the hood.

The kiosk is the easy part to see. The work is in keeping identity, prices, billing and stock correct in Shopify, the store's single source of truth, with nobody on site to fix a mistake.

  • React Native · Expo
  • TypeScript
  • Node · Express
  • Shopify Admin GraphQL
  • Zebra KC50
  • DataWedge
  • NFC (DESFire)
  • Docker
  • Kubernetes · Helm
  • GitLab CI

Shopify is the system of record

The service behind the kiosk keeps no database. A card's ID lives on the Shopify customer, and the crew member's vessel is Shopify's own company contact, looked up live on every order, so moving crew between boats takes effect immediately.

The kiosk never invents money

Shopify calculates every total, including each vessel's B2B price list. The kiosk shows what Shopify says, so a price can never drift between the screen and the invoice.

Fails where someone will see it

If Shopify refuses to move stock to the kiosk's location, the order is still created and tagged for the back office as a worklist. A crew member is never stuck at the till, and nothing goes missing quietly.

Built on the real hardware

It runs on a 22-inch Zebra KC50 Android kiosk. Scanning goes through Zebra's DataWedge, cards through the device's NFC reader. We tested on the unit itself, including fitting a scanner when it arrived without one.

Locked down without a login screen

The kiosk and its service share a secret key, and anything else is refused. Linking a kiosk to a store sits behind a staff PIN that locks out for longer after each run of wrong guesses.

Specs that run

Behaviour is written as plain-language scenarios that run as tests. One set of example data feeds the fakes, the Shopify development store and the device, so the three can't disagree.

Ten days of build, done properly.

Work landed in three short pushes: the skeleton in June, the device in August, the live store in September. Twelve decisions are written up with their reasons, and every release passes the same gates.

  1. 1TestTypes, unit and acceptance tests on fakes
  2. 2ContractAgainst Shopify, nightly too
  3. 3BuildOne container for the service
  4. 4DeployKubernetes, on each tagged release
96commits, June to September 2026
12architecture decision records
5executable specs
8tagged releases

Ready for the crews.

Pyper GO is deployed to production, and its first real order went through Pyper Marine's live Shopify store. The next step is the rollout: moving crews onto their vessels' company accounts store-wide and locking each kiosk to the app.

“I did not think it was possible to move so quickly from conception of an idea to the actual delivery of the product, in a state that was ready to use on day one. It is the first time I have seen a complex software system being delivered ahead of schedule.”
Heinrych PyperCEO, Pyper Yachts

Have a process that still needs a person in the loop?

Thirty minutes with Regardt or Dean. You'll leave with the user problem to solve first, a first release scope and an initial budget range.

Book a free call