Archived copy of an article by Omer Sen, originally published on LinkedIn on 2026-06-29.
Original: https://www.linkedin.com/pulse/built-5-node-ai-agent-weekend-heres-what-langgraph-actually-omer-sen-f0gke/ · ← back to faruk.net
Original: https://www.linkedin.com/pulse/built-5-node-ai-agent-weekend-heres-what-langgraph-actually-omer-sen-f0gke/ · ← back to faruk.net
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"