Growthmind is built in the open, and this is the dated record of what ships — product and site both. If it isn't here, it hasn't shipped.
product
When Slack breaks, you are told once — and nothing is lost while it is down
Slack was the only way Growthmind could reach you, and when it stopped working, findings went nowhere anyone looks. There is now a bell on every page, holding the same things your channel gets: what was found, when, and whether it actually reached Slack — named by the channel it went to. A broken connection announces itself once, not once per thing it blocked, and the moment you reconnect, everything that was stranded is delivered rather than quietly written off. The settings page gains the first controls over it: how often a weekly summary goes out and on which day, and two switches for what your own bell shows. Any member of your workspace can change them, because the person who set Slack up is not always the person who has to fix it. Health and security have no switch and never will — a broken connection or a new key is not something to find out about late.
product
Every connection says who it is, not where it lives
Settings identified your analytics by its ingest address and your delivery by a channel id — eu.i.posthog.com is the same string for every customer in Europe, and What we find goes to #issues never once said the word Slack. Each connection now names itself the way you would: the product by the domain you typed, analytics by the provider, delivery by your Slack workspace. The workspace name was already being fetched and thrown away before it reached the screen.
product
A replay row says what happened, and every page it happened on
The replays list titled every row with the first page of the session, so a list that counts sessions read as a list of pages. Each row now leads with what Growthmind wrote about that recording, and tags the pages the write-up actually covers underneath, saying +2 more rather than silently dropping the rest. A recording nobody has written up yet says so; one whose write-up was held back because it still contained personal data says Write-up can't be shown — which is what the recording's own page has always said, and what the list used to contradict.
product
What a replay says a person clicked is now the label they saw
Growthmind describes what happened in a recording, and it was describing controls by the class names your build tool generated — so a line meant to say someone typed in the email box said input.m_8fb7ebe7.mantine-Input-input#mantine-0zhpcizrb instead. A control is now named from the label attached to it, or its own text, and falls back to the raw description only when there is genuinely nothing readable. This is what the write-ups are built from, so it changes what they can tell you rather than only how they look.
product
Replays, with three filters that stack
Recordings live at Replays now — one word, the one people actually use — and the page gained three filters that work together: the page a session started on, the company it came from, and whether it was a real person, a simulation, or traffic being set aside. They read from the address bar, so a filtered view is a link you can send someone. An option that matches nothing stays on screen reading zero instead of disappearing, and filtering yourself down to nothing tells you which combination did it rather than showing you an empty list.
product
The record, the fixes and the channel are yours now, not a preview
Three pages were rendering the same fixed example for everyone and were reachable only by accounts we had listed by hand. They read your own workspace now: the record of what was delivered and what we sent, the fixes that are open with the reason one outranks another, and the channel — including the days nothing was sent, which are a fact about your product rather than a gap in ours. Experiments and the plan are still previews, and still say so.
product
What we think your product is for, in writing, and you can argue with it
Growthmind reads the website you name and works out who your product is for — twelve kinds of thing about your business, seven of which can stop a change shipping. That model now has a page. Every line says where it came from and when, and a line nothing on your site supports says so rather than dressing itself up as something you told us. Hover any one of them to confirm it, correct it, or read the page it was taken from. What you say outranks what we read: correct a line and the next read of your site will not quietly put it back. The page starts empty, because a model of your audience we invented would be worth less than nothing, and it fills in front of you as the reading finishes. It describes groups of people, never a named individual.
product
Setup and findings keep themselves current, without asking
The setup screen used to ask our server, on a timer, whether anything had happened yet — so a step could sit finished for a few seconds before the screen caught up. Both screens are told now instead. A setup step ticks over at the moment the work behind it lands, your coding assistant showing up for the first time is noticed straight away rather than whenever the next check came round, and the findings list gains a row without you reloading. Nothing new appears on either screen, and that is the point: they are simply never out of date, and a teammate watching the same workspace sees it at the same moment you do.
product
A finding you turned off stays off when an unrelated error lands late
What makes Growthmind recognise the same problem again on a later day — and what a Not useful dismissal is recorded against — was built from every kind of signal the week happened to contain. One unrelated error arriving just inside that window rather than just outside it was enough to make the same problem look like a new one: written up again, and no longer covered by the dismissal you had already given it. A problem is now recognised by the signals that actually proved it, and nothing else. The full list of what was seen stays on the finding as a record.
product
Someone who found you by asking an AI counts as a visit
When a person asks ChatGPT or Perplexity about your product and the assistant fetches your page to answer them, both vendors document that request as one a person asked for, not a crawl. Growthmind was setting those aside as automation, so real visits were missing from your counts — and an under-count reads to a founder as a problem with the product. They count now. Genuine crawlers are still set aside and still named: GPTBot, OAI-SearchBot, PerplexityBot, ClaudeBot, and the coding assistants. Where something is ambiguous, it is counted as a real person, because the wrong direction to fail in is the one that quietly shrinks your numbers.
product
The events counter answers for the connection you are actually on
Swap the key on a project and the counter kept answering from checks made against the old connection. That collapsed the one distinction this surface exists to hold apart: the counter would say Attached, and we checked. Nothing has come through yet, which is what a quiet product looks like while the new connection had in fact never been fetched from at all. Told your product was quiet, you would have gone and looked at your product. The counter now reads its own history per connection, so one that has not been checked yet says exactly that.
product
Nothing skipped, or re-read forever, at the edge of a batch
Growthmind works through your history and your recordings in batches, keeping a marker of how far it got, and two of those markers were wrong at their boundary. The walk backwards through your existing history never cleared its marker once there was no history left to walk, so every later check re-read a page of already-imported data, against your analytics account's rate limit, indefinitely. And a recording that began at the exact same instant as the last one read could fall the wrong side of the marker and never be described at all. Both are fixed. A recording skipped before today stays skipped until a deliberate re-read — this stops it happening again rather than recovering what was already missed.
product
A recording says whether a description is coming, or never coming
Open a recording before we have read it and the page used to say the same sentence three different ways: when it was simply waiting its turn, when the analytics connection had stopped working, and when something had gone wrong at our end. A failure looked exactly like patience, and two of the three were never going to resolve. Each now says which one it is, and the one you can do something about links to where you do it. A description built from only part of a recording now says so — we could only read part of this recording, so this description may be missing some of what happened — instead of reading as the whole account. And the page fills in on its own once the description is ready: nothing to refresh, nothing to check back on. Everyone in your workspace sees it at the same moment, not only whoever set the connection up.
product
A finding can now say why, and prove it
Findings could already split into Explained and Described — until now, nothing could actually earn the first one. Growthmind now compares the people who got stuck against the people who did not, finds the first step where their behaviour split, and makes a second, separate model call — never the one that writes the finding's own words — to explain why, using only what a recording shows. Every sentence it produces has to point at a specific moment; a sentence that doesn't cite one is thrown out before publication, not trimmed down to the part that does. If every explanation it tried gets thrown out, the finding stays Described and says so — we had another explanation and nothing in the recording backed it up, so we left it out — rather than publishing something unproven. The same explanation and the same clickable citation now show up wherever the finding does, on the findings page and in Slack.
product
Say a finding was not useful, once, for the whole team
A finding you disagree with can now be turned off, and it stays off. Not useful sits on the finding Growthmind pushes you during setup, and the control says what it does before you press it — removes it for the whole team, it won't come back. It is not a per-person mute: a teammate who has connected nothing still speaks for everyone, and the same problem seen again on a later day is not delivered a second time. It also stops being written up at all — the analysis pass drops a dismissed problem before any of the expensive work runs, rather than paying to describe something nobody wants. Pressing it twice is not an error. And if the check that reads your dismissals ever fails, the finding is held back rather than sent, because the wrong direction to fail in is the one where a declined finding turns up again.
product
The findings page shows your own findings
Findings reads live from your own connected project instead of the sample it showed before. Findings are grouped by how well each one is actually accounted for — the ones with an explanation, the ones only described, the ones that are a measurement, and the ones withheld — so what the product could not stand behind is visible rather than quietly mixed in with what it could. Counts carry what they are out of, and a row counting something other than affected sessions shows no fraction rather than inventing one.
product
Confusion is judged by what people did, not what an event was called
For Growthmind to say people were confused on a page, it now wants to see it in the recording: clicking the same thing over and over, clicking something that was never going to respond, starting a field and leaving it, coming back to a field already filled in, or scrolling back up to re-read. Before this, that judgement rested on the order your analytics events happened to arrive in — a guess dressed as a signal. Each of the five has a stated amount it has to clear before it counts, and an action Growthmind could not tie to a specific element on the page counts toward nothing: the miss has to land on not claiming confusion, because a product that invents a problem is worse than one that stays quiet.
product
One session, read back as a story — grouped by the company it came from
A new Companies page groups sessions by the visitor's work-email domain, most recently active first, so you can open one account and see what it actually did rather than a count of how many people dropped off somewhere. Each session opens as a written account: an ordered list of what was clicked, focused or scrolled past, and — for the sessions worth a closer look — a short explanation of why. The reconstruction never reads what anyone typed or the words on the page, only the structure of what was interacted with; the meaning comes from our own code, not from the recording. Personal-mail domains like Gmail are left out, since a shared inbox provider is not a company.
product
Watch the recordings your analytics already holds
A new Recordings page plays back real sessions from the connection you already set up — nothing extra to install, nothing to turn on. Open one and it starts playing immediately, in Growthmind's own colours rather than the vendor's. The list shows how long someone was actually there and where they landed, so you can tell a real visit from a bounce before you click in.
product
Generated text is scanned for personal data everywhere it is read
Findings are written up by a model, and that write-up is now checked for things that look like personal data — an email address, a card number, an IP, a phone number, an API key — before it is stored, and again every time anything reads it back. It is not a habit anyone has to remember: the stored text no longer has a type that can be read as a plain string, so a new screen, tool or export that skips the check does not compile. If the check trips on new text, the finding falls back to the version that shows the numbers on their own; if it trips on text stored before the check existed, that write-up is held back rather than shown. The scanner matches patterns, so it will miss things — what the mechanism guarantees is that the check runs on every path, never that text is free of personal data, and the architecture notes say exactly that rather than the stronger thing.
product
Your coding assistant connects itself
Setup mints an API key in the browser — shown once, never readable back — and hands you the configuration block for Claude Code, Cursor, Copilot, Codex or Windsurf. The step completes when a call actually arrives carrying that key, not when you press a button claiming you installed it. Once connected, the assistant can list the growth problems waiting to be fixed, read the full instructions for one, and ask what a page is for before it touches it.
product
What a page is worth, and the ones we will not touch
Fixes are ordered by what the page they touch is worth to the business rather than by when they were found, and a page ruled out of bounds for a coding agent is not proposed at all. Growthmind works that out from what real sessions do on each page instead of waiting for someone to type it in — and a connected assistant can ask before it builds, rather than after it has already shipped.
product
Sign in with Google or GitHub
The app takes a Google or GitHub account as well as an email and password, and marks the button you used last so you are not guessing which one your account is on. Signing up with an address that already has an account now says so and hands you to sign-in, instead of failing at you.
website
Pricing is its own page again, and the nav is pages only
The full pricing treatment is back at its own address rather than redirecting to a band on the landing page, and the masthead now links pages — Pricing, About, Blog — instead of scrolling you down the home page. Both pricing surfaces now read their limits from one place, which caught the page still offering "up to three products" long after the plans stopped being counted that way.
website
An about page
What the company is for — the mission and vision stated flat, why the job we are automating goes unhired, the five convictions we hold and what each one costs us, and the three founders building it.
product
One place to change what setup configured
A settings page: the analytics connection with the privacy receipt derived from it, the Slack connection, and which channel findings are delivered to. Setup asks for those once and then retires — until now there was nowhere in the product to change any of them afterwards.
product
Setup stops sending you to another tab
Connecting Slack is one button and a picker that names the channel rather than its id; connecting analytics finds your projects instead of asking for a project number and a region you have to go and look up. The off-platform hunting is gone from the first ten minutes.
product
The repository reads like something you could contribute to
Growthmind is MIT and public, which counts for something only if the code can be read. The README now says what is actually in the repository and what the money buys, the prose that restated the code line by line is deleted, and a test caps how much of it can come back. The longer design arguments moved into docs, where they can be read on purpose.
product
First run, and the moment at the end of it
Signing up lands on a setup flow that connects your analytics, connects Slack, and then watches for the first finding — counting up from the moment it armed, logging each thing that actually happened, with no countdown and no promised number. Connecting a repository is still ahead of us, and the flow says so on its face rather than implying otherwise.
website
Memo No. 002 on the blog
You don't need to speak to users anymore — why the user interview was always a workaround for an instrument that reports that and never why, what changed, and the one question no simulation gets to close.
product
The MVP build begins
The core loop is now in active development at github.com/growthmind-ai/growthmind, starting with the read-only start: connect a repo, read sessions, deliver the first memo. Watch the commits land — or write to the founders and we'll tell you the moment there is something to try.
website
Plain answers, on the record
The landing page now ends in a plain-language FAQ — the same facts as the memos above it, in the words people actually type. The specimen memo and the keep/kill ledger now say on their face what /llms.txt already disclosed: their figures are illustrative, not customer results. And this changelog exists.