tinkerline / apps / htreminder

HTReminder

An indie iOS & Android app that uses AI vision to read any brand of test strip. Brand-agnostic by design, no subscription, no data sold.

iOS & Android AI vision No subscription required Indie-built

01Why I built it

I bought a used hot tub. It was in rough shape, the previous owner had given up on water chemistry, and I inherited a tub full of mystery soup. The fix is supposed to be straightforward: drop a test strip in, read the colors against a chart on the bottle, add chemicals as needed. In practice: I'd squint at faded blocks of pink and green under bad garage lighting, decide I was probably between "low" and "ideal," guess wrong, and end up with cloudy water by the weekend.

There were existing pool/spa apps. The ones I tried either locked the useful features behind subscriptions, only supported one specific brand of test strip (theirs), or wanted me to manually log readings into a form. None of them just looked at the strip and told me what to do.

So I built HTReminder. Open the camera, take a photo of any brand of test strip next to its own color chart, and the app returns ranges with confidence scores and chemical adjustments. Five years of hot tub ownership later, I use my own app every Sunday.

02How it's built (for the curious)

The interesting engineering problem is brand-agnostic OCR. The naive approach — hardcode color tables for the 3 most popular test strip brands — fails the moment a user has a brand you've never seen. I took the opposite approach: instead of training the app to know strips, I let users teach it on-the-fly by having it read both the strip and the brand's reference chart from the same photo. The model compares one set of color blocks to the other and returns ranges.

This means HTReminder works with every test strip brand on the market, including private-label ones, including strips the user prints themselves. The trade-off is the photo has to include both items in frame — which turned out to be a feature, not a bug, since people own their test strip kits and the bottle is right there.

On the back end, the vision call goes through Firebase Cloud Functions to keep the API key off the device. Results are cached locally so repeated tests of the same product don't burn API budget. Free tier covers the actual usage of all but the most prolific users.

03Get it

04More from the workshop