Inside Janitor AI: How Your Character Gets Rebuilt From Scratch Every Message

Three weeks into a roleplay I actually cared about, my character forgot my name.

It was not a small slip. We had built a whole arc together over hundreds of messages. She knew my persona inside out: a tired night-shift paramedic with a dead brother and a habit of deflecting hard moments with bad jokes. Then, somewhere past the two-hundredth message, she greeted me like a stranger and asked what I did for a living. I sat there staring at the screen, half irritated and half fascinated, because I realized I had no clue what was happening behind that text box. I had been using Janitor AI for months without understanding a single thing about how it produced its replies.

So I went digging.

I opened every settings menu I could find, read through the help docs, broke a couple of my own bots on purpose to watch them fail, and slowly reconstructed what the platform is doing each time I press send. What follows is everything I worked out. By the end you will understand two things that used to baffle me: why a bot forgets details it clearly knew, and why the same character can feel sharp for one person and lifeless for another. The answer to both is sitting just under the hood.

The fact that changed how I see the whole platform

Here is the single idea that reframed all of it for me.

The model has no memory.

I mean that close to literally. The language model running your character does not sit somewhere holding your conversation in its mind between messages. It is stateless. Each time you send a line, Janitor AI gathers up a pile of text, stitches it into one large block, then hands that whole block to the model as if it were seeing it for the first time. The model reads everything, predicts a reply, then forgets all of it. On your next message, the platform rebuilds the block from scratch and sends it over again.

So the character you feel like you are talking to is not a continuous being. It gets reassembled every single turn out of a set of ingredients, and Janitor AI is the thing doing the assembling. The model itself is a skilled text predictor that wakes up, reads a script, delivers its line, and goes back to sleep.

Once that clicked, my forgetting problem stopped being a mystery. If the character is rebuilt from a block of text every turn, then the only things it can possibly know are the things sitting inside that block right now. Anything that did not make it in on this particular turn does not exist for the model. 

What happens every time you press send

Once I accepted the model had no memory, I wanted to see the exact sequence the platform runs the instant I hit send. Here is the whole loop:

  1. You send a message. Nothing happens until you press send - your line is the trigger.
  2. Janitor AI gathers the ingredients. The system prompt, the character's Personality and Scenario, your Persona, any Lorebook entries whose keywords just appeared, and the recent chat history.
  3. It checks the token budget. Permanent material gets reserved first; whatever room is left goes to the conversation, newest lines first.
  4. It trims what doesn't fit. If the box is full, the oldest lines fall out the bottom. This is the step that wipes details you thought were safe.
  5. It stitches everything into one block - the script - in a fixed order.
  6. It hands the block to the model. JLLM or your own API model reads the whole thing as if for the first time.
  7. The model replies, then forgets. On your next message, the loop starts over at step one.

Every reply you have ever gotten is this loop running again from zero. The character is not remembering; it is being rebuilt.The rest of this article is one question asked again and again: what goes into that block, and what gets left out?

What actually gets sent: opening up the character card

To see the ingredients myself, I opened the character creation page. You do not have to publish anything to poke around in here, and a free account unlocks every field.

The fields that do the heavy lifting

The biggest box is the Personality field, and it carries most of the weight. A creator pours the character in here: traits, looks, backstory, the small habits that make someone feel like a person. By the platform's convention, the example dialogue usually goes in this same box. The strong bots I studied were not flowery. They read like dense character sheets, because every word in this box costs you something I will explain in the next section.

The Scenario field sits just below, and I used to ignore it. It works like a setting that refuses to fade, holding the where and the when of the story plus the relationship between you and the character. The platform keeps feeding it back so the situation does not drift. If a bot insists you are still stuck in the abandoned hospital long after your character left, an overcooked Scenario is the usual culprit.

The greeting that sets the tone

