|
| 1 | +/** |
| 2 | + * Pre-built company blueprints for Paperclip deployment. |
| 3 | + * |
| 4 | + * Each blueprint defines a team of AgenticFlow agents that can be |
| 5 | + * deployed to Paperclip as a ready-made company. Agents are sourced |
| 6 | + * from the AF marketplace templates or the user's existing agents. |
| 7 | + */ |
| 8 | + |
| 9 | +export interface AgentSlot { |
| 10 | + /** Paperclip role */ |
| 11 | + role: string; |
| 12 | + /** What this slot does */ |
| 13 | + title: string; |
| 14 | + /** Human description */ |
| 15 | + description: string; |
| 16 | + /** Suggested AF agent name to search for (from marketplace) */ |
| 17 | + suggestedTemplate?: string; |
| 18 | + /** Allow user to skip this slot */ |
| 19 | + optional?: boolean; |
| 20 | +} |
| 21 | + |
| 22 | +export interface CompanyBlueprint { |
| 23 | + /** Short slug */ |
| 24 | + id: string; |
| 25 | + /** Display name */ |
| 26 | + name: string; |
| 27 | + /** What this company does */ |
| 28 | + description: string; |
| 29 | + /** Company goal */ |
| 30 | + goal: string; |
| 31 | + /** Starter tasks */ |
| 32 | + starterTasks: Array<{ title: string; description: string; assigneeRole: string; priority: string }>; |
| 33 | + /** Agent slots to fill */ |
| 34 | + agents: AgentSlot[]; |
| 35 | +} |
| 36 | + |
| 37 | +export const BLUEPRINTS: Record<string, CompanyBlueprint> = { |
| 38 | + "dev-shop": { |
| 39 | + id: "dev-shop", |
| 40 | + name: "Software Dev Shop", |
| 41 | + description: "A lean engineering team that builds and ships software products.", |
| 42 | + goal: "Build and ship high-quality software products", |
| 43 | + agents: [ |
| 44 | + { role: "ceo", title: "CEO / Tech Lead", description: "Strategic direction, delegation, project oversight" }, |
| 45 | + { role: "engineer", title: "Senior Engineer", description: "Core development, architecture, code implementation" }, |
| 46 | + { role: "designer", title: "UX Designer", description: "UI/UX design, user research, visual design", optional: true }, |
| 47 | + { role: "qa", title: "QA Engineer", description: "Testing, bug finding, quality assurance", optional: true }, |
| 48 | + ], |
| 49 | + starterTasks: [ |
| 50 | + { title: "Define product roadmap", description: "Create a 3-month product roadmap with milestones and deliverables.", assigneeRole: "ceo", priority: "high" }, |
| 51 | + { title: "Set up project architecture", description: "Design the technical architecture and set up the development environment.", assigneeRole: "engineer", priority: "high" }, |
| 52 | + ], |
| 53 | + }, |
| 54 | + "marketing-agency": { |
| 55 | + id: "marketing-agency", |
| 56 | + name: "Marketing Agency", |
| 57 | + description: "A full-service marketing team for content, social media, SEO, and campaigns.", |
| 58 | + goal: "Drive brand awareness and customer acquisition through multi-channel marketing", |
| 59 | + agents: [ |
| 60 | + { role: "ceo", title: "Agency Director", description: "Strategy, client relations, campaign oversight" }, |
| 61 | + { role: "cmo", title: "Content Strategist", description: "Content planning, blog posts, newsletters", suggestedTemplate: "Content Writer" }, |
| 62 | + { role: "designer", title: "Visual Designer", description: "Graphics, social media visuals, brand assets", suggestedTemplate: "Visual designer" }, |
| 63 | + { role: "researcher", title: "Market Researcher", description: "Competitive analysis, trend research", suggestedTemplate: "Ari, the Market Researcher", optional: true }, |
| 64 | + ], |
| 65 | + starterTasks: [ |
| 66 | + { title: "Develop content calendar", description: "Create a 4-week content calendar covering blog posts, social media, and email newsletters.", assigneeRole: "cmo", priority: "high" }, |
| 67 | + { title: "Create brand guidelines", description: "Define color palette, typography, logo usage, and visual style for all marketing materials.", assigneeRole: "designer", priority: "high" }, |
| 68 | + { title: "Competitive landscape report", description: "Research top 5 competitors and summarize their positioning, pricing, and marketing strategies.", assigneeRole: "researcher", priority: "medium" }, |
| 69 | + ], |
| 70 | + }, |
| 71 | + "sales-team": { |
| 72 | + id: "sales-team", |
| 73 | + name: "Sales Team", |
| 74 | + description: "A sales operation with outreach, research, and customer management.", |
| 75 | + goal: "Generate qualified leads and close deals", |
| 76 | + agents: [ |
| 77 | + { role: "ceo", title: "Sales Director", description: "Pipeline management, strategy, team coordination" }, |
| 78 | + { role: "researcher", title: "Sales Researcher", description: "Lead research, company profiling, ICP matching", suggestedTemplate: "Olivia, the Sales Strategist" }, |
| 79 | + { role: "general", title: "SDR / Outreach", description: "Email outreach, follow-ups, scheduling", suggestedTemplate: "Rachel, the Support Agent" }, |
| 80 | + ], |
| 81 | + starterTasks: [ |
| 82 | + { title: "Define ICP and target list", description: "Create ideal customer profile and build a list of 50 target companies.", assigneeRole: "researcher", priority: "high" }, |
| 83 | + { title: "Write outreach sequences", description: "Draft 3-step email sequences for cold outreach, follow-up, and re-engagement.", assigneeRole: "general", priority: "high" }, |
| 84 | + ], |
| 85 | + }, |
| 86 | + "content-studio": { |
| 87 | + id: "content-studio", |
| 88 | + name: "Content Studio", |
| 89 | + description: "A creative content production team for video, social, and written content.", |
| 90 | + goal: "Produce high-quality content across video, social media, and written formats", |
| 91 | + agents: [ |
| 92 | + { role: "ceo", title: "Creative Director", description: "Content strategy, quality control, brand voice" }, |
| 93 | + { role: "cmo", title: "Social Media Manager", description: "Social media scheduling, engagement, analytics", suggestedTemplate: "Mason, the Social Media Manager" }, |
| 94 | + { role: "engineer", title: "Content Writer", description: "Blog posts, articles, scripts, copy", suggestedTemplate: "Content Writer" }, |
| 95 | + { role: "designer", title: "Visual Creator", description: "Graphics, thumbnails, social visuals", suggestedTemplate: "Visual designer", optional: true }, |
| 96 | + ], |
| 97 | + starterTasks: [ |
| 98 | + { title: "Create content pillars", description: "Define 3-5 content themes/pillars that align with the brand and audience.", assigneeRole: "ceo", priority: "high" }, |
| 99 | + { title: "Write 5 blog posts", description: "Draft 5 blog posts of 800-1200 words each on the defined content pillars.", assigneeRole: "engineer", priority: "high" }, |
| 100 | + { title: "Design social media templates", description: "Create reusable templates for Instagram, Twitter, and LinkedIn posts.", assigneeRole: "designer", priority: "medium" }, |
| 101 | + ], |
| 102 | + }, |
| 103 | + "support-center": { |
| 104 | + id: "support-center", |
| 105 | + name: "Customer Support Center", |
| 106 | + description: "A customer support team with triage, resolution, and escalation.", |
| 107 | + goal: "Provide fast, helpful customer support and maintain high satisfaction", |
| 108 | + agents: [ |
| 109 | + { role: "ceo", title: "Support Manager", description: "Escalation handling, SLA monitoring, team coordination" }, |
| 110 | + { role: "general", title: "Support Agent", description: "Ticket triage, first response, common issue resolution", suggestedTemplate: "Rachel, the Support Agent" }, |
| 111 | + { role: "researcher", title: "Knowledge Base Manager", description: "FAQ maintenance, documentation, self-service content", optional: true }, |
| 112 | + ], |
| 113 | + starterTasks: [ |
| 114 | + { title: "Set up support playbook", description: "Create a support playbook with common issues, resolution steps, and escalation criteria.", assigneeRole: "ceo", priority: "high" }, |
| 115 | + { title: "Draft FAQ document", description: "Write an FAQ with the top 20 most common customer questions and answers.", assigneeRole: "researcher", priority: "medium" }, |
| 116 | + ], |
| 117 | + }, |
| 118 | +}; |
| 119 | + |
| 120 | +export function listBlueprints(): CompanyBlueprint[] { |
| 121 | + return Object.values(BLUEPRINTS); |
| 122 | +} |
| 123 | + |
| 124 | +export function getBlueprint(id: string): CompanyBlueprint | null { |
| 125 | + return BLUEPRINTS[id] ?? null; |
| 126 | +} |
0 commit comments