Privacy Policy (GDPR Art 13 + ePrivacy)

Status: appropriate for the current closed-beta scale, revised against an external legal research memo dated 7 August 2026 and then reconciled, the same day, against a line-by-line audit of the shipped source code. Where the two disagreed, the code won: several passages that described an intended design now say plainly what the app does today, and are marked [planned] where the design is still being built. This notice is drafted to satisfy the information obligations of GDPR Article 13 (information to be provided where personal data are collected from the data subject) and the device-access consent rule of Article 5(3) of the ePrivacy Directive 2002/58/EC (as amended by 2009/136/EC), transposed in Denmark as cookiebekendtgørelsen, BEK nr 1148 of 9 December 2011, § 3. It also reflects Apple App Store Guideline 5.1.1(i) and Google Play's User Data / Data safety requirements. These documents are not legal advice and are not a substitute for a professional review — a lawyer review is recommended as the user base and data processing grow, and is advisable before enabling ID/biometric verification.

Last updated: 20 September 2026 — new Sections 3.7a and 3.7b describe the automatic check of your profile and tag photos, and what a report about one photo does: enough different people reporting the same photo hides it while a person decides, temporarily, reversibly, and without anything happening to your account. Section 4 says why that is not an Art 22 decision, and Section 8 gives the retention for the records behind it. Before that, 19 September 2026 — Section 10 now says what account deletion does with your e-mail address on chat rooms and messages (it replaces it), and that copies in our analytics warehouse are deleted within 30 days. Before that, 14 September 2026 — Sections 3.13 and 3.14 now describe advertising on the free plan and Premium subscriptions as they work once each is switched on, with who receives what (Section 6.3), transfers (Section 7), retention (Section 8) and device access for ads (Section 9). Before that, 10 September 2026 — the location lifecycle is now a ladder rather than two cliffs (Section 3.4). Background reading no longer stops dead after 14 days: it narrows instead, so a dormant account is only updated after a large move and only as a coarse area, and stops entirely at 90 days. The automatic expiry in the same section splits the same way — precise position deleted after 14 days of account inactivity (a tightening on the previous 90), coarse presence deleted after 180. Collecting and deleting remain separate mechanisms: one stops us taking new readings, the other removes what was already taken Applies to: the Flybi mobile application ("Flybi", "the app", "we", "us")


1. Who we are (the controller) — GDPR Art 13(1)(a)

Flybi is operated by:

EU representative (GDPR Art 27): Not applicable — the controller is established in the EU (Denmark). Art 27 applies only to controllers not established in the Union (Art 3(2)). The Danish establishment is itself the contact point for the supervisory authority and for data subjects.

Data Protection Officer — GDPR Art 13(1)(b)

No Data Protection Officer is appointed; one is not legally required at the current scale. The controller (Nicholas Gerster Toft Simonsen, support@flybi.app) is the contact for privacy matters. This position is re-assessed if scale grows or biometric/ID verification is enabled. We do not consider a DPO mandatory under GDPR Art 37(1): we are not a public authority, and our core activity is operating a single consumer app rather than large-scale monitoring or large-scale special-category processing as our core business in the Art 37 sense. At the current closed-beta size the "large scale" thresholds in Art 37(1)(b) and (c) are not met. That will change as we grow: a proximity service doing background location and processing special-category data crosses those thresholds well before it feels like a large company, and we re-run the assessment at each order of magnitude of growth.

Note that a DPO is not required for a Data Protection Impact Assessment to be required — see Section 12.


2. Who Flybi is for — 18+ only (children) — GDPR Art 8

Flybi is an 18-and-over service. You must be at least 18 to create an account. We do not knowingly process the personal data of anyone under 18.

If we learn that a user is under 18, we will close and erase the account.


The table below lists each category of personal data, the purpose, and the lawful basis under GDPR Art 6 (and, where relevant, the special-category condition under Art 9(2)). The field names in brackets are the actual Firestore fields (see lib/core/constants/firestore_fields.dart) and are given for transparency.

3.1 Account & authentication

3.2 Profile & personality

3.3 Interests as "tags", including secret tags

3.4 Location — proximity discovery, including in the background when the app is closed — see also Section 9 (ePrivacy)

Read this section carefully. It is the most intrusive processing Flybi does.

So a distance another user sees is accurate to roughly ±75 m. That is the design: precise enough to be useful, never precise enough to be a location.

