Relationship Companion

A weather report for your texts — not surveillance.
local only

On this device

Chats stay on this device until you choose otherwise. No account is required for the local dashboard.

A thread you paste or import is read in this browser and saved only in this browser. Nothing is uploaded as part of opening the app.

Mac Live Sync and a share link stay off until you turn each one on. They are not part of the local dashboard.

If you turn sync on later: message text is encrypted on your machine before it leaves. The relay stores only that scrambled copy, and drops it after 6 hours unless your Mac refreshes it. Turning sync off, or deleting, removes the copy. The keys stay on your devices. There is no account that can open your chats.

A share link is separate and off by default. When you turn it on, it is an encrypted copy of one chat’s text (last 120 days) so another device can show the dashboard. It is not sent unless you turn it on, and turning it off deletes that copy.

Delete removes the saved chat and scores in this browser. It does not delete Messages or WhatsApp on your Mac.

On this device

Chats stay on this device until you choose otherwise. No account is required for the local dashboard.

Saved here: the last scored chat, in this browser only. Not saved here: your Mac’s Messages, unless you are on the Mac app. Uploaded only if you turn it on: an encrypted away-from-home copy, or an encrypted share link for one chat.

How to export a chat

Your file stays on this device. It’s opened and scored right here in your browser and never uploaded anywhere.

WhatsApp on iPhone

  1. Open the chat and tap the person’s name at the top.
  2. Scroll down and tap Export Chat.
  3. Choose Without Media (it’s smaller, and only the text is used).
  4. In the share sheet, tap Save to Files and pick a folder.
  5. Come back here, tap Import a chat and choose the .zip you saved. No need to unzip it.

WhatsApp on Android

  1. Open the chat and tap the three dots (⋮) at the top right.
  2. Tap More, then Export chat.
  3. Choose Without media.
  4. Save the file somewhere you can find it, such as your phone’s files or Google Drive, then pick it here. A .txt or .zip both work.

Telegram

Exporting needs Telegram Desktop, the free computer app from desktop.telegram.org. The Telegram phone apps and the separate “Telegram for macOS” app from the App Store don’t have this export, so use Telegram Desktop.

  1. Open the chat in Telegram Desktop.
  2. Click the three-dot menu at the top right and choose Export chat history.
  3. Uncheck photos, videos and other media. Only the text is needed.
  4. Set the format to Machine-readable JSON, then click Export.
  5. Pick the result.json file here. To use it on your phone, move it over first (for example with AirDrop or iCloud Drive).

Already exported as HTML? That works too: select all the messages.html files at once, or a .zip of the export folder.

Download Mac Live Sync

Download the installer, open the DMG, then double-click Install Relationship Companion. It’s signed with an Apple Developer ID and notarized by Apple, so macOS opens it normally.

Version 1.9: No Command Line Tools or Xcode required — a private Python runtime is bundled inside the app, so Install works like a normal Mac app. Also includes 1.8 (Full Disk Access shows Relationship Companion), 1.7’s phone Connect code over the encrypted relay, and 1.6: live sync from WhatsApp for Mac as well as iMessage — pick the source with the iMessage / WhatsApp toggle in the Mac Live Sync card. Each phone or browser connects once with a 6-digit code; optional end‑to‑end away access stays off until you turn it on. Installing over an older version keeps your settings, sharing link and connected devices.

One-time: if chats look empty, macOS needs your permission to read Messages (and WhatsApp, if you use it) — System Settings → Privacy & Security → Full Disk Access → enable Relationship Companion (use the in-app Open Full Disk Access button). Chat data stays on your Mac unless you turn on end‑to‑end encrypted live share or away access (phone Connect uses the encrypted relay only after you pair).

Mac live sync

Off until you connect. The local dashboard works with this never turned on. Connecting uses a short-lived code. Message text leaves the Mac only if you later turn on away access, and then only as ciphertext.

Connection & away access
Mac Live Sync: use Download Mac Live Sync above (no source zip). After install, open http://127.0.0.1:8788/ on the Mac, copy the 6-digit Connect code, then on your phone open this HTTPS site → Connect my Mac and enter the code (works off your home Wi‑Fi via encrypted relay).
Phone app: On iPhone Safari use Share → Add to Home Screen. On Android Chrome use Install app / Add to Home screen. Works offline after first open.

Imports WhatsApp (.zip or .txt), Telegram Desktop (result.json or HTML) and clean-format .txt (YYYY-MM-DD HH:MM | Name: text). Installable phone app · offline shell · scores stay on-device.

Who is who

Favorability

—
—

Scored as of now; each signal is half absolute, half vs. their own last 4 weeks. Silence counts in real time.

Ball in court & last messages

Plans / next hang

Volume & signals

Advanced signals

Daily Volume

Today’s Warmth — Between You Two

Resets each calendar day. Bars = affection heat that hour; line = cumulative warmth (average of both people’s warmth today).

Weekly Warmth

Timely view — last ~12 weeks of warmth vs volume.

Monthly Warmth

Long timeline — up to 12 months of warmth vs volume.

When they’re most responsive

By day of week

By time of day

Taller = faster replies (log scale of median reply time, relative within each chart); labels show the median. Dashed = only 1 reply sample; grey = activity only. Tap a bar for details.

Interest quotes

Insights

    Coaching blurb

    Methodology

    Heuristic dashboard from observable patterns: 7-day reciprocity, partner warmth keywords, recent 48h activity, plan momentum, reply-speed health, and silence health. Soft language only — never mind-reading. Treat scores as weather for bandwidth and tone.