Maintenance agreement tracker for HVAC shops
The idea
An owner-operator HVAC shop with 200 maintenance agreements at 200 USD a year is sitting on 40,000 USD of recurring revenue, tracked in a spreadsheet nobody opens between seasons. Renewals lapse silently because no one sends the reminder, and the spring tune-up rush gets planned on a whiteboard. Each lapsed agreement is 150-300 USD gone, plus the repair work that agreement customers reliably generate.
ServiceTitan solves this, but it costs 300+ USD a month and demands a full operational migration. The wedge is doing exactly one job: import the customer list, never miss a renewal again, and put every active agreement on a seasonal visit board. Shops that will never buy a field service suite will buy this.
Who pays
The buyer is the owner of a 2-10 tech HVAC shop with 50-500 active agreements, sold at a flat 49 USD/month subscription. Distribution: HVAC owner Facebook groups, contractor subreddits, and partnerships with the bookkeepers and marketing agencies that already serve these shops; the pitch is one recovered renewal pays for four months.
MVP scope
- CSV import of customers and agreements with preview and dedupe
- Automated renewal email/SMS sequences at 60/30/7 days with delivery tracking
- Dashboard showing expiring, lapsed, and revenue at risk
- Drag-and-drop spring/fall visit scheduling board
- Skip for v1: online payment collection for renewals, technician mobile app, QuickBooks sync, multi-location support
Build AgreementKeeper, a web app for HVAC shop owners to manage maintenance agreements. Stack: Next.js (App Router), Supabase (Postgres + auth), Twilio for SMS, Stripe for the shop's own subscription. Magic-link auth, no passwords. Core flow: owner imports customers via CSV (name, phone, email, address, agreement start date, annual price). Each customer gets an agreement record with a renewal date computed as start date plus 12 months. Sixty, thirty, and seven days before renewal, the system sends a templated email and SMS asking the customer to renew; the owner sees delivery status per customer. Pages: dashboard (agreements expiring in 30/60/90 days, lapsed count, estimated revenue at risk), customer list with search and status filters, customer detail with message history, a spring/fall scheduling board where each active agreement appears as a card the owner drags into a week slot for its tune-up visit, and settings for message templates and shop branding. Non-obvious details: CSV import must be forgiving - preview rows, flag bad phone numbers, and dedupe on phone. Store all reminder sends in a message_log table so a customer is never texted twice for the same milestone; run the scheduler as a daily Supabase cron job. Pricing: single plan at 49 USD/month via Stripe Checkout, 14-day free trial, no card required up front.
// More B2B ideas
-
Compliant labels for cottage food producers
Home bakers and small food producers hand-make labels that violate state cottage food rules; this generates compliant labels with allergens per state.
B2B weekend -
ATS duplicate checker while sourcing on LinkedIn
Agency recruiters waste outreach on candidates already in their ATS; this extension flags known profiles and past contact history as they browse.
B2B Chrome extension 1 week -
Belt testing and curriculum tracker for martial arts schools
Martial arts school owners track student stripes and testing eligibility on index cards; this tracks progress, flags who is ready, and runs test day.
B2B 1 week -
Bait station scanning for pest control routes
Pest control techs hand-log rodent station checks that commercial clients audit; this scans station QR codes and builds the service report on site.
B2B Mobile 1 month