Social Commerce Platform

Shoppable posts, live drops and creator commissions

Design a social app where creators tag products in videos and live streams, viewers buy without leaving the app, limited drops sell out without overselling, and creators are paid a commission that is reversed when a sale is refunded.

Overview

A social commerce app puts a buy button inside the content. A creator tags a product in a video or holds it up during a live stream, a viewer taps the tag, sees the product card and pays without leaving the app. The platform takes the order, the seller ships it, and the creator earns a commission on the sale.

Three parts are worth the interview time. The live drop: a creator announces 2,000 units and 200,000 viewers tap at once; the system must sell exactly 2,000, fairly, in seconds. Attribution: when a viewer saw two creators promote the same product and bought a day later, which one gets the commission? The money: commissions are owed only on sales that stick, so a refund must reverse the commission, exactly once, even after a payout.

Most of the rest (video delivery, feed ranking, catalog tools) is its own system design problem; name it and keep it out of scope.

Questions to ask first

  • Checkout in the app or a link to the seller's site? — In the app: the platform takes the order and the payment
  • How big is a live drop? — Up to 200,000 viewers, a few thousand units, at most 2 per buyer
  • Which attribution model? — Last touch within 7 days, for the same product; stated to creators
  • When is a commission paid? — Monthly, once the return window for that sale has closed
  • Must paid promotion be labeled? — Yes: tagged affiliate content carries a disclosure label
  • Several sellers? — Yes, a marketplace; payments to sellers are out of scope here

What you will be able to do

  • Sell a limited live drop without overselling, with a per-buyer limit and holds that expire.
  • Size the live-stream burst and see that broadcasting the countdown, not selling, is the heavy part.
  • Attribute a sale to a creator with a stated window and model, and explain why in-app checkout makes this easier.
  • Keep a commission ledger where refunds reverse commissions exactly once and payouts are never doubled.
  • Say what disclosure rules mean for the product.

Key concepts

  • Product tags
  • In-app checkout
  • Limited drops
  • Atomic counter with a Lua script
  • Holds with expiry
  • Fan-out of the countdown
  • Attribution window
  • Last-touch vs first-touch
  • Commission ledger
  • Disclosure labels

Functional requirements

  • Creators tag products in videos, posts and live streams
  • Viewers open a product card from a tag and buy in the app
  • Creators run limited drops during a live stream with a live stock countdown
  • Each sale is attributed to at most one creator and content item
  • Creators see earnings: pending, payable and paid
  • Refunds and returns reverse the commission on that sale
  • Tagged affiliate content shows a disclosure label

Non-functional requirements

  • A drop never sells more units than it has (strict correctness)
  • The product card opens in under 300 ms at p99 (a target we chose)
  • The countdown on viewers' screens may lag by about a second; the sale may not
  • A commission is earned at most once per order line and reversed at most once
  • Attribution rules are deterministic: the same events always give the same creator

Interview questions

  • How do you sell a 2,000-unit drop to 200,000 viewers without overselling?
  • Why not just use a database row lock for the drop?
  • How do you show a live stock countdown to 200,000 viewers?
  • A viewer watched two creators promote the same lamp and bought it a day later. Who gets the commission?
  • Why does in-app checkout make attribution easier?
  • How do you reverse a commission when an order is refunded?
  • How do you make sure a creator is never paid twice for the same month?
  • What does the platform have to do about disclosure?

Sign up free to read the full topic

More System Design topics

Start free on Cariara · Coding problems · System design studio