Fouzan Ahmed.
All projects
Agentic AIWorkflow AutomationLLM OrchestrationContent Generation

NewsFlow Autonomous AI Newsletter & Video Agent

A multi-agent workflow that turns trending news into a published newsletter and narrated video, unattended.

Personal projectJan 2025 – Present

Problem

  • News moves faster than a one-person content pipeline can keep up with. Researching a trending story, writing it up in a consistent newsletter voice, turning that into a narrated video script, and getting both published, is a lot of repeated manual work if you want to do it regularly.
  • I wanted to see how far an agentic workflow could go in owning that whole cycle: not a single prompt-and-done call to an LLM, but a system that plans across several steps, recovers when something fails, and stays grounded in what actually happened instead of drifting into generic or fabricated content.

Architecture

  1. Step 01

    Trigger

    Scheduled or manual kick-off

  2. Step 02

    Research agent (RAG)

    Grounds output in real news

  3. Step 03

    Writing agent

    Newsletter copy + video script

  4. Step 04

    TTS & visuals

    AI narration and overlays

  5. Step 05

    Error-handling hooks

    Retry & recover, not stop

  6. Step 06

    Publish

    Newsletter + video, no manual step

One trigger fans out into research, writing, narration and publishing agents, with retries at every hop.

  • Built as an n8n workflow: a trigger kicks off a chain of nodes that handles research, writing, narration, visual generation and publishing, with no manual step after the trigger fires.
  • A RAG step grounds the output in real current news before any writing happens, so the newsletter and video script stay tied to what actually happened rather than to whatever the model already 'knows'.
  • LangChain and LangGraph handle tool calling, memory threads and stateful graph traversal, which is what lets the agent plan content across several steps instead of generating everything in one shot.
  • Branching logic, conditional routing and error-handling hooks with retries are built into the workflow itself, so a failed step (a flaky API call, a malformed response) gets retried or routed around instead of taking the whole run down.
  • Structured output, system prompts, chain-of-thought and few-shot examples keep the newsletter tone and the video script structure consistent from one automated run to the next.

Engineering decisions

  • n8n as the orchestration layer, not a custom Python script. n8n's visual DAG made branching, retries and conditional routing much faster to iterate on than hand-rolling that control flow, while still calling out to LangChain/LangGraph and the model APIs for the actual agent logic.
  • RAG before generation, not generation with a vague 'stay factual' instruction. Grounding the research step in retrieved current news, before any writing happens, is a structural guardrail against the model inventing plausible-sounding but wrong details, rather than relying on prompt wording alone.
  • LangGraph for stateful multi-step planning. A single LLM call can't plan a newsletter, a script and coordinated visuals as one coherent output. LangGraph's graph traversal and memory threads let the agent carry context across those steps instead of treating each as an isolated call.
  • Recover, don't just alert. Error-handling hooks are wired to retry or reroute failed steps automatically, since the whole point of an unattended pipeline is that it shouldn't need a person to notice a failure and restart it manually.

Implementation

  • Built the end-to-end n8n pipeline: trending news in, published newsletter and video out, including LLM-written copy, AI narration and visual overlays, with no manual step.
  • Designed branching logic and conditional routing so different types of stories (breaking news versus a slower feature) can follow different paths through the workflow.
  • Applied RAG to pull real current news into the context before the writing agent runs, keeping the output grounded instead of purely generative.
  • Wired in LangChain and LangGraph for tool calling, memory threads and stateful graph traversal, so the agent can plan the newsletter and the video script as a coordinated multi-step task.
  • Worked directly with MCP, agent architecture and multi-agent orchestration patterns, adapting approaches from Anthropic, OpenAI and LangChain's own documentation as the workflow grew more complex.
  • Used system prompts, structured output, chain-of-thought prompting and few-shot examples to keep tone and structure consistent across runs that happen with no human review in between.

Challenges

  • Keeping the model grounded took real iteration. Early versions occasionally drifted toward plausible-sounding filler when the retrieved news was thin, which is exactly what the RAG step and stricter prompting were built to close.
  • Designing error-handling that actually recovers, rather than just failing more gracefully, meant thinking through what each node's realistic failure modes were (a timeout, a malformed response, a rate limit) and giving each one a specific retry or fallback path.
  • Coordinating state across research, writing, narration and visuals without a traditional application backend, leaning on LangGraph's memory threads to carry the necessary context between n8n nodes.

Results

  • The workflow runs unattended from trigger to a published newsletter and video, with no manual step in between.
  • RAG grounding keeps the output tied to real current events instead of generic or fabricated content.
  • Error-handling hooks and retries mean a single failed step degrades gracefully instead of taking the whole run down.
  • Newsletter tone and video script structure stay consistent run over run, without a human reviewing each output before it publishes.

Technology

Orchestration

n8nWorkflow AutomationBranching & Retries

Agent Frameworks

LangChainLangGraphMCPMulti-Agent Systems

Models & Grounding

Claude APIOpenAIRAGPrompt Engineering

Content Generation

Text-to-SpeechVideo GenerationNewsletter Automation

More projects

Personal / Portfolio project

Problem

APRA publishes superannuation performance data as unversioned Excel filings, with no API and no easy way to compare funds over time.

Key result

Weekly pipeline runs unattended end to end, gated by dbt tests and CI, feeding a live 3-page Power BI dashboard.

PythonApache AirflowdbtAWS S3AWS RDSAWS EC2+8 more

Personal / Portfolio project

Problem

Backtesting a forecasting model on financial time series is easy to get subtly wrong: without point-in-time discipline, the model ends up training on information it wouldn't have had yet.

Key result

A clustering key fix cut partitions scanned on date filters by roughly an order of magnitude, and Time Travel snapshots kept lookahead bias out of every backtest.

SnowflakeSQLPythonAWS S3Streams & TasksWindow Functions+6 more