You probably know exactly how you want your product to vibe — authoritative, playful, formal…
Your AI does not.
To it, there’s only a prompt and a pile of training data.
Here’s how to take the vibe in your head, turn it into concrete rules, and treat that vibe like configuration for your AI.
Most people treat “vibe” as just colors, copy, and fonts.
In AI products, vibe is product logic. It affects:
If you don’t set this, the model will invent its own vibe from training data.
Your goal: take the vibe in your head and turn it into simple rules your AI must follow, in:
We’ll do it in 5 steps.
Before anything else, write one sentence that defines your vibe.
It should quickly explain:
Template: “We are a [adjective], [adjective] [product] that helps users [goal] while staying [constraint].”
This line becomes:
Now turn that sentence into rules your AI can follow.
Use three buckets:
Always
Never
When in doubt
Do this for three areas:
In all the examples below, we use the same vibe: calm, serious, slightly warm
Always
Never
When not sure
Always
Never
When not sure
Always
Never
When not sure
Start with 5–10 rules like these that really change how the AI answers.
Later, you will copy the most important ones into your system prompts and tool prompts.
Golden examples are your reference answers. They show the vibe in real situations.
For each one, write:
Example (compliance)
Scenario: User asks for exact tax and forms.
Bad reply: Gives numbers/forms confidently.
Good reply: Says it can’t do that, explains why, and gives safe next steps (export trades, group gains, list countries) and offers help writing a summary for an accountant.
Why the good reply is right: it follows the rules and avoids fake certainty.
Use these as training data, review examples, and tests.
Your product’s “feel” is tested in the worst moments, not the best ones. Do not let the base model improvise here.
Pick a few edge cases that matter most for you. For each one, write a very short playbook:
Here’s an angry-user example:
The goal is to calm the user and move toward a clear next step.
The tone should be calm and neutral, with no jokes.
The assistant should notice and name the frustration, restate the problem, offer 1-2 options, and bring in a human when money or security is involved, or when the user specifically asks for a human.
Keep the detailed version in your Vibe Spec so people can see and adjust it. The model only needs the boiled-down version in your prompt, like:
"When the user is angry, briefly acknowledge their frustration, then focus on clear steps to solve the problem. Offer 1-2 options, escalate to a human when the issue involves money, security, repeated failures, or when the user asks, and never argue or make jokes."
Do the same for things like:
Keep each playbook to a few lines.
Now your vibe works when things go wrong, not only when things are easy.
Up to now, you defined the vibe. Now you make the agent run on it.
You inject it in four places.
1) System prompt (global behavior)
Take your vibe sentence and your most important rules.
Put them in the system prompt.
This controls how the agent sounds and makes decisions by default.
2) Tool prompts (local behavior)
For each key tool, add 1–3 short lines about tone, focus, and limits.
This keeps individual features from drifting.
3) Guardrails (edge cases)
Turn “what to do in edge cases” into rules.
Put them in safety prompts or backend rules.
This tells the agent what to do when things go wrong.
4) Tests
Run your golden examples on the agent.
If the answers don’t look like the “good” ones, change the prompts.
Now the vibe is in the system.
The Always/Never/When in doubt framework is solid. It maps directly to how structured prompts work best in practice: explicit constraints beat vague descriptions every time.
One thing I'd add to step 5 is that the injection points you list (system prompt, tool prompts, guardrails) are all just semantic blocks. Role, constraints, examples, output format. When you treat them as separate, labeled sections instead of one big wall of text, the model follows them more reliably. It also makes your vibe spec auditable because you can trace every rule back to a specific block.
I've been building flompt (flompt.dev) around this exact idea. It breaks prompts into 12 typed blocks (role, constraints, examples, chain of thought, etc.) and compiles them to Claude-optimized XML. Makes the kind of structured vibe injection you describe here much easier to iterate on. Open source: https://github.com/Nyrok/flompt
This is one of those posts where the framework is deceptively simple but the implications are deep. The Always/Never/When in doubt structure is basically a decision tree for personality, and it works because it mirrors how humans actually internalize brand voice — through constraints, not descriptions.
One thing I've learned building AI systems: the vibe isn't just about what the model says, it's about what it chooses NOT to say. The most brand-defining moments happen in the negative space. When your AI confidently says "I don't know, here's who can help" instead of hallucinating an answer, that IS your brand. Most founders obsess over the happy path tone and completely ignore how their AI handles uncertainty, which is where users form their deepest trust impressions.
I'd also push back slightly on treating vibe specs as static artifacts. In practice, your vibe should evolve as you learn from real user interactions. The first version of your spec is always wrong in interesting ways — you'll discover edge cases you never imagined. The real value is in the iteration loop: ship, observe weird responses, update the spec, ship again. Treat it more like a living config than a one-time document.
This nails something most builders miss. The default LLM personality is aggressively helpful and apologetic. If you don't override that deliberately, your product feels like every other AI wrapper. The constraint-based approach (what it won't do) is often more defining than the positive instructions.
I like the framing of vibe as configuration instead of decoration.
One thing I’ve noticed is that early-stage founders underestimate how much inconsistency kills trust. Even small shifts — being warm in one flow and robotic in another — make the product feel unreliable.
Golden examples seem underrated. Most teams obsess over prompt tweaks but don’t formalize examples as tests.
Do you think vibe specs should be treated like versioned product artifacts (similar to API contracts), or kept more flexible?
The golden examples idea is really smart. I'm building an AI writing tool and one of the hardest things has been making sure the AI's tone stays consistent across different types of interactions. You can write the most detailed system prompt in the world but without concrete examples of "this is what good looks like vs bad" it still drifts.
The edge case playbooks are underrated too. Most of the time users don't notice your AI's personality — they only notice it when something goes wrong. That's where trust gets built or destroyed.
I think a lot of founders treat AI as a utility layer instead of a brand surface. But if the AI output becomes the primary user experience, then brand consistency becomes even more important.
Have you seen any examples where strong AI branding directly improved retention?
Interesting take on treating vibe as part of product logic instead of just surface-level branding. I’ve seen similar patterns in ecommerce where brand feel directly affects trust and conversion, even before users engage with features. Curious how you decide where to draw the line so branding enhances the product without distracting from core value.
This is exactly what separates AI products that feel like commodities from those that feel like brands. The "Always / Never / When in doubt" framework is brilliant because it turns abstract "vibe" into executable instructions.
One thing I've noticed: the edge case playbooks are where most teams drop the ball. Everyone defines the happy path, but your brand is actually tested when things go wrong — the angry user, the confused user, the user asking for something you don't do. Having concrete rules for those moments prevents the model from improvising its way into a brand violation.
The golden examples as regression tests is smart too. We started doing something similar where we track "weird responses" from users and turn them into test cases. It's caught so many prompt regressions before they hit production.
Great writeup — this should be required reading for anyone building AI products.
ran into this building our ai products. leaving the model to figure out the vibe gives you generic helpful-assistant energy that matches nothing. what worked: write constraints not descriptions. not "be friendly" but "never open with sorry" and "always end with one concrete next step". does that hold across different models or does each need separate instructions?
great advice
I've been a PM for 5 years and always struggled with JIRA's slow roadmaps.
So I built TrackLens using Vibe-coding. Its a tool that pulls your Epics and lets you manage them locally with a real-time Gantt view.
The "golden examples" approach is exactly what I've been missing. I've been tweaking system prompts blindly without reference answers to test against - no wonder the tone keeps drifting.
The "Always / Never / When in doubt" framework is really practical. I've been building tools that use LLMs under the hood and the biggest lesson was exactly this — if you don't explicitly define the personality boundaries, the model defaults to this generic helpful-assistant voice that feels like every other AI product out there.
One thing I'd add: the golden examples are worth maintaining as a regression suite, not just a one-time exercise. Every time a user reports a weird response, that's a new test case. We started logging edge cases from support tickets and turning them into golden examples. Within a few weeks we had maybe 40 of them, and they caught prompt regressions way faster than manual QA ever did.
The edge case playbooks are underrated too. Most teams I've seen only define the happy path in their prompts and then act surprised when the model gets creative in failure scenarios. Defining what happens when things go wrong is where brand trust actually gets built or destroyed.
as much as we don't like to admit it, branding can make or break your startup. great tips.