
Building Geothermal.contractors: A Full-Stack Directory Platform with a 3D Globe, Stripe Subscriptions & Automated SEO
An in-depth walkthrough of the architecture, engineering decisions, and cost math behind a production-grade Next.js 15 SaaS directory that turns an exact-match domain into a recurring-revenue machine.
$225,000
Total Investment
4 Months
Timeline
$587K
Year 1 ARR
9 Months
Payback
The Challenge: No Centralized Hub for a Booming Trade
Ground-source heat pumps reduce household energy consumption by 40–70 percent, qualify for federal tax credits, and last two to three times longer than conventional HVAC systems. The technology is mature, the economics are compelling, and consumer demand has accelerated sharply since the Inflation Reduction Act expanded residential clean-energy incentives. Yet when a homeowner types "geothermal installer near me" into Google, the results are a wasteland of generic aggregator listings, outdated Yelp pages, and SEO-farm directories that treat geothermal contractors the same way they treat plumbers or lawn-care crews.
The client had already secured the premium exact-match domain Geothermal.contractors — a category-defining URL that signals instant authority in organic search. What they lacked was the technical bench to transform that domain into a living platform: one that could rank nationally for thousands of location-based keywords, convert high-intent traffic into qualified contractor leads, and monetize through recurring subscriptions rather than one-time ad placements.
They came to us with three non-negotiable requirements. First, every contractor in the directory had to have a dedicated, SEO-optimized profile page — not a card in a list. Second, the platform had to generate its own revenue through a self-serve subscription model, eliminating the need for an outbound sales team. Third, the design had to match the eco-premium aesthetic of the flagship partner, EarthRiverGeothermal.com, pixel for pixel. This was not a WordPress theme project — it was a ground-up SaaS build.

Ground-source heat pump installation — the high-value service at the center of this platform.
Our Solution: A Revenue-Generating Directory Built to Dominate Search
We architected Geothermal.contractors as a self-sustaining SaaS directory — not a static listing site, but a conversion engine with a built-in paywall, automated SEO, and a subscription billing system that runs without manual intervention. Every screen, every interaction, and every API endpoint was designed around a single question: does this help a contractor close more jobs?
The homepage opens with a 3D interactive globe pinned with state flags — an immediate visual signal that this is a national platform, not a regional blog. Below the fold, homeowners search by ZIP code and see contractors ranked by proximity. Contractor profiles start blurred and gated; once a business subscribes, the profile unlocks with a full media gallery, testimonials, a direct contact form, and rich structured data that feeds Google's Knowledge Panel. The result is a flywheel: more subscribers produce more content, which drives more organic traffic, which attracts more subscribers.
3D Interactive Globe
A spinning globe pinned with state flags at every U.S. capital — hand-built with @react-three/fiber and Three.js, with a mobile-optimized SVG fallback.
ZIP-Code Proximity Search
Haversine-formula distance sorting, searchable contractor tables, grid views, and featured-contractor carousels that surface the closest pros first.
LinkedIn-Style Contractor Profiles
Blurred previews convert to full profiles once a contractor subscribes — complete with logos, testimonials, contact forms, and Schema.org LocalBusiness markup.
Stripe Subscription Engine
Three tiers — Basic Listing at $49/mo, Featured Pro at $99/mo, Premium Pro at $149/mo — with a 20% annual discount and automated dunning.
Automated SEO Pipeline
Every page auto-targets keywords, generates internal links, outputs WEBP images with SEO filenames, and feeds a dynamic sitemap.xml with XSLT display.
Admin Command Center
Full CRUD dashboard with pricing controls, a message center powered by SendGrid inbound webhooks, and TipTap rich-text editing for content management.

Custom Three.js globe with state-flag billboards — degrades to an interactive SVG map on mobile.
Development Approach: Four-Month Sprint Cadence with a Senior USA Team
We staffed this engagement with a six-person team — lead architect, two senior frontend engineers, a backend and database specialist, a UX designer, and a dedicated project manager — all based in the United States. No offshore relays, no timezone lag, no context lost in translation. Work moved in tight two-week sprints across a four-month delivery window, with stakeholder demos every other Friday.
The tech stack was chosen for speed, SEO performance, and long-term maintainability. Next.js 15 with the App Router gives us server-rendered pages for search engines and a rich client-side experience for end users, all inside a single codebase that eliminates the need for a separate Express or NestJS backend. TypeScript enforces type safety from the database layer to the UI. Tailwind CSS allowed the frontend team to match the EarthRiverGeothermal aesthetic in utility tokens rather than fighting a CSS framework.
Data lives in PostgreSQL accessed through Prisma — giving us type-safe queries, automatic migrations, and a geospatial index layer for the ZIP-code proximity engine. Stripe manages all subscription billing, webhooks, and dunning. SendGrid handles transactional emails and powers the inbound-webhook message center in the admin dashboard. Sharp processes every uploaded image into optimized WEBP format on the fly.

