Skip to content
AI Product DevelopmentCase study

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.

Built with
ReplitClaudeResend
Contractor pre-unlock view with Unlock Lead CTA and aerial preview

6 wks

Idea → live in Richmond

$0

Subscription · pay per lead

Pay-per-lead

Tiered credit ladder · live

443+

Automated tests

01 / What was happening

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.

showmethebids.com
Live
Show Me The Bids — live homepage with role-aware CTAs
02 / What we built · The marketplace
showmethebids.com / projects / 2
Live
Homeowner view of a roofing project — Storm Damage on Roof, structured roof details, contact-sharing controls
Live · homeowner POV
01 · Homeowner side

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
showmethebids.com / projects / 2
Live
Contractor pre-unlock view with a paywall card replacing the bid form
Pay credits → unlock
02 · Contractor side

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
showmethebids.com / admin
Live
Admin dashboard overview with sidebar navigation and nine stat cards covering homeowners, contractors, projects, disputes, EagleView
Admin · operator-first · live
03 · Admin side

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.

03 / How the model works
02 / 04·Pricing mechanic·Three tiers, one credit currency, live in /pricing
showmethebids · pricing mechanicPay-per-lead · no subscription

Roof tier · pay-per-lead

Bigger roof, bigger lead, bigger fee.

$
Lead fee
Small
Smaller roofs
$$
Lead fee
Medium
Mid-size roofs
$$$
Lead fee
Large
Larger roofs
No expiryRe-views freeEagleView refunds auto"Not Sure" → Medium
Source · shared/pricing.ts·UI never drifts from StripeLive in /pricing

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.

04 / Both surfaces, both roles
03 / 04·Responsive · two viewports·Contractor portal, real captures, real product
showmethebids.com / contractor
Live
Contractor portal on desktop with credit balance, radius slider, project grid
Desktop·Contractor portal · 1440 wide
Contractor portal on mobile with same controls, stacked
Mobile·iPhone 14 Pro · 390 wide

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.

05 / Operator surface
04 / 04·Admin · Overview·Operator-first · sidebar nav · drill-into queues
showmethebids.com / admin
Admin overview with nine stat cards and full sidebar navigation

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.