Version 1.2 · Last updated 11 September 2026

LearnPoems Privacy Policy

1. Controller

  • Kiryl Anokhin, sole proprietorship (JDG), Poland
  • NIP: 8982272619
  • REGON: 521004109
  • Address: ul. Chorwacka 41B-13, Wrocław, Poland
  • Privacy contact: [email protected]

Current version: v1.2, effective 11 September 2026.

"LearnPoems" (Учи стихи) is an app for learning poems by heart. You add a poem from the poets.by catalogue or type in your own text, and the app takes you through reading, gap-filling and recall stages, then reminds you to review. When you have learned a poem, you can record yourself reciting it by heart and, if you choose, share that recording as a link. It has no user accounts — there is no sign-up, sign-in, or user profile, and nothing you learn or record is tied to a person.

2. What data is processed

Local-only (stored on your device)

The following data is stored in the app's local storage (AsyncStorage and the app's documents folder) and never leaves your device:

  • your library: poems added from the catalogue and texts you entered yourself;
  • learning progress for each poem (completed stages, scores, review dates) and per-word statistics that drive the recall exercises;
  • voice recordings of your own readings and of your recitals by heart (see Microphone below);
  • for a recital you have shared: the link address and the management key that lets the app edit or withdraw it (see Sharing a recital below);
  • app settings (interface language, poem language, colour scheme, text size and similar preferences);
  • the review reminders you have scheduled.

Deleting a poem from the app removes its progress, statistics and recordings. When you uninstall the app, all of this data is removed; a recital you had shared stays online until it is withdrawn (see below).

Microphone and voice recordings

The app asks for microphone access only when you tap a record button: while reading a poem in the first stage, or when you record the poem by heart after learning it. Recording never starts on its own. Recordings are saved in the app's documents folder on your device (on iOS they are visible in the Files app under the app's folder). The first-stage reading is played back to you in later stages as an audio cue, next to the narration from the catalogue; the recital is played back to you next to that reading. You can re-record or delete either at any time. Recordings are never uploaded to any server unless you choose to share a recital (see the next section), and they are never included in analytics or crash reports. Declining microphone access does not block learning.

Sharing a recital (optional upload)

Sharing is off by default and happens only when you tap Upload and get a link in the app. When you do, the app sends to poets.by:

  • the audio of that one recital;
  • which poem it is: the catalogue poem's identifier, or, for a text you entered yourself, only its title and author line (the text itself is not sent);
  • the dedication you typed, if any (up to six lines, without links or contact details);
  • the signature you typed, if any: a short "from" line, such as your name or a nickname (one line, without links or contact details). It is never verified and you can leave it empty;
  • your interface language, so the page opens in it;
  • the app's random install identifier. The server stores it only as a salted hash and uses it only to limit how many recitals one installation can upload per day.

The server re-encodes the audio, removes any metadata from the file and stores it with our hosting provider. The recording gets a link on poets.by that is unlisted but public: anyone who has the link can listen, and the page is marked not to be indexed by search engines. The page shows the poem (for catalogue poems), the author, the date, your dedication and your signature. It shows nothing about you beyond what you typed into those two fields and carries no account or device information. The link is not tied to a person on our side either; it is tied only to the management key, which stays on your device.

The server also keeps, for each shared recital, the date it was last played and the number of reports it has received. Reports from listeners are stored as a salted hash of the reporter's IP address, used only to count distinct reporters; a recital reported by three different people is hidden automatically. It also counts how many times the page was opened and playback was started, and how many different listeners did so. For that count a listener is a salted hash of their IP address and browser identifier, which cannot be turned back into either and is kept only while the recital is shared.

A shared recital stays online only while you share it. You withdraw it from the app with Stop sharing or by deleting the recording, and re-recording lets you replace the shared audio in place. If you no longer have the app or the phone, write to [email protected] with the link and we will remove it. The Operator may also hide or remove a recital after reports or at its own discretion.

Network requests

