One icon up top, a cockpit underneath.
MeetPing is a status-bar app. No dock entry, no main window, no settings tab nine layers deep. The icon shows arm state at a glance, the popover holds the live transcript and detection cards, and the profile picker is one keystroke away. Everything you need is one click from where macOS already puts the things you only sometimes need.
The decision to live in the menubar and only the menubar was ergonomic before it was aesthetic. A meeting assistant cannot steal focus from the meeting; it has to be visible without being in the way. A window in the dock is too much commitment for an app that does nothing for the first ten minutes of a standup. A floating panel is too much chrome on a screen that is already running Zoom, a shared deck, and Slack. The menubar slot is the cheapest piece of screen real estate on macOS — present, peripheral, dismissible by clicking anywhere else.
The status icon is a single monochrome glyph that templated into the system tint, so it reads on both light and dark menubars without us shipping two assets. Three visual states cover the entire app lifecycle: idle, armed, pinged. We considered animating the icon during streaming partials and decided against it — a slowly throbbing menubar item makes people anxious during meetings. Static states only.
What the popover holds
Click the icon and the popover anchors below it. The top strip is status: arm state, active profile, and a small mic level meter so you can confirm the right input is being captured. Beneath it sits the live transcript panel — the most recent forty seconds of confirmed Parakeet tokens, scrolling upward as new ones land. Below that is the detection stack: every keyword hit from the current session, newest first, each card holding its keyword, its timestamp, and a clipped transcript window you can expand for the full past-30s and future-30s snapshot.
The popover does not steal focus. macOS treats it like a transient window: it appears when you click the icon, it dismisses when you click outside, and your keyboard focus stays where it was — usually the meeting app. The arrow keys navigate detections, return opens the snapshot, escape closes. No mouse required after the first click.
Profile picker, one keystroke away
The active profile shows in the popover header. Click it for a dropdown of all profiles, or hit cmd+1 through cmd+9 to switch directly. The change applies at the next streaming chunk, so a profile swap mid-meeting is effectively instant. The active profile name is also rendered in the popover's status strip so you never have to guess which keyword list is loaded.
Auto-arm visual feedback
When auto-arm flips the listener from idle to armed, the icon transitions from hollow to half-filled with a 120 ms fade — slow enough to read, fast enough not to call attention. The popover, if open, swaps its header dot from grey to phosphor-lime. There is no notification, no sound, no banner. You only ever hear from MeetPing when a keyword actually fires.
That is the design philosophy in one sentence: the app should be invisible until it isn't. Glanceable, not distracting. A cockpit you check when something signals, not a dashboard you read all day.
Keyword watch
A list of names and topics, matched live against the Parakeet stream. Pings the moment one fires.
Profiles
Per-context watchword presets. Engineering, sales, all-hands, parental. One click to switch.
Past-30s replay
Every ping comes with 30 seconds of context before the keyword and 30 seconds after.
One icon. One popover. Nothing else.
MeetPing lives in the menubar and stays out of the way. Open the popover when something signals, ignore it the rest of the time.