# Design a freelance marketplace like Upwork: system design interview question

> A marketplace combines profile search, job matches, exclusive job awards, and contract payments that must remain correct after retries.

Source: https://sysround.com/questions/design-freelance-marketplace-like-upwork
Updated: 2026-11-05


Difficulty: hard. Levels: Senior, Staff+.

## How the interviewer opens it

"Design a freelance marketplace where clients post jobs and freelancers submit proposals. Support profile search, job matches, and contracts between clients and freelancers."

## What to clarify first

- Job and contract model
- Scale and job lifetime
- Read and write traffic
- Search and matches
- Latency and freshness
- Correctness and durability
- Milestone funds
- Access and privacy
- Retention and content size
- Excluded features

## Scope of a strong answer

Core requirements:

- Post jobs and submit proposals
- Search public profiles and open jobs
- Recommend jobs from profile fields
- Award jobs and manage funded milestone contracts

Usually out of scope:

- Hourly work and time records
- Chat and video calls
- Contract disputes and partial refunds
- Payment provider internals
- Tax calculations

## What interviewers probe

### Job search and matches

Job matches must respect user preferences. Stale search results must not expose hidden profiles or permit actions on unavailable jobs.

### Job awards and agreed terms

Concurrent awards and proposal edits can create two contracts or a contract whose terms neither party intended.

### Milestone progress and payments

The database and payment provider cannot commit together. Timeouts and delayed callbacks leave money outcomes uncertain.

## Common mistakes

- The design accepts expired jobs because search results or the stored status still show them as open.
- The design permits two contracts for one job.
- The contract refers to proposal terms that the freelancer can still change.
- The design treats a provider timeout as a failed transfer.
- The public search index contains private proposals or contact details.
- The design adds machine learning before it defines match rules or measures match quality.

## The bar by level

- **Senior:** Handles proposal version conflicts, expired jobs, retries, and uncertain payments. Uses durable events and provider idempotency. Separates search freshness from contract correctness and profile access.
- **Staff+:** Defines money invariants and recovery rules across the database and provider. Plans reconciliation for unresolved transfers. Explains regional failover without duplicate awards or transfers. Measures match quality and limits search cost.

Practice this question with an AI interviewer: https://sysround.com/practice/new?problem=freelance-services-marketplace


---
SysRound (https://sysround.com) is an AI practice tool for system design interviews. It has a voice or typed AI interviewer and a shared whiteboard. At the end, you get feedback on each skill and a model answer. The AI feedback can be wrong.
