Pressroom

Nine AI agents turn a rough brief into an .mdx article with charts, diagrams, frontmatter, and an audit trail. The model runs locally through Ollama.

Runtime
LangGraph
Model
Ollama ยท local
Agents
9 nodes
Output
Publication
An open handwritten notebook with a fountain pen resting on the page

From rough brief to MDX

Pressroom takes source material and turns it into an MDX article. Nine agents split the work across loading, interviewing, outlining, visuals, drafting, review, cleanup, metadata, and publishing.

Drop briefs, reports, or JSON data into input/ and the pipeline writes an .mdx file to output/. Charts are rendered, diagrams are drawn, frontmatter is filled in, and the voice pass runs before publication. Every model runs locally through Ollama, so the whole thing works offline with no cloud API keys.

Nine agents with one human checkpoint

The workflow runs in order. It pauses after the interview agent asks its questions, then collects your answers or accepts the suggested defaults. The reviewer can send a draft back to the writer until it approves the piece or reaches the iteration cap.

issues remain

approved or capped

๐Ÿ“ฅ input/
briefs, reports, JSON

๐Ÿ“‚ Loader

โ“ Interview

๐Ÿง‘ Human answers
or defaults

๐Ÿ—‚๏ธ Outline Designer

๐Ÿ“Š Visualizer

โœ๏ธ Writer

๐Ÿ” Reviewer

๐Ÿงน Humanizer

๐Ÿท๏ธ Metadata

๐Ÿ“ฆ Publisher

๐Ÿ“„ output/
run-id-date-slug.mdx

๐Ÿ—„๏ธ output/audit/run-id/
state + step files

What each agent contributes

Loader

Reads every file in input/ plus the selected publication template into shared pipeline state.

Interview

Reads the brief and asks a few clarifying questions, without rerunning when a paused pipeline resumes.

Outline Designer

Uses the answers to build a section plan and reserve places for charts, diagrams, or UI blocks.

Visualizer

Fills chart templates from extracted data, then asks the model for Mermaid diagrams and UI components when the article needs them.

Writer

Writes the MDX draft from the outline and revises it whenever the reviewer sends the piece back.

Reviewer

Runs mechanical checks and editorial criteria, then returns specific issues to the writer.

Humanizer

Removes recognizable AI patterns and adjusts the rhythm while keeping the article structure intact.

Metadata

Writes the frontmatter title, description, and tags from the publication template.

Publisher

Replaces visual placeholders, merges imports, and writes the final .mdx file.

The writer and reviewer negotiate until the piece holds up

The reviewer runs mechanical checks and editorial criteria on every draft. When it finds issues, it hands them back to the writer, which revises and returns for another pass.

That loop is bounded. Once the piece is approved, or the --max-iterations cap is reached, the pipeline advances to the humanizer regardless of approval status. A stubborn draft cannot stall the run forever.

How a run moves through the pipeline

  1. Load
  2. Interview
  3. Outline
  4. Visualize
  5. Write
  6. Review
  7. Humanize
  8. Metadata
  9. Publish

Configured by templates, not by editing code

Publication templates

Template controls the run

A publication template sets the editorial goal, section structure, chart recipes, and per-agent tuning. The repo ships with a default template for general posts and a finance-analysis template for beginner-friendly stock write-ups.

Visual templates

Charts without the model touching code

Declarative YAML recipes for price lines, category bars, grouped bars, and verdict callouts are filled from extracted data. The model never has to write an ECharts option object or balance a brace.

CLI flags

Control a run from the CLI

Choose the template, cap the review loop with --max-iterations, review defaults with --ask, or resume a paused run with --thread-id. Sensible defaults stay quiet.

Every file keeps its audit trail

An id on every run

Each run gets an incrementing numeric id. It prefixes the output filename and names a per-run directory under output/audit/, so any published article maps directly to the run that produced it.

Step files in order

To trace a defect, open the audit directory and read the step files in order. The outline, writer, reviewer, and humanizer outputs are saved separately, and the full writer-to-reviewer history lives in a single state snapshot.

Case study, Oracle from analysis to article

Is Oracle Stock Undervalued? was produced by two projects working in sequence. Equilyze did the analysis. Pressroom did the writing. No section was authored by hand.

๐Ÿงฎ Equilyze
runs ORCL analysis

๐Ÿ—‚๏ธ report.md +
valuation ยท analysis ยท news JSON

๐Ÿ“ฅ Pressroom input/

๐Ÿ–จ๏ธ 9-agent pipeline

๐Ÿ“„ is-oracle-stock-undervalued.mdx

๐ŸŒ Published on thejournal

Step one ยท Equilyze

Generate the analysis and artifacts

Equilyze evaluated Oracle and wrote report.md alongside valuation_data.json, analysis.json, and news_data.json. Those files held the numbers, the structured recommendation, and the researched news behind the story.

Step two ยท Pressroom

Turn the artifacts into a publication

That report and its artifacts were dropped straight into Pressroom's input/. The nine agents outlined, drafted, fact-checked against the JSON, rendered the charts, and published the finished .mdx file.

Read more about the full pipeline →

The outcome

Pressroom turns a folder of source material into a finished, formatted article and leaves a full audit trail behind it.

Deterministic visuals keep charts tied to their data. A bounded review loop keeps the run moving, and local models keep every draft on the machine. If an artifact is missing, Pressroom records the problem and keeps going instead of breaking the run.