to what’s not said.

The apps on your Mac know more about your relationships than you do. LSTN is the Mac app that finally tells you.

i see you haven’t replied to sarah in six days. the file you promised her hasn’t opened since tuesday. she’s emailed twice — the second one was shorter.

— your Mac, which already knew.

↳ why you keep missing things

every app on your mac
has a blind spot.

You forgot. You ghosted. You missed it. It wasn’t your fault — the signals were scattered across apps that can’t see each other.

💬 Messages

knows what you said.

can’t see what you did about it.

✉️ Mail

knows what you owe.

can’t see what you’ve been doing instead.

📅 Calendar

knows where you’ll be.

can’t see what you should know before you get there.

📁 Folders

knows what you’ve touched.

can’t see who’s waiting on the result.

✅ Reminders

knows what you swore.

can’t see if the world has moved on.

One fact — “you said you’d send Sarah the deck Friday” — lives in three different apps. And no single app on your Mac will ever connect them for you.

she said yes eleven days ago.
you haven’t said anything since.

— overheard, last tuesday.

↳ the raw material

this is what your life looks like
scattered across four windows.

You already see all of these every day. Familiar artifacts in familiar apps. Each one a little piece of the same story — and not one of them aware of the others.

Sarah Chen
Monday · 9:42 AM
still need that draft itinerary by friday for my boss to see 🙏
yep on it — will send EOW for sure
read 9:43 AM
Thursday
hey! any update?
boss is asking again 😅
💬 Messages the promise lives here
Inbox · 1 unread
SC
Sarah Chen <sarah@…>
to me · Mon 9:14 AM
re: trip plan?
Just bumping this — any chance I could see what you have so far?

The team meets Wednesday and I’d love to walk them through it.

Thanks!
S
↳ thread of 3 · you owe a reply
✉️ Mail the debt lives here
itinerary-draft.pages

Tokyo — March 18–24

Day 1 · Mon — arrive Narita 4pm. Train to Shibuya. Dinner at the place Sarah found.

Day 2 · Tue — Tsukiji morning (early!!). Ginza in the afternoon, walk the back streets.

Day 3 · WedHakone overnight? still need to book the ryokan

Day 4 · Thudepart NRT — pick a flight

last saved · Tue 4:24 PM draft
📁 Folders the deliverable lives here
Voice Memos · Mom
Mom
3 days ago
0:00
0:47

unplayed · transcribed: “hi sweetheart, just calling to…”

💬 Messages the unplayed lives here
Reminders · Today
call mom about the house snoozed 4× · first set 17 days ago
email sarah back about tokyo due Friday · added Mon at 9:43 AM
book hakone ryokan no date
refill prescription completed yesterday
✅ Reminders the intention lives here
Calendar · Tomorrow
Tuesday, March 14
9:00
standup
11:00
design review
2:00
Jenna Park · 1:1
jenna@ · you · 4th this Q
4:30
focus block
📅 Calendar the future evidence lives here

Four apps. Four artifacts. Four halves of the same story.
LSTN is the part that finally puts them in one room.

↳ what LSTN actually says

it doesn’t summarize.
it connects.

LSTN reads each source continuously, links events to the right person via your Contacts, and surfaces the things that only become visible when you can see across them. These aren’t recaps. They’re the moments worth knowing about, in plain language.

01 the promise gap

“I see you haven’t sent Sarah the Tokyo itinerary you promised in iMessage Tuesday. The folder hasn’t opened since. She emailed yesterday asking.”

💬 Messages “I’ll send the itinerary by EOW” — tue 9:14pm
📁 Folders ~/Trips/Tokyo last modified mon 4:02pm
✉️ Mail Sarah Chen, yesterday: “any update on the trip plan?”
↳ suggest: send tonight or push the date. She’s checking in — the next email won’t be polite.
02 the cooling thread

“I see you haven’t reached out to David in 11 days. Your last four messages were one-line reactions. The standing 1:1 got cancelled twice. You’re drifting.

💬 Messages 11 days silent · previous 4 msgs averaged 6 words
✉️ Mail 0 emails in 11 days (used to be ~weekly)
📅 Calendar recurring 1:1 cancelled by you twice in a row
↳ suggest: send something specific, not “hey how’s it going.” Reference the move he mentioned three weeks ago. That’s the thread back in.
03 the meeting blind spot

