The problem
Help someone move from an unfocused moment of boredom to one realistic activity without requiring a search query, onboarding, account, location permission, or network connection.
A native iOS activity deck for the moment between plans
A local-first SwiftUI product that turns boredom into a quick, realistic choice through a curated swipe deck and practical filters.

Endless Activity opens directly into a tactile, local-first deck. Save, skip, filtering, and recovery are visible as part of the same interaction, while deterministic ranking keeps the recommendation understandable and private.
Help someone move from an unfocused moment of boredom to one realistic activity without requiring a search query, onboarding, account, location permission, or network connection.
People between plans or low on ideas who want a fast, private suggestion they can save, skip, filter, and return to later.
Independent product direction, native iOS UX, SwiftUI implementation, catalog and ranking architecture, accessibility, testing, and portfolio release preparation
Opened directly into a tactile card deck and made save and skip available as both gestures and visible controls.
Separated the immutable bundled catalog, pure ranking rules, persisted signals, and presentation deck so interaction state never corrupts source data.
Used practical constraints and saved-category signals instead of opaque personalization or generated content.
Kept the complete version-one loop local and deterministic, with explicit recovery for exhausted decks and destructive history reset.
The work moved from a deliberately narrow product promise to deterministic architecture, inclusive interaction, and verified recovery states.
I reduced the product to one immediate suggestion, save, skip, practical filters, and a durable Saved list. Accounts, location, live events, booking, and generated content stayed outside version one.
I defined a 50-activity schema, validation rules, pure eligibility filters, transparent preference boosts, and seeded ordering so the deck could vary without becoming opaque or difficult to test.
The swipe interaction was built with threshold and velocity commits, spring-back cancellation, visible Save and Skip controls, haptics, named VoiceOver actions, and Reduce Motion behavior.
I treated exhausted decks, filter conflicts, saved removal, destructive reset, relaunch persistence, large text, and dark appearance as part of the core experience rather than cleanup work.




Explore the other current projects where product thinking is carried through interface, architecture, testing, and release.

Evidence-led financial research with human approval

Commercial proof, operator review, and reliable progression

Prompt-first route planning for adventure travelers

A native macOS focus-and-reset loop