Marketplace
A marketplace for local home services
Homeowners describe a job, local tradespeople quote for it, and the homeowner picks one. Payment is held until the homeowner confirms the job is done. Tradespeople are verified before they can quote, and both sides review each other afterwards.
Automatically generated draft
Written by machine against our own engineering playbook. The company is invented; the decisions are the ones we would make on a real build. A reviewed blueprint goes further — nine sections, agreed line by line, and it is what the build is tested against.
Section 01 · What has to work
Homeowners describe a home repair job, verified tradespeople submit competitive bids, and escrowed funds are released upon job confirmation.
Section 03 · Screens
Every screen, and what it is for.
- ›Job Intake — Homeowner posts project details, photo attachments, and budget; must load instantly.
- ›Tradesperson Dashboard — Verified trade views local open leads and submits quote; feed must be instant.
- ›Quote Review — Homeowner compares bids, tradesperson profiles, and licensing; list updates instantly.
- ›Escrow Checkout — Homeowner funds job via payment gateway; processing status updates instantly.
- ›Job Completion — Homeowner or trade marks work finished; status badge updates instantly.
Anything not on this list is not in version one. That is what keeps a fixed price fixed.
Section 04 · The data model
What it stores, and who can read a row.
job
id uuid, homeowner_id uuid, title text, description text, budget numeric(10,2), status enum(draft,open,awarded,completed,cancelled), created_at timestamptz
Access · Homeowners read own jobs; verified tradespeople read open jobs in their service area.
quote
id uuid, job_id uuid, tradesperson_id uuid, amount numeric(10,2), message text, status enum(pending,accepted,rejected), created_at timestamptz
Access · Homeowner reads quotes for their job; tradesperson reads own submitted quotes.
escrow
id uuid, job_id uuid, amount numeric(10,2), status enum(held,released,refunded), transaction_ref text, updated_at timestamptz
Access · Homeowner and assigned tradesperson read escrow tied to their job.
review
id uuid, job_id uuid, author_id uuid, target_id uuid, rating int, comment text, created_at timestamptz
Access · Publicly readable once both parties submit reviews or the review window closes.
tradesperson_profile
id uuid, user_id uuid, license_number text, verification_status enum(pending,verified,rejected), service_radius_km int, updated_at timestamptz
Access · Publicly readable for verified profiles; unverified profiles read only by owner and admins.
Those access rules belong in the database, not in the screens. Someone who edits the address bar still cannot read a row that is not theirs — and the test that proves it blocks delivery if it fails.
Section 05 · States
draft → open → awarded → completed | cancelled
Most scope arguments three weeks into a build are really arguments about a state nobody named at the start.
Section 06 · Where this breaks
What bites products like this one.
Disputes over whether a job is finished can freeze escrow funds indefinitely.
Implement a clear admin mediation workflow with a 14-day automatic release window.
Tradespeople submitting fake licenses could compromise marketplace trust and liability.
Integrate manual review queues and third-party document verification APIs before quote permissions are granted.
Section 08 · Deliberately left out
What version one does not do.
- ×Multi-milestone escrow payments — Adds excessive complexity to accounting; single upfront hold makes v1 viable.
- ×In-app messaging and media sharing — High engineering overhead; redirect to masked phone numbers or simple text notes for v1.
This is the section that protects the date, and the only place in the document where somebody says no. It is also why clients trust the rest of it.
Still open
What we would ask before quoting.
- What specific third-party service or manual process will be used to verify tradesperson licenses?
- How are payment gateway fees handled when a homeowner requests a refund on a cancelled job?
Half of this already exists
Members Circle
The community half of this is a solved problem: paid membership, moderation triaged automatically, and a weekly digest that brings people back.
It is one of our pre-built products: the code is handed over to you, adapted to your own wording and rules, and the rest of the specification above is built on top of it rather than from scratch.
Your product, not this one
Get this written for what you are actually building.
Describe it in a sentence and the generator returns the same sections for your own product. Free, no email, nothing saved to a list.
Next step
Find out if your idea fits in 10 working days.
Tell us what you want to build. We reply the same day with a straight yes, no, or here is what we would cut.