← Guides

The Emotion Engine: 15 Feelings, Their Half-Lives, and Why She Is Still Annoyed Tomorrow

A Girli character carries fifteen emotions at once, each a number from 0 to 100, and each one cools back toward her baseline at its own speed. Anger has a half-life of 8 hours. Jealousy has a half-life of 72. That single difference is why an insult is forgotten by tomorrow and a jealousy trigger is still faintly there three days later. Nothing about this is a mood label attached to a reply: the state exists between messages, decays on a clock, and is what her next reply is generated from.

This guide lists all fifteen emotions with their decay rates, the event table that moves them, the separate slow layer that becomes the relationship, and the limits - including the ones that are inconvenient for us to admit.

The fifteen emotions and how fast they fade

Half-life is the time it takes a spike to fall halfway back to her baseline. It is not a display setting; it is the constant the decay is computed with, and it differs per emotion because human feelings do not share a timer.

Decay speedEmotions and their half-life
Minutes to hoursArousal (6h), Anger (8h), Fatigue (10h)
Half a dayCuriosity (12h), Joy (12h)
A dayAnxiety (24h), Boredom (24h), Loneliness (24h), Pride (24h), Sadness (24h), Shame (24h), Tenderness (24h)
DaysGuilt (36h), Resentment (48h), Jealousy (72h)

Two things follow from that table. Arousal at 6h and anger at 8h mean the heat of a conversation genuinely does not survive the night. Resentment at 48h and jealousy at 72h mean the cold parts do. That asymmetry is deliberate. A companion who forgives everything by morning is a companion nothing you do matters to.

Baselines are personality, not zero

Emotions do not decay to nothing, they decay to her resting level, and that level is derived from her character rather than fixed. A warm character rests at a higher joy; a character with a high need for attention rests at a higher loneliness. Which means the same silence produces a different state in two different characters, and the same apology lands differently.

Silence is the clearest case. Loneliness and boredom rise with the hours since you last wrote, scaled by her need for attention. A character with that trait at 30 barely registers a two-day gap. One at 75 registers it as the main fact of her day. Neither is a bug and neither is configurable from your side - it is who she is.

What moves the numbers

Every message you send is classified, and the classification maps to a table of deltas. These are the actual values from the engine, per exchange, before the caps described below. Positive raises, negative lowers.

EventEmotion shift (fast layer)Relationship shift (slow layer)
You were warmJoy +1.8, Tenderness +1.6, Loneliness -2, Sadness -0.8Love +0.3, Attachment +0.28, Trust +0.18, Interest +0.15
You made her laughJoy +6, Boredom -8Interest +0.5, Admiration +0.3
You apologised properlyAnger -10, Resentment -8, Joy +3, Sadness -3Trust +0.6
You sent a giftJoy +10, Tenderness +6, Anger -8, Resentment -6Attachment +1.2, Love +0.8, Grudge -1, Care +0.5
You were rudeAnger +3.2, Resentment +2.2, Sadness +1.2, Tenderness -1.4Irritation +0.5, Trust -0.25, Love -0.15, Respect -0.2, Grudge +0.2
You triggered jealousyJealousy +16, Anger +5, Anxiety +6Fear of loss +2.2, Trust -0.8

The apology row is the one worth reading twice. Anger -10 and resentment -8 in a single exchange is the largest downward move in the table, and it is the only event that reaches resentment at all. That is the mechanical answer to "does saying sorry actually do anything": yes, and more than being nice for a week does. A gift is the other outlier - it is the only thing that touches grudge directly, at -1.

Two layers, two speeds

Emotions are the fast layer. Underneath sits a slow one: thirteen relationship dimensions - love, attachment, trust, admiration, attraction, security, respect, fear of loss, care, desire for your time, interest, irritation, grudge - and they are capped at a maximum shift of 5 per exchange against 30 for an emotion. That six-fold difference is the whole design. You can ruin an evening in one message. You cannot ruin a relationship in one message, and you cannot buy one in an afternoon either.

