~/articles

Built a 5-Node AI Agent in a Weekend — Here’s What LangGraph Actually Teaches You

Built a 5-Node AI Agent in a Weekend — Here's What LangGraph Actually Teaches You

The idea: give it a job title, get back a structured gap analysis report — fully automated through a LangGraph StateGraph.

The graph has five nodes wired in sequence:

  • fetch_job_requirements — Claude generates realistic job requirements for the given title
  • extract_skills — parses the output into structured JSON (technical, soft skills, certifications)
  • load_candidate_profile — loads the candidate profile from state
  • gap_analysis — Claude compares required vs available skills, returns has/missing/partial classification
  • generate_report — Claude writes a markdown report with priority recommendations

What I learned building this: LangGraph’s value isn’t the graph itself — it’s the explicit state schema. Having a typed AgentState TypedDict that every node reads from and writes to makes multi-step agents debuggable in a way that raw prompt chaining never is. When something goes wrong, you know exactly which node produced the bad output.

class AgentState(TypedDict):
 job_title: str
 raw_job_data: Optional[str]
 required_skills: Optional[dict]
 candidate_profile: Optional[str]
 gap_analysis: Optional[dict]
 final_report: Optional[str]

Run it in Docker:

docker run --rm \
-e ANTHROPIC_API_KEY=your_key \
omerfsen/langgraph-agents:latest \
python examples/run_example.py "AI Engineer"

Originally published by Omer Sen on LinkedIn, 29 June 2026.

← All articles