Goal
Hire and configure a new AI agent teammate from marketplace presets using conversational onboarding instead of forms.
Which Agent Types Use This
- custom (system/onboarding flows)
- Typically triggered by user selecting preset in marketplace UI
Hard Rules
- Jobs MUST start in
paused status — never auto-activate without preview approval.
- MUST generate preview draft before allowing activation.
- If no voice_profile_id provided, MUST prompt user to create one before agent activation.
- Never create agents without explicit user intent (no auto-hiring).
Steps
1. Check policy & capabilities
bolta.get_workspace_policy(workspace_id) → verify agent hiring allowed
bolta.get_my_capabilities(workspace_id) → verify Editor/Admin role
2. Load marketplace preset
bolta.list_agent_presets() → get available presets
- Find preset by
preset_id (e.g., "hype_man", "qa_bot", "analytics_pro")
- Extract default configuration:
agent_type (content_creator, reviewer, analytics, etc.)
default_persona (personality + behavioral guidelines)
recommended_model_tier (Sonnet/Opus for creators, Haiku for engagement)
default_job_templates (job types this agent excels at)
3. Gather business context (conversational)
- Load existing:
bolta.get_business_context(workspace_id)
- If missing or incomplete, conduct discovery conversation:
- "Tell me about your business" → business_context
- "What's your content strategy?" → content_goals
- "How often do you want to post?" → posting_frequency
- "Which platforms?" → platform_ids
- Store responses for agent configuration
4. Validate voice profile
- If
voice_profile_id provided:
bolta.get_voice_profile(voice_profile_id) → verify it exists
- If null:
- Prompt user: "This agent needs a voice profile to match your brand. Create one now?"
- Link to
bolta.voice.bootstrap flow
- BLOCK agent creation until voice exists
5. Create agent
bolta.create_agent({ workspace_id, type: preset.agent_type, name: user_chosen_name || preset.default_name, persona: custom_persona || preset.default_persona, model_tier: preset.recommended_model_tier, voice_profile_id, enabled_skills: preset.default_skills })
- Returns
agent_id
6. Create jobs (paused)
- For each job template in preset.default_job_templates:
bolta.create_job({ workspace_id, agent_id, run_instructions: fill_template(template, {business_context, content_goals}), schedule: derive_schedule(posting_frequency), status: "paused", metadata: {source: "agent_hiring"} })
- Collect
job_ids
7. Generate preview draft
- Use the newly created agent to generate a sample post:
bolta.draft_post({ workspace_id, agent_id, voice_profile_id, account_ids: platform_ids, prompt: "Create a sample post to demonstrate your voice and style", requested_action: "draft_only", metadata: {preview_draft: true} })
- Returns
preview_post_id
8. Return for user review
- Status:
paused (jobs not active yet)
- Show user:
- Agent name and persona
- Job schedule and instructions
- Preview draft (critical — user sees actual output before activation)
- Next step: "Review preview. If you like it, activate jobs. If not, adjust voice or persona."
Output
{
"agent_id": "uuid",
"job_ids": ["job-uuid1", "job-uuid2"],
"preview_post_id": "draft-uuid",
"status": "paused",
"next_step": "Review preview draft (ID: draft-uuid). If approved, call bolta.agent.activate_job."
}
Failure Handling
- If voice_profile_id missing and user declines creation: fail with clear message.
- If preview draft generation fails: agent still created but jobs remain paused, add warning.
- If job creation fails: agent created but incomplete, return partial job_ids + error details.
- Never auto-activate jobs on partial failures.
V2 Agent Context
Why conversational instead of forms?
Hiring an agent should feel like hiring a team member, not configuring software. The conversation:
- Gathers context naturally
- Lets the agent propose its own setup
- Adapts based on user's business
- Shows a preview before activation
Example conversation flow:
System: "You selected The Hype Man. Tell me about your business."
User: "B2B SaaS for project management."
System: "What's your content strategy?"
User: "Thought leadership on remote work."
System: "How often do you want to post?"
User: "3x/week on LinkedIn."
System: "Perfect. I'll set up The Hype Man to create 3x/week LinkedIn
thought pieces on remote work. Let me generate a sample post first..."
[Preview draft generated]
System: "Here's a sample. Like the voice? If yes, I'll activate the jobs."
Example Usage
Scenario: Hire Content Creator
{
"workspace_id": "uuid",
"preset_id": "hype_man",
"business_context": "B2B SaaS for project management",
"content_goals": "Thought leadership on remote work",
"posting_frequency": "3x/week",
"platform_ids": ["linkedin-uuid"],
"voice_profile_id": "uuid"
}
Result:
- Agent created (The Hype Man)
- 1 job created (3x/week LinkedIn content)
- Preview draft generated
- Jobs paused until user approves preview
1---2name: bolta-agent-hire3description: Create and onboard a new AI agent teammate from marketplace presets with conversational discovery and preview generation.4---56## Goal7Hire and configure a new AI agent teammate from marketplace presets using conversational onboarding instead of forms.89## Which Agent Types Use This10- **custom** (system/onboarding flows)11- Typically triggered by user selecting preset in marketplace UI1213## Hard Rules141. Jobs MUST start in `paused` status — never auto-activate without preview approval.152. MUST generate preview draft before allowing activation.163. If no voice_profile_id provided, MUST prompt user to create one before agent activation.174. Never create agents without explicit user intent (no auto-hiring).1819## Steps2021### 1. Check policy & capabilities22- `bolta.get_workspace_policy(workspace_id)` → verify agent hiring allowed23- `bolta.get_my_capabilities(workspace_id)` → verify Editor/Admin role2425### 2. Load marketplace preset26- `bolta.list_agent_presets()` → get available presets27- Find preset by `preset_id` (e.g., "hype_man", "qa_bot", "analytics_pro")28- Extract default configuration:29 - `agent_type` (content_creator, reviewer, analytics, etc.)30 - `default_persona` (personality + behavioral guidelines)31 - `recommended_model_tier` (Sonnet/Opus for creators, Haiku for engagement)32 - `default_job_templates` (job types this agent excels at)3334### 3. Gather business context (conversational)35- Load existing: `bolta.get_business_context(workspace_id)`36- If missing or incomplete, conduct discovery conversation:37 - "Tell me about your business" → business_context38 - "What's your content strategy?" → content_goals39 - "How often do you want to post?" → posting_frequency40 - "Which platforms?" → platform_ids41- Store responses for agent configuration4243### 4. Validate voice profile44- If `voice_profile_id` provided:45 - `bolta.get_voice_profile(voice_profile_id)` → verify it exists46- If null:47 - Prompt user: "This agent needs a voice profile to match your brand. Create one now?"48 - Link to `bolta.voice.bootstrap` flow49 - BLOCK agent creation until voice exists5051### 5. Create agent52- `bolta.create_agent({53 workspace_id,54 type: preset.agent_type,55 name: user_chosen_name || preset.default_name,56 persona: custom_persona || preset.default_persona,57 model_tier: preset.recommended_model_tier,58 voice_profile_id,59 enabled_skills: preset.default_skills60 })`61- Returns `agent_id`6263### 6. Create jobs (paused)64- For each job template in preset.default_job_templates:65 - `bolta.create_job({66 workspace_id,67 agent_id,68 run_instructions: fill_template(template, {business_context, content_goals}),69 schedule: derive_schedule(posting_frequency),70 status: "paused",71 metadata: {source: "agent_hiring"}72 })`73 - Collect `job_ids`7475### 7. Generate preview draft76- Use the newly created agent to generate a sample post:77 - `bolta.draft_post({78 workspace_id,79 agent_id,80 voice_profile_id,81 account_ids: platform_ids,82 prompt: "Create a sample post to demonstrate your voice and style",83 requested_action: "draft_only",84 metadata: {preview_draft: true}85 })`86- Returns `preview_post_id`8788### 8. Return for user review89- Status: `paused` (jobs not active yet)90- Show user:91 - Agent name and persona92 - Job schedule and instructions93 - **Preview draft** (critical — user sees actual output before activation)94- Next step: "Review preview. If you like it, activate jobs. If not, adjust voice or persona."9596## Output97```json98{99 "agent_id": "uuid",100 "job_ids": ["job-uuid1", "job-uuid2"],101 "preview_post_id": "draft-uuid",102 "status": "paused",103 "next_step": "Review preview draft (ID: draft-uuid). If approved, call bolta.agent.activate_job."104}105```106107## Failure Handling108- If voice_profile_id missing and user declines creation: fail with clear message.109- If preview draft generation fails: agent still created but jobs remain paused, add warning.110- If job creation fails: agent created but incomplete, return partial job_ids + error details.111- Never auto-activate jobs on partial failures.112113## V2 Agent Context114115**Why conversational instead of forms?**116117Hiring an agent should feel like hiring a team member, not configuring software. The conversation:1181. Gathers context naturally1192. Lets the agent propose its own setup1203. Adapts based on user's business1214. Shows a preview before activation122123**Example conversation flow:**124```125System: "You selected The Hype Man. Tell me about your business."126User: "B2B SaaS for project management."127128System: "What's your content strategy?"129User: "Thought leadership on remote work."130131System: "How often do you want to post?"132User: "3x/week on LinkedIn."133134System: "Perfect. I'll set up The Hype Man to create 3x/week LinkedIn 135thought pieces on remote work. Let me generate a sample post first..."136137[Preview draft generated]138139System: "Here's a sample. Like the voice? If yes, I'll activate the jobs."140```141142## Example Usage143144### Scenario: Hire Content Creator145```json146{147 "workspace_id": "uuid",148 "preset_id": "hype_man",149 "business_context": "B2B SaaS for project management",150 "content_goals": "Thought leadership on remote work",151 "posting_frequency": "3x/week",152 "platform_ids": ["linkedin-uuid"],153 "voice_profile_id": "uuid"154}155```156157**Result:**158- Agent created (The Hype Man)159- 1 job created (3x/week LinkedIn content)160- Preview draft generated161- Jobs paused until user approves preview