@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.
Files changed (204) hide show
  1. package/dist/index.d.ts +1 -1
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +49 -1
  4. package/dist/index.js.map +1 -1
  5. package/dist/lib/branding-core/generators/brand-affiliate.d.ts +4 -0
  6. package/dist/lib/branding-core/generators/brand-affiliate.d.ts.map +1 -0
  7. package/dist/lib/branding-core/generators/brand-affiliate.js +249 -0
  8. package/dist/lib/branding-core/generators/brand-affiliate.js.map +1 -0
  9. package/dist/lib/branding-core/generators/brand-analytics.d.ts +3 -0
  10. package/dist/lib/branding-core/generators/brand-analytics.d.ts.map +1 -0
  11. package/dist/lib/branding-core/generators/brand-analytics.js +208 -0
  12. package/dist/lib/branding-core/generators/brand-analytics.js.map +1 -0
  13. package/dist/lib/branding-core/generators/brand-audio.d.ts +4 -0
  14. package/dist/lib/branding-core/generators/brand-audio.d.ts.map +1 -0
  15. package/dist/lib/branding-core/generators/brand-audio.js +200 -0
  16. package/dist/lib/branding-core/generators/brand-audio.js.map +1 -0
  17. package/dist/lib/branding-core/generators/brand-b2b.d.ts +4 -0
  18. package/dist/lib/branding-core/generators/brand-b2b.d.ts.map +1 -0
  19. package/dist/lib/branding-core/generators/brand-b2b.js +236 -0
  20. package/dist/lib/branding-core/generators/brand-b2b.js.map +1 -0
  21. package/dist/lib/branding-core/generators/brand-chatbot.d.ts +4 -0
  22. package/dist/lib/branding-core/generators/brand-chatbot.d.ts.map +1 -0
  23. package/dist/lib/branding-core/generators/brand-chatbot.js +174 -0
  24. package/dist/lib/branding-core/generators/brand-chatbot.js.map +1 -0
  25. package/dist/lib/branding-core/generators/brand-community.d.ts +3 -0
  26. package/dist/lib/branding-core/generators/brand-community.d.ts.map +1 -0
  27. package/dist/lib/branding-core/generators/brand-community.js +164 -0
  28. package/dist/lib/branding-core/generators/brand-community.js.map +1 -0
  29. package/dist/lib/branding-core/generators/brand-competitive.d.ts +3 -0
  30. package/dist/lib/branding-core/generators/brand-competitive.d.ts.map +1 -0
  31. package/dist/lib/branding-core/generators/brand-competitive.js +274 -0
  32. package/dist/lib/branding-core/generators/brand-competitive.js.map +1 -0
  33. package/dist/lib/branding-core/generators/brand-crisis.d.ts +3 -0
  34. package/dist/lib/branding-core/generators/brand-crisis.d.ts.map +1 -0
  35. package/dist/lib/branding-core/generators/brand-crisis.js +256 -0
  36. package/dist/lib/branding-core/generators/brand-crisis.js.map +1 -0
  37. package/dist/lib/branding-core/generators/brand-customer.d.ts +4 -0
  38. package/dist/lib/branding-core/generators/brand-customer.d.ts.map +1 -0
  39. package/dist/lib/branding-core/generators/brand-customer.js +270 -0
  40. package/dist/lib/branding-core/generators/brand-customer.js.map +1 -0
  41. package/dist/lib/branding-core/generators/brand-ecommerce.d.ts +4 -0
  42. package/dist/lib/branding-core/generators/brand-ecommerce.d.ts.map +1 -0
  43. package/dist/lib/branding-core/generators/brand-ecommerce.js +255 -0
  44. package/dist/lib/branding-core/generators/brand-ecommerce.js.map +1 -0
  45. package/dist/lib/branding-core/generators/brand-fintech.d.ts +3 -0
  46. package/dist/lib/branding-core/generators/brand-fintech.d.ts.map +1 -0
  47. package/dist/lib/branding-core/generators/brand-fintech.js +225 -0
  48. package/dist/lib/branding-core/generators/brand-fintech.js.map +1 -0
  49. package/dist/lib/branding-core/generators/brand-globalisation.d.ts +3 -0
  50. package/dist/lib/branding-core/generators/brand-globalisation.d.ts.map +1 -0
  51. package/dist/lib/branding-core/generators/brand-globalisation.js +222 -0
  52. package/dist/lib/branding-core/generators/brand-globalisation.js.map +1 -0
  53. package/dist/lib/branding-core/generators/brand-influencer.d.ts +4 -0
  54. package/dist/lib/branding-core/generators/brand-influencer.d.ts.map +1 -0
  55. package/dist/lib/branding-core/generators/brand-influencer.js +262 -0
  56. package/dist/lib/branding-core/generators/brand-influencer.js.map +1 -0
  57. package/dist/lib/branding-core/generators/brand-innovation.d.ts +3 -0
  58. package/dist/lib/branding-core/generators/brand-innovation.d.ts.map +1 -0
  59. package/dist/lib/branding-core/generators/brand-innovation.js +229 -0
  60. package/dist/lib/branding-core/generators/brand-innovation.js.map +1 -0
  61. package/dist/lib/branding-core/generators/brand-loyalty.d.ts +4 -0
  62. package/dist/lib/branding-core/generators/brand-loyalty.d.ts.map +1 -0
  63. package/dist/lib/branding-core/generators/brand-loyalty.js +231 -0
  64. package/dist/lib/branding-core/generators/brand-loyalty.js.map +1 -0
  65. package/dist/lib/branding-core/generators/brand-marketplace.d.ts +4 -0
  66. package/dist/lib/branding-core/generators/brand-marketplace.d.ts.map +1 -0
  67. package/dist/lib/branding-core/generators/brand-marketplace.js +251 -0
  68. package/dist/lib/branding-core/generators/brand-marketplace.js.map +1 -0
  69. package/dist/lib/branding-core/generators/brand-newsletter.d.ts +4 -0
  70. package/dist/lib/branding-core/generators/brand-newsletter.d.ts.map +1 -0
  71. package/dist/lib/branding-core/generators/brand-newsletter.js +173 -0
  72. package/dist/lib/branding-core/generators/brand-newsletter.js.map +1 -0
  73. package/dist/lib/branding-core/generators/brand-podcast.d.ts +3 -0
  74. package/dist/lib/branding-core/generators/brand-podcast.d.ts.map +1 -0
  75. package/dist/lib/branding-core/generators/brand-podcast.js +217 -0
  76. package/dist/lib/branding-core/generators/brand-podcast.js.map +1 -0
  77. package/dist/lib/branding-core/generators/brand-saas.d.ts +3 -0
  78. package/dist/lib/branding-core/generators/brand-saas.d.ts.map +1 -0
  79. package/dist/lib/branding-core/generators/brand-saas.js +212 -0
  80. package/dist/lib/branding-core/generators/brand-saas.js.map +1 -0
  81. package/dist/lib/branding-core/generators/brand-seo.d.ts +4 -0
  82. package/dist/lib/branding-core/generators/brand-seo.d.ts.map +1 -0
  83. package/dist/lib/branding-core/generators/brand-seo.js +269 -0
  84. package/dist/lib/branding-core/generators/brand-seo.js.map +1 -0
  85. package/dist/lib/branding-core/generators/brand-subscription.d.ts +4 -0
  86. package/dist/lib/branding-core/generators/brand-subscription.d.ts.map +1 -0
  87. package/dist/lib/branding-core/generators/brand-subscription.js +218 -0
  88. package/dist/lib/branding-core/generators/brand-subscription.js.map +1 -0
  89. package/dist/lib/branding-core/generators/brand-training.d.ts +4 -0
  90. package/dist/lib/branding-core/generators/brand-training.d.ts.map +1 -0
  91. package/dist/lib/branding-core/generators/brand-training.js +261 -0
  92. package/dist/lib/branding-core/generators/brand-training.js.map +1 -0
  93. package/dist/lib/branding-core/generators/brand-video.d.ts +3 -0
  94. package/dist/lib/branding-core/generators/brand-video.d.ts.map +1 -0
  95. package/dist/lib/branding-core/generators/brand-video.js +228 -0
  96. package/dist/lib/branding-core/generators/brand-video.js.map +1 -0
  97. package/dist/lib/branding-core/generators/brand-webinar.d.ts +4 -0
  98. package/dist/lib/branding-core/generators/brand-webinar.d.ts.map +1 -0
  99. package/dist/lib/branding-core/generators/brand-webinar.js +165 -0
  100. package/dist/lib/branding-core/generators/brand-webinar.js.map +1 -0
  101. package/dist/lib/branding-core/index.d.ts +24 -0
  102. package/dist/lib/branding-core/index.d.ts.map +1 -1
  103. package/dist/lib/branding-core/index.js +24 -0
  104. package/dist/lib/branding-core/index.js.map +1 -1
  105. package/dist/lib/types.d.ts +391 -0
  106. package/dist/lib/types.d.ts.map +1 -1
  107. package/dist/tools/generate-brand-affiliate.d.ts +3 -0
  108. package/dist/tools/generate-brand-affiliate.d.ts.map +1 -0
  109. package/dist/tools/generate-brand-affiliate.js +14 -0
  110. package/dist/tools/generate-brand-affiliate.js.map +1 -0
  111. package/dist/tools/generate-brand-analytics.d.ts +3 -0
  112. package/dist/tools/generate-brand-analytics.d.ts.map +1 -0
  113. package/dist/tools/generate-brand-analytics.js +19 -0
  114. package/dist/tools/generate-brand-analytics.js.map +1 -0
  115. package/dist/tools/generate-brand-audio.d.ts +3 -0
  116. package/dist/tools/generate-brand-audio.d.ts.map +1 -0
  117. package/dist/tools/generate-brand-audio.js +14 -0
  118. package/dist/tools/generate-brand-audio.js.map +1 -0
  119. package/dist/tools/generate-brand-b2b.d.ts +3 -0
  120. package/dist/tools/generate-brand-b2b.d.ts.map +1 -0
  121. package/dist/tools/generate-brand-b2b.js +10 -0
  122. package/dist/tools/generate-brand-b2b.js.map +1 -0
  123. package/dist/tools/generate-brand-chatbot.d.ts +3 -0
  124. package/dist/tools/generate-brand-chatbot.d.ts.map +1 -0
  125. package/dist/tools/generate-brand-chatbot.js +10 -0
  126. package/dist/tools/generate-brand-chatbot.js.map +1 -0
  127. package/dist/tools/generate-brand-community.d.ts +3 -0
  128. package/dist/tools/generate-brand-community.d.ts.map +1 -0
  129. package/dist/tools/generate-brand-community.js +14 -0
  130. package/dist/tools/generate-brand-community.js.map +1 -0
  131. package/dist/tools/generate-brand-competitive.d.ts +3 -0
  132. package/dist/tools/generate-brand-competitive.d.ts.map +1 -0
  133. package/dist/tools/generate-brand-competitive.js +14 -0
  134. package/dist/tools/generate-brand-competitive.js.map +1 -0
  135. package/dist/tools/generate-brand-crisis.d.ts +3 -0
  136. package/dist/tools/generate-brand-crisis.d.ts.map +1 -0
  137. package/dist/tools/generate-brand-crisis.js +14 -0
  138. package/dist/tools/generate-brand-crisis.js.map +1 -0
  139. package/dist/tools/generate-brand-customer.d.ts +3 -0
  140. package/dist/tools/generate-brand-customer.d.ts.map +1 -0
  141. package/dist/tools/generate-brand-customer.js +19 -0
  142. package/dist/tools/generate-brand-customer.js.map +1 -0
  143. package/dist/tools/generate-brand-ecommerce.d.ts +3 -0
  144. package/dist/tools/generate-brand-ecommerce.d.ts.map +1 -0
  145. package/dist/tools/generate-brand-ecommerce.js +14 -0
  146. package/dist/tools/generate-brand-ecommerce.js.map +1 -0
  147. package/dist/tools/generate-brand-fintech.d.ts +3 -0
  148. package/dist/tools/generate-brand-fintech.d.ts.map +1 -0
  149. package/dist/tools/generate-brand-fintech.js +14 -0
  150. package/dist/tools/generate-brand-fintech.js.map +1 -0
  151. package/dist/tools/generate-brand-globalisation.d.ts +3 -0
  152. package/dist/tools/generate-brand-globalisation.d.ts.map +1 -0
  153. package/dist/tools/generate-brand-globalisation.js +14 -0
  154. package/dist/tools/generate-brand-globalisation.js.map +1 -0
  155. package/dist/tools/generate-brand-influencer.d.ts +3 -0
  156. package/dist/tools/generate-brand-influencer.d.ts.map +1 -0
  157. package/dist/tools/generate-brand-influencer.js +10 -0
  158. package/dist/tools/generate-brand-influencer.js.map +1 -0
  159. package/dist/tools/generate-brand-innovation.d.ts +3 -0
  160. package/dist/tools/generate-brand-innovation.d.ts.map +1 -0
  161. package/dist/tools/generate-brand-innovation.js +19 -0
  162. package/dist/tools/generate-brand-innovation.js.map +1 -0
  163. package/dist/tools/generate-brand-loyalty.d.ts +3 -0
  164. package/dist/tools/generate-brand-loyalty.d.ts.map +1 -0
  165. package/dist/tools/generate-brand-loyalty.js +14 -0
  166. package/dist/tools/generate-brand-loyalty.js.map +1 -0
  167. package/dist/tools/generate-brand-marketplace.d.ts +3 -0
  168. package/dist/tools/generate-brand-marketplace.d.ts.map +1 -0
  169. package/dist/tools/generate-brand-marketplace.js +14 -0
  170. package/dist/tools/generate-brand-marketplace.js.map +1 -0
  171. package/dist/tools/generate-brand-newsletter.d.ts +3 -0
  172. package/dist/tools/generate-brand-newsletter.d.ts.map +1 -0
  173. package/dist/tools/generate-brand-newsletter.js +14 -0
  174. package/dist/tools/generate-brand-newsletter.js.map +1 -0
  175. package/dist/tools/generate-brand-podcast.d.ts +3 -0
  176. package/dist/tools/generate-brand-podcast.d.ts.map +1 -0
  177. package/dist/tools/generate-brand-podcast.js +10 -0
  178. package/dist/tools/generate-brand-podcast.js.map +1 -0
  179. package/dist/tools/generate-brand-saas.d.ts +3 -0
  180. package/dist/tools/generate-brand-saas.d.ts.map +1 -0
  181. package/dist/tools/generate-brand-saas.js +14 -0
  182. package/dist/tools/generate-brand-saas.js.map +1 -0
  183. package/dist/tools/generate-brand-seo.d.ts +3 -0
  184. package/dist/tools/generate-brand-seo.d.ts.map +1 -0
  185. package/dist/tools/generate-brand-seo.js +14 -0
  186. package/dist/tools/generate-brand-seo.js.map +1 -0
  187. package/dist/tools/generate-brand-subscription.d.ts +3 -0
  188. package/dist/tools/generate-brand-subscription.d.ts.map +1 -0
  189. package/dist/tools/generate-brand-subscription.js +14 -0
  190. package/dist/tools/generate-brand-subscription.js.map +1 -0
  191. package/dist/tools/generate-brand-training.d.ts +3 -0
  192. package/dist/tools/generate-brand-training.d.ts.map +1 -0
  193. package/dist/tools/generate-brand-training.js +14 -0
  194. package/dist/tools/generate-brand-training.js.map +1 -0
  195. package/dist/tools/generate-brand-video.d.ts +3 -0
  196. package/dist/tools/generate-brand-video.d.ts.map +1 -0
  197. package/dist/tools/generate-brand-video.js +14 -0
  198. package/dist/tools/generate-brand-video.js.map +1 -0
  199. package/dist/tools/generate-brand-webinar.d.ts +3 -0
  200. package/dist/tools/generate-brand-webinar.d.ts.map +1 -0
  201. package/dist/tools/generate-brand-webinar.js +10 -0
  202. package/dist/tools/generate-brand-webinar.js.map +1 -0
  203. package/package.json +1 -1
  204. package/server.json +2 -2
