Privacy Policy
Fjord Studio ("we", "us", "our") values your privacy. This Privacy Policy ("Policy") explains how we collect, use, and protect personal information when you use the KeepTies mobile application ("KeepTies" or "the app").
KeepTies is a personal-relationship CRM that helps you remember to stay in touch with friends and family. You add contacts, log interactions, set reminders, and can request AI-generated suggestions and message drafts.
Name change: KeepTies was called Orbit until September 2026. It is the same app, the same account and the same package name (com.fjordstudio.orbit); only the name changed.
This Policy explains what personal data KeepTies collects, why, who processes it on our behalf, how long we keep it, your rights, and how to contact us. KeepTies is available globally, including in the EU/EEA, so the EU General Data Protection Regulation (GDPR) applies. For users in the EU/EEA, Fjord Studio is the data controller. You can contact us any time at support@keepties.app.
1. Summary (the short version)
- We collect the account details you sign up with, the contacts and notes you create, and basic usage/crash data.
- Your data is stored with Google Firebase (Authentication, Cloud Firestore, Analytics, Crashlytics).
- When you ask for an AI suggestion, a message or card draft, an analysis (Premium), or use the assistant, a limited amount of text (such as a contact's name and your notes about them) is sent to OpenAI and/or Anthropic to generate the response. They do not use it to train their models.
- When you sign up with email and password, we email you a one-time verification code via Resend to confirm you own the address.
- We do not sell your data and we do not use it for advertising.
- You can delete your account from inside the app, which deletes your profile, your contact data and any birthday cards you have sent.
- Birthday cards you send are encrypted on your phone before they leave it, and are deleted automatically after 14 days.
2. What data we collect and why
2.1 Account and profile data
Using KeepTies without an account (from version 3.2): you can use the app as a guest. Firebase then gives your installation an anonymous account identifier; no email address, name or password is collected. Everything you add is stored under that identifier exactly as it would be for an account, but it can only be reached from that phone: uninstalling the app or changing phone loses access to it. Guest accounts that hold no people and have not been opened for a week are deleted automatically. As a guest you get the same one-time free AI tries as an account (see Sections 2.4 and 2.11). Birthday cards and Premium require an account; when you create one, your data stays under the same identifier.
When you create an account, we collect and store:
- Email address (email/password sign-up, or from your Google account if you use Google Sign-In).
- Display name (from your Google account, if you use Google Sign-In).
- Password — handled entirely by Google Firebase Authentication; KeepTies never sees or stores your password itself.
- Saved passwords: if you choose to save your password when your phone offers it, it is kept by your phone's password manager (for example Google Password Manager or Samsung Pass) under that service's own terms, never by KeepTies. When you pick a saved login on the sign-in screen, the app uses it to sign you in and does not store it.
- Profile information you set in the app: username, a public @handle, an avatar (a colour, emoji, or gradient you pick), your appearance setting (light, dark or your phone's setting) and the language AI texts are written in. If you sign in with Google, your Google profile picture may be displayed from Google; KeepTies does not upload or store photo files of its own.
- Account status data: Premium subscription status and expiry, your contact count, activity streak and last-active date, onboarding/tutorial progress, AI-usage counters, and account creation date.
Why: to create and operate your account, sign you in, show your profile, enforce subscription entitlements, and run app features.
Legal basis (GDPR): performance of our contract with you (Art. 6(1)(b)).
Public @handle: your chosen @handle is stored in a registry that maps the handle to your account identifier and is readable by any signed-in KeepTies user so the app can check whether a handle is available. Do not choose a handle you consider sensitive.
2.2 Contacts and relationship data you create
For each person you add, we store the information you enter:
- Name, phone number, jobs/occupations, relationship type and an optional custom label.
- Reminder frequency, birthday (month/day), avatar, and free-text notes.
- How you reach them: the app Text and Call open for this person, if you pick one (for example WhatsApp, Signal, Telegram or Messenger), and their username in apps that find people by username (for example Instagram, Telegram, Messenger or Snapchat).
- Per-person settings: the language AI texts about this person are written in, whether their page is light or dark, the scene on their page (Premium), and any check-in, reminder or birthday you chose to skip until the next one.
- Life events, which may include categories such as health milestones or loss/grief, plus free-text descriptions.
- Interaction logs: date/time, interaction type (call, text, in-person, video, other), a free-text note, and a mood rating.
- Reminders and scheduled messages (including the message text you write and your device's time zone).
Why: these are the core features of KeepTies — they let you remember details about people and remind you to reach out.
Legal basis: performance of our contract with you (Art. 6(1)(b)).
Note on sensitive data: free-text notes and life events can contain special-category data (for example health or grief information) about you or the people you add. You decide what to enter. Please only record what you are comfortable storing, and only information you have a lawful basis to keep about others (see Section 3).
2.3 Imported phone contacts (optional, with your permission)
If you choose to import contacts, KeepTies requests the READ_CONTACTS permission and reads, from your device address book, the display name, phone number, email address and birthday of your contacts, whether a contact is marked as a favourite, and a device contact lookup key. The list is shown on your phone so you can pick people; only the contacts you select are saved to your KeepTies account (name, phone number and birthday; the lookup key is stored so the app can recognise the source contact). The favourite mark is only used to show your favourites first and is not saved.
Importing is entirely optional — you can use KeepTies by adding contacts manually and never grant this permission.
Why: to let you quickly add people you already know.
Legal basis: your consent (the Android permission prompt), and our legitimate interest in providing import functionality (Art. 6(1)(a)/(f)).
2.4 AI suggestions, drafts, the assistant and the coach
When you ask KeepTies for an idea for reaching out, a message draft, the text of a birthday card, or to improve a message you wrote, the request is sent through our secure Google Cloud Function, which forwards a limited payload to our AI providers (OpenAI and/or Anthropic, see Section 4). The payload contains only:
- the contact's name;
- how you know them: their relationship type, or your own label for it;
- up to 3 of their jobs;
- up to their 5 most recent life events: the kind of event, its date, and what you wrote about it;
- the number of days since you last contacted them, if you have logged contact;
- for an idea or a message, when their birthday is within the next month or passed in the last week, roughly when it is, which the AI providers only see in words such as "in a few days", never as a date;
- up to your 5 most recent free-text notes about that person;
- up to your 5 most recent interaction notes (date + your note text);
- an optional topic you choose;
- for "improve," the draft message text you wrote; and
- the language to write in (the one set for that person, otherwise the one in Settings).
For these requests, the contact's phone number, avatar, birthday date, and the apps and usernames saved for Text and Call are not sent to the AI providers. Notes and life events can hold sensitive details (see the note in Section 2.2); they are only sent when you ask for one of these texts about that person.
The assistant. When you chat with the in-app assistant, your messages in that conversation are sent the same way, together with a short list of up to 60 of your contacts so it can tell which person you mean. For each contact the list holds only the name, the contact's record identifier in the app, and a one-line status: relationship type, days since you were last in touch, how often you want to check in, whether a check-in is due, days until a reminder you set, and days until their birthday. Notes, phone numbers and other details are not included. The assistant can only propose an action, such as adding a reminder; nothing changes until you confirm it in the app.
The AI coach (Premium). When you ask for an analysis ("Get my analysis" on Progress or Weekly, or "How has it gone so far?" and "How did ... go?" under the Insights graph), the request holds numbers and first names only: your keeping-up score and streak, counts for this week, last week or the period you picked (such as people reached, catch-ups by type and birthdays wished), the first name of the person you were most in touch with in that period, and a list of up to 40 people who have a check-in or a birthday. For each of them it holds the first name, the relationship type, how often you want to check in, days since your last contact, days waiting past the check-in, and days until their birthday when it is within 30 days. Your notes, interaction notes, life events, phone numbers and record identifiers are never sent for an analysis. The report is kept on your phone, not on our servers.
Why: to generate the suggestion, draft, analysis or answer you requested.
Legal basis: performance of our contract with you (Art. 6(1)(b)).
We store AI-usage counters on your account to enforce the limits: how many requests you made today (Premium has a daily limit), and how many you have made in total (Free accounts and guests get one try of each kind, which is not renewed). We do not store your prompts, your contacts' details, or the AI's responses on our servers; the generated text is returned to your device and not saved by our backend. Requests to OpenAI are sent with storage turned off, so they are not kept in OpenAI's request logs either.
2.5 Usage analytics
We use Firebase Analytics (Google Analytics for Firebase) to understand how the app is used. We log events such as: app open, sign-up/sign-in (with method: email or Google), the steps on the way into an account (sign-in screen shown, form sent, a fixed reason when it did not work, such as a wrong password, and whether the email verification code was sent, confirmed or abandoned), whether a saved login was used or a password was saved, sign-out, contact added (with relationship type), interaction logged (with type), AI text generated/viewed (with the kind of text: an idea, a message, a card or an improvement), an AI analysis asked for, an AI limit reached, which app a message or call was handed to (for example WhatsApp), paywall shown/dismissed, subscription started (with the plan, the offer and whether it began with free days), onboarding completed, and contact import started/completed (with a count). The sign-in events carry only fixed words, never your email address or password. No event carries a name, an email address, a contact's identifier or text you typed. Firebase Analytics also automatically collects standard device and usage data, including an app-instance identifier, the Android advertising ID where the device makes it available, app version, device type, and approximate location derived from IP address. KeepTies shows no ads inside the app. We do advertise KeepTies itself on Google, and use these events to see which of our ads bring people to the app (for example, whether someone who installed after an ad went on to add a person or to subscribe). In the EEA, the United Kingdom and Switzerland this only happens if you allow it: the app asks once, and you can change your answer at any time in Settings → Ad measurement. Your contacts' details, your notes and your messages are never part of these events.
Why: to measure feature usage, improve the app, and see which of our own ads work.
Legal basis: our legitimate interest in improving KeepTies (Art. 6(1)(f)); for measuring our own ads in the EEA, the United Kingdom and Switzerland, your consent (Art. 6(1)(a)), which you can withdraw at any time in the app.
2.6 Crash diagnostics
We use Firebase Crashlytics to receive automatic crash reports. These include crash stack traces, device model/OS, and a Crashlytics installation identifier. We do not attach your name, email, or user ID to crash reports.
Why: to detect and fix crashes.
Legal basis: our legitimate interest in app stability (Art. 6(1)(f)).
2.7 Subscription / purchase data
If you buy KeepTies Premium, the purchase is handled by Google Play Billing. Google processes your payment; KeepTies only reads the purchase state and a purchase token (used to confirm the purchase on your device) and records your resulting Premium status. So that a purchase can be matched to the right KeepTies account, the app also gives Google Play a one-way scrambled (hashed) version of your account identifier, which Google cannot turn back into your identifier, email or name. It is used only to match the purchase to your account and to help Google Play detect fraud. From version 3.2 the app no longer records your Premium status itself: our server checks the purchase with Google Play (Google Play Developer API) and stores the result on your account, and Google Play notifies our server of renewals, cancellations and refunds. For that purpose we keep the purchase token, the product bought and the expiry date. KeepTies never sees your card or payment details.
Why: to provide and manage your subscription.
Legal basis: performance of our contract with you (Art. 6(1)(b)).
2.8 On-device data (does not leave your device on its own)
Some data is kept locally on your device to run features: a home-screen widget cache (up to 3 contacts' name and status), reminder/notification data (contact name, phone number, reminder/message text) held while reminders are scheduled and shown, the latest AI idea and message for each person (kept for a day), the AI coach's reports, and the email address you last used to sign in with a password, so the sign-in screen can fill it in next time. That address stays on the phone when you sign out, and is removed when you delete your account in the app or uninstall the app. Local app data is excluded from Android cloud backup and device-transfer.
2.9 Birthday cards you send
If you send someone a birthday card, the card is published as a link that the recipient can open in a browser without an account and without the app.
- What the card holds: the design you picked, your message, your signature, and the recipient's first name. Nothing else about them is included, and no contact record, note, date, or phone number ever leaves with the card.
- The card you send is encrypted before it leaves your phone. It is sealed on your device (AES-256-GCM) and only the encrypted result is published. The key is part of the link you share and is never sent to our servers, so we cannot read the cards we publish. Neither can anyone who obtains the stored data without the link.
- Your draft: the design, message and signature you write are saved with that contact in your account, the same way as your notes, so you can finish the card later or send it again. The draft is not encrypted with the card's key. It is protected like the rest of your account data and stays until you change it or delete the contact or your account.
- What we store: the encrypted card, a random identifier, the time it was created, and your account identifier, so that you can delete the card later and so we can apply a daily limit on how many cards one account may create.
- Who can open it: anyone holding the complete link. The identifier cannot be guessed, the page asks search engines not to index it, and the link is only as private as you keep it. Treat it the way you would treat the card itself.
- How long it lasts: cards are deleted automatically 14 days after they are created. You can also remove a card earlier from the app, which deletes it immediately and breaks the link. Deleting your account deletes all your cards the same way.
- The link on your phone: a copy of the link you shared is kept on your own device for a day so the app can offer it again. It is not synced and does not survive reinstalling the app.
2.10 Free trials and the new-member price
Free trials (7 days on the yearly plan, 3 days on the monthly plan) are offered through Google Play. Google Play decides whether your Google account can have one; they are meant for people who have not subscribed to KeepTies before. We receive nothing extra for a trial beyond the purchase data in Section 2.7.
The new-member price (the first year of the yearly plan at a lower price) is offered for 48 hours, once per account and once per phone. To keep it to once per phone, the app sends your phone's Android ID (an identifier Android gives each app on each phone) to our server when it checks your Premium status. The server uses it only to work out a one-way code (a keyed hash, HMAC-SHA256 with a secret key), which cannot be turned back into the Android ID, and does not store the Android ID itself. When the 48 hours of a new member start, the server stores that code without your account identifier, and deletes it after 12 months. The code is kept when you delete your account, so that deleting and re-creating an account, or a new account on the same phone, does not start another 48 hours. On your account we store when your 48 hours end.
Why: to offer the new-member price fairly and stop it being claimed again and again (fraud prevention).
Legal basis: our legitimate interest in preventing abuse of an offer (Art. 6(1)(f)).
2.11 Limits against abuse (hashed IP address)
Some requests are counted per network for the day, so that one network cannot use up limits that everyone shares: the verification codes we email you, and AI requests made as a guest (without an account). For this our server stores a hashed form of the IP address the request came from (never the address itself), together with the date and how many requests came from it that day. The record is not linked to your account and holds only the most recent day it was used.
Why: to stop automated or repeated sign-ups and guest sessions from using up the email and AI limits (fraud prevention).
Legal basis: our legitimate interest in preventing abuse of the service (Art. 6(1)(f)).
3. A note about other people's data (contacts)
KeepTies lets you store information about other people (your friends and family). If you are in the EU/EEA, you remain responsible for the personal data you record about others and for having a lawful basis to do so. Please:
- only store information that is appropriate and that you are entitled to keep;
- be mindful before recording sensitive details (e.g. health, grief) about another person; and
- respond to any request from a contact to correct or remove their information you hold (you can edit or delete any contact in the app at any time).
We act as the processor of this data on your behalf for the purpose of operating the app, and as controller for the limited platform-level data described above.
4. Who we share data with (processors and sub-processors)
We do not sell your personal data and do not share it for advertising. We share data only with the service providers ("processors") that power KeepTies:
| Provider | Role | What it receives |
|---|---|---|
| Google Firebase / Google Cloud (Google) | Authentication, database, serverless functions, analytics, crash reporting | Your account identity and password (Auth); all profile and contact data you create (Cloud Firestore); the AI request relay (Cloud Functions); usage events and automatic device data (Analytics); crash reports (Crashlytics) |
| OpenAI (GPT) | AI generation, primary provider (models: GPT-6 Luna, with GPT-5.4 nano as a backup) | At AI-generation time only: for an idea, a message or a card, the contact's name, relationship, up to 3 jobs, up to 5 life events, days since last contact, roughly when their birthday is, up to 5 of your notes, up to 5 recent interaction notes, an optional topic, and (for "improve") your draft message text; for the assistant, your messages and the contact list; for an analysis, first names and counts. All as described in Section 2.4. Sent with storage turned off |
| Anthropic (Claude) | AI generation, automatic fallback (model: Claude Haiku 4.5) | The same AI payload as OpenAI, used only when OpenAI is unavailable, so a single AI request may be processed by OpenAI, Anthropic, or both |
| Google Play Billing (Google) | Subscription payments | Payment and subscription transaction data (handled entirely by Google Play) |
| Resend (Resend, Inc.) | Transactional email delivery | Your email address and the one-time verification code, at the moment we send you an account-verification email (sent from verify@fjordstudio.app). Nothing else about your account or contacts is shared |
API keys for Anthropic, OpenAI, and Resend are stored securely in Google Cloud Secret Manager and are never embedded in the app.
We may also disclose data if required by law, to enforce our terms, or to protect the rights, safety, or property of our users or others.
5. International data transfers
KeepTies's AI relay (Cloud Function) runs in the EU (europe-west1). Other Google Firebase services (Firestore, Analytics, Crashlytics) and our AI providers (Anthropic and OpenAI) may process data on servers located outside the EU/EEA, including in the United States. Where data is transferred outside the EU/EEA, it is protected by appropriate safeguards such as the EU Standard Contractual Clauses and/or the providers' participation in recognised transfer frameworks, as offered by Google, Anthropic, and OpenAI in their respective data-processing terms.
6. How long we keep your data
- Account, profile, and contact data: kept for as long as your account exists. When you delete your account, this data is deleted (see Section 7).
- AI requests: we do not store the content of your AI prompts or the AI responses on our servers, and requests to OpenAI are sent with storage turned off. Only the usage counters are kept on your account.
- Birthday cards: a published card is deleted automatically 14 days after creation, or immediately when you remove it from the app or delete your account, and we only ever hold its encrypted version. The draft stays with the contact in your account until you change it or delete the contact or your account.
- The new-member price: the one-way code described in Section 2.10 is deleted 12 months after the 48 hours started. The end time on your account is deleted with your account.
- Limits against abuse: the records described in Section 2.11 hold only a hashed IP address, the most recent day it was used and that day's count, and are not linked to your account. They are not currently deleted on a schedule.
- Analytics and crash data: retained by Google according to Firebase's standard retention settings.
- AI providers: OpenAI and Anthropic process the AI payload only to generate the response and do not use it to train their models. They may keep requests for a limited period to detect abuse, under their own data-processing terms for API use.
7. Your rights and how to delete your data
Under GDPR (and similar laws) you have the right to access, correct, delete, restrict, or object to the processing of your personal data, and the right to data portability. You can exercise most of these directly in the app:
- Edit or delete any contact, note, log, reminder, or message at any time within KeepTies. A person you delete first goes to Recently deleted (in Settings), where you can restore them or delete them for good.
- Delete your account from the app's settings. Deleting your account removes your Firebase Authentication account and cascade-deletes your user profile document and all of your contacts and their sub-data (logs, reminders, scheduled messages) from our database, and deletes any birthday cards you have sent.
To make any other privacy request — including access, correction, portability, or full erasure — contact support@keepties.app. We will respond within the timeframes required by law.
If you are in the EU/EEA and believe we have not handled your data properly, you have the right to lodge a complaint with your local data protection supervisory authority.
You can also withdraw the contacts permission at any time in your device's Android settings; this stops further contact imports but does not delete contacts you have already imported.
8. Security
We use Google Firebase's managed infrastructure. Data in transit is encrypted using HTTPS/TLS. Access to your database records is restricted by Firebase Security Rules so that, in normal operation, only you (when signed in) can read or write your own profile and contacts. AI provider keys are held in Google Cloud Secret Manager.
No system is perfectly secure, but we take reasonable technical and organisational measures to protect your data.
9. Children's privacy
KeepTies is not directed to children. It is intended for users aged 13 and over. We do not knowingly collect personal data from children under 13. Where your country sets a higher minimum age of digital consent (for example 16 in some EU countries), users below that age should only use KeepTies with the consent of a parent or guardian. If you believe a child under 13 has provided us with personal data, contact us at support@keepties.app and we will delete it.
10. Changes to this policy
We may update this policy from time to time. When we make material changes, we will update the effective date above and, where appropriate, notify you in the app. Continued use of KeepTies after an update means you accept the revised policy.
11. Contact us
Fjord Studio
Email: support@keepties.app
Fjord Studio is a trading name of Langsæter Labs (org. no. 937939493, Norway), the data controller for KeepTies.
Last updated: 12 October 2026