The Super Admin Command Center — full CRUD, pricing controls, message center, and TipTap rich-text editing.
Under the Hood: Engineering That Compounds Value
WebGL Globe with Graceful Degradation
The homepage hero is a slowly rotating 3D globe rendered in WebGL through @react-three/fiber. Each of the 50 U.S. state capitals carries a billboard sprite of its state flag, and users can spin, pinch-zoom, and click any state to jump directly into its contractor directory. On devices without GPU acceleration, the component detects the limitation and swaps in a high-fidelity SVG map with identical tap-to-navigate behavior — no jarring loading states, no broken fallback. The geometry, texture atlases, and frame-rate budgeting were custom-engineered; this is not a charting library or a third-party embed.
Blurred-Profile Paywall & Subscription Lifecycle
Every contractor in the database receives a profile page modeled after a LinkedIn business profile. Before the contractor subscribes, the page renders in a blurred, link-disabled state — a soft paywall that lets prospects see exactly what they are missing. The moment a Stripe subscription activates, a webhook fires, flips the visibility flag, and the profile unlocks with the company logo, a scrollable photo gallery, service-area descriptions, verified customer testimonials, and a direct lead-capture form. Cancellation reverses the process automatically. No manual moderation required.
Haversine Proximity Engine
When a homeowner enters a ZIP code, the backend resolves it to latitude and longitude, runs a Haversine-formula distance calculation against every contractor record, and returns results sorted by proximity — all in under 50 milliseconds thanks to a PostgreSQL geospatial index. Contractors within 25 miles receive a "Nearby" badge. The same index powers the featured-contractor carousel and the state-level directory pages, ensuring that the closest, most relevant businesses always surface first.
SEO Automation Layer
Rather than relying on manual metadata entry, we built an automation layer that handles optimization at publish time. Every page targets one to two primary keywords, generates contextual internal links, converts uploaded images to WEBP with keyword-rich filenames and descriptive alt text, and registers itself in a dynamic sitemap.xml served with a styled XSLT view. Open Graph images and social thumbnails are generated programmatically. Within weeks of launch, the domain was ranking on page one for competitive long-tail terms like "geothermal HVAC contractor near me" and "ground-source heat pump installer [state]."