New and updated profiles now publish only the cells described above. Profiles that have not been written since the change may still carry the old precise copy, and that cleanup is being applied in stages — the last stage cannot run until the app update that reads the new cells has reached everyone, because removing the old field from under an older app would empty that person's feed. Until each stage completes, treat a last-known precise position on an un-updated profile as readable by any other signed-in user. [in progress]

Your e-mail address is a separate matter and is still readable on the profile document by any signed-in user. It cannot be moved yet: the chat and blocking features currently find people by e-mail address, and that has to be changed to use an internal ID first. [planned] We will update this bullet when each of these actually lands, rather than quietly dropping it.

What is true today: turning location off in Profile → Location stops both, at the same depth as turning it on, and leaves the rest of Flybi working — you keep your account, your chats and your connections. We will never require location as a condition of using Flybi, and we will never re-ask after you have refused.

  1. After 14 days of account inactivity we delete the precise part of your stored position — the exact coordinates and the ~153 m cell. A coarse area cell remains, so people can still find you, but nobody can be shown a specific distance to you.
  2. After 180 days of account inactivity the coarse cell goes too, and you stop appearing to anyone. We warn you first: a notification 7 days before, and another 24 hours before.

Opening the app at any point restores a fresh position and resets both clocks; doing nothing lets it go, which is a perfectly good outcome and costs you nothing else — your account and everything in it are untouched.

The periods are measured from your last activity, not from when the point was recorded, so a point you keep refreshing is never removed by this.

Why the split. A stored point stops being treated as precise almost immediately: after 30 minutes of inactivity the app no longer shows anyone a specific distance to you, only a coarse "in your area" reading. So holding the precise version of a dormant point buys nothing anybody can see — which is why stage 1 removes it early, and why that is a tightening on the previous 90 days. What the remaining period keeps is coarse presence, not a live position, and that is the part worth keeping longer: it is what lets someone still reach you after a quiet few months instead of finding you gone. We do not put your coordinates into analytics events, crash reports or server logs; a coarse ~39 km area cell can, however, still appear as a diagnostic key on a crash report, which we are removing.

3.5 Location — live "Hot/Cold" game (real-time precise distance)

3.6 Chat messages

3.7 Safety: reports, blocks & moderation

3.7a Automatic check of your profile and tag photos

3.7b Reports about one photo, and a photo hidden while it is looked at

3.8 Date of birth / 18+ age gate

3.9 Push notifications & device tokens

3.10 Technical, security & abuse-prevention data

App Check. Firebase App Check is integrated, but its enforcement is currently switched off on our server functions, including account deletion — the device-attestation providers it depends on are not yet registered with Apple and Google. So while it is listed here and in Section 6.2 as something we use, it is not protecting those paths today. Section 13 says the same.

3.11 Crash diagnostics, performance monitoring and analytics

⚠️ Read this first — what happens today, 7 August 2026

The consent design described in the rest of this section is not yet built. In the app as it ships right now:

We are not describing that as a design. It is a defect, it is the top of our engineering list, and until it is fixed the legal bases set out below are not being properly obtained. Everything marked [planned] below is where we are going, not what the app does now. If you want us to delete diagnostics data already collected about you, e-mail us (Section 1) — note that account deletion does not currently reach these systems (Section 10).

[planned] These will be off by default, with nothing running unless you switch it on, and the app working identically either way.

3.12 Best-fit / ML signals

3.13 Advertising (free plan)

Flybi pays for itself partly with a small number of ads shown to people on the free plan. Advertising is controlled by a switch on our side and may be off; while it is off, nothing in this section happens. Premium subscribers never see ads (Section 3.14).

3.14 Premium subscriptions and payments


Flybi uses automated processing to rank and surface profiles (best-fit and soulmate/strong-fit scans) and an automated text filter to screen display names, bios, tag titles, tag descriptions and room names for disallowed language. These help us run the service and keep it safe.

We do not make decisions producing legal effects concerning you or similarly significantly affecting you solely by automated means within the meaning of Art 22(1). Moderation actions that restrict an account or content (warn / hide / suspend) are taken by a human moderator, who issues a statement of reasons (DSA Art 17).

The automatic photo check (Section 3.7a) takes no decision about you and none about what your photo shows: it only marks photos for a person to review, and a person decides whether a photo is removed. The one removal made without a person is of a photo link that does not point at a photo uploaded through Flybi, a technical rule about where a link points rather than a judgement of the photo or of you. It concerns one link, you can add a photo through the app straight away, and nothing else about your account changes. You can still ask a person to look at it (Section 3.7a).

