The short version: CatchAll is local-first. There are no accounts, no analytics, and no advertising. Your catches live on your device. Sharing to CatchAll (including silent capture that does not open the app) still processes data only on your device first. The only times data leaves your device are the ones you can see and control: fetching a link's public metadata, optional AI enrichment, and optional sync to your own Google Drive. We do not operate any server that stores your content.
1. Who we are
CatchAll ("the app," "we," "us") is a "save anything from anywhere" application published by the CatchAll developer. For anything in this policy, contact us at codedelights@gmail.com.
2. What we don't do
- No accounts. The app has no signup, no login, and no user database.
- No analytics or tracking. The app contains no analytics, crash-reporting, advertising, or tracking SDKs.
- No server-side storage of your content. We never upload, store, or back up your catches on servers we operate.
- No selling or sharing of personal data. We have nothing to sell โ we don't hold your data in the first place.
3. Data stored on your device
Everything you save is kept in a local database on your device (SQLite on Android; IndexedDB in the web dashboard):
- Your catches โ the shared URL or text, title, description, AI-generated summary, tags, category, source app, content type, personal notes, and timestamps.
- Thumbnails โ preview images cached locally for offline use.
- Settings โ your preferences (theme, view layout, grouping, sync toggle, etc.).
- Sensitive credentials โ if you add your own AI API key or connect Google Drive, the key and the Drive refresh token are kept in your device's encrypted secure store. They are never included in sync and never sent to us.
This data stays on your device until you delete it, clear the app's storage, or uninstall the app.
4. When data leaves your device
4.0 Silent share capture (on-device)
When you use Android's share sheet to send content to CatchAll, the app may process the share in the background without opening its main UI (a short system toast confirms the save). That pipeline still runs on your device: the shared URL or text is written to the local database first. No CatchAll account is involved, and no copy of your catch is uploaded to our servers as part of capture.
4.1 Fetching link metadata
When you catch a link, the app contacts the source website directly from your device to read its public metadata (page title, description, preview image, favicon) and to download the thumbnail. These requests go to the site you shared from โ the same way a browser would load the page โ and are subject to that site's own privacy policy.
4.2 AI enrichment (optional)
To generate the summary, tags, and category, the app sends the following fields of a catch for processing: the URL, title, description, source app name, content type, and โ for articles โ a short text excerpt (at most 8 KB). Your personal notes and manual edits are never sent. There are two routes, and you choose which one applies:
| Free tier (default) | Your own API key | |
|---|---|---|
| Path | Device โ CatchAll enrichment proxy โ Google Gemini | Device โ Google Gemini directly |
| What the proxy keeps | Only an anonymous, randomly generated device identifier with monthly and per-minute usage counters, used solely to enforce the free quota (50 enrichments/month). It never stores or logs the content of requests. Counters are held in memory and reset monthly. | Not applicable โ the proxy is not involved at all. |
| Hosting | The proxy runs on Google Cloud Run (US region). Like most hosting platforms, Google Cloud may record standard infrastructure request logs (e.g. IP address, timestamp, response code). We do not use these to identify users. | Not applicable. |
| Processing by Google | In both routes the content is processed by Google's Gemini API under Google's Privacy Policy and API terms. | |
The anonymous device identifier is a random string generated by the app on your device. It is not derived from your identity, contacts, advertising ID, or hardware serials, and it cannot be linked back to you by us.
AI enrichment never blocks saving: if you're offline or out of quota, the catch is saved locally and enrichment is simply queued.
4.3 Sync to your Google Drive (optional)
If you enable Sync across devices, the app writes a single sync file to the app-private area of your own Google Drive (the appDataFolder), using the narrow drive.appdata OAuth scope. This means:
- The app can only access its own hidden folder in your Drive โ it cannot see, read, or modify any of your other Drive files.
- The sync file contains your catches (thumbnails and API keys are excluded).
- We never receive or handle this file โ it moves directly between your devices and your Drive.
- You can disconnect at any time in Settings, which revokes the app's token. You can also revoke access or delete the app's hidden data from your Google account at any time (see our Data Deletion page).
CatchAll's use of information received from Google APIs adheres to the Google API Services User Data Policy, including the Limited Use requirements. Google user data is used only to provide the user-facing sync feature, is never transferred to third parties (except as necessary to provide the feature or comply with law), and is never used for advertising.
5. Legal bases (for EEA/UK users)
Where the GDPR or UK GDPR applies, we process the limited data described above on these bases: performance of a contract (providing the features you invoke โ metadata fetching, AI enrichment, sync) and legitimate interests (enforcing free-tier quotas and preventing abuse via anonymous counters). No profiling or automated decision-making with legal effects takes place.
6. Data retention
- On your device: until you delete a catch, clear app storage, or uninstall.
- In your Drive: the sync file remains under your control in your Google account until you delete it or the app's hidden data.
- On the enrichment proxy: request content is not stored at all; anonymous quota counters reset monthly and live only in memory.
7. Your rights and choices
- Access & portability: your data is on your device, fully visible and editable in the app.
- Deletion: delete individual catches in-app, or remove everything by uninstalling and (if sync was enabled) deleting the app's hidden Drive data โ full steps on the Data Deletion page.
- Consent withdrawal: disable sync or remove your API key at any time in Settings; revoke the app's Google access at myaccount.google.com/permissions.
- EEA/UK users additionally have rights to rectification, restriction, objection, and to lodge a complaint with a supervisory authority. Since we hold no personal data about you, most requests are satisfied on-device; for anything else, email us.
8. Security
All network communication uses HTTPS. Credentials (your API key and Drive token) are stored in the platform's encrypted secure storage, never in the regular database and never in the sync file. The enrichment proxy is stateless by design โ the most privacy-preserving thing a server can do with your data is not keep it, so it doesn't.
9. Children
CatchAll is not directed at children under 13 (or the equivalent minimum age in your jurisdiction), and we do not knowingly collect personal information from them. Since the app collects no personal information by default, no child-specific data is gathered either.
10. Changes to this policy
If we change this policy, we'll update the effective date above and, for material changes, note it in the app's release notes. Continued use after a change means you accept the updated policy.
11. Contact
Questions, concerns, or requests: codedelights@gmail.com.