CASE STUDIES / CLIENT BUILD / WEBSITE
A lead-generating website for a general contractor
Client build (anonymized)
- Try it
- Understand it
- Verify it
- Hire async
A 16-page site Measured with a quote form that logs each lead to a spreadsheet and sends an email, paid in full. Whether the owner has made a first edit on his own: not confirmed Unmeasured.
The problem
A small contracting business with a non-technical owner had no website that a homeowner could find, trust and send a quote request from. He wanted a site he could keep current without paying a developer for every change.
The build had to explain the services in plain words, show up for the areas the business serves and turn a visit into a quote request that reaches the owner the same day.
Constraints
- A fixed price, split into milestones, agreed in writing before work started.
- The owner is not technical, so editing had to happen in a content system, not in code.
- Every quote request has to land in a spreadsheet and in an email, so a failure of either does not lose a lead.
- The site had to be fast and readable on a phone, because homeowners search from their phones.
Who did what
The business owner
- Described the services, the areas and the work.
- Supplied reviews, photos and the business details.
- Approved each milestone and made each payment.
I built
- The site: core pages, area pages and an articles section
- The quote form, validation and the spreadsheet and email delivery
- A content system for editing pages and articles without code
- Mobile layout and the basic search setup: sitemap, titles, descriptions and structured data
- Hosting, domain setup and the written handover notes
A real client build. The business, the owner, the domain and the amount are left out on purpose.
Step through a run
Sample path of a quote request, no real lead data
A homeowner searches
They land on a service page or an area page written for the work they need and the place they live.
- Service page OK:plain words, a clear next step
- Area page OK:names the places served
They send a quote request
The form checks the fields before it sends. A request that looks like spam is held back.
- Required fields OK:checked on the page and on the server
- Spam filter Fails:missing in the first version, and spam leads arrived
The lead reaches the owner twice
Each request is written to a spreadsheet and sent by email, so a failure of either does not lose it.
- Spreadsheet row OK:written
- Email to the owner OK:sent
The owner edits the site
Pages and articles live in a content system with its own login. A change goes live without a developer.
- Owner access OK:administrator account set up
- A first edit by the owner Note:not confirmed
Timeline
- Kickoff to the last payment
- 19 weeks Measured
- Milestones in the written scope
- 5 milestones Measured, with the last payment held until the owner was satisfied.
- Pages live at the final check
- 16 pages: 6 core, 4 area, 6 articles, checked on September 30, 2026 Measured.
- Leads the site has produced
- No lead count kept Unmeasured
Scope receipt
Build record
- Milestone tier
- Website
- Stack
- Next.js and React, TypeScript, Tailwind CSS, A hosted content system, A spreadsheet script, Vercel
- Evidence basis
- Counted from the source, the sitemap and the closeout notes of the build.
Done-checklist
- Core pages, area pages and articles are live.
- The quote form validates, logs to a spreadsheet and sends an email.
- The owner has an administrator login to the content system.
- The site works on a phone and carries a sitemap, titles, descriptions and structured data.
- Handover notes cover logins, hosting and what to do when something stops.
What I would do differently
The first form had no spam filter, and spam leads reached the sheet. A filter belongs in the first milestone, not after the first spam lead.
I treated the editing handover as done once the owner had a login. It is done when he has made a change on his own and watched it go live. That is now a line in the done-checklist.
Have a client who needs this?
I build work like this for agencies and consultants, under your brand, at a fixed partner price per milestone. Everything runs in writing.
Send a project brief Or email a written brief