One further measure takes effect before a person has looked: when enough different people report the same photo, that photo is hidden while a person decides (Section 3.7b). We treat this as falling outside Art 22(1) and we say why, rather than asserting it: it concerns one photo, it is temporary and reversible, it is not a decision about you — your account, your other photos and everything you can do on Flybi are untouched — and the decision that actually removes a photo is taken by a person, who gives their reason. The photo is not deleted while it is hidden. Even so, we tell you it happened and why, and support@flybi.app reaches a person who can put it back.


5. How we keep the service safe

We operate: an in-app report flow and block capability; a human moderation process with statements of reasons and warn / hide / cooldown / ban actions; a disallowed-language filter on display names, bios, tag titles, tag descriptions and room names (chat messages are not filtered; there, reports and blocks are the controls); an 18+ age gate; and Terms/EULA acceptance at registration. These underpin the safety processing described in Sections 3.6–3.8.

Your profile and tag photos are also checked automatically after upload. A photo the check marks is reviewed by a person, who decides; nothing is removed automatically for what it shows (Section 3.7a). Photos sent in chat are not checked; there, reports and blocks are the controls.

You can also report a single photo, from the photo itself. Reports about one photo act on that photo: when enough different people report the same one, it is hidden while a person decides, and nothing about the reported account changes (Section 3.7b).


6. Who receives your data — GDPR Art 13(1)(e)

6.1 Other users

By design, your profile (name, photo, bio, public tags, approximate area, badges and — if you make it visible — your personality profile) is shown to other signed-in users so they can discover and connect with you. Chat content is shared with the people in that conversation. Secret tags are shared only via a mutual reveal.

More than that is currently readable, and you should know it. Your profile record as stored today also carries your e-mail address and your precise last-known coordinates, and it is readable by any signed-in Flybi user, not only by the people we choose to show you to. Nothing in the app displays those fields — but "not displayed" is not the same as "not shared", and we are not going to describe it as if it were. Removing them from the readable copy is [planned]; see Section 3.4.

