Course Content
CrewAI Multi-Agents
9 sections · 53 lessons
How do task descriptions affect output quality?
What you need to know
What CrewAI does with the text
For each task, CrewAI builds a prompt from the agent's persona, then the task description, then the expected_output framed as the criteria for the final answer, then any context. The model reads the task text last and closest to where it writes, so that is what it follows most.
The five parts of a strong description
| Part | Example |
|---|---|
| Input | "Using the search tool..." |
| Operation | "...find the largest vendors..." |
| Cardinality | "...the 5 largest..." |
| Fields | "...name, funding stage, one differentiator..." |
| Evidence | "...with a source URL for each." |
Bad: "Research the market."Good: "Using the search tool, find the 5 largest vendors of payroll software for Indian SMBs as of {year}. For each give: name, funding stage, price per employee per month, one differentiator. Cite a source URL for each fact. Skip vendors with no public pricing and say that you skipped them."Why vague descriptions cost more
An agent with an unclear goal explores. It runs more searches, reads more pages, and sometimes hits max_iter. Each step re-sends the whole prompt, so the cost grows with every extra step. A clear stopping point ("5 vendors") lets the agent finish.
Keep instructions and acceptance separate
description— how to do it and what to use.expected_output— what the answer looks like.
When both are mixed into one long paragraph, the model finds it harder to know when it is done.
A real-life example
A market-research crew for a payroll SaaS startup ran the "Bad" version above for a month. Traces showed an average of 11 search calls per run and outputs covering anything from 3 to 14 vendors, some in the US.
After the "Good" rewrite, the same agent averaged 6 search calls, always returned 5 vendors, and flagged 1 or 2 vendors per run as "no public pricing" instead of inventing prices. Cost per run fell from about Rs 18 to about Rs 9, and the analyst task downstream stopped failing on missing price fields.
Follow-up questions to expect
- "Does the backstory matter less then?" — It still sets standing behaviour and tone, but the task text drives what happens in this step.
- "How do you know a description is vague?" — Run it 5 times on the same input: if outputs differ a lot in scope or length, or tool calls vary widely, the description is under-specified.
- "Can you template descriptions?" — Yes, with
{placeholders}filled atkickoff(inputs=...); every placeholder used must be present in the inputs.