Privacy Policy

Last updated: 12 October 2026

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)


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:

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:

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:

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.

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:

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:

ProviderRoleWhat 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


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:

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