Software product

Every release ships with all of its content, or none of it ships

One orchestrator, four child workflows, and a categorisation step that routes six kinds of attachment down six different paths before any of them becomes publishable.

Client: Elementor

System flow and narrative

Attached as
Review outcome
Every release ships with all of its content, or none of it ships: system flowAttached as: Confluence page. Review outcome: Approved. Path: Release status change, then Issue pulled in full, then Attachment categorised, then Page fetched, then Merged into one object, then Four webhooks fired, then Internal brief, then Help centre article, then Quiz questions, then Slide deck, then Human approval, then Publication run, then Newsletter posted, then Article published, then Quiz form created, then Deck assembled, then Checklist closed.Release status changeJiraIssue pulled in fulln8nAttachment categorisedn8nText extractedn8nPage fetchedConfluenceDocument fetchedGoogle Docs APIPage convertedAI agentMerged into one objectn8nFour webhooks firedn8nInternal briefAirtableHelp centre articleGoogle DocsQuiz questionsAirtableSlide deckGoogle DriveHuman approvalAirtable / DocsPublication runn8nHeld for revisionAirtableNewsletter postedSlackArticle publishedWordPressQuiz form createdGoogle FormsDeck assembledGoogle SlidesChecklist closedConfluence

Attached as: Confluence page. Review outcome: Approved. Path: Release status change, then Issue pulled in full, then Attachment categorised, then Page fetched, then Merged into one object, then Four webhooks fired, then Internal brief, then Help centre article, then Quiz questions, then Slide deck, then Human approval, then Publication run, then Newsletter posted, then Article published, then Quiz form created, then Deck assembled, then Checklist closed.

Every release ships with all of its content, or none of it ships: system flow

Edges: live is a thicker, full-opacity, travelling dashed line; not taken is a thinner, dimmed, solid line. Nodes: live is a thicker, full-opacity outline; not taken is a thinner, dimmed outline. Color is never the only signal.

01

A status change, not a schedule

Every product release required coordinating content across internal briefs, help centre articles, quizzes and slide decks, by hand, across five separate platforms. The replacement is a 123-node system: one orchestrator and four child workflows covering the whole lifecycle. It starts when a release issue changes status in Jira, which means the content pipeline runs on the same signal the engineering team already uses rather than on a calendar that drifts away from the real release date.

02

Six kinds of attachment, six ways in

The orchestrator pulls the full issue and a categorisation step sorts everything attached to it. PDFs, DOCX and TXT files, Confluence pages, Google Docs, GitHub pages and the raw description text each go down their own branch. A PDF is text-extracted. A Confluence page is fetched as HTML, converted to Markdown, then stripped of interface noise that would otherwise read as content. A Google Doc comes through the Docs API. A GitHub page is converted to clean Markdown by an agent. The board switches between four of these; the categoriser handles all of them.

03

One object, whatever came in

Every branch merges back into a single normalised object. This is the step that makes the rest of the system possible: the four child workflows downstream never have to know whether a given release brief arrived as a PDF, a wiki page or a paragraph typed into a Jira description. Handling heterogeneity once, at the boundary, is what keeps four separate content pipelines from each growing their own copy of the same conversion logic.

04

Four children, fired in sequence

From the normalised object, four webhooks fire in controlled sequence, each starting a child workflow, with deliberate waits between them so the downstream services are never flooded. The four cover the internal brief and its newsletter, the help centre article, the quiz, and the slide deck. They run as separate workflows rather than one long one because each has a different destination system and a different reviewer.

05

Every child ends at a person

This is the branch that matters most. No child workflow publishes anything on its own. The internal brief goes to Airtable for approval, the help centre article is drafted into a Google Doc for review, quiz questions land in Airtable first, and slide images are assembled only once approved. Until a human approves, the work sits in the tool that person already uses and nothing downstream runs at all. An AI system that writes publication-ready content and then waits is a different kind of system from one that writes and posts.

06

What approval actually releases

On approval each child completes its own chain. A second agent writes the newsletter from the approved brief and posts it to Slack. The help centre article is converted to publication-ready HTML, pushed to WordPress, and then the Confluence checklist is updated with the live URL, which is the step that closes the loop and leaves the release record pointing at the published page. Quiz questions are deduplicated, sorted and inserted into a new Google Form. Slide images are pulled from Drive and sorted to guarantee ordering before the deck is assembled.

The branch logic, as a table.

Every conditional branch and every always-on step in the Every release ships with all of its content, or none of it ships system: the condition or trigger that fires it, the step it leads to, and, where there is one, a note on why that branch exists
ConditionThenWhy
on a status change only, never a scheduleIssue pulled in full
Attached as is PDFText extracted
Attached as is Confluence pagePage fetched
Attached as is Google DocDocument fetched
Attached as is GitHub pagePage converted
Attached as is PDFMerged into one objecttext extracted from the file
Attached as is Confluence pageMerged into one objectHTML to Markdown, interface noise stripped
Attached as is Google DocMerged into one objectthrough the Docs API
Attached as is GitHub pageMerged into one objectconverted to clean Markdown by an agent
Review outcome is ApprovedPublication run
Review outcome is Changes requestedHeld for revisionnothing downstream runs
Review outcome is ApprovedNewsletter posteda second agent writes the newsletter first
Review outcome is ApprovedArticle publishedconverted to publication-ready HTML
Review outcome is ApprovedQuiz form createddeduplicated and sorted first
Review outcome is ApprovedDeck assembledimages sorted to guarantee ordering
Review outcome is ApprovedChecklist closedchecklist updated with the live URL

The stack.

Every layer of the Every release ships with all of its content, or none of it ships stack and the tools used at each layer
LayerTools
Issue trackingJira
Wiki and documentsConfluence, Google Docs
Orchestrationn8n
AI agentsLLM content agents
Review and configurationAirtable
PublishingWordPress
FormsGoogle Forms
DecksGoogle Slides, Google Drive
MessagingSlack

Safeguards.

  • System prompts live in Airtable rather than inside the workflow, so tone and style are tuned without touching the build.
  • Rate-limit buffers sit at every external boundary, and the four child webhooks fire with waits between them so no downstream service is flooded.
  • Categorisation defaults gracefully on missing fields instead of breaking the run.
  • Known-problematic Confluence pages are filtered out before they enter the pipeline.
  • Every child workflow terminates at a human approval, so nothing reaches a public surface without a person releasing it.

Before and after.

Release content coordination
Before: Assembled by hand across five platforms, every releaseAfter: One orchestrator and four child workflows, triggered by a status change
Source handling
Before: Each attachment type opened and converted manuallyAfter: Each type routed down its own branch and merged into one normalised object
Editorial control
Before: Review happened wherever the document happened to liveAfter: A named approval gate closes every child workflow before anything publishes
Prompt tuning
Before: Changing tone meant editing the workflow itselfAfter: Prompts live in Airtable and are changed without a deploy
Help centre publication
Before: Draft, convert, publish, then update the checklist by handAfter: Approval converts, publishes, and writes the live URL back to the checklist

This is one delivered system, published in full. See how we build AI automation

Want this on your own stack? See our n8n automation agency page.

Start a conversation

Tell us what you’re building.

Share the essentials and we’ll reply within 4 hours with a real next step, not an auto-responder.

What happens next

  1. We reply within 4 hours, from a real person, not an auto-responder.
  2. A short scoping call to understand the goal, constraints, and timeline.
  3. A fixed-scope discovery sprint: a working prototype and a written estimate.
Office
Austin, TX, United States
Hours
Mon–Fri · Async + scheduled calls

Fields marked are required. By sending you agree to our Privacy Policy.