Chemical logs and visit reports for pool techs

Micro-SaaSWeb1 weekNext.jsSupabaseTwilioStripe

The idea

A solo pool tech services 60 to 90 pools a week and records chemistry on paper door hangers that blow into the shrubbery. The customer, who pays $150 a month and is home at 2pm on a Tuesday, has no idea whether anyone showed up, and that doubt is exactly why they cancel. Meanwhile dosing is done by feel, which wastes chemicals at today’s chlorine prices.

Skimmer owns this market but charges per pool, which techs with big routes resent loudly and publicly. A flat $20 price is a positioning weapon, not just a number. The visit report is the retention feature for the tech’s own customers: proof-of-service texts make the service visible, and visible services do not get cancelled.

Who pays

The tech pays a flat $20/month, and the pitch writes itself for anyone running 60-plus pools where per-pool pricing bites hardest. Buyers are solo operators and two-truck outfits, a huge and fragmented trade. Distribution is pool-service Facebook groups and forums (Trouble Free Pool adjacents, r/pools), plus the Skimmer-pricing complaint threads where the flat-fee message lands hardest.

MVP scope

  • Pool list with per-pool volume, surface, and sanitiser data
  • Fast reading entry with LSI and product-specific dosing recommendations
  • Visit report via Twilio SMS or email with readings, work done, and photo
  • Reading history per pool with graphs
  • Health-department-format PDF log export for commercial pools
  • Skip for v1: routing/optimisation, invoicing and payments, inventory tracking, employee accounts, and native apps
// Build prompt — paste into Cursor / Claude Code / Lovable / Bolt
Build PoolLog, a route-day web app for solo pool service techs. Stack: Next.js (App Router, built as a mobile-first PWA since it lives on a phone at the water's edge), Supabase (Postgres, auth, storage), Twilio for SMS, Stripe for subscriptions.

Core flow: the tech maintains a pool list (customer, address, gallons, surface type, sanitiser type). On a visit they open the pool and enter readings on a big-buttoned form: FC, pH, TA, CYA, CH, salt if applicable. The app computes LSI and a dosing recommendation in exact product amounts (e.g. 14 oz of 12.5% liquid chlorine for this gallonage to reach target FC), using the pool's stored volume. The tech ticks work performed (skimmed, brushed, emptied baskets, backwashed), snaps one photo, and taps Send Report. The customer instantly gets an SMS via Twilio (or email) with readings, work done, dosing added, and the photo, which is the proof-of-service that stops churn.

Pages: today's pool list, reading entry, pool detail with reading history graphed, customer settings, report template settings, billing. Commercial pools get a flagged mode whose reading history exports as a health-department-format PDF log with dates, times, and readings.

Non-obvious details: readings entry must work offline and sync later; dosing math must respect sanitiser type (liquid, trichlor, salt) and warn when CYA is high enough that FC targets shift.

Pricing: flat $20/month, unlimited pools. No per-pool pricing, ever; say so on the pricing page.

// More Micro-SaaS ideas