Nothing BOT

Privacy Policy

Effective 26 October 2026 · Updated 27 October 2026

Nothing BOT is a small family of open-source tools for open-mic comedy, made by Amrit Dash. This one policy covers all three:

They share one sign-in (your Google account), one database project and the same self-hosted server, so what we store about you is described together. The apps are hosted at nothingbotcurate.web.app, nothingbotcomedy.web.app and their matching nothing-bot-, nothingbut- and nothing-but- addresses. The source code is public at github.com/amrit-contour/spot-solutions, so every statement here can be checked.

Who this applies to

What we collect and why

DataWhyWhere it lives
Your Google account name, email address and profile photoTo sign you in and decide who may use the app (access is invite-only)Firebase Authentication and Cloud Firestore
Your WhatsApp phone number and display name (both apps)To show which WhatsApp account is linkedCloud Firestore
Nothing BOT Curate: messages that are spot requests, cancellations or questions about your shows, plus the sender's name and phone number. This includes spot requests found when you run "Scan past messages" over your recent DMsSo you can review requests, build lineups and replyCloud Firestore
Nothing BOT Curate: your roster of comics, shows, venues, lineups, message templates and settingsThe core function of the appCloud Firestore
Your WhatsApp Web login session, encryptedSo another of your servers can take over without a new QR scanOn the server computer(s) you run, and an encrypted copy (AES-256-GCM, a separate key per account) in Google Cloud Storage
Nothing BOT Comedy: the WhatsApp groups you choose to watch (name and group id)So only those groups are read for spot alertsCloud Firestore
Nothing BOT Comedy: spot alerts made from watched groups (the offer, closure, schedule or opening notice parsed into fields such as room, date, time and who posted, plus a short quote of the message)To show you alerts, send a push notification and keep your rooms up to dateCloud Firestore. Alerts expire and are cleaned up; the chat itself is never stored
Nothing BOT Comedy: your rooms and their shows, times, ask rules and limits, and the curators you list for each room (name, phone number, Instagram handle if you enter one)The core function of Comedy: knowing where and who to askCloud Firestore
Nothing BOT Comedy: asks (the drafted and sent message, which room and date, its status) and the curator's reply that was read, as a short quote plus what it meant (got it, declined, unclear)To send your asks and tell you what the curator answeredCloud Firestore
Nothing BOT Comedy: My spots, regular spots, notes, ratings and set listsTo keep your own calendar and history of spotsCloud Firestore, readable only by you
Nothing BOT Comedy: community rosters you publish or follow, suggestions, co-maintainers, rosters shared with youTo share a room roster with other comics (see "Community rosters" below)Cloud Firestore
Nothing BOT Server: the server's name, status and last-seen time, which account it runs and the connection state of your WhatsAppTo show whether your WhatsApp is connected and which server runs itCloud Firestore
Nothing BOT Curate: contacts you choose to import (from WhatsApp, a file, or a group)To add comics to your rosterCloud Firestore
Push notification tokens for your devices, marked with which app (Curate or Comedy) registered themTo send you alerts you turned onCloud Firestore
If you turn on "Your voice": a short description of how you write and up to 15 messages you sent, picked as examplesSo messages to comics are written the way you writeCloud Firestore. You can read, edit or remove them in Settings → Messages
If you press "Keep connected" for Google Contacts: a long-lived Google access token (a "refresh token"), stored encrypted, and the email address of the Google account you connected with, plus the dateSo names can be saved to your Google Contacts when you add or rename a comic, even when the app is closedCloud Firestore (asia-south1), in documents no app user can read or write. The token is encrypted (AES-256-GCM) with a key held in Google Cloud Secret Manager. Only the email and date are shown back to you
An optional Gemini API key you addTo use Google's Gemini models if you allow themCloud Firestore, readable only by the server

In Curate, messages that are not spot requests or related to your shows (personal chats, bank alerts, OTPs and so on) are read only to decide that they are not relevant, and are not stored. Chats from before you linked WhatsApp are only read when you run "Scan past messages" yourself. That scan runs on your own server, sends nothing to anyone, and messages that are not spot requests are not stored.

Firestore and Cloud Storage data is hosted by Google Cloud in the asia-south1 (Mumbai) region.

How messages are processed by AI

