MOCK MODE — no API keys9 platforms2 client namespaces0/9 provider keys configuredkill-switch disarmedengine ok · v0.1.06 agents · pipeline complete
White-label · agency-facingDemo build · mock mode

One client brief in. A complete multi-week, multi-channel campaign out.

Paladia turns a single brief into a whole campaign arc — copy, image prompts, video scripts and email sequences, written for each platform rather than copy-pasted across them. Nine platforms, four campaign weeks, one shared campaign thread that every asset inherits.

Built by 92eleven as a white-label engine an agency can put its own name on. This build runs end to end with no API keys at all.

In this demo build
engine ok
Client namespaces
2
fully isolated JSON stores
Platforms
9
per-platform copy rules
Assets generated
72
36 per campaign
Average BHS
100
pass rate 72/72
72 assets · 9 platform-native copy variants
4-week arc per client with week roles and thread locks
6-agent pipeline, every step in a runnable log
Quality Gate: 688 checks per campaign
Two-tier spend gate with a kill-switch a human has to clear

Read this as a demo, and read the numbers as engine output

Every string below was produced by the engine running in mock mode with zero API keys. No copy is hand-written for the site, no performance figure is invented, and no live provider, publishing or billing call exists in this build.

Mode: mock · live mode enabled: false · connectors configured: 0/9. Copy generation is deterministic templating, not an LLM call; image prompts and video scripts are text only — nothing is rendered, published or billed.

Payload
paladia/tools/export_demo.py
2026-10-02T12:00:00+00:00
Deterministic
re-run produces an identical file
What comes out

Four deliverables per week, per platform

Every platform gets its own asset, written to that platform's register, length ceiling and hashtag policy — plus one email entry for the week.

Platform-native copy

Headline, body and CTA sized to each platform's ceiling — 280 characters on X, 3,000 on LinkedIn, no hashtags on Pinterest, an affiliation disclosure on Reddit.

9 platform variants per week

Image prompts

A direction-ready prompt with palette, light, framing and aspect ratio, a negative prompt and alt text for accessibility.

prompt text only — no image is generated

Video scripts

Timed beats from hook to CTA with direction per beat, on-screen text, a shot list and audio notes.

script and shot list only — nothing is rendered

Email sequence

One email per campaign week: subject, preheader, body, CTA, segmentation rule and a required unsubscribe line.

written to JSON — nothing is sent

How it works

Six agents, one shared campaign thread

Each agent augments the same thread object and appends one entry to a runnable log. The Quality Gate sits between the Analytics agent and the Dashboard, so no asset can be delivered unvalidated.
01Campaign Managerok

Maps the brief into the week-by-week arc, assigns each week a role and writes the shared thread (hook / angle / pillar + thread lock).

seq 1 · 0 ms

02Creative Directorok

Writes the headline, body, CTA and the email entry for every week.

seq 2 · 0 ms

03Social Media Specialistok

Adapts that week's copy for all nine platforms in each platform's own register and length ceiling.

seq 3 · 0 ms

04Brand Custodianok

Validates every asset against the brand DNA, asserts zero thread drift and reports brand health.

seq 4 · 0 ms

05Analyticsok

Attaches labelled attribution placeholders — bands and policy fields, never a number.

seq 5 · 0 ms

06Developer / Dashboardok

Assembles the payload the dashboard renders, and refuses any asset that reached it without a quality result.

seq 6 · 0 ms

mgr → creative → social → brand → ci-agent → [quality gate] → dev → dashboard
The campaign-thread guarantee

Week 3 on LinkedIn and week 3 on Instagram carry the same hook and angle

The Campaign Manager writes the hook, angle and messaging pillar once per week and copies them onto every asset. It isn't a prompt instruction — the gate fails any asset whose thread disagrees.
Week 3 · Social Proofthread lock tl_48d33591694c9/9 assets match the hook9/9 match the angle
Hook

Our most useful feedback came from people who never left a review.

Angle

Let repetition be the testimonial — what people reach for without thinking.

Messaging pillar

Worn In, Not Bought

Shown from Full Frequency Co.'s campaign — the same three fields appear on all 9 assets in this week.

LinkedInprofessional networkBHS 100

Our most useful feedback came from people who never left a review.

Our most useful feedback came from people who never left a review. Honestly, here's the plain version, no wrapper.

860/3000 chars3 hashtagslock matched
Instagramvisual feed + ReelsBHS 100

Our most useful feedback came from people who never left a review.

Our most useful feedback came from people who never left a review. Honestly, here's the plain version, no wrapper.

470/2200 chars9 hashtagslock matched

Different body length, different hashtags, different register — identical hook, angle and pillar.

Two clients, two namespaces

No client's data can reach another's

Each demo client lives in its own JSON namespace under data/clients/<slug>/. Slugs are validated and the resolved path is re-checked at write time, so a campaign that carries the wrong client slug is refused.

Full Frequency Co.

Lifestyle Appareltone: Warm & Direct

people who dress for the day they actually have, not the one in the lookbook

Arc
4 weeks
Assets
36
Budget
$5,000
data/clients/full-frequency-co

Torczon Digital

Graphic Appareltone: Bold & Playful

collectors who buy the print, not the logo, and know the run size before they ask

Arc
4 weeks
Assets
36
Budget
$3,500
data/clients/torczon-digital
isolation check: true10 namespace files scanned for the other client's identifying tokens · 0 leaks found · 0 shared campaign IDs
The two controls

A quality gate and a spend gate

One decides what is good enough to ship. The other decides what the engine is allowed to spend without a human.

Quality Gate

PASS · pass rate 100%

Every asset is scored 0–100 (Brand Health Score) against brand voice, platform format, thread consistency and completeness. Hard failures — a fabricated metric, copy over the ceiling, a thread mismatch — fail the asset outright and route it back through the creative agent exactly once.

688 checks per campaignfirst pass 36/36threshold ≥ 80
Open the Quality Gate panel →

Two-tier spend gate

kill-switch disarmed

Tier 1 is a soft limit at 70% of the campaign budget — the action is allowed but flagged for a human. Tier 2 is the hard limit at 100%: the action is refused and the kill-switch engages, halting every autonomous financial action until a named human clears it by hand.

Tier 1 = 70% = $3,500Tier 2 = 100% = $5,000clearing: manual only
Open the spend gate panel →
Mock mode → live

Drop your own keys in and the switch flips

Nine connectors are defined and all nine are disabled. Every provider call in the engine sits behind that file, so the same build runs without keys in a demo and with a buyer's keys in production.
config/api_keys.json — as shipped
Ideogramno key
image generation from asset image prompts
Cloudinaryno key
image hosting and transforms
Runwayno key
video generation from asset video scripts
InVideono key
template video assembly
Make.comno key
workflow automation between agents
SendGridno key
email sequence delivery
Slackno key
kill-switch and spend-gate notifications
Stripeno key
billing: the buyer's tier config goes live with this key; this build still processes no charge with or without it
Ad platformsno key
real attribution data
The guard the engine enforces
if (mode !== "mock" && live_mode_enabled === true) {
  // a provider call MAY be attempted
} else {
  // deterministic mock generators run;
  // no outbound call is made, ever
}

In this build mode = "mock" and live_mode_enabled = false, so no connector is reachable at all. Nothing here publishes, sends, renders or bills — the engine only writes JSON.

9 connectors defined0 configuredlive_mode_enabled: false

Everything on this site is engine output.

72 assets across 2 clients and 9 platforms, scored by the gate, with the spend gate's ledger and kill-switch state included. Open the Command Center to read the pipeline log, or jump straight into an asset.

Command CenterAsset view