Skip to content
Fluency Refrain
How it works Free & Pro Guides Support Get the app

Privacy Policy — Fluency Refrain

Operated by Noble Fluency LLC
Effective date: October 13, 2026

Who we are

Fluency Refrain is an iPhone app for collecting spoken phrases in the languages you’re learning and drilling them until you can say them at full speed. It is operated by Noble Fluency LLC (“we,” “us”), a Washington State limited liability company. You can reach us at support@fluencyrefrain.com.

This policy explains what data the app handles, why, who processes it on our behalf, and your rights over it.

The short version

  • There are no accounts. You never give us your name, email address, or a password. Everything you build in the app — languages, phrases, review history — lives in a single file on your phone, and you can export it at any time.
  • Phrase text leaves your phone for two reasons: to generate spoken audio (Microsoft Azure) and to suggest, read, or tidy up phrases (Anthropic’s Claude). For some languages, a photo or scanned page you import is also sent to Claude to be read. Both go through a server we operate; we do not send your phrases anywhere else.
  • We collect usage analytics (PostHog) — events such as which features are used, how long sessions last, which languages, and the grades you give review cards, never the phrases themselves. Analytics are not used to track you.
  • Subscriptions are handled by Apple and RevenueCat. We never see your payment details.
  • Fluency Streak sync is optional. On first run the app registers its device identifier with the Fluency Streak service so linking is possible, but no practice data is sent until you link the two apps yourself.
  • We do not sell your data.

What lives on your phone

The app stores all of your content in one file on your device: the languages you’ve added, every phrase (the English meaning, the target-language text, and any transliteration), the category you filed it under, and the practice state for each phrase — spaced-repetition scheduling, how many times you’ve chorused it, and the tempo you’ve reached. A small amount of preference data (which languages you’ve pinned, onboarding progress, chorusing settings) is stored alongside it.

Synthesized audio clips are cached on your device so each phrase is only synthesized once.

You can export the whole file from Settings, and deleting the app deletes all of it. We have no copy.

What leaves your phone, and where it goes

Requests to Microsoft Azure and Anthropic go through a server we operate (a Cloudflare Worker), which forwards the request to the provider and returns the result. Provider API keys never ship inside the app. Analytics (PostHog), subscription checks (RevenueCat), and Fluency Streak sync go directly from the app to those services, as described in their sections below.

Each request to our server carries a device identifier — a random ID generated on your phone the first time the app runs — which we use to enforce per-device daily limits and to block abusive devices. The identifier is stored in your device’s keychain, so it can persist if you delete and reinstall the app. It is not linked to your name, email, or Apple ID.

Spoken audio (Microsoft Azure Text-to-Speech). To play a phrase with a native-speaker voice, the phrase text and the voice to use are sent to Azure, which returns audio. Our server caches synthesized clips for up to 30 days so repeated requests for the same phrase don’t hit Azure again. Azure processes the text to produce the audio and does not receive your device identifier.

Phrase suggestions, import, and cleanup (Anthropic’s Claude). Most of these are features you trigger deliberately; the one request the app makes on its own is for starter phrases during setup. In each case the relevant text (or, for some imports, an image) is sent to Anthropic and a response comes back:

  • Complete — you type one line (in English or the target language) and the app fills in the meaning, phrase, and transliteration.
  • Suggest — you pick a category and level and the app proposes phrases. The category name and level are sent, along with the phrases you already have in that language so the suggestions don’t repeat them.
  • Import from text or PDF — the text you paste, or the text your phone extracts from a PDF you pick, is sent so the app can pull out learnable phrases, along with the phrases you already have in that language so duplicates are skipped. A text PDF sends text only. A scanned PDF with no text in it is handled like a photo, page by page (below).
  • Import from a photo — when your phone can read the language’s script, text recognition runs on your phone (Apple’s on-device Vision framework) and only the recognized text is sent to Claude. When your phone can’t read that script, the photo itself — resized to at most 1568 pixels on its longest side — is sent to Claude to be read.
  • Adding a language — the language name you type is sent so the app can identify the right locale and voice.
  • Starter phrases during setup — when you choose your first language, the app automatically asks Claude for a few starter phrases. Only the language and a category are sent.

Anthropic processes these requests to generate the response. Under Anthropic’s commercial API terms, inputs and outputs are not used to train Anthropic’s models.

Nothing else is sent to Azure or Anthropic. Your phrases and full practice history stay on your phone. The practice details that do leave it are the usage events described under Analytics and, once you link, the session summaries described under Fluency Streak sync below.

Analytics (PostHog)

We use PostHog to understand how the app is used so we can improve it. The app sends a fixed set of named usage events — for example that a review or chorusing session finished, that a review card was graded, that a phrase was added and by which method, that the paywall was shown, or that audio failed to play. Events can include the display name and regional variety of the language, the grade you gave each review card, counts of repetitions, seconds of engaged time and when a session started, your streak length, the tempo you chorus at, the reminder time you choose, the choices you make during setup, which subscription option you picked, and error codes.

Events never contain phrase text. Automatic click tracking, screen recording, and session replay are turned off in the app’s PostHog configuration.

There is no account behind these events: PostHog never receives the device identifier described above. The app does not use Apple’s advertising identifier, and analytics are not used to track you across other companies’ apps or websites.

