Jesús Martínez
ES
← Work · Case study

Eight AI agents, one Slack workspace.

At a creative agency, every request waited on someone to decide who does what. I built Forge: a master agent that reads requests in Slack and hands the pieces to eight specialized assistants, from research and planning to finished images and video.

Client
Crescendo Creative, a creative agency in political marketing
Role
AI solutions architect
Timeline
Apr 2025 to Mar 2026
Built with
n8n, OpenRouter, Slack, Midjourney, Kling, Python

The situation

The dispatcher was a person.

Requests arrived as big asks: a campaign plan for this client, a round of concepts, what people are saying about this brand. Each one broke into different tasks, in a different order. Someone had to read the ask, split it up and hand out the pieces, so the work moved at the speed of that person’s attention.

The problem

Automating the steps was easy. Choosing them wasn’t.

A linear workflow can handle any one of those requests, and the agency already had a few. What it can’t do is look at a new ask and decide which steps to run. The agency needed complex, non-linear work done without a person routing every request.

The approach

Move the routing inside the system.

Instead of building more workflows for someone to choose between, I gave the choice to the system: a master agent on top that plans the work, and narrow specialists underneath that each do one job well.

01

Ask

Someone writes a request in Slack, in plain language, where the team already works.

02

Plan

The master agent works out what the request really breaks into, which specialists it needs and in what order.

03

Delegate

Eight specialized assistants cover business planning, social media research and creative asset generation. Each one owns a slice of the agency’s work.

04

Make

When the job ends in visuals, the workflow generates the images and video itself, with Midjourney and Kling.

05

Deliver

The result comes back to the same Slack conversation the request started in.

Decisions and trade-offs

Three calls that made it work.

01

Work where the team works.

The interface is Slack because the agency already lived there. A tool that asks people to go somewhere new tends to get a week of use. An assistant in the channel they already have open gets used.

Chose Slack over a new app
02

Narrow specialists, one planner.

A narrow agent with one job is far easier to make reliable, and to correct when it’s wrong, than a general one. The master agent plans; the specialists do the work. Anyone can still go straight to a specialist when they know exactly what they want.

Chose a master agent with specialists over one do-everything agent
03

The right model for each step.

Sorting a message and drafting a campaign plan don’t want the same balance of cost, speed and reasoning. Every step routes through OpenRouter to the model that suits it, so changing one is a configuration change.

Chose per-step model routing over one model for everything

The twist

The agents weren’t what made it work.

Eight agents is what people see, so it’s easy to assume they carry the system. They don’t. What kept it working at this size sits underneath: more than ten workflows that call each other instead of every agent restating the same steps. A shared piece exists once, and any agent that needs it calls it. Workflows, not agents, are why the network stayed maintainable.

8agents sharing the same workflows
1copy of each shared step

The outcome

Where it landed.

8specialized assistants behind one Slack conversation
10+n8n workflows, nested so shared pieces exist only once
3kinds of agency work covered: planning, social media research and creative production

The agency stopped routing work by hand. A request that used to need a person to break it down is now broken down by the system.

In their words

“We came to Jesús with a vague idea about automating the parts of the agency that don’t need a human touching them. He built us Forge: eight assistants we talk to in Slack. Someone asks for a campaign plan or a round of concepts, and it gets handled. I don’t think about it anymore, which is about the best thing I can say about a piece of software.”

Scott TurnerCrescendo Creative

For the technical reader

Engineering notes

Workflows that call workflows

More than ten n8n workflows, with nested sub-workflow orchestration. A workflow calls another instead of repeating its steps, so the shared pieces exist once and the agent network stays maintainable at this size. The price: a failure three levels down loses its context on the way up unless every layer is built to carry it, so that had to be designed in from the start.

Decomposition is the real risk

A master agent that splits a request the wrong way doesn’t fail loudly. It delivers a plausible answer to a question nobody asked. Getting it to break work down the way an experienced person would, and to stop rather than guess when a request is ambiguous, took more iteration than any single specialist.

Model choice as configuration

Each step names its own model through OpenRouter, balancing cost, latency and reasoning quality. Moving a step to a newer or cheaper model is a configuration change, not a rebuild.

Images and video without an official API

Midjourney and Kling had no supported programmatic interface for what the agency needed, so the integration uses unofficial workarounds. It works and does real work, but it isn’t a stable contract: a change on the vendor’s side can break it without notice. The agency took that trade-off knowingly.

Running the workspace too

Because the agents live in Slack, I also administered the agency’s Slack and Google Workspace at the tenant level in support of Forge.

  • n8n
  • OpenRouter
  • Slack
  • Midjourney
  • Kling
  • Python

Next project · Retrieval · 2024

Answers in under a minute, not minutes

Does your team’s work wait on one person to hand it out?