“Tomorrow’s 2pm with Jenna — you should be ready for the fundraising question. She’s emailed twice about it already. The deck you said you’d update for her is untouched.”

📅 Calendar Jenna Park 1:1 · tomorrow, 2:00pm · 4th this quarter
✉️ Mail 2 unanswered from Jenna re: bridge round timing
💬 Messages she vented last thur, ended with “we’ll talk”
📁 Folders fundraise-deck-v2.key untouched 9d
↳ suggest: read both of her emails before the meeting. They’re the actual agenda. Open the deck tonight or be honest that it isn’t ready.
04 the quiet escalation

“Mom is escalating. You probably haven’t noticed because each individual signal is small — but stacked together, something’s going on. Call her tonight.

💬 Messages 2 missed FaceTime calls in 3 days · 1 unread voice memo (47s)
✉️ Mail 3 forwards from her in 6 days (none replied)
📅 Calendar she added “dr. patel followup” to the shared family cal
↳ suggest: she’s not going to ask outright. The doctor appt on the shared calendar is the actual message. Call now — not tomorrow.
05 the pattern you don’t see

“Marcus has invited you to coffee three times in eight months. You’ve said yes every time. You’ve shown up zero times. The pattern is louder than the latest cancel.

📅 Calendar 3 events created with marcus@… · 2 cancelled by you, 1 no-show
✉️ Mail chain of warm reschedule emails · getting shorter each round
💬 Messages last text: “happy to keep trying when it’s easier for you” · 6 wks ago
↳ suggest: don’t reschedule again. Either commit and show up, or send a real note saying not now. He’s being patient, not unaware.
06 the stranger who isn’t

“You’re meeting someone Thursday named ‘Ben K.’ You’ve actually met him before — same person who sent you a long warm intro email two years ago and you never replied.”

📅 Calendar “Coffee w/ Ben K” · thu 11:00am · benk@…
✉️ Mail benk@… sent intro 2yr ago, 412 words, 0 replies from you
💬 Messages mutual: Aaron mentioned him “in the same boat” · jan
↳ suggest: open his old email before the meeting. He pitched something specific you forgot about. Don’t walk in cold — he’s already met you.

↳ how it builds the picture

one person.
every channel.

The fundamental object in LSTN is not a message or an email or a meeting. It’s a person — with hundreds of incoming events from every channel they’ve ever touched you in. Here’s how we get there.

  1. 01

    your Contacts is the spine.

    LSTN reads Contacts.app once and builds a map: every email address, every phone number, every alias, every nickname — all linked back to one Person. Phone numbers are digit-normalized so +1 (415) 555-1234, 4155551234, and (415) 555.1234 all collapse into the same node.

    why it matters: without an identity bridge, your dad’s cell, your dad’s gmail, and the “Dad <3” in your iMessage are three different people to your computer. Contacts is how they become one.

  2. 02

    every event gets tagged with people.

    As each source streams in, LSTN attributes the event to the right humans. A message: sender + recipients. An email: from + to + cc, with all your alias addresses recognized as you. A calendar event: organizer + attendees. A file: any name in the path that matches a contact.

    why it matters: a person stops being a phone number or a Slack handle and becomes a node with a stream of attributed events flowing into them — sortable, queryable, summarizable.

  3. 03

    profiles are synthesized, not stored.

    Periodically — debounced, never on demand — the insight engine asks: “what’s true about this person right now?” It feeds a window of their recent events (across every source, in chronological order) to Claude and gets back a tight profile: current state, sentiment, intensity 0–10, the one sentence about what changed since last regeneration.

    why it matters: the picture is always fresh because it’s rebuilt from raw events every time. Nothing is cached as “true,” so as new context arrives, the picture quietly updates.

  4. 04

    only what’s actually relevant surfaces.

    You don’t browse 400 person-profiles. The home view shows the small set of people who have meaningful change or pending action. Cards rebuild themselves silently as new context arrives. There is no refresh button anywhere in the app.

    why it matters: attention is a budget. LSTN’s job is to tell you the three things that matter today, not show you a feed.

