The fine print
Privacy Policy
Effective September 22, 2026
At a glance
- No accounts, no logins. You use LineRunner without creating an account or giving us an email address (except the optional mailing-list form on this website).
- Scripts are processed, not retained. Your PDF is sent to our servers and to a third-party AI provider only long enough to extract the dialogue, and is not kept after parsing completes. Parsed scripts live on your device. A copy of the parsed result, keyed by a hash of the file and not by you, also sits in a cache on our servers for up to 365 days so the same file never has to be parsed twice (see Sections 5.2 and 7).
- We do not sell or share your personal information for advertising, and we do not use your scripts to train AI models.
- We collect a device identifier (Android ID on Android, an Apple
identifierForVendoron iOS) to prevent abuse and count usage - not to identify you personally or to show you ads. - LineRunner is not intended for children under 13.
1. Who we are
This policy is provided by Optimize Overseas LLC, a Texas limited liability company doing business as Optimized Software Solutions ("LineRunner", "we", "our", or "us"), the developer and controller of the LineRunner mobile application and the website at linerunner.app.
For privacy questions, requests, or complaints, contact us at support@linerunner.app. Postal mail may be sent to the address below; please include "Privacy" in the subject line so we can route your request.
Optimize Overseas LLC
2303 Ranch Rd 620 S, Ste 160-309
Lakeway, TX 78734
United States
2. Information we collect
2.1 Information you provide to us
- PDF scripts you upload. When you upload a PDF, we receive the file's contents so we can extract its dialogue structure.
- Excerpt from a declined upload. If we decline to process an upload because it does not appear to be a script or its text cannot be read, we keep a short excerpt of the text we extracted (up to 500 characters), together with the reason it was declined and your device identifier, so we can audit and correct wrongly declined uploads. Uploads we do process are not excerpted.
- Mailing-list submissions. On this website, you can optionally submit your email address (and name, if you choose) to receive occasional product updates, such as new voices, features, or other significant news.
- Correspondence. If you email us, we keep the message, your address, and our reply.
2.2 Information collected automatically
- Device identifier. The app reads a per-device identifier and sends it with each request to our backend in an
X-Device-Idheader. On Android this is the built-inSettings.Secure.ANDROID_ID; on iOS it is Apple'sidentifierForVendor(IDFV), which we store in the device Keychain so it stays stable across reinstalls. This identifier is specific to your device and our app; it survives reinstalls but is reset on factory reset (or, on iOS, when you remove all of our apps and reinstall). We use it solely to enforce rate limits, detect abuse, and check your purchase entitlement - never to associate your activity with your real identity or to show you advertising. - Usage and cost telemetry. Each time the app parses a script or synthesizes audio, we log an event to our internal analytics with the device identifier, a timestamp, the number of tokens processed, and the estimated processing cost. This is how we monitor service health and capacity.
- Rehearsal telemetry. When you start a rehearsal, and again when it ends, the app sends a small event with your device identifier, a timestamp, whether the script came from the Library or from an upload, how many lines you advanced through, whether you reached the end, and how the session ended (for example, you left partway or restarted). It never includes the script text, the character you chose, or any audio.
- In-app interaction analytics. The app may record which screens you visit, which primary buttons you tap, how long a session lasts, and similar interaction events, keyed to your device identifier and a per-session identifier. Every value is either a timestamp, an entry from a fixed list of screen and button names, or a small count. It never includes free text, script content, or what you typed into Library search (only the number of results). See Section 17 for the details and for how this collection is switched on.
- Website analytics (linerunner.app only). This website, not the app, runs a privacy-focused analytics tool called Plausible Community Edition. We host it ourselves on our own server, so the measurements are never sent to an analytics company: the script and the event endpoint are served from linerunner.app itself. For each page you view it records the page, the referring link or search engine that sent you, your browser and operating system, whether you are on a phone, tablet, or desktop, and the country you are in. It sets no cookies and does not track you across other websites. Your IP address is used only in the moment the page view arrives, to derive a one-way anonymous visitor identifier from a secret that is rotated every day; the IP address itself is not stored, and the daily rotation means the identifier cannot be linked from one day to the next.
- Request logs. Our backend logs standard information about incoming HTTP requests (IP address, timestamps, user-agent, response codes) for security and debugging. These logs are rotated on a short cycle.
- IP address in analytics records. In addition to the short-cycle request logs above, the IP address a request came from is stored alongside the usage, rehearsal, purchase-validation, declined-upload, and interaction-analytics records described on this page, and is kept for as long as the record it sits in (see Section 7). We use it to detect abuse and to investigate service problems, never to identify you personally.
- Crash diagnostics. If the app crashes or throws an unhandled error, we send a stack trace plus standard device information (OS version, device model, app version, locale, available memory) to Google's Firebase Crashlytics service so we can diagnose and fix the bug. Crashlytics generates its own per-install identifier, separate from the device identifier described above, which resets when the app is uninstalled. Crash reports do not include the contents of your scripts.
- Android Auto Backup. If you have Android Auto Backup enabled on your device (the default for most Android phones), your phone uploads an encrypted copy of the app's parsed-script database and your in-app preferences to your own Google Drive backup, up to Android's 25 MB Auto Backup quota. We do not have access to this backup; only Google and you do. Synthesized audio (TTS cache), crash diagnostics queues, and other on-device caches are excluded from this backup. You can disable Android Auto Backup for LineRunner under Settings → Google → Backup → App data on your device, or delete an existing backup at drive.google.com under Backups.
- iOS device backups. The iOS version of LineRunner does not use Android Auto Backup. Instead, the app's local data follows Apple's standard device-backup behavior: if you have iCloud Backup or an encrypted local backup enabled, your device may include the app's data in that backup, which is managed entirely by Apple and your device settings. As on Android, the synthesized audio (TTS cache) is excluded from backup, and we do not have access to any device backup; only Apple and you do. You can control what is backed up under Settings → [your name] → iCloud → Manage Account Storage → Backups on your device.
2.3 Information we do not collect
- We do not ask for your name, phone number, or address.
- We do not access your contacts, location, microphone, or camera.
- We do not track you across other apps or websites.
- We do not use cookies. The app sets none, and neither does this website: the analytics described in Section 2.2 are cookieless, which is why you are not asked to dismiss a cookie banner here.
3. How we use your information
We use the information described above to:
- Provide the core features of the app (parsing, voice playback, progress tracking).
- Prevent abuse of our AI processing infrastructure, including enforcing a rolling per-device rate limit.
- Send administrative alerts to our operations team when a device exceeds unusual usage thresholds.
- Understand aggregate usage patterns and costs, so we can improve the product and keep it affordable.
- Communicate with you if you've joined our mailing list or contacted us directly.
- Comply with applicable law.
4. Legal bases for processing (for users in the EU, UK, or Switzerland)
Where the General Data Protection Regulation or UK GDPR applies, we rely on the following legal bases:
- Performance of a contract - to provide the app's core features when you use them.
- Legitimate interests - to prevent abuse, monitor service health, keep the product running, and communicate about material changes to the service. Our legitimate interests are narrowly tailored and do not override your fundamental rights.
- Consent - for the optional mailing-list signup on this website. You can withdraw consent by unsubscribing or emailing us.
- Compliance with law - where we are required to retain data to meet a legal obligation.
5. Who we share information with
We do not sell personal information. We do not share your information for cross-context behavioral advertising. We do share limited data with the following categories of service providers, each of which is contractually bound to use the data only to provide services to us:
5.1 AI processing providers
To parse your PDF scripts into structured dialogue, we transmit the PDF's content to Anthropic, PBC via the Anthropic API. To produce spoken audio for dialogue lines, we transmit the corresponding text to OpenAI, Inc. via the OpenAI API. Both companies are commercial AI providers operating under written agreements that:
- Prohibit use of our API content to train their models.
- Limit retention of submitted content to a short abuse-monitoring window (generally up to 30 days).
- Provide the contractual commitments required for international data transfers under GDPR.
Their privacy practices are described in their own policies, at anthropic.com/legal/privacy and openai.com/policies/privacy-policy. In very limited circumstances (for example, if content is flagged for a serious violation of their usage policies), these providers may retain content longer than 30 days for investigation.
5.2 Cloud infrastructure
Our backend runs on Google Cloud Platform (Cloud Run, Cloud Storage, and BigQuery). Google processes your data on our behalf as a sub-processor under the Google Cloud Data Processing Addendum.
To avoid reparsing duplicate uploads, we store parsed results in a content-addressed cache in Cloud Storage, keyed by a one-way cryptographic hash (SHA-256) of the PDF content plus a prompt version. The raw PDF is not retained once parsing completes; only the parsed structured output is cached, and only structured output derived from an identical future upload could retrieve it.
5.3 App distribution
The app is distributed through both the Apple App Store (iOS) and the Google Play Store (Android). Each store receives standard distribution metrics (downloads, crashes) independent of what the app itself collects. See Apple's and Google Play's own privacy disclosures for details.
5.4 Crash diagnostics
To detect and fix bugs after release, the app integrates Firebase Crashlytics, a crash-reporting SDK provided by Google LLC. When the app crashes or throws an unhandled error, Crashlytics transmits a stack trace, the app version, device model, OS version, locale, available memory, and a Crashlytics-generated per-install identifier to Google. Crash reports do not include the contents of your scripts, your device identifier, or any text you have typed into the app. Google processes this data on our behalf as a sub-processor under the Firebase Data Processing and Security Terms. See firebase.google.com/support/privacy for Google's Firebase privacy documentation.
5.5 Email, mailing list, and operational tools
Rate-limit and capacity alerts are delivered to our operations email address via standard SMTP using a Google Workspace mailbox.
If you submit your email address to our mailing list on this website, that address (and the name you entered, if you entered one) is stored by Resend, Inc., an email delivery provider that holds the list and sends our product-update emails. Resend processes it on our behalf as a sub-processor under its data processing terms. Your contact record is tagged so we can tell the LineRunner list apart from other lists in the same Resend account. Our own server logs record only a one-way hash of your address, the domain part of it, and the first letter of your name, never the address itself. Resend's privacy practices are described at resend.com/legal/privacy-policy. If we add or change an email or mailing-list provider, we will update this policy before switching.
The website analytics described in Section 2.2 run on software we host ourselves, on our own server. No analytics company, advertising network, or other third party receives that data.
5.6 Legal and safety
We may disclose information if required to do so by law, valid legal process, or in response to a good-faith belief that disclosure is necessary to protect our rights, the safety of users, or the security of our services.
5.7 Business transfers
If Optimize Overseas LLC is involved in a merger, acquisition, or sale of all or part of its assets, information held by LineRunner may be transferred to the successor. We will notify users of any such transfer that would materially change how their data is handled.
6. International transfers
LineRunner's backend is hosted in the United States (Google Cloud, region us-central1). Anthropic and OpenAI are US companies. Accordingly, if you use LineRunner from outside the United States - including from the European Economic Area, the United Kingdom, Switzerland, Canada, or elsewhere - your data will be transferred to and processed in the United States.
For EEA/UK/Swiss users, these transfers rely on Standard Contractual Clauses (SCCs) executed with our sub-processors, together with any supplementary measures required by the laws of your country.
7. How long we keep information
We keep information only as long as we need it for the purposes listed above. Specific retention periods:
| Category | Where | Retention |
|---|---|---|
| Uploaded PDF scripts | A temporary file on our backend server while we check and parse it | Discarded immediately after the parse completes, and immediately if we decline the upload. If you upload a script but never start the parse, the held file is swept automatically about 20 minutes after you uploaded it. |
| Parsed script cache | Google Cloud Storage (content-addressed; keyed by file hash, not by user) | 365 days, then deleted automatically; purged sooner on request |
| Parsed scripts on your device | Local SQLite database inside the app, and an encrypted copy in your personal device backup if you have one enabled (Android Auto Backup → Google Drive on Android, or iCloud / encrypted local backup on iOS) | Until you delete the script from the app. If you uninstall the app, any device backup is retained and managed by your platform: on Android, Google Drive keeps your backup until you delete it manually (drive.google.com → Backups) or it expires per Android's Auto Backup policy (typically 60 days after the app is last used); on iOS, your backup is kept and managed by Apple per your iCloud / device-backup settings. |
| Synthesized audio (TTS) | Local file cache inside the app (excluded from device backup on both Android and iOS; does not leave your device) | Up to 180 days, then automatically cleaned up |
| Parse / TTS usage events and device identifier | Google BigQuery | 24 months, then aggregated and deidentified |
| Rehearsal telemetry and in-app interaction events | Google BigQuery | 24 months, then aggregated and deidentified |
| Excerpt (up to 500 characters) and reason from a declined upload | Google BigQuery | 24 months |
| IP address stored in the analytics records above | Google BigQuery, within each record | Same as the record it sits in (24 months) |
| Rate-limit counters | Backend memory and BigQuery | Rolling 24-hour window |
| Server request logs | Google Cloud Logging | 30 days |
| Crash diagnostics (stack traces, device info) | Google Firebase Crashlytics | 90 days from the date of the report |
| Website analytics (page views and the details in Section 2.2) | Plausible Community Edition, running on our own server | Kept for as long as we run the website. No IP address and no cookie identifier is stored, and the daily anonymous identifier cannot be linked from one day to the next. |
| Mailing-list email address and name | Resend, Inc. (our email delivery provider) | Until you unsubscribe, or until we discontinue the mailing list plus 30 days |
| Support correspondence | Google Workspace inbox | Up to 24 months |
8. Your rights and choices
8.1 Everyone
Regardless of where you live, you can:
- Uninstall the app, which removes the locally cached audio from your device. If you have a device backup enabled, your parsed-script database may persist in that backup. On Android, to remove that copy, visit drive.google.com → Backups, tap your LineRunner backup, and choose Delete. On iOS, manage or remove the copy through your iCloud / device-backup settings (Settings → [your name] → iCloud).
- Email support@linerunner.app to request deletion of any server-side cache entries or usage records associated with your device identifier, to request a copy of data we hold about you, or to ask us to correct it.
- Unsubscribe from any mailing-list email with one click.
Because we don't ask for your name or email in the app itself, we identify your server-side records by device identifier only. The app does not display that identifier, so you do not need to find it. Email us instead with something we can match a record against, such as the approximate date you uploaded a script, the title of the script, or the order number on your Google Play or App Store receipt for a purchase. We will use that to locate the records, confirm the match with you, and then act on your request.
8.2 Residents of the European Economic Area, the United Kingdom, and Switzerland
Under the GDPR and analogous laws, you have the right to:
- Access the personal data we hold about you.
- Rectify inaccurate or incomplete data.
- Erase your data ("right to be forgotten").
- Restrict processing in certain circumstances.
- Data portability - receive a machine-readable copy of the data you provided to us.
- Object to processing based on legitimate interests.
- Withdraw consent where processing is based on consent.
- Lodge a complaint with your local data protection authority.
8.3 Residents of California and other US states with consumer privacy laws
Residents of California, Virginia, Colorado, Connecticut, Texas, Utah, Oregon, Montana, Iowa, Delaware, Indiana, Tennessee, New Hampshire, New Jersey, Minnesota, Maryland, Rhode Island, or Kentucky may have the right, under their respective state laws, to:
- Know what personal information we collect and how we use it.
- Request deletion of your personal information.
- Request correction of inaccurate personal information.
- Opt out of the sale or sharing of your personal information for cross-context behavioral advertising.
- Limit the use and disclosure of sensitive personal information.
- Not be discriminated against for exercising these rights.
We do not sell personal information, and we do not share personal information for cross-context behavioral advertising. We do not use sensitive personal information for purposes that require a right-to-limit disclosure.
To exercise any of these rights, email support@linerunner.app. We will respond within the timeframe required by your state's law (typically 45 days). You may designate an authorized agent to make a request on your behalf; we will verify the agent's authorization and your identity before acting on the request.
If your browser sends a Global Privacy Control signal, we will treat it as a valid opt-out of sale or sharing, even though we do not currently sell or share data in that sense.
9. Children's privacy
LineRunner is intended for actors and performers aged 13 and older. We do not knowingly collect personal information from children under 13. If we learn that we have collected information from a child under 13, we will delete it.
If you are a parent or guardian and believe your child under 13 has used LineRunner or provided us with information, please email support@linerunner.app and we will promptly delete the information and remove the child's access.
10. Automated decisions about you
Our rate limiter automatically rejects parse requests from a single device after it exceeds a defined threshold within a rolling 24-hour window. We do not use automated decision-making for purposes that have legal or similarly significant effects on you. If you believe a rate-limit decision has been made in error, email support@linerunner.app and we will review it.
11. Security
We protect your information with a layered set of measures, including:
- Transport-layer encryption (HTTPS) on all connections between the app and our backend, and between our backend and our sub-processors.
- Encryption at rest for data stored in Google Cloud Storage and BigQuery.
- Least-privilege access controls and audit logging for administrator actions.
- Isolation of the landing-page, dashboard, and backend services so that a compromise of one does not grant access to the others.
- API keys and other credentials held in Google Secret Manager, released at run time only to the single service that needs them, rather than being written into our source code or into a service's stored configuration.
No system is perfectly secure. If you believe your information has been exposed, please contact us immediately.
12. Changes to this policy
We may update this Privacy Policy from time to time. The "Effective" date at the top of this page indicates when the current version took effect. For material changes - for example, adding a new category of data we collect or a new third-party recipient - we will provide at least 30 days' advance notice through the app, through the landing page, or via email to mailing-list subscribers, whichever channels are appropriate.
13. Contact us
If you have any questions, concerns, or requests relating to this policy or your personal information, email support@linerunner.app or write to Optimize Overseas LLC, 2303 Ranch Rd 620 S, Ste 160-309, Lakeway, TX 78734. We aim to respond within three business days.
14. Purchases
When you pay to have a script you uploaded parsed, your platform's app store processes your payment: Google Play Billing on Android, or Apple's App Store / StoreKiton iOS. We do not receive your payment-card data. On Android we receive a Google Play purchase token and product identifier, which we send to Google's Play Developer API to validate the purchase; on iOS we receive a signed Apple transaction (not a Google Play token), which we verify cryptographically. In both cases we keep an audit record of the validation in BigQuery (linked to your device identifier) for fraud prevention and customer support.
15. Bypass Codes & Entitlements
If you redeem a bypass code, we record the code, your device identifier, and the timestamp in BigQuery so the server can verify your free-upload entitlement on subsequent requests. Codes are not user-identifiable on their own; the device-ID linkage is purely for entitlement enforcement.
16. Script Library Analytics
When you add a Library script to your Repertoire, we log the library slug and your device identifier so we can understand which titles are most useful and improve curation.
17. In-App Interaction Analytics
To understand where people get stuck, the app can record a small set of interaction events: the screen you opened and the one you left, the primary button you tapped, an empty state or error message that appeared, the result of the purchase sheet, how many characters you selected, and how long a session lasted. Each event carries your device identifier, a per-session identifier, a timestamp, values drawn from a fixed list of screen and button names, and small counts. The list of allowed values is enforced on our server, so an event can never carry free text, the contents of a script, or the words you typed into Library search (we record only how many results it returned).
This collection has a server-side switch. The app first asks our server whether the switch is on and sends nothing until the answer is yes; when it is off, no interaction events are stored. Events are sent in small batches, typically when you leave the app, and are never sent during rehearsal playback. We use them only to improve the product, never for advertising, and never to identify you personally.
18. Rehearsal Telemetry
When you start a rehearsal, the app tells our server whether the script came from the Library or from an upload. When the rehearsal ends, it sends how many lines you advanced through, whether you reached the end, and how the session ended. Both events carry your device identifier and a timestamp and nothing about the script itself. We use them to understand whether rehearsals are actually completed, not only started.
Questions? support@linerunner.app