Remme
reminders
that fire where you are.
A reminder at 9 a.m. to buy bolts is useless. A reminder when you're at the hardware store is a completed task. Remme tracks where your possessions live, ties them to places with geofences, and runs automations on location — with an AI assistant that can answer "where did I put the passport?". Built end-to-end by PickBits; in beta at remme.pickbits.ai.
React + Supabase + VercelThe challenge.
Reminders are scheduled against the wrong axis. Time-based ones go off when you can't act — the "pick up bolts" nudge fires during a meeting, you dismiss it, and it's gone. The information you actually need is spatial: where a thing lives, and where you are when the reminder is worth having.
Building that means solving three things at once:
- An inventory people will actually maintain. A home inventory app dies the moment logging an item costs more than losing it. Items need states that match reality — here, an item is
ok,missing, orlent_out. - Places as first-class objects. Not a text field on a reminder — a real entity with a geofence, so the app can reason about arriving and leaving.
- Automations, not alarms. Trigger → action chains that fire on location events, which is where the product stops being a list and starts being useful.
The approach.
Three nouns, and everything else is composition
The whole product reduces to Item, Place, and Automation. Room inventory, moving mode, a maintenance tracker, family sharing, travel assistance, seasonal items — none of those are separate subsystems, they're arrangements of the same three objects. Getting the core nouns right is what lets a solo build carry that many surfaces without collapsing.
Ship the web app first, even though it's a phone product
Remme is a four-surface repo: a React web app, a native Kotlin/Compose Android app, an Expo mobile app, and a Supabase backend they share. The web app is what's live — the mobile surfaces are still in development, and we'd rather say that than imply a store listing that doesn't exist. Shipping the web surface first buys real usage against the real backend while the geofencing platforms get their proper native treatment.
Make the product callable by an agent
Remme exposes itself as an MCP server — with scoped tokens and an audit table — so Claude can read and drive your inventory directly. It's a small piece of code with a large implication: the same product surface serves a human tapping a screen and an agent doing it on their behalf, without a bespoke integration for each. This is the pattern the University's Production MCP module teaches; it's running here first.
Change the primary key while the lights are on
The codebase migrated from Long to String UUIDs — a change that touches every entity, every route, and every screen across four surfaces at once. It's recorded as a standing rule in the repo's own guidance ("all new code must use String IDs") rather than a one-off commit message, because a half-migrated ID type is the kind of thing that silently reappears in the next feature someone writes.
The stack.
One Supabase backend, several front ends:
Supabase carries Postgres, auth, and the edge functions, so the four front ends agree on one backend instead of each inventing its own. The web app deploys to Vercel; five GitHub Actions workflows handle edge-function deploys, migrations, linting, and generated item imagery. The Android build is native Kotlin with Jetpack Compose because background geofencing is a place where a cross-platform abstraction costs more than it saves.
The results.
In beta on the web. Build numbers, counted from the repository — Remme is early, and a fabricated user count would be worth less than an honest one.
What it looks like.
What the work looks like.
Remme is a PickBits product — the place where patterns from the University tracks get used before they're taught, on something with real users and real geofences. If you want that pointed at your build, scope it on a free 30-minute call.
Built in Phoenix.
Shipped to production.
One operator, end-to-end — design, build, ship, hand off. Remme went from an idea to a working memory assistant with an agent-callable API. Yours could be the next one on this page.