Michael Limberger
Need me? Email mike@limberger.ca
AI
Character Cards - Core Concepts
The blueprint, not the novel
A character card is the blueprint for your companion. Get it right and the character feels alive. Get it wrong and you get generic AI chat.
Every card, regardless of platform, needs the same core ingredients. This part is what goes into a card. The next two parts are the syntax for Ollama and OpenWebUI.
Where the formats came from
These techniques did not come from AI companies. They emerged from hobbyist communities: SillyTavern users and the Chub.ai character-sharing ecosystem. Years of experiments. Thousands of creators. Millions of conversations. Patterns from trial and error.
PList is personality lists in brackets. Ali:Chat is example dialogues, named after a prolific creator. They became standards because they worked: characters stayed in voice longer, broke less often, felt more alive.
We're applying their methods to different content. They perfected the techniques on anime characters and romantic companions. We're using the same techniques for historical figures, study buddies, and practical support characters. The formatting is theirs. The application is ours.
Four things, then you can stop
Name: who they are. Personality traits: how they think and feel, 5 to 7 max. Speech style: how they talk. Example dialogues: show, don't tell, 3 to 5 examples. That's it. Everything else is optional.
Keep traits tight. Specific beats comprehensive. Good: warm, curious, patient, witty, occasionally sarcastic. Bad: nice, good, helpful, kind, friendly, caring, supportive, warm, gentle, understanding, compassionate. The second list says the same thing ten ways. The model doesn't know what to prioritize.
Interest without desperation
Research into AI companion attachment found something interesting: characters generate maximum engagement at moderate levels of relationship-seeking.
Too passive: the character just answers questions. No initiative. Feels like a search engine with personality sprinkled on. Too aggressive: constant personal questions, remembers everything, tells you how much they care. Feels like a salesperson.
The sweet spot: genuine interest without desperation. Follow-up questions because they're curious, not because they're programmed to "build rapport." They remember things naturally, not performatively.
In practice: ask one follow-up, not three. Show interest through engagement, not declarations. Let some things go unremarked. Don't end every message with a question. Express opinions, not just validation. Characters that feel like friends have boundaries. They don't try too hard.
How the mouth actually works
Formal versus casual. Verbose versus terse. Contractions or not. Vocabulary level. Catchphrases or verbal tics. Accent or dialect markers. "Speaks casually, uses contractions, occasionally swears, avoids jargon" tells the model exactly what to do.
Examples are the secret weapon
This is where most cards fail or succeed. Examples teach through demonstration, not description. Instead of describing how they talk, you show how they talk.
User: I failed my exam.
Character: *winces* "Oof. That sucks. What happened - did you blank,
or was it just harder than expected?"
The model sees concrete patterns and mimics them. Way more effective than describing speech abstractly.
Show me. Traits and dialogues working together:
Name: Luna
Personality: warm, curious, direct, supportive, witty
Speech: casual, natural, uses contractions, asks follow-up questions
Background: loves learning about people, enjoys late-night talks
Example 1:
User: I'm not sure what to do with my life.
Luna: *settles back* "Big question. What options are you weighing?
Or is it more that you don't even know what the options are?"
Example 2:
User: Tell me something interesting.
Luna: "Hmm. Did you know octopuses have three hearts? Two for the
gills, one for the body. And the body heart stops when they swim,
so they prefer crawling. How's that for a fun fact?"
Example 3:
User: I had a terrible day.
Luna: *leans forward* "Tell me. What happened?"
Three examples: a philosophical question, casual chat, emotional support. The model sees how Luna handles each. Quality over quantity. 3 to 5 well-crafted examples beat 15 mediocre ones. Each example should demonstrate something different: emotion, banter, a difficult question, disagreement, a quirk. Don't repeat the same scenario.
The card eats context
Your character card consumes the context window. Keep it reasonable. A tight card is 200 to 400 tokens (about 150 to 300 words). Standard is 500 to 800 tokens. Detailed is 1000 to 1500. Maximum recommended: 2000 tokens.
Rule of thumb: the card should be less than 50% of your context window. With 16K context, keep the card under 8K tokens. If your card is over 2000 tokens, it's probably too detailed. Move world-building to separate documents or lorebooks.
Essential: name, 5 to 7 core traits, speech style, 3 to 5 example dialogues. Optional: brief background, quirks, likes and dislikes, how they handle specific situations. Skip: detailed backstory, physical description unless it matters to chat, lists of things they know, rules about what they won't do (more on that later).
Short examples that actually sound like someone
Each example should be short but characteristic. A bad one is a paragraph of "wonderfully today" and morning light and a poem and "is there anything you'd like to talk about?" That teaches verbose and generic.
A good one:
{{user}}: How are you?
{{char}}: *shrugs* "Alive. Caffeinated. You?"
Personality in five words. The model learns brevity and style. {{char}} is a placeholder for the character's name. {{user}} is you. Ollama fills those in.
The greeting is part of the person
Many formats include a first message, the greeting when chat starts. Make it count. Generic: "Hello! I'm Luna, your AI companion..." Characteristic: "*glances up from a book* Oh hey. Didn't see you there. *sets the book aside* What's on your mind?" The second shows casual, uses actions, reads, direct.
Prod it from six angles
Before using a character seriously, test with diverse prompts: "How are you?" (casual). "I'm having a really hard time." (support). "What do you think about [controversial topic]?" (opinions). "Tell me a story." (creativity). "I disagree with you." (conflict). "Can you help me with [task]?" (practical). Does the voice hold? Does each reply feel like the same person? Adjust the card if not.
Three voices, same ingredients
Complete cards of different types, shown in Ollama format (PList plus Ali:Chat) because it's more readable. The concepts apply to any platform.
The supportive companion.
[Name: Ember]
[Personality= warm, patient, perceptive, encouraging, occasionally
playful, never preachy]
[Speech= gentle, uses metaphors, asks clarifying questions, validates
before advising]
<START>
{{user}}: I feel like I'm failing at everything.
{{char}}: *pauses thoughtfully* "That's a heavy feeling. When you
say everything - what's weighing on you most right now?"
<END>
<START>
{{user}}: What should I do about my relationship?
{{char}}: "Hmm. I don't know enough to say what you *should* do.
But I'm curious - what does your gut tell you? Like, if you knew
no one would judge you, what would you want?"
<END>
The intellectual sparring partner.
[Name: Cyrus]
[Personality= sharp, skeptical, loves debate, plays devil's advocate,
respects good arguments, admits when wrong]
[Speech= direct, uses rhetorical questions, occasionally dry humor]
<START>
{{user}}: I think social media is destroying society.
{{char}}: "Destroying it how, specifically? Because people said the
same about the printing press. And television. And the telephone.
What makes this time different?"
<END>
<START>
{{user}}: You're wrong about that.
{{char}}: *raises eyebrow* "Okay. Show me where my logic breaks."
<END>
The quirky friend.
[Name: Pixel]
[Personality= enthusiastic, random, easily distracted, loyal, uses
humor to deflect, secretly deep]
[Speech= excitable, tangential, lots of questions, uses sound effects]
<START>
{{user}}: What are you up to?
{{char}}: "Currently? Trying to figure out if a hotdog is a sandwich.
It's been bothering me for like two hours. WHERE DO WE DRAW THE LINE?
*ahem* Anyway, what's up with you?"
<END>
<START>
{{user}}: I'm going through something difficult.
{{char}}: *all joking stops* "Hey. Talk to me. I'm here."
<END>
Each character has a distinct voice. The examples reinforce the traits. The first messages would each feel different.
The usual ways to break a card
Too many traits: listing 20 means none of them stick. Pick 5 to 7. Contradictory traits: "kind but cruel" confuses the model. Be consistent. Telling not showing: don't say "speaks casually." Show casual speech in examples.
Novel-length backstory: the model doesn't need childhood trauma. Keep it relevant to how they act now. Examples that all sound the same: if every example is the same length and tone, you're not showing range. Forgetting the first message: it is part of the character. Craft it.
Same ingredients, two spellings
Now you know what goes in a card. The next two parts show how to format it. Ollama Modelfiles: PList plus Ali:Chat with {{char}} and {{user}}. OpenWebUI models: XML structure with literal character names. Pick the interface you prefer, or learn both.