
Contractors Watch
A private property-history platform for verified US contractors, built from scratch in Next.js: search an address, read reviewed reports from other contractors, and decide before you sign.


Hover a screen to scroll the page
Overview
Contractors Watch is a private tool for US contractors, organised by property address. Before pricing a job, a contractor searches the address and reads what other verified contractors ran into there: late payments, change-order disputes, site access problems, and how each one ended.
I built the whole product from scratch as a custom Next.js application: the marketing site, sign-up and business verification, the contractor workspace, the reporting and review flows, and memberships on Stripe.
- Client
- Contractors Watch
- Industry
- Construction
- Location
- United States
- Year
- 2026
- Services
- Product strategy
- UX and UI design
- Custom Next.js development
- Verification and review workflows
- Stripe subscriptions
- Technical SEO
Built for every screen
The same site, laid out for each screen. Drag the edge of the window or pick a device. Hover the screen to scroll the whole page.



On real devices



The challenge
Contractors usually find out about a difficult property the hard way: after the material is bought, the crew has done the work and the last invoice is not paid. Other crews often knew, but nothing connected them. A public review site was not the answer either, because it would expose homeowners and put the contractors who spoke up at risk.
Sensitive information
A report about a property can hurt someone. Nothing could go live without checks, and a wrong report needed a clear way to be corrected.
Privacy on both sides
Homeowner names and contact details could never appear, and the contractor who filed a report had to stay anonymous.
Real contractors only
Access had to be limited to verified, licensed and insured businesses, with rules nobody could skip by accident.
Easy to start, simple to pay
Contractors needed to see the value before paying, without the free trial turning into a loophole.
Give contractors a private, reviewed history of every address before they sign, keep homeowners and reporters out of the spotlight, and make the system fair to both sides.
Site structure
The public pages explain and sell the product. Everything else sits behind sign-in and verification.
- How it works
- Features
- Pricing
- Refer a contractor
- About
- Trust & safety
- FAQs
- Resources and blog
- Contact
- Register
- Business verification
- Sign in
- Password reset
- Dashboard
- Property search
- Property pages
- Reports
- Dispute status
- Account
- Billing
- Verification decisions
- Report reviews
- Owner challenges
What I did
Contractors search a property, never a person. One address resolves to one property record, so every report lands in the right place and nobody's name is ever the search term.

A person checks each business's license and documents, and an account cannot be approved without a business license, a current insurance date and an insurance certificate on file. That rule is enforced in the database, not left to a checklist.

A guided form covers payment, contracts and change orders, site access, communication, safety and property condition. Contracts, photos and messages go to private storage, where they back the report up during review and are never published.

Every report is read by a named reviewer who records a written reason to approve it, send it back or reject it. Nobody can review a report from their own company, and the decision trail stays even if a decision is later reversed.

Property pages lead with a risk level, list what was reported and when, and show the address on a map, so contractors can confirm it is the house they actually visited.

Reports show the trade that filed them, never the company. Property owners can challenge anything published about their address, and a person reviews every challenge.

A 14-day free trial starts once a business is verified, with no card needed. Then monthly or annual plans on Stripe, with prorated plan switches, a self-serve billing portal and a referral programme that earns free months.

Five levels, one glance
Every property page leads with a single risk level, from Low to Critical. Each level has its own bar, tint and text colour in the design system, so the answer is clear before anyone reads a word, and still readable for colour-blind users because the name is always shown.
- Low
#0F9D58 - Moderate
#C8930A - Elevated
#D9701E - High
#D1341F - Critical
#B0142A
Brand
A trust-first palette: deep navy for authority, one bright blue for every action, teal for anything verified, and a separate five-step risk scale that never borrows the brand colours.
Aa
Geist
Aa
Geist Mono

The pages
Pick a page, then scroll inside the window to explore it from top to bottom.







Results
Lighthouse performance
Prerendered pages served from Vercel's edge, with a Largest Contentful Paint of 0.6 s on desktop.
accessibility, best practices and SEO
Lighthouse's top score in all three categories for the live home page.
safeguards on every report
Verified access, human review, reporter anonymity and an owner's right of reply.
What it means for the client
- Decide before committing
Contractors can price a job differently, ask for more up front or walk away, before an estimate turns into a commitment.
- Reporters stay protected
Other contractors see the trade, never the company, and evidence never leaves private storage.
- Fair to property owners
Owners can respond to any report, and a person reviews every challenge.
- Billing without the admin
Members update cards, download invoices and switch plans themselves in Stripe's billing portal.
Speed
A product site with interactive previews and animated sections that still paints in under half a second. These are Lighthouse scores for the live home page.
- First Contentful Paint
- 0.4 s
- Largest Contentful Paint
- 0.6 s
- Total Blocking Time
- 100 ms
- Cumulative Layout Shift
- 0
- Speed Index
- 0.8 s
Lighthouse 12.8.2, emulated desktop, initial page load
The stack
The tools behind the build, and what each one does on the site.
- Next.jsA custom application written from scratch: prerendered marketing pages for speed, plus the contractor workspace, verification, reporting and review flows behind sign-in.
- Tailwind CSSThe design system: navy and signal blue, Geist type, and a five-step risk palette with its own text and background colours.
- StripeTrials, monthly and annual plans, prorated plan switches and the self-serve billing portal.
- VercelHosting, edge caching and analytics.