↳ watch it happen, in real time

follow one thread
across three apps.

Here’s exactly what happens, in order, when one promise gets made in iMessage, touched once on disk, then asked about by email. Each event flows into LSTN tagged with the same person. Watch the picture form.

  1. mon
    9:42 am
    💬 Messages · thread w/ Sarah Chen
    still need that draft itinerary by friday for my boss to see 🙏
    yep on it — will send EOW for sure
    ↳ LSTN logs: promise made · deliverable: “itinerary” · deadline: friday · person: Sarah Chen
  2. tue
    4:02 pm
    📁 Folders · ~/Trips/Tokyo/
    📄
    itinerary-draft.numbers
    opened · edited 22 min · closed
    ↳ LSTN logs: file activity · matches outstanding promise to Sarah · progress: started, not finished
  3. wed–thu
    silent
    no activity related to Sarah, no edits to the file
    ↳ LSTN logs: two days of silence · promise aging · no new evidence of progress
  4. thu
    11:18 am
    ✉️ Mail · from Sarah Chen <sarah@…>
    ↳ LSTN connects: this email is the same thread as the iMessage promise (matched by Person + topic) · checking-in tone detected
  5. fri
    6:00 pm
    deadline passes · no file activity, no reply sent, no message sent
    ↳ LSTN logs: promise broken · no acknowledgment to Sarah · escalation likely
  6. mon
    9:14 am
    ✉️ Mail · from Sarah Chen <sarah@…>
    ↳ LSTN connects: second email, shorter · tone tightening · insight engine triggers a regeneration of Sarah’s card
  7. mon
    10:30 am
    LSTN · a card appears on your home view
    Sarah Chen · needs reply · promise broken

    “You promised her the itinerary by Friday in iMessage. The file hasn’t opened since Tuesday. She’s emailed twice. The second email was shorter — it’s getting tense.

    💬 Mon promise 📁 Tue, 22min, then cold ✉️ Thu & Mon, 2× check-in
    ↳ suggest: send what you have tonight or push the date honestly. Don’t ghost — the third email won’t be polite.

Three apps. One person. One picture. That’s the entire product.

you keep saying you’ll…
and the file keeps sitting there.

— said with love, by your laptop.

↳ what LSTN actually shows you

one card.
one person.
everything that matters.

This is what shows up when you open LSTN. A single card per person who needs your attention — built fresh from raw events across every source you’ve connected, every time something changes.

LSTN
Today Diagnostics Settings
live · 3 need attention
SC
Sarah Chen friend · tokyo trip
needs reply 7d

“You promised her the itinerary by Friday. The file hasn’t opened since Tuesday. She’s emailed twice — the second one was shorter.

💬 mon · “will send EOW for sure”
📁 tue · itinerary-draft · 22 min then cold
✉️ thu & mon · “just bumping this…”
↳ suggest: reply tonight or push the date honestly.
M
Mom family · escalating
call her live

“Each signal is small, but stacked together — two missed calls, an unread voice memo, three forwards, and a doctor appt she added to the shared calendar — something’s going on.

💬 2 missed FaceTime · 1 voice memo (47s, unplayed)
✉️ 3 forwards in 6d · none replied
📅 “dr. patel followup” · she added it
↳ suggest: call her tonight, not tomorrow.
JP
Jenna Park investor · 1:1 tomorrow 2pm
prep needed tmrw

“She’s emailed twice about the bridge round. Last text ended with ‘we’ll talk.’ The deck you said you’d update for her hasn’t been touched in 9 days. Tomorrow is the conversation.

📅 1:1 tomorrow 2pm · 4th this Q
✉️ 2 unanswered re: bridge round timing
📁 fundraise-deck-v2.key · untouched 9d
↳ suggest: read both her emails before the meeting. open the deck tonight.
updated 14s ago · nothing to refresh

No feed. No badge count. No notifications begging for attention. Just the three things you should know today.

↳ each connection

what each ear hears,
and why it matters.

Each one answers a question about the people in your life that no other can. Here’s the breakdown.

💬

Messages

the truest read on every relationship

