Privacy Policy
This Privacy Policy describes how Town Crier ("Town Crier," "we," "us," or "our") collects, uses, and shares information when you use the Town Crier mobile application (the "App").
Town Crier is an audio-first driving companion that announces the names of towns you pass through and shares curated facts about each place. It is designed to be used hands-free while driving, with navigation apps running in the foreground.
We believe in collecting as little data as possible and being transparent about what we do collect. Please read this policy carefully to understand our practices.
1. Summary
- No accounts. You do not need to sign up, log in, or provide personal information to use Town Crier.
- Location stays on your device. GPS coordinates are used on your device to determine which town you are in. We receive precise coordinates only in the specific reports described below. Crash and diagnostic reports may include an approximate location (rounded to about 1 km).
- Anonymous usage data is optional. You can choose whether to share anonymous diagnostic data with us. You can change this choice anytime in the App's Settings.
- Crash reports are always on. If the App crashes or hits a technical error, we receive a report so we can fix it. They may include an approximate location (rounded to about 1 km), never your precise GPS position.
- You control what you send us. Problem reports are only sent when you submit them yourself.
- No advertising. We do not show ads, sell your data, or share it with advertisers.
- No microphone or camera access. The App does not request or use your microphone or camera.
2. Information We Collect
2.1 Information stored only on your device
The following information is stored on your device and is not transmitted to our servers:
- Location data. The App uses your device's GPS to determine which town you are currently in. Location data is processed locally.
- App preferences and settings. Your voice, volume, feature toggles, and similar preferences are stored locally.
- Announcement history. A record of towns and facts you have recently heard, used to avoid repeating the same content, is stored locally. You can clear this history at any time through the History screen in the App.
- Cached content. Facts and images fetched for towns you have visited are cached locally to reduce network use.
2.2 Anonymous device identifier
When you first open the App, we generate a random anonymous identifier called a Device ID (formatted like TC-XXXX-XXXX). This identifier:
- Is a random identifier that isn't derived from your name, phone number, or device hardware IDs.
- Is generated on your device and stored locally.
- Is included with any Problem Reports you submit, with automatic content gap reports, and, if you have opted into anonymous analytics, with anonymous usage data.
- Persists across App updates.
- Is deleted if you uninstall the App and reinstall.
You can view your Device ID in the App's Settings.
2.3 Information you send us when submitting a Problem Report
If you use the App's "Report a Problem" feature, we receive the following information:
- The details of the problem you describe.
- Your Device ID (to correlate related reports).
- The town or location you were in when the issue occurred, if relevant.
- Your App version and platform (iPhone or Android) to help us reproduce the problem.
- Optional: if you choose to provide it, your name and email address so we can follow up. This is entirely optional and is only used for follow-up on your report.
- Optional: if you choose to attach a diagnostic log, it may include precise GPS coordinates recorded during your drive.
2.4 Automatic diagnostic and crash data (always active)
To keep the App working, some technical data is sent regardless of your other settings:
- Crash reports. If the App crashes or encounters an unexpected error, we receive an error report through Sentry (see Section 4). Crash reports include the type of error and where in the App's code it happened, basic device information, your Device ID, and contextual information about your recent actions in the App (such as which screens you visited or which buttons you tapped) to help us reproduce the problem. Crash reports may include an approximate location (coordinates rounded to about 1 km) to help us diagnose location-related issues; they never include your precise GPS position.
- Operational health signals. A small number of technical events help us detect App-level issues (for example, whether an audio playback got stuck, or whether an image failed to load). These signals do not include personally identifiable information. Where they include location, it is approximate (rounded to about 1 km).
- Content gap reports. When you drive through a town that we do not yet have content for, the App automatically reports your Device ID, the town's name, county, and state, and the GPS coordinates of where the gap was detected. This is sent regardless of your analytics opt-in setting. This helps us prioritize which towns to add next.
- App mode events. When you change the App's operating mode (for example, switching between screen-on and screen-off driving modes), we record the transition. This helps us detect configuration issues.
2.5 Anonymous analytics (opt-in)
If you choose to enable "Help improve Town Crier" during onboarding or in Settings, we collect additional anonymous data to help us improve the App:
- Product analytics. Anonymous events about which features you use and how the App is performing (which screens you view, which buttons you tap, when the App announces a town, when you mute or unmute audio, and similar). This is collected via PostHog (see Section 4). If you do not opt in, PostHog does not send any events.
All anonymous analytics data is associated with your Device ID, not with your personal identity. You can turn this off at any time in Settings.
2.6 Advanced diagnostic settings (developer-focused)
The App includes advanced diagnostic settings intended for developers troubleshooting specific technical issues. These settings are off by default and are hidden inside a Debug menu. Turning them on causes additional technical events to be sent to Sentry. Normal users will never trigger these settings inadvertently.
3. How We Use Your Information
We use the information described above to:
- Provide the App's core functionality (announcing towns and facts as you drive).
- Improve the App based on real usage patterns (when you have opted into anonymous analytics).
- Fix bugs and technical problems.
- Respond to Problem Reports you send us.
- Add coverage for towns that are missing from our content library.
We do not:
- Sell your data to third parties.
- Share your data with advertisers.
- Use your data for advertising or marketing to you.
- Combine your data with data from other sources to build a profile of you.
4. Third Parties We Use
The App uses the following third-party services to function:
Cloudflare. We use Cloudflare Workers and Cloudflare R2 to store Problem Reports, automatic content gap reports, and to serve the App's content (fact library, images, and audio clips). Cloudflare's privacy policy is available at cloudflare.com/privacypolicy.
Sentry. We use Sentry to collect crash reports and operational health signals. Sentry is active regardless of your analytics opt-in setting. Sentry's privacy policy is available at sentry.io/privacy. Default retention for Sentry data is 90 days.
PostHog. We use PostHog to collect anonymous product analytics only when you have opted in via the "Help improve Town Crier" setting. If you have not opted in, PostHog does not send events from your device. PostHog's privacy policy is available at posthog.com/privacy.
Wikipedia and Wikimedia Commons. The App fetches facts and images from Wikipedia and Wikimedia Commons. These requests are made from your device directly. Wikimedia's privacy policy is available at foundation.wikimedia.org/wiki/Policy:Privacy_policy.
OpenStreetMap (Nominatim). The App uses OpenStreetMap's Nominatim service to translate GPS coordinates into town names. These requests are made from your device directly. OpenStreetMap's privacy policy is available at wiki.osmfoundation.org/wiki/Privacy_Policy.
Expo (EAS Update). The App checks Expo's EAS Update service for over-the-air app updates and downloads them directly to your device. Expo receives standard request data such as your IP address and platform. Expo's privacy policy is available at expo.dev/privacy.
We do not control these third-party services and are not responsible for their privacy practices. We encourage you to review their policies.
5. Location Data
Location data is central to how the App works, so we want to be especially clear:
- Your device's GPS coordinates are processed locally on your device. The App uses them to determine which town you are in, so it can announce the town name and fetch relevant content.
- Coordinates are not continuously transmitted to our servers. We receive precise coordinates only in the specific reports described below.
- Precise coordinates may be included in Problem Reports (attached diagnostic logs) and content gap reports:
- If you submit a Problem Report with an attached diagnostic log, that log may include precise GPS coordinates recorded during your drive, to help us reproduce the issue.
- Content gap reports, sent automatically when you drive through a town we don't yet have content for, include the GPS coordinates of where the gap was detected.
- Crash reports and operational health signals sent to Sentry may include an approximate location, with coordinates rounded to two decimal places (roughly 1 km), to help us diagnose location-related issues.
- Crash reports and operational health data never include your precise location. Where location is included, it is rounded to roughly 1 km.
- We don't build location histories or travel profiles. Each report reflects a single point in time, not a continuous track of where you drive.
You can revoke location permission at any time through your device's Settings. Doing so will prevent the App from working, because it cannot announce towns without knowing where you are.
6. Data Retention
- Problem Reports and automatic content gap reports are stored on Cloudflare R2 indefinitely, as they form our record of user-reported issues and content needs. You can request deletion (see Section 8).
- Crash reports and operational data (Sentry) are retained for 90 days by default.
- Anonymous analytics (PostHog) are retained according to PostHog's default policies.
- Data on your device is retained until you clear the App's data or uninstall.
7. Your Choices
- Opt out of anonymous analytics. You can turn off "Help improve Town Crier" at any time in the App's Settings. When it is off, we do not collect product analytics or other opt-in usage events.
- Do not submit Problem Reports. Reports are only sent when you actively submit them through the "Report a Problem" screen.
- Clear announcement history. You can clear the App's local history of towns and facts you have heard through the History screen in the App at any time, without affecting other settings or data.
- Revoke location permission. You can revoke location access in your device's Settings. The App will not function without location access.
- Clear App data or uninstall. You can clear the App's local data or uninstall it at any time. Uninstalling also removes your Device ID and all locally cached content.
8. Your Rights
You have the right to:
- Know what data we have about you. Email us at [email protected] with your Device ID, and we will tell you what data associated with that Device ID exists on our servers.
- Request deletion. Email us at [email protected] with your Device ID, and we will delete any Problem Reports and content gap reports associated with that Device ID from our servers. Please allow up to 30 days for deletion to be processed.
- Request correction. If you believe any data we hold is inaccurate, contact us at [email protected] and we will review it.
If you exercise these rights, we may need to keep certain minimal records (for example, a log that a deletion was requested) to demonstrate compliance.
9. Data Security
We take reasonable technical measures to protect your information:
- Data transmitted between the App and our servers is encrypted in transit using HTTPS.
- Data stored on Cloudflare R2 is protected by Cloudflare's security infrastructure.
- Access to our servers is limited to authorized personnel using authenticated credentials.
No system is completely secure. While we work to protect your information, we cannot guarantee absolute security.
10. Children's Privacy
Town Crier is not directed at children under 13, and we do not knowingly collect personal information from children under 13. If you believe we have collected information from a child under 13, please contact us at [email protected] and we will delete it.
11. International Users
Town Crier is operated from the United States. If you use the App from outside the United States, any information we collect will be transferred to and processed in the United States, which may have different data protection laws than your country.
12. Changes to This Policy
We may update this Privacy Policy from time to time. When we do, we will update the "Effective date" at the top of this policy. If we make significant changes, we will notify users through the App or through an in-App notice before the changes take effect.
Your continued use of the App after changes take effect constitutes acceptance of the updated policy.
13. Contact Us
If you have questions, concerns, or requests about this Privacy Policy or your data, please contact us at:
We aim to respond to all inquiries within 14 days.
This policy was last updated on November 3, 2026.