@@ -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,4 @@
1
+ import type { BrandIdentity } from '../../types.js';
2
+ import type { BrandLoyaltyOutput } from '../../types.js';
3
+ export declare function generateBrandLoyalty(brand: BrandIdentity): BrandLoyaltyOutput;
4
+ //# sourceMappingURL=brand-loyalty.d.ts.map
@@ -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"}
@@ -0,0 +1,231 @@
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_PROGRAM_APPROACH = {
12
+ minimal: 'A streamlined, transparent rewards system with simple earn-and-redeem mechanics and no complexity.',
13
+ bold: 'A high-energy, gamified loyalty experience with exclusive drops, challenges, and status symbols.',
14
+ elegant: 'A prestige membership programme with white-glove benefits, curated experiences, and invitation-only tiers.',
15
+ playful: 'A fun, collectible-based system with surprise rewards, badges, and social sharing moments.',
16
+ corporate: 'A structured B2B loyalty framework with volume-based incentives, dedicated account benefits, and contract rewards.',
17
+ tech: 'A developer-friendly points API with programmable rewards, webhook integrations, and data transparency.',
18
+ organic: 'A values-driven loyalty circle rewarding eco-friendly behaviours, referrals, and community impact.',
19
+ retro: 'A classic stamp-card inspired programme with nostalgic milestones, collector rewards, and vintage aesthetics.',
20
+ };
21
+ const STYLE_TIERS = {
22
+ minimal: ['Member', 'Plus', 'Premium'],
23
+ bold: ['Starter', 'Insider', 'Elite', 'Icon'],
24
+ elegant: ['Member', 'Associate', 'Fellow', 'Patron'],
25
+ playful: ['Explorer', 'Adventurer', 'Champion', 'Legend'],
26
+ corporate: ['Silver', 'Gold', 'Platinum', 'Diamond'],
27
+ tech: ['Contributor', 'Builder', 'Architect', 'Core'],
28
+ organic: ['Seedling', 'Sprout', 'Grove', 'Forest'],
29
+ retro: ['Bronze', 'Silver', 'Gold', 'Hall of Fame'],
30
+ };
31
+ const STYLE_EARN_MECHANISMS = {
32
+ minimal: ['1 point per £1 spent', 'Bonus points on featured products', 'Birthday double points'],
33
+ bold: [
34
+ '2x points on new launches',
35
+ 'Streak bonuses for consecutive purchases',
36
+ 'Social share rewards',
37
+ 'Challenge completions',
38
+ ],
39
+ elegant: [
40
+ 'Points per £ spent (tiered multipliers)',
41
+ 'Event attendance credits',
42
+ 'Referral rewards',
43
+ 'Anniversary bonuses',
44
+ ],
45
+ playful: [
46
+ 'Points per purchase',
47
+ 'Collectible unlocks',
48
+ 'Mini-game completions',
49
+ 'Friend referrals',
50
+ 'Review rewards',
51
+ ],
52
+ corporate: [
53
+ 'Volume-based point accrual',
54
+ 'Contract renewal bonuses',
55
+ 'Training completion credits',
56
+ 'Referral commissions',
57
+ ],
58
+ tech: [
59
+ 'API usage milestones',
60
+ 'Open-source contributions',
61
+ 'Beta testing participation',
62
+ 'Documentation contributions',
63
+ 'Purchase credits',
64
+ ],
65
+ organic: [
66
+ 'Eco-purchase multipliers',
67
+ 'Refill/return programme points',
68
+ 'Community volunteering credits',
69
+ 'Referral rewards',
70
+ 'Impact milestones',
71
+ ],
72
+ retro: ['Stamp per purchase', 'Milestone stamps', 'Event attendance stamps', 'Social stamps'],
73
+ };
74
+ const STYLE_REDEEM_OPTIONS = {
75
+ minimal: ['Discount vouchers', 'Free product', 'Exclusive access'],
76
+ bold: [
77
+ 'Limited-edition drops',
78
+ 'Early access to launches',
79
+ 'Event tickets',
80
+ 'Exclusive merchandise',
81
+ ],
82
+ elegant: [
83
+ 'Complimentary upgrades',
84
+ 'Curated experiences',
85
+ 'Personal shopping sessions',
86
+ 'Charitable donations',
87
+ ],
88
+ playful: [
89
+ 'Product discounts',
90
+ 'Mystery box rewards',
91
+ 'Avatar upgrades',
92
+ 'Exclusive digital badges',
93
+ ],
94
+ corporate: [
95
+ 'Volume discounts',
96
+ 'Dedicated support hours',
97
+ 'Training credits',
98
+ 'Co-marketing opportunities',
99
+ ],
100
+ tech: [
101
+ 'API credit top-ups',
102
+ 'Priority support',
103
+ 'Beta access',
104
+ 'Swag and merchandise',
105
+ 'Conference tickets',
106
+ ],
107
+ organic: [
108
+ 'Product credits',
109
+ 'Charity donations',
110
+ 'Tree planting',
111
+ 'Community event access',
112
+ 'Upcycled merch',
113
+ ],
114
+ retro: [
115
+ 'Free product on full card',
116
+ 'Vintage-style collectibles',
117
+ 'Anniversary gifts',
118
+ 'Hall of fame recognition',
119
+ ],
120
+ };
121
+ const STYLE_ENGAGEMENT_TACTICS = {
122
+ minimal: ['Monthly points summary', 'Clear progress bar', 'Simple tier tracker'],
123
+ bold: [
124
+ 'Leaderboards',
125
+ 'Limited-time challenges',
126
+ 'Exclusive member drops',
127
+ 'FOMO countdown timers',
128
+ ],
129
+ elegant: [
130
+ 'Personal concierge updates',
131
+ 'Invitation-only events',
132
+ 'Curated gift at tier milestone',
133
+ ],
134
+ playful: [
135
+ 'Weekly surprise reveals',
136
+ 'Seasonal collectible series',
137
+ 'Social sharing streaks',
138
+ 'Friend challenges',
139
+ ],
140
+ corporate: [
141
+ 'Quarterly business reviews',
142
+ 'Dedicated success manager',
143
+ 'Priority renewal reminders',
144
+ ],
145
+ tech: [
146
+ 'API dashboard with points analytics',
147
+ 'Webhook-triggered celebrations',
148
+ 'Open changelog for points rules',
149
+ ],
150
+ organic: [
151
+ 'Impact dashboard (trees planted, CO2 saved)',
152
+ 'Community spotlights',
153
+ 'Circular economy milestones',
154
+ ],
155
+ retro: [
156
+ 'Physical loyalty card option',
157
+ 'Anniversary postcards',
158
+ 'Collector milestone certificates',
159
+ ],
160
+ };
161
+ const STYLE_EXPIRY_POLICY = {
162
+ minimal: 'Points expire after 12 months of inactivity.',
163
+ bold: 'Points valid for 24 months; Icon tier points never expire.',
164
+ elegant: 'Points never expire while membership is active.',
165
+ playful: 'Points expire after 18 months; collectibles never expire.',
166
+ corporate: 'Points expire at contract year-end; roll-over available at Platinum+.',
167
+ tech: 'Points expire after 24 months of API inactivity.',
168
+ organic: 'Points expire after 18 months; impact credits never expire.',
169
+ retro: 'Stamps expire after 2 years; Hall of Fame status is permanent.',
170
+ };
171
+ function buildTierBenefits(brand, safeStyle) {
172
+ const tiers = STYLE_TIERS[safeStyle];
173
+ const baseBenefits = {
174
+ [tiers[0]]: ['Access to loyalty dashboard', 'Birthday reward', 'Early sale access'],
175
+ [tiers[1]]: [
176
+ 'All Member benefits',
177
+ '2x points weekends',
178
+ 'Free shipping threshold reduced by 20%',
179
+ ],
180
+ [tiers[2]]: [
181
+ `All ${tiers[1]} benefits`,
182
+ 'Dedicated support line',
183
+ 'Quarterly bonus points',
184
+ 'Exclusive product access',
185
+ ],
186
+ };
187
+ if (tiers[3]) {
188
+ baseBenefits[tiers[3]] = [
189
+ `All ${tiers[2]} benefits`,
190
+ 'Personal account manager',
191
+ 'Invitation-only events',
192
+ `${brand.name} ambassador status`,
193
+ ];
194
+ }
195
+ return tiers.map((tier) => ({
196
+ tier,
197
+ benefits: baseBenefits[tier] ?? [`All benefits of the ${tier} tier`],
198
+ }));
199
+ }
200
+ function buildAnalyticsKpis() {
201
+ return {
202
+ active_member_rate: '% members earning/redeeming in last 90 days',
203
+ redemption_rate: '% points redeemed vs issued',
204
+ tier_progression_rate: '% members advancing tiers per quarter',
205
+ churn_rate_loyalty_vs_non: 'Retention lift of loyalty members over non-members',
206
+ incremental_revenue_per_member: 'Revenue attributable to loyalty participation',
207
+ nps_loyalty_cohort: 'NPS score for active loyalty members',
208
+ };
209
+ }
210
+ function buildBriefSummary(brand, safeStyle) {
211
+ const approach = STYLE_PROGRAM_APPROACH[safeStyle];
212
+ const tiers = STYLE_TIERS[safeStyle];
213
+ return `${brand.name}${brand.tagline ? ` — "${brand.tagline}"` : ''} Loyalty Programme: ${approach} The programme features ${tiers.length} tiers (${tiers.join(', ')}), rewarding customers with points for every interaction and offering curated redemption options aligned to the brand's ${safeStyle} style.`;
214
+ }
215
+ export function generateBrandLoyalty(brand) {
216
+ const safeStyle = VALID_STYLES.has(brand.style)
217
+ ? brand.style
218
+ : 'minimal';
219
+ return {
220
+ programApproach: STYLE_PROGRAM_APPROACH[safeStyle],
221
+ tiers: STYLE_TIERS[safeStyle],
222
+ tierBenefits: buildTierBenefits(brand, safeStyle),
223
+ earnMechanisms: STYLE_EARN_MECHANISMS[safeStyle],
224
+ redeemOptions: STYLE_REDEEM_OPTIONS[safeStyle],
225
+ engagementTactics: STYLE_ENGAGEMENT_TACTICS[safeStyle],
226
+ expiryPolicy: STYLE_EXPIRY_POLICY[safeStyle],
227
+ analyticsKpis: buildAnalyticsKpis(),
228
+ loyaltyBriefSummary: buildBriefSummary(brand, safeStyle),
229
+ };
230
+ }
231
+ //# sourceMappingURL=brand-loyalty.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"brand-loyalty.js","sourceRoot":"","sources":["../../../../src/lib/branding-core/generators/brand-loyalty.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { BrandIdentity } from '../../types.js';
2
+ import type { BrandMarketplaceOutput } from '../../types.js';
3
+ export declare function generateBrandMarketplace(brand: BrandIdentity): BrandMarketplaceOutput;
4
+ //# sourceMappingURL=brand-marketplace.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"brand-marketplace.d.ts","sourceRoot":"","sources":["../../../../src/lib/branding-core/generators/brand-marketplace.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AAuQ7D,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,aAAa,GAAG,sBAAsB,CAerF"}