Gapfyre

Privacy Policy

This policy covers the GapfyreSWE mobile app on the App Store and Google Play.

Effective 7 September 2026. Last updated 23 October 2026.

In short. There are no accounts and no sign-in. Your quiz history, your answers and your settings are stored on your own device and are never sent to us — we operate no server that receives them, and nothing about your studying is ever sent anywhere unless you choose to send it yourself — a link you open to ask an assistant about a question, a drill you share with someone (§7), or a backup file you export (§3). The one request the app makes of its own is an anonymous download of updated questions from this website, which our host, Cloudflare, serves (§4). Two third parties are involved in what you do in the app, and neither is us: RevenueCat, if you buy Pro, and Google AdMob, which serves the single banner advert on the free tier. Those adverts are non-personalised: they are chosen without building a profile of you, the app does not use the advertising identifier, and you will never see an App Tracking Transparency prompt. There is no analytics SDK. Buying Pro removes the advert.

1. Who we are

Gapfyre is made by Sam Munro, an individual developer based in the United Kingdom. For the purposes of the UK GDPR and the Data Protection Act 2018, Sam Munro is the data controller for the limited personal data described in this policy.

You can reach us at support@gapfyre.com about anything in this document.

2. What this policy covers

It covers one app:

This site publishes the app's policy, terms and support pages, a page that opens a drill someone has shared with you, and a guide for AI assistants that build drills; the app itself is not distributed here. Where something is true of only one platform, this policy says so.

3. What stays on your device

The app keeps a record of how you are getting on so it can show your progress and your statistics. That record includes:

All of this is written to your device's own storage and stays there. On iOS it is held in the app's UserDefaults, and on Android in SharedPreferences. It is not synchronised, not uploaded, not backed up to any service of ours, and not readable by us. We operate no server that receives it and no account it could be attached to.

Backups. Settings → Export backup writes all of this except the Pro flag into one file and hands it to your device's share sheet (on the web, it downloads), so you can keep a copy or move your record to another phone. The file goes wherever you send it — your Files app, a cloud drive, an email to yourself — and is then held by that service under its own policy, not ours; it never passes through a server of ours. Restore backup reads a file you choose or paste, on your device, and shows you what it holds before replacing anything.

Deleting the app removes this data from your device. That does not need to involve us, because there is nothing on our side to delete. It does not delete a backup file you have exported; delete that where you saved it.

4. What is collected, and by whom

Three parts of the app are not self-contained. Buying and restoring the Pro subscription is one, and is covered first; the download of updated questions is another, and follows it (below); the banner advert on the free tier is the third, and has a section to itself (§5).

The subscription runs through RevenueCat. RevenueCat is a subscription infrastructure provider that sits in front of Apple's and Google's billing systems so that the app does not need a server of its own to verify a purchase.

If — and only if — you purchase Pro, start a free trial, or tap Restore purchases, RevenueCat processes the following on our behalf:

DataWhyLinked to you?
Purchase history — your subscription status, renewal and expiry dates, and the store's receipt or purchase token To determine whether your device currently holds the Pro entitlement, and to restore it on a new device Not linked to a name, email or account, because there is no account. See below.
A pseudonymous app user ID generated by RevenueCat To tie a purchase to the installation that made it, so it can be restored Randomly generated by RevenueCat. We never set it to anything that identifies you.
Basic device and technical information — device type, operating system version, app version, country and currency, and the IP address inherent in making a network request To deliver the correct store products and prices, and to operate the service securely Associated with the pseudonymous ID above, not with your identity

We do not pass RevenueCat your name, your email address, or any identifier of our own — the app calls RevenueCat without supplying a user ID, so RevenueCat generates an anonymous one. We never see your payment card, bank details or billing address: those go to Apple or Google, who process the payment. We receive only an answer to the question "does this device have an active Pro subscription?"

RevenueCat acts as our data processor. Its own privacy policy is at revenuecat.com/privacy.

How this appears in the app stores

For transparency, this is what the two stores are told, and it matches the tables in this section and the next:

The download of updated questions, described next, is not listed in either form. Apple counts data as collected only if it is kept for longer than it takes to answer the request, and Google excludes data processed only in real time to answer a request; we keep nothing from these requests. If that ever changed — if we added logging or analytics to this website — this policy and both forms would change first.

