Build an AI team that researches, writes and reviews, on your own PC
One AI asked to do everything cuts corners. Three with separate jobs check each other's work: a researcher that only collects facts, a writer that only uses those facts, and a reviewer that hunts for anything made up. Wire them together with LangGraph, give them a search tool, memory and a revision limit, and measure every token, so you know what the team costs before you scale it.
- Memory twice over: every run saved by LangGraph's checkpointer, and house-style lessons that carry into the next job
- A cost report on every run: calls, tokens and seconds per agent, and the API-equivalent price
- Ollama with
gemma4:e2b(and optionallyqwen3.5:4bfor the reviewer): Run AI on your PC - uv from docs.astral.sh/uv ↗
- 16GB of RAM. A graphics card makes a three-agent job take seconds instead of minutes
- Helpful first: Build your own Perplexity, a single agent that researches with citations
Why a team, and what each agent does
Split one big prompt into narrow jobs, each with its own inputs, so mistakes get caught.
One model, one giant prompt ("research this, write it up, check it") marks its own homework. A team splits the work so each step can be checked by the next:
- Researcher: plans a few searches, runs a search tool over your notes, and writes a fact sheet where every bullet names its source file.
- Writer: sees only the brief and the fact sheet, never the raw notes, and writes the piece.
- Checks (plain code): word count, every number in the draft must exist in the sources, no bullets or headings.
- Reviewer: compares the draft with the fact sheet, sentence by sentence, and lists unsupported claims and anything the brief asked for that's missing.
If the checks or the reviewer find problems, the draft goes back to the writer with the list, up to two times. Then it either passes or stops and says it needs a human.
Why LangGraphIt's the orchestration layer from the LangChain team: you define the team as a graph of plain Python functions (nodes) that share a state, with edges that decide what runs next. It's well documented, the control flow is explicit, and its checkpointer saves every step. CrewAI is the popular alternative with a role-play style API; it runs Ollama models through LiteLLM (its docs use
uv add 'crewai[litellm]'andLLM(model="ollama/...")). This mission uses LangGraph because small local models do better with tight, explicit steps.Get the kitagent-team.zip has
team.py, three test briefs and a folder of eight notes for a fictional homeware shop, Larchwood Living. kit.md has the team rules and a cost-control checklist.