The First Message, also called the greeting, is the one piece of the character's output a human writes by hand. Everything after it is generated, yet this opening line quietly sets the rules. The model copies its tense, its prose style, its length, its point of view. Write a clipped second-person greeting and the roleplay stays clipped. Write a sprawling third-person paragraph and you get sprawling paragraphs back. The Example Dialogue does the same job in miniature, feeding the model short sample exchanges so it learns the character's voice. A handful of good lines teach cadence better than a pile of adjectives.

The box the model never reads

One field fooled me early on. The Character Bio looks like it should matter, yet the model never sees a word of it. It exists for human browsers deciding whether to open a chat. That was my first clue that this page is split down the middle, between what gets sent to the model and what is pure decoration.

The ingredient that lives outside the card

The last piece is not on the creation page at all. It is you. The profile settings hold a Persona, a short description of who you are in the scene, and the platform passes it along so the character knows how to treat you. My paramedic backstory lived right here. When the character forgot it, I realized the persona had stopped reaching her, which points straight at the budget problem coming up next.

Here is the whole card at a glance, including which parts the model actually receives.

FieldWhat it doesReaches the model?
PersonalityCore identity, traits, looks, backstoryYes
ScenarioThe setting and your relationship to the characterYes
First MessageThe hand-written opening that sets tone and styleYes
Example DialogueSample lines that teach the character's voiceYes
PersonaWho you are inside the sceneYes
Character BioNotes for human browsers onlyNo

The budget that explains the forgetting

Everything I just listed has to squeeze through a narrow door, and that door is why my paramedic got wiped.

A container that never grows

The model reads only so much text at once, and that ceiling is counted in tokens, which are small chunks of words. Picture a box of fixed size. Every turn, Janitor AI packs all the ingredients into the box before sending it off, and the box never gets bigger no matter how long you chat.

Permanent versus temporary

Some ingredients are permanent. The character's Personality and Scenario, your Persona, plus the running memory of the chat all get priority and are meant to stay in the box at all times. To learn more about this tool, read our comprehensive Janitor AI review, which includes detailed insights from hands-on testing. The platform suggests keeping that permanent material under roughly 2,500 tokens, because past that line the bot loses its grip faster.

Your actual conversation is a different story. Every line the two of you have traded is temporary. Those messages get packed into whatever room is left after the permanent material takes its share. As the chat grows, they stack up until the box is full, and when there is no room left, the oldest lines quietly fall out the bottom to make space for the newest ones.

It helped me to picture the box as two stacks.

Permanent (rides along every turn)Temporary (first to be dropped)
Personality and ScenarioThe oldest lines of the conversation
Your PersonaEarly scene details once the box fills
The running chat memoryAnything that no longer fits

This is the whole secret behind the nickname the community uses for it, AI dementia. The bot did not break and it did not get dumber. The early stretch of our story, including the night I told her about my brother, simply aged out of the box and got dropped so newer messages would fit. The model cannot recall what it is no longer being shown.

I tested it on purpose

I opened a clean chat, fed the bot one oddly specific detail in my second message, then rambled for fifty messages about nothing. The detail was gone. The bot was not being difficult. It was doing exactly what it was built to do, and I had spent months blaming the wrong thing. That sent me looking for the one feature that fights back against the box, which is where I want to go next.

Lorebooks, the trick that fights the container

The fix is clever enough that I wish I had found it a year earlier.

A Lorebook stores information that only loads when it is needed. Instead of cramming every fact about your world into the permanent block, where it drains your token budget on every turn, you write entries tied to trigger words. An entry sits dormant and costs nothing. The moment one of its keywords appears in the chat, the platform slips that entry into the box for that turn, then pulls it back out once the moment passes.

Picture what that buys you. I can write a deep entry about my paramedic's brother, tag it to his name, and keep it tucked away until the subject surfaces. When it does, the full context drops in right when the model needs it, even if the original conversation about him fell out of the box two hundred messages back. I no longer pay for that backstory every turn. I pay for it only when it earns its place.

