Service
LangGraph development
LangGraph development is building agent workflows as explicit graphs: typed state, nodes for model calls and tools, conditional edges, checkpoints and interrupts. I, Matin Labkhandagh, design and implement production LangGraph systems, from a single tool-calling loop to a supervisor over specialized agents, for teams that need runs they can pause, resume, inspect and test rather than a chain that works until it does not.
When you need this
- You built a LangGraph prototype that works until a run is interrupted, after which nobody is sure which node executed, which did not, and whether the tool it called had a side effect.
- Your workflow has grown into one agent with twenty tools and a very long prompt, and you suspect it should be a supervisor routing to specialized workers.
- The graph has no checkpointer, or has one that was never tested for resume, and your product needs a human to approve something in the middle of a run.
- You are migrating from LangChain chains or a hand-rolled loop to LangGraph and want the state schema and the edges designed properly the first time.
- You need to run the graph behind an API with streaming, concurrency and a real database, and the notebook setup does not translate.
What you get
- LangGraph orchestration: a short graph design document plus the implemented graph with typed state and conditional edges
- Checkpointing and state persistence wired to your store, with resume behavior verified by tests
- State and retry handling per node, including bounded retries, fallback paths and interrupt points
- Tool-calling hardening: schema-validated tool inputs, timeouts and a tool-call ledger
- A supervisor or multi-agent layout where the workload justifies it, with a written rationale where it does not
- MCP integration and RAG integration where the graph needs external tools or grounded context
- Evaluation tests: trajectory and output tests that run in CI
- Docker deployment and documentation, including a runbook for interrupted and stuck runs
Outcomes
- A graph whose state is typed and documented, so a change to the schema is a deliberate migration rather than a silent break in production.
- Checkpointed runs that resume from the last completed node after a crash, a timeout or a human interrupt, without repeating side effects.
- Human-in-the-loop points placed exactly where a decision is irreversible, with the run paused and inspectable rather than guessed.
- Bounded retries and fallback paths per node, with the failure recorded in state instead of buried in a log line.
- Trajectory tests that assert which nodes ran and in what order, run in CI and used as the acceptance criteria for the sprint.
How it works
- 1
20-minute technical call
We walk through the workflow as it exists, ideally with the graph drawn or the code open. I want to know what state flows through it, which nodes talk to the outside world, where a human has to intervene, and what a bad run looked like the last time it happened.
- 2
Written diagnosis
You receive a written diagnosis of the graph: where state is lost or duplicated, which edges are ambiguous, whether the checkpointer is configured so resume actually works, where the graph does work a plain function could do, and what a run costs in tokens. It stands on its own if you decide to do the work in-house.
- 3
Fixed-scope proposal
A fixed-scope proposal under the AI Agent Engineering Sprint, starting at $1,200 for 7–10 working days. It lists the nodes, the state schema, the interrupt points, the tests and the deployment target that define done.
- 4
Implementation and handover
I implement the graph, its persistence and its tests in your repository, then hand over the code, the documentation and a runbook with a walkthrough. The bar I set is that your engineers can add a node or a tool without calling me.
Proof: what I built
Jozveh-AI runs a LangGraph supervisor over eight agents: source material passes through retrieval and reranking on Neo4j GraphRAG, source-cited generation, then RAGAS, a claim-level LLM judge and grounding filters before an RTL document is produced. The pipeline is covered by 673 tests across 77 files.
Read the Jozveh-AI case studyIn OmidGPT the agentic runtime handles resumable tool turns, a tool-call ledger and per-tool user consent, which is the same state and retry discipline I apply when a LangGraph node calls a tool with side effects.
Read the OmidGPT case study
Questions about langgraph development
- Can you work with an existing LangGraph or agent codebase?
- Yes, and most sprints start that way. I read the graph, its state schema and its tests first, then the diagnosis says what to keep, what to restructure and what to delete. I do not rewrite a working graph for style; I change what causes lost state, unsafe retries or untestable behavior.
- When is LangGraph the wrong choice?
- When the workflow is a fixed sequence with no branching, no long-running steps and no human approval, a plain function that calls the model and a tool is simpler to run and to test. LangGraph earns its place when you need checkpoints, interrupts, conditional routing or several agents sharing state. The diagnosis says which case you are in.
- How do you handle human approval inside a run?
- The graph is checkpointed before the sensitive node and paused at an interrupt point. The pending action and its inputs are stored in state where your UI or an operator can read them, and the run resumes from that checkpoint once approved or takes a rejection edge if not. This is tested like any other path.
- Do you also build the API and deployment around the graph?
- Yes. A graph in a notebook is not a product. The sprint includes running it behind a FastAPI service with streaming where needed, persistence in your database, and Docker deployment with a runbook. If you already have a backend, the graph is integrated there instead.
- How do you test a LangGraph agent?
- Two kinds of tests. Trajectory tests assert which nodes ran and in what order for a given input, with tools and models stubbed so they are deterministic and fast. Output tests run a small set of real cases through the graph and check the result against rules or a judge. Both run in CI and are the acceptance criteria in the proposal.