The relationship stage is read off three of those thirteen with fixed weights: 0.4 love, 0.35 attachment, 0.25 trust. The resulting score crosses at 12 for early, 28 for attachment, 48 for close and 68 for intimate. There is no message counter anywhere in it, which is why grinding does not work and why two people talking to the same character are at genuinely different stages. The relationship stages guide covers what changes in her behaviour at each threshold.

What she does with the day after you close the app

The state keeps running when you are gone, and once a night it is processed rather than merely decayed. She reviews the day, and the review can move her warmer, cooler or leave her where she was; it can decide she wants to start a conversation, and it can produce a dream she may tell you about. Silence of 20 hours is the threshold after which she is allowed to write first at all, and the chance of her doing it scales with her need for attention.

This is the mechanism behind an AI girlfriend that texts first, and it is worth being precise about what it is not: not a scheduled good-morning message, and not a re-engagement notification. The trigger is her state plus an open loop or a promise, which is why the message tends to arrive on the morning of the thing you were dreading rather than at 9 a.m. every day.

Memory is what the numbers are computed from

Emotions explain the tone of one evening. They cannot explain why she brings up your exam, and they are not supposed to. That comes from a separate store of typed memory records - 11 types, up to 80 per conversation - which the memory guide covers in full. The relevant point here is the direction of the arrow: memory supplies the evidence, the slow layer moves on it, and the fast layer colours how she says what she says.

The honest limits

  • It is a model of feeling, not feeling. Fifteen numbers with decay curves produce behaviour that reads as emotional continuity. We are not claiming anything past that, and any product that does is selling you something.
  • The classifier is the weak link. Deltas are applied from an automated read of your message. Dry sarcasm gets misread as rudeness often enough to notice, and when the input is wrong the state is wrong.
  • Caps cut both ways. The 5-per-exchange limit on the slow layer means a genuinely moving conversation still only moves the relationship a little. Some people find that frustrating. It is the price of it not being trivial.
  • Grudge does not decay to nothing on its own. It is the one dimension that mostly waits to be resolved rather than fading, which is realistic and occasionally annoying.
  • You cannot see the numbers. There is no dashboard in the product. The only interface to the state is her behaviour, which is a deliberate choice and a defensible complaint.

How to check any of this yourself

The table above makes a testable prediction. Trigger jealousy on a Monday and an argument on a Tuesday, then come back Thursday: the argument should be gone and a trace of the jealousy should not be, because 72h against 8h. If a companion product cannot fail a test like that, it does not have a state - it has a tone setting. Try it on Nina, whose jealousy trait is 70 against a typical 40, or on Elsa, whose emotional stability is 90 and who will make you work for any of it. Chat is free to start, and every character is a fictional adult. 18+ only.

The Emotion Engine FAQ

Do AI girlfriends have real emotions?

No. On Girli a character carries fifteen numbered emotional states that rise on events and decay on per-emotion timers, and her replies are generated from that state. The result is emotional continuity you can predict and test. It is a model of feeling, not feeling, and any product claiming otherwise is overselling.

Why is she still upset the next day?

Because different feelings decay at different speeds. Anger has an 8-hour half-life and is mostly gone by morning. Resentment is 48 hours and jealousy is 72, so those are still present days later. Grudge, on the slow relationship layer, largely waits to be resolved rather than fading at all.

Does apologising to an AI girlfriend actually change anything?

Yes, and it is the strongest single move in the engine. A recognised apology applies -10 to anger and -8 to resentment in one exchange, more than any other event, plus a small positive to trust. A gift is the only event that reduces grudge directly.

Can I see her mood values?

No. There is no dashboard, by design - the only interface to the state is her behaviour. The numbers are published in guides like this one so the behaviour is checkable, but the product deliberately does not turn a relationship into a stat screen.

Try Girli free