What it does: reads every text on your Mac — iMessage, group chats, SMS — going as far back as your Mac has them. New messages show up the second they land.

Why we listen: texts are the most honest thing you write all day. Tone, how often, who reaches out first, who reacts. Email is performative. iMessage is real.

✉️

Mail

the running tab of what you owe

What it does: reads every inbox you have set up on your Mac — Gmail (via OAuth), iCloud, work email, the rest — three years deep and keeps up with new mail as it arrives.

Why we listen: nobody types “I owe Sarah a reply.” They have an email from her sitting nine days unanswered. Mail is the receipt for what you promised, what’s overdue, and what you haven’t gotten to.

📅

Calendar

the receipts on who gets your time

What it does: watches your calendar in real time — past meetings, future ones, who’s invited, who cancelled, who actually showed up. Updates the second something gets moved.

Why we listen: the calendar isn’t just what’s coming up — it’s the receipts on who you actually spend time with. A standing 1:1 that quietly disappeared is a relationship in trouble. A meeting tomorrow with no prep is a problem about to happen.

📁

Folders

where your promises live as files

What it does: watches the folders you point it at — your Desktop, project folders, that one screenshot dump — and notices what you’ve opened, edited, renamed, or left cold.

Why we listen: every promise eventually has a file behind it. The deck you owe a partner. The brief stuck in Drafts. The folder that’s been “in progress” since March. Folders turn “I should do that” into “the file is cold and someone’s waiting.”

Reminders

the gap between intention and action

What it does: reads your Reminders list and lines each one up against the actual person it’s about. “Remind me to call mom” lives next to your real text history with mom — not floating in a vacuum.

Why we listen: reminders are the honest gap between what you meant to do and what you actually did. Was the thing you swore you’d remember actually done? Or is it snoozed for the fourth time while the person it’s about has been calling you?

📓

Notes

where you actually think

What it does: reads everything you’ve written in Apple Notes — meeting notes, half-formed lists, the idea you jotted at 11pm, the plan you sketched in a hurry — and connects each one to the people it’s about.

Why we listen: your notes are where you actually think. A name in a Tuesday meeting note that hasn’t come up since. A “follow up with…” you wrote and forgot. Notes is where intent lives before it becomes action — or doesn’t.

↳ the vault

your life stays on your laptop.

Local-first isn’t marketing language. Your messages, your mail, your calendar — they never leave the machine they’re already on. LSTN reads them in place and stores derived events in a tiny SQLite file at ~/.story_layer/ you could delete with one drag.

  • no cloud sync. not even a little.
  • no telemetry. we do not know who you talk to.
  • nothing leaves the machine except synthesis prompts you opted into.
  • uninstall = gone. drag to trash and it really is.

↳ things people whisper at us

quiet questions, quiet answers.

Is this just an AI summary tool?
No. The point isn’t summarization — it’s connection. Anything can summarize one app. LSTN tells you things that only become visible when you can see across many.
What sources are live today?
Mail (incl. Gmail via OAuth), Messages, Calendar, Reminders, Notes, Safari history, and any folders you choose.
Does my data leave my Mac?
The raw data — emails, messages, files, calendar events — never leaves this machine. We never see your data.
Does it work on Windows?
No. macOS only, on purpose — the magic comes from being inside macOS’s actual data layer (chat.db, EventKit, Mail.app, NoteStore). macOS 14+.
What about Gmail?
Connect Gmail directly via Google OAuth in setup or Settings for full mailbox coverage. If you skip OAuth, LSTN reads whatever Mail.app has cached locally — usually a fraction of your real mailbox.
What about Outlook, iCloud Mail, or Microsoft 365?
If they’re set up in macOS Mail, LSTN reads what Mail.app has cached. Direct OAuth integrations for those services aren’t supported.
Where are my OAuth tokens stored?
macOS Keychain — encrypted, gated by your login, not synced to iCloud. Never in plain config files.
What if I don’t grant a permission?
That source quietly goes dormant. The rest of LSTN still works. You can grant or revoke any permission later in System Settings.
Will it message people for me?
No. LSTN only listens. It tells you when you owe a reply — you write it.
How much does it cost?
Beta is free.