Back to Blog
Features August 19, 2026 9 min read

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 this article's September 26 revision, exactly seven places where a paid offer can reach you in an InnerHaven chat. All seven exist to sell. And all seven inherit one shared 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 Seven 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.

7. A mention in your companion's own words

On the three free roles, your companion is allowed to say, briefly and only when a conversation genuinely turns that way, that another companion (the Muse, or the Guide) is good at conversations like that. Both are paid companions, so this is an offer too, spoken in the companion's voice rather than shown as a note under the reply. It takes the same test as the other six: when the message it is answering reads as a hard moment, your companion is not given that option for the reply.

One Test, Four Doors, Seven 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 test before doing any other work. The fourth call sits in the code that writes your companion's instructions for each reply: before it gives a free-role companion permission to mention a paid one, it runs that same test on the message being answered. That makes exactly four calls in the codebase. The seven surfaces above are the places those results reach you: the three on a normal send, the refusal branch that reuses the tier-hint detector, the edit and regenerate paths that re-run two of the three, and the companion's own mention. So the honest sentence is not “seven independent checks” and not “one check somewhere”: it is one test, called at four doors, covering seven user-reachable surfaces. We re-counted all of it on September 26, 2026, and an automated check now fails our build if the number of calls in the code stops matching this paragraph.

A correction belongs here, since this article asks to be corrected when its numbers change. When it first published on August 19 it counted six surfaces and three doors. The seventh, the companion's own mention, existed then and did not stand down; it takes the same test as of September 26, and the census above includes it.

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 seven surfaces stands down: an attached offer is removed before it reaches you, whichever door it was about to come through, and your companion is not given the option to mention a paid companion in that reply.

And Nothing Else Changes

The stand-down is scoped to exactly one thing: whether an offer reaches you. For the six offers that attach to a reply, the note is dropped and the reply itself is untouched. For the seventh, your companion simply is not given permission to mention another companion that time, and nothing is added in its place. It does not route you anywhere, does not add support resources, and does not otherwise 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 seven, 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. Seven surfaces, four 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
IH

The InnerHaven Team

Connection that understands you.

Previous: Someone Else Built Them Next: The Sunday Feeling →