Fluency Refrain

Privacy Policy — Fluency Refrain

Operated by Noble Fluency LLC
Effective date: September 21, 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, when you ask for it, to suggest or tidy up phrases (Anthropic’s Claude). Both go through a server we operate; we do not send your phrases anywhere else.
  • We collect a small amount of usage analytics (PostHog) — which features are used, how long sessions last, and which languages, never the phrases themselves.
  • Subscriptions are handled by Apple and RevenueCat. We never see your payment details.
  • Fluency Streak sync is optional and off 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

Every network call the app makes goes to 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. Each request 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. 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 and cleanup (Anthropic’s Claude). These are on-demand features you trigger deliberately. When you use them, the relevant text 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 extracted from the 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.
  • Import from a photo — text recognition runs on your phone (Apple’s on-device Vision framework). Only the recognized lines of text are sent to Claude, after you’ve reviewed them and confirmed the language. The photo itself never leaves your phone.
  • Adding a language — the language name you type is sent so the app can identify the right locale and voice.

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. Your review grades, chorusing history, streaks, and tempo data never leave the device except as the aggregate figures described under Analytics and 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 small, fixed set of named events — for example that a review or chorusing session finished, that a phrase was added and by which method, that the paywall was shown, or that audio failed to play. Events carry things like the display name of the language, counts of repetitions, seconds of engaged time, 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.

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, Apple’s anonymized transaction and receipt data, and the subscription’s status and dates. 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. Until you do, nothing is sent.

Once linked, the app registers your device identifier with the Fluency Streak service and then sends a summary of each practice session: the type of activity (“Audio Flashcards” or “Chorusing”), the language name and code, and the duration. 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; the device identifier and daily request counters (kept for 48 hours); cached audio clips (up to 30 days). Request bodies are not written to logs.
Microsoft AzureText-to-speechPhrase text and the voice selected; returns audio
AnthropicAI phrase features (model claude-sonnet-4-6)The text you submit through Complete, Suggest, Import, and Add-language; returns suggestions
PostHogProduct analytics (US, us.i.posthog.com)Usage events, device information, installation identifier, IP address at delivery
RevenueCatSubscription statusDevice identifier, Apple transaction data, subscription status
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. Fluency Streak sync 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 “Your tester 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.

Privacy · Terms · Support
X ·Instagram ·TikTok ·YouTube ·Threads ·Bluesky

© 2026 Noble Fluency LLC