What appears here is not a showcase, but the trace of a practice
0%
A+43 Logo

Orchestrating Agents: A Practical Architecture for Complex Knowledge Workflows

Article

This is not a product announcement or a technical tutorial. It's a working note about how I think about orchestrating AI agents for complex knowledge work. Read it as a snapshot of current thinking, not a finished framework. Take what resonates, leave what doesn't.


Before we talk about AI in complex knowledge workflows, it helps to separate two concepts that are often collapsed into one: agents and orchestration.

An agent is not simply a chatbot with a nicer prompt. In practice, it's a specialized system: a model configured with a role, a method (a lens), access to tools or data, and clear boundaries. The point is repeatability, so a behavioral lens behaves like a behavioral lens every time, and a review lens behaves like a review lens every time.

This distinction is not theoretical. There are already open implementations that demonstrate what a specialized agent looks like in practice.

For example, the open-source project gpt-researcher (assafelovic/gpt-researcher on GitHub) is structured as a research agent rather than a conversational assistant. It decomposes a query into a planning phase, executes structured research steps, and compiles a sourced report as output. The contract is clear: input → disciplined research process → cited synthesis.

That is an agent as a system with boundaries, not a prompt with personality.

Orchestration is the coordination layer that makes multiple agents operate as one workflow. It routes work, manages handoffs, controls what context travels (and what doesn't), and enforces quality gates so the system stays reliable and governable. IBM describes multi-agent orchestration as a supervisor/router/planner across an agent landscape, coordinating specialized agents and routing requests to the right tools and LLMs while keeping workflows governed and observable.


Mind map A: The Orchestrator Layer

[ORCHESTRATOR / SUPERVISOR]
|
+-- What an agent is
|   - Role + method (lens) + tools/data access + boundaries
|
+-- What orchestration is
|   - Coordinating multiple agents as one coherent workflow
|   - Routing + handoffs + context control + governance
|
+-- Orchestrator responsibilities
|   - Plan: sequence the work, identify unknowns, select next step
|   - Route: delegate to the right specialist agent/tool
|   - Manage context: what to pass, summarize, or isolate
|   - Govern: thresholds, review gates, human-in-the-loop points
|
+-- Two control modes
    (1) LLM-led (dynamic planning): interpretation, exploration, expansion
    (2) Code-led (deterministic control): loops, thresholds, logs, retries

Why this matters for complex knowledge workflows

Knowledge work rarely fails because someone can't "generate an answer." It fails because the workflow collapses too early: weak diagnosis, narrow exploration, missing critique, or unreviewed risk.

A single generalist assistant tends to compress those phases into one smooth response.

Multi-agent systems can be designed to do the opposite: preserve productive tension, surface trade-offs early, and deliver a small set of options that are already pressure-tested.

That is the real value of orchestration: not more output, better process.


A systemic example: the Strategic Campaign Engine

One useful way to understand orchestration is to treat it as an engine: a system that moves from a raw brief to a refined set of routes via specialist nodes.

Diagnostic node: Behavioral Science

The orchestrator hands the brief to a behavioral science agent. The job is not to write copy. It's to produce a disciplined diagnosis:

  • What behavior must shift?
  • What friction prevents the shift?
  • Which levers plausibly reduce friction or increase motivation?

This stage prevents the common failure mode of improvising a new theory of humans for every brief.

Expansion node: Strategic Analogies

Next, the orchestrator routes the diagnosis into an analogies agent to resist category gravity. The goal is deliberate breadth: import transferable mechanisms from elsewhere (adjacent industries, historic precedents, different incentive structures) before narrowing begins.

Healthy tension: a dialectical loop

This is where orchestration becomes more than a linear pipeline.

Instead of asking for "the best route," the orchestrator stages a controlled debate between two opposing roles:

  • Creative Sparring Agent: generates brave strategic routes.
  • Brand Analytics Agent: pressure-tests those routes against equity drivers, constraints, and feasibility.

Crucially, the orchestrator runs this as a deterministic loop with thresholds. Routes that are brave but incoherent get constrained; routes that are coherent but generic get pushed. The system iterates until the output clears a defined standard, or the loop ends and the orchestrator curates the best remaining set with caveats.

Review node: Compliance + Cultural Safety ("critical friend")

Before anything reaches human decision-makers, a review agent checks for predictable risk: unsubstantiated claims, legal/compliance issues, cultural misreads, and brand voice deviation. This layer exists to catch blind spots while iteration is still cheap.


Mind map B: Workflow Example

[WORKFLOW: CAMPAIGN ENGINE]
|
+--> (0) Intake & framing (Orchestrator)
|
+--> (1) Diagnostic Agent (Behavioral Science)
|       - barriers / drivers / biases / framing
|
+--> (2) Expansion Agent (Strategic Analogies)
|       - lateral thinking / anti-category gravity
|
+--> (3) Creative Sparring Agent
|       - generates strategic routes (premise, tension, payoff, risks)
|
+--> (4) Dialectical Loop (Healthy Tension)
|       +--> Brand Analytics Agent (scores + critique + constraints)
|       +--> Orchestrator gate (loop until thresholds or max rounds)
|
+--> (5) Review Agent (Compliance + Cultural Safety)
|
+--> Output: 3–5 curated routes + rationale + trade-offs + risks
            -> Human decides

Minimal pseudocode: what orchestration looks like

THRESH_ORIG = 0.75
THRESH_FIT  = 0.80
MAX_ROUNDS  = 4

def campaign_engine(brief, brand_ctx, constraints):

    diagnosis = behavioral_science_agent(brief, brand_ctx)
    angles    = strategic_analogies_agent(diagnosis)
    routes    = creative_sparring_agent(angles, constraints)

    for _ in range(MAX_ROUNDS):
        scores = brand_analytics_agent(routes, brand_ctx)
        best   = pick_best(scores)

        if best["originality"] >= THRESH_ORIG and best["brand_fit"] >= THRESH_FIT:
            candidate = get_route(routes, best["route_id"])
            break

        feedback = synthesize_constraints(scores)
        routes   = creative_sparring_agent(angles, constraints, feedback=feedback)
    else:
        candidate = top_k(routes, scores, k=3)

    reviewed = compliance_and_cultural_safety_agent(candidate, constraints)
    return package_for_humans(reviewed)

LLM-led orchestration vs. code-led orchestration

In an orchestrated system, LLM-led orchestration and code-led orchestration aren't competing approaches. They solve different problems.

LLM-led orchestration is strongest when the work is ambiguous and interpretive. The system must understand the brief, identify unknowns, and decide which specialist lens to invoke next. In this mode, the orchestrator behaves like a planner/router.

Code-led orchestration is what you use when you need operational certainty: deterministic loops, thresholds, retries, audit logs, and human approval gates. One practical technique is to force structured outputs so decisions become inspectable objects your code can validate before executing the next step.

There are emerging SDKs that formalize these patterns. For instance, the open-source OpenAI Agents SDK (openai/openai-agents-python) provides explicit primitives for multi-agent systems: handoffs, guardrails for validation, session state management, and tracing for observability.

A simple rule of thumb:

  • Use LLM-led orchestration to decide what to do next when meaning and exploration are the work.
  • Use code-led orchestration to guarantee how it happens when governance, repeatability, and failure handling matter.

The Monet Problem: infinite variants, limited judgment

Once generation becomes cheap, selection becomes expensive. An orchestrated system can create countless routes, but it cannot carry responsibility for what is culturally intelligent, timely, and worth backing.

This is where orchestration earns its place: it reduces noise and returns a curated set of routes with rationale, trade-offs, and risk, so human judgment stays central.


Orchestration doesn't replace judgment. It operationalizes the path to it, so humans decide with fewer blind spots, clearer trade-offs, and a workflow they can repeat.