Privacy Policy — Tracc
This policy explains what data Tracc collects, why, where it lives, and the choices you have. We've tried to write it in plain English. If anything is unclear, email kartikkhandelwal95@gmail.com or anuragsarda956@gmail.com and we'll explain.
A note on the name. Tracc was previously known as CashFlowVoice. The home-screen icon, store listing, and all in-app branding now say "Tracc". Some legacy technical identifiers retain the old name for backward compatibility (the Android package name
com.cashflowvoice.appand the Firebase project IDcashflow-voice-kart) — renaming either would orphan existing users' data. They refer to the same app this policy describes.
1. The 30-second summary
- Tracc is a personal expense tracker. You can use it without an account, in which case your transactions stay on your device.
- If you choose to sign in, your data is synced to your private Google Firebase account so you can use Tracc across devices.
- We use third-party services (Google Firebase for sign-in and sync, Groq for voice and image AI, PostHog for anonymous analytics, Vercel for hosting, and an exchange-rate API for currency conversion). Each is named below with a link to their policy.
- We do not sell your data. We do not show ads. We do not use your transaction text to train AI models.
- You can delete your data at any time from Settings, or by emailing the addresses above.
2. Who runs Tracc
Tracc is operated by Kartik Khandelwal and Anurag Sarda, two independent developers based in India.
Contact for privacy questions or data deletion requests: kartikkhandelwal95@gmail.com or anuragsarda956@gmail.com
3. What data we collect, and when
We collect different categories of data depending on which features you use. We collect the minimum needed for each feature to work.
3.1 If you use Tracc without signing in
- Your transactions — amount, category, description, date, wallet, tags. Stored only on your device (in your browser's local storage and IndexedDB on web; in Capacitor Preferences and the app's sandboxed storage on Android/iOS).
- App settings — voice language preference, dark mode choice, tutorial completion state.
- Anonymous analytics — see Section 3.3.
We do not have access to any of the above. None of it leaves your device unless you turn on a feature that explicitly sends data out (voice transcription, image scanning, sign-in).
3.2 If you sign in
When you create an account or sign in (email and password — Tracc does not currently offer Google or other social sign-in), we collect:
- Email address — used as your account identifier and for transactional emails (e.g. data-deletion confirmations).
- First name and last name — required at sign-up. Mirrored into Firebase Authentication's built-in
displayNamefield as "First Last" and stored on your private Firestore document (users/{uid}/meta/info). Used to identify your account and personalize the in-app experience (e.g. greeting you by first name). If you signed up before this field became mandatory (April 2026), you'll be asked once on your next sign-in to provide a name before continuing. - A unique account ID — generated by Firebase Authentication.
When sign-in is active, we additionally sync the following to your private Google Firestore document, scoped to your account ID:
- All transactions you create (amount, category, description, date, wallet, tags).
- Wallets, recurring rules, budget limits, custom tags, deleted-transaction markers.
- Sync timestamps and device identifiers (used to detect cross-device conflicts).
This data is private to you. We do not read it. We do not use it for analytics, training, or any purpose other than syncing your devices and powering features you've enabled (Insights, Sharing).
3.3 Anonymous usage analytics (PostHog)
We use PostHog to understand how Tracc is used in aggregate (which features are popular, where users get stuck, which tutorials get completed). PostHog collects:
- Anonymous device-level information: OS, browser version, screen size, language.
- Events when you take an action (e.g., "transaction added", "tutorial step viewed", "tab switched").
- A randomly-generated anonymous identifier so we can count distinct users without knowing who they are.
PostHog does not receive your transaction details, amounts, descriptions, voice recordings, or images. We've explicitly disabled PostHog's autocapture and masked all input fields in session replays so financial values are never recorded. Where we surface a transaction count or category in an event, it's the aggregate count, not the contents.
If you sign in, your PostHog anonymous ID is associated with your Tracc account ID so we can measure feature usage per logged-in user — but we still don't send PostHog your transaction contents.
3.4 Voice transcription (Groq)
When you tap the microphone and speak a transaction, the audio recording is sent to Groq for speech-to-text transcription. The transcribed text is then sent back through Groq for AI categorization (e.g., classifying "₹120 lunch" into the Food category).
- The audio leaves your device and is sent through our backend proxy (
/api/groq-proxyon Vercel) which forwards it to Groq. The proxy adds authentication and rate-limiting headers but does not store the audio or any payload contents. - Groq's handling of the audio is governed by Groq's privacy policy. At the time of writing, Groq states that API requests are not used to train their models. We do not have visibility into Groq's transient processing or operational logs.
- The categorization step sends only the transcribed text — not your account ID, email, or full transaction history.
- You can avoid voice entirely by typing transactions manually or photographing receipts.
3.5 Receipt scanning (Groq)
When you photograph a receipt or pick one from your gallery, the image is sent to Groq (via the same /api/groq-proxy Vercel endpoint) for OCR and field extraction (amount, date, merchant).
- Same handling as voice: the proxy does not log payload contents; Groq's policy governs their side.
- We send only the image, not your account details or existing transaction history.
- You can avoid this by entering transactions manually.
3.6 Sharing transactions with friends (signed-in users only)
If you use the "Share Transactions" feature, the transactions you select are written to a temporary, scoped document in Firestore that the recipient can pull from. When the recipient imports the share, the source document is automatically deleted in the same atomic Firestore commit as the import-completion update — there's no separate cleanup step that could leave orphans (verified in sharing/transaction-share.js). Firestore security rules prevent any user other than the named sender and recipient from reading the share document while it exists.
3.7 AI Behavioral Insights (signed-in users only)
If you sign in, Tracc can generate behavioral insights (spending pattern detection, overrun warnings, savings nudges) on demand. The flow is:
- Your browser builds a prompt summarising your own transactions for the selected period.
- The prompt is sent through our
/api/groq-proxyVercel endpoint to Groq's LLM, which returns the analysis. - The insights are cached in your private Firestore document so subsequent views don't re-query Groq.
We do not run this analysis on our own servers — Vercel only proxies the call to Groq with auth and rate-limiting; the actual processing is done by Groq's models. Your transaction text is included in the prompt sent to Groq; per Groq's policy, API content is not used to train their models. Insights are generated only when you explicitly view the Insights tab, never in the background.
3.8 Push notifications
If you opt in, Tracc may send you reminders to log transactions. We use Firebase Cloud Messaging to deliver these. Notification content is generated on your device — we don't include transaction details in push payloads.
3.9 Currency conversion (exchange-rate API)
If you log a transaction in a currency other than your base currency, Tracc converts the amount using live exchange rates fetched from ExchangeRate-API (api.exchangerate-api.com). To do this:
- Your device requests the latest rate table for a currency by sending only the three-letter currency code (e.g.
USD) in the request URL. - We do not send the transaction amount, description, your account ID, email, or any other personal or financial detail — the conversion itself happens on your device after the rates come back.
- The request is governed by ExchangeRate-API's terms and privacy policy.
- If you only ever use your base currency, no request is made.
4. What data we do NOT collect
To be explicit:
- We do not access your contacts, calendar, location, or other apps.
- We do not collect your phone number or address.
- We do not collect SMS messages, even though some Indian expense apps do.
- We do not access your bank or UPI accounts directly.
- We do not collect biometric data.
- We do not show ads, and we don't have advertising trackers.
5. Where your data is stored
| Data | Location |
|---|---|
| Local transactions (no sign-in) | Your device only |
| Synced transactions (signed-in) | Google Firestore in the project's default GCP region (set when the Firebase project was created and immutable thereafter — Firebase project: cashflow-voice-kart). Google-managed; encrypted at rest. |
| Account email + sign-in | Google Firebase Authentication |
| Voice / image AI processing | Groq's servers (US) — transient, not stored by us |
| Anonymous usage events | PostHog (US) |
| API responses (AI categorization) | Vercel edge / serverless (US/EU) — not retained |
| Currency exchange rates | ExchangeRate-API — only a currency code is sent; no personal or financial data |
All data in transit between your device and any of these services is encrypted with TLS. Data at rest in Firestore is encrypted by Google.
6. Third-party services we use
Each of these has its own privacy policy. By using Tracc you also agree to their terms.
- Google Firebase (Authentication, Firestore, Cloud Messaging) — policy
- Groq (voice transcription, AI categorization, receipt OCR) — policy
- PostHog (anonymous analytics) — policy
- Vercel (hosting and API proxy) — policy
- ExchangeRate-API (currency conversion — receives only a currency code, no personal data) — terms & policy
We don't share your data with anyone other than these processors, and only the minimum needed for each to do its job.
7. Your choices and controls
7.1 Use Tracc without an account
You can use the full local-only experience indefinitely. No sign-up required.
7.2 Stop syncing
If you signed in and want to stop syncing, sign out from Settings → Account. Your local data stays on your device. Cloud copies remain in your Firestore document until you delete them (next section).
7.3 Delete your data
- Local data — clear the app's storage (Android: Settings → Apps → Tracc → Clear Storage; iOS: delete and reinstall the app; web: clear site data in your browser).
- Cloud data (signed-in users) — email kartikkhandelwal95@gmail.com or anuragsarda956@gmail.com from your registered email and we'll delete your Firestore document and Firebase Auth record within 7 days. We'll confirm by reply. Step-by-step instructions are on our account deletion page.
7.4 Opt out of analytics
PostHog respects the browser's "Do Not Track" header — enable it in your browser/system settings and analytics events stop firing. You can also block the PostHog domain (us.i.posthog.com) at the network or DNS level. An in-app opt-out toggle is on our roadmap; until then, the Do-Not-Track and network-level options above are the available controls.
7.5 Revoke microphone, camera, or notification permissions
You can revoke any permission Tracc requested via your device's settings. The corresponding feature will simply stop working.
8. Data retention
- Local data — retained until you delete it.
- Cloud data (signed-in) — retained while your account is active. Deleted within 7 days of a deletion request.
- Voice recordings — not retained on our infrastructure (the Groq proxy does not log payloads). Groq's own retention is governed by their policy.
- Receipt images — same as voice: not retained on our side; Groq's policy governs their handling.
- Anonymous analytics — PostHog retains aggregate event data for up to 7 years for trend analysis. Individual events older than 1 year are not used for any per-user purpose.
- Crash logs (if any are reported to us) — retained for 90 days.
9. Children's privacy
Tracc is not directed at children under 13. We do not knowingly collect data from children. If you believe a child has used Tracc and provided personal data, email us and we'll delete it.
10. Security
We rely on Google's and our other processors' security infrastructure. In addition:
- All network traffic uses TLS.
- Firestore documents are scoped per user — your account ID is part of the document path, and Firebase security rules prevent any other user from reading or writing your data.
- We never see your account passwords — Firebase handles them.
- Voice and image AI calls go through our Vercel proxy, which forwards them to Groq. The proxy does not log payload contents.
That said, no system is 100% secure. If we discover a breach that affects your data, we'll notify affected users by email within 72 hours of confirming the incident.
11. International users
Tracc is built in India. If you use it from outside India, your data may be processed in countries that have different data-protection laws than yours (commonly: India, the United States, the European Union, depending on which third-party processor handles a given operation). By using Tracc, you consent to this transfer.
If you're in the EU/UK and want to exercise your GDPR rights (access, rectification, erasure, objection, portability), email kartikkhandelwal95@gmail.com or anuragsarda956@gmail.com.
If you're in California, you have similar rights under CCPA — same email.
If you're in India, you have rights under DPDPA 2023 (access, correction, erasure, grievance redressal). Same email.
12. Changes to this policy
We may update this policy when Tracc adds new features or changes data flows. The "Last updated" date at the top will reflect the most recent change. Material changes will be announced in-app.
If you keep using Tracc after a policy update, you accept the new policy. If you don't, you can stop using it and request data deletion.
13. Contact
For any privacy question, data deletion request, complaint, or grievance, you can reach either of us:
- Kartik Khandelwal — kartikkhandelwal95@gmail.com
- Anurag Sarda — anuragsarda956@gmail.com
We aim to respond within 7 days.