@forgespace/branding-mcp 0.31.0 → 0.55.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +49 -1
- package/dist/index.js.map +1 -1
- package/dist/lib/branding-core/generators/brand-affiliate.d.ts +4 -0
- package/dist/lib/branding-core/generators/brand-affiliate.d.ts.map +1 -0
- package/dist/lib/branding-core/generators/brand-affiliate.js +249 -0
- package/dist/lib/branding-core/generators/brand-affiliate.js.map +1 -0
- package/dist/lib/branding-core/generators/brand-analytics.d.ts +3 -0
- package/dist/lib/branding-core/generators/brand-analytics.d.ts.map +1 -0
- package/dist/lib/branding-core/generators/brand-analytics.js +208 -0
- package/dist/lib/branding-core/generators/brand-analytics.js.map +1 -0
- package/dist/lib/branding-core/generators/brand-audio.d.ts +4 -0
- package/dist/lib/branding-core/generators/brand-audio.d.ts.map +1 -0
- package/dist/lib/branding-core/generators/brand-audio.js +200 -0
- package/dist/lib/branding-core/generators/brand-audio.js.map +1 -0
- package/dist/lib/branding-core/generators/brand-b2b.d.ts +4 -0
- package/dist/lib/branding-core/generators/brand-b2b.d.ts.map +1 -0
- package/dist/lib/branding-core/generators/brand-b2b.js +236 -0
- package/dist/lib/branding-core/generators/brand-b2b.js.map +1 -0
- package/dist/lib/branding-core/generators/brand-chatbot.d.ts +4 -0
- package/dist/lib/branding-core/generators/brand-chatbot.d.ts.map +1 -0
- package/dist/lib/branding-core/generators/brand-chatbot.js +174 -0
- package/dist/lib/branding-core/generators/brand-chatbot.js.map +1 -0
- package/dist/lib/branding-core/generators/brand-community.d.ts +3 -0
- package/dist/lib/branding-core/generators/brand-community.d.ts.map +1 -0
- package/dist/lib/branding-core/generators/brand-community.js +164 -0
- package/dist/lib/branding-core/generators/brand-community.js.map +1 -0
- package/dist/lib/branding-core/generators/brand-competitive.d.ts +3 -0
- package/dist/lib/branding-core/generators/brand-competitive.d.ts.map +1 -0
- package/dist/lib/branding-core/generators/brand-competitive.js +274 -0
- package/dist/lib/branding-core/generators/brand-competitive.js.map +1 -0
- package/dist/lib/branding-core/generators/brand-crisis.d.ts +3 -0
- package/dist/lib/branding-core/generators/brand-crisis.d.ts.map +1 -0
- package/dist/lib/branding-core/generators/brand-crisis.js +256 -0
- package/dist/lib/branding-core/generators/brand-crisis.js.map +1 -0
- package/dist/lib/branding-core/generators/brand-customer.d.ts +4 -0
- package/dist/lib/branding-core/generators/brand-customer.d.ts.map +1 -0
- package/dist/lib/branding-core/generators/brand-customer.js +270 -0
- package/dist/lib/branding-core/generators/brand-customer.js.map +1 -0
- package/dist/lib/branding-core/generators/brand-ecommerce.d.ts +4 -0
- package/dist/lib/branding-core/generators/brand-ecommerce.d.ts.map +1 -0
- package/dist/lib/branding-core/generators/brand-ecommerce.js +255 -0
- package/dist/lib/branding-core/generators/brand-ecommerce.js.map +1 -0
- package/dist/lib/branding-core/generators/brand-fintech.d.ts +3 -0
- package/dist/lib/branding-core/generators/brand-fintech.d.ts.map +1 -0
- package/dist/lib/branding-core/generators/brand-fintech.js +225 -0
- package/dist/lib/branding-core/generators/brand-fintech.js.map +1 -0
- package/dist/lib/branding-core/generators/brand-globalisation.d.ts +3 -0
- package/dist/lib/branding-core/generators/brand-globalisation.d.ts.map +1 -0
- package/dist/lib/branding-core/generators/brand-globalisation.js +222 -0
- package/dist/lib/branding-core/generators/brand-globalisation.js.map +1 -0
- package/dist/lib/branding-core/generators/brand-influencer.d.ts +4 -0
- package/dist/lib/branding-core/generators/brand-influencer.d.ts.map +1 -0
- package/dist/lib/branding-core/generators/brand-influencer.js +262 -0
- package/dist/lib/branding-core/generators/brand-influencer.js.map +1 -0
- package/dist/lib/branding-core/generators/brand-innovation.d.ts +3 -0
- package/dist/lib/branding-core/generators/brand-innovation.d.ts.map +1 -0
- package/dist/lib/branding-core/generators/brand-innovation.js +229 -0
- package/dist/lib/branding-core/generators/brand-innovation.js.map +1 -0
- package/dist/lib/branding-core/generators/brand-loyalty.d.ts +4 -0
- package/dist/lib/branding-core/generators/brand-loyalty.d.ts.map +1 -0
- package/dist/lib/branding-core/generators/brand-loyalty.js +231 -0
- package/dist/lib/branding-core/generators/brand-loyalty.js.map +1 -0
- package/dist/lib/branding-core/generators/brand-marketplace.d.ts +4 -0
- package/dist/lib/branding-core/generators/brand-marketplace.d.ts.map +1 -0
- package/dist/lib/branding-core/generators/brand-marketplace.js +251 -0
- package/dist/lib/branding-core/generators/brand-marketplace.js.map +1 -0
- package/dist/lib/branding-core/generators/brand-newsletter.d.ts +4 -0
- package/dist/lib/branding-core/generators/brand-newsletter.d.ts.map +1 -0
- package/dist/lib/branding-core/generators/brand-newsletter.js +173 -0
- package/dist/lib/branding-core/generators/brand-newsletter.js.map +1 -0
- package/dist/lib/branding-core/generators/brand-podcast.d.ts +3 -0
- package/dist/lib/branding-core/generators/brand-podcast.d.ts.map +1 -0
- package/dist/lib/branding-core/generators/brand-podcast.js +217 -0
- package/dist/lib/branding-core/generators/brand-podcast.js.map +1 -0
- package/dist/lib/branding-core/generators/brand-saas.d.ts +3 -0
- package/dist/lib/branding-core/generators/brand-saas.d.ts.map +1 -0
- package/dist/lib/branding-core/generators/brand-saas.js +212 -0
- package/dist/lib/branding-core/generators/brand-saas.js.map +1 -0
- package/dist/lib/branding-core/generators/brand-seo.d.ts +4 -0
- package/dist/lib/branding-core/generators/brand-seo.d.ts.map +1 -0
- package/dist/lib/branding-core/generators/brand-seo.js +269 -0
- package/dist/lib/branding-core/generators/brand-seo.js.map +1 -0
- package/dist/lib/branding-core/generators/brand-subscription.d.ts +4 -0
- package/dist/lib/branding-core/generators/brand-subscription.d.ts.map +1 -0
- package/dist/lib/branding-core/generators/brand-subscription.js +218 -0
- package/dist/lib/branding-core/generators/brand-subscription.js.map +1 -0
- package/dist/lib/branding-core/generators/brand-training.d.ts +4 -0
- package/dist/lib/branding-core/generators/brand-training.d.ts.map +1 -0
- package/dist/lib/branding-core/generators/brand-training.js +261 -0
- package/dist/lib/branding-core/generators/brand-training.js.map +1 -0
- package/dist/lib/branding-core/generators/brand-video.d.ts +3 -0
- package/dist/lib/branding-core/generators/brand-video.d.ts.map +1 -0
- package/dist/lib/branding-core/generators/brand-video.js +228 -0
- package/dist/lib/branding-core/generators/brand-video.js.map +1 -0
- package/dist/lib/branding-core/generators/brand-webinar.d.ts +4 -0
- package/dist/lib/branding-core/generators/brand-webinar.d.ts.map +1 -0
- package/dist/lib/branding-core/generators/brand-webinar.js +165 -0
- package/dist/lib/branding-core/generators/brand-webinar.js.map +1 -0
- package/dist/lib/branding-core/index.d.ts +24 -0
- package/dist/lib/branding-core/index.d.ts.map +1 -1
- package/dist/lib/branding-core/index.js +24 -0
- package/dist/lib/branding-core/index.js.map +1 -1
- package/dist/lib/types.d.ts +391 -0
- package/dist/lib/types.d.ts.map +1 -1
- package/dist/tools/generate-brand-affiliate.d.ts +3 -0
- package/dist/tools/generate-brand-affiliate.d.ts.map +1 -0
- package/dist/tools/generate-brand-affiliate.js +14 -0
- package/dist/tools/generate-brand-affiliate.js.map +1 -0
- package/dist/tools/generate-brand-analytics.d.ts +3 -0
- package/dist/tools/generate-brand-analytics.d.ts.map +1 -0
- package/dist/tools/generate-brand-analytics.js +19 -0
- package/dist/tools/generate-brand-analytics.js.map +1 -0
- package/dist/tools/generate-brand-audio.d.ts +3 -0
- package/dist/tools/generate-brand-audio.d.ts.map +1 -0
- package/dist/tools/generate-brand-audio.js +14 -0
- package/dist/tools/generate-brand-audio.js.map +1 -0
- package/dist/tools/generate-brand-b2b.d.ts +3 -0
- package/dist/tools/generate-brand-b2b.d.ts.map +1 -0
- package/dist/tools/generate-brand-b2b.js +10 -0
- package/dist/tools/generate-brand-b2b.js.map +1 -0
- package/dist/tools/generate-brand-chatbot.d.ts +3 -0
- package/dist/tools/generate-brand-chatbot.d.ts.map +1 -0
- package/dist/tools/generate-brand-chatbot.js +10 -0
- package/dist/tools/generate-brand-chatbot.js.map +1 -0
- package/dist/tools/generate-brand-community.d.ts +3 -0
- package/dist/tools/generate-brand-community.d.ts.map +1 -0
- package/dist/tools/generate-brand-community.js +14 -0
- package/dist/tools/generate-brand-community.js.map +1 -0
- package/dist/tools/generate-brand-competitive.d.ts +3 -0
- package/dist/tools/generate-brand-competitive.d.ts.map +1 -0
- package/dist/tools/generate-brand-competitive.js +14 -0
- package/dist/tools/generate-brand-competitive.js.map +1 -0
- package/dist/tools/generate-brand-crisis.d.ts +3 -0
- package/dist/tools/generate-brand-crisis.d.ts.map +1 -0
- package/dist/tools/generate-brand-crisis.js +14 -0
- package/dist/tools/generate-brand-crisis.js.map +1 -0
- package/dist/tools/generate-brand-customer.d.ts +3 -0
- package/dist/tools/generate-brand-customer.d.ts.map +1 -0
- package/dist/tools/generate-brand-customer.js +19 -0
- package/dist/tools/generate-brand-customer.js.map +1 -0
- package/dist/tools/generate-brand-ecommerce.d.ts +3 -0
- package/dist/tools/generate-brand-ecommerce.d.ts.map +1 -0
- package/dist/tools/generate-brand-ecommerce.js +14 -0
- package/dist/tools/generate-brand-ecommerce.js.map +1 -0
- package/dist/tools/generate-brand-fintech.d.ts +3 -0
- package/dist/tools/generate-brand-fintech.d.ts.map +1 -0
- package/dist/tools/generate-brand-fintech.js +14 -0
- package/dist/tools/generate-brand-fintech.js.map +1 -0
- package/dist/tools/generate-brand-globalisation.d.ts +3 -0
- package/dist/tools/generate-brand-globalisation.d.ts.map +1 -0
- package/dist/tools/generate-brand-globalisation.js +14 -0
- package/dist/tools/generate-brand-globalisation.js.map +1 -0
- package/dist/tools/generate-brand-influencer.d.ts +3 -0
- package/dist/tools/generate-brand-influencer.d.ts.map +1 -0
- package/dist/tools/generate-brand-influencer.js +10 -0
- package/dist/tools/generate-brand-influencer.js.map +1 -0
- package/dist/tools/generate-brand-innovation.d.ts +3 -0
- package/dist/tools/generate-brand-innovation.d.ts.map +1 -0
- package/dist/tools/generate-brand-innovation.js +19 -0
- package/dist/tools/generate-brand-innovation.js.map +1 -0
- package/dist/tools/generate-brand-loyalty.d.ts +3 -0
- package/dist/tools/generate-brand-loyalty.d.ts.map +1 -0
- package/dist/tools/generate-brand-loyalty.js +14 -0
- package/dist/tools/generate-brand-loyalty.js.map +1 -0
- package/dist/tools/generate-brand-marketplace.d.ts +3 -0
- package/dist/tools/generate-brand-marketplace.d.ts.map +1 -0
- package/dist/tools/generate-brand-marketplace.js +14 -0
- package/dist/tools/generate-brand-marketplace.js.map +1 -0
- package/dist/tools/generate-brand-newsletter.d.ts +3 -0
- package/dist/tools/generate-brand-newsletter.d.ts.map +1 -0
- package/dist/tools/generate-brand-newsletter.js +14 -0
- package/dist/tools/generate-brand-newsletter.js.map +1 -0
- package/dist/tools/generate-brand-podcast.d.ts +3 -0
- package/dist/tools/generate-brand-podcast.d.ts.map +1 -0
- package/dist/tools/generate-brand-podcast.js +10 -0
- package/dist/tools/generate-brand-podcast.js.map +1 -0
- package/dist/tools/generate-brand-saas.d.ts +3 -0
- package/dist/tools/generate-brand-saas.d.ts.map +1 -0
- package/dist/tools/generate-brand-saas.js +14 -0
- package/dist/tools/generate-brand-saas.js.map +1 -0
- package/dist/tools/generate-brand-seo.d.ts +3 -0
- package/dist/tools/generate-brand-seo.d.ts.map +1 -0
- package/dist/tools/generate-brand-seo.js +14 -0
- package/dist/tools/generate-brand-seo.js.map +1 -0
- package/dist/tools/generate-brand-subscription.d.ts +3 -0
- package/dist/tools/generate-brand-subscription.d.ts.map +1 -0
- package/dist/tools/generate-brand-subscription.js +14 -0
- package/dist/tools/generate-brand-subscription.js.map +1 -0
- package/dist/tools/generate-brand-training.d.ts +3 -0
- package/dist/tools/generate-brand-training.d.ts.map +1 -0
- package/dist/tools/generate-brand-training.js +14 -0
- package/dist/tools/generate-brand-training.js.map +1 -0
- package/dist/tools/generate-brand-video.d.ts +3 -0
- package/dist/tools/generate-brand-video.d.ts.map +1 -0
- package/dist/tools/generate-brand-video.js +14 -0
- package/dist/tools/generate-brand-video.js.map +1 -0
- package/dist/tools/generate-brand-webinar.d.ts +3 -0
- package/dist/tools/generate-brand-webinar.d.ts.map +1 -0
- package/dist/tools/generate-brand-webinar.js +10 -0
- package/dist/tools/generate-brand-webinar.js.map +1 -0
- package/package.json +1 -1
- package/server.json +2 -2
|
@@ -0,0 +1,261 @@
|
|
|
1
|
+
const STYLE_TRAINING_CULTURE = {
|
|
2
|
+
minimal: 'Self-directed, documentation-first learning with clear written guides and async formats',
|
|
3
|
+
bold: "Energetic, immersive workshops and hands-on challenges that match the brand's dynamic pace",
|
|
4
|
+
elegant: 'Curated, high-quality learning experiences with expert-led masterclasses and mentoring',
|
|
5
|
+
playful: 'Gamified, interactive learning journeys with badges, challenges, and peer collaboration',
|
|
6
|
+
corporate: 'Structured, compliance-aligned programmes with clear competency frameworks and certification paths',
|
|
7
|
+
tech: 'Technical deep-dives, pair programming, code reviews, and developer-led knowledge sharing',
|
|
8
|
+
organic: 'Holistic, values-centred learning that connects skills to purpose and community impact',
|
|
9
|
+
retro: 'Craft-focused apprenticeship model with story-driven case studies and expert mentorship',
|
|
10
|
+
};
|
|
11
|
+
const STYLE_DELIVERY_FORMAT = {
|
|
12
|
+
minimal: ['Written guides', 'Short async videos', 'Self-paced modules', 'Documentation wikis'],
|
|
13
|
+
bold: ['Live workshops', 'Hackathons', 'Role-play simulations', 'Peer teaching sessions'],
|
|
14
|
+
elegant: ['Masterclasses', '1-on-1 coaching', 'Curated reading lists', 'Industry expert panels'],
|
|
15
|
+
playful: [
|
|
16
|
+
'Gamified courses',
|
|
17
|
+
'Team quizzes',
|
|
18
|
+
'Interactive scenarios',
|
|
19
|
+
'Collaborative challenges',
|
|
20
|
+
],
|
|
21
|
+
corporate: [
|
|
22
|
+
'Instructor-led training',
|
|
23
|
+
'Compliance e-learning',
|
|
24
|
+
'Certification programmes',
|
|
25
|
+
'LMS-tracked modules',
|
|
26
|
+
],
|
|
27
|
+
tech: ['Pair programming', 'Code labs', 'Tech talks', 'Conference attendance sponsorship'],
|
|
28
|
+
organic: [
|
|
29
|
+
'Circle learning groups',
|
|
30
|
+
'Story sharing sessions',
|
|
31
|
+
'Values workshops',
|
|
32
|
+
'Community projects',
|
|
33
|
+
],
|
|
34
|
+
retro: [
|
|
35
|
+
'Apprenticeship shadowing',
|
|
36
|
+
'Case study analysis',
|
|
37
|
+
'Craft workshops',
|
|
38
|
+
'Story-based simulations',
|
|
39
|
+
],
|
|
40
|
+
};
|
|
41
|
+
const STYLE_ASSESSMENT_APPROACH = {
|
|
42
|
+
minimal: 'Practical output reviews and brief written reflections',
|
|
43
|
+
bold: 'Performance challenges and observable behaviour change',
|
|
44
|
+
elegant: 'Portfolio presentations and peer review panels',
|
|
45
|
+
playful: 'Quiz scores, badge completion, and peer kudos',
|
|
46
|
+
corporate: 'Formal assessments, certification exams, and manager sign-off',
|
|
47
|
+
tech: 'Code reviews, technical challenges, and pull request quality metrics',
|
|
48
|
+
organic: 'Reflective journaling, values alignment check-ins, and team feedback',
|
|
49
|
+
retro: 'Craftwork portfolios, master review, and storytelling presentations',
|
|
50
|
+
};
|
|
51
|
+
const STYLE_LEARNING_CADENCE = {
|
|
52
|
+
minimal: 'Continuous, bite-sized — 20-30 min per week, self-scheduled',
|
|
53
|
+
bold: 'Intensive bursts — quarterly full-day sessions plus weekly 1-hour sprints',
|
|
54
|
+
elegant: 'Monthly masterclasses plus ongoing 1-on-1 coaching check-ins',
|
|
55
|
+
playful: 'Daily micro-learning (5-10 min) plus monthly team challenges',
|
|
56
|
+
corporate: 'Annual compliance cycles plus quarterly role-based modules',
|
|
57
|
+
tech: 'Bi-weekly tech talks, monthly deep-dives, conference seasons',
|
|
58
|
+
organic: 'Seasonal cohorts aligned to organisational rhythms and community cycles',
|
|
59
|
+
retro: 'Weekly craft practice plus bi-monthly masterclass with visiting experts',
|
|
60
|
+
};
|
|
61
|
+
const STYLE_KNOWLEDGE_BASE = {
|
|
62
|
+
minimal: ['Brand guidelines wiki', 'Process documentation', 'FAQ repository', 'Decision logs'],
|
|
63
|
+
bold: ['Brand playbook', 'Campaign gallery', 'Win stories archive', 'Energy manifesto'],
|
|
64
|
+
elegant: [
|
|
65
|
+
'Brand heritage library',
|
|
66
|
+
'Excellence case studies',
|
|
67
|
+
'Expert interview series',
|
|
68
|
+
'Signature standards guide',
|
|
69
|
+
],
|
|
70
|
+
playful: [
|
|
71
|
+
'Interactive brand toolkit',
|
|
72
|
+
'Meme and creative asset library',
|
|
73
|
+
'Community knowledge hub',
|
|
74
|
+
'Fun facts database',
|
|
75
|
+
],
|
|
76
|
+
corporate: [
|
|
77
|
+
'Policy and procedure manuals',
|
|
78
|
+
'Regulatory compliance library',
|
|
79
|
+
'Competency framework',
|
|
80
|
+
'Audit trail records',
|
|
81
|
+
],
|
|
82
|
+
tech: [
|
|
83
|
+
'Technical documentation',
|
|
84
|
+
'API reference library',
|
|
85
|
+
'Architecture decision records',
|
|
86
|
+
'Open-source contribution guides',
|
|
87
|
+
],
|
|
88
|
+
organic: [
|
|
89
|
+
'Provenance stories',
|
|
90
|
+
'Sustainability research library',
|
|
91
|
+
'Community impact reports',
|
|
92
|
+
'Regenerative practice guides',
|
|
93
|
+
],
|
|
94
|
+
retro: [
|
|
95
|
+
'Brand heritage archive',
|
|
96
|
+
'Craft technique library',
|
|
97
|
+
'Customer story anthology',
|
|
98
|
+
'Vintage design reference',
|
|
99
|
+
],
|
|
100
|
+
};
|
|
101
|
+
function buildOnboardingModules(brand) {
|
|
102
|
+
const style = brand.style ?? 'minimal';
|
|
103
|
+
return [
|
|
104
|
+
{
|
|
105
|
+
title: 'Brand Foundations',
|
|
106
|
+
duration: '2 hours',
|
|
107
|
+
format: 'Interactive presentation + discussion',
|
|
108
|
+
objectives: [
|
|
109
|
+
`Understand ${brand.name}'s mission, vision, and values`,
|
|
110
|
+
'Articulate the brand promise and positioning',
|
|
111
|
+
'Identify the target audience and key personas',
|
|
112
|
+
'Describe the brand personality and voice',
|
|
113
|
+
],
|
|
114
|
+
assessmentMethod: 'Brand knowledge quiz + reflection exercise',
|
|
115
|
+
},
|
|
116
|
+
{
|
|
117
|
+
title: 'Visual Identity Mastery',
|
|
118
|
+
duration: '1.5 hours',
|
|
119
|
+
format: STYLE_DELIVERY_FORMAT[style]?.[0] ?? STYLE_DELIVERY_FORMAT.minimal[0],
|
|
120
|
+
objectives: [
|
|
121
|
+
'Apply the correct colour palette in all materials',
|
|
122
|
+
'Use approved typography styles and hierarchy',
|
|
123
|
+
'Follow logo usage and spacing guidelines',
|
|
124
|
+
'Identify compliant vs non-compliant brand applications',
|
|
125
|
+
],
|
|
126
|
+
assessmentMethod: 'Practical brand asset review',
|
|
127
|
+
},
|
|
128
|
+
{
|
|
129
|
+
title: 'Brand Voice and Tone',
|
|
130
|
+
duration: '1 hour',
|
|
131
|
+
format: 'Workshop with real-world examples',
|
|
132
|
+
objectives: [
|
|
133
|
+
"Write in the brand's defined tone of voice",
|
|
134
|
+
'Adapt tone appropriately across different channels',
|
|
135
|
+
'Avoid off-brand language and common mistakes',
|
|
136
|
+
'Apply messaging frameworks in customer-facing content',
|
|
137
|
+
],
|
|
138
|
+
assessmentMethod: 'Before/after copy rewriting exercise',
|
|
139
|
+
},
|
|
140
|
+
{
|
|
141
|
+
title: 'Customer Experience Standards',
|
|
142
|
+
duration: '2 hours',
|
|
143
|
+
format: 'Role-play and scenario training',
|
|
144
|
+
objectives: [
|
|
145
|
+
'Describe the ideal customer journey',
|
|
146
|
+
'Handle common customer situations on-brand',
|
|
147
|
+
'Escalate issues following brand protocols',
|
|
148
|
+
'Represent brand values in every interaction',
|
|
149
|
+
],
|
|
150
|
+
assessmentMethod: 'Scenario role-play assessment',
|
|
151
|
+
},
|
|
152
|
+
{
|
|
153
|
+
title: 'Tools and Systems',
|
|
154
|
+
duration: '1.5 hours',
|
|
155
|
+
format: 'Hands-on system walkthrough',
|
|
156
|
+
objectives: [
|
|
157
|
+
'Navigate brand asset management system',
|
|
158
|
+
'Submit and approve brand content correctly',
|
|
159
|
+
'Access and use brand templates effectively',
|
|
160
|
+
'Report brand compliance issues',
|
|
161
|
+
],
|
|
162
|
+
assessmentMethod: 'Practical systems task completion',
|
|
163
|
+
},
|
|
164
|
+
];
|
|
165
|
+
}
|
|
166
|
+
function buildLearningPaths(brand) {
|
|
167
|
+
const style = brand.style ?? 'minimal';
|
|
168
|
+
return [
|
|
169
|
+
{
|
|
170
|
+
role: 'Brand & Marketing',
|
|
171
|
+
durationWeeks: 8,
|
|
172
|
+
phases: [
|
|
173
|
+
'Week 1-2: Brand foundations and visual identity',
|
|
174
|
+
'Week 3-4: Voice, tone, and messaging frameworks',
|
|
175
|
+
'Week 5-6: Campaign planning and content strategy',
|
|
176
|
+
'Week 7-8: Analytics, optimisation, and brand governance',
|
|
177
|
+
],
|
|
178
|
+
keyResources: STYLE_KNOWLEDGE_BASE[style] ?? STYLE_KNOWLEDGE_BASE.minimal,
|
|
179
|
+
},
|
|
180
|
+
{
|
|
181
|
+
role: 'Customer-Facing Teams',
|
|
182
|
+
durationWeeks: 4,
|
|
183
|
+
phases: [
|
|
184
|
+
'Week 1: Brand promise and customer experience standards',
|
|
185
|
+
'Week 2: Voice, tone, and escalation protocols',
|
|
186
|
+
'Week 3: Scenario-based practice and peer coaching',
|
|
187
|
+
'Week 4: Assessment and certification',
|
|
188
|
+
],
|
|
189
|
+
keyResources: [
|
|
190
|
+
'Customer interaction guides',
|
|
191
|
+
'Escalation playbook',
|
|
192
|
+
'Brand voice cheat sheet',
|
|
193
|
+
'FAQ toolkit',
|
|
194
|
+
],
|
|
195
|
+
},
|
|
196
|
+
{
|
|
197
|
+
role: 'Leadership & Management',
|
|
198
|
+
durationWeeks: 6,
|
|
199
|
+
phases: [
|
|
200
|
+
'Week 1-2: Brand strategy and competitive positioning',
|
|
201
|
+
'Week 3-4: Brand governance and compliance frameworks',
|
|
202
|
+
'Week 5-6: Coaching teams on brand standards and culture',
|
|
203
|
+
],
|
|
204
|
+
keyResources: [
|
|
205
|
+
'Brand strategy deck',
|
|
206
|
+
'Governance framework',
|
|
207
|
+
'Compliance audit guide',
|
|
208
|
+
'Leadership brand charter',
|
|
209
|
+
],
|
|
210
|
+
},
|
|
211
|
+
{
|
|
212
|
+
role: 'Creative & Design',
|
|
213
|
+
durationWeeks: 10,
|
|
214
|
+
phases: [
|
|
215
|
+
'Week 1-2: Visual identity system deep-dive',
|
|
216
|
+
'Week 3-4: Design system and component library',
|
|
217
|
+
'Week 5-6: Brand guidelines application and edge cases',
|
|
218
|
+
'Week 7-8: Cross-channel adaptation principles',
|
|
219
|
+
'Week 9-10: Portfolio review and advanced brand thinking',
|
|
220
|
+
],
|
|
221
|
+
keyResources: [
|
|
222
|
+
'Design system documentation',
|
|
223
|
+
'Asset library',
|
|
224
|
+
'Brand guidelines PDF',
|
|
225
|
+
'Typography and colour specs',
|
|
226
|
+
],
|
|
227
|
+
},
|
|
228
|
+
];
|
|
229
|
+
}
|
|
230
|
+
function buildBrandChampionProgramme(brand) {
|
|
231
|
+
return [
|
|
232
|
+
`Identify Brand Champions in each department to model ${brand.name}'s standards`,
|
|
233
|
+
'Champions complete advanced brand certification (20+ hours)',
|
|
234
|
+
'Monthly Brand Champion roundtable to share insights and resolve grey areas',
|
|
235
|
+
'Champions lead peer coaching and new joiner onboarding support',
|
|
236
|
+
'Quarterly brand audit participation to surface compliance issues early',
|
|
237
|
+
'Annual Brand Champion summit with leadership to align on brand evolution',
|
|
238
|
+
'Champions recognised with visible credential and contribution to brand governance',
|
|
239
|
+
];
|
|
240
|
+
}
|
|
241
|
+
function buildTrainingBriefSummary(brand) {
|
|
242
|
+
const style = brand.style ?? 'minimal';
|
|
243
|
+
const tagline = brand.tagline ? ` — "${brand.tagline}"` : '';
|
|
244
|
+
const culture = (STYLE_TRAINING_CULTURE[style] ?? STYLE_TRAINING_CULTURE.minimal).split(',')[0];
|
|
245
|
+
return `${brand.name}${tagline} learning & development strategy adopts a ${culture.toLowerCase()} approach. The programme covers brand foundations, visual identity, voice, and customer experience through a structured onboarding track (8 hours) and role-based learning paths (4-10 weeks). Delivery is ${(STYLE_DELIVERY_FORMAT[style]?.[0] ?? 'self-paced modules').toLowerCase()}-led, with assessment via ${(STYLE_ASSESSMENT_APPROACH[style] ?? STYLE_ASSESSMENT_APPROACH.minimal).toLowerCase()}.`;
|
|
246
|
+
}
|
|
247
|
+
export function generateBrandTraining(brand) {
|
|
248
|
+
const style = brand.style ?? 'minimal';
|
|
249
|
+
return {
|
|
250
|
+
trainingCulture: STYLE_TRAINING_CULTURE[style] ?? STYLE_TRAINING_CULTURE.minimal,
|
|
251
|
+
deliveryFormats: STYLE_DELIVERY_FORMAT[style] ?? STYLE_DELIVERY_FORMAT.minimal,
|
|
252
|
+
assessmentApproach: STYLE_ASSESSMENT_APPROACH[style] ?? STYLE_ASSESSMENT_APPROACH.minimal,
|
|
253
|
+
learningCadence: STYLE_LEARNING_CADENCE[style] ?? STYLE_LEARNING_CADENCE.minimal,
|
|
254
|
+
knowledgeBaseStructure: STYLE_KNOWLEDGE_BASE[style] ?? STYLE_KNOWLEDGE_BASE.minimal,
|
|
255
|
+
onboardingModules: buildOnboardingModules(brand),
|
|
256
|
+
learningPaths: buildLearningPaths(brand),
|
|
257
|
+
brandChampionProgramme: buildBrandChampionProgramme(brand),
|
|
258
|
+
trainingBriefSummary: buildTrainingBriefSummary(brand),
|
|
259
|
+
};
|
|
260
|
+
}
|
|
261
|
+
//# sourceMappingURL=brand-training.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"brand-training.js","sourceRoot":"","sources":["../../../../src/lib/branding-core/generators/brand-training.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"brand-video.d.ts","sourceRoot":"","sources":["../../../../src/lib/branding-core/generators/brand-video.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,gBAAgB,EAAuB,MAAM,gBAAgB,CAAC;AAmO3F,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,aAAa,GAAG,gBAAgB,CAczE"}
|
|
@@ -0,0 +1,228 @@
|
|
|
1
|
+
const VALID_STYLES = new Set([
|
|
2
|
+
'minimal',
|
|
3
|
+
'bold',
|
|
4
|
+
'elegant',
|
|
5
|
+
'playful',
|
|
6
|
+
'corporate',
|
|
7
|
+
'tech',
|
|
8
|
+
'organic',
|
|
9
|
+
'retro',
|
|
10
|
+
]);
|
|
11
|
+
const STYLE_AESTHETIC = {
|
|
12
|
+
minimal: 'Clean, negative-space-driven visuals with precise motion and minimal colour palette',
|
|
13
|
+
bold: 'High-energy, saturated visuals with kinetic typography and dynamic transitions',
|
|
14
|
+
elegant: 'Cinematic quality with slow, deliberate movement, film grain, and rich colour grading',
|
|
15
|
+
playful: 'Bright, expressive animation with character-driven storytelling and upbeat pacing',
|
|
16
|
+
corporate: 'Professional, structured composition with authoritative motion and clear hierarchy',
|
|
17
|
+
tech: 'Data visualisation, code aesthetics, glitch effects, and futuristic UI reveals',
|
|
18
|
+
organic: 'Natural textures, earth tones, handheld feel, and authentic documentary-style footage',
|
|
19
|
+
retro: 'VHS artefacts, film burns, vintage colour grades, and nostalgic motion graphics',
|
|
20
|
+
};
|
|
21
|
+
const STYLE_PACING = {
|
|
22
|
+
minimal: 'Slow, deliberate cuts with extended hold times; let visuals breathe',
|
|
23
|
+
bold: 'Rapid editing rhythm, flash cuts, and high-impact beat-synced transitions',
|
|
24
|
+
elegant: 'Long takes, smooth camera movements, graceful dissolves',
|
|
25
|
+
playful: 'Bouncy, energetic cuts timed to upbeat music with surprise transitions',
|
|
26
|
+
corporate: 'Steady pacing, measured cuts, professional wipes and fades',
|
|
27
|
+
tech: 'Precise, data-driven timing; animations triggered by narrative beats',
|
|
28
|
+
organic: 'Slow, breathing pace; match-cuts between nature and product',
|
|
29
|
+
retro: 'Variable speed with film-era dissolves and iris transitions',
|
|
30
|
+
};
|
|
31
|
+
const STYLE_FORMATS = {
|
|
32
|
+
minimal: [
|
|
33
|
+
'Brand story (60-90s)',
|
|
34
|
+
'Product demo (30-60s)',
|
|
35
|
+
'Testimonial series (15-30s each)',
|
|
36
|
+
'Social reel (9-15s)',
|
|
37
|
+
'Homepage hero loop (10-20s, silent)',
|
|
38
|
+
],
|
|
39
|
+
bold: [
|
|
40
|
+
'Launch manifesto (60-120s)',
|
|
41
|
+
'Campaign hero film (30-60s)',
|
|
42
|
+
'Social story (15s)',
|
|
43
|
+
'Influencer partnership (30-60s)',
|
|
44
|
+
'Event highlight reel (90-120s)',
|
|
45
|
+
],
|
|
46
|
+
elegant: [
|
|
47
|
+
'Brand film (2-3min)',
|
|
48
|
+
'Product reveal (45-60s)',
|
|
49
|
+
'Lifestyle campaign (30-60s)',
|
|
50
|
+
'Behind-the-scenes (60-90s)',
|
|
51
|
+
'Seasonal campaign (30-45s)',
|
|
52
|
+
],
|
|
53
|
+
playful: [
|
|
54
|
+
'Character animation (30-60s)',
|
|
55
|
+
'Explainer (60-90s)',
|
|
56
|
+
'Social challenge (15s)',
|
|
57
|
+
'Tutorial series (60-120s)',
|
|
58
|
+
'User-generated remix (15-30s)',
|
|
59
|
+
],
|
|
60
|
+
corporate: [
|
|
61
|
+
'Executive message (60-120s)',
|
|
62
|
+
'Investor overview (2-3min)',
|
|
63
|
+
'Product walkthrough (90-180s)',
|
|
64
|
+
'Case study (2-3min)',
|
|
65
|
+
'Event keynote opener (30-60s)',
|
|
66
|
+
],
|
|
67
|
+
tech: [
|
|
68
|
+
'Product demo (60-90s)',
|
|
69
|
+
'API walkthrough (2-3min)',
|
|
70
|
+
'Feature announcement (30-60s)',
|
|
71
|
+
'Developer tutorial (3-5min)',
|
|
72
|
+
'Infrastructure explainer (90-120s)',
|
|
73
|
+
],
|
|
74
|
+
organic: [
|
|
75
|
+
'Brand origin story (90-120s)',
|
|
76
|
+
'Provenance documentary (2-3min)',
|
|
77
|
+
'Sustainability report film (60-90s)',
|
|
78
|
+
'Seasonal harvest reel (30-60s)',
|
|
79
|
+
'Community spotlight (60-90s)',
|
|
80
|
+
],
|
|
81
|
+
retro: [
|
|
82
|
+
'Nostalgia brand film (60-90s)',
|
|
83
|
+
'Archive-style announcement (30-60s)',
|
|
84
|
+
'Vintage product showcase (45-60s)',
|
|
85
|
+
'Throwback campaign (30-45s)',
|
|
86
|
+
'Social archive reel (15-30s)',
|
|
87
|
+
],
|
|
88
|
+
};
|
|
89
|
+
const STYLE_COLOR_GRADE = {
|
|
90
|
+
minimal: 'Desaturated palette with single accent colour; high contrast blacks and whites',
|
|
91
|
+
bold: 'Vibrant, punchy colours; high saturation; neon accents on dark backgrounds',
|
|
92
|
+
elegant: 'Rich, filmic colour grade; warm shadows; lifted blacks; muted highlights',
|
|
93
|
+
playful: 'Bright primaries, high saturation, soft pastels for secondary elements',
|
|
94
|
+
corporate: 'Clean, neutral grade; slight warm bias for approachability; brand colour accents',
|
|
95
|
+
tech: 'Cool-tinted, high contrast; neon brand colours; dark mode aesthetic',
|
|
96
|
+
organic: 'Warm earth tones; lifted shadows; natural greens; analogue film simulation',
|
|
97
|
+
retro: 'Faded, low-saturation vintage grade; warm yellows; vignette; film grain overlay',
|
|
98
|
+
};
|
|
99
|
+
const STYLE_TYPOGRAPHY_MOTION = {
|
|
100
|
+
minimal: 'Precise letter-spacing reveals; fade-up with slight blur; long hold times',
|
|
101
|
+
bold: 'Kinetic typography; explosive reveals; screen-filling headlines',
|
|
102
|
+
elegant: 'Graceful serif reveals with stagger; thin-weight display; slow fade',
|
|
103
|
+
playful: 'Bouncy spring animations; character-by-character reveals; bubble effects',
|
|
104
|
+
corporate: 'Clean slide-ins and fades; sans-serif; aligned to grid',
|
|
105
|
+
tech: 'Code-typing effect; terminal cursor blink; matrix-style cascade',
|
|
106
|
+
organic: 'Handwritten reveal; natural leaf wipes; organic mask transitions',
|
|
107
|
+
retro: 'Typewriter effect; VHS title card; retro credit roll',
|
|
108
|
+
};
|
|
109
|
+
const STYLE_MUSIC_DIRECTION = {
|
|
110
|
+
minimal: [
|
|
111
|
+
'Ambient, minimal electronic or piano',
|
|
112
|
+
'Low BPM (60-80); lots of space and silence',
|
|
113
|
+
'Single melodic motif that evolves gently',
|
|
114
|
+
],
|
|
115
|
+
bold: [
|
|
116
|
+
'High-energy hip-hop, EDM, or rock',
|
|
117
|
+
'Fast BPM (120-140); driving beat',
|
|
118
|
+
'Impactful drops timed to visual hits',
|
|
119
|
+
],
|
|
120
|
+
elegant: [
|
|
121
|
+
'Orchestral, jazz, or classical arrangements',
|
|
122
|
+
'Medium BPM (70-90); melodic and emotive',
|
|
123
|
+
'Live instrumentation; natural warmth',
|
|
124
|
+
],
|
|
125
|
+
playful: [
|
|
126
|
+
'Upbeat pop, quirky indie, or cartoon-style scoring',
|
|
127
|
+
'Medium-fast BPM (100-120); fun and surprising',
|
|
128
|
+
'Playful sound design integrated with music',
|
|
129
|
+
],
|
|
130
|
+
corporate: [
|
|
131
|
+
'Corporate motivational, uplifting orchestral, or smooth jazz',
|
|
132
|
+
'Medium BPM (85-100); confident and professional',
|
|
133
|
+
'Understated; supports narrative without distraction',
|
|
134
|
+
],
|
|
135
|
+
tech: [
|
|
136
|
+
'Electronic, synth-forward, or lo-fi beats',
|
|
137
|
+
'Medium BPM (90-110); precise and rhythmic',
|
|
138
|
+
'Futuristic sound design elements',
|
|
139
|
+
],
|
|
140
|
+
organic: [
|
|
141
|
+
'Acoustic folk, world music, or nature-integrated sound design',
|
|
142
|
+
'Slow-medium BPM (70-95); warm and genuine',
|
|
143
|
+
'Live instruments; field recordings of nature',
|
|
144
|
+
],
|
|
145
|
+
retro: [
|
|
146
|
+
'Vintage synth, 8-bit, or lo-fi jazz',
|
|
147
|
+
'Variable BPM; era-authentic instrumentation',
|
|
148
|
+
'Vinyl crackle and tape saturation effects',
|
|
149
|
+
],
|
|
150
|
+
};
|
|
151
|
+
const STYLE_CALL_TO_ACTION = {
|
|
152
|
+
minimal: 'Subtle end card with URL; no voiceover CTA; trust the visual',
|
|
153
|
+
bold: 'Full-screen animated CTA with urgent copy; countdown or limited offer',
|
|
154
|
+
elegant: 'Elegant text overlay fade-in; brand URL; no hard sell',
|
|
155
|
+
playful: 'Animated character points to CTA; fun copy; bright button graphic',
|
|
156
|
+
corporate: 'Professional end card; logo lockup; website and contact details',
|
|
157
|
+
tech: 'Link-in-bio or QR code; developer portal URL; CLI install command',
|
|
158
|
+
organic: 'Soft-sell; visit website for more; QR to provenance page',
|
|
159
|
+
retro: 'Vintage-style end card; retro font URL; "Tune in next time" energy',
|
|
160
|
+
};
|
|
161
|
+
function buildProductionNotes(brand) {
|
|
162
|
+
const safeStyle = VALID_STYLES.has(brand.style) ? brand.style : 'minimal';
|
|
163
|
+
return [
|
|
164
|
+
{
|
|
165
|
+
category: 'Pre-production',
|
|
166
|
+
notes: [
|
|
167
|
+
`Script tone: align with ${safeStyle} brand voice`,
|
|
168
|
+
'Storyboard must be approved against brand style guide before shoot',
|
|
169
|
+
`Locations should reflect brand aesthetic: ${STYLE_AESTHETIC[safeStyle].split(';')[0]}`,
|
|
170
|
+
'Talent casting brief to match target audience persona',
|
|
171
|
+
'Music brief to creative agency before shoot',
|
|
172
|
+
],
|
|
173
|
+
},
|
|
174
|
+
{
|
|
175
|
+
category: 'Production',
|
|
176
|
+
notes: [
|
|
177
|
+
`Camera style: ${safeStyle === 'organic' ? 'handheld, naturalistic' : safeStyle === 'elegant' ? 'tripod, fluid head, cinema lenses' : safeStyle === 'tech' ? 'slider, drone, macro for product' : 'tripod and steadicam mix'}`,
|
|
178
|
+
'Brand colours must appear in at least 30% of frames',
|
|
179
|
+
'Logo placement: lower-third or end card only; no watermark during content',
|
|
180
|
+
'b-roll ratio: minimum 3:1 vs talking-head footage',
|
|
181
|
+
'Capture 16:9 primary; 9:16 vertical cut for social',
|
|
182
|
+
],
|
|
183
|
+
},
|
|
184
|
+
{
|
|
185
|
+
category: 'Post-production',
|
|
186
|
+
notes: [
|
|
187
|
+
`Colour grade: ${STYLE_COLOR_GRADE[safeStyle]}`,
|
|
188
|
+
`Typography motion style: ${STYLE_TYPOGRAPHY_MOTION[safeStyle]}`,
|
|
189
|
+
`Pacing: ${STYLE_PACING[safeStyle]}`,
|
|
190
|
+
'Subtitles/captions required for all dialogue (accessibility)',
|
|
191
|
+
'Deliver: H.264 MP4 master + compressed social cuts + SRT subtitle file',
|
|
192
|
+
],
|
|
193
|
+
},
|
|
194
|
+
{
|
|
195
|
+
category: 'Distribution',
|
|
196
|
+
notes: [
|
|
197
|
+
'Platform specs: 4K master, 1080p web, 720p social',
|
|
198
|
+
'YouTube: thumbnail design follows brand colour system',
|
|
199
|
+
'LinkedIn: square (1:1) crop for best in-feed performance',
|
|
200
|
+
'Meta/Instagram: 4:5 crop for feed; 9:16 for Stories/Reels',
|
|
201
|
+
'Website embed: autoplay muted loop for hero; click-to-play for case studies',
|
|
202
|
+
],
|
|
203
|
+
},
|
|
204
|
+
];
|
|
205
|
+
}
|
|
206
|
+
function buildVideoBriefSummary(brand) {
|
|
207
|
+
const safeStyle = VALID_STYLES.has(brand.style) ? brand.style : 'minimal';
|
|
208
|
+
const taglinePart = brand.tagline ? ` \u2014 "${brand.tagline}"` : '';
|
|
209
|
+
return (`${brand.name}${taglinePart} video identity: ${STYLE_AESTHETIC[safeStyle].split(';')[0].toLowerCase()}. ` +
|
|
210
|
+
`Recommended formats include ${STYLE_FORMATS[safeStyle][0]} and ${STYLE_FORMATS[safeStyle][1]}. ` +
|
|
211
|
+
`Music direction: ${STYLE_MUSIC_DIRECTION[safeStyle][0].toLowerCase()}. ` +
|
|
212
|
+
`CTA approach: ${STYLE_CALL_TO_ACTION[safeStyle].split(';')[0].toLowerCase()}.`);
|
|
213
|
+
}
|
|
214
|
+
export function generateBrandVideo(brand) {
|
|
215
|
+
const safeStyle = VALID_STYLES.has(brand.style) ? brand.style : 'minimal';
|
|
216
|
+
return {
|
|
217
|
+
videoAesthetic: STYLE_AESTHETIC[safeStyle],
|
|
218
|
+
pacing: STYLE_PACING[safeStyle],
|
|
219
|
+
recommendedFormats: STYLE_FORMATS[safeStyle],
|
|
220
|
+
colorGrade: STYLE_COLOR_GRADE[safeStyle],
|
|
221
|
+
typographyMotion: STYLE_TYPOGRAPHY_MOTION[safeStyle],
|
|
222
|
+
musicDirection: STYLE_MUSIC_DIRECTION[safeStyle],
|
|
223
|
+
callToActionApproach: STYLE_CALL_TO_ACTION[safeStyle],
|
|
224
|
+
productionNotes: buildProductionNotes(brand),
|
|
225
|
+
videoBriefSummary: buildVideoBriefSummary(brand),
|
|
226
|
+
};
|
|
227
|
+
}
|
|
228
|
+
//# sourceMappingURL=brand-video.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"brand-video.js","sourceRoot":"","sources":["../../../../src/lib/branding-core/generators/brand-video.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"brand-webinar.d.ts","sourceRoot":"","sources":["../../../../src/lib/branding-core/generators/brand-webinar.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAc,MAAM,gBAAgB,CAAC;AAChE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAoKzD,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,aAAa,GAAG,kBAAkB,CAe7E"}
|