Privacy Policy
PhotoCaptioner AI ("the app") is a macOS application developed by Gottschalk Group LLC ("the developer", "we", "us"). This policy explains what data the app handles, who receives it, and what we do not do.
Summary
- Your free photos and any photo packs you buy are captioned through our server, using our own Google Gemini account. The server passes each photo to Google and back. It never stores your photos, locations or captions. It keeps only how many photos you have used and, if you buy photo packs, a record of each purchase.
- If you use your own Google API key, photos go directly from your Mac to Google. We are not in that data path.
- To find nearby place names, the app sends a photo's GPS coordinates to Apple Maps.
- Your settings, captions and API keys are stored locally on your Mac. API keys are stored in the macOS Keychain.
- We do not sell your data. The app contains no analytics, tracking pixels, advertising SDKs, or third-party trackers of any kind.
- This website (photocaptioner.com) uses Google Analytics to count visits, with your consent where the law requires it (see This website).
What the app does with your photos
When you caption a photo in PhotoCaptioner AI:
- The app reads the image file from a folder, or from your Photos library, that you have explicitly given it access to.
- If the photo has GPS coordinates, the app asks Apple Maps for the address and for nearby places (see Apple Maps below).
- A copy of the image is sent to Google Gemini, together with the address, the nearby place names and, if you turned on Include People's Names, the names of people tagged in the photo. For free photos and photos from packs it goes through our server (see Free photos and photo packs). With your own key it goes directly from your Mac to Google.
- Gemini returns a caption, which the app writes into the photo's EXIF/IPTC metadata on your Mac. The original file is preserved alongside the captioned copy.
Free photos and photo packs (captioned through our server)
New users can caption their first free photos without a Google account, and anyone can buy photo packs to caption more. The app asks for your agreement before the first photo is sent. These photos are captioned on our paid Google Gemini account, through a small server we run on Cloudflare.
What our server receives:
- The captioning request: the image, the address and place names, any people's names, and the instructions for Gemini.
- The App Store's signed download record for the app (Apple's AppTransaction). It lets the server check that the request comes from a genuine copy of the app and count photos per Apple Account. It contains an app-specific account identifier and details of the download, such as the app version and the original download date. It does not contain your name, email address, Apple Account ID or payment details.
- When you buy a photo pack: Apple's signed record of that purchase (a StoreKit transaction). The server checks Apple's signature and adds the photos to your balance. The record contains a transaction identifier, the product, the purchase date, the price and the App Store country. It does not contain your name, email address, Apple Account ID or payment details. If you bought the Own Key Unlock before version 1.1, the app also sends that purchase's record, so the server can add the thank-you photos once.
What our server keeps:
- For each Apple Account that has captioned photos through our server: the app-specific account identifier from the download record, the number of photos used, and the dates of first and last use.
- For each photo pack you buy, and for the thank-you photos: the transaction identifier, the product, the number of photos, the purchase date, the date the photos were added and whether it was a test purchase, linked to the account identifier. We do not keep the price or the App Store country. These records are your balance: they let your photos work on all your Macs and survive a reinstall.
- The total number of photos captioned each day, and the number of Gemini tokens they used per model, across all users, without any account information.
We keep these records while we caption photos through our server, so that the free allowance applies once per Apple Account and bought photos are never lost, and purchase records afterwards for as long as we need them for accounting or legal obligations.
The server does not store or log your photos, addresses, place names, people's names or captions. It passes the request to Google and returns Google's answer to your Mac.
What Google receives: the captioning request, sent from our server under our API key. Google does not receive the download record, your account identifier or your Mac's IP address. Our account uses Google's paid Gemini API. Under Google's terms for paid services, Google does not use prompts or responses to improve its products. It keeps them for a limited period, solely to detect and prevent violations of its Prohibited Use Policy and for legally required disclosures. Our server also tells Google, with every request, not to keep it in Google's optional request logs. See the Gemini API Additional Terms of Service.
Our hosting provider: our server runs on Cloudflare, which receives requests to it, including your Mac's IP address, as part of delivering them. See Cloudflare's Privacy Policy.
If you prefer, caption with your own Google Gemini key instead (Use My Own Google Gemini Key Instead on the welcome screen, or Caption with my own Google key in Settings → API Keys), and no photo goes through our server.
Apple Maps (address and nearby places)
For photos with GPS coordinates, the app uses Apple's MapKit and Core Location services to look up the address and nearby places such as restaurants, museums and landmarks. To do this, the photo's coordinates are sent to Apple. For a photo without GPS coordinates, the app may instead send Apple the name of the landmark Gemini identified, to find where it is. No image is sent to Apple. This works the same whether you use free photos or your own key, and it is governed by Apple's Privacy Policy. Results are cached on your Mac.
Using your own Google API key
If you enter your own Google API key, the app uses these Google services directly from your Mac:
- Google Gemini API (Generative Language API) for image captions.
- Google Places API (New) for nearby-place names (optional, and used instead of Apple Maps only if you provide a Places API key).
Because you provide your own Google API key, your use of these APIs is governed by Google's terms, not by us:
- Google Gemini API Terms: https://ai.google.dev/gemini-api/terms
- Google Cloud Terms (Places): https://cloud.google.com/terms
- Google Privacy Policy: https://policies.google.com/privacy
We have no access to these calls or to your Google account. How Google may use your content depends on your own Google account. For example, Google's terms allow it to use content sent through its unpaid (free) tier to improve its products. From version 1.1.1, the app tells Google with every request not to keep it in your Google project's optional request logs.
If Gemini cannot caption a photo, the app may use a local on-device classifier (MobileNetV4) instead. That classifier sends nothing off your Mac.
What is stored locally
Because PhotoCaptioner AI is a sandboxed Mac App Store app, its files live inside the app's sandbox container rather than in the user-visible ~/Library/Application Support/ folder. The following are stored only on your Mac and never transmitted to us:
- Your Google API keys, if you entered any — in the macOS Keychain (under service
com.photocaptioner). - App settings — in
~/Library/Containers/com.gottschalkgroup.PhotoCaptioner/Data/Library/Application Support/PhotoCaptioner/settings.json, with a Keychain mirror. These include whether and when you agreed to captioning through our server. - The number of free photos used on this Mac, with a Keychain mirror.
- An optional caption cache —
image_cache.sqlitein the same sandbox folder, which also caches nearby-place results. You can clear it at any time from Settings → Cache. - Security-scoped bookmarks — used so the app can write captions back into folders you have authorized, and, if you enable Include People's Names, to read your Photos library for tagged names. These bookmarks stay on your Mac.
You can delete these files at any time by uninstalling the app and removing its sandbox container under ~/Library/Containers/com.gottschalkgroup.PhotoCaptioner/.
In-app purchases
PhotoCaptioner AI offers two kinds of in-app purchase, both processed by Apple via StoreKit:
- Photo packs (consumable): photos captioned through our server. To add them to your balance, the app sends Apple's signed purchase record to our server, as described under Free photos and photo packs.
- Own Key Unlock (one-time, non-consumable): unlimited captions with your own Google key. The app checks it locally on your Mac.
We do not receive your name, payment information, or Apple Account ID. Refunds and billing questions are handled by Apple.
Photos library access
If you grant permission, PhotoCaptioner AI can read images from your Photos library. Photos are processed in the same way described above, and modified copies are saved back to the location you choose. We do not enumerate or transmit the contents of your library.
People's names (optional). If you turn on Include People's Names in Settings, PhotoCaptioner AI asks you to grant one-time, read-only access to your Photos library so it can look up the names you have tagged with Apple Photos' People feature. This lookup happens entirely on your Mac. The names are used only to build the caption for the photo you are processing and, if you choose to save, are written into that photo's own metadata. They are sent nowhere except inside the same Gemini request that captions the photo, as described above, and our server does not store them. You can revoke this access at any time with the Turn Off button in Settings. The feature is off by default.
Children's privacy
PhotoCaptioner AI is not directed at children under 13, and we do not knowingly collect personal information from children under 13.
Crash reports and diagnostics
The app does not include any third-party crash reporting or analytics SDK. If you have macOS system-wide crash reporting enabled, Apple may send anonymized crash reports to Apple under Apple's own privacy policy. If you also choose to share crash data with app developers, Apple may pass those reports on to us. They do not contain your photos or captions.
This website
This website, www.photocaptioner.com, uses Google Analytics to understand how many people visit, which pages they read, and how they found the site (for example, a search engine or a link). Google Analytics records pages viewed, the referring site, and general device, browser and approximate location information. It does not record your name or email address, and Google Analytics 4 does not log or store IP addresses. We use this only to improve the site. We do not use it for advertising, and advertising features are turned off.
Cookies and consent. If you are in the European Economic Area, the United Kingdom or Switzerland, no Analytics cookies are set unless you choose Accept in the cookie banner. Until then, or if you choose Decline, Google receives only basic, cookieless signals that it uses to estimate visitor numbers. Elsewhere, Analytics cookies are used by default. Anyone can change their choice at any time with Cookie Settings at the bottom of every page. Your choice is remembered in your browser's local storage on this site.
Google processes this data under the Google Privacy Policy; see also how Google uses information from sites that use its services. You can also block Google Analytics on all websites with Google's opt-out browser add-on.
The website's analytics have nothing to do with the app: the app sends no data to Google Analytics, and visiting the website is not linked to your use of the app.
Your choices
You can caption with your own Google key instead of through our server, and you can turn off Include People's Names at any time. Our server holds no name, email address or other contact detail, so neither we nor anyone else can tell from it which record belongs to you. If you have questions about the data described here, email us at the address below.
Changes to this policy
If material changes are made to this policy, the "Last updated" date at the top will change and the change will be noted in the app's release notes. Continued use of the app after a change indicates acceptance.
Contact
Questions about this policy can be sent to: contact@gottschalkgroupllc.com
