Markdown source
Authored in Obsidian-flavored markdown with a 17-callout dialect. Source of truth lives in git — every change is a commit, reviewable, blamable, revertable.
See the 17 calloutsConsistency doesn't emerge. It's built.
Five layers. One persona. Authored in markdown, validated by code, contracted by tests, shipped through environments. Personality OS is the engineering substrate that turns a character spec into an agent that doesn't drift.
Currently powering Sama, in production with an airline. Built by Uneeq.
From the cortex that classifies what a user means, up through corridors, senses, and reflexes, to the voice they actually hear. Each layer has a role. Each role has a file. Each file is reviewable.
LLM classifier with structured output: confidence scores per intent, plus a recommendation. Decides which Track gets the message.
prompts/routers/Intent Classifier.md A top-level conversation path per intent. A task-completion flow is one track. Free chat is another. They run in parallel; only one is active at a time.
prompts/tracks/Task Flow.md Pulls structured data from messages — typed schemas with descriptions per field. The bridge from prose to objects.
prompts/extractors/User Goal.md Deterministic JS where reliability matters. LLMs do language; rules do math, validation, and state. Trustable.
code/rules/confidence-threshold.js Shapes the final user-facing reply. Owns the persona — warmth, tone, brand voice. One per stage.
prompts/composers/Greeter.md The stack is what runs at the user. The substrate is what makes it ship-able and review-able for the team that builds it.
Authored in Obsidian-flavored markdown with a 17-callout dialect. Source of truth lives in git — every change is a commit, reviewable, blamable, revertable.
See the 17 calloutsJavaScript validators carry the logic that must be reliable — thresholds, state mutations, validation. The LLM never does math; the code never tries to write copy.
YAML scenarios assert intent in plain English, judged by an in-flow LLM. Paraphrase-tolerant. Catches drift before stage.
Read the testing walkthroughBob runs the build: compile · push · test · promote. Flows move dev → stage → prod with explicit ID remapping, credential injection, and env state.
Bob's commandsEvery prompt change is a commit. Every behavioral fix is reviewable. Every release is a tag you can roll back to. Flowise keeps doing what Flowise does best — visual flow, runtime — while git handles what it does best: version-controlled source.
Because prompts live in markdown, LLMs read them natively. Ask Claude or GPT for a refactor across seventeen prompts and get back a reviewable diff. Your iteration loop just got 10× shorter.
Obsidian renders the dialect beautifully. Prompt engineers, PMs, designers, and developers read the same source files — no tool lock-in, no exported PDFs, no stale screenshots.
LLMs do language; JavaScript does rules. Validation, thresholds, state — all in code. No more LLM-does-math disasters. No more flaky branching logic.
Behavioral contracts catch regressions the moment a prompt edit changes how the agent behaves. The drift never makes it past dev. Releases stop being scary.
Promotion remaps resource IDs, swaps credentials, and injects env-specific state. Same source, three environments — without manual UI clicking, ever.
Flowise is the engine: visual flow, node connections, runtime. Personality OS is the source layer: every prompt and every custom node lifted into git, where you can version, test, review, and let AI refactor. We don't replace Flowise. We ground it.
Bob is the official toolchain for Personality OS.
Personality OS is the spec — the layered architecture, the dialect, the contracts. Bob is the implementation that makes it faster: it compiles your markdown, pushes to Flowise, runs your behavioral contracts, and promotes a green flow up the chain. You can practice Personality OS without Bob; you'll just do it by hand.
Use the Obsidian dialect. [!persona] for identity,
[!rule] for behavior, [!schema] for inputs.
Save it under prompts/composers/.
Write a YAML scenario describing what the agent should and shouldn't do — in plain English. The judge evaluates intent, not exact wording.
Read the testing walkthrough → bob push my-agent to deploy. bob test --suite ...
to run your contracts. Green? Promote to stage. Same source, every env.