Where there is a choice, the app first tries plain rules, and uses a model only when the rules are unsure. By default the model is an open-weight Gemma model running on your own computer through Ollama. No cloud AI service sees your messages.

If you add a Gemini API key and choose "Local first, Gemini as backup", then when the local model is unavailable, the text being read may be sent to Google's Gemini API. That is only the text of the one message being read (a group message in Comedy, a request in Curate), a curator's reply to your ask together with the ask's room, date and time, or, for "Your voice", the sample messages being summarised. Whole chats are not sent. Google handles it under its Gemini API terms. If you choose "Local only", nothing is ever sent to a cloud model.

Your messages are not used to train AI models by us.

Your voice (both apps)

"Your voice" is off until you choose "Learn my voice". It then reads only messages you sent. You choose which chats: by default your recent WhatsApp DMs and the groups linked to your shows, or only the chats you pick (the list of your chats is fetched by name from your own server when you open the picker and is not stored; only the ones you tick are saved). Messages from other people are never read for this. Phone numbers and links are removed, and the model writes a short description of your style and picks up to 15 of your messages as examples. Only that description and those examples are stored; the chats themselves are not. The AI model that does this follows your AI models setting: on "Local only" nothing leaves your server.

When it's on, each message to a comic is drafted from the show details, your description and examples, and your own template. A draft that changes or drops a date, time, venue or link is discarded and your template is sent instead. You can switch it off, edit the description, or remove examples at any time.

Messages page (Curate)

The Messages page lets you read and answer your comics' WhatsApp chats inside the app. Chats are fetched on demand from your own server, which reads them from your own WhatsApp when you open the page or a chat, and are never written to our database. The only trace is the short-lived result of that request, which is readable only by you, is deleted by the app as soon as it has been shown, and carries an expiry so Firestore removes it within about a day even if the app is closed first. Only people on your Comics list are listed; personal chats and groups are never opened. A message you send from here is sent the same way as any other reply, from your own WhatsApp.

"Summarise this chat" asks the AI model you chose in AI models (local by default; on "Local only" nothing leaves your server) to read the latest messages of that one chat. It only suggests: nothing is sent or changed until you click, and each suggested change must quote your chat. The summary is shown to you and is not saved.

Google Contacts (Curate)

