I recently completed my first LangGraph project that was more than a simple tutorial. It simulates a newspaper editorial workflow where a set of agents turn a story idea into a finished article. The newsroom itself wasn’t the goal, I simply used it to learn LangGraph properly.
Learning LangGraph
I explored several frameworks, including OpenAI Agents SDK, CrewAI, and AutoGen, but eventually settled on LangGraph. Modeling the application as a graph felt natural, and the level of control appealed to my background as a senior engineer.
I started with Udemy courses and Medium posts, but the best material came from LangChain’s own academy. The LangGraph foundations and deep research project courses were the two most useful ones.
Modeling agents as subgraphs
The system ended up being a mostly linear workflow with agents such as Assignment Editor, Research Assistant, and Reporter. I modeled each agent as its own subgraph with a single responsibility.
This worked well. I could spend a couple of days improving the Reporter, then move on to the Graphics Desk. Once I was happy with the individual agents (subgraphs), stitching them together into a parent workflow graph was trivial.
Prompt management was a surprising challenge
I wasn’t expecting this, but keeping track of which prompt does what quickly became difficult. Several agents shared things like guardrails and writing guidelines, and sharing these without duplicating or contradicting instructions was surprisingly hard.
In an agentic system, prompts are effectively code, but because they’re written in natural language, they lack the structure and constraints of a programming language.
I ended up using XML-style elements in prompts to indicate things like <Task> and <Output Format>. This probably helps the model, but it definitely helped me keep things organized. This is also what Anthropic recommends in their context engineering guide.
LangSmith for tracing
You can enable LangSmith tracing simply by providing an API key. It’s the easiest way I’ve found to add tracing with a usable UI, and I learned very quickly that it’s a must-have. You simply cannot build an agentic system without tracing.
LangSmith also includes built-in evaluation tools, which I didn’t use in this project. That’s an area that clearly needs more attention, and if I were to extend this system, LangSmith would be my starting point for proper evaluation.
Editing long-form articles
Editing the articles turned out to be one of the hardest problems. The first draft always needs several rounds of reflection and revision. It’s easy enough to analyze factual or stylistic issues, but fixing them is much harder.
A full feature article can be around 2,000 words. Single-shot rewrites often fix some problems but introduce new ones, and the system easily gets stuck in a review–revise loop where each iteration drifts further from the original.
I wasn’t able to solve this completely. The best results came from revising the article section by section, giving the model one section to edit along with the preceding and following sections to preserve flow. This worked much better, but increased latency and token usage beyond what made sense for a portfolio project. It is, however, the approach I’d try in production.
Skills as a software pattern
I only noticed this afterward, but LangChain has a section in their documentation about skills. This is the same skills concept Claude Code introduced some time ago, but framed more explicitly as a software pattern.
This would have been a good fit for my Research Assistant agent. It doesn’t rely on a single master prompt; instead, each node behaves like a small sub-agent. Generating web search queries is one skill, curating results is another, and packing them into state is a third. Modeling these as skills would likely make the code cleaner.
Final thoughts
I like LangGraph. Once it clicks, modeling systems as explicit graphs and subgraphs feels natural, especially coming from a traditional software engineering background.
The biggest drawback is the learning curve. If you’re building something for clients, it’s worth being aware that you can accumulate technical debt quickly. I’d probably start with a lower-code framework like n8n or CrewAI to prototype, and only switch to LangGraph if that doesn’t scale—or if there’s a team willing and able to maintain a more complex system.
The full project code is available in this repo.
Top comments (0)