This Privacy Policy describes how Contracts Manager (referred to as "the App", "we", "us", or "our"), developed by TProM Team, collects, uses, stores, and protects your information. The App is available as a web application and on Android (with iOS planned).
We are committed to transparency and to complying with the General Data Protection Regulation (GDPR) and other applicable data protection laws. This policy is based on the actual behavior of the App as implemented in its source code.
You can use the App without an account (guest mode). If you want an account, you either create one with an email address and password or sign in with Google Sign-In. Accounts are managed for us by Firebase Authentication (operated by Google). Depending on how you sign in, the following account data is processed:
| Data | Source | Purpose |
|---|---|---|
| Email address | You (email accounts) or your Google Account (Google Sign-In) | Signing in, account management, confirming the address, password recovery and account e-mails |
| Password (email accounts only) | You | Signing in. The App sends your password directly to Firebase Authentication over an encrypted connection; Firebase stores it only in hashed form. We never receive your password and cannot read it. |
| Display name | Your Google Account, or the name you may enter when creating an email account | Personalization within the App (for example the greeting and the welcome e-mail) |
| Profile photo URL | Google Account (Google Sign-In only) | Avatar display in the App |
| Unique user ID (UID) | Firebase Authentication | Internal account identifier |
| Sign-in method (authentication provider) | Firebase Authentication | Showing the right account and security options (for example password controls only for email accounts) |
| Email verification status | Firebase Authentication | Email accounts can use features that need an account only after confirming their address |
| Account creation date and last sign-in date | Firebase Authentication | Account metadata and account security |
| Verification-code records (email accounts) | Our backend | Confirming a new account's address with a 6-digit code and limiting attempts (see Section 3.4) |
| Password-reset and email-change requests | You | Sending a password-reset link, or a link that confirms a new email address (see Section 6.1) |
| Security information (IP address, browser or device information, time of the request) | Processed by Firebase Authentication when you sign in or use account functions | Protecting accounts, for example against repeated sign-in attempts |
| Player nickname (optional) | Provided by you in-app | Shared EarnPoints leaderboard display; stored in Firebase Firestore only if you choose a nickname |
Guest Mode: You may use the App without signing in. In guest mode, no personal data is collected. All data remains on your device only.
Email accounts before confirmation: when you create an account with an email address, we e-mail you a 6-digit code to confirm it. Until you enter that code in the App, the App works as in guest mode (on this device only), and our backend does not allow the account to connect Google Drive or Google Calendar, use AI features, write to the shared leaderboard or create an e-mail import forwarding address.
Google Drive and Google Calendar are not part of signing in. They are separate, optional connections, described in Sections 3.2 to 3.4 and 6.2.
You create and manage contract records that may include:
Since version 5.2 the App also keeps the following, only if you use these features:
We never receive this content. It is stored on your device and, if you choose, end-to-end encrypted in your own Google Drive (Section 3.2). The Secure Vault's content is always encrypted with your master password; the App never stores or sends that password.
Fingerprint or face unlock for the Secure Vault (Android only, optional) uses Android's own biometric prompt. The App never receives fingerprint or face data: Android only tells it whether the check succeeded and then releases a key kept in the Android Keystore.
The App stores your settings locally, including: language, theme, font size, currency preference, and notification preferences.
| Data | When | Purpose |
|---|---|---|
| Browser/OS information | During cloud sync | Included in the sync metadata in your Google Drive (end-to-end encrypted once encryption is on) to help you identify which device last synced |
| Short-lived Google access tokens | While Google Drive or Google Calendar is connected | Let the App use your Google Drive app folder or its own Google Calendar calendar; kept on your device and sent only to Google |
| Third Party | Data Received | When |
|---|---|---|
| Google (via Firebase Authentication) | Email, display name, profile photo URL | When you sign in with Google |
| Google (Drive or Calendar connection) | The ID and email address of the Google account you choose for the connection, and the permission you grant | When you connect Google Drive or Google Calendar |
| Groq API | Structured extraction result (JSON) based on text you sent | When you use AI contract analysis |
All core App data is stored locally on your device using browser storage (IndexedDB and localStorage) on the web and native device storage on Android (via Capacitor).
This includes:
On Android, the App's data is kept in its private storage, which other apps cannot read, and Android's file-based encryption protects it while the phone has not been unlocked since a restart. In addition, notes, My Storage (records and files) and the App's sync queue are encrypted with a random key of this installation that is kept in the Android Keystore, and so is the key of your end-to-end encryption. Contracts, their documents and the settings are not additionally encrypted by the App. The Secure Vault's entries are always encrypted with your master password.
In a browser, data is kept in this website's storage in your browser profile and is not additionally encrypted by the App, except the Secure Vault. Anyone with access to your computer account or browser profile could read it; protect them with your operating system's account password and disk encryption.
Android backups and device transfers (Google's backup of your phone, or copying to a new phone) include your contracts, their documents, the settings and the Secure Vault (still encrypted). They do not include notes, My Storage, the encryption keys on the device, Smart Import data or your sign-in: these are tied to a key that never leaves the phone, so a copy would be unreadable. On a new phone they come back from Google Drive (with your encryption password) or from a backup file you exported. Settings → Storage & sync shows which notes and files exist only on your device. Android's backup is provided by Google under Google's terms.
Google Drive backup is optional. When you connect Google Drive (Settings → Storage & sync), you choose the Google account to
use — the one you sign in with or a different one. The App then automatically stores synced data in the
hidden application-specific folder (appDataFolder) within that Google account's Drive,
using the permission drive.appdata (see Section 8). This folder is:
What is stored there depends on whether you turned on end-to-end encryption (Settings → End-to-end encryption). Attached documents and files are synced so they are available on your other devices.
| Data | With end-to-end encryption | Without it |
|---|---|---|
| Contract records (including records of deleted contracts) | cme-c-contracts.json, end-to-end encrypted | contracts.json, scrambled with an app key* |
| Attached documents (PDFs, images) | cmd__<id>, end-to-end encrypted | doc__<id>.b64, scrambled with an app key* |
| Settings (for example language and the e-mail address for reminders) | cme-c-settings.json, end-to-end encrypted | settings.json, scrambled with an app key* |
| A cached copy of your AI points and game progress | cme-c-premium.json, end-to-end encrypted | premium.json, scrambled with an app key* |
| Sync metadata (version, time, number of contracts, device type) | cme-c-sync.json, end-to-end encrypted | sync-metadata.json, not encrypted |
| Notes and note folders | cme-notes-<n>.json, end-to-end encrypted | Not uploaded — they stay on your device |
| My Storage file list and folders, and the files themselves (only if My Storage is set to sync with Google Drive) | cme-files-<n>.json and cme__<id>, end-to-end encrypted | Not uploaded — they stay on your device |
| Secure Vault | cm-vault-<n>.json — always encrypted with your vault master password (the vault's own end-to-end encryption) | |
| Encryption key ring | cm-keyring.json: your data key, locked with your encryption password and with your recovery key; it contains no key in readable form | — |
| Storage markers | cm-protocol.json (storage version) and sync-metadata.json containing only the text "Update app to sync", which stops older app versions | — |
Turning end-to-end encryption on moves existing contracts, documents and settings into the encrypted files; the readable copies are deleted only after their encrypted replacements have been checked. Notes written with versions before 5.2 move into the encrypted notes and leave the settings. From then on the account never goes back to the readable format. Older versions of the App can no longer sync this account until they are updated. Android versions older than 4.3.3 may in some cases still upload a readable copy of their contracts and settings; the next sync of an updated device encrypts it again and removes it, and the App tells you to update the older device (Section 10.4).
Your encryption password and recovery key. Each of your devices asks for the encryption password once and then keeps the key. If you forget the password, the recovery key (shown once when you turn encryption on) lets you choose a new one. If you lose both and no device still holds the key, nobody — including us — can open the encrypted copies: you can only delete them and start over, and documents and files that existed only in Google Drive are then lost. On a device that holds the key you can change the password, create a new recovery key, or replace the key itself ("Change encryption key").
Disconnecting Google Drive ends the App's access and stops cloud sync. The backup stays in your Google Drive, and your other Drive files are never read, changed or deleted. Deleting the backup is a separate action ("Delete the Google Drive backup" in Settings → Storage & sync). If you delete your Contracts Manager account, the backup also stays in your Google Drive unless you choose to delete it in the same step (Section 14). Because the scrambling key includes your user ID, a backup left behind after deleting your account cannot be restored into a new account; an end-to-end encrypted backup can only be opened with your encryption password or recovery key. You can remove it at any time in Google Drive (Settings → Manage apps → Contracts Manager → Delete hidden app data). Neither action deletes your Google account.
Google Calendar reminders are optional. When you connect Google Calendar (Settings → Reminders, or Settings → Account & security),
you choose the Google account to use — it can be the same as for Google Drive or a different one, and it can differ from the account you
sign in with. The App uses the permission calendar.app.created (see Section 8), which only lets it work with calendars it
created itself:
Disconnecting Google Calendar stops the updates and ends the App's access. The "Contracts Manager" calendar and its events stay in your Google account unless you choose "Also remove the calendar and its events" when disconnecting; your other calendars and events are never touched. The same applies when you delete your Contracts Manager account (Section 14). Neither action deletes your Google account.
Your account record (email address, display name, profile photo URL for Google accounts, UID, sign-in method, email verification status
and account timestamps; for email accounts also your password in hashed form) is stored in our Firebase Authentication project
(contracts-manager-e82c5). Firebase is operated by Google and processes this data on our behalf, including the security
information described in Section 1.1 and the account e-mails described in Section 15.
As the Firebase project administrator, we have access to your email address, display name, sign-in method, verification status
and account metadata through the Firebase Console — never to your password. This data is used solely for account management,
account security and support purposes. No contract data is stored in Firebase.
If you connect Google Drive or Google Calendar, on the web or in the Android app, our backend keeps one
Firestore record for your account (googleTokens/{userId}) with a separate entry for each connected service,
so that each connection lasts without asking Google again. Each entry holds a Google refresh token encrypted with AES-256-GCM
using a key held only by our backend, the ID and email address of the Google account you chose for that service, the permissions granted,
the platform and connection timestamps. It contains no contract data. Apps and browsers cannot read it (Firestore security
rules deny all access); only our backend uses it, to hand short-lived access tokens to you while you are signed in to your Contracts Manager
account — after checking that the account still exists and, for email accounts, that its address is confirmed.
While a new email account confirms its address, our backend keeps a Firestore record for it (emailVerification/{userId}):
a keyed hash of the current 6-digit code (HMAC-SHA-256 with a key held only by our backend) — never the code
itself — plus a keyed hash of the address, when the code expires, the attempts left and when codes were sent. Separate records
(emailVerificationLimits) count recent codes and wrong entries per keyed hash of the email address and of the IP address, to
limit abuse. Apps and browsers cannot read these records (Firestore security rules deny all access). Only our backend can mark an address
as confirmed in Firebase Authentication, after the right code. The records are deleted automatically (Section 11).
When you disconnect a service, its entry is deleted and the access is revoked at Google, unless your other connected service uses the same Google account: Google can only revoke all of an account's permissions for the App at once, so in that case the access ends at Google when you disconnect the second service as well. When your Contracts Manager account is deleted — in the App or in any other way — the whole record is deleted and the access revoked automatically. Connections made with older versions of the App may instead use short-lived tokens on your device (in the Android app provided by Google Play services); disconnecting removes them from the App.
The App also uses Google Cloud Firestore (within the same Firebase project) to store EarnPoints leaderboard data. This data is only created if you voluntarily participate in the EarnPoints system and set a player nickname. Specifically:
earn-points-player-profiles/{userId} — stores your chosen nickname, anonymity preference, and point scores visible on the shared leaderboard.earn-points-player-names/{nickname} — stores reserved nicknames to enforce uniqueness across all users.This Firestore data is accessible by us as Firebase project administrators. It is used solely to power the shared leaderboard feature and is never used for advertising or profiling. You can delete your Firestore profile data by deleting your account via Settings.
We use Firebase Cloud Functions and Cloud Firestore as a secured backend for AI operations and AI points. The backend verifies Firebase Authentication, can verify Firebase App Check, enforces request-size and rate limits, deducts points transactionally, masks common identifiers where possible, and validates structured AI responses. We do not store the original uploaded file or full extracted document text in this backend. We store the final extraction result, point balance, point-usage history, request status, and limited security metadata needed to prevent abuse and support retries. Your saved contracts remain on your device or in your own Google Drive account.
Our use of Google APIs (Firebase Authentication, Google Drive) is managed through Google Cloud Platform. Google Cloud automatically records API usage metrics (such as request counts, error rates, and quota usage) in the Google Cloud Console. This is infrastructure-level monitoring provided by Google and does not contain your personal contract data. However, it may include aggregated usage statistics such as the number of API calls made by the App.
| Purpose | Data Used | Legal Basis (GDPR) |
|---|---|---|
| Provide core App functionality (manage contracts) | Contract data, settings | Contract performance (Art. 6(1)(b)) |
| Create your account and sign you in (email and password, or Google) | Email address, password (processed only by Firebase Authentication), display name, profile photo URL (Google), UID, sign-in method | Consent (Art. 6(1)(a)) — you choose to create an account or sign in |
| Confirm your email address, recover a forgotten password, change your password or email address | Email address (and the new address for a change), verification status, verification-code records (Section 3.4), password-reset and email-change requests | Contract performance (Art. 6(1)(b)) — account functions you request |
| Keep accounts secure (features that need an account require a confirmed email address; repeated attempts are limited; other sessions end after a password or email change) | UID, sign-in method, verification status, sign-in times; IP address and browser/device information processed by Firebase Authentication; keyed hashes of the email address and IP address to limit verification-code attempts | Legitimate interest (Art. 6(1)(f)) — protecting accounts and preventing abuse |
| Connect Google Drive or Google Calendar (optional) | ID and email address of the Google account you choose, encrypted refresh token, granted permissions | Consent (Art. 6(1)(a)) — you connect the service |
| E-mails from Contracts Manager (welcome e-mail; reminder and status e-mails if you turn them on) | Your account's confirmed email address and name; for reminders the contract title, amount and dates | Contract performance (Art. 6(1)(b)); optional reminder e-mails: consent (Art. 6(1)(a)) — you turn them on |
| Notes, Secure Vault and My Storage | The content you add (Section 1.3), stored on your device | Contract performance (Art. 6(1)(b)) |
| Cloud sync across devices | Contract data, attached documents, settings, notes, Secure Vault and My Storage (stored in your own Google Drive; end-to-end encrypted as described in Section 3.2) | Consent (Art. 6(1)(a)) — you opt in to sync |
| Google Calendar reminders (optional) | Contract names, deadline dates, reminder times and amounts, written to a calendar in your own Google account | Consent (Art. 6(1)(a)) — you turn it on |
| AI-powered contract analysis | Masked extracted text from uploaded documents (up to 24,000 characters) | Consent (Art. 6(1)(a)) — you initiate each analysis |
| Send contract reminders | Contract title, amount, end date | Contract performance (Art. 6(1)(b)) |
| Load application fonts | Your IP address (standard HTTP request to Google Fonts CDN) | Legitimate interest (Art. 6(1)(f)) |
The General Data Protection Regulation (GDPR) and UK GDPR require us to explain the valid legal bases we rely on to process your personal information. We may rely on the following legal bases:
If you are located in the EEA or UK and believe we are unlawfully processing your personal information, you have the right to complain to your Member State data protection authority or the UK data protection authority. If you are located in Switzerland, you may contact the Federal Data Protection and Information Commissioner.
If you are located in Canada, we may process your information if you have given us specific permission (express consent) to use your personal information for a specific purpose, or in situations where your permission can be inferred (implied consent). You can withdraw your consent at any time.
In some exceptional cases, we may be legally permitted under applicable law to process your information without your consent, including:
Signing in with Google
Creating an account with an email address
The App offers an optional AI-powered feature to analyze contract documents and extract key information.
| Property | Detail |
|---|---|
| AI Service Provider | Groq, Inc. (San Francisco, USA) |
| AI Model | A Groq-hosted structured-output model selected by our backend configuration |
| Data Sent | Up to 24,000 characters of extracted text after common identifiers are masked where possible |
| When Data Is Sent | Only when you initiate an analysis — never automatically |
| Authentication and Abuse Protection | Every paid AI request requires Firebase Authentication and a server-authoritative point balance. The backend also applies per-user, per-device, and per-IP rate limits. Firebase App Check can be enforced after deployment monitoring. |
| Response Validation | All AI-extracted fields are checked against a strict JSON schema and validated for type, allowed values, dates, amounts, confidence, and maximum length before being used in the App |
| Data Stored by Groq | Groq states that inference customer data is not retained by default, but inputs and outputs may be temporarily retained for system reliability or abuse investigations for up to 30 days unless Zero Data Retention is enabled. We recommend reviewing Groq's current data documentation for the most current information on their data retention practices. |
| What May Be Included in Text | Company names, contract terms, dates, amounts, and other unmasked information needed for extraction. Automated masking reduces exposure but cannot guarantee removal of every identifier. |
| User Notice | A privacy notice is displayed in the App before analysis is performed |
The App includes a contract cancellation assistance feature that uses a Groq-hosted AI model to generate draft cancellation email text based on your contract details (provider name, contract number).
The App features a points-based system called EarnPoints that allows users to earn AI scan credits and compete on a shared leaderboard.
Smart Import is optional. It helps you find the subscriptions and contracts you already have in your e-mail. Nothing it finds is added to your contracts until you approve it. Possible contracts you have not imported yet, and the ones you dismissed, are kept only on your device (not in our systems, not in cloud sync and not in the Android device backup). A contract you import remembers the mailbox and the e-mail (sender, subject, date) it came from, and the contact addresses and cancellation or account pages of the provider named in that e-mail, so the App can suggest where to cancel it; like all your contracts, this stays on your device and in your own sync and backups. Smart Import never asks for your Google or Microsoft password: you sign in on Google's or Microsoft's own page. You can connect several mailboxes and disconnect each of them at any time; contracts you imported stay.
| Source | What happens with your data |
|---|---|
| Gmail (Google) | Only if you connect it. The App requests read-only access (gmail.readonly) and searches your
mailbox for messages that are likely to be about contracts or subscriptions: right after you connect it, the messages of the
last 30 days (once); afterwards only messages received since the previous check. It never searches further back
than 30 days. It reads the headers of matching messages and the text of the likely ones directly from Google on your
device. Your e-mails and the access token do not pass through our servers and are not stored there; the token is kept in
memory for about one hour. Attachments are not downloaded. What is kept on your device for a possible contract: the sender,
subject, date and a short excerpt with bank, card and phone numbers and e-mail addresses removed. New messages are checked
automatically (you can switch this off for each mailbox): in the Android app every few hours, also while the App is closed
(the check runs on your phone, in an isolated part of the App without network or storage access of its own; Google gives
the App a short-lived token for it); on the web while the App is open, for as long as the access from your last connection
is valid (about one hour). When something new is found, a notification on your device tells you. On the web, "Disconnect"
asks Google to revoke the access; in the Android app, and at any time, you can remove it in your Google Account. |
| Outlook / Hotmail (Microsoft), when available in your version of the App | The same principle and the same 30-day limit through Microsoft Graph with read-only mail access (Mail.Read).
So that new messages can be checked automatically, the App also receives a refresh token (offline_access).
It is kept only on your device: in the Android app encrypted with a key held in the Android Keystore (and excluded from
device backups), in the browser only in memory until you close the tab. It never reaches our servers. Disconnecting deletes
it; you can also remove the permission in your Microsoft account. |
| Forwarded e-mails, when available | You can create a private, random forwarding address. E-mails sent to it are received by our e-mail processing provider (Cloudflare Email Routing) and our server (Netlify Functions). Only e-mails from your own addresses are accepted. The message is reduced to text; bank, card and phone numbers and e-mail addresses are masked; attachments are checked but not stored. The result is stored encrypted (AES-256-GCM) until your App fetches it, at most 14 days, and then deleted. A hash of each message ID is kept for up to 30 days so the same e-mail is not processed twice. You can turn the address off or replace it at any time; deleting your account deletes the address and all waiting e-mails. |
| Optional AI check | Only when you choose it, for the message you choose: a short excerpt of the message (at most 3,500 characters, with bank, card and phone numbers and e-mail addresses masked) is sent through our Firebase backend to Groq to read out the contract details (1 AI point per check). The answer only fills in or suggests values on your review screen. We do not store the text; only point and security metadata (such as counts and lengths) are recorded. Groq's handling is described in Section 7. |
Google user data (Gmail): Contracts Manager uses information received from Gmail only to show you possible contracts in the App at your request. It is not used for advertising, not sold, not used to train AI models, and not read by people. It is transferred to a third party (Groq) only when you choose the AI check for specific messages. Our use and transfer of information received from Google APIs adheres to the Google API Services User Data Policy, including the Limited Use requirements.
Smart Offer is optional and, when available in your version of the App, compares your internet and mobile contracts with current market offers. The comparison runs on your device. Your contracts are never sent to us or to any provider for it. To compare, the App downloads a public list of offers (product names, prices, speeds, terms) from our server (Netlify); the request contains no account or contract data. Like any request to a website, our hosting provider processes your IP address to deliver it.
The App integrates with the following third-party services:
| Service | Provider | Purpose | Data Shared |
|---|---|---|---|
| Firebase Authentication | Google LLC | Accounts: sign-in with an email address and password or with Google; e-mails to reset a password or confirm an email-address change | Email address, password (stored by Firebase only in hashed form), display name, profile photo URL (Google), sign-in method, verification status, IP address and browser/device information for security |
| Google Drive API | Google LLC | Cloud sync after Google Drive connection | Contract data, attached documents, settings, sync metadata, notes, Secure Vault and My Storage files — end-to-end encrypted once you turn encryption on (notes and My Storage only ever this way, the Secure Vault always with its own encryption), otherwise contracts and settings scrambled with an app key (Section 3.2) — stored in your own Google Drive |
| Google Calendar API | Google LLC | Deadline and reminder events (optional, when you turn on Calendar reminders) | Contract names, deadline dates, reminder times and amounts — stored in a "Contracts Manager" calendar in your own Google account |
| Google OAuth 2.0 | Google LLC | Authorization for the optional Google Drive and Google Calendar connections, each with a Google account you choose | Standard OAuth exchange; the ID and email address of the chosen Google account |
| Groq API | Groq, Inc. | AI contract text analysis (optional, user-initiated) | Up to 24,000 characters of extracted text after common identifiers are masked where possible. Groq's current retention terms apply. |
| Firebase Cloud Functions & Firestore | Google LLC | Authenticated AI processing, point ledger, rate limiting, request status, and final extraction result; Google Drive / Google Calendar connection records (Section 3.4) and their clean-up when an account is deleted; verification codes for new email accounts (Section 3.4) | Firebase identity, masked extracted text during processing, final extraction result, point usage, and limited abuse-prevention metadata; encrypted Google refresh tokens with the ID and email address of the connected Google account; keyed hashes of verification codes, email addresses and IP addresses |
| Google Cloud Firestore | Google LLC | EarnPoints shared leaderboard (optional, if you set a nickname) | Player nickname, point score, anonymity preference, Firebase UID (as document key) |
| Netlify | Netlify, Inc. | Hosts the web application and our server functions (e-mails from Contracts Manager, e-mail import, provider lookups) | Your IP address and standard HTTP request metadata (handled by Netlify infrastructure); for e-mails the data listed in the next row; send times per account ID to enforce sending limits |
| E-mail delivery (SMTP) | Our e-mail service provider | Delivering e-mails from Contracts Manager (verification codes for new email accounts; welcome e-mail; reminder and status e-mails if you turn them on) | Your account's email address and name, and the contract details contained in the e-mail; a verification e-mail contains only the code |
| Google Fonts CDN | Google LLC | Loading application fonts | Your IP address (standard HTTP request) |
| jsDelivr / unpkg CDN | jsDelivr / unpkg | Downloading OCR language model (on first use of document scanning) | Your IP address (standard HTTP request) |
The App asks Google for different permissions for different purposes, each only when you start that action:
openid, email and profile (standard Firebase Authentication scopes) — your Google identity only. Signing in does not grant access to Google Drive, Google Calendar or Gmail.https://www.googleapis.com/auth/drive.appdata, plus openid and email so the App can show which Google account is connected — access only to the hidden, app-specific folder in that account's Google Drive. The App cannot access your regular Google Drive files.https://www.googleapis.com/auth/calendar.app.created, plus openid and email — lets the App create its own "Contracts Manager" calendar and manage the events in it. The App cannot read or change your other calendars or events.https://www.googleapis.com/auth/gmail.readonly — requested only when you connect Gmail in Smart Import, through a separate authorization. Read-only: the App cannot send, change or delete e-mails. See Section 7c.Our use of information received from Google APIs adheres to the Google API Services User Data Policy, including the Limited Use requirements.
The App offers you the ability to register and log in using your Google account, as an alternative to an account with an email address and password. Where you choose to do this, we receive certain profile information from Google, specifically: your name, email address, and profile picture. We do not receive your friends list, contacts, or any other social information. Signing in with Google identifies you only: connecting Google Drive or Google Calendar is a separate, optional step with its own Google permission request, for a Google account of your choice (Section 6.2).
We will use the information we receive only for the purposes described in this Privacy Policy. We do not control, and are not responsible for, other uses of your personal information by Google. We recommend that you review Google's Privacy Policy to understand how they collect, use, and share your personal information.
The App may contain links to third-party websites or services that are not operated by us. We are not responsible for the privacy practices of any third-party websites. We encourage you to review the privacy policies of any third-party services you access through the App.
We may share or transfer your information in connection with, or during negotiations of, any merger, sale of company assets, financing, or acquisition of all or a portion of our business to another company. If such a transfer occurs, the acquiring party will be bound by the terms of this Privacy Policy.
The App uses one functional cookie:
| Cookie Name | Purpose | Duration | Type |
|---|---|---|---|
sidebar_state |
Remembers whether the sidebar is open or closed (stores true or false) |
7 days | Strictly necessary / Functional (first-party) |
The App does not use any tracking, advertising, or third-party cookies.
The App does not use any analytics or tracking services. Specifically:
The App does not use external crash reporting services (no Sentry, Crashlytics, or similar). Application errors are logged locally on your device for debugging purposes only and are never transmitted to any external server. Sensitive data (such as contract text content and AI responses) is not included in any local diagnostic logs.
Most web browsers and some mobile operating systems include a Do-Not-Track ("DNT") feature or setting you can activate to signal your privacy preference not to have data about your online browsing activities monitored and collected. Since the App does not use any analytics, tracking, advertising, or profiling technologies, DNT signals have no practical effect on how the App operates — we do not track you regardless of whether DNT is enabled.
We want you to know what encryption can and cannot do:
If you are located in the EEA, UK, or Switzerland, you have the following rights under applicable data protection laws:
| Right | How to Exercise |
|---|---|
| Right of Access (Art. 15) | All your data is stored locally on your device and visible within the App. You can also view your cloud data by syncing. |
| Right to Rectification (Art. 16) | You can edit any contract or setting directly within the App. For an email account you can change your email address and password in Settings → Account & security. |
| Right to Erasure (Art. 17) | You can delete individual contracts, notes, Secure Vault entries and My Storage files within the App, and delete the Secure Vault as a whole. You can delete the Google Drive backup via Settings → Storage & sync → "Delete the Google Drive backup". You can delete your account via Settings → Account & security → "Delete Contracts Manager account" (see Section 14). You can clear all local data by clearing the App's browser/app storage. |
| Right to Data Portability (Art. 20) | You can export your contracts, documents, settings, notes and Secure Vault (which stays encrypted with its master password) as a backup file (.zip), protected with a password or — after confirming — without; your contracts as a PDF report; and your My Storage files as a ZIP of the original files. |
| Right to Restrict Processing (Art. 18) | You can use the App in guest mode without signing in. You can stop cloud sync by signing out or disconnecting Google Drive, and stop Calendar reminders by disconnecting Google Calendar. AI analysis is always optional. |
| Right to Withdraw Consent (Art. 7(3)) | You can sign out at any time. You can disconnect Google Drive or Google Calendar at any time, each on its own. You can choose not to use AI analysis. |
| Right to Object (Art. 21) | Contact us using the details below. |
If you are a resident of California, Colorado, Connecticut, Delaware, Florida, Indiana, Iowa, Kentucky, Maryland, Minnesota, Montana, Nebraska, New Hampshire, New Jersey, Oregon, Rhode Island, Tennessee, Texas, Utah, Virginia, or other US states with privacy laws, you may have additional rights regarding your personal information.
| Category | Examples | Collected? |
|---|---|---|
| A. Identifiers | Email address, display name, unique user ID, IP address | Yes |
| B. Personal information (California Customer Records) | Name, email address | Yes |
| C. Protected classifications | Race, gender, age, etc. | No |
| D. Commercial information | Purchase history, payment information | No |
| E. Biometric information | Fingerprints, voiceprints | No |
| F. Internet or network activity | Browsing history, search history | No |
| G. Geolocation data | Device location | No |
| H. Audio, electronic, sensory data | Images, audio recordings | No |
| I. Professional or employment information | Job title, work history | No |
| J. Education information | Student records | No |
| K. Inferences from collected data | Profiles or predictions about preferences | No |
| L. Sensitive personal information | Account log-in credentials; health, race, religion, sexual orientation, etc. | Only account log-in credentials (email address and password of email accounts), used only to sign you in. The password is handled by Firebase Authentication and never visible to us. |
We retain collected personal information (Categories A and B) for as long as you have an account with us.
Depending on your state of residence, you may have the right to:
To exercise these rights, you can contact us at info@contracts-manager.eu or by submitting a data subject access request. We will verify your identity before processing your request by matching information you provide against the information we hold.
California Civil Code Section 1798.83 ("Shine The Light") permits California residents to request information about personal information disclosed to third parties for direct marketing purposes. We do not disclose personal information to third parties for direct marketing purposes.
If we decline to take action regarding your request, you may appeal our decision by emailing us at info@contracts-manager.eu. We will inform you in writing of any action taken or not taken in response to the appeal. If your appeal is denied, you may submit a complaint to your state attorney general.
| Action | What Is Deleted | Permanent? |
|---|---|---|
| Delete individual contract | Contract record, associated reminders, and status tracking from local storage | Yes (locally). Reflected in cloud on next sync. |
| Delete a note, or a file in My Storage | Moves it to the trash; after 30 days, or with "Delete forever", it is removed from this device and, with sync, from Google Drive and your other devices | Yes, after the trash period. |
| Delete a Secure Vault entry, or the whole Secure Vault | The entry (or the vault) on this device and, with sync, in Google Drive and on your other devices | Yes. |
| Delete the Google Drive backup (Settings → Storage & sync) | All files in your Google Drive app folder (contracts, documents, settings, notes, Secure Vault, My Storage, the encryption key ring, sync metadata); for an account that used end-to-end encryption, two small marker files without personal data stay (Section 11); Google Drive is then disconnected | Yes. Local data is not affected. Your other Drive files are never touched. |
| Start over with new end-to-end encryption ("I have neither the password nor the recovery key") | The key ring and every end-to-end encrypted copy in your Google Drive. What is stored on your devices is kept and uploaded again under a new password; documents and files that existed only in Google Drive are lost. The Secure Vault is not affected. | Yes. |
| Reset the app on this device (Settings → Storage & sync) | All contracts, documents, notes, Secure Vault, My Storage files, settings and encryption keys on this device | Yes, on this device. Google Drive is not affected; the App shows first which notes and files exist only on this device. |
| Delete Contracts Manager account (Settings → Account & security) | Your Firebase Authentication account (you can no longer sign in with it), AI points data and usage history, leaderboard profile and entries, your e-mail import forwarding address and waiting e-mails, the e-mail import connections on this device (Gmail access is revoked where possible), Smart Offer history on this device, and the Google connection record (Section 3.4) with its access revoked at Google, so the App can no longer use Google Drive or Google Calendar | Yes. Your Google account, your Google Drive files and your Google calendars and events are not deleted. Contracts on your device stay until you also reset the App. |
| Optional, when deleting your account | Only if you tick these options in the same step: the Contracts Manager backup in your Google Drive, and the "Contracts Manager" calendar with its events | Yes. Both options are off by default; nothing else in your Google account is deleted. |
| Sign Out | Authentication session and OAuth tokens from local storage | Your data remains on device and in cloud. |
| Disconnect Google Drive | Local sync state and the Drive entry of the Google connection record, with the access revoked at Google unless Google Calendar uses the same Google account | The backup remains in your Google Drive until you delete it. Google Calendar stays connected. |
| Disconnect Google Calendar | The Calendar entry of the Google connection record, with the access revoked at Google unless Google Drive uses the same Google account; the calendar is no longer updated | The "Contracts Manager" calendar remains unless you choose "Also remove the calendar and its events". Google Drive stays connected. |
| Clear App Data (browser/OS) | All local storage, session storage, cookies, and cached data | Yes for local data. Cloud data is not affected. |
Deleting your Contracts Manager account requires you to confirm that it's you (your password, or Google for Google accounts). If an account is deleted in any other way (for example by us at your request), our backend automatically revokes and removes its Google connections and deletes its AI points and leaderboard data. Afterwards, no device can use the account's Google Drive or Google Calendar access any more.
The App is not directed at children under the age of 16. We do not knowingly collect personal data from children. If you believe a child has provided personal data through the App, please contact us and we will take steps to delete that information.
The Android version of the App requests the following permissions:
| Permission | Purpose |
|---|---|
| Internet, Network state | Required for authentication, cloud sync, and AI analysis; the network state lets the App wait while you are offline |
| Storage (Read/Write, only on Android 12 and older) | Import and export contract files and backups |
| Post Notifications | Deliver local contract reminder notifications (Android 13+) |
| Vibrate | Haptic feedback for notifications |
| Schedule Exact Alarm, Use Exact Alarm | Schedule precise contract reminder notifications |
| Receive Boot Completed | Re-schedule reminder notifications after device restart |
| Wake Lock, Foreground Service | Let short background tasks (Android's WorkManager, for example scheduled checks) finish reliably |
| Use Credentials | Google sign-in on Android through Google Play services |
| Use Biometric / Use Fingerprint | Optional fingerprint or face unlock of the Secure Vault. The check is done by Android; the App never receives biometric data |
The App does not request access to your location, camera, microphone, contacts, or phone.
Your data may be processed outside your country of residence through the following services:
These services may process data in the United States or other countries. We rely on these providers' compliance with applicable data protection regulations, including appropriate safeguards for international data transfers as required by the GDPR.
We may update this Privacy Policy from time to time. The updated version will be indicated by an updated "Last Updated" date at the top of this page. If we make material changes, we may notify you by prominently posting a notice within the App. We encourage you to review this policy periodically for any changes. Continued use of the App after changes are posted constitutes acceptance of the updated policy.
If you have questions about this Privacy Policy or wish to exercise your data protection rights, please contact us:
You also have the right to lodge a complaint with your local data protection supervisory authority if you believe your data has been processed in violation of the GDPR.
Based on the applicable laws of your country or state of residence, you may have the right to request access to the personal information we collect from you, details about how we have processed it, correct inaccuracies, or delete your personal information. You may also have the right to withdraw your consent to our processing of your personal information.
To review, update, or delete your personal information, you can: