Privacy Policy — Diary BFF

Last updated: 2026-10-27

Diary BFF (“the app”, “we”, “us”) is a private journal that writes back. This policy explains what the app stores, where it goes, and what you can do about it.

This is plain language, not legal advice.

Summary

Account and identity

On first launch the app creates an anonymous account, so your writing is isolated from other people’s. There is no sign-up form: the app does not ask you to type a name, an email address, or a phone number.

If you choose “Keep it when you change phones” (Sign in with Apple), Apple passes your name and email address to our authentication provider so the account can be recognised on your next phone. The app itself never reads, stores, or shows either one — but they are held by the authentication service, so they are disclosed here and on the App Store privacy card.

Your PIN (the 4 digits that unlock the app) is checked on your phone. On the phone, the app keeps only a one-way hash of it in the iOS Keychain (PBKDF2-HMAC-SHA256, 210,000 iterations, with a random salt of its own). When you set or change your PIN (or, if that did not reach our server, the next time you unlock the app), it is also sent once over an encrypted connection so our server can keep a separate one-way hash of it (bcrypt). That copy is used for one thing only: proving it is you when you move to a new phone. The PIN itself is never stored, on the phone or on our server.

The PIN protects the app on a phone that is already unlocked. It is not device encryption, and it does not stop us — see “What we can see” below.

What we store

In our backend (Supabase, US East us-east-1):

Data Why
Journal entry text, including the words of anything you dictated To show you your journal
Photos you attach To show them in your journal
Voice recordings made with a version of the app before 1.1, and recordings brought back from a backup file you import So you can play them back. This version makes no recordings to upload (see “Voice recordings” below)
Replies from the AI you asked for They are written into the entry itself, so it reads as one piece
What the app remembers about you (short notes it extracts from your entries) So the reply can refer to what you said before
Sunday letters written for you So you can read them again
Messages on the chat page, and the replies to them So the conversation is there when you come back
Whether an entry has been talked about, and timestamps Journal display and feature logic
Your onboarding answers (why you came, the name and character you gave your friend, and the face you picked) To adjust the tone of replies
The city you add in Settings, if you add one, and — on each entry written while a city is set — that city To show the weather on your diary, to show on each entry where you wrote it, and so your friend knows where you are. The city on an entry is stored on our server with that entry: deleting the entry deletes it. You can remove it from one entry, or from all past entries when you remove your city. Each entry also keeps the weather in your city at the moment you wrote it (a condition such as “Rain” and a temperature), from MET Norway; it is stored with the entry and deleted with it.
A one-way hash of your PIN (never the PIN itself), and a count of recent PIN checks on a new phone So you can prove it is you on a new phone, and so the PIN cannot be guessed quickly
AI-usage counts To apply free and subscription limits
A scrambled code made from a random number the app keeps on this phone So the free first reply is given once per phone. It is not linked to your account and stays after you delete it
Feature-usage events — which screens and actions, never content To find where the app confuses people
The result of the age check, if your phone asks for one (see “Children and teens”): adult, 13–17, under 13, declined, or not available. Never your birthday or exact age To know how many people the check stops. Kept as one usage event; deleted with your account
Subscription status To unlock paid features (via RevenueCat)

That list is meant to be complete. If it stops being complete, this page is wrong and we want to know.

Kept by RevenueCat (our subscription provider, not in our backend), with your app-specific user ID: your subscription and purchase history, and — only if you installed the app from one of our Apple Ads ads — the record Apple gives about that ad: which of our ad campaigns, ad groups, keywords and ads led to the install, the country or region, and whether it was a new download or a redownload. It does not include your name, your advertising identifier (IDFA), or anything you wrote. We use it to count how many installs, trials and subscriptions each of our ad campaigns brings.

Kept only on your phone (not in our backend): the list of entries you bookmarked, and, in the iOS Keychain, the hash of your PIN and a sign-in key that lets the app reopen your account if you delete and reinstall it. They are not part of your account, so the app cannot bring them to a new phone for you.

Voice recordings

What we can see

We are a small operation running a database. Staff with backend access could read what is stored, the same as with any hosted service. We do not do this as a matter of course, and we do not use your writing for anything except giving you the features you asked for.

We are telling you this because the app’s whole promise is privacy, and a promise that overstates itself is worth less than one that doesn’t.

Two specific things worth knowing:

Third parties that process your content

The app sends only the content needed for that feature, and only after you have agreed:

Before the first time anything goes to an AI provider, the app stops and asks. It tells you what gets sent, who it goes to, and that saying no leaves the journal fully usable. If you say no, no entry text ever leaves our backend.

Usage analytics are ours, not a third party’s. Those events live in our own Supabase alongside your other data. An event records the action, never the writing — “an entry was saved, it came from voice, it was 340 characters, it had a photo”, not one word of what you wrote. The app enforces this with a whitelist: anything that is not a count, a duration, a flag, or a short predefined label is dropped before it is sent. Deleting your account deletes these events too.

The chat page

This section describes the chat page (“Chat with” + the name you gave him/her), which you reach from his/her page.

Free and paid

Writing is free — typing, voice, a photo with each entry, export, and the PIN lock are free. A subscription also lets each entry hold more photos.

What a subscription buys is more replies and the full Sunday letter, within a monthly fair-use limit: after very heavy use in a calendar month, replies drop back to a few a day and fewer letters are written until the 1st. After the trial ends, accounts created before the 1.3 update keep a few replies each day; newer free accounts do not get replies. Free accounts get a short weekly letter, and what your diary friend remembers is updated once a week. These are product settings we may adjust; the app shows you where you stand rather than relying on this page to be current.

Notifications

This version can send local notifications: a reminder the day before your trial ends, a weekly note when your Sunday letter is ready, and — only if you ask to reset a forgotten PIN — one when the request is made and one when the waiting period is over. They are scheduled on the phone itself; there is no push server. The app asks for notification permission first, and you can say no or turn them off in iOS Settings. Notification text never contains anything you wrote — it can be shown on your lock screen.

Permissions

All of these can be revoked in iOS Settings.

What we do not do

Keeping and deleting

Your choices

Children and teens

The app is for people 13 and older, and its App Store age rating is 13+. It is not directed to children under 13, and we do not knowingly collect information from anyone under 13. If you think a child under 13 is using it, write to hello@diarybff.app. Accounts are anonymous, so we may not be able to find a specific one; the account can be deleted on the phone under Settings → Delete account.

Where the law requires apps to check age, the app asks Apple once after you unlock it, and again after 30 days. Apple shares only an age range, never your birthday. If the range is under 13, the app does not open. If you choose not to share it, the app waits until you do. Your phone keeps only the date of the last check; our server keeps one record of the result (the range, “declined”, or “not available” — see “What we store”), never your birthday or exact age.

If you are 13 to 17, the app works the same way for you as for everyone else. This is what is in place today:

Changes

We will update this page and the “last updated” date if this policy changes materially.

The rules for using the app are in our Terms of Use.

Contact

hello@diarybff.app