The app talks to the poets.by API to load public poetry content:

  • Search — the words you type, the author and mood filters you pick, and the poem language are sent to /api/search to find matching poems; author and mood suggestions come from /api/suggest/*;
  • Poem text — a poem you add from the catalogue is fetched once from /api/poems/:id and stored locally;
  • Narration audio — audio for catalogue poems is streamed from /api/audio/:id;
  • Short analyses — a brief analysis of a catalogue poem, where one exists, is fetched from /api/analyses/:id;
  • Recital sharing — only when you choose to share a recital, the upload described above goes to /api/recitals, and later edits or withdrawal go to the same address with the management key.

Apart from recital sharing, these requests do not contain any user identifier and are not tied to an account (there are none). Texts you enter yourself and your progress are never sent to the server, and your recordings are sent only when you share a recital; all learning exercises run on the device. Search words are used only to produce results for that request.

IDFA (iOS) and ATT

The Operator does not use the Identifier for Advertisers (IDFA) for its own analytics or cross-app tracking. The ATT prompt shown by the app is requested solely on behalf of Google AdMob: if you accept, AdMob may use IDFA to serve personalised ads; if you decline, AdMob serves non-personalised ads. Either way, app functionality is unchanged.

Analytics (Amplitude)

We use Amplitude for anonymous product analytics: which screens you open and which features you use (for example, starting to learn a poem, completing a stage, finishing a poem, scheduling a reminder, or an ad being shown). Analytics is active in store builds only; it is disabled in development. This version of the app has no in-app switch for analytics.

We do not send IDFA, advertising IDs, your IP address, your email, your name, the text of any poem, your recordings, or the words you search for to Amplitude — search events carry only which filters were used and the poem language, never the query itself. The device identifier is a random UUID generated by the app and stored locally; it is regenerated when you reinstall the app. Along with events we record the interface language, colour scheme and platform. Data is sent to Amplitude's EU servers.

Crash and error reporting (Sentry)

We use Sentry to receive crash reports and technical error diagnostics (stack traces, device model, OS version, app version, and the interface language and colour scheme as tags) so we can fix problems. This is independent of analytics and is intended purely for stability; it does not track your behaviour and is not used for advertising. Sentry is active only in store builds. We do not deliberately send personal data to Sentry: reports never carry poem text, your own texts, or your recordings.

Notifications

Notifications are local only. When you schedule a review reminder for a poem, it is scheduled on your device for the date you chose. No push tokens are created or transmitted, and no notification servers are involved.

3. Advertising

The app displays ads through Google AdMob (banners and interstitials). The app contains no in-app purchases or subscriptions; advertising is the only monetisation.

  • Before serving ads, the app shows a consent request (Google UMP / GDPR) where required by your region. No ad request is made until you have answered it. You can change your choice later in Settings → Ad preferences (the entry appears where the consent request applies).
  • On iOS: if you accept ATT, AdMob may use IDFA for ad personalisation; if you decline, ads will be non-personalised.
  • On Android: AdMob may use the Google Advertising ID (GAID) according to your device settings. You can reset the ID or opt out of personalised ads in Android settings.
  • AdMob may also collect coarse device and ad-interaction data (device model, OS version, IP address, ad clicks/impressions) for ad delivery, frequency capping, and fraud prevention. The Operator does not receive your IDFA, GAID, or IP address.
  • See Google's privacy policy and How Google uses information from sites or apps that use our services for details.

4. Children

The app is made for school pupils and students and is intended for users aged 13 and older. It never asks for a name, age, email address or any other personal detail, has no accounts, and keeps everything a learner does — poems, progress, recordings — on the device. The only thing that can leave the device is a recital the learner deliberately chooses to share; the page it creates shows nothing about the learner beyond the dedication and signature they typed themselves, both of which are optional. We do not knowingly collect personal data from children under 13. If you are a parent or guardian and have a question, or want anything connected with your child's use of the app removed, including a shared recital, write to [email protected] (for a recital, include its link).

5. Your rights and contact

If you have questions about your data, or want to exercise rights of access, erasure, or consent withdrawal, write to [email protected].

EU users: you may lodge a complaint with UODO (Poland), uodo.gov.pl. Russian users: Roskomnadzor. Belarus users: National Personal Data Protection Center.

6. Third parties

  • Apple (App Store) — Apple Privacy
  • Google (Play Store, AdMob) — Google Privacy
  • Amplitude (analytics) — Amplitude Privacy
  • Sentry (crash and error reporting) — Sentry Privacy
  • Cloudflare (storage and delivery of shared recital audio) — Cloudflare Privacy
  • API requests to poets.by may transit network infrastructure such as Cloudflare; apart from recital sharing, no device-level identifier is attached to these requests.

7. Retention

  • Local data — until you delete a poem in the app or uninstall the app entirely.
  • A shared recital — until you stop sharing it, delete the recording, or replace it, or until the Operator removes it after reports, on request, or at its discretion. When sharing stops, the audio and the page data are deleted; the hashed install identifier, the report hashes and the listener hashes are deleted with them.
  • Requests to the content API are processed to return results and are not associated with any account or identity (the app has none). The server may cache search results temporarily to speed up repeated requests; cached entries are not linked to you.
  • Analytics events and crash reports are kept by Amplitude and Sentry for a limited period under their respective policies and are then deleted.

8. Changes

When a new version of this Policy is issued, we will publish it at poets.by/learnpoems/en/privacy and update it inside the app with the next release.

9. Contact

[email protected] — questions and data-subject rights requests. [email protected] — removal of a shared recital (send the link).