Skip to content

Marketplace, iOS and AndroidFounder-led product

Resoled

An authenticated sneaker and streetwear resale marketplace, live on the web, the App Store and Google Play.

Resellers had stock and no storefront. Buyers had no way to tell a real pair from a risk. Resoled puts authentication inside the transaction itself, so trust is a stage every order passes through rather than a badge on a listing.

Role
Founder and product lead. Discovery, product definition, requirements, buyer and seller journeys, the commercial model, payments and authentication flow, QA and app store release.
Timeline
2020 to now
Stack
React, Express, PostgreSQL, Drizzle, Mollie, Entrupy, Capacitor
resoled.app
Resoled homepage on the web: Something for everyone, with Shop now and Start selling
Resoled homepage in the iOS app
Live surfaces: web, iOS and Android
3
API endpoints across 69 groups
460
Numbered product requirements
191
Automated tests across 7 suites
127

Counted from the Resoled codebase and requirements document.

The opportunity

A market with supply and no infrastructure

Sneaker and streetwear resale ran through group chats, story posts and marketplaces built for something else.

Discovery started inside reseller communities containing more than 10,000 participants. The pattern was consistent. Sellers had stock and no storefront, no reliable way to price against the market, and no way to prove a pair was genuine.

Buyers had the mirror problem. Every listing looked the same, and the only signal of trust was the seller's follower count. That is a market with a fraud tax priced in, and the honest sellers are the ones who pay it.

Users and context

Two products sharing one catalogue

Buyers

Need. Want the pair they are after at a fair price, with certainty it is real and a clear idea of when it arrives.

Get. Price comparison across sizes and colourways, authentication on every order, buyer protection and tracked delivery.

Sellers

Need. Want to list quickly, price competitively and know exactly what they will be paid, without arguing with buyers about authenticity.

Get. A three-step listing flow with a live market check, the full fee breakdown before they commit, and payouts tied to a clear order state.

A marketplace only works if both sides arrive, so each side had to be worth using on day one by itself. That decided the build order: authentication, protection and payouts were not a later trust layer, they were the reason anyone would move off a group chat.

Authentication is a stage in the transaction, not a badge on a listing.

The defining decision

Every order passes through authentication

Most marketplaces verify a seller once and hope. On Resoled, the item itself is checked on every sale, and stock, payment, shipping and payout all wait on that result.

  1. 01

    Buyer pays

    The listing is reserved the moment checkout starts, so the pair cannot sell twice.

  2. 02

    Seller ships to Resoled

    The seller sends the pair to the Resoled warehouse, not to the buyer.

  3. 03

    Entrupy and a human check

    AI authentication through Entrupy, alongside a physical inspection.

  4. 04

    Pass ships, fail reverses

    A pass ships to the buyer, and the seller is paid after delivery. A fail returns the item to the seller and refunds the buyer in full.

The commercial model follows the same logic. Authentication is charged to the buyer at £4.99, and sellers see the 9% seller fee on the pricing screen before they list, so nobody discovers a cost after the sale.

UX and journeys

The buyer journey

Discovery, then confidence, then checkout. Every screen between landing and paying had to remove a reason to hesitate.

  1. Resoled home screen with a new arrivals carousel and an on-sale rail

    01Land

    Rails for new arrivals and reductions, so the first screen answers what is new and what is cheap without a search.

  2. Resoled shop with Supreme and Air Jordan filters applied and trust badges beneath

    02Filter

    Brand, category and price filters shown as removable chips, with the authentication and protection guarantees directly under the filter bar.

  3. Resoled product page showing price, other colourways, style code and size selection

    03Compare and decide

    The lowest available price, other colourways, style code and dispatch promise on one screen. Size comes before the basket, not after.

The seller journey

The part of the product that had to be clearly better than a group chat.

Listing is three steps: size, price, list. The market check sits inside the price step, so a seller sees where their price lands against the current lowest before committing, and is told plainly when there is no market data for that size yet.

The earnings breakdown shows the asking price, the seller fee and what they will actually receive on the same screen. No fee is discovered after the sale. Shipping responsibility is stated in the flow, not in the terms and conditions.

Resoled listing flow step one: size selection under a size, price and list progress indicator
Size first, with progress stated up front.
Resoled listing flow step two: market position check and an earnings breakdown with the 9% seller fee
Market position and the full earnings breakdown.

Retention

A reason to open the app on a Tuesday

A marketplace people only open when they intend to buy has a retention problem.

Discover is a content surface inside the product rather than a social account: short-form video, longer features and community polls that put a question to everyone and show the answer. It gives buyers a reason to come back between purchases and gives sellers an audience that is not rented from a platform.

Resoled Discover tab with the community hub header and Resoled Shorts rail
Resoled Shorts full-screen video with like, comment and share controls
Resoled TV listing longer community video features
Resoled community polls with vote options

Technical implementation

One codebase, three surfaces

Web, iOS and Android ship from the same application, so a fix reaches every customer at once.

The client is React with Radix primitives; the server is Express with Drizzle over PostgreSQL. The native apps are Capacitor builds of the same product, with push notifications, Google sign-in and haptics.

Payments run on Mollie. The Payments API handles checkout, the Orders API carries itemised orders, which Klarna requires, and Mollie Connect pays sellers out over OAuth. Seven payment methods are live, and buy-now-pay-later is limited to signed-in accounts.

Catalogue and search

Filterable catalogue across brand, category, gender and price, with size-level stock.

Listing and pricing

Size-level pricing, live market comparison and the earnings calculation before listing.

Authentication flow

Warehouse intake, Entrupy and physical checks, and order states that hold payout until delivery.

Payments and payouts

Mollie Payments and Orders APIs for checkout, Mollie Connect for seller payouts.

Accounts

Buyer and seller account states, with Google sign-in on native.

Content and community

Video, editorial and polls served through the same API as the catalogue.

Launch

Live on the web, the App Store and Google Play

Resoled is published under Resoled.APP LTD. The iOS app was first released on 6 March 2026, and store listings, release builds and review submissions were run as part of launch.

Resoled iOS sign-up: Marketplace, done right
Resoled iOS product page for the Nike Air Force 1 Low x Central Cee Syna
Resoled iOS shop grid with prices, sizes and sale labels
Resoled iOS Discover with Shorts, TV and polls
The native iOS app, captured on iPhone.
Gross merchandise value
£150k+
Registered users
500+
Products listed
1,000+
Database tables behind it
58

Commercial figures are company figures as at September 2026. The table count is from the codebase.

Lessons

What carries into the next marketplace

  • Trust is an interface problem first

    Guarantees only change behaviour where people hesitate: on the listing, under the filter bar, inside the sell flow. Moved to a policy page, they may as well not exist.

  • Show sellers the number

    The most valuable screen in the product is the one that tells a seller what they will actually be paid. The rest of the listing flow is admin.

  • Payments shape the product

    Klarna's need for itemised orders and the decision to restrict pay-later to signed-in accounts both changed flows that looked finished. Choose the payment architecture before the checkout design is final.

  • Wrap before you rewrite

    Shipping native through Capacitor got Resoled onto both stores without forking the product. The time to revisit that is when a feature genuinely needs the native layer, not before.

Building something like this?

Tell us what you have in mind. You will get an honest view of scope, sequence and cost.

Next project

SyncLayer

Inventory, product and order sync across Shopify, WooCommerce and custom storefronts, with a retailer network on top.