Inspiration

When people think "Move Smarter" in NYC, they usually think of the subway. But a lot of getting around here happens on foot: walking is 41% of all trips New Yorkers make, and in Manhattan 59% of trips are on foot or by bike, the highest share of any county in the US.

Walking is also where people feel least safe. 40% of Americans say they'd be afraid to walk alone at night within a mile of home. That rises to 53% of women and 50% of city residents.

The tools people already have fall short:

  • Location sharing only helps if a friend is awake and watching the dot.
  • Manual safety apps only work if you remember to start them
  • Automatic safety apps track your location without knowing anything about you, and one false alarm is enough to make you mute them

We wanted something native, with no app to open. It should be personal, so a detour you often take doesn't alert anyone, and it should check in on you first, without you having to ask.

What it does

1. You decide when Nook watches

Setup happens in one iMessage thread: your name, one trusted contact, what Nook should do if you don't answer, and when it should watch. Share Find My once, tell it where home is, and you're done.

Mode you choose What happens
Evenings If you're out and moving in the evening, Nook asks "heading home?" Yes starts a walk. It's most sensitive when you're somewhere you've never been.
Whenever I'm away from home and moving After about 2 minutes of walking, a quiet watch starts with no text. Sitting still is assumed safe.
Any time, on request Text "walk me home" or "heading out" and a walk starts right away.

Driving speed is ignored in every mode.

2. During a walk

  • Looks normal (usual stop, familiar route, normal duration): Nook stays silent and signs off when you arrive.
  • Looks off (a new stop, a detour, running late, location goes quiet): Nook checks in. If you don't answer, it sends one follow-up, then takes the step you picked in setup.
  • Uneasy (👎): Nook asks if you want to keep going or find somewhere busier, then suggests nearby places that look open all night. Tap ❓ or say "call me" and it calls you with hands-free guidance, using your name and the street you're on.
  • Danger: "I'm in danger," being chased, or ‼️ sends an alert right away. Nook also forwards your location to your emergency contact in dire situations,

3. It learns you

Your usual stops, usual route and typical trip length come from your own history, so a stop that's normal for you stays quiet. Walking pace is a fixed band, used to tell a walk apart from a car or from standing still.

How we built it

Find My pings ──► Photon Spectrum (iMessage + live location)
                        │
                        ▼
              Rules engine (deterministic, TypeScript/Bun)
               │                              │
               ▼                              ▼
   Tiger Cloud: Postgres +           Gemini: wording + reading replies
   TimescaleDB + PostGIS             (regex/templates if it's down)
   pings, walks, "what's normal"              │
                                              ▼
                          ElevenLabs (voice, transcription)
                          Vonage (calls) · Geoapify (routes, open places)
  • Photon Spectrum: runs Nook's iMessage line, including texts, reactions, voice notes and a live Find My feed. Nook lives where people already are, so neither the user nor their contact has to install anything.
  • Tiger Data: stores every location ping and walk, and works out what's normal for you. Location data arrives constantly, so we needed fast time-series writes (TimescaleDB) and spatial queries (PostGIS) to answer questions like "is this a usual stop?" or "is this off your usual route?"
  • Rules engine: decides when to check in, follow up or alert, based on your location and movement. Safety decisions need to be reliable, and deterministic rules mean the same situation always gets the same response.
  • Gemini: writes Nook's messages and reads your replies as safe, uneasy or in danger, so you can reply naturally instead of in commands. It only handles language, never the safety decision.
  • ElevenLabs: powers the voice agent that calls and guides you, and transcribes voice notes. When looking at your phone isn't safe, a voice that knows your name and street can guide you hands-free. Vonage: places the actual phone call, so Nook can reach you with a real call instead of only a link you'd have to tap.
  • Geoapify: provides walking directions and nearby places that are open late. When you feel uneasy, Nook points you to real, busy places from actual map data, not a model's guess.

Challenges

  • Find My isn't a GPS track. Updates are irregular and jittery. A slow walk can look like standing still, and a car can look like a fast walk. We had to judge movement over a window of pings, not just the last two.
  • Restraint. A check-in that fires just because you're not home gets muted. We split "watching" from "texting" so Nook only speaks when it has a reason.
  • Keeping the model out of the safety loop. The model can't mark an ambiguous danger reply as safe on its own. If you don't answer "are you in immediate danger?", Nook follows your setup step and can text your contact that it's unconfirmed.

Accomplishments

  • The whole loop (onboarding, check-ins, tapbacks, calls, alerts) happens in a thread people already use, and the contact never installs anything.
  • The triggers match how people actually go out: nothing while you sit at a friend's place, a question when you're out in the evening, a check-in when a walk turns into an unexplained stop.
  • Personalization is deterministic and built from your own data.

What's next

  • Learn faster, so a few trips are enough to make a friend's apartment or your usual bodega a silent stop.
  • Handle trips that aren't walks: rideshares, subway gaps where Find My drops out, nights that end somewhere other than home on purpose.
  • Better hands-free voice guidance on the street, without widening who Nook can contact.

Built With

Share this project:

Updates

Submission history