Last updated: 31 May 2026
To provide the Tab expense tracking service, we collect:
We do not sell your data. We do not use your transaction data for advertising.
Parsed transaction records are stored in Tab's secure database (Supabase) to power all features — the bot, dashboard, budgets, bill splits, and spending insights.
Every transaction is also mirrored to a Google Sheet in your own Google Drive. You own that sheet and can edit, export, or delete it at any time. Disconnecting from Tab does not delete the sheet.
Your Google OAuth refresh token, Telegram ID, Google Sheets ID, and account metadata are also stored in Supabase, used solely to operate the service on your behalf.
When a bank email is not recognised by our built-in rules, we may store an anonymised email-format template — the structure of the email with amounts, names, card numbers, references, and other personal and financial details removed — in a shared corpus. These templates carry no identifier linking them to you, and are used solely to improve how accurately Tab detects transactions for everyone.
We request the following Google OAuth scopes:
gmail.readonly — read your Gmail messages (used only to detect bank emails).spreadsheets — read and write to your Google Sheet.Tab's use of Google APIs complies with the Google API Services User Data Policy, including the Limited Use requirements.
To run the service, we share limited data with the following processors:
We use PostHog for our own product analytics, as described above. We do not share your data with advertisers or data brokers, and we do not sell your data.
You can disconnect Tab at any time from the Settings page. Disconnecting revokes our OAuth access and deletes your stored refresh token and Telegram link. It does not delete your transaction records from Tab's database.
To delete your stored transaction records from Tab's database, run /cleardata in the Telegram bot. This also clears the mirrored Sheet rows.
Your Google Sheet remains in your Google Drive and is not affected by disconnecting. You can delete it yourself at any time from Google Drive.
OAuth refresh tokens are stored encrypted at rest in Supabase. We use HTTPS for all data in transit. We do not store the full or raw body of your emails. When an email is not recognised by our built-in rules, we may retain an anonymised structural template of it (see section 3) — with all personal and financial details removed — and otherwise discard the message.
If you have opted in to telemetry, and an email is handled by our AI fallback, we record only the sender's email domain (e.g. notify.ocbc.com) and whether parsing succeeded — never any email content, subject line, or transaction details.
Most bank emails are read by built-in pattern rules on our own servers. When an email is not recognised, its text is sent to Groq, an AI inference provider, which returns the extracted fields. Transaction details are also sent to Groq to generate the short, cheeky spending messages shown in Telegram.
We instruct our AI processor not to retain this data to train its models, and we do not use your data to build or improve general-purpose AI. Automated parsing can make mistakes — always verify figures against your official bank statements.
If you use bill-splitting, you may enter other people's names, Telegram handles, PayNow handle or the amounts they owe. You are responsible for ensuring you are allowed to share that information with us. We use it only to record and settle the split you created, and the other person can ask us to remove it.
Our service providers (Google, Supabase, Groq, Railway, Telegram) may process data outside Singapore, including in the United States. Where personal data is transferred overseas, we take steps intended to ensure it receives a standard of protection comparable to that required under Singapore's Personal Data Protection Act (PDPA).
You may request access to, or correction of, the personal data we hold about you, and you may withdraw your consent at any time by disconnecting (section 6). To make a request, contact our Data Protection Officer (section 14). We will respond within a reasonable time as required by the PDPA.
If a data breach occurs that is likely to result in significant harm to you, or that meets the notification threshold under the PDPA, we will notify the Personal Data Protection Commission and affected users as required by law.
Tab is intended for users aged 18 and over and is not directed at children. We do not knowingly collect data from children.
If we make material changes, we will notify you via Telegram or email before the changes take effect.
Our Data Protection Officer can be reached at joshualawbh@gmail.com for any privacy questions, access/correction requests, or to withdraw consent. You can also reach us on Telegram: the Tab bot on Telegram.
Tab · Built for Singapore · Terms of Service