What CrewAI is good for
CrewAI describes work the way a manager would. Each agent gets a role, a goal and a backstory, plus the tools it may use. Tasks say what needs doing and what the output should look like. A crew runs those tasks, either in sequence or with a manager agent that delegates. For pipelines like research, draft and review, you can have a working prototype in hours.
Flows are the production layer. A Flow is ordinary Python with event-driven steps, typed state, branching and the ability to call crews, single agents or plain code at each step. That lets you keep deterministic work, such as fetching data, validating output and writing to systems, in code, and use agents only where judgment is needed.
CrewAI has native integrations for OpenAI, Anthropic, Google, Azure and Amazon Bedrock models, and reaches other providers, including local models, through LiteLLM. Agents can use built-in tools, custom Python tools and MCP servers.
How Lumeor uses it
We reach for CrewAI on content-heavy work where separating roles improves quality: RFP answers, proposals, research briefs and grant drafts. Each crew sits inside a Flow that loads source material, runs the crew, validates the structured output against a Pydantic model and saves a draft for human review. Nothing a crew writes goes out without a person approving it.
Triggers and delivery usually stay in n8n, which calls the CrewAI service over HTTP and posts results to Google Docs, Notion or Slack. The RFP response guide shows that split, and CrewAI vs LangGraph covers the trade-offs against a graph-based design.
Limits to plan around
- Cost and latency multiply. Every agent and every delegation step is more model calls. A three-agent crew can use several times the tokens of one agent doing the same job. See the cost of a multi-agent system for how this affects budgets.
- Non-determinism. Agents can take different paths on the same input. Keep tasks narrow, outputs structured and critical logic in Flows rather than prompts.
- Debugging. When a crew produces a bad result, you need traces to see which agent went wrong. Set up tracing before you go to production.
- Python only. Teams working mainly in TypeScript will be more comfortable with LangGraph or a provider SDK.
- Provider differences. Structured output and tool calling behave differently across providers. Test your chosen models on your real tasks.
When to pick something else
- One agent with good tools, built on the Claude API or OpenAI API, for most single-purpose business tasks.
- LangGraph when you need explicit control, checkpointing and human-in-the-loop pauses on long-running agents. See the LangChain page.
- n8n when the process is mostly integrations with a few AI steps that operators should be able to read.