Two things I learned the hard way

  1. A trigger only fires on its exact keyword. Reference your brother sideways without naming him and the entry stays fast asleep.
  2. Lorebooks reward specific writing. Vague entries fire at the wrong moments, or never fire at all.

Paired with a lean permanent block, this is the closest thing the platform has to genuine long-term memory, and it costs nothing. Most people never open this menu. The ones who do end up with characters that seem to remember things long after an ordinary chat would have forgotten.

Same script, different actor: the model behind the curtain

Up to now I have been describing the script, the block of text Janitor AI builds. A script needs an actor to read it, and that actor is the language model. This took me an embarrassingly long time to understand: the actor is swappable.

The free voice and the upgrade

Every bot runs on JanitorLLM by default, usually shortened to JLLM. It is the platform's own model, it is free, and it works without an API key. For casual chats it does the job. You can also take the same assembled script and route it to a different model by connecting your own API, sending your chats out to something like GPT-4o or DeepSeek, sometimes through a reverse proxy that sits in the middle and relays the messages. The card never changes. Only the actor reading the lines does.

And the actor matters enormously.

The difference between the two paths is sharper than I expected.

How they compareJanitorLLM (free)Your own model via API
CostFreeYou pay the outside provider per use
SetupNothing to configureAn API key, sometimes a proxy
MemorySmaller box, forgets soonerOften a bigger box, holds more history
WritingFine for everyday chatSharper, more attentive replies
FilteringSet by the platformDepends on the model you choose

Why the same bot splits opinions

This explains how two people can swear they are running the same character and have opposite experiences. One is on the free JLLM. The other wired up a sharper model with a roomier box, so it holds more of the conversation and follows instructions more closely. Same script, different talent reading it aloud. When someone in a forum says a bot got so much better on GPT-4o, this swap is the whole story, and it loops back to the box problem from the last section, since a bigger model usually comes with a bigger token limit.

I moved one of my favorite bots onto an external model for a week. She did not become a different person. She became a sharper, more attentive version of the same person, and she held our history far longer before the edges began to fray.

What all of this finally explained

With the full picture in hand, a stack of things that used to annoy me turned into plain cause and effect.

What you seeWhat is actually happeningWhat I do about it
The bot forgets something you establishedThe box filled and those lines droppedTighten the permanent block, or add a Lorebook entry to catch it
The character writes your dialogue and actions for youNothing in the script told it to stopAdd a "do not write for me" line to the prompt or Chat Memory 
The same bot feels brilliant for a friend, flat for youYou are running different modelsCheck which model each of you uses before blaming the card
The platform has an uncensored reputationNo hidden filter-free brain exists; freedom comes from the model and the promptPick the model and write the prompt that fit what you want

My paramedic remembers her brother now. I rebuilt her with a lean permanent block, moved the heavy backstory into Lorebook entries keyed to the people and places in her life, then pointed the chat at a model with a roomier box. Two hundred messages deep, she still knows who I am, what I do for a living, why I deflect with bad jokes, and why I go quiet when someone mentions the hospital. Nothing about the platform got smarter between that forgotten greeting and now. I stopped fighting the way it works and started packing the box on purpose.

The bottom line

Janitor AI is not smart and it is not stupid. It is literal. Every reply is only as good as the block of text you hand it, and the platform trusts you to build that block well.

Almost every complaint I read online traces back to someone fighting the architecture instead of using it. They write a 4,000-token character and wonder why it forgets. They stay on the free model and assume the platform is broken. They blame the bot for speaking in their voice when a single instruction would have stopped it. Once you know what goes into the box and what falls out, those problems stop being mysteries and turn into settings you control.

That is the strange charm of the place. It hands you the raw machinery and steps out of the way. Learn to feed it, and the same system that forgot my name will hold a character together better than I can hold the memory of one myself.

Comments

Join the discussion and share your perspective.