"Not used for tracking" is a specific claim under Apple's definition, and it is why the app shows no App Tracking Transparency prompt: nothing collected here is joined to data from other companies' apps or websites to target advertising or measure it, and the app never reads the advertising identifier (IDFA). See §5.

"Analytics" appears against purchases because RevenueCat aggregates subscription figures — how many subscriptions are active, how many renewed — into a dashboard we can see. Those are counts, not a profile of you, and they are the only numbers we ever receive about anyone's use of the app. We receive nothing at all about which questions you answer, on either tier.

Updated questions

The questions ship inside the app, so it works fully offline. So that a correction or a new set of questions can reach you without waiting for an app update, the app also checks our website, gapfyre.com, for newer ones. It does this when it starts and when you come back to it, and no more than once every 6 hours. You can also ask it to check straight away with Check now in Settings → Question updates. A newer set is downloaded only if there is one, and only the parts that have changed, which is usually a few tens of kilobytes. Once downloaded it is used the next time the app loads; sometimes the app reloads itself when you return to the home screen to do that, never during a quiz, and the home screen then says "Questions updated."

The app sends nothing of yours in this request. It is an anonymous download of public files: no account, no identifier of ours, no cookies, and nothing about your quiz history, your answers or your settings. As with any request to any website, the server that answers it sees your IP address, the files asked for, the time, and the basic technical details your device's web view sends. That is enough to tell that a device running the app asked for updates, and when, and no more.

gapfyre.com is hosted by Cloudflare, which handles these requests on our behalf and keeps its own operational logs for a short time under its privacy policy. We run no analytics on the site and keep no request logs of our own. The only view we have is the aggregate request counts that Cloudflare's dashboard shows for any website: totals, not a record of any device.

The app works the same without this. With no connection, or if a download fails, you keep the questions you have. You can turn the check off at any time in Settings → Question updates; while it is off the app makes no request at all, and keeps the questions it has.

5. Advertising on the free tier

The free tier of the app shows one banner advert, at the bottom of the screen. It is served by Google AdMob. Three things about it are worth stating precisely, because each is a decision rather than a default:

Serving an advert at all involves Google receiving some data, and it would be dishonest to list a banner without saying what:

DataWhyLinked to you?
A resettable device identifier and general device information — device type, operating system version, screen size, language To return an advert that fits the screen, to limit how often the same advert is repeated, and to detect fraudulent clicks Not linked to a name, email or account, because there is none. You can reset the identifier in your device settings.
Coarse location, inferred from the IP address inherent in making a request To serve an advert that is legal and sensible in your country, and in the correct language Country-level. The app requests no location permission and has no access to your precise location.
Ad interactions — that an advert was shown, and whether it was tapped To count what we are owed and to bill the advertiser Reported to us only as totals: impressions, taps and earnings. We never see who did either.

For this processing Google acts as an independent controller rather than as our processor, so its own terms govern what it does with the data. Google's privacy policy is at policies.google.com/privacy, and how Google uses data from apps that use its services is described at policies.google.com/technologies/partner-sites.

How to turn adverts off: buy Pro. The banner disappears as soon as the purchase is confirmed, on that device and on any other device where you restore the purchase, and no further ad requests are made. That is the only relationship between the two — nothing about your subscription is sent to Google, and nothing about the adverts is sent to RevenueCat.

6. What we do not do

These are worth stating plainly, because they are all things a quiz app could easily do and this one does not:

The app has three things that can take you, or something you chose, outside it: two links that open in your device's browser while you review your answers, and sharing a drill. Each is something you choose to tap; none happens on its own, and nothing is sent anywhere unless you tap.

Find videos on YouTube

This opens a YouTube search built from the keywords of the question you were reviewing, plus any search keyword you have set in Settings. YouTube receives that search term and, as with any website you visit, your IP address and whatever your browser and your own YouTube account send it. Your quiz history is not included.

Dig deeper

This opens a new conversation at the AI assistant you chose, pre-filled with the context of the question you were looking at, so you can ask about it properly. The text sent contains up to 6,000 characters and includes: the question, any code shown with it, every answer option, which option you selected, whether you got it right, and the explanation the app gave.

