Privacy Policy
UnderGrowth holds your private journal. This page says plainly what is stored, what leaves the app, who else can see it, and how to get rid of it. Where the honest answer is uncomfortable, it is written down anyway.
1. Who is responsible
UnderGrowth is built and run by Raghav Gandhi, an individual, not a company. He is the data controller for everything described here and can be reached at raghav@undergrowth.app.
2. What is stored
Your account
An email address, and the sign-in method you chose — either a password, which is stored only by the authentication provider and never in a form UnderGrowth can read, or a linked account from an external sign-in provider. If you typed a name when signing up it is kept alongside your account. A small profile row records when your account was created and whether you have accepted the AI notice.
That profile row also holds what you pick about yourself when you sign up — up to five kinds of person (a student, working a job, and so on) and up to five things you want to write about, chosen from fixed lists. They decide which topics and questions the app offers you, and two AI features use them as background, described in section 5. The things you want to write about can be changed later on the Explore page, which lists them as your topics, as well as in Settings.
It can also hold three smaller answers: the name you want the app to call you (filled in from the name you signed up with, if you gave one), how you like to start writing, and when you usually write. These are never sent to the AI and are used only on your own screens — the name to greet you on the home page, and how you like to start to decide which option comes first when you start a new entry. When you usually write is saved, but nothing uses it yet. You can skip any of these questions. You can change every answer except how you like to start at any time in Settings, under About you; that one is asked only when you sign up. Older accounts may also hold answers to two earlier signup questions — what you were working on, and what you were trying to get better at — asked before the current ones took their place, and stored as you typed them, up to 300 characters each.
Signing up also asks what made you want to keep a journal. That answer is not stored on your profile: if you answer it, it becomes your first journal entry, private like every entry, and you can edit or delete it the same way.
Your writing
Every journal entry you save: its text, the date you filed it under, an optional category, and any title — both one you typed and one the AI wrote, which are kept separately. Each entry’s text is stored twice, once with formatting and once as plain text, because the app needs both — and three times once you have written the entry up, because the write-up is kept as its own separate copy on the entry. Tweet drafts generated from an entry are stored on the entry, and any draft you save is stored again in a separate list.
The write-up is the prose version of an entry you built by answering questions, made when you press Write it up (section 5). It is stored on the entry, you can edit it afterwards, and your edits are saved the same way the rest of your writing is. It is not folded back into the other two copies of your text, and it is never sent as a writing sample when you draft tweets.
Entries are text only. There is no way to attach an image or a file, and no file storage exists.
Technical records
The hosting and database providers keep ordinary server logs — IP address, browser, page requested, time. The app’s own server functions additionally record that a particular account used a particular AI feature at a particular time. Those records do not contain your journal text, with one narrow exception noted in section 5.
One of those records says more than that a feature was used. If the AI declines to ask a follow-up question because it judged that what you wrote describes serious distress (section 5), the server log notes that it declined, and why. The note holds no text — nothing you wrote, and nothing the AI wrote back — but like the records above, it can be tied to your account and the time. That makes it a record that an AI judged your writing to describe serious distress, which is information about your health whether or not the AI was right.
3. Where it is stored
In a Postgres database run by Supabase, hosted on Amazon Web Services in the ap-south-1 region (Mumbai, India). The website itself is served by Vercel from its global network.
If you are reading this from outside India, your writing is stored outside your country.
4. Nothing is sold, and nothing is used to train anything
Your writing is not sold, rented, or shared with advertisers. It is not used to train any AI model by UnderGrowth, and it is not used to improve the app for anyone else. It is not read for marketing, and there is no advertising here at all.
5. The AI features, and what they send
Four features use AI: drafting tweets from an entry, naming an untitled entry, asking a follow-up question about what you have just written, and writing up an answered entry as prose. An entry's category is chosen by you, never by the AI, and so is any change to a saved draft. All four are handled by a third-party AI provider outside UnderGrowth.
Each of these runs only when you press a button. Nothing is sent while you type, and nothing is sent in the background.
What is sent when you use them:
- Drafting tweets sends the entry you are on. It also sends up to six of your own earlier entries, up to 1,200 characters of each, so the AI model can understand the way how you write. Those older entries are supplied as a writing sample; the drafts are meant to come from the entry you are on. What you picked about yourself at signup or later is sent too — the names of the kinds of person and the things to write about, plus, on older accounts, the answers to the two earlier signup questions, up to 300 characters each — as background on who you are rather than as a writing sample, so that the drafts are less generic before you have written enough for the model to have anything to go on.
- Naming an entry sends up to 4,000 characters of that entry.
- A follow-up question sends the conversation in the entry you are on — the questions already asked and the answers you have written, up to 6,000 characters. The first question on an entry you have not answered yet works differently: it sends up to five of your recent entries, up to 600 characters of each, and the topic you picked on the home page or the Explore page, if you picked one, along with what you picked about yourself at signup or later (the names of the kinds of person and the things to write about, nothing you typed), so that the question is about what you are actually working on. After that first question, nothing from your other entries is sent. The AI may answer that there is nothing left worth asking; then no question is added and nothing is stored, and you can write more and ask again. If what you wrote seems to the AI to describe serious distress, it asks nothing at all, and the server log notes that it declined and why — never what you wrote. As a hard limit, an entry can be asked at most nine follow-up questions, after which the button goes away.
- Writing up an entry sends the conversation in the entry you are on — the questions asked and the answers you wrote, up to 12,000 characters. Nothing from your other entries is sent. One request comes back with both the prose and a title for that entry, and both are stored on the entry. An entry that has been written up is not asked any further questions, and its write-up is never sent as a writing sample when you draft tweets.
These requests are made by UnderGrowth’s own servers, not by your browser. The provider therefore receives the text, but not your IP address, your device, or anything that identifies you personally. Its handling of that text is governed by its own terms rather than by this policy.
The one exception to “logs contain no journal text”: if the provider returns a malformed response, the resulting error message can include a short fragment — on the order of ten characters — of the AI’s reply, which is derived from your entry. That fragment would land in the server logs.
6. Who else can see your writing
No third-party analytics, advertising, or tracking product is used here. No traffic measurement, no session recording, no crash reporting, no advertising pixel. Fonts are served from this site rather than from an external font service, so opening a page does not announce your visit to anyone.
But four companies necessarily see something, because they run the infrastructure:
- Supabase stores the database and runs sign-in. Your browser talks to it directly whenever you are signed in.
- Vercel serves the site and keeps standard request logs. Because pages are addressed by path, those logs include the web address of each page you open — which contains the identifier of the entry you were reading, though not its contents.
- The AI provider receives entry text when you use an AI feature, and some profile data rather than entry text: when you draft tweets, what you picked about yourself at signup or later and, on older accounts, your answers to the two questions asked then; when you get the first question on an entry, only what you picked. Both are set out in section 5.
- Resend sends the app’s emails. The sign-up confirmation, password reset and account-deletion code go out through it, so it handles your email address and the contents of those messages. No journal text is ever in them.
If you sign in with an external account rather than a password, your browser contacts that provider to complete the sign-in. Your browser contacts X or WhatsApp only if you click one of those share buttons, and only for an entry you have already made public.
And Raghav can read your entries. They are stored unencrypted, and running the service means holding database access. He does not read them, and there is no feature or process that surfaces them — but the honest statement is that he is able to, and any claim otherwise would be false.
7. Entries are private until you publish them
Every entry is private the moment it is created. New entries are saved with sharing switched off, and the database enforces that rather than the app merely respecting it: an entry can be read only by the account that wrote it, and a signed-out visitor cannot read entries at all.
An entry becomes readable by anyone else only when you switch on the Public toggle on that specific entry. After that:
- Anyone holding the link can read it. There is no password and the link does not expire. The link is not guessable, but it is not a secret either — anyone you send it to can send it on.
- Only what the page displays is exposed. Unposted AI drafts, your usage counts, and your account identifier are never served to a public reader.
- Public entries are marked so that search engines do not index them.
- Switching the toggle off makes it private again, but a link preview generated while it was public can stay cached for up to an hour.
8. What is kept in your browser
Two things at most. Your sign-in session, so you are not asked to log in on every page. And, if you choose a theme other than Clay in Settings, which one, so the app opens in it on that device; it never leaves your browser. That is all. There are no advertising or tracking cookies. Clearing your browser storage signs you out and puts the app back on Clay.
Signing out ends your session, but does not by itself wipe entries already loaded into that browser tab’s memory. Closing the tab does.
9. How it is protected, and the limits of that
Traffic is encrypted in transit. The database enforces per-account access rules, so one user cannot read another’s entries, and every query the app makes is additionally scoped to the signed-in account as a second line of defence. Passwords are handled by the authentication provider and are never visible to the app.
What this is not: your entries are not end-to-end encrypted, and UnderGrowth does not encrypt them itself before storing them. Anyone with administrative access to the database — which means Raghav, and Supabase as the provider — can read them. If you need writing that nobody but you can ever read, this is not the right place to put it.
10. Deleting things
- An entry can be deleted from its row on the Journal page. It is removed immediately and permanently; there is no trash and no undo.
- A draft can be deleted from the drafts page, the same way.
- Your whole account can be deleted from Settings. It asks you to type a confirmation and then to enter a code emailed to you, and then removes your entries, your drafts, your profile and your login. It is immediate and permanent.
One thing does not follow the entry it came from. If you save a tweet draft and later delete the entry it was generated from, the draft remains — it is stored separately and is not linked to the entry. Delete those drafts yourself, or delete your account, if you want that text gone.
Deletion removes your data from the live database. It cannot reach into the infrastructure providers’ backups or server logs, which age out on their own schedules and are outside this project’s control.
11. Your rights
You can ask what is held about you, ask for a copy, ask for corrections, or ask for everything to be erased. Most of that you can do yourself in the app — entries and drafts can be edited or deleted at any time, and the delete button in Settings removes the account outright. What you picked about yourself at signup, and the name and writing time you gave, can be changed in Settings, under About you. The things you want to write about can also be changed on the Explore page. There is no screen for two things, so correcting them means asking: how you said you like to start writing, and the answers to the two earlier signup questions that some older accounts hold. For that, and for anything else, write to raghav@undergrowth.app and it will be handled by hand. Mail to that address is forwarded by ImprovMX to Raghav’s Gmail inbox, so a request sent by email then sits in that inbox — if you would rather not do that, the delete button in Settings needs no message to anyone.
UnderGrowth is not intended for children under 13, and accounts are not knowingly created for them.
12. Changes to this policy
If what the app does changes, this page changes with it, and the date at the top moves.
Anything here unclear, or something you think is wrong? Write to raghav@undergrowth.app.