How to read this guide
The guide is organized around the four prompting surfaces inside a Darwin worker. Most rules apply across surfaces, but each section is written so you can jump straight to the one you need.
Preamble — where prompts live inside a worker.
General principles — the cross-cutting rules that apply everywhere.
Markdown conventions — the format we use inside Objective prompts.
How to prompt an effective Objective.
How to prompt next stage conditions.
How to prompt in the Individual and General Knowledge bases.
How to prompt tools usage.
How to prompt files usage.
1. Preamble — Where prompts live in a Darwin worker
Inside an AI worker there are four sections where we can prompt instructions.
General knowledge base
Individual knowledge base
Objectives
Next stage conditions
General knowledge base (GKB)
A space where we define global information or instructions for every worker in the workspace. For example: business location, working hours, contact information, and frequently asked questions. All workers in the workspace can use this context to respond.
Individual knowledge base (IKB)
A space reserved for one specific worker, where we define information, instructions, and personality that only belong to that worker. For example, in a workspace with a sales worker and a post-sales worker, each one needs different prices (products vs. maintenance) and different personalities (persuasive vs. consultative).
Both the IKB and GKB contain the same set of sub-sections.
General
A space for custom or premade blocks of information in text format that the worker has available as permanent context. The content is fixed as part of the prompt and is available in every stage of every pipeline. It is not a retrieval tool that is only called when needed.
Products
A space where we can load spreadsheets for the worker to use as context. This works as a retrieval tool.
Files
A space where we can load files for the worker to use as context or to send into the conversation.
PDF files can be set as a retrieval tool so the worker can look for information inside them when needed, or as documents to send into the conversation.
Other file types can only be set as documents to send into the conversation.
Websites
A space where we can set websites to scrape so the worker can use the result as context. This works as a retrieval tool.
A retrieval tool lets the worker query external data sources for specific information (spreadsheets, PDFs, web scrapes) on an as-needed basis. By retrieving only what is relevant, it optimizes performance and prevents the model’s context window from becoming congested.
Objective
A space inside an AI stage on any pipeline where we define the worker’s Objective for that particular stage.
Example: Ask the human for its name, surname and age.
Next stage conditions
A space inside an AI stage on any pipeline where we define the conditions that, when met, make the worker move to a different stage.
Example: If the human mentioned its name, surname and age.
2. General principles
These principles apply to every prompting surface. Treat them as the default; the rules in later sections refine them for specific contexts.
Treat the AI like a brilliant new hire
The model is capable but has no context on our norms, our customers, or how we want things done. The more precisely you describe the destination and the success criteria, the better the result. If a colleague with no context on the task would be confused reading your prompt, the AI will be too.
Be specific and outcome-oriented
Describe the outcome you want, not every micro-step to reach it. Reserve absolute language (Always, Never, Must) for true invariants — safety rules, required outputs, or prohibited actions. Use decision rules for everything else.
Give context, not just commands
Explaining the reason behind an instruction makes the model generalize correctly when the conversation drifts from the cases you anticipated. “Never use ellipses” is weaker than “Never use ellipses, because the answer is read aloud by a text-to-speech engine.”
Use consistent vocabulary
The same concept should always be called by the same name. Pick one term and stick to it across the Objective, the conditions, the IKB, and the GKB. Inconsistency is a top cause of the model interpreting two instructions as different requirements.
Use “Human” to refer to the person in the conversation. Not “lead”, “customer”, “client”, or “user”.
Use “Assistant” or “AI” to refer to the worker. Not “you” or any other pronoun.
Use “mentioned” to refer to what the human said. Not “shared”, “told”, or “wrote”.
Prefer positive instructions over negation
The model creates what it sees. Telling it “do not write long sentences” still primes it on long sentences. Tell it what to do first (“Write short, concise sentences”), and only then add the negation if it is still needed.
State the scope explicitly
Modern models follow instructions literally. If a rule should apply broadly, say so (“apply this to every step”, “in every response”, “across every channel”). Implicit generalization is no longer reliable.
Eliminate conflicting instructions
If the Objective says “always greet by name” and the GKB says “never greet by name when the conversation is reopened in less than an hour”, the model has to guess which one wins. Either reconcile them in one place, or write an explicit priority rule (“Stage instructions override knowledge-base defaults”).
3. Markdown conventions for Objective prompts
Objective prompts are read by the model as plain text, but the markdown structure inside them gives the model strong signals about hierarchy and intent. Across every Objective prompt, follow these conventions.
Use headings to show hierarchy
When an Objective has multiple phases or branches, separate them with headings (#, ##, ###). Headings give the model an unambiguous map of the structure and let you nest sub-instructions cleanly.
Use blockquotes for literal phrases the AI has to quote
When you want the assistant to say something verbatim, put it inside a blockquote. This visually separates literal speech from meta-instructions.
“Hello {name}, how can I help you today?”
Use bullet lists for unordered items
Use - bullets for sets of items where order does not matter (FAQs, options the human can pick from, things to confirm in any order).
Use numbered lists for ordered steps
Use 1., 2., 3. when the order of execution matters. Numbering communicates a sequence the model should respect. When a step needs to be broken into sub-steps that also run in order, use a decimal notation under it (1.1, 1.2, 1.3, …) so the hierarchy is explicit.
Example:
Ask for the human’s name. 1.1. If the human asks why before answering, explain that it is needed to confirm the appointment. 1.2. If the human refuses, end the stage without continuing.
Once the name is known, ask for the human’s email.
Avoid bold and italic
Bold and italic styling rarely changes model behavior and adds visual noise. Use headings, lists, and blockquotes for emphasis instead. Reserve bold or italic only when calling out a single critical token in a long paragraph and there is no cleaner alternative.
4. How to prompt an effective Objective
The Objective tells the worker what to accomplish during a stage. It is the single most influential piece of text in a stage — everything else is context.
1. Be direct
Avoid politeness filler like “Please could you…”. Open with the Objective.
“Your Objective is to…”
2. Do not personify the Assistant
The system prompt already defines who the Assistant is by combining its name, role, company, and personality. Repeating that framing inside the Objective is redundant and pushes the actual task further down. Open with the task itself, not with an identity statement.
Not recommended: “Você é uma IA responsável por agendar uma visita. Pergunte ao Humano…”
Recommended: “O Objetivo é agendar uma visita. Pergunte ao Humano…”
3. Put instructions at the start and key constraints at the end
Models pay the most attention to the start and end of a prompt. Place the main command first. If there is a single non-negotiable constraint, repeat it at the end as a closing reminder.
4. Reference the human as “Human”
Use “Human” inside the prompt. Not “lead”, not “customer”, not “client”. This keeps vocabulary consistent across the Objective, the conditions, and the knowledge bases.
5. Reference the AI as “Assistant” or “AI”
Use “Assistant” or “AI” to refer to the worker. Not “you” or any other pronoun. Second-person pronouns shift the model’s framing in ways that are hard to predict.
6. Use positive constraints as orders
Tell the model what to do in an imperative way.
“Mention X.” “Ask Y.”
7. Avoid overly rigid positive constraints
Rigid constraints can make the worker loop on the same task. A rigid constraint is one that opens with “Always”, “Only”, or similar absolute words.
Examples to avoid:
“Always ask the human for its name.” “Only mention that we sell cars.”
Use absolutes only for true invariants (safety, required outputs, hard prohibitions).
8. Use “Never” for negative constraints
When something must not happen, mark it with “Never” so the model treats it as a hard limit.
“Never mention X.” “Never ask Y.”
9. Pair every negation with a positive instruction
Do not prompt only what the model must not do. First tell it what to do, then add the negation.
Not recommended: “Do not write long sentences.”
Recommended: “Write short, concise sentences. Never write a sentence longer than 20 words.”
10. Break down complex tasks
If a stage has too much logic, the model will start cutting corners. Split it into multiple stages on the same pipeline so each Objective stays small and self-contained.
11. Number the steps when order matters
If the stage needs a specific sequence, use a numbered list.
Ask X.
After the human answers X, ask Y.
After knowing X and Y, say Z to the human.
12. Always set fallbacks
A fallback covers the case where the assumption in your instruction does not hold. Without one, the model invents.
Zero-shot fallback (no example, just the rule):
Not recommended: “Greet the human by calling its name.”
Recommended: “If you know the human’s name, greet him/her by calling its name. If you do not know it, greet without calling any name.”
One-shot or few-shot fallback (include an example of the desired style):
Not recommended: “Greet the human by saying: ‘Hello {name}, how are you doing?’”
Recommended: “If you know the human’s name, greet him/her by calling its name, like:
‘Hello {name}, how are you doing?’ If you do not know it, greet without calling any name.”
Use few-shot when the desired format, tone, or phrasing is hard to describe in words. Keep examples close to real conversations and cover edge cases.
13. Align Objectives with next stage conditions
Objectives and next stage conditions are deeply related: an Objective usually exists to gather the information that a transition condition requires. Anything mentioned in a condition must also be asked for (or be reachable) from the Objective.
Bad example:
Objective: Ask the human for its name.
Conditions:
The human mentioned its name.
The human mentioned its email address.
Good example:
Objective: Ask the human for its name and email address.
Conditions:
The human mentioned its name.
The human mentioned its email address.
14. State the scope of each rule explicitly
Models follow instructions literally. If a rule must apply broadly, say so.
Weaker: “Confirm the date.”
Stronger: “Confirm the date every time the human proposes one, even if the human has confirmed a previous date earlier in the conversation.”
15. Keep static knowledge out of the Objective
The Objective should describe what to do in the stage, not what the business is. Move prices, policies, FAQs, opening hours, and product details into the IKB or GKB. This keeps the Objective short and makes business facts reusable across stages.
16. Define success and stop criteria
Tell the model when the stage is done. Without an explicit success criterion, the model can keep asking follow-up questions or wrap up prematurely.
“The stage is complete when the human has confirmed its name, its email and a preferred date. As soon as all three are present, stop asking follow-up questions.”
5. How to prompt next stage conditions
Conditions are what makes the worker move from one stage to another. They are evaluated as triggers for transition tools — getting them wrong creates the worst class of bug: the worker silently transitioning to the wrong place, or never transitioning at all.
1. Be direct, concise, and clear — one rule per condition
Each condition should communicate a single purpose in a single short sentence. If a condition needs more than two clauses — chained with “and”, “or”, “but”, or semicolons — split it into separate conditions inside the same group.
This applies to both group types. In an all group, instead of writing one sentence that strings several requirements together with “and”, write each requirement as its own condition — the group itself already means “all of these must be true”. In an any group, instead of writing one sentence that strings several alternatives together with “or”, write each alternative as its own condition — the group itself already means “any of these makes it true”. Letting the group do the work keeps each condition focused on a single fact, which the model can evaluate cleanly instead of collapsing the whole chain into a single fuzzy check.
A sentence with embedded negatives (“…but not if X”; “this is only true after Y”) is the strongest sign that decomposition is needed. The negatives usually belong as their own atomic conditions, or as qualifiers folded into the positive triggers — restating the positive shape often makes the negative redundant.
2. Reference the human as “Human”
Same vocabulary as the Objective. Not “lead”, not “customer”, not “client”.
3. Reference the AI as “Assistant” or “AI”
Not “you” or any other pronoun.
4. Use “mentioned”, not “shared”
Avoid “shared” when talking about what the human said. Use “mentioned”.
“The human mentioned that he/she is interested in…”
5. Use “explicitly” to limit AI interpretation
Adding “explicitly” tells the model the condition only fires when the trigger is unambiguously present in the message. This is the single most effective lever for reducing false positives.
“If the human explicitly mentioned…”
6. Disambiguate conditions that lead to different stages
If two conditions look similar but lead to different stages, the model will guess. Reference condition A inside condition B to expose the difference.
Condition A: “If the human explicitly mentioned its preference is X.” Next stage: Stage A.
Condition B: “If the human explicitly mentioned its preference is Y, which is different from X because of…” Next stage: Stage B.
7. Reference tool returns explicitly
To trigger a transition based on the return value of a tool, name the tool and describe the value the return contains.
“If the return of the tool indicates X.”
When possible, quote the literal token the return uses so the model does not have to interpret it.
“If the return of the tool explicitly contains the word ‘patient’.”
8. Avoid asymmetry — close every dead zone
A dead zone is a value that no condition covers. The model will pick one of the adjacent conditions, usually the wrong one.
Condition A: “If the human mentioned that the number of cars is greater than 50.”
Condition B: “If the human mentioned that the number of cars is smaller than 50.”
What happens at exactly 50? Either include the boundary in one of the two conditions (≥ 50 and < 50) or add a third condition for the equality case. The same applies to dates, ranges, and any other continuous variable.
9. Use deterministic quantifiers
For numbers, dates, and times use unambiguous comparators (≥, ≤, <, >, =, between X and Y inclusive). Avoid colloquial words like “more than”, “a few”, “soon”, “recently” unless the audit rubric has a definition for them.
6. How to prompt in the Individual and General Knowledge bases
1. Maintain order
Use a new block of information for every new topic, and give each block a descriptive name (Promotions, Location, Contacts, General Rules, etc.). One topic per block keeps the model’s retrieval clean.
2. Avoid large texts
If a piece of data is very large (for example a product catalog), it does not belong in a text block. Move it to a catalog (spreadsheet), file, or website where the worker can fetch it via a retrieval tool.
3. FAQs are 1:1
The FAQs section is for question / answer pairs that the worker should reuse verbatim or near-verbatim. Use it only for a 1:1 relationship between a question and an answer. Mixing logic, branching, or long-form policy into FAQs degrades retrieval quality.
4. Place global behavior in the GKB, role-specific behavior in the IKB
Anything that should hold for every worker in the workspace goes in the GKB. Anything that only applies to one worker (its personality, its prices, its scripts) goes in the IKB. This keeps knowledge reusable and avoids one worker’s quirks leaking into another.
5. Do not duplicate stage-level instructions
If an instruction belongs to one stage’s Objective, leave it there. Putting it in the knowledge base too creates a redundancy that the model will eventually treat as a conflict.
7. How to prompt tools usage
1. Use “execute” or “call” to trigger a tool
Use these two verbs and quote the tool name.
“Execute the tool .” (where tool_name is the name of the tool) “Call the tool .” (where tool_name is the name of the tool)
2. Make sure the tool is available in the stage
If you prompt a tool call inside a stage Objective, that tool must be available in the tools section of that stage. Otherwise the model can hallucinate a call to a tool it does not have.
3. Make sure the tool is available everywhere when prompted from a knowledge base
If you prompt a tool call from the IKB or GKB, that tool must be available in every stage where the worker could reach the prompt. Otherwise the model can hallucinate the call in stages where the tool is missing.
4. Always tell the AI what to do with the response
A tool call without a downstream instruction is wasted work. Describe what should happen for each value the tool can return.
“If the return of the tool indicates the human has debt, mention…” “If the return of the tool indicates the human does not have debt, continue with…”
5. Be explicit about when not to call
If a tool is expensive, slow, or one-shot (cannot be repeated), state the conditions under which the model should NOT call it. Pair this with the positive trigger from rule 4.
“Call the tool only after the human has confirmed both the date and the location. Never call it before both pieces of information are present, and never call it more than once per conversation.”
8. How to reference files to send them into the conversation
1. Use “@” to select a file
Use the @ character as a command to select the file you want the worker to be able to send.