It goes to whichever assistant you picked — Claude (claude.ai), ChatGPT (chatgpt.com), Copilot (copilot.microsoft.com), Grok (grok.com) or Gemini (gemini.google.com). It is carried in the URL that opens in your browser — except for Gemini and Copilot, which cannot read it from a link, so for those two the app copies it to your clipboard when you tap and you paste it in yourself. Either way it is subject to that provider's own privacy policy and terms, not ours, from the moment the link opens. If you are signed in to that provider, the conversation will appear in your account there. We have no involvement in and no visibility of what happens next.

Turning this off. You are asked to choose an assistant when you first open the app, and you can change or remove that choice at any time in Settings. Choosing None removes the "Dig deeper" links, and the button that opens an assistant to build a drill, from the app entirely. This is the one control that matters most for your privacy, because this link is the only feature that sends anything about your answers anywhere. Sharing a drill sends only the drill itself, and only when you tap Share.

Sharing and importing drills

A drill is a named list of questions, or a selection of topics, that you have saved to practise from. It lives on your device like the rest of your record (§3).

Sharing. Share on a hand-picked drill's page opens your device's own share sheet — the iOS or Android one, not ours — with a short message and a link to gapfyre.com/d. The link carries the drill: its name, which questions or topics it covers, and how many are asked per round. It carries nothing about your answers, your scores, your history or your settings. It goes to whichever app and person you choose; we do not receive it and cannot see it. Where a device has no share sheet, the same text is copied to your clipboard instead. Copy drill file copies the drill as text, and nothing else.

Opening a shared link. The drill is written into the part of the link after the #, and a browser does not send that part to the website, so gapfyre.com never sees it. What loads is a small page, which Cloudflare serves and logs like any page (§4, Updated questions). The page's script runs in your browser, loads nothing from anyone else, makes no further requests and reads the drill only to show you its name and size and to offer to open the app. A link an AI assistant writes for you carries the drill the same way, after the # and in plain text, and is read the same way. So that a link opened on a computer can reach your phone, the page also shows it as a QR code to scan with the phone's camera. The code is drawn in your browser by the page's own script, a copy of Project Nayuki's MIT-licensed QR Code generator served by gapfyre.com with the page; making it sends the link nowhere. Where your browser has a share sheet (on a Mac, the one with AirDrop and Messages), a Share button opens it with the same link, which goes only to the app and person you choose. If the app is installed, the link can open it directly; the app then reads the drill on your device and shows it to you before anything is saved, and makes no network request to do so.

Importing. The Import drill screen takes text you paste, or a drill from a shared link. It reads the clipboard only when you tap Paste from clipboard, checks the text on your device, and saves nothing until you tap Save. It also links to a plain-text guide for AI assistants at gapfyre.com/drill/spec.txt, which opens in your browser if you tap it. The screen has a short form: what you are practising for, an optional web address for a job spec or tech-stack page, the text of a spec for a page that needs a login, and a language and a level. You can also use your device's Share button in a browser or another app and choose this app: the page address or text is placed in that form on your device, and goes nowhere until you tap the button below. If you have chosen an assistant in Settings, a button opens it in your browser with a message made of the guide's address and rules plus exactly what you typed or chose in that form, and nothing else: no answers, no history, no settings. (Gemini and Copilot do not read a message from a link, and a message with a long pasted spec is too long for one, so in those cases the assistant opens without it and the same text is copied to your clipboard for you to paste.) With no assistant chosen, Copy the request copies the same text. We do not receive it. The assistant, not us, may open the web address you gave it, and what you tell it is between you and that assistant under its own privacy policy. What you typed is kept on your device while you are away at the assistant, so the form is as you left it, and is saved with the drill so you can rebuild it; it is not part of a drill you share, and is deleted with the drill or with the app. The assistant may read our guide and search the public index of questions at gapfyre.com/drill/search; those requests come from the assistant, not from the app or from you, and they ask only for public question text. We keep no logs of them and do not connect them to anyone; Cloudflare handles them as it does every request to the site.

We collect nothing through any of this, which is why neither store privacy form changes.

8. Android backup

On Android, the app allows Android's own backup system (android:allowBackup="true"). If you have device backup enabled in your Google account settings, Android may include the app's stored settings and quiz history in your device backup and restore them when you set up a new device. That backup is between you, your device and Google under Google's privacy policy — we do not operate it, cannot access it and are not sent a copy. You can turn device backup off in your Android settings.

