Beans privacy policy
Last updated 26 September 2026.
Beans is an iOS app for planning trips: the places you want to go, grouped into days, in the order you would actually walk them. This page says what happens to your information. It names the companies involved and what each one receives, because a policy that only says "we respect your privacy" tells you nothing you can check.
Beans is currently a private beta distributed through TestFlight.
The short version
- Beans has no user accounts, and no Beans server holds your trips.
- Your trips live on your device and sync through your own iCloud account.
- There is no analytics product in the app, no advertising, no tracking across apps or websites, and nothing is sold or shared for marketing.
- Two outside services receive something while you use Beans: Google and Cloudflare. Apple additionally receives crash reports and your tester email address, because the app is distributed through TestFlight.
- Google's map and place components, which are built into the app, collect more than Beans itself does, including your location. That is set out below rather than buried.
What Beans stores
Everything below is held in a database on your device, and in your own iCloud account if you have iCloud enabled. There is no copy on any server operated by Beans.
What you create. Your trips and their dates, destination and timezone. Your days and their titles. Your stops, their order, any time you have pinned, how long you expect to stay, and your notes. Your own name for a place, the category you filed it under, and the opening-hours preset you chose.
What the app derives on your device. A short list of typed attributes for each place, such as "indoor" or "lunch", drawn from a fixed vocabulary rather than free text. A mathematical representation of each place (an embedding) used to rank similar places, built only from your own words and the app's own categories.
What comes from Google, and for how long. A Google place identifier for each place, which is an opaque code such as ChIJ..., kept for as long as you keep the place. A latitude and longitude for each place, kept for at most 30 days and then deleted from the database, which is the limit Google's terms set. The app refreshes a coordinate before it expires while you are using it, so places do not quietly stop working. A place's name as Google spells it, used as the default label you can then edit. Your trip's destination city name, its timezone identifier, and its place identifier.
Airports. An airport is stored as its three-letter code and nothing else, resolved against a public-domain airport list bundled inside the app. No airport lookup involves Google.
What Beans never stores
Opening hours, ratings, review counts, photos, price levels, phone numbers, websites, formatted street addresses, travel times, distances, and the shape of a route on the map. Some of these are fetched while you have a trip open and are gone when you close the app. None of them are written to the database.
This is enforced by a test that checks the database schema against an approved list of fields, so a new field that has not been considered fails the build rather than shipping quietly.
Your location
Location is optional. If you allow it, the map draws a blue dot showing where you are.
Beans' own code never receives, holds or transmits your coordinate: the dot is drawn by Google's Maps component from the permission the app already has. So Beans cannot store your location, and does not.
Google's components are a different matter, and the honest answer is that Google's own published disclosures say they collect location. Google declares, for the Places component built into Beans, that it collects precise and coarse location, a device identifier, search history, product interaction, and performance data, for analytics and app functionality. For the Maps component it declares a device identifier, crash data, performance data and product interaction. Those disclosures are Google's, and that data goes to Google under Google's privacy policy, not to Beans.
If you would rather Google's components did not see your location, deny or revoke the location permission in iOS Settings. Everything except the blue dot keeps working.
Motion
Beans reads the device's motion sensor to notice a shake, which undoes your last edit. This happens on the device and goes nowhere.
Screenshots and pasted text
You can paste text or hand Beans a screenshot of a list of places, and it will pull the names out. The text is read on the device using Apple's Vision framework. The image is never uploaded. The extracted words are used to look each place up and are then discarded; what remains is a place, the same as one you had added by hand.
The outside services, and what each one gets
Google Maps Platform. When you search for a place, the words you typed and the area being searched go to Google. When Beans works out how long a journey takes, the two coordinates and your chosen mode of travel go to Google. The map images, place results and travel times all come from Google. See Google's disclosures above, and Google's privacy policy.
Cloudflare. Travel time requests pass through a small proxy of ours running on Cloudflare Workers, which exists so that the Google key is not shipped inside the app. The proxy stores nothing: it has no database attached and writes no logs of its own. Cloudflare retains standard platform request metadata for a short period as part of running the service. See Cloudflare's privacy policy.
Apple. Your trips sync through your own iCloud account, which means they are held in Apple's infrastructure under your Apple Account rather than ours. We cannot read them. Because the app is distributed through TestFlight, Apple also handles your tester email address, the fact that you installed a build, any feedback you send, and crash reports. Crash reports are visible to us. The app is built so that place names and other fetched content cannot appear in a crash report, which is checked automatically on every build. See Apple's TestFlight privacy notice.
Sharing a trip
You can share a trip with one other person through iCloud. Doing so gives that person the contents of that trip, and lets them edit it. The share travels through Apple's infrastructure between your iCloud account and theirs. Beans has no part in it beyond asking iOS to set it up, and can see neither the trip nor the share. You can stop sharing at any time from the trip.
Deleting your data
Delete a trip in the app, and it is gone from your device and from your iCloud.
Delete the app, and the local database goes with it. Data already synced to iCloud stays in your own iCloud account until you remove it there, under Settings, your name, iCloud, Manage Account Storage.
Because no Beans server holds anything, there is nothing to request from us and nothing for us to delete on your behalf. If you are in a jurisdiction with rights of access, correction, portability or erasure, the practical answer is that the data is already entirely in your hands. Requests about the data Google, Cloudflare or Apple hold have to go to them, and each of the policies linked above explains how.
Children
Beans is not directed at children under 13, and is not designed to collect information from them.
Changes to this policy
This page will change when the app does. The date at the top is the date it last changed. The app's data policy, the internal document this page is written from, lives in the project repository and is enforced by tests, so the two cannot drift far apart.
Contact
Questions about this policy, or about anything above, go to privacy@beans.travel.