Privacy notice
Bein is a pilot for one-on-one text conversations. You choose your answer to each question; we do not infer it from your identity. This app does not verify your age or your identity. Saying that you are 18 or older is a self-attestation only.
We store your nickname, chosen language, account creation time, and 18+ self-attestation time in the conversation database on Cloudflare. Older accounts may retain a background label previously provided, but it is not used for matching. We store your answer and the sentence explaining it in your chosen room; your conversation partner can see them. Your email is not stored there. Supabase receives your email, sends a sign-in link or one-time code, and stores the sign-in account. The app shows that email only to you.
A conversation is visible to the two participants. A moderator can read a conversation after someone reports it. There is no public transcript. Queue counts do not include names or messages. Reports are reviewed after the conversation is closed. Nobody is watching the conversation live.
You can suggest a question in your language. We store its text and link it to your account while it is reviewed. A moderator may edit it and add translations before it appears publicly. Deleting your account archives your drafts and removes the link between published questions and your account, but published question text may stay visible. Archived student questions are removed 30 days after archiving when the retention schedule runs.
You can report a published question. We store your reason for a moderator to review; it is not public. An open report remains until review, then is removed after 180 days when the retention schedule runs. Deleting your account removes the report’s link to your account.
Cloudflare hosts the app and the database. This project does not send message text to an analytics product. The server translates a message only when it has a private translation key and the two participants use different languages. That request sends that one message and the two language names, and it asks the provider not to store the request. Earlier messages are not sent. The original message stays in the conversation. If the key is not set or translation fails, you see the original and a notice that translation is unavailable. A question draft sends the moderator’s theme and the three language names only when a private key is configured. It asks the provider not to store the request. Conversation messages are not sent. If the key is not set or the draft fails, the question stays unpublished.
Ordinary messages and the sentences explaining each view, including stored translations, are kept for 30 days after the room closes. A conversation that was already closed when this rule starts is kept for 30 days counted from the first retention run that records its close time, and is then removed. That first run does not erase it.
An open report, that room’s messages, and the sentences explaining each view are kept until a person reviews the report. After review, the report, its notes, messages, and opening views are kept for 180 days and then removed together. A conversation with no report follows the 30-day message rule.
Choosing delete locks your conversation account immediately, signs you out, and replaces your name with a former participant. It closes an open room. You cannot queue or send with that account. This step does not delete your email at the sign-in provider. It does not erase messages that these retention rules still keep.
Your email stays at Supabase until the operator deletes that sign-in user in the Supabase dashboard. The app server does not do that step and does not hold an admin key. The locked conversation row stays until the operator records that the sign-in user is gone and 30 days have passed. The 30-day period alone does not remove that locked row. After both have happened, a later sign-up with the same email is a new account and does not restore the locked row.
Records due for deletion are checked daily. Deleting sign-in records and confirming that deletion still require a separate step by the operator.