Organic traffic trajectory tracked through the built-in analytics dashboard.
Launch Partner: Earth River Geothermal (Annapolis, MD)
We seeded the platform with Earth River Geothermal as its flagship featured advertiser. Their profile includes a professionally authored 5,000-word premium page covering service-area maps, certifications, an installation gallery, and customer success stories. We also published 10+ SEO-optimized blog articles tied to their geothermal HVAC expertise in the Maryland and D.C. metro region. This gave the directory real, indexable content from day one — and gave Earth River a concrete demonstration of the subscriber value proposition.
Cost Breakdown: Every Dollar Itemized
Radical cost transparency is a core operating principle. Below is the complete, line-by-line cost breakdown for building Geothermal.contractors from a blank repository to a production deployment, staffed entirely by senior USA-based engineers. No pre-built templates were used. Every component, API route, and database migration was purpose-built for this platform.
Development Cost Breakdown
8 components · USA-based senior development team
Total Investment
$225,000
Development Hours
1,520+
Timeline
4 Months
Total Project Investment: $225,000
8 of 8 components · All categories
What This Project Costs With Us
$56,983
one-time project cost
Market Rate (USA Agency)
$225,000
You Save
75%
Custom Web App Development (Flagship)
One-time LTO — Includes SEO + AIO + GEO + AEO + Schema.org + WCAG 2.2 + Local SEO + GA4 + Search Console + Bing Webmasters + IndexNow API + CMS/Blog + Responsive Design + Enterprise Business Listings
$6,999
A USA-based agency quoting this scope would land at approximately $225,000 — a figure that reflects 1,680 senior-level team hours across architecture, 3D engineering, subscription billing, and SEO automation. Through Digital Marketing Co.'s transparent pricing model — our $6,999 flagship plan plus individually itemized add-ons — the same deliverable totals $56,983, a 75% savings. The reduction comes from proprietary tooling, reusable infrastructure, and a streamlined delivery process, not from cutting corners or offshoring labor.
How We Derived the $225,000 Number
Hours × Rate = Dollars
Below is the labor-hour math that produces the market-rate figure. Every row maps real agency-grade work — hours assigned to a senior USA-based team, multiplied by a blended 2026 hourly rate. This is the exact estimation structure we include in our proposals for a Next.js, React, Prisma, and Tailwind CSS directory platform of this scope.
Agency Rate
$120–$180/hr
Senior USA-based team, blended
Tech Stack
Next.js · React
Prisma · Tailwind CSS
Built custom, not a template
Team
Lead architect, 2 senior frontend engineers, 1 backend/database engineer, 1 UI/UX designer, 1 project manager — delivered over a 4-month sprint cadence.
Line-Item Labor Derivation
Hours are agency-typical estimates for this scope; totals = hours × $120–$180/hr
| Category | Hours | × Rate | Low | High |
|---|---|---|---|---|
Discovery, UX & Design System Brand workshop, IA for state + contractor pages, Figma system, responsive prototypes, pixel-matching the Earth-River aesthetic. | 180–240 | $120–$180 | $21,600 | $43,200 |
3D Globe (Three.js / R3F) & SVG Fallback Custom geometry, state-flag billboards, geo-coordinate pin drops, click-to-route, mobile SVG fallback, WebGL performance tuning. | 140–200 | $120–$180 | $16,800 | $36,000 |
Frontend (Next.js 15 + React 19 + Tailwind) App Router, SSR for SEO, contractor profiles, ZIP-code search UI, pricing pages, blurred-to-unlocked paywall, admin UI. | 360–500 | $120–$180 | $43,200 | $90,000 |
Backend & API (Next.js Route Handlers) Contractor CRUD, Haversine geospatial search, subscription lifecycle, SendGrid inbound webhooks, message center API, SEO automation layer. | 220–320 | $120–$180 | $26,400 | $57,600 |
Database (Prisma + PostgreSQL) Schema for contractors, plans, messages, pricing, media; geospatial indexes; Prisma migrations and seeding. | 90–130 | $120–$180 | $10,800 | $23,400 |
Stripe Subscriptions & Billing 3-tier plans, annual-discount logic, webhooks, pricing controls in the admin panel, dunning. | 70–110 | $120–$180 | $8,400 | $19,800 |
SEO / AEO / AIO / GEO Automation Layer Schema.org LocalBusiness, dynamic sitemap + XSLT view, WEBP pipeline with Sharp, auto internal linking, OG image generation. | 130–200 | $120–$180 | $15,600 | $36,000 |
QA, Accessibility & Security Cross-browser + mobile QA, Lighthouse 95+, WCAG 2.2 AA audit, Stripe PCI scope review, basic pen test. | 100–150 | $120–$180 | $12,000 | $27,000 |
DevOps, Hosting & Launch Vercel + managed Postgres, domain + DNS + SSL, CI/CD, error monitoring, staged launch. | 60–90 | $120–$180 | $7,200 | $16,200 |
Project Management (~15%) 2-week sprints, stakeholder reviews, risk tracking, documentation, 4-month delivery cadence. | 210–320 | $120–$180 | $25,200 | $57,600 |
Launch Content (Earth River Geothermal seed) 5,000-word flagship profile + 10 SEO-optimized blog posts + on-page metadata and imagery. | 120–180 | $120–$180 | $14,400 | $32,400 |
| Fixed-bid total (all categories combined) | $225,000 (mid-bid, ~1,680 team hours) | |||
Why this stack keeps the math honest
Next.js 15 replaces a second backend framework
Running the directory, admin, subscription webhooks, and SEO APIs inside one Next.js codebase avoids a separate Express/Nest service and knocks out roughly 120–180 integration hours — about $15K–$32K off the build.
Prisma + PostgreSQL cuts QA on geospatial data
Type-safe Prisma queries against a Postgres schema with proper geospatial indexes catch bugs at compile time. That is why the QA line item is ~100–150 hours instead of the ~180–230 we would book for a raw-SQL stack.
Tailwind CSS keeps the design-to-code gap thin
Matching the EarthRiverGeothermal aesthetic in Tailwind tokens lets the frontend team ship pages ~30–40% faster than hand-rolled CSS — the single biggest reason the frontend line stays at 360–500 hours for a site of this surface area.
React supplies the widest talent pool
React + TypeScript developers are plentiful in the US labor market, which keeps the blended senior rate inside the $120–$180 band. Niche 3D or WebGL-only specialists cost $200+, which is why we keep them on the project only for the Three.js globe sprint.
After launch
Plan on ~15% of the build cost annually for ongoing maintenance — Next.js/React upgrades, Prisma migrations, Stripe API version bumps, Three.js patches, and content SEO refreshes. For a $225K build that is ~$33.75K/year, or ~$2.8K/month — comfortably under 5% of the projected Year 1 ARR.

