Maintenance agreement billing for HVAC shops

SaaSWeb1 monthNext.jsSupabaseStripe

The idea

Maintenance agreements are the recurring-revenue engine of residential HVAC: 15 to 30 USD a month per home for two tune-ups a year and a repair discount, and, more importantly, first call when the system dies and a replacement quote is on the table. Small shops sell these plans enthusiastically and then track them in QuickBooks memo fields. The spring visit never gets scheduled, the homeowner notices they are paying for nothing, and the plan churns along with the future replacement sale.

ServiceTitan does all of this well and starts around 400 USD/month with an enterprise sales process; the 1-to-5-truck shop is priced out entirely. The wedge is narrow: not dispatch, not full field-service management, just the agreement lifecycle, billing, seasonal due lists grouped by neighbourhood, and win-back. It composes with whatever the shop already uses for scheduling.

Who pays

The shop owner pays 79 to 149 USD/month. A shop with 150 members at 20 USD/month holds 36k USD of annual recurring revenue that this tool exists to protect, and each saved member preserves a future 8 to 15k USD system replacement at the top of the funnel. The maths is not subtle. Distribution: HVAC owner groups (HVAC Millionaire and similar Facebook communities), supply-house counters, and podcasts aimed at small shops, where hatred of ServiceTitan pricing is a recurring theme.

MVP scope

  • Plan builder and 60-second member enrolment with texted Stripe Checkout
  • Stripe Billing integration with webhook-synced membership status
  • Auto-generated spring/fall visits with a neighbourhood-grouped due list and 45-day red flags
  • Visit completion records with equipment notes
  • Dunning sequences and 10-month win-back offers
  • Skip for v1: dispatch/scheduling calendar, technician GPS, flat-rate price books, inventory, QuickBooks sync
// Build prompt — paste into Cursor / Claude Code / Lovable / Bolt
Build TuneUpBase, a web app that runs maintenance agreement programmes for 1-to-5-truck HVAC shops. Stack: Next.js (App Router), Supabase (Postgres, Auth, RLS), Stripe Billing. Magic-link auth for shop staff.

Data model: Plans (e.g. Silver 19 USD/mo: 2 tune-ups/year, 10% repair discount; Gold 29 USD/mo adds priority service), Members (homeowner, address, equipment list with model/serial and install year), Visits (spring cooling tune-up, fall heating tune-up, status: due, scheduled, completed, missed), and Stripe subscription state synced via webhook.

Enrollment: staff enrol a member in 60 seconds from the office or a technician's phone in the driveway: name, address, plan, card via a Stripe Checkout link texted or emailed to the homeowner. Membership activates on payment.

The retention engine: every member automatically gets a spring and fall visit generated each year. The Due List groups members with unscheduled visits by postcode/neighbourhood so the office can book a street's worth in one day. Marking a visit completed stores tech notes and readings. Members with a visit still unscheduled 45 days into the season get flagged red; missing visits is what makes homeowners cancel.

Dunning and win-back: failed payments trigger Stripe smart retries plus an email sequence; cancelled members enter a win-back list that sends a re-enrol offer at 10 months, before the next season's tune-up would have landed.

Pages: dashboard (MRR, member count, visits due), due list by area, member profile with equipment and visit history, plans editor, dunning/win-back, settings.

Pricing: 79 USD/month up to 200 members, 149 USD/month unlimited.

// More SaaS ideas