Inspiration

Long hours at a computer create a familiar gap between intention and action: people know they should move, but fixed timers interrupt deep work, generic notifications are easy to dismiss, and camera-based wellness tools can feel invasive.

I built Purrch around a different question: what if movement arrived at the right moment—and felt like an invitation from a small companion rather than another productivity alarm?

Purrch waits for a natural pause in the workday, then Moss or Ember gently offers a short movement session. The goal is not to police posture or make medical claims. It is to make one healthy action feel private, achievable, and pleasant enough to repeat.

What it does

Purrch is a native macOS movement companion for people who spend long days at their computers.

It:

  • Detects active screen time and natural idle moments without reading calendars, documents, application names, windows, or screen contents.
  • Suggests approximately one-minute movement sessions instead of interrupting users on a rigid timer.
  • Guides small, office-friendly movements through animated companions Moss and Ember.
  • Offers an optional camera-guided mode that converts the live camera feed into an anonymous silhouette.
  • Processes camera frames and body landmarks locally. Original video is never displayed, saved, or uploaded.
  • Adapts future sessions using the user's work environment, goals, and previous session signals.
  • Runs quietly from the macOS menu bar, with an optional desktop companion.

The core experience is simple: focus, reach a natural break, move for one minute, and return to work.

How I built it

Purrch is written in Swift as a native macOS 14+ application using SwiftUI and AppKit.

A lightweight activity monitor combines active screen time with system idle signals to identify useful breaks. It does not inspect what the user is working on.

The optional camera experience uses AVFoundation and Apple Vision. Face detection establishes framing, person segmentation produces the anonymous silhouette, and body-pose observations provide limited movement confirmation where the camera can do so reliably. Actions that cannot be responsibly measured remain guided-only rather than producing a misleading score.

The interface is built around compact floating panels that stay close to the user's work without taking over the desktop. The companions use custom frame-based animation, including full-character key poses and interpolated motion refined for stable feet, readable gestures, and Reduce Motion support.

Purchases currently use StoreKit 2. For Shipaton, I'm integrating RevenueCat with Purrch Pro so purchases and entitlements can be validated while preserving the existing native experience.

Anonymous, coarse product events use TelemetryDeck and can be disabled. They never contain camera frames, body landmarks, screen contents, application names, or window titles.

Challenges we ran into

The hardest challenge was deciding what the camera should not claim to understand. A laptop camera cannot reliably measure every movement or determine whether someone is looking into the distance. I separated measurable actions from guided-only actions and designed graceful fallback paths when lighting, framing, permissions, or camera availability are imperfect.

Character motion was another major challenge. Early low-frame animations felt mechanical. Skeletal experiments introduced incorrect anatomy, while full-frame interpolation exposed shoulder separation and visual drift. I repeatedly rejected technically functional results that did not feel trustworthy or comfortable. The current motion system uses controlled full-character poses, stable framing, explicit holds, and a restrained idle state that avoids distracting lateral movement.

I also had to balance presence with interruption. A companion should feel alive, but not compete with the work it is supposed to protect. This led us to remove unnecessary movement, reduce visual noise, and make Purrch wait for natural pauses instead of enforcing a timer.

Accomplishments that we're proud of

  • Built a working native macOS product rather than a static prototype.
  • Created a privacy-preserving camera experience that never shows, stores, or uploads original video.
  • Designed a natural-break system that responds to work rhythms without reading private work content.
  • Developed two original animated companions with distinct personalities.
  • Kept every session short, office-friendly, and easy to decline.
  • Added guided-only fallbacks instead of inventing confidence where computer vision is unreliable.
  • Built bilingual English and Simplified Chinese experiences.
  • Established an automated test suite covering product behavior, privacy boundaries, purchasing, timing, animation safety, and compact-window layout.
  • Prepared a signed Mac App Store distribution pipeline and native in-app purchase flow.

What we learned

The best wellness reminder is not necessarily the smartest interruption. Timing, restraint, and emotional tone can matter more than urgency.

I learned that privacy must shape the product architecture, not appear as a settings-page promise. Processing locally, showing only an anonymous silhouette, collecting minimal analytics, and explicitly limiting what the camera claims all changed the experience for the better.

I also learned that delight requires subtraction. Removing inaccurate scoring, unnecessary motion, visual clutter, and rigid reminders made Purrch feel more trustworthy and more alive.

Most importantly, a companion earns attention by respecting it.

What's next for Purrch

Our immediate focus is to complete the RevenueCat integration, publish Purrch on the Mac App Store, and learn from real workdays rather than laboratory sessions.

Next, I plan to:

  • Measure whether natural-break timing improves session acceptance and repeat use.
  • Expand the movement library only after validating the existing sessions.
  • Improve camera reliability across lighting, clothing, accessibility, and shared-camera conditions.
  • Continue refining the companion lifecycle—from arriving on the desktop to becoming a coach and returning home after a session.
  • Explore sustainable Purrch Pro packaging without turning healthy movement into pressure or surveillance.

The north-star behavior is not time spent in the app. It is a completed movement session at a moment when the user was genuinely ready to move.

Built With

  • 2
  • accessibility
  • appkit
  • apple
  • avfoundation
  • body
  • computer
  • core
  • framework
  • graphics
  • human
  • macos
  • manager
  • motion
  • package
  • person
  • pose
  • reduce
  • revenuecat
  • segmentation
  • storekit
  • swift
  • swiftui
  • telemetrydeck
  • vision
Share this project:

Updates

Submission history