Create a program from a brief
In Adobe Marketo Optimizer, program is the top-level container for journeys, people lists, tokens, and configuration within a campaign. From the chat interface, the Program Creation skill builds that entire structure end-to-end from your brief — the program itself, subfolders, tokens, people lists, and person journeys — in one guided conversation.
- Skill -
program-creation - Invocation - Upload a brief and enter Create a program from this brief / Build a program from brief, or describe the campaign directly
- Reads from / writes to - Marketo Optimizer; also reads program-type configuration from your tenant
Brief upload
Click the Attach icon in the chat input to upload the file, and then describe what you want. The brief’s text is extracted and handed to Coworker as context (you’ll see a “Campaign Brief uploaded: filename (NkB)” indicator in the chat).
Supported file types
.txt, .md.pdf, .docx, .xlsx, .json, .csvA file with a name containing brief is automatically tagged as a campaign brief; otherwise Coworker infers it from context.
Size limit
Brief text is truncated to approximately 30,000 characters (~7.5K tokens) before reaching Coworker. Very long briefs are cut off at that point (indicated by a (truncated to 29KB) note). Put essential campaign details up front.
Recommended brief contents
The flow intake reads the brief for the following inputs — include as many as possible:
- Program name and a short description / purpose
- Program type signal (such as tradeshow, event, webinar, roadshow, conference, or nurture)
- Audience criteria for the people lists
- Journey design — count, entry criteria, touchpoints/timing, and a go-live date
- Tokens (reusable values such as event date, venue, subject line)
Coworker requests anything that is missing before building.
Build phases
The skill runs in three phases: INTAKE → APPROVE → BUILD. Nothing is created until you approve.
Intake
Coworker extracts the following from the brief and prompts for anything missing:
- Program name
- Parent folder (defaults to workspace root if unspecified)
- Description
- Program type (inferred from brief wording where possible)
- Tokens to create (name, type, value)
- People list audience criteria
- Journeys — count, entry criteria, touchpoints, go-live date
Approve
Coworker presents a confirmation summary before proceeding:
I'll create {program} in folder {id}, with {N} token(s), {N} dynamic people list(s), and {N} journey(s). Shall I proceed?
No creation tool is called until you respond with a clear go-ahead (such as proceed, go ahead, build it, approved, and yes).
Build
The build steps run in a fixed order; each depends on IDs produced by the previous step.
getRootTree, browseFolders, createFolderbrowseProgramTypesprogramTypeIdcreateProgrammy.* token on the programcreateProgramTokengenerate_ruleset, createSmartListWithRulessmartListIdcreate_journeypublish_journey_with_datesqa_program_preview, qa_programStep dependencies:
- The program ID (Step 2) is required before tokens, lists, or journeys can be attached.
- The
smartListIdfrom Step 4 is passed intocreate_journeyin Step 5 — omitting it leaves the journey’s audience entry node empty. - The journey prompt always begins Start with a Person audience node as the entry point to ensure a populated entry node.
Output assets
Program
The top-level container. Its detail view exposes the following tabs:
my.* tokens scoped to this programTokens
Reusable my.* values scoped to the program (e.g. my.eventDate). Each has a type — one of text, date, rich text, score, or number — and a value. They resolve inside emails and content within the program’s scope.
People List
A dynamic (smart) people list built from audience criteria via generated, attribute-based rules, created under the program.
Journey
A person journey starting with a Person audience entry node bound to the Step 4 people list, followed by the touchpoints from the brief (for example, send welcome email after 1 day, follow-up after 3 days). If a go-live date is set, the journey can be published immediately or scheduled.
Program type resolution
Programs are permanently bound to a tenant-defined program type at creation — this cannot be changed afterward. The flow resolves the type explicitly via browseProgramTypes in every case.
Defaults
ACTIVATE journey by {date} step; immediate publish only when launching now and confirmedLimitations
parent and programTypeId are always set; omitting parent causes access-denied; omitting type silently falls back to DefaultsmartListId from Step 4 is mandatory for Step 5; the flow enforces thisQA check
After the build completes, Coworker offers:
“Would you like me to run a QA check to validate everything before launch?”
Confirm to run qa_program_preview followed by qa_program. The process returns a report of checks passed, failed, and any warnings, along with recommended next steps.