Open rooms. If you create or join an open ("Stop Bi") room, that room is listed to other signed-in users so they can find and join it. The listing shows its title and image, its join tags, and its approximate area — a geohash cell of roughly 1.2 km × 0.6 km, the same coarse grid used for profile discovery. Your precise coordinates are not in the room record: it holds only the cell, so the point you were standing on when you opened the room is not recoverable from it (#1033). Rooms you keep private are visible only to their participants and to anyone you invite.

⚠️ What an open-room listing actually carries. Everything in the room's record travels to the device of every signed-in user who lists open rooms — not just the parts the app puts on screen. That includes the e-mail addresses of the room's participants, of anyone invited to it, and of whoever created it (room membership is keyed by e-mail throughout Flybi), and the text of the last message sent in the room. The app does not display the last message or the addresses in the discovery card, but they are delivered all the same, and a determined person can read them. If you would not want your e-mail address known to strangers, do not join open rooms until we have fixed this. Re-keying membership from e-mail to an opaque ID is tracked as #696 / #600.

What a new joiner can see. When someone joins an open room, they are shown messages sent before they arrived — currently up to the most recent 200 messages of that conversation. There is no server-side limit behind that number: it is a cap the app applies, and one we can change remotely, so it is a product setting rather than a guarantee. People who were not present when you wrote something can therefore read it. A real cap — post-join only, or a short window — is [planned].

6.2 Processors (sub-processors) acting on our instructions

We use Google Firebase as our backend processor (the contracting Google entity — e.g. Google Ireland Limited and/or Google LLC, as applicable under Google's Cloud/Firebase terms). The specific services are:

And, for crash, performance and usage data (Section 3.11) — which, as that section explains, are currently running by default rather than on your switch:

Google processes this data on our behalf as a processor under the Google Cloud / Firebase Data Processing and Security Terms (an Art 28 Data Processing Agreement is in place via acceptance of Google's DPA). For the three diagnostic and analytics services above, the contracting entity is Google LLC and the data reaches the United States — see Section 7. We keep Google's data-sharing settings off so that Google does not become an independent controller of that data. No other processors (for example a third-party e-mail provider) are shipped in the current build; this list will be updated if any are added. (Current position; to be confirmed in a professional review as the project grows.)

6.3 Independent controllers: Google for ads, Apple and Google for payments

These companies decide for themselves how they use the data they receive, under their own terms and privacy policies, so they are not our processors:

We may disclose data to public authorities (e.g. Danish Police) where required by law or to address a serious risk to life or safety, and to our advisers to establish, exercise or defend legal claims.


7. International transfers — GDPR Art 13(1)(f) / Arts 44–49

Our processing is configured for the EU/EEA: Cloud Functions run in europe-west1 (Belgium) and Firestore/Storage are provisioned in an EU region (e.g. eur3 / europe-west1). (Current configuration; to be confirmed in a professional review as the project grows.)

Three things nonetheless leave the EEA:

For the first two, the mechanism is the same. Google LLC is certified under the EU–US Data Privacy Framework, which the European Commission has found to provide an adequate level of protection (Art 45), and the EU Standard Contractual Clauses are incorporated into Google's Data Processing Terms as an Art 46 safeguard that stands behind it. We keep the SCCs in the contract chain deliberately, so that the transfer remains covered if the Framework is ever suspended or annulled — a legal challenge to it is pending before the Court of Justice. You can request a copy of the relevant safeguard using the contact details in Section 1.


8. How long we keep your data (retention) — GDPR Art 13(2)(a)

We keep personal data only as long as needed for the purposes above. Every period below is anchored to an event we actually record — the date you deleted your account, the timestamp of the last message in a conversation, the date a report was closed — so that you can work out the period that applies to your data rather than reading a general promise.

⚠️ How these periods are enforced today, 7 August 2026. Deletion you ask for — account deletion, erasing your location — runs immediately, as a real server-side job, and you can rely on it. The time-based periods in the table below are a different matter: the scheduled clean-up job that is meant to enforce them has not been built yet. Rows marked [not yet automatic] describe the limits we hold ourselves to and will delete to on request, not a sweep that runs on its own. We are telling you this instead of quietly loosening the wording, and building the job is the fix.

Data Retention
Account, profile, tags, photos, personality, stats Kept while your account exists. Erased when you delete your account (Section 10) — see the erasure timing note below.
Location (Section 3.4) One point only. Each reading overwrites the previous one, so no trail is built. The stored point is deleted when you turn location off, when you use "Erase my stored location", and when you delete your account. In addition, an un-refreshed point expires automatically in two stages: the precise position after 14 days of account inactivity, and the remaining coarse area cell after 180 days, with notifications 7 days and 24 hours before the second. Running since 18 August 2026; two-stage since 10 September 2026.
Live Hot/Cold game session data The live position record written during a game stays on the chat room after the game ends until a later game overwrites it or your account is deleted (Section 3.5). Clearing it when the game stops, and sweeping old records, are [planned].
Chat messages Kept for the life of the conversation. The 12 months after the last message limit is [not yet automatic] — no job currently deletes dormant conversations. On account deletion your profile is erased, but messages you sent stay in the conversations they were delivered to, on our legitimate interest in the other participants' own record of their conversation (Art 6(1)(f)); you can object to that under Art 21 and we will weigh it. The images you sent are an exception: they are deleted from Storage by the erasure cascade, so a retained message shows the text but no longer the photo (#1021).
User reports / safety & moderation records Our limit is 24 months from the date the report is closed (actionedAt), and these are kept beyond your account deletion, because they are needed to keep other users safe and to establish, exercise or defend legal claims (Art 17(3)(e), and our legitimate interest under Art 6(1)(f) in the safety of the people who reported). [not yet automatic] — deletion at 24 months is done on request or by hand until the scheduled job ships. Reports that led to a ban, or that concern serious harm, may be kept longer where a specific matter is live — we will tell you the period if you ask.
Photo check results (Section 3.7a) The result of each check (the ratings, whether the photo was marked for review and what the reviewer decided, never the photo) is kept while your account exists and erased when you delete your account. A photo waiting for another check is listed in a queue until it has been checked, and that entry is erased with the account too. The note that a photo was removed is kept until a new photo replaces it, and is erased with the account.
Report-counting records and reporter reputation (Section 3.7b) The record that you reported a particular photo, and the count of how many of your reports were dismissed, belong to the reports they were derived from and are kept under the same limit — 24 months from the date the report is closed — and for the same reasons. Like the reports, deletion at 24 months is [not yet automatic], and these records can outlive the account they concern for that period, on the same Art 17(3)(e) and Art 6(1)(f) grounds as the reports themselves.
Record of a hidden photo (Section 3.7b) Kept under your own account for as long as the account exists, so that a photo that was hidden can be put back and so that a decision about it can be shown to you; erased when you delete your account. The photo itself is never deleted merely for being hidden.
Date of birth / age-gate record Kept while your account exists (age-assurance evidence); erased with the account.
Encounter & ML/connection-outcome rows about other users On your deletion these are stripped of your name and photo and your identifier is replaced with a placeholder, rather than the rows being deleted, so other users' history and counts survive. Be aware that one of those placeholders is currently built from your account's internal ID rather than being a fresh, unlinkable token — so it is not the dead end we would like it to be. Fixing that is [planned]; see Section 10.
Blocks placed on you by other users Kept as long as the blocking user's account exists, so that their block continues to work — and removed when you delete your account, since the erasure cascade scrubs you from other people's block lists.
Technical logs, rate-limit and security data Our limit is 30 days from the date of the log entry, and up to 6 months for logs retained for a specific abuse or security investigation. [not yet automatic].
Crash, performance and analytics data (Section 3.11) Retained by Google: Crashlytics 90 days; Performance Monitoring 30 days where associated with an IP address and 60 days where associated with an installation. These are enforced by Google, not by us.
Premium purchase records (Section 3.14) Kept while your account exists; erased when you delete your account. Apple and Google keep their own billing records under their terms.
Advertising data (Section 3.13) Held by Google under its own retention policy (https://policies.google.com/technologies/retention). Your consent choice stays on your device until you change it or remove the app. Flybi keeps no ad data beyond the placement counts in the analytics row above.
Backups Our backup rotation is 30 days. A deleted record may survive in a backup until that backup is overwritten in the ordinary cycle; it is not used for any other purpose in the meantime, and if a backup is ever restored the deletions are replayed against it.

Timing of erasure. When you ask us to erase data, or delete your account, we act on it promptly — the deletion runs when you confirm it, not on a clean-up schedule, and well inside the one month Art 12(3) gives us to respond. That is deliberately a different clock from the periods in the table above, which is why the box above tells you which of those periods are not yet enforced by a job.

Where a period above depends on something we cannot predict — an open safety investigation, a legal claim — we keep the data for as long as that specific matter requires and no longer, and we will tell you the expected period if you ask (Art 13(2)(a)).


9. Access to your device (ePrivacy) — Art 5(3) ePrivacy Directive / cookiebekendtgørelsen § 3

Three things Flybi does count as storing information on, or gaining access to information stored in, your terminal equipment under Art 5(3) of the ePrivacy Directive 2002/58/EC, transposed in Denmark as BEK nr 1148 of 9 December 2011 § 3:

  1. Reading your device's location and sending it to our servers — for discovery and background updates (Section 3.4) and the live game (Section 3.5). Sensor readings are outside Art 5(3) only while they stay on the device; once the reading, or any derivation of it such as a geohash, leaves the device, Art 5(3) applies (EDPB Guidelines 2/2023 v2.0, §44).
  2. Writing and reading the installation identifiers used by Crashlytics, Performance Monitoring and Analytics (Section 3.11). ⚠️ Those identifiers are currently being written at launch without asking you first — see the box at the top of Section 3.11. The rule below is the rule; we are not yet meeting it for this second item, and the consent prompt that will fix it is being built.
  3. Ads on the free plan (Section 3.13). The Google Mobile Ads software reads the device's advertising identifier, and stores and reads identifiers and your consent choice on the device. When advertising is on, Google's consent message asks you before the first ad is requested, and on iOS Apple's tracking prompt is shown as well. If you decline, ads are not personalised; declining does not remove ads.

All of these require your prior consent, and this is a separate legal hook that sits in front of our GDPR Art 6 basis — if we do not clear Art 5(3), no Art 6 basis can rescue the processing, and Art 5(3) has no legitimate-interest option. We do not rely on the "strictly necessary for a service you explicitly requested" exemption for any of it. In particular, that exemption cannot cover collection that continues while the app is closed, and it cannot cover crash reporting or analytics, because the test is what is strictly necessary from your point of view — Flybi works the same without them.

The operating-system permission dialog is not this consent. An OS permission prompt is a technical control over a resource; it does not name a purpose, a retention period, a recipient or a withdrawal right, and it cannot be a valid consent on its own. Our own in-app consent screen is what asks you, and the OS prompt is only triggered after you have said yes there. If you decline in Flybi, we do not show you the OS prompt at all.

Withdrawal. Turn location off in Profile → Location — one tap, at the same depth as switching it on. You can additionally revoke the permission in your device settings. Turning location off in-app stops every location read, foreground and background, and also erases the location already stored for you, both the copy on your profile and the private copy (Section 3.4). Withdrawing leaves the rest of Flybi working. For diagnostics and analytics there is no in-app switch yet (Section 3.11); until there is, e-mail us and we will stop it for you. For ads, Profile → Privacy & Ads → Manage ad consent reopens your choices.

Supervision. GDPR matters are supervised by Datatilsynet; Digitaliseringsstyrelsen supervises the Danish cookiebekendtgørelse — the rules in this section — and can impose penalties under it. See Section 11.


10. Your rights — GDPR Art 13(2)(b)–(d)

You have the following rights over your personal data. To exercise them, use the in-app controls described below or contact us (Section 1).

A separate deactivation option lets you hide your account without deleting it.

What "delete your account" does, and what "clear chat history" does — they are not the same. Deleting your account really deletes data, as described above. The control still labelled "Clear chat history" deletes nothing: it records a point in time against your e-mail address on that conversation and hides everything before it from your own view. Everyone else in the room still sees every message, and the messages remain in our database. We are renaming the control, because the current name promises deletion and delivers hiding. If you want data gone rather than hidden, delete your account or ask us. - Restriction (Art 18) — ask us to stop using your data while a dispute about its accuracy or our legal basis is resolved, instead of deleting it. Hiding a conversation from your own view is a form of restriction, not erasure — see above. - Objection (Art 21) — object to processing based on legitimate interests (Sections 3.7, 3.10 and 3.12); we will stop unless we have overriding legitimate grounds (e.g. ongoing safety/abuse handling). - Data portability (Art 20) — receive data you provided, based on consent or contract, in a structured, commonly used, machine-readable format. - Withdraw consent (Art 13(2)(c); Art 7(3)) — where we rely on consent, you can withdraw at any time, as easily as you gave it, without affecting the lawfulness of processing before withdrawal. We rely on consent for: - Foreground location and, separately, background location (Sections 3.4 / 3.5) — withdraw either in Profile → Location, or in your device settings. Withdrawing also erases the location already stored for you, and the same screen has a standalone "Erase my stored location" control. - Crash & performance diagnostics and, separately, usage analytics (Section 3.11) — the in-app switches are [planned] and not there yet, so for now withdraw by e-mailing us and we will switch it off for your account and delete what has been collected. - Your tags, where they reveal special-category data (Section 3.3), and optional profile fields — withdraw by removing them or editing your profile. - Personalised ads and the device access they need (Sections 3.13 and 9): withdraw in Profile → Privacy & Ads → Manage ad consent, and on iOS also in Settings → Privacy & Security → Tracking. Ads then continue, not personalised.

Withdrawing any one of these leaves the rest of Flybi working. We do not make access to the app conditional on background location, diagnostics or analytics, and we will not re-ask after you have refused.

Access and data-portability requests are handled via the contact e-mail in Section 1 (support@flybi.app), with a response target of within one month as required by Art 12(3). (Current process; to be confirmed in a professional review as the project grows.)


11. Right to complain — GDPR Art 13(2)(d)

If you believe we have processed your data unlawfully, you may lodge a complaint with the Danish supervisory authority. You do not need to raise it with us first, though we would rather you did.

Datatilsynet (Danish Data Protection Agency) — https://www.datatilsynet.dk — supervises our compliance with the GDPR. Its current postal address and complaint channel are published on datatilsynet.dk; refer to the site for the authoritative details.

Digitaliseringsstyrelsen (Danish Agency for Digital Government) — https://digst.dk — supervises the Danish cookiebekendtgørelse (BEK nr 1148 of 9 December 2011), which is the rule that governs access to information on your device: our reading of your location, and the installation identifiers used by crash reporting, performance monitoring and analytics (Section 9). Complaints about those go to Digitaliseringsstyrelsen rather than Datatilsynet. Digitaliseringsstyrelsen is also Denmark's Digital Services Coordinator under the Digital Services Act.

You may also complain to the supervisory authority in your EU/EEA country of residence.


12. Accountability records we maintain (informational)

For transparency, and because the Art 30(5) "<250 employees" exemption does not apply to us (our location processing is not occasional and is likely to result in a risk to data subjects — these are alternative triggers, any one of which removes the exemption), we maintain a Record of Processing Activities (ROPA) under Art 30(1).

A Data Protection Impact Assessment (DPIA) under Art 35 is mandatory for our location processing. The route is not "large scale" — at our current size we do not meet the Art 35(3)(b)/(c) scale triggers — but Datatilsynet's own Art 35(4) list, item 3: processing of location data in combination with at least one further criterion. We process location data and meet at least two further WP248 rev.01 criteria (systematic monitoring, and sensitive or highly personal data). That list item carries no size threshold, so a closed beta of 26 users does not escape it. The DPIA covers the foreground/background split and why background collection is necessary, the Art 9 analysis, the sampling frequency and stored precision, retention, the outing / stalking / physical-safety risk model, processors and transfers, and withdrawal and deletion mechanics. If a high residual risk remains after mitigation we will undertake Art 36 prior consultation with Datatilsynet. The ROPA and DPIA are maintained on file.


13. Security & data breaches

We protect your data with measures including encryption in transit, Firebase Authentication, server-side security rules (firestore.rules) and rate limiting. App Check is integrated but its enforcement is currently off on our server functions (Section 3.10), so it is not adding protection today. No system is perfectly secure, and Sections 3.4, 3.5, 6.1 and 10 name the specific places where our current rules are looser than we intend them to stay.

If a personal data breach occurs, we will notify Datatilsynet without undue delay and, where feasible, within 72 hours of becoming aware of it, unless the breach is unlikely to result in a risk to your rights and freedoms (GDPR Art 33), and we maintain an internal breach register (Art 33(5)). Where a breach is likely to result in a high risk to you, we will inform affected users without undue delay (Art 34). Because a breach affecting precise location, chat and identity could be high-risk (per EDPB Guidelines 01/2021 breach-severity factors: nature/sensitivity/volume of data, ease of identification, and severity of consequences), we treat such incidents accordingly.


14. Future features (not active)

The following are not part of the live service and are listed only so this notice stays accurate as the app evolves:


15. Changes to this policy

We may update this notice. We will post the new version at https://flybi.app/privacy and, for material changes (e.g. a new processing purpose or legal basis), notify you in-app or by e-mail and, where required, seek fresh consent.


*Drafting note for counsel: every legal requirement above is grounded in the research brief and in the external legal research memo of 7 August 2026 (MEMO.md) — GDPR Arts 3, 5, 6, 7, 8, 9, 12, 13, 17, 18, 21, 22, 25, 27, 30, 33, 34, 35; ePrivacy Art 5(3) + EDPB Guidelines 2/2023 v2.0 §44, transposed as BEK nr 1148 § 3; Danish Data Protection Act § 6(2); e-handelsloven § 7. Data-flow descriptions are taken from the live code (firestore_fields.dart, firestore.rules, discovery_repository_impl.dart, chat_room_game_wrapper.dart, the deleteAccount Cloud Function, and the moderation runbook). The first revision of 7 August 2026 brought the notice into line with the memo on: background location and the Art 9 condition (§3.4, §3.5, §9), Crashlytics/Performance/Analytics as consent-gated device access (§3.11), event-anchored retention (§8), the honest account of chat clearing versus deletion (§3.6, §10), and controller contact details (§1).

The second revision of the same day reconciled the notice against a line-by-line source-code audit (code-audit-2026-08-07.md), and the code won every disagreement. Corrected: the reach and the gaps of the deletion cascade (§10, §8); the App Check claim (§3.10, §6.2, §13); world-readable profile e-mail and coordinates (§3.4, §6.1); what an open-room listing actually delivers and how much backlog a new joiner sees (§6.1); telemetry running by default rather than on consent, with the Flybi user ID and, in one path, an e-mail address attached (§3.11, §7, §9, §10); published retention periods that no scheduled job enforces (§8); the live-position record left behind by the Hot/Cold game (§3.5); the "clear chat history" watermark (§3.6, §10); and the client-side-only age gate (§3.8). Passages describing a design that is not yet shipped are marked [planned]; that marker is load-bearing and must not be removed ahead of the code.

The open questions behind those markers — founder decisions, and points the audit listed as not determined — are tracked internally in docs/legal/open-items-2026-08-07.md and in #1167. They are deliberately kept out of this file: tool/build_site.py renders this document to https://flybi.app/privacy, and markdown passes HTML comments through to the published page.*