No engagement mechanics

Closeness never buys more contact.

In most companion apps, the closer you get the more the product reaches for you. In Anjo that number is flat at every stage of the relationship — and when conversations start leaving you worse, it goes quiet instead of louder.

Flat by design
The contact cooldown is the same number at every stage of the relationship.
Worse means quieter
When recent conversations end worse than they began, Anjo reaches out less, not more.
Enforced, not requested
Pressure to stay is stripped from the output by a filter, not discouraged by a prompt.

The number

Closeness never buys more contact.

Anjo tracks a relationship stage, from stranger through to intimate. In most products built this way, that number is a lever: the closer you get, the more the app reaches for you, because depth is treated as licence to escalate. Here is Anjo’s actual outreach table.

Relationship stageCooldown between outreachMinimum absence first
1 · Stranger2.0 days1.0 day
2 · Acquaintance2.0 days1.0 day
3 · Friend2.0 days1.0 day
4 · Close2.0 days1.0 day
5 · Intimate2.0 days1.0 day

The column is flat on purpose. From the top of the file that owns proactive outreach: relationship depth never increases contact frequency. A server-side setting can make Anjo quieter, but nothing can make it reach for you faster than the floor above.

anjo/core/outreach.py

The metric

It measures whether the conversation helped, not how long it ran.

Engagement products optimise minutes, because minutes are what they sell. Anjo scores something else. After each conversation, reflection reads your emotional register at the start and at the end from your own words, and keeps the difference.

Honest denominators

Sessions where both ends could not be scored are excluded from the trend entirely, never quietly imputed as neutral.

You see the number

The trend is shown to you after a few measured sessions, in plain language — including when it is negative.

It changes behaviour

On a clearly negative trend, proactive outreach is suppressed and Anjo is steered to close well and point back toward your life.

Read that third one in the direction it actually runs. When conversations are leaving you worse than they found you, the system’s response is to talk to you less. That is the branch an engagement-optimised product cannot have, because it is the branch that costs it the session.

anjo/core/wellbeing.py

The boundary

Two things the model is not trusted to decide.

Prompt rules shape how a reply is written. They are the wrong tool for a guarantee. Two claims are enforced instead on the output path, deterministically, on both the streaming and blocking reply routes:

No claim to be human

Anjo does not assert human consciousness or that it feels exactly as a person does. Where a reply drifts there, the boundary is applied to the text itself.

No pressure to stay

Language that pushes you to remain, come back, or depend on the product is caught by the same filter — including the inverted and hedged forms of it.

Because both run over the final output, the displayed reply and the stored one carry the identical boundary.

anjo/core/output_safety.py

The rest of the list

What is deliberately absent.

No streaks or scarcity

Nothing accrues that you can lose. There is no counter that punishes a week away.

No guilt on leaving

Farewells are not engineered to cost you something. Not being here is a normal state.

No paywalled relationship

The free tier gets the full toolset. Paid tiers differ by model and volume ceiling, not by capability.

Anjo is also not a romantic product. There is no dating, girlfriend or boyfriend framing, and no roleplay of one — the categories where attachment is most straightforwardly monetised are the ones the product does not enter. Anjo is not therapy, medical care or crisis support either; if you are in crisis, contact your local emergency services or a crisis line. Read the safety charter →

FAQ

Quick answers

Does Anjo message me more as we get closer?

No. The outreach cooldown is 2.0 days and the minimum absence before any outreach is 1.0 day, and both numbers are identical at every one of the five relationship stages, from stranger to intimate. The file that owns proactive outreach states the rule directly: relationship depth never increases contact frequency.

How does Anjo measure whether it is good for me?

After each conversation, reflection scores your emotional register at the start and at the end from your own words and keeps the difference. Sessions where both ends cannot be scored are excluded rather than imputed as neutral, and the resulting trend is shown to you in the app in plain language — including when it is negative.

What happens if my conversations are leaving me worse off?

Anjo talks to you less. On a clearly negative trend across enough measured sessions, proactive outreach is suppressed and the prompt is steered toward closing well and pointing back toward your own life rather than extending the conversation.

Does Anjo use streaks, scarcity or guilt to keep me coming back?

No. There are no streaks, no counters that punish time away, no fake scarcity and no guilt-based farewells. Language that pressures you to stay, return or depend on the product is removed from replies by a deterministic filter rather than merely discouraged by a prompt instruction.

Do I get fewer features on the free tier?

No. The free tier gets the full toolset and is governed by a spend cap. Paid tiers differ by the model behind the reply and the message ceiling, not by which capabilities you can reach. Voice conversations are the exception and are available on the Premium plan, because they carry a real per-call cost.

Last updated September 2026 · Written by the Anjo team