We built a two-sided marketplace in six weeks.
Show Me The Bids connects Virginia homeowners with verified roofing contractors through a credit-paid lead model. Two roles, three dashboards, 17 transactional emails, 443 automated tests, all shipped in six weeks of AI-accelerated builds.

6 wks
Idea → live in Richmond
$0
Subscription · pay per lead
Pay-per-lead
Tiered credit ladder · live
443+
Automated tests
The bid economy is broken on both sides.
Two Virginia entrepreneurs had watched the home renovation market fail in the same way for years. Homeowners called five contractors and waited days for callbacks. Contractors drove across the state to leads that turned out to be tire-kickers with no budget and no scope.
They had the vision. What they needed was a builder who could turn a working theory into working software in a window short enough to actually launch. Architecture, schema, two role-specific UIs, payments, an admin panel.
They came with the vision. We executed it to the dot. Six weeks later, showmethebids.com was live in Richmond.


Post once. See bids land.
A structured intake captures roof type, square footage, condition, materials, photos, and timeline. The platform geocodes the address and notifies verified contractors in range. The homeowner does the work once.
- Category-specific intake form
- Side-by-side bid comparison
- Free forever

Pay credits. Unlock the lead.
Contractors browse free. They see the city, the roof tier, and an aerial preview. The moment they spend credits the address, the EagleView aerial measurement report, and the homeowner's contact info are revealed. No friction between paying and selling.
- DPOR-verified license required
- Service-radius slider, configurable
- One bid per project, no duplicates

Operate the marketplace from one panel.
Stat cards on the overview, each clickable into the queue it represents. Pending verifications. Geocoding failures. EagleView re-orders. A dev-emails preview that renders every Resend template through DOMPurify before send.
- Stat cards · drill-into queues
- Manual DPOR verification flow
- EagleView re-order panel
Two roles, three dashboards, one credit-paid path.
The mechanic is simple. Homeowners post a project once. Contractors browse leads free, then pay credits to unlock the address, the EagleView aerial measurement report, and the homeowner’s contact info. Pay once. Message direct.
Roof tier · pay-per-lead
Bigger roof, bigger lead, bigger fee.
Bigger roof, bigger lead, bigger fee.
Three tiers of credits, scaled to roof size. EagleView returns the actual square footage after unlock, and the tier reclassifies if the homeowner’s “Not Sure” estimate was off. Re-views are free. Reports that fail trigger automatic refunds.
Pay only for the leads you want. The price the UI shows is sourced from the same file Stripe charges from. The numbers never drift.


The same product, three ways.
A homeowner signs up on her phone in two minutes. A contractor browses leads from the cab of a truck before the next site visit. An admin verifies a license against the Virginia DPOR from a laptop at the kitchen table. The platform has to work the same on every surface.
Responsive web only. No native apps. Every interaction (sliding service radius, picking trades, comparing bids, unlocking a lead, approving a contractor) lives in the same React app, same shadcn primitives, same tailwind tokens. Mobile is not a stripped-down cousin of desktop. It is the same product.

An admin panel built like a command center.
The founders don’t write code. They run the marketplace. So the admin panel had to read like a command center, not a developer console.
Stat cards on the overview, each clickable into the relevant queue. A pending-verification queue with the contractor’s license number, type, expiration, and Google Business Profile link, ready for a manual DPOR check. A geocoding-issues view for projects where address lookup failed. An EagleView panel for re-ordering or cancelling a stalled report. A dev-emails preview that renders every Resend template through DOMPurify, useful for QA without spamming inboxes.
The admin panel is a deliverable, not an afterthought. It is the surface that lets the operators run the marketplace without a ticket queue.
05 / The lesson
The code writes fast. The marketplace mechanics take real thinking.
Every decision had a footprint. The credit tier ladder. The EagleView refund trigger. The 14-day completion-request cooldown. The free re-view. Each one looks like a small UX line. Each one is a marketplace rule with downstream consequences.
AI can write the code. AI does not draw the line between a free re-view and a paid second unlock. AI does not decide what happens to a contractor’s credit balance when the homeowner cancels. AI does not pick the radius default. Those are product judgments, and they are the entire job.
Show Me The Bids taught us how to build a real-money marketplace at speed without skipping the mechanics. The code wrote fast. The decisions about what code to write took the real time. That is the lesson we now bring to every product engagement.
Next step