Marketplace
Anvil
A marketplace for skilled labor: post a job once, verified pros bid, compare on value, hire.
Hiring a tradesperson usually means chasing leads and guessing who to trust. Anvil turns that around.
A customer describes the job once. Pros who have been verified by hand bid on it, and bids are compared on value (warranty, timeline, track record) rather than price alone. Jobs are matched to pros by trade and location.
- Status
- Live product with a public site, under the Harbr name.
- Stack
- Next.js, React, TypeScript, Convex, Clerk, Tailwind, Zod, Vitest, Playwright
Why it exists
Customers chase quotes, wait on slow estimates and can't tell who's reputable. Pros pay for dead-end leads, quote for free and get pulled into bidding wars that wear down their rates.
Anvil puts a person between the two. Someone reviews every job and every pro, so customers hear from people who've been checked and pros quote on work that's been read.
The public site lists it as live in Queens and Nassau County, with handyman work, appliance repair, mobile mechanics, TV mounting, PC building and small installations.
Try it
Bids arrive on a price line; the strongest value is explained, not scored. This is a faithful demo built for this site with fictional data, not the product itself.
Bid exchange · Faithful demo · fictional data
One run through it
Post the brief
The customer posts a category, the details, a ZIP code and a timeline.
A person reads it
Someone on the team reviews each brief. A vague one gets questions back, and the customer edits and resubmits.
Verified pros quote
Pros send a fixed price, a timeline and an optional warranty without seeing the customer's address or contact details. Rival bids show up as Pro #2 or Pro #3.
Compare on value
Quotes line up side by side with the best value first and the lowest price one tap away.
Hold to hire
The customer holds to hire. Contact details unlock, and the work and payment happen directly between the two of them.
Proof and reviews
The pro uploads before-and-after photos, the customer confirms, and both leave public reviews tied to the finished job.
What it does
One job, many bids
Draft, review, open for bids, hired, in progress, complete. An admin approves every job before pros see it.
Verification first
License, insurance and ID are checked by hand. Only verified pros see the board or bid.
Anonymous rivals
Pros see competing bids as Pro #2 or Pro #3: amounts and timelines, never names.
Best value by default
Bids sort by verification, then warranty, then speed, then price. Lowest price is always one tap away.
Hold to hire
Hiring is a deliberate hold, and contact details unlock for both sides only after it.
After the hire
Messaging, before-and-after photo proof, and two-sided reviews.
Why it's built this way
People check everything
Every job and every pro gets a human review. A lead site sells the lead and walks away; this one checks who's on it first.
New pros start clean
A new pro shows "New, building reputation" instead of an average, so one harsh early review can't define them and nobody gets a made-up default rating.
Reasons instead of scores
The strongest bid comes with the reasons it leads, written out. Warranty, timeline and price stay visible as a trade-off.
History can't be rewritten
The server rejects illegal status changes and logs every change, so a job's record can't be quietly edited.
How it fits together
- 01Next.js and Convex, with deny-by-default permissions checked on the server for every read and write.
- 02One source of truth for job and bid states; validators are derived from it.
- 03Developed with a parallel agent orchestrator, each agent on its own worktree and deployment.
In plain terms
- Brief
- The site's word for a job post.
- Fixed quote
- A set price for the whole job, which is what pros bid.
- Neutral venue
- The platform connects customer and pro without being a party to the job.
- Deny by default
- Access fails unless both the user's role and their ownership of the record check out.