Part of a series on IntentFlow: this post (why it exists) · a walkthrough for first-time users · introducing IntentFlow for validation · the full functional spec.
IntentFlow started from a simple annoyance: my habits lived in one app, my plans in a notes file, my calendar somewhere else, and the odd link I wanted to keep for later scattered across bookmarks and messages to myself. None of it talked to the others. I wanted one place that covered a normal day end to end — what I’m trying to build as a habit, what’s coming up, what I’m actively planning, and the handful of links worth keeping — without it turning into a bloated productivity suite I’d abandon in a month.
So IntentFlow is deliberately narrow: Today, Agenda, Plans, and Links (Events and Calendar started as two separate tabs, then merged into the single Agenda tab once it became clear a calendar and a chronological list of the same items didn’t need separate homes). Four tabs, each doing one job well, all reading from the same local data. No accounts required, no ads, nothing running in the background you didn’t ask for — it’s meant to feel like a tool, not a product trying to hold your attention.
That local-only design was also its biggest limitation. Everything lived in the browser’s storage on whatever device you happened to be using, which meant switching phones — or just using it on both a phone and a laptop — meant your data didn’t come with you. That’s the gap I set out to close with cloud sync, and the same approach now also runs in ShopTools, my grocery and household tracker (renamed from “Shop” once it grew a Budget tab alongside the grocery/inventory side). For exactly what sync does today, see the full functional spec.
Since then: both apps have had a few friends actually kicking the tires, which is where most of what’s in the monthly dev-update posts has come from — real usage surfacing real friction, not a roadmap dreamed up in isolation. Both are also now packaged as installable native Android apps, and ShopTools is partway through Play Store submission. IntentFlow’s own turn at that is next.