PostHog’s SDK also collects standard device information (device model, OS version, app version, locale) and a random installation identifier, and PostHog receives your IP address when events are delivered. PostHog processes this data in the United States.

Subscriptions (Apple and RevenueCat)

Fluency Refrain is free to use with up to 20 phrases. Refrain Pro removes that limit and is sold as an in-app subscription through Apple’s App Store. Apple processes the payment; we never receive your card number or billing address. We use RevenueCat to check whether a subscription is active. RevenueCat receives the app’s device identifier, your device’s vendor identifier (IDFV), Apple’s transaction and receipt data, the subscription’s status and dates, your App Store country, and your IP address. It does not receive your phrases.

Fluency Streak sync (optional)

Fluency Refrain can log your practice to our sister app, Fluency Streak, but only after you link the two by entering a pairing code that Fluency Streak issues.

So that linking is possible, the first time the app runs it registers its device identifier with the Fluency Streak service (through our server). That registration carries no practice data. No practice data is sent until you link; sessions you practice before linking are kept on your phone and sent once you do.

Once linked, the app sends a summary of each practice session directly to the Fluency Streak service: the type of activity (“Fluency Refrain Flashcards” or “Fluency Refrain Chorusing”), the language name and code, the duration, and when it was recorded. No phrase text is included. Data received by Fluency Streak is governed by the Fluency Streak privacy policy. You can unlink at any time in Settings.

Who processes your data (subprocessors)

ProviderRoleData it handles
CloudflareOur API server (Workers) and its storageEvery request the app makes to Azure and Anthropic, and the Fluency Streak registration; the device identifier and daily request counters (kept for 48 hours); cached audio clips (up to 30 days); request logs with the device identifier, route, and status. Request bodies are not written to logs.
Microsoft AzureText-to-speechPhrase text and the voice selected; returns audio
AnthropicClaude phrase features (model claude-sonnet-4-6)The text you submit through Complete, Suggest, Import, and Add-language; page images (photo and scanned-PDF import, some languages); the language and category for setup’s starter phrases; returns suggestions
PostHogProduct analytics (US, us.i.posthog.com)Usage events, device information, installation identifier, IP address at delivery
RevenueCatSubscription statusDevice identifier, vendor identifier (IDFV), Apple transaction data, subscription status, App Store country, IP address
Fluency Streak service (our sister app’s service, hosted on Vercel)Fluency Streak registration and syncDevice identifier; session summaries once you link
AppleApp distribution and paymentsApp Store purchases under Apple’s own terms and privacy policy
VercelHosting for this websiteWeb traffic to fluencyrefrain.com, including IP addresses and server logs; page-view analytics

This website

fluencyrefrain.com is a static site hosted by Vercel. Vercel receives standard web-server data (IP address, browser, pages requested) and we use Vercel’s privacy-friendly page analytics. We also record a page-view event to PostHog with the page path, referrer, and any campaign parameters in the URL. The site has no accounts, forms, or comments.

Where your data is processed

Our providers process data in the United States (Anthropic, PostHog, RevenueCat, Vercel), in Europe (Microsoft Azure’s speech service), and on Cloudflare’s global network, which serves requests from locations near you. If you are outside those regions, the data described above will be transferred to and processed there.

Why we process your data and our lawful bases

We process phrase text and the device identifier to provide the service you asked for (performance of our contract with you): producing audio, generating suggestions, and enforcing fair-use limits. We process analytics and subscription data on the basis of our legitimate interests in operating, securing, and improving Fluency Refrain. Registering the device identifier with Fluency Streak at first run is part of providing the service, since it makes linking possible; syncing your practice sessions runs only with your consent, which you can withdraw by unlinking.

Your rights

Depending on where you live, you may have the right to access, correct, export, or delete your personal data, to object to or restrict certain processing, and to withdraw consent. Most of these you can exercise directly: your content is on your phone, you can export it from Settings, and deleting the app deletes it. For anything held by our providers — analytics events, subscription records, Fluency Streak sessions — email support@fluencyrefrain.com with your device identifier (shown in Settings as “Support ID”) and we will act on it.

Data retention

  • Your phrases and practice history: on your phone until you delete them or the app. We hold no copy.
  • Request counters on our server: 48 hours.
  • Cached audio on our server: up to 30 days.
  • Analytics events: retained by PostHog under our account until we delete them.
  • Subscription records: retained by RevenueCat and Apple for as long as needed to manage the subscription and meet accounting obligations.
  • Fluency Streak sessions: per the Fluency Streak privacy policy.

Children

Fluency Refrain is not directed to children under 16, and we do not knowingly collect their data. If you believe a child has provided us personal data, contact support@fluencyrefrain.com.

Changes to this policy

We may update this policy. Material changes will be reflected in the effective date above and, where appropriate, communicated in the app.

Contact

Questions or requests: support@fluencyrefrain.com, Noble Fluency LLC.

Fluency Refrain

A Noble Fluency product, made in Seattle. Noble Fluency also makes Fluency Streak and Fluency Write.

Guides Support Privacy Terms support@fluencyrefrain.com
Instagram

© 2026 Noble Fluency LLC