Stripe dashboard tracking MRR, subscriber growth, and churn rates.
Revenue Model & Three-Year Projections
A directory platform lives or dies on subscriber economics. We modeled conservative adoption rates drawn from the addressable market of licensed geothermal HVAC contractors in the United States, cross-referenced with willingness-to-pay benchmarks from competing lead-generation platforms (Angi, Thumbtack, HomeAdvisor) and the organic traffic ceiling of an exact-match .contractors domain with best-in-class SEO.
Basic Listing
$49/mo
Full profile, search visibility, lead capture form
Featured Pro
$99/mo
Everything in Basic + featured placement, priority badge
Premium Pro
$149/mo
Homepage carousel, SEO-written content, dedicated page
3-Year Revenue Projection
$587K
600 contractors
Year 1
$1.56M
1,600 contractors
Year 2
$3.13M
3,200 contractors
Year 3
Payback Period
9 Months
3-Year ROI
13.9x
Lead Value
$150–$400+
Year 3 ARR
$3.13M
At a blended average of approximately $82 per month across the three tiers, the Year 1 target of 600 paying contractors produces $587K in annual recurring revenue. Year 2 scales to 1,600 subscribers and $1.56M ARR as organic rankings compound and word-of-mouth referrals accelerate. By Year 3, with 3,200 active subscribers and a growing share of annual-plan upgrades, the platform reaches $3.13M ARR — a 13.9x return on the original $225,000 development investment, with full payback occurring inside nine months of reaching operational capacity.
The unit economics are equally compelling from the contractor's perspective. A single geothermal installation is worth $15,000–$30,000 to a contractor. High-intent search traffic from "geothermal contractor near me" queries delivers leads valued at $150–$400 each. A contractor paying just $49 per month needs only one closed job from the platform to see an outsized return — a value proposition that makes subscriber acquisition dramatically easier than it would be for a generic home-services directory.

ROI trajectory: full payback at month nine, 13.9x cumulative return by Year 3.
"We knew the Geothermal.contractors domain was valuable, but we didn't have the engineering depth to build what we'd sketched on a whiteboard. Digital Marketing Co. turned a rough concept deck into a fully operational SaaS platform — the 3D globe, the subscription billing, the SEO automation, all of it. Within 90 days of launch we had paying subscribers and organic traffic that keeps climbing month over month. The ROI math isn't theoretical anymore; it's in our Stripe dashboard."
Geothermal.contractors Founding Team
Platform Owner & Operator
What We Delivered
Production-grade Next.js 15 directory with custom 3D interactive globe
ZIP-code proximity search with sub-50ms geospatial query performance
Blurred-to-unlocked contractor profiles gated by Stripe subscriptions
Three-tier subscription engine ($49 / $99 / $149 per month) with annual discounts
Automated SEO/AEO/AIO/GEO pipeline with Schema.org LocalBusiness markup
Super Admin Command Center with TipTap editor and SendGrid message center
Lighthouse 95+ performance scores across every page
Earth River Geothermal seeded as flagship launch partner with 10+ blog posts
Projected Return on Investment
3-Year Projected
13.9x
Return on Investment
$225,000
3-Year Projection
13.9x
Projected ROI based on 3-year cumulative net profit relative to initial development investment. Actual results may vary based on execution, market conditions, and operational factors.
Visit the Live Project
See the finished product we built for this case study — live and in production.
This project is live at Geothermal HVAC Contractor Directory — Find Licensed Geothermal Installers Near You. Every feature described in this case study — from the architecture and integrations to the SEO strategy and financial model — is running in production on geothermal.contractors.
Ready to Build Your Own High-ROI Directory or Web Application?
Whether it's a contractor directory, a SaaS platform, or a custom web application — we'll plan it, build it, and launch it with the same precision we brought to Geothermal.contractors.
How Does Your Website Score?
Get a free, instant analysis of your website across SEO, speed, mobile, security, accessibility, AIO, GEO, AEO, Local SEO, Schema.org, and WCAG compliance.
We analyze 12 critical dimensions: