The Upsell That Stands Down
When this site wrote about the five-message demo, it said something most product blogs will not: “That is a conversion mechanic, designed on purpose, and you deserve to know it is one.” This article extends the same deal to the paid app. There are, as of the morning this published, exactly six places where a paid offer can be attached to a reply in an InnerHaven chat. All six exist to sell. And all six inherit one shared, three-line test that removes the offer when the message you just sent reads as a hard moment. This is the census of both: where the offers live, what the test is, and, just as carefully, what the test is not.
The Six Places an Offer Can Appear
1. The tier hint on an ordinary reply
When your message brushes against something your current plan does not include, the reply can carry a small upgrade note. This is the workhorse surface, and it has its own quiet stand-downs besides the shared one: subscribers on the top tiers never see it (there is nothing to sell them), and a hint that appeared recently will not immediately reappear.
2. The community invitation
On the Free tier, chatting with a community companion, a few messages in and clearly engaged, you may see an invitation toward the community shelf and what creating requires. It fires only when no tier hint already has, and it is the one surface that runs solely on a normal send.
3. The role suggestion
On the three free roles, once a conversation is more than a few messages deep, the app may suggest a role you have not tried. It sells breadth rather than a plan, and it is monetization all the same, which is why it counts in this census.
4. The refusal that carries an offer
Sometimes a reply cannot be produced and the app says so. That dead end can carry an upgrade note keyed to what you asked for. One important second gate sits on this surface alone, and the code states it as policy in its own comment: a message flagged for minor-related content is never monetized. A strong signal there never reaches the offer branch at all.
5. Editing a message you already sent
Rewriting a sent message re-runs the tier hint and role suggestion checks against your edited text, so the fresh reply can arrive with a fresh offer. If you have ever wondered whether the edit box is exempt from selling: it is not, and now it is in print.
6. Regenerating a reply
Asking for a reply to be rewritten does the same, this time against the last thing you said. A regenerated reply is a second chance for the companion, and, structurally, a second chance for the offer. Same checks, same suppression, same census entry.
One Test, Three Doors, Six Surfaces
Here is the arithmetic stated precisely, because it is checkable and because rounding it in either direction would misdescribe the design. There are three detector functions: one for tier hints, one for the community invitation, one for role suggestions. Each detector calls the same three-line test before doing any other work, and there are exactly three such calls in the codebase, one per detector. The six surfaces above are the places those detectors' results get attached to something you see: the three on a normal send, the refusal branch that reuses the tier-hint detector, and the edit and regenerate paths that re-run two of the three. So the honest sentence is not “six independent checks” and not “one check somewhere”: it is one test, called at three doors, covering six user-reachable surfaces. We re-counted all of it the morning this published.
What the Test Actually Is
The test reads the message you just sent, and nothing else. It is a fixed phrase match, not an AI judgment, and it looks for the language of a hard moment. In categories, because publishing the exact word list would only teach people how to route around it: grief and loss. Panic and breathlessness. Crying. Numbness and emptiness. Hopelessness and worthlessness. Isolation, the feeling that nobody cares or understands. Exhaustion with living. And the direct statement of not wanting to be here. When your message matches, every one of the six surfaces stands down: the offer is removed from the reply before it reaches you, whichever door it was about to come through.
And Nothing Else Changes
The stand-down is scoped to exactly one thing: whether an offer is attached. It does not alter the reply itself, does not route you anywhere, does not add support resources, and does not change what the companion says. The design decision it encodes is narrow and worth stating plainly: a hard moment should not be a sales moment. It encodes nothing grander than that.
What the Test Is Not
The Honest Limits
This is not a safety system, and it would be dishonest to dress it as one. It is a deterministic phrase match: a person in real distress who words it differently, types around it, or says nothing at all sees exactly the ordinary product, offers included. It detects phrasings, not states of mind, and it fires on the message, not the person. If you or someone you know is struggling, the place to say so is to a person you trust or a professional, not a chat box with a phrase filter. What this mechanism is, honestly sized, is a boundary the estate drew on its own selling: narrower than a safety net, firmer than a promise.
Why Publish This at All
Because the alternative is worse. Every subscription product has surfaces like these; most just decline to number them. This one has six, they exist to sell, and we built each of them on purpose, exactly the way the pricing map exists on purpose. The suppression does not prove the selling is virtuous. It proves something smaller and more useful: that the selling has an edge it will not cross, that the edge is written in code rather than in a values statement, and that the code can be counted. Six surfaces, three doors, one test. If any of those numbers changes, this article is wrong and should be corrected, which is precisely why we printed them.
See the Whole Board
Every way InnerHaven takes money, mapped in one place, with the same policy of naming the mechanics.
Ten Ways to Pay