iOS behaves comparably: app data may be included in your iCloud or encrypted local backup according to your own iOS backup settings.

9. Legal bases for processing

Where the UK GDPR or EU GDPR applies to you, our legal bases are:

Data that never leaves your device is not processed by us at all, so no legal basis is required for it.

10. How long data is kept

11. Your rights, and how to use them

Depending on where you live, you may have rights to access, correct, delete, restrict or object to the processing of your personal data, to data portability, and to complain to a regulator. Because we hold almost nothing about you, most of these resolve quickly:

We will respond within one month. There is no charge. If you are in the UK you may complain to the Information Commissioner's Office; if you are in the EEA, to your national supervisory authority.

If you are a California resident: we do not sell or share personal information as those terms are defined by the CCPA/CPRA, and we do not use personal information for cross-context behavioural advertising. We will not discriminate against you for exercising any privacy right.

12. Children's privacy

The app is educational and general-audience, but it is not directed at children under 13, and we do not knowingly collect personal data from children. There are no accounts, no profiles and no way for a user to contact another user, so there is little for a child to disclose. If you believe a child has provided personal data through a purchase made on your device, contact support@gapfyre.com and we will delete the associated record.

The app is not directed at children, so it is not declared as a child-directed app to Google's ad services and adverts are not tagged for users under the age of consent. Ad content is restricted to Google's General audience rating, the most restrictive of the four, so what appears in the banner is material suitable for a general audience. If you are setting the app up for a child, buying Pro removes advertising entirely.

Note that the "Dig deeper" links open third-party AI assistants, most of which set their own minimum age. If you are setting the app up for a child, choosing None as the AI assistant in Settings removes those links.

13. Changes to this policy

If this policy changes we will update the date at the top of this page. If a change is significant — if the app begins collecting something it does not collect today — we will say so clearly here and, where the change requires it, in the app before it takes effect. Previous versions are available on request.

What changed on 7 October 2026

The import screen gained a form (what you are practising for, an optional web address, the text of a job spec, a language and a level), and the message to your assistant now contains what you typed there, where before it was the same for everyone. It is described in §7. It is sent only when you tap the button, to the assistant you chose, and is not sent to us. The app can now also receive a page address or text shared to it from another app; that fills the form and sends nothing. It is kept on your device and is not part of a shared drill.

What changed on 6 October 2026

The app gained a way to import a drill an AI assistant has built, to share a drill with someone, and to open one from a link, described in §7. Three statements were reworded to stay true: that nothing about your studying is ever sent anywhere, that Dig deeper is the only feature that transmits anything about your quiz activity, and that there is no user-generated content. The first two now say that what you choose to send is the exception, and the third that nothing reaches us. The site also gained a page that opens a shared drill and a guide and search for AI assistants; both are static or read-only and keep no logs of ours. The Import screen also gained a button that opens your chosen assistant with a fixed message about building a drill. What has not changed is everything about your studying: your quiz history, your answers and your settings still never leave your device, the app still makes no network request of its own for any of this, and there is still no analytics of any kind.

What changed on 30 September 2026

The app began checking gapfyre.com for updated questions, described in §4. It is the first time the app has made a request to anything of ours, so the statement that the app makes no network requests of its own stopped being true and has been rewritten. What has not changed is everything about your studying: your quiz history, your answers and your settings still never leave your device, the request carries none of them, and there is still no analytics of any kind.

What changed on 9 September 2026

The free tier began showing a banner advert, and this is the change that section promises to state plainly rather than leave to a moved date. Before this, nothing about your device reached anyone except when you bought a subscription. Now, on the free tier, Google AdMob receives what §5 sets out in full — a resettable device identifier, general device information, coarse location from your IP address, and whether an advert was shown or tapped — for as long as the app is showing you adverts.

Three earlier statements in this policy stopped being true and have been rewritten rather than quietly dropped: that there was no advertising and no advertising SDK, and that RevenueCat was the only thing the app talked to over a network. What has not changed is everything about your studying: your quiz history, your answers and your settings still never leave your device, no advert is chosen from anything you have answered, and there is still no analytics of any kind. The adverts are non-personalised, the app still reads no advertising identifier and still shows no App Tracking Transparency prompt, and buying Pro removes advertising entirely.

14. Contact

Questions, requests or complaints about privacy: support@gapfyre.com.