White Rabbit Foundry

Case study: eStreet Services

Streetly. High street in your hands.

A local shopping and delivery platform for independent retailers and the cargo bikes that serve them: rebranded, rebuilt and launched on both app stores by White Rabbit Foundry, with a logistics back end no off-the-shelf platform could offer, a reporting tool that shows the whole business, and the channels we still run for them today.

Client
eStreet Services
What they do
Local retail delivery by cargo bike, across many independent shops
Where
United Kingdom
What we did
Rebrand, website, iOS and Android apps, logistics back end, reporting, channels
Built on
Flutter, Firebase and Firestore, Cloud Run (Node.js and Python), Google Cloud
Status
Live in both app stores; channels managed by us today
01

The brief

One basket, many shops, delivered by bike.

eStreet Services delivers for independent retailers with cargo bikes. The model is unusual: a customer wants things from three different shops on the same street, and wants them in one delivery, on the same day, without anyone driving a van. Off-the-shelf commerce platforms assume one merchant, one basket and a courier API. None of that fits.

We took the original concept, gave it a new name and identity, Streetly, relaunched the website at streetly.uk, and rebuilt the platform from the ground up so that the multi-shop, multi-pickup, zero-emission model was the design, not a workaround.

The Streetly website home page
streetly.uk after the rebrand: high street in your hands.
02

The app

Live on iOS and Android.

Shoppers browse the independent retailers around them, put items from several shops into one basket and choose same-day or scheduled delivery. Fees are worked out across the whole basket, per shop and per delivery slot, so the customer sees one honest total before they pay.

Underneath, a product search service on Cloud Run indexes every retailer’s catalogue and answers in milliseconds, and a smart-link service at app.streetly.uk turns a printed QR code or a social post into the right shop, collection or product inside the app, with scheduled redirects for campaigns.

  • Multi-shop basket with per-shop and per-slot fees
  • Same-day and scheduled zero-emission delivery
  • Bespoke search across every retailer
  • Smart links for marketing, QR codes and campaigns
  • One app for shoppers, shops and riders, on the App Store and Google Play
Shop Streetly on the App Store
Shop Streetly, live on the App Store and Google Play.
The Streetly app home: search, categories and local shops
The hub: search, categories and the shops around you.
A shop’s view of an active order, its pick-up and its delivery
The same app for the shops: a live order, its pick-up and where it is going. Details shown are dummied.
03

The logistics back end

Routing built for pick-ups before drop-offs.

A courier API plans one pick-up and one drop-off. A Streetly order might mean collecting from three shops, in the right order, for a rider on a bike with a time window to hit. So we wrote the logistics ourselves as cloud functions on Google Cloud.

The route service groups orders by delivery window, plans every pick-up ahead of every drop-off, works out the shortest sensible ride from a pre-computed distance matrix, and writes the routes to Firestore for the riders’ phones. The fee engine handles the awkward cases a multi-vendor model creates: partial baskets, custom delivery fees, refunds at basket level and at transaction level, and safe defaults when a shop’s configuration is missing so nobody is ever undercharged by accident.

  • Route generation with pick-up before drop-off precedence
  • Time-window grouping and rider assignment
  • Basket-level and transaction-level fee and refund logic
  • Parallel reads, batched writes and caching to keep it fast and cheap
The dispatch board with the day’s routes, riders and progress
Dispatch: the day’s routes, who is riding them and how far along each one is. Data shown is dummied.
A rider’s route in the app: a shop pick-up, then two doorsteps, with the map
The rider’s route: the shop pick-up first, then the doorsteps, on the map. Addresses shown are dummied.
04

The reporting tool

The whole business on one screen.

Once the platform was running, the next problem was seeing it. Orders in one place, deliveries in another, fees and refunds in a third. We built an internal reporting tool for the operating team that reads straight from the live data: orders, shops, riders, deliveries, revenue, fees, refunds and the exceptions that need a human, from a customer’s first tap to the rider’s last drop.

It is the same discipline we bring to every data engagement: one version of the numbers that the people running the business believe, delivered in time to act on.

  • End-to-end visibility: orders, shops, riders, deliveries, money
  • Live from the operating data, no exports
  • Exceptions surfaced, not buried
  • Built for the people who run the day, not for a board pack
The reporting overview with users, orders, revenue, fees, refunds and deliveries
Reporting: 28 days of users, orders, revenue, fees, refunds and deliveries at a glance, against the period before. Data shown is dummied.
The admin dashboard inside the app
The same numbers in the app, for the team on the move. Data shown is dummied.
05

The channels

Still with them, every week.

Launching was not the end. We run Streetly’s digital channels today: the automated emails and texts a customer gets from order to doorstep, the campaign emails and SMS that bring people back, and the social media presence that tells the story of the shops on the platform.

Because the same team built the platform, the channels are wired into it: a campaign can link straight to a shop or a product through app.streetly.uk, and what happens next shows up in the reporting tool.

  • Transactional email and SMS from order to delivery
  • Campaign email and SMS
  • Social media presence and content
  • Analytics back into the reporting tool
The Streetly welcome email with the three steps and four featured shops
The welcome email: the three steps and four local shops to start with.
The Streetly Instagram profile and a grid of recent posts
Social: the shops, the riders and the campaigns, told week by week on Instagram.

What it took

The services behind it.

Four of our five services, from one small team, over the life of the platform.

Have a business model the platforms do not fit?

Streetly needed its own logistics, its own search and its own reporting. If your idea does not fit the template either, that is exactly the kind of thing we build.