@forgespace/branding-mcp 0.32.0 → 0.55.1
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 +47 -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-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 +23 -0
- package/dist/lib/branding-core/index.d.ts.map +1 -1
- package/dist/lib/branding-core/index.js +23 -0
- package/dist/lib/branding-core/index.js.map +1 -1
- package/dist/lib/types.d.ts +379 -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-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 +2 -2
- package/server.json +3 -3
|
@@ -0,0 +1,262 @@
|
|
|
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_INFLUENCER_APPROACH = {
|
|
12
|
+
minimal: 'Curated micro-influencer partnerships with authentic, uncluttered storytelling',
|
|
13
|
+
bold: 'High-impact macro-influencer campaigns with explosive reach and bold visuals',
|
|
14
|
+
elegant: 'Prestige collaborations with luxury lifestyle creators and aspirational voices',
|
|
15
|
+
playful: 'Fun, energetic partnerships with entertainment creators and viral content makers',
|
|
16
|
+
corporate: 'Thought leadership collaborations with industry analysts and business media',
|
|
17
|
+
tech: 'Developer advocates, tech YouTubers, and open-source community contributors',
|
|
18
|
+
organic: 'Purpose-driven creators focused on sustainability, wellness, and conscious living',
|
|
19
|
+
retro: 'Nostalgic content creators and vintage culture enthusiasts with niche followings',
|
|
20
|
+
};
|
|
21
|
+
const STYLE_CONTENT_PREFERENCES = {
|
|
22
|
+
minimal: [
|
|
23
|
+
'Minimalist flat-lay product photography',
|
|
24
|
+
'Clean aesthetic unboxing videos',
|
|
25
|
+
'Honest, no-fuss product reviews',
|
|
26
|
+
'Day-in-the-life integrations',
|
|
27
|
+
'Before/after comparison content',
|
|
28
|
+
],
|
|
29
|
+
bold: [
|
|
30
|
+
'High-energy challenge videos',
|
|
31
|
+
'Reaction and transformation reels',
|
|
32
|
+
'Live unboxing and haul content',
|
|
33
|
+
'Bold OOH takeover documentation',
|
|
34
|
+
'Trend-setting statement pieces',
|
|
35
|
+
],
|
|
36
|
+
elegant: [
|
|
37
|
+
'Editorial-style luxury flatlay photography',
|
|
38
|
+
'Refined product styling and gifting moments',
|
|
39
|
+
'Exclusive behind-the-scenes access content',
|
|
40
|
+
'Travel and lifestyle integration shots',
|
|
41
|
+
'Long-form written reviews on prestige platforms',
|
|
42
|
+
],
|
|
43
|
+
playful: [
|
|
44
|
+
'Comedy skits and brand parodies',
|
|
45
|
+
'Challenge and trend participation',
|
|
46
|
+
'Interactive polls and Q&A stories',
|
|
47
|
+
'Meme-friendly short-form video',
|
|
48
|
+
'Animated and illustrated brand stories',
|
|
49
|
+
],
|
|
50
|
+
corporate: [
|
|
51
|
+
'LinkedIn thought leadership articles',
|
|
52
|
+
'Podcast guest appearances',
|
|
53
|
+
'Webinar and panel discussion co-hosting',
|
|
54
|
+
'Industry report co-authorship',
|
|
55
|
+
'Professional case study narratives',
|
|
56
|
+
],
|
|
57
|
+
tech: [
|
|
58
|
+
'In-depth technical product reviews',
|
|
59
|
+
'Tutorial and how-to video series',
|
|
60
|
+
'GitHub repository contributions',
|
|
61
|
+
'Live coding sessions and API walkthroughs',
|
|
62
|
+
'Developer podcast appearances',
|
|
63
|
+
],
|
|
64
|
+
organic: [
|
|
65
|
+
'Farm-to-table and origin storytelling',
|
|
66
|
+
'Sustainable lifestyle integration',
|
|
67
|
+
'Environmental impact documentation',
|
|
68
|
+
'Community and purpose-driven narratives',
|
|
69
|
+
'Educational content on conscious consumption',
|
|
70
|
+
],
|
|
71
|
+
retro: [
|
|
72
|
+
'Vintage aesthetic product showcases',
|
|
73
|
+
'Throwback and nostalgia-led storytelling',
|
|
74
|
+
'Collector and enthusiast deep dives',
|
|
75
|
+
'Retro lifestyle and culture content',
|
|
76
|
+
'Anniversary and heritage brand moments',
|
|
77
|
+
],
|
|
78
|
+
};
|
|
79
|
+
const STYLE_OUTREACH_TONE = {
|
|
80
|
+
minimal: "Clear, concise, and respectful of the creator's time and creative vision",
|
|
81
|
+
bold: 'Energetic and direct — lead with the big opportunity and bold campaign concept',
|
|
82
|
+
elegant: 'Refined and exclusive — position the partnership as a privilege, not a transaction',
|
|
83
|
+
playful: 'Casual, friendly, and fun — match their energy and show brand personality',
|
|
84
|
+
corporate: 'Professional and data-led — highlight business value and strategic alignment',
|
|
85
|
+
tech: 'Peer-to-peer and technical — demonstrate genuine understanding of their domain',
|
|
86
|
+
organic: 'Values-led and mission-driven — lead with shared purpose over commercial terms',
|
|
87
|
+
retro: 'Enthusiastic and culturally aware — show deep appreciation for their niche passion',
|
|
88
|
+
};
|
|
89
|
+
const STYLE_AVOID = {
|
|
90
|
+
minimal: [
|
|
91
|
+
'Over-produced content',
|
|
92
|
+
'Excessive brand logo placement',
|
|
93
|
+
'Scripted unnatural dialogue',
|
|
94
|
+
],
|
|
95
|
+
bold: ['Muted aesthetics', 'Slow-paced storytelling', 'Unclear calls to action'],
|
|
96
|
+
elegant: [
|
|
97
|
+
'Mass-market or low-brow creators',
|
|
98
|
+
'Discount or voucher-led promotions',
|
|
99
|
+
'Garish visuals',
|
|
100
|
+
],
|
|
101
|
+
playful: [
|
|
102
|
+
'Overly serious or stiff content',
|
|
103
|
+
'Corporate jargon in captions',
|
|
104
|
+
'Static imagery only',
|
|
105
|
+
],
|
|
106
|
+
corporate: [
|
|
107
|
+
'Consumer entertainment creators',
|
|
108
|
+
'Controversial personal brand accounts',
|
|
109
|
+
'Vanity metrics focus',
|
|
110
|
+
],
|
|
111
|
+
tech: [
|
|
112
|
+
'Non-technical shallow reviews',
|
|
113
|
+
'Paid-first sponsored posts without genuine use',
|
|
114
|
+
'Hype without substance',
|
|
115
|
+
],
|
|
116
|
+
organic: [
|
|
117
|
+
'Fast-fashion or unsustainable product tie-ins',
|
|
118
|
+
'Greenwashing language',
|
|
119
|
+
'Purely commercial framing',
|
|
120
|
+
],
|
|
121
|
+
retro: [
|
|
122
|
+
'Trendy influencers without authentic niche knowledge',
|
|
123
|
+
'Modern minimalist aesthetics',
|
|
124
|
+
'Generic lifestyle content',
|
|
125
|
+
],
|
|
126
|
+
};
|
|
127
|
+
function buildInfluencerTiers(brand) {
|
|
128
|
+
const safeStyle = VALID_STYLES.has(brand.style) ? brand.style : 'minimal';
|
|
129
|
+
return [
|
|
130
|
+
{
|
|
131
|
+
tier: 'Mega Influencer',
|
|
132
|
+
followerRange: '1M+',
|
|
133
|
+
engagementExpectation: '1-3%',
|
|
134
|
+
budgetGuidance: 'Premium investment — suited to brand awareness campaigns',
|
|
135
|
+
idealUseCase: 'Product launches, brand repositioning, major campaign amplification',
|
|
136
|
+
selectionCriteria: [
|
|
137
|
+
'Brand value alignment must be unimpeachable',
|
|
138
|
+
`Audience demographic match for ${brand.industry || 'target market'}`,
|
|
139
|
+
'Previous brand partnership quality and disclosure compliance',
|
|
140
|
+
'Organic brand affinity preferred over cold outreach',
|
|
141
|
+
],
|
|
142
|
+
},
|
|
143
|
+
{
|
|
144
|
+
tier: 'Macro Influencer',
|
|
145
|
+
followerRange: '100K–1M',
|
|
146
|
+
engagementExpectation: '2-5%',
|
|
147
|
+
budgetGuidance: 'Mid-tier investment — strong ROI for reach with some engagement',
|
|
148
|
+
idealUseCase: 'Seasonal campaigns, product reviews, long-form storytelling',
|
|
149
|
+
selectionCriteria: [
|
|
150
|
+
'Consistent posting cadence and audience growth trajectory',
|
|
151
|
+
'Content quality aligned with brand aesthetic',
|
|
152
|
+
`${STYLE_INFLUENCER_APPROACH[safeStyle].split(' ').slice(0, 4).join(' ')} sensibility`,
|
|
153
|
+
'Clear media kit with audited audience demographics',
|
|
154
|
+
],
|
|
155
|
+
},
|
|
156
|
+
{
|
|
157
|
+
tier: 'Micro Influencer',
|
|
158
|
+
followerRange: '10K–100K',
|
|
159
|
+
engagementExpectation: '5-10%',
|
|
160
|
+
budgetGuidance: 'Efficient investment — high engagement and authentic community trust',
|
|
161
|
+
idealUseCase: 'Community building, niche market penetration, authentic testimonials',
|
|
162
|
+
selectionCriteria: [
|
|
163
|
+
'Niche expertise directly relevant to brand category',
|
|
164
|
+
'High comment-to-like ratio indicating genuine community',
|
|
165
|
+
'Previous brand content quality and creative execution',
|
|
166
|
+
'Responsive and professional communication',
|
|
167
|
+
],
|
|
168
|
+
},
|
|
169
|
+
{
|
|
170
|
+
tier: 'Nano Influencer',
|
|
171
|
+
followerRange: '1K–10K',
|
|
172
|
+
engagementExpectation: '10-20%',
|
|
173
|
+
budgetGuidance: 'Low cost or gifting-based — maximum authenticity and peer trust',
|
|
174
|
+
idealUseCase: 'Brand seeding, product sampling, word-of-mouth activation',
|
|
175
|
+
selectionCriteria: [
|
|
176
|
+
'Genuine passion for brand category or values',
|
|
177
|
+
'Highly engaged and responsive audience',
|
|
178
|
+
'Local or hyper-niche community leadership',
|
|
179
|
+
'No brand conflict or competing products in recent posts',
|
|
180
|
+
],
|
|
181
|
+
},
|
|
182
|
+
];
|
|
183
|
+
}
|
|
184
|
+
function buildCampaignBriefTemplate(brand) {
|
|
185
|
+
const safeStyle = VALID_STYLES.has(brand.style) ? brand.style : 'minimal';
|
|
186
|
+
return (`INFLUENCER CAMPAIGN BRIEF — ${brand.name.toUpperCase()}\n` +
|
|
187
|
+
`\nBrand: ${brand.name}${brand.tagline ? ` | "${brand.tagline}"` : ''}\n` +
|
|
188
|
+
`Industry: ${brand.industry || 'General'}\n` +
|
|
189
|
+
`\nOVERVIEW\n` +
|
|
190
|
+
`We are seeking [INFLUENCER NAME] to partner with ${brand.name} on [CAMPAIGN NAME].\n` +
|
|
191
|
+
`\nOBJECTIVES\n` +
|
|
192
|
+
`- Drive awareness of [PRODUCT/SERVICE] among [TARGET AUDIENCE]\n` +
|
|
193
|
+
`- Generate [X pieces] of authentic branded content\n` +
|
|
194
|
+
`- Achieve [X impressions / X engagements / X conversions]\n` +
|
|
195
|
+
`\nCONTENT DIRECTION\n` +
|
|
196
|
+
`Tone: ${STYLE_OUTREACH_TONE[safeStyle]}\n` +
|
|
197
|
+
`Preferred formats: ${(STYLE_CONTENT_PREFERENCES[safeStyle] ?? STYLE_CONTENT_PREFERENCES.minimal).slice(0, 2).join(', ')}\n` +
|
|
198
|
+
`\nDELIVERABLES\n` +
|
|
199
|
+
`- [X] feed posts / reels / stories\n` +
|
|
200
|
+
`- Usage rights: [DURATION] for owned and paid channels\n` +
|
|
201
|
+
`\nCOMPENSATION\n` +
|
|
202
|
+
`- [Fee / Gifting / Affiliate / Hybrid] — TBD based on audience and deliverables\n` +
|
|
203
|
+
`\nKEY DATES\n` +
|
|
204
|
+
`- Brief acceptance: [DATE]\n` +
|
|
205
|
+
`- Content draft review: [DATE]\n` +
|
|
206
|
+
`- Go-live date: [DATE]`);
|
|
207
|
+
}
|
|
208
|
+
function buildKpis(brand) {
|
|
209
|
+
const safeStyle = VALID_STYLES.has(brand.style) ? brand.style : 'minimal';
|
|
210
|
+
const base = {
|
|
211
|
+
impressions: 'Total estimated reach across all influencer posts',
|
|
212
|
+
engagement_rate: 'Likes, comments, shares, and saves / total reach',
|
|
213
|
+
click_through_rate: 'Clicks to brand URL / total impressions',
|
|
214
|
+
cost_per_engagement: 'Total spend / total engagements',
|
|
215
|
+
sentiment_score: 'Positive comment ratio on branded content',
|
|
216
|
+
earned_media_value: 'Equivalent advertising value of organic influencer content',
|
|
217
|
+
};
|
|
218
|
+
if (safeStyle === 'tech') {
|
|
219
|
+
base.developer_sign_ups = 'New sign-ups attributed to influencer referral links';
|
|
220
|
+
base.github_stars = 'Stars or forks driven by influencer-linked repositories';
|
|
221
|
+
}
|
|
222
|
+
if (safeStyle === 'organic') {
|
|
223
|
+
base.values_alignment_score =
|
|
224
|
+
'Audience survey: perceived sustainability credibility post-campaign';
|
|
225
|
+
}
|
|
226
|
+
if (safeStyle === 'corporate') {
|
|
227
|
+
base.qualified_leads = 'Leads generated via influencer-specific landing pages';
|
|
228
|
+
base.pipeline_value = 'Estimated revenue potential from influencer-sourced leads';
|
|
229
|
+
}
|
|
230
|
+
return base;
|
|
231
|
+
}
|
|
232
|
+
function buildBriefSummary(brand) {
|
|
233
|
+
const safeStyle = VALID_STYLES.has(brand.style) ? brand.style : 'minimal';
|
|
234
|
+
const approach = STYLE_INFLUENCER_APPROACH[safeStyle];
|
|
235
|
+
const pref = (STYLE_CONTENT_PREFERENCES[safeStyle] ?? STYLE_CONTENT_PREFERENCES.minimal)[0];
|
|
236
|
+
return (`${brand.name}${brand.tagline ? ` ("${brand.tagline}")` : ''} pursues an influencer strategy built on ${approach.toLowerCase()}. ` +
|
|
237
|
+
`Content focus leads with ${pref.toLowerCase()}, delivered across micro and macro tiers for maximum authenticity and reach. ` +
|
|
238
|
+
`Outreach tone: ${(STYLE_OUTREACH_TONE[safeStyle] ?? STYLE_OUTREACH_TONE.minimal).split(' — ')[0].toLowerCase()}.`);
|
|
239
|
+
}
|
|
240
|
+
export function generateBrandInfluencer(brand) {
|
|
241
|
+
const safeStyle = VALID_STYLES.has(brand.style) ? brand.style : 'minimal';
|
|
242
|
+
return {
|
|
243
|
+
influencerApproach: STYLE_INFLUENCER_APPROACH[safeStyle],
|
|
244
|
+
contentPreferences: STYLE_CONTENT_PREFERENCES[safeStyle] ?? STYLE_CONTENT_PREFERENCES.minimal,
|
|
245
|
+
outreachTone: STYLE_OUTREACH_TONE[safeStyle] ?? STYLE_OUTREACH_TONE.minimal,
|
|
246
|
+
influencerTiers: buildInfluencerTiers(brand),
|
|
247
|
+
avoidList: STYLE_AVOID[safeStyle] ?? STYLE_AVOID.minimal,
|
|
248
|
+
campaignBriefTemplate: buildCampaignBriefTemplate(brand),
|
|
249
|
+
kpis: buildKpis(brand),
|
|
250
|
+
disclosureGuidelines: [
|
|
251
|
+
'All sponsored content must include clear #ad or #sponsored disclosure per ASA/FTC guidelines',
|
|
252
|
+
'Gifted product must be disclosed even if no fee was paid',
|
|
253
|
+
'Discount code partnerships require affiliate disclosure',
|
|
254
|
+
'Influencer must not claim clinical efficacy without approved substantiation',
|
|
255
|
+
'No brand impersonation or fake review creation permitted',
|
|
256
|
+
'Platform-native disclosure tools (paid partnership labels) must be used where available',
|
|
257
|
+
'Usage rights grant must be explicitly agreed in writing before content goes live',
|
|
258
|
+
],
|
|
259
|
+
influencerBriefSummary: buildBriefSummary(brand),
|
|
260
|
+
};
|
|
261
|
+
}
|
|
262
|
+
//# sourceMappingURL=brand-influencer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"brand-influencer.js","sourceRoot":"","sources":["../../../../src/lib/branding-core/generators/brand-influencer.ts"],"names":[],"mappings":"AAGA,MAAM,YAAY,GAAG,IAAI,GAAG,CAAS;IACnC,SAAS;IACT,MAAM;IACN,SAAS;IACT,SAAS;IACT,WAAW;IACX,MAAM;IACN,SAAS;IACT,OAAO;CACR,CAAC,CAAC;AAEH,MAAM,yBAAyB,GAA+B;IAC5D,OAAO,EAAE,gFAAgF;IACzF,IAAI,EAAE,8EAA8E;IACpF,OAAO,EAAE,gFAAgF;IACzF,OAAO,EAAE,kFAAkF;IAC3F,SAAS,EAAE,6EAA6E;IACxF,IAAI,EAAE,6EAA6E;IACnF,OAAO,EAAE,mFAAmF;IAC5F,KAAK,EAAE,kFAAkF;CAC1F,CAAC;AAEF,MAAM,yBAAyB,GAAiC;IAC9D,OAAO,EAAE;QACP,yCAAyC;QACzC,iCAAiC;QACjC,iCAAiC;QACjC,8BAA8B;QAC9B,iCAAiC;KAClC;IACD,IAAI,EAAE;QACJ,8BAA8B;QAC9B,mCAAmC;QACnC,gCAAgC;QAChC,iCAAiC;QACjC,gCAAgC;KACjC;IACD,OAAO,EAAE;QACP,4CAA4C;QAC5C,6CAA6C;QAC7C,4CAA4C;QAC5C,wCAAwC;QACxC,iDAAiD;KAClD;IACD,OAAO,EAAE;QACP,iCAAiC;QACjC,mCAAmC;QACnC,mCAAmC;QACnC,gCAAgC;QAChC,wCAAwC;KACzC;IACD,SAAS,EAAE;QACT,sCAAsC;QACtC,2BAA2B;QAC3B,yCAAyC;QACzC,+BAA+B;QAC/B,oCAAoC;KACrC;IACD,IAAI,EAAE;QACJ,oCAAoC;QACpC,kCAAkC;QAClC,iCAAiC;QACjC,2CAA2C;QAC3C,+BAA+B;KAChC;IACD,OAAO,EAAE;QACP,uCAAuC;QACvC,mCAAmC;QACnC,oCAAoC;QACpC,yCAAyC;QACzC,8CAA8C;KAC/C;IACD,KAAK,EAAE;QACL,qCAAqC;QACrC,0CAA0C;QAC1C,qCAAqC;QACrC,qCAAqC;QACrC,wCAAwC;KACzC;CACF,CAAC;AAEF,MAAM,mBAAmB,GAA+B;IACtD,OAAO,EAAE,0EAA0E;IACnF,IAAI,EAAE,gFAAgF;IACtF,OAAO,EAAE,oFAAoF;IAC7F,OAAO,EAAE,2EAA2E;IACpF,SAAS,EAAE,8EAA8E;IACzF,IAAI,EAAE,gFAAgF;IACtF,OAAO,EAAE,gFAAgF;IACzF,KAAK,EAAE,oFAAoF;CAC5F,CAAC;AAEF,MAAM,WAAW,GAAiC;IAChD,OAAO,EAAE;QACP,uBAAuB;QACvB,gCAAgC;QAChC,6BAA6B;KAC9B;IACD,IAAI,EAAE,CAAC,kBAAkB,EAAE,yBAAyB,EAAE,yBAAyB,CAAC;IAChF,OAAO,EAAE;QACP,kCAAkC;QAClC,oCAAoC;QACpC,gBAAgB;KACjB;IACD,OAAO,EAAE;QACP,iCAAiC;QACjC,8BAA8B;QAC9B,qBAAqB;KACtB;IACD,SAAS,EAAE;QACT,iCAAiC;QACjC,uCAAuC;QACvC,sBAAsB;KACvB;IACD,IAAI,EAAE;QACJ,+BAA+B;QAC/B,gDAAgD;QAChD,wBAAwB;KACzB;IACD,OAAO,EAAE;QACP,+CAA+C;QAC/C,uBAAuB;QACvB,2BAA2B;KAC5B;IACD,KAAK,EAAE;QACL,sDAAsD;QACtD,8BAA8B;QAC9B,2BAA2B;KAC5B;CACF,CAAC;AAEF,SAAS,oBAAoB,CAAC,KAAoB;IAChD,MAAM,SAAS,GAAe,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;IACtF,OAAO;QACL;YACE,IAAI,EAAE,iBAAiB;YACvB,aAAa,EAAE,KAAK;YACpB,qBAAqB,EAAE,MAAM;YAC7B,cAAc,EAAE,0DAA0D;YAC1E,YAAY,EAAE,qEAAqE;YACnF,iBAAiB,EAAE;gBACjB,6CAA6C;gBAC7C,kCAAkC,KAAK,CAAC,QAAQ,IAAI,eAAe,EAAE;gBACrE,8DAA8D;gBAC9D,qDAAqD;aACtD;SACF;QACD;YACE,IAAI,EAAE,kBAAkB;YACxB,aAAa,EAAE,SAAS;YACxB,qBAAqB,EAAE,MAAM;YAC7B,cAAc,EAAE,iEAAiE;YACjF,YAAY,EAAE,6DAA6D;YAC3E,iBAAiB,EAAE;gBACjB,2DAA2D;gBAC3D,8CAA8C;gBAC9C,GAAG,yBAAyB,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,cAAc;gBACtF,oDAAoD;aACrD;SACF;QACD;YACE,IAAI,EAAE,kBAAkB;YACxB,aAAa,EAAE,UAAU;YACzB,qBAAqB,EAAE,OAAO;YAC9B,cAAc,EAAE,sEAAsE;YACtF,YAAY,EAAE,sEAAsE;YACpF,iBAAiB,EAAE;gBACjB,qDAAqD;gBACrD,yDAAyD;gBACzD,uDAAuD;gBACvD,2CAA2C;aAC5C;SACF;QACD;YACE,IAAI,EAAE,iBAAiB;YACvB,aAAa,EAAE,QAAQ;YACvB,qBAAqB,EAAE,QAAQ;YAC/B,cAAc,EAAE,iEAAiE;YACjF,YAAY,EAAE,2DAA2D;YACzE,iBAAiB,EAAE;gBACjB,8CAA8C;gBAC9C,wCAAwC;gBACxC,2CAA2C;gBAC3C,yDAAyD;aAC1D;SACF;KACF,CAAC;AACJ,CAAC;AAED,SAAS,0BAA0B,CAAC,KAAoB;IACtD,MAAM,SAAS,GAAe,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;IACtF,OAAO,CACL,+BAA+B,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI;QAC3D,YAAY,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,KAAK,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI;QACzE,aAAa,KAAK,CAAC,QAAQ,IAAI,SAAS,IAAI;QAC5C,cAAc;QACd,oDAAoD,KAAK,CAAC,IAAI,wBAAwB;QACtF,gBAAgB;QAChB,kEAAkE;QAClE,sDAAsD;QACtD,6DAA6D;QAC7D,uBAAuB;QACvB,SAAS,mBAAmB,CAAC,SAAS,CAAC,IAAI;QAC3C,sBAAsB,CAAC,yBAAyB,CAAC,SAAS,CAAC,IAAI,yBAAyB,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;QAC5H,kBAAkB;QAClB,sCAAsC;QACtC,0DAA0D;QAC1D,kBAAkB;QAClB,mFAAmF;QACnF,eAAe;QACf,8BAA8B;QAC9B,kCAAkC;QAClC,wBAAwB,CACzB,CAAC;AACJ,CAAC;AAED,SAAS,SAAS,CAAC,KAAoB;IACrC,MAAM,SAAS,GAAe,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;IACtF,MAAM,IAAI,GAA2B;QACnC,WAAW,EAAE,mDAAmD;QAChE,eAAe,EAAE,kDAAkD;QACnE,kBAAkB,EAAE,yCAAyC;QAC7D,mBAAmB,EAAE,iCAAiC;QACtD,eAAe,EAAE,2CAA2C;QAC5D,kBAAkB,EAAE,4DAA4D;KACjF,CAAC;IACF,IAAI,SAAS,KAAK,MAAM,EAAE,CAAC;QACzB,IAAI,CAAC,kBAAkB,GAAG,sDAAsD,CAAC;QACjF,IAAI,CAAC,YAAY,GAAG,yDAAyD,CAAC;IAChF,CAAC;IACD,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;QAC5B,IAAI,CAAC,sBAAsB;YACzB,qEAAqE,CAAC;IAC1E,CAAC;IACD,IAAI,SAAS,KAAK,WAAW,EAAE,CAAC;QAC9B,IAAI,CAAC,eAAe,GAAG,uDAAuD,CAAC;QAC/E,IAAI,CAAC,cAAc,GAAG,2DAA2D,CAAC;IACpF,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,iBAAiB,CAAC,KAAoB;IAC7C,MAAM,SAAS,GAAe,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;IACtF,MAAM,QAAQ,GAAG,yBAAyB,CAAC,SAAS,CAAC,CAAC;IACtD,MAAM,IAAI,GAAG,CAAC,yBAAyB,CAAC,SAAS,CAAC,IAAI,yBAAyB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5F,OAAO,CACL,GAAG,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,EAAE,4CAA4C,QAAQ,CAAC,WAAW,EAAE,IAAI;QAClI,4BAA4B,IAAI,CAAC,WAAW,EAAE,+EAA+E;QAC7H,kBAAkB,CAAC,mBAAmB,CAAC,SAAS,CAAC,IAAI,mBAAmB,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,CACnH,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,KAAoB;IAC1D,MAAM,SAAS,GAAe,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;IAEtF,OAAO;QACL,kBAAkB,EAAE,yBAAyB,CAAC,SAAS,CAAC;QACxD,kBAAkB,EAAE,yBAAyB,CAAC,SAAS,CAAC,IAAI,yBAAyB,CAAC,OAAO;QAC7F,YAAY,EAAE,mBAAmB,CAAC,SAAS,CAAC,IAAI,mBAAmB,CAAC,OAAO;QAC3E,eAAe,EAAE,oBAAoB,CAAC,KAAK,CAAC;QAC5C,SAAS,EAAE,WAAW,CAAC,SAAS,CAAC,IAAI,WAAW,CAAC,OAAO;QACxD,qBAAqB,EAAE,0BAA0B,CAAC,KAAK,CAAC;QACxD,IAAI,EAAE,SAAS,CAAC,KAAK,CAAC;QACtB,oBAAoB,EAAE;YACpB,8FAA8F;YAC9F,0DAA0D;YAC1D,yDAAyD;YACzD,6EAA6E;YAC7E,0DAA0D;YAC1D,yFAAyF;YACzF,kFAAkF;SACnF;QACD,sBAAsB,EAAE,iBAAiB,CAAC,KAAK,CAAC;KACjD,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"brand-innovation.d.ts","sourceRoot":"","sources":["../../../../src/lib/branding-core/generators/brand-innovation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EAEb,qBAAqB,EAGtB,MAAM,gBAAgB,CAAC;AA0MxB,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,aAAa,GAAG,qBAAqB,CAgDnF"}
|
|
@@ -0,0 +1,229 @@
|
|
|
1
|
+
import { generateMotionSystem } from './motion-system.js';
|
|
2
|
+
const STYLE_INNOVATION_CULTURE = {
|
|
3
|
+
minimal: 'Iterative refinement — continuous improvement over revolutionary leaps',
|
|
4
|
+
bold: 'Disruptive experimentation — high-risk, high-reward breakthrough innovation',
|
|
5
|
+
elegant: 'Curated innovation — purposeful advances that elevate craft and experience',
|
|
6
|
+
playful: 'Creative exploration — playful experimentation and unexpected combinations',
|
|
7
|
+
corporate: 'Structured innovation — stage-gate processes with clear ROI metrics',
|
|
8
|
+
tech: 'Rapid iteration — agile sprints, open-source collaboration, developer-first',
|
|
9
|
+
organic: 'Regenerative innovation — solutions that restore and give back to ecosystems',
|
|
10
|
+
retro: 'Heritage-led reinvention — modernising proven formats for new contexts',
|
|
11
|
+
};
|
|
12
|
+
const STYLE_INNOVATION_FOCUS = {
|
|
13
|
+
minimal: ['experience', 'process'],
|
|
14
|
+
bold: ['product', 'business_model'],
|
|
15
|
+
elegant: ['experience', 'product'],
|
|
16
|
+
playful: ['product', 'experience'],
|
|
17
|
+
corporate: ['process', 'business_model'],
|
|
18
|
+
tech: ['product', 'process'],
|
|
19
|
+
organic: ['product', 'business_model'],
|
|
20
|
+
retro: ['experience', 'product'],
|
|
21
|
+
};
|
|
22
|
+
const STYLE_INNOVATION_THEMES = {
|
|
23
|
+
minimal: [
|
|
24
|
+
'Radical simplification of complex workflows',
|
|
25
|
+
'Zero-friction customer interactions',
|
|
26
|
+
'Invisible infrastructure that just works',
|
|
27
|
+
],
|
|
28
|
+
bold: [
|
|
29
|
+
'Category-defining product breakthroughs',
|
|
30
|
+
'Blue-ocean market creation',
|
|
31
|
+
'Technology that challenges the status quo',
|
|
32
|
+
],
|
|
33
|
+
elegant: [
|
|
34
|
+
'Materials and craftsmanship innovation',
|
|
35
|
+
'Sensory experience enhancement',
|
|
36
|
+
'Artisanal meets digital precision',
|
|
37
|
+
],
|
|
38
|
+
playful: [
|
|
39
|
+
'Gamification of everyday tasks',
|
|
40
|
+
'Community co-creation and crowdsourcing',
|
|
41
|
+
'Unexpected brand crossovers and collabs',
|
|
42
|
+
],
|
|
43
|
+
corporate: [
|
|
44
|
+
'Operational efficiency at scale',
|
|
45
|
+
'Supply-chain transparency and traceability',
|
|
46
|
+
'Risk-managed adjacent market expansion',
|
|
47
|
+
],
|
|
48
|
+
tech: [
|
|
49
|
+
'Open-source ecosystem building',
|
|
50
|
+
'AI/ML-driven personalisation at scale',
|
|
51
|
+
'Developer tooling and API-first design',
|
|
52
|
+
],
|
|
53
|
+
organic: [
|
|
54
|
+
'Circular economy and zero-waste design',
|
|
55
|
+
'Regenerative supply-chain models',
|
|
56
|
+
'Bio-inspired materials and processes',
|
|
57
|
+
],
|
|
58
|
+
retro: [
|
|
59
|
+
'Analogue quality in digital contexts',
|
|
60
|
+
'Limited-edition revival collections',
|
|
61
|
+
'Nostalgia-driven community experiences',
|
|
62
|
+
],
|
|
63
|
+
};
|
|
64
|
+
const STYLE_PROCESS_FRAMEWORKS = {
|
|
65
|
+
minimal: ['Design Sprint (5-day focused)', 'Jobs-to-be-Done interviews', 'Lean Canvas'],
|
|
66
|
+
bold: ['10x Thinking workshops', 'Moonshot OKRs', 'Hackathons & Demo Days'],
|
|
67
|
+
elegant: ['Slow Innovation retreats', 'Expert co-creation salons', 'Prototype-as-art reviews'],
|
|
68
|
+
playful: ['Jam sessions & play sprints', 'Random stimuli ideation', 'Build-measure-learn loops'],
|
|
69
|
+
corporate: ['Stage-Gate process', 'Portfolio management reviews', 'Innovation Board governance'],
|
|
70
|
+
tech: ['Shape Up (6-week cycles)', 'RFC (Request for Comments)', 'Open Beta & dogfooding'],
|
|
71
|
+
organic: [
|
|
72
|
+
'Biomimicry workshops',
|
|
73
|
+
'Stakeholder co-design circles',
|
|
74
|
+
'Life-cycle assessment reviews',
|
|
75
|
+
],
|
|
76
|
+
retro: [
|
|
77
|
+
'Archive mining sessions',
|
|
78
|
+
'Cross-generational focus groups',
|
|
79
|
+
'Heritage reinterpretation sprints',
|
|
80
|
+
],
|
|
81
|
+
};
|
|
82
|
+
const STYLE_TECHNOLOGY_BETS = {
|
|
83
|
+
minimal: ['Automation & workflow tooling', 'No-code/low-code platforms', 'Edge computing'],
|
|
84
|
+
bold: ['Generative AI', 'Web3 & tokenisation', 'Spatial computing (AR/VR)'],
|
|
85
|
+
elegant: [
|
|
86
|
+
'Haptics & multi-sensory interfaces',
|
|
87
|
+
'Advanced materials science',
|
|
88
|
+
'Precision manufacturing',
|
|
89
|
+
],
|
|
90
|
+
playful: ['Social VR & metaverse', 'AI creative tools', 'Interactive storytelling platforms'],
|
|
91
|
+
corporate: ['Enterprise AI & automation', 'Digital twins', 'Predictive analytics'],
|
|
92
|
+
tech: ['LLMs & AI agents', 'Kubernetes & cloud-native', 'WebAssembly'],
|
|
93
|
+
organic: ['Biotech & synthetic biology', 'Renewable energy systems', 'Precision fermentation'],
|
|
94
|
+
retro: ['Letterpress & analogue revival', 'Retro-gaming engines', 'Vinyl & physical media tech'],
|
|
95
|
+
};
|
|
96
|
+
const STYLE_METRICS = {
|
|
97
|
+
minimal: ['Time-to-simplicity', 'Friction reduction score', 'Support ticket deflection rate'],
|
|
98
|
+
bold: ['Revenue from new products (>3 years)', 'Category share of voice', 'Disruption index'],
|
|
99
|
+
elegant: ['Customer delight NPS', 'Craft quality rating', 'Premium price achievement'],
|
|
100
|
+
playful: [
|
|
101
|
+
'User-generated content volume',
|
|
102
|
+
'Virality coefficient',
|
|
103
|
+
'Creative challenge participation',
|
|
104
|
+
],
|
|
105
|
+
corporate: ['Innovation ROI', 'Stage-Gate success rate', 'Patent portfolio growth'],
|
|
106
|
+
tech: ['Developer adoption rate', 'API call growth MoM', 'Open-source star velocity'],
|
|
107
|
+
organic: ['Carbon reduction metrics', 'Circular economy diversion rate', 'Ecosystem health KPIs'],
|
|
108
|
+
retro: ['Limited-edition sell-through', 'Community engagement rate', 'Heritage sentiment score'],
|
|
109
|
+
};
|
|
110
|
+
function buildIdeationMethods(brand) {
|
|
111
|
+
const style = brand.style ?? 'minimal';
|
|
112
|
+
const frameworks = STYLE_PROCESS_FRAMEWORKS[style] ?? STYLE_PROCESS_FRAMEWORKS.minimal;
|
|
113
|
+
return [
|
|
114
|
+
{
|
|
115
|
+
method: frameworks[0] ?? 'Design Sprint',
|
|
116
|
+
description: 'Structured 5-day sprint to validate big ideas with real prototypes',
|
|
117
|
+
bestFor: 'New product concepts and experience redesigns',
|
|
118
|
+
timeInvestment: '1 week',
|
|
119
|
+
},
|
|
120
|
+
{
|
|
121
|
+
method: frameworks[1] ?? 'Customer Interviews',
|
|
122
|
+
description: 'Deep qualitative research to uncover unmet needs and pain points',
|
|
123
|
+
bestFor: 'Problem definition and opportunity sizing',
|
|
124
|
+
timeInvestment: '2–4 weeks',
|
|
125
|
+
},
|
|
126
|
+
{
|
|
127
|
+
method: frameworks[2] ?? 'Lean Canvas',
|
|
128
|
+
description: 'Rapid business model hypothesis documentation and validation',
|
|
129
|
+
bestFor: 'New venture and pivot planning',
|
|
130
|
+
timeInvestment: '1–2 days',
|
|
131
|
+
},
|
|
132
|
+
{
|
|
133
|
+
method: 'Competitive Benchmarking',
|
|
134
|
+
description: 'Systematic analysis of adjacent markets for transferable patterns',
|
|
135
|
+
bestFor: 'Identifying white-space opportunities',
|
|
136
|
+
timeInvestment: '1–2 weeks',
|
|
137
|
+
},
|
|
138
|
+
];
|
|
139
|
+
}
|
|
140
|
+
function buildInnovationPillars(brand) {
|
|
141
|
+
const style = brand.style ?? 'minimal';
|
|
142
|
+
const themes = STYLE_INNOVATION_THEMES[style] ?? STYLE_INNOVATION_THEMES.minimal;
|
|
143
|
+
return [
|
|
144
|
+
{
|
|
145
|
+
pillar: 'Customer-Led Discovery',
|
|
146
|
+
description: 'Systematic listening to surface unmet needs before building',
|
|
147
|
+
initiatives: [
|
|
148
|
+
'Quarterly customer advisory board',
|
|
149
|
+
'Continuous usability testing programme',
|
|
150
|
+
`${brand.name} community insight panels`,
|
|
151
|
+
],
|
|
152
|
+
successCriteria: 'Pipeline of validated problem statements updated monthly',
|
|
153
|
+
},
|
|
154
|
+
{
|
|
155
|
+
pillar: themes[0] ?? 'Product Innovation',
|
|
156
|
+
description: 'Core innovation focus aligned to brand style and competitive positioning',
|
|
157
|
+
initiatives: [
|
|
158
|
+
'Annual innovation summit with cross-functional teams',
|
|
159
|
+
'Dedicated R&D time allocation (20% rule)',
|
|
160
|
+
'External partnership and academic collaboration programme',
|
|
161
|
+
],
|
|
162
|
+
successCriteria: '3+ prototypes validated per quarter',
|
|
163
|
+
},
|
|
164
|
+
{
|
|
165
|
+
pillar: 'Rapid Experimentation',
|
|
166
|
+
description: 'Low-cost, fast-cycle testing of hypotheses before full investment',
|
|
167
|
+
initiatives: [
|
|
168
|
+
'Monthly experiment review cadence',
|
|
169
|
+
'Innovation budget ring-fence (10% of project budgets)',
|
|
170
|
+
'Fail-fast retrospective culture',
|
|
171
|
+
],
|
|
172
|
+
successCriteria: 'Experiment cycle time under 4 weeks',
|
|
173
|
+
},
|
|
174
|
+
];
|
|
175
|
+
}
|
|
176
|
+
function buildBriefSummary(brand) {
|
|
177
|
+
const style = brand.style ?? 'minimal';
|
|
178
|
+
const culture = STYLE_INNOVATION_CULTURE[style] ?? STYLE_INNOVATION_CULTURE.minimal;
|
|
179
|
+
const themes = STYLE_INNOVATION_THEMES[style] ?? STYLE_INNOVATION_THEMES.minimal;
|
|
180
|
+
const taglinePart = brand.tagline ? ` — "${brand.tagline}"` : '';
|
|
181
|
+
return (`${brand.name}${taglinePart} innovation playbook: ${culture}. ` +
|
|
182
|
+
`Core themes: ${themes[0]}. ` +
|
|
183
|
+
`Technology bets focused on ${(STYLE_TECHNOLOGY_BETS[style] ?? STYLE_TECHNOLOGY_BETS.minimal)[0]}.`);
|
|
184
|
+
}
|
|
185
|
+
export function generateBrandInnovation(brand) {
|
|
186
|
+
const style = brand.style ?? 'minimal';
|
|
187
|
+
const innovationCulture = STYLE_INNOVATION_CULTURE[style] ?? STYLE_INNOVATION_CULTURE.minimal;
|
|
188
|
+
const focusAreas = STYLE_INNOVATION_FOCUS[style] ?? STYLE_INNOVATION_FOCUS.minimal;
|
|
189
|
+
const innovationThemes = STYLE_INNOVATION_THEMES[style] ?? STYLE_INNOVATION_THEMES.minimal;
|
|
190
|
+
const processFrameworks = STYLE_PROCESS_FRAMEWORKS[style] ?? STYLE_PROCESS_FRAMEWORKS.minimal;
|
|
191
|
+
const technologyBets = STYLE_TECHNOLOGY_BETS[style] ?? STYLE_TECHNOLOGY_BETS.minimal;
|
|
192
|
+
const successMetrics = STYLE_METRICS[style] ?? STYLE_METRICS.minimal;
|
|
193
|
+
const ideationMethods = buildIdeationMethods(brand);
|
|
194
|
+
const innovationPillars = buildInnovationPillars(brand);
|
|
195
|
+
const innovationBriefSummary = buildBriefSummary(brand);
|
|
196
|
+
// Use motion system to confirm brand animations are coherent with innovation velocity
|
|
197
|
+
const validStyles = [
|
|
198
|
+
'minimal',
|
|
199
|
+
'bold',
|
|
200
|
+
'elegant',
|
|
201
|
+
'playful',
|
|
202
|
+
'corporate',
|
|
203
|
+
'tech',
|
|
204
|
+
'organic',
|
|
205
|
+
'retro',
|
|
206
|
+
];
|
|
207
|
+
const safeStyle = validStyles.includes(style)
|
|
208
|
+
? style
|
|
209
|
+
: 'minimal';
|
|
210
|
+
const motion = generateMotionSystem(safeStyle);
|
|
211
|
+
const innovationCadence = motion.durations['normal'] && motion.durations['fast']
|
|
212
|
+
? 'Rapid iteration with deliberate reflection cycles'
|
|
213
|
+
: 'Steady-paced innovation with structured review gates';
|
|
214
|
+
return {
|
|
215
|
+
innovationCulture,
|
|
216
|
+
focusAreas,
|
|
217
|
+
innovationThemes,
|
|
218
|
+
processFrameworks,
|
|
219
|
+
technologyBets,
|
|
220
|
+
ideationMethods,
|
|
221
|
+
innovationPillars,
|
|
222
|
+
successMetrics,
|
|
223
|
+
innovationCadence,
|
|
224
|
+
openInnovationApproach: `Partner with universities, start-ups, and customers through ${brand.name} Labs and co-innovation programmes.`,
|
|
225
|
+
ipStrategy: `Protect core brand innovations via trademark and design rights; share non-core learnings openly to build ecosystem goodwill.`,
|
|
226
|
+
innovationBriefSummary,
|
|
227
|
+
};
|
|
228
|
+
}
|
|
229
|
+
//# sourceMappingURL=brand-innovation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"brand-innovation.js","sourceRoot":"","sources":["../../../../src/lib/branding-core/generators/brand-innovation.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"brand-loyalty.d.ts","sourceRoot":"","sources":["../../../../src/lib/branding-core/generators/brand-loyalty.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAc,MAAM,gBAAgB,CAAC;AAChE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AA2OzD,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,aAAa,GAAG,kBAAkB,CAgB7E"}
|