The monolith
Every multi-agent system starts as a single prompt that did too much. Before we build a graph, let us stare at that prompt and understand exactly why it is broken. If you cannot articulate the failure mode, you will rebuild the same mess with fancier tooling.
The monolithic analyzer
One prompt holds every instruction. When it misbehaves, there is nowhere to look.
prompt = f"""
You are a CV analyzer. Given this CV and job description, do everything:
CV: {cv_content}
Job: {job_description}
Tasks:
1. Extract personal info, experience, education, skills
2. Identify strengths relative to the job
3. Identify weaknesses and gaps
4. Generate improvement suggestions
5. Score keyword match, experience relevance, skills alignment, format
6. Compute an overall score
7. Check ATS compatibility
Return a single JSON object with every field filled in.
"""
response = await llm.generate_text(prompt)
result = json.loads(response) # Good luckThis is a real pattern from production codebases. It works on your three test CVs, then starts missing fields on the fourth one because the model ran out of attention budget.
Two reasons. First, the more instructions you stuff into one prompt, the more the model spreads its attention thin and drops details. Second, when one field is wrong you have no signal on which instruction caused it. Specialized agents let the model focus and let you debug.
Quiz: Quiz
Loading practice…