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
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 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



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 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 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


Further reading
The longer story, on Substack.
White Rabbit Foundry on Substack, 4 February 2026
From Streets to Screens: How Streetly Is Rethinking Local Delivery
How Streetly grew from a pedal-powered delivery idea into a platform for independent shops, their customers and zero-emission couriers, and what it took to design and build the technology, data and operations behind it.
Read the articleWhat 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.