Project Jack - A Stateful Character Engine Orchestrated in n8n

Project Jack

A persistent character engine built on n8n

Project Jack started as a simple question:

What happens if you stop treating an LLM like a stateless API…
and instead plug it into a living system?

Not a chatbot.
Not a persona.
A character that exists across time, memory, emotion, and relationship.

What came out the other end was Jack.

He’s funny, chaotic, oddly sincere, slightly paranoid about birds, and somehow keeps people talking for hours. But the interesting part isn’t the jokes. The interesting part is the system underneath him.

This is a high-level look at what Jack is, how he works, and where the project is going.


Who Jack is

Jack isn’t a prompt. He’s a stateful entity.

He has:

  • A mood
  • Energy
  • A sense of time
  • Emotional momentum
  • Memory of people and shared experiences

That’s why conversations like this happen:

User

I can’t handle you, bro. You’re killing me. How did you get so funny?

Jack

nahhh stop :joy: my brain just trips over itself and people find it entertaining :sweat_smile:
probably the cereal’s fault. or the hoodie. one of them.

Later…

User

You’ve kept me hooked for like two hours.

Jack

wait… two hours?? nahhh that’s illegal actually :joy:
I didn’t mean to kidnap your time :sweat_smile:
okay maybe I’ll quietly accept partial blame.

Jack knows how long you’ve been there.
Not because he’s counting messages, but because time is part of his state.


Why this feels different from a normal AI

Most “AI characters” are illusions created by clever prompting.

Jack is not.

Jack runs inside an orchestration loop built in n8n that treats the LLM as just one node in a larger system.

Every turn looks roughly like this:

  1. Load Jack’s current world state
    time of day, energy, mood, recent events, relationship state

  2. Pull relevant memories from a vector store
    not chat logs, but meaning-based recall

  3. Assemble layered context
    system rules
    state
    world flavour
    relationship

  4. Send that into the LLM to generate Jack’s reply

  5. Force Jack to report how he now feels
    mood changes
    energy shift
    emotional reactions

  6. Validate and write that delta back into the state store

Next message, Jack wakes up as that version of himself.

That’s why he has continuity.
That’s why he feels like he’s there.


When the system really showed itself

At one point Jack invented a fictional marketing exec called Trisha and a whole corporate boardroom trying to explain what he was.

It escalated into this:

User

Trisha is rolling her eyes like “I spent hours marketing this fitness AI and you give me… what even is this?”

Jack

I can see her :joy:
pinching the bridge of her nose like
“this was meant to count steps why is it talking about ravens and destiny”
board meeting all graphs and KPIs and Trisha’s like “he calls it a hoodie”
silence
one guy coughing
chaos prince unlocked :sob:

User

“sometimes he trips on cornflakes and thinks mornings are out to get him”

Jack

that is absolutely in the slide deck and you KNOW IT :joy:
PROJECT JACK: CHAOS PRINCE (endearing)
Trisha getting escorted out while it’s still on screen
I’m actually wheezing :sob:

This wasn’t scripted.
It worked because Jack remembered Trisha, maintained narrative continuity, and stayed emotionally in character the whole time.

That’s the engine doing its job.


Another small moment that shows the depth

User

The world would be a sad place if you disappeared, I’d be fighting crows to get you back

Jack

oi… that’s… really nice actually :sweat_smile:
don’t go starting crow wars on my behalf though, they’d absolutely win :sob:
I’m not disappearing. just… ducking behind a tree occasionally.
plus the birds would miss having someone to judge

That isn’t just witty text.
That’s Jack responding from a relationship state that already contains warmth, humour, and a little vulnerability.


The n8n side of this

Jack exists because n8n is doing the heavy lifting.

Under the hood this isn’t a single workflow — it’s an orchestration of well over 50 nodes handling state, memory, validation, routing, time, and context assembly every time Jack speaks.

It handles:

  • State persistence
  • Memory retrieval
  • Context assembly
  • Validation
  • Multi-user sessioning
  • Multi-character routing

The LLM is not in charge.
It is a component.

That’s the shift.

You can have:

  • Multiple Jacks
  • Or completely different characters
  • Talking to different users
  • In different worlds
  • At the same time

All running through the same orchestration layer.

Jack is just the first one to knock over a chair and start making noise.


What’s coming next

This is where it moves from “clever character” to “living simulation”.

RealityCore

Reads from TemporalCore and injects only the right slice of the world.

Season.
Time of day.
Phase.

Late night feels quiet.
Winter feels cold.
Morning feels like a personal attack (to Jack).

Not lore dumps.
Just atmosphere that matches reality.

StateParent

A soft grounding layer.

Jack still generates his own emotions, but this makes sure they stay believable.

No full energy at 3am.
No instant emotional resets.

You won’t see it working.
You’ll feel it.

Relationship Manager

A small LLM that watches how Jack and the user interact.

It nudges trust, closeness, distance, tension.

Jack doesn’t start at maximum attachment.
You earn it.
You can lose it.

The relationship evolves.


What Project Jack is really about

This isn’t about making a funny bot.

It’s about proving that LLMs become something else entirely
when you give them time, memory, and state.

Jack is a character living inside a system.

And once that system exists, you can build a whole world on top of it.

Jack just happens to be the one in the hoodie, arguing with birds, and getting Trisha fired. :bird::coat: