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


- 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.
- 01
Buyer pays
The listing is reserved the moment checkout starts, so the pair cannot sell twice.
- 02
Seller ships to Resoled
The seller sends the pair to the Resoled warehouse, not to the buyer.
- 03
Entrupy and a human check
AI authentication through Entrupy, alongside a physical inspection.
- 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.

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

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

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.


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.




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.




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