If you turn on "Save names to Google Contacts", the app asks Google for permission to manage your contacts (https://www.googleapis.com/auth/contacts). It uses that permission only to:

It never deletes contacts and never changes anything other than names and phone numbers. Bulk changes (for example "Sync all comics now") are shown to you for confirmation first, and an import of many comics at once is never saved automatically.

There are two ways to connect:

In both cases your Google contact list is not copied to our database. When names are saved from the server, the list of your contacts' phone numbers and names is read into the function's memory for the few seconds it takes to match numbers and write names, and is then discarded.

Disconnecting. Press Disconnect under Settings, Google Contacts. The app revokes the token with Google and deletes the stored copy straight away. You can also remove access at any time at myaccount.google.com/permissions; the app notices the next time it tries to save a name, marks Google Contacts as disconnected and leaves a note in Updates.

Nothing BOT's use and transfer of information received from Google APIs to any other app will adhere to the Google API Services User Data Policy, including the Limited Use requirements. We do not use Google user data for advertising, do not sell it, do not transfer it to third parties except as needed to provide the feature you asked for, and do not allow humans to read it except with your consent, for security purposes, or as required by law.

Nothing BOT Comedy in detail

Watched groups and spot alerts

Comedy reads a WhatsApp group only if you added it to your watched groups. That check comes first, before the text or the author is looked at: groups you did not pick are never read. In a watched group it looks for four kinds of message: a spot offer, a room being full or closed, a curator schedule update, and an opening notice. Anything else is dropped without being stored. What is kept is the parsed fields (room, date, time, who posted) and a short quote, never the chat. Simple rules read the message first; the AI model is used only when the rules are unsure. A new offer can send you a push notification, and group updates change your rooms only if you turned on automatic updates (otherwise each waits for your tap). You can stop watching a group at any time.

Push notifications

If you allow notifications, your browser or phone gives the app a device token through Firebase Cloud Messaging. We store the token, the platform and when it was last used, tagged with the app that asked for it. It is used only to send you the alerts you turned on. You can turn them off in your browser or device settings at any time.

Asks to curators

When you ask a room for a spot, the message is sent from your own WhatsApp, as a direct message to the curator, in your name. It goes out when you send it, or automatically only for rooms you set to send on their own. If you turned on "Your voice" the wording may be rewritten to sound like you, but a rewrite that changes a date, time or link is discarded. After an ask goes out, Comedy reads that curator's replies in that one chat, to work out whether you got the spot, were declined or it is unclear. It reads only the curator's messages after the ask, not the rest of the conversation. Voice notes, stickers and images are not read; an emoji-only reply is understood without a model and flagged for you to confirm. A reply is stored as a short quote and the result. The model never decides alone: its answer has to quote the reply.

My spots, regular spots, notes, ratings and set lists

These are yours. They are stored in your account and only you can read them, apart from the exceptions below that you choose.

Rooms and curators

Your roster of rooms includes the curators you list, with the names and phone numbers (and Instagram handles) that you type or import yourself. Please only enter details you are allowed to keep, and see the Terms.

Community rosters

You can publish a roster of rooms so other comics can follow it. A published roster contains the rooms, their shows and times, and the curators of each room including their names, phone numbers and Instagram handles, and it is visible to every signed-in, approved member of Nothing BOT, not just your followers. Only people the administrators approved to publish can publish. Other things people can do with a roster: suggest a change (the suggestion, its author's name and a note are visible to that roster's maintainers and the author), become a co-maintainer you add, follow it (we store only the follower's name and a date, and the app shows a count), or receive a copy you share with one person. Adding a co-maintainer, or sharing rooms with one person, uses a directory of approved members: it shows each member's name, email address and profile photo so you can pick who you mean. The directory is only shown to signed-in, approved members and is never public. You can unpublish a roster, which deletes it; copies already shared with someone stay in their account.

The agent number

Comics can talk to the agent number about their rooms, spots, asks and alerts. See "The agent number" below: it reads only what you send it, repeats what it understood before changing anything that matters, and any ask still goes out from your own WhatsApp.

Connection status

Comedy shows whether your WhatsApp is connected and which server is running it, using the status your server reports.

Nothing BOT Server

The server is a program you (or an administrator on your behalf) run on a computer you control. It holds the WhatsApp Web connection, reads messages, runs the local AI model and writes the results to the database. Your chats stay on that computer: the apps and our database only ever receive the parsed results described above. Whoever holds the server's credentials can technically read what the server can read, as with any self-hosted software. Running a server records its name, version, status and last-seen time in the database. Your WhatsApp login session is stored on the server and, encrypted, in Cloud Storage so another of your servers can take over (see the table).

The agent number

The agent number is optional and off until you link it. It works for both apps: curators use it for their lineups, and comics can use it to ask about and change their rooms, spots and asks (for example "ask the Tuesday room"). It acts on your Comedy data only, never reads your chats, and the rules below apply to both. It is a second WhatsApp number, linked the same way as yours, that Nothing BOT uses to message you: mic checks, new-request summaries, a morning summary, and answers to what you ask it. You can also ask it to make changes (for example "add Rohan to Tuesday"); it repeats what it understood and does nothing until you reply yes.

You can switch each part off, or unlink the agent number in Settings; that deletes its saved login.

What we never do

Who can access your data

Demo visitors

The demo signs you in anonymously and gives you a private copy of sample data. Nothing you do there touches real WhatsApp accounts, and demo sandboxes may be deleted at any time.

Keeping and deleting data

Your data is kept while you use the apps. You can unlink WhatsApp at any time in Settings, which deletes the login session and its encrypted backup. To have your account and all of its data deleted, ask an administrator or open a request on GitHub; the app has tools to delete everything for an account. You can also revoke the app's Google access, and so stop it saving names to your contacts, at any time at myaccount.google.com/permissions.

Security

Access to data is enforced by Firestore security rules: each curator can read only their own data, and server-only data (such as encryption keys, login backups and the encrypted Google Contacts token) is not readable by any app user. WhatsApp login backups are encrypted before upload. See SECURITY.md for details and how to report a problem.

Children

Nothing BOT is not intended for anyone under 18.

Changes

If this policy changes, the new version will be posted here with a new effective date.

Contact

Questions or requests: open an issue at github.com/amrit-contour/spot-solutions/issues.