@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,251 @@
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_MARKETPLACE_APPROACH = {
12
+ minimal: 'Clean, curated presence on selective high-quality marketplaces with a focus on brand integrity over volume.',
13
+ bold: 'Aggressive multi-channel marketplace expansion with bold creative assets that stand out in crowded listings.',
14
+ elegant: 'Premium marketplace positioning with luxury-tier platforms and white-glove seller programmes.',
15
+ playful: 'Fun, personality-driven marketplace presence with creative product titles and vibrant imagery.',
16
+ corporate: 'Strategic B2B marketplace coverage across enterprise procurement channels with compliance-ready listings.',
17
+ tech: 'Developer-first marketplace distribution including app stores, API marketplaces, and SaaS directories.',
18
+ organic: 'Values-aligned marketplace selection prioritising ethical, sustainable, and independent platforms.',
19
+ retro: 'Vintage-authentic marketplace presence on collector and heritage platforms with artisanal positioning.',
20
+ };
21
+ const STYLE_PRIMARY_MARKETPLACES = {
22
+ minimal: ['Brand DTC website', 'Curated boutique marketplaces', 'Local artisan platforms'],
23
+ bold: ['Amazon', 'eBay', 'Walmart Marketplace', 'TikTok Shop'],
24
+ elegant: ['Farfetch', 'Net-a-Porter', 'Harrods Online', 'Saks Fifth Avenue'],
25
+ playful: ['Etsy', 'TikTok Shop', 'Depop', 'Amazon Handmade'],
26
+ corporate: ['AWS Marketplace', 'Alibaba B2B', 'ThomasNet', 'Ariba Network'],
27
+ tech: [
28
+ 'AWS Marketplace',
29
+ 'Azure Marketplace',
30
+ 'Google Cloud Marketplace',
31
+ 'Salesforce AppExchange',
32
+ ],
33
+ organic: ['Etsy', 'Not On The High Street', 'Wolf & Badger', 'EarthHero'],
34
+ retro: ['Etsy', 'eBay Collectibles', 'Ruby Lane', 'Chairish'],
35
+ };
36
+ const STYLE_LISTING_PRINCIPLES = {
37
+ minimal: [
38
+ 'Short precise titles under 60 characters',
39
+ 'Minimal white-space imagery',
40
+ 'Single primary benefit statement',
41
+ 'Clean bullet points',
42
+ ],
43
+ bold: [
44
+ 'Keyword-rich titles with top benefits',
45
+ 'A+ content with bold lifestyle imagery',
46
+ 'Comparison charts vs competitors',
47
+ 'Video content in listings',
48
+ ],
49
+ elegant: [
50
+ 'Luxury descriptors in title and copy',
51
+ 'Editorial-quality imagery',
52
+ 'Provenance and craftsmanship story',
53
+ 'Concierge-level descriptions',
54
+ ],
55
+ playful: [
56
+ 'Fun punchy titles with emoji',
57
+ 'Bright colourful product photography',
58
+ 'Story-driven descriptions',
59
+ 'Social proof callouts',
60
+ ],
61
+ corporate: [
62
+ 'Compliance and specification focus',
63
+ 'Data-sheet style bullet points',
64
+ 'Bulk pricing tiers',
65
+ 'SLA and support details',
66
+ ],
67
+ tech: [
68
+ 'Feature-first technical titles',
69
+ 'Integration and compatibility details',
70
+ 'Developer documentation links',
71
+ 'Version and changelog notes',
72
+ ],
73
+ organic: [
74
+ 'Ingredient and provenance transparency',
75
+ 'Certifications in title',
76
+ 'Impact and ethics story',
77
+ 'Eco-credentials bullet points',
78
+ ],
79
+ retro: [
80
+ 'Era and provenance in title',
81
+ 'Detailed condition descriptions',
82
+ 'Authenticity guarantees',
83
+ 'Historical context and story',
84
+ ],
85
+ };
86
+ const STYLE_ADVERTISING_APPROACH = {
87
+ minimal: ['Low-spend brand-protection ads', 'Retargeting only', 'No discount promotions'],
88
+ bold: [
89
+ 'Sponsored Products broad match',
90
+ 'Sponsored Brands video',
91
+ 'Coupons and deal-of-the-day',
92
+ 'Lightning deals',
93
+ ],
94
+ elegant: ['Curated sponsored placements', 'Editorial ad slots', 'No discount advertising'],
95
+ playful: ['TikTok in-feed video ads', 'Sponsored Posts', 'Bundle deals', 'Giveaway campaigns'],
96
+ corporate: [
97
+ 'Category ads on procurement platforms',
98
+ 'Thought-leadership content ads',
99
+ 'RFP response boosting',
100
+ ],
101
+ tech: [
102
+ 'Developer newsletter placements',
103
+ 'App store search ads',
104
+ 'Free tier promotion',
105
+ 'Trial conversion campaigns',
106
+ ],
107
+ organic: [
108
+ 'Purpose-driven sponsor slots',
109
+ 'Community newsletter ads',
110
+ 'Zero paid-search on ethical grounds',
111
+ ],
112
+ retro: [
113
+ 'Promoted listings on collector platforms',
114
+ 'Curated showcase features',
115
+ 'Editorial vintage picks',
116
+ ],
117
+ };
118
+ const STYLE_REVIEW_STRATEGY = {
119
+ minimal: [
120
+ 'Post-purchase email follow-up',
121
+ 'Quality guarantee messaging',
122
+ 'Respond to all reviews within 48h',
123
+ ],
124
+ bold: [
125
+ 'Automated review request sequences',
126
+ 'Vine programme enrolment',
127
+ 'Public response to negative reviews',
128
+ 'Star-rating goal: 4.5+',
129
+ ],
130
+ elegant: [
131
+ 'Personal thank-you inserts',
132
+ 'Concierge follow-up call for high-value orders',
133
+ 'Discreet review invitation',
134
+ ],
135
+ playful: [
136
+ 'Unboxing hashtag campaigns',
137
+ 'Fun review prompt inserts',
138
+ 'User-generated content reposting',
139
+ ],
140
+ corporate: [
141
+ 'Case study requests post-deployment',
142
+ 'G2 and Capterra review campaigns',
143
+ 'Reference customer programme',
144
+ ],
145
+ tech: [
146
+ 'G2 and Product Hunt reviews',
147
+ 'GitHub star campaigns',
148
+ 'Changelog appreciation emails',
149
+ 'Developer testimonials',
150
+ ],
151
+ organic: [
152
+ 'Handwritten thank-you cards',
153
+ 'Community shoutout requests',
154
+ 'Values-aligned review prompts',
155
+ ],
156
+ retro: [
157
+ 'Personalised collector community shoutouts',
158
+ 'Show-and-tell requests',
159
+ 'Authenticity confirmation reviews',
160
+ ],
161
+ };
162
+ const STYLE_PRICING_APPROACH = {
163
+ minimal: 'Value-anchored pricing without discounts; maintain perceived brand premium.',
164
+ bold: 'Competitive pricing with strategic promotions; use volume discounts and bundles.',
165
+ elegant: 'Premium pricing with no markdown strategy; brand equity over velocity.',
166
+ playful: 'Accessible price points with frequent seasonal promotions and bundles.',
167
+ corporate: 'Tiered B2B pricing with contract-based discounts and volume brackets.',
168
+ tech: 'Freemium entry with clear upgrade tiers; usage-based pricing transparency.',
169
+ organic: 'Fair-trade premium pricing that reflects true cost and ethical sourcing.',
170
+ retro: 'Collector-fair pricing with provenance-based premium; no deep discounts.',
171
+ };
172
+ function buildFulfilmentOptions(brand, safeStyle) {
173
+ const base = [
174
+ 'Direct fulfilment from owned warehouse for quality control',
175
+ 'Third-party logistics (3PL) for high-volume channels',
176
+ 'Maintain brand packaging standards across all fulfilment routes',
177
+ 'Branded inserts and unboxing experience in all parcels',
178
+ 'Same-day or next-day SLA on flagship marketplace',
179
+ ];
180
+ if (safeStyle === 'tech') {
181
+ base.push('Digital delivery via secure download links', 'API-based licence provisioning');
182
+ }
183
+ if (safeStyle === 'elegant') {
184
+ base.push('White-glove gift wrapping service', 'Named account manager for boutique orders');
185
+ }
186
+ if (safeStyle === 'organic') {
187
+ base.push('Carbon-neutral shipping provider', 'Minimal packaging with compostable materials');
188
+ }
189
+ return base;
190
+ }
191
+ function buildComplianceChecklist(brand, safeStyle) {
192
+ const base = [
193
+ `Register ${brand.name} trademark before marketplace expansion`,
194
+ 'Enrol in Brand Registry on applicable platforms',
195
+ 'Monitor for counterfeit or unauthorised sellers',
196
+ 'Ensure product descriptions meet platform content policies',
197
+ 'Maintain accurate inventory to avoid stockout penalties',
198
+ 'Follow marketplace data and privacy terms for customer data',
199
+ ];
200
+ if (safeStyle === 'corporate') {
201
+ base.push('SOC 2 and ISO 27001 documentation for enterprise listings', 'GDPR-compliant data processing agreements');
202
+ }
203
+ if (safeStyle === 'organic') {
204
+ base.push('Upload organic certification documents to platform profile', 'Comply with FTC Green Guides for environmental claims');
205
+ }
206
+ if (safeStyle === 'tech') {
207
+ base.push('App store guideline compliance review before each release', 'API usage policy review quarterly');
208
+ }
209
+ return base;
210
+ }
211
+ function buildSuccessMetrics(safeStyle) {
212
+ const base = {
213
+ conversion_rate: 'Listing views to purchases; target >5%',
214
+ buy_box_percentage: 'Percentage of time brand wins buy box; target >90%',
215
+ average_review_rating: 'Aggregate star rating across listings; target 4.5+',
216
+ return_rate: 'Percentage of orders returned; target <3%',
217
+ organic_rank: 'Average keyword ranking position for top 5 search terms',
218
+ revenue_per_listing: 'Revenue divided by active SKU count',
219
+ };
220
+ if (safeStyle === 'tech') {
221
+ base['trial_to_paid_rate'] = 'Percentage converting from free trial; target >20%';
222
+ base['marketplace_review_nps'] = 'Net Promoter Score from marketplace reviews';
223
+ }
224
+ if (safeStyle === 'corporate') {
225
+ base['rfp_win_rate'] = 'Enterprise RFP conversion rate from marketplace leads';
226
+ base['contract_value'] = 'Average annual contract value from marketplace acquisition';
227
+ }
228
+ return base;
229
+ }
230
+ function buildBriefSummary(brand, safeStyle) {
231
+ const approach = STYLE_MARKETPLACE_APPROACH[safeStyle];
232
+ const platforms = STYLE_PRIMARY_MARKETPLACES[safeStyle];
233
+ const taglinePart = brand.tagline ? ` — "${brand.tagline}"` : '';
234
+ return `${brand.name}${taglinePart} marketplace strategy: ${approach} Primary channels include ${platforms[0]}, ${platforms[1]}, and ${platforms[2] ?? 'additional curated platforms'}.`;
235
+ }
236
+ export function generateBrandMarketplace(brand) {
237
+ const safeStyle = VALID_STYLES.has(brand.style) ? brand.style : 'minimal';
238
+ return {
239
+ marketplaceApproach: STYLE_MARKETPLACE_APPROACH[safeStyle],
240
+ primaryMarketplaces: STYLE_PRIMARY_MARKETPLACES[safeStyle],
241
+ listingPrinciples: STYLE_LISTING_PRINCIPLES[safeStyle],
242
+ advertisingApproach: STYLE_ADVERTISING_APPROACH[safeStyle],
243
+ reviewStrategy: STYLE_REVIEW_STRATEGY[safeStyle],
244
+ pricingApproach: STYLE_PRICING_APPROACH[safeStyle],
245
+ fulfilmentOptions: buildFulfilmentOptions(brand, safeStyle),
246
+ complianceChecklist: buildComplianceChecklist(brand, safeStyle),
247
+ successMetrics: buildSuccessMetrics(safeStyle),
248
+ marketplaceBriefSummary: buildBriefSummary(brand, safeStyle),
249
+ };
250
+ }
251
+ //# sourceMappingURL=brand-marketplace.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"brand-marketplace.js","sourceRoot":"","sources":["../../../../src/lib/branding-core/generators/brand-marketplace.ts"],"names":[],"mappings":"AAGA,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC;IAC3B,SAAS;IACT,MAAM;IACN,SAAS;IACT,SAAS;IACT,WAAW;IACX,MAAM;IACN,SAAS;IACT,OAAO;CACR,CAAC,CAAC;AAEH,MAAM,0BAA0B,GAA2B;IACzD,OAAO,EACL,6GAA6G;IAC/G,IAAI,EAAE,8GAA8G;IACpH,OAAO,EACL,+FAA+F;IACjG,OAAO,EACL,gGAAgG;IAClG,SAAS,EACP,2GAA2G;IAC7G,IAAI,EAAE,wGAAwG;IAC9G,OAAO,EACL,oGAAoG;IACtG,KAAK,EACH,wGAAwG;CAC3G,CAAC;AAEF,MAAM,0BAA0B,GAA6B;IAC3D,OAAO,EAAE,CAAC,mBAAmB,EAAE,+BAA+B,EAAE,yBAAyB,CAAC;IAC1F,IAAI,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,qBAAqB,EAAE,aAAa,CAAC;IAC9D,OAAO,EAAE,CAAC,UAAU,EAAE,cAAc,EAAE,gBAAgB,EAAE,mBAAmB,CAAC;IAC5E,OAAO,EAAE,CAAC,MAAM,EAAE,aAAa,EAAE,OAAO,EAAE,iBAAiB,CAAC;IAC5D,SAAS,EAAE,CAAC,iBAAiB,EAAE,aAAa,EAAE,WAAW,EAAE,eAAe,CAAC;IAC3E,IAAI,EAAE;QACJ,iBAAiB;QACjB,mBAAmB;QACnB,0BAA0B;QAC1B,wBAAwB;KACzB;IACD,OAAO,EAAE,CAAC,MAAM,EAAE,wBAAwB,EAAE,eAAe,EAAE,WAAW,CAAC;IACzE,KAAK,EAAE,CAAC,MAAM,EAAE,mBAAmB,EAAE,WAAW,EAAE,UAAU,CAAC;CAC9D,CAAC;AAEF,MAAM,wBAAwB,GAA6B;IACzD,OAAO,EAAE;QACP,0CAA0C;QAC1C,6BAA6B;QAC7B,kCAAkC;QAClC,qBAAqB;KACtB;IACD,IAAI,EAAE;QACJ,uCAAuC;QACvC,wCAAwC;QACxC,kCAAkC;QAClC,2BAA2B;KAC5B;IACD,OAAO,EAAE;QACP,sCAAsC;QACtC,2BAA2B;QAC3B,oCAAoC;QACpC,8BAA8B;KAC/B;IACD,OAAO,EAAE;QACP,8BAA8B;QAC9B,sCAAsC;QACtC,2BAA2B;QAC3B,uBAAuB;KACxB;IACD,SAAS,EAAE;QACT,oCAAoC;QACpC,gCAAgC;QAChC,oBAAoB;QACpB,yBAAyB;KAC1B;IACD,IAAI,EAAE;QACJ,gCAAgC;QAChC,uCAAuC;QACvC,+BAA+B;QAC/B,6BAA6B;KAC9B;IACD,OAAO,EAAE;QACP,wCAAwC;QACxC,yBAAyB;QACzB,yBAAyB;QACzB,+BAA+B;KAChC;IACD,KAAK,EAAE;QACL,6BAA6B;QAC7B,iCAAiC;QACjC,yBAAyB;QACzB,8BAA8B;KAC/B;CACF,CAAC;AAEF,MAAM,0BAA0B,GAA6B;IAC3D,OAAO,EAAE,CAAC,gCAAgC,EAAE,kBAAkB,EAAE,wBAAwB,CAAC;IACzF,IAAI,EAAE;QACJ,gCAAgC;QAChC,wBAAwB;QACxB,6BAA6B;QAC7B,iBAAiB;KAClB;IACD,OAAO,EAAE,CAAC,8BAA8B,EAAE,oBAAoB,EAAE,yBAAyB,CAAC;IAC1F,OAAO,EAAE,CAAC,0BAA0B,EAAE,iBAAiB,EAAE,cAAc,EAAE,oBAAoB,CAAC;IAC9F,SAAS,EAAE;QACT,uCAAuC;QACvC,gCAAgC;QAChC,uBAAuB;KACxB;IACD,IAAI,EAAE;QACJ,iCAAiC;QACjC,sBAAsB;QACtB,qBAAqB;QACrB,4BAA4B;KAC7B;IACD,OAAO,EAAE;QACP,8BAA8B;QAC9B,0BAA0B;QAC1B,qCAAqC;KACtC;IACD,KAAK,EAAE;QACL,0CAA0C;QAC1C,2BAA2B;QAC3B,yBAAyB;KAC1B;CACF,CAAC;AAEF,MAAM,qBAAqB,GAA6B;IACtD,OAAO,EAAE;QACP,+BAA+B;QAC/B,6BAA6B;QAC7B,mCAAmC;KACpC;IACD,IAAI,EAAE;QACJ,oCAAoC;QACpC,0BAA0B;QAC1B,qCAAqC;QACrC,wBAAwB;KACzB;IACD,OAAO,EAAE;QACP,4BAA4B;QAC5B,gDAAgD;QAChD,4BAA4B;KAC7B;IACD,OAAO,EAAE;QACP,4BAA4B;QAC5B,2BAA2B;QAC3B,kCAAkC;KACnC;IACD,SAAS,EAAE;QACT,qCAAqC;QACrC,kCAAkC;QAClC,8BAA8B;KAC/B;IACD,IAAI,EAAE;QACJ,6BAA6B;QAC7B,uBAAuB;QACvB,+BAA+B;QAC/B,wBAAwB;KACzB;IACD,OAAO,EAAE;QACP,6BAA6B;QAC7B,6BAA6B;QAC7B,+BAA+B;KAChC;IACD,KAAK,EAAE;QACL,4CAA4C;QAC5C,wBAAwB;QACxB,mCAAmC;KACpC;CACF,CAAC;AAEF,MAAM,sBAAsB,GAA2B;IACrD,OAAO,EAAE,6EAA6E;IACtF,IAAI,EAAE,kFAAkF;IACxF,OAAO,EAAE,wEAAwE;IACjF,OAAO,EAAE,wEAAwE;IACjF,SAAS,EAAE,uEAAuE;IAClF,IAAI,EAAE,4EAA4E;IAClF,OAAO,EAAE,0EAA0E;IACnF,KAAK,EAAE,0EAA0E;CAClF,CAAC;AAEF,SAAS,sBAAsB,CAAC,KAAoB,EAAE,SAAiB;IACrE,MAAM,IAAI,GAAG;QACX,4DAA4D;QAC5D,sDAAsD;QACtD,iEAAiE;QACjE,wDAAwD;QACxD,kDAAkD;KACnD,CAAC;IACF,IAAI,SAAS,KAAK,MAAM,EAAE,CAAC;QACzB,IAAI,CAAC,IAAI,CAAC,4CAA4C,EAAE,gCAAgC,CAAC,CAAC;IAC5F,CAAC;IACD,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;QAC5B,IAAI,CAAC,IAAI,CAAC,mCAAmC,EAAE,2CAA2C,CAAC,CAAC;IAC9F,CAAC;IACD,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;QAC5B,IAAI,CAAC,IAAI,CAAC,kCAAkC,EAAE,8CAA8C,CAAC,CAAC;IAChG,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,wBAAwB,CAAC,KAAoB,EAAE,SAAiB;IACvE,MAAM,IAAI,GAAG;QACX,YAAY,KAAK,CAAC,IAAI,yCAAyC;QAC/D,iDAAiD;QACjD,iDAAiD;QACjD,4DAA4D;QAC5D,yDAAyD;QACzD,6DAA6D;KAC9D,CAAC;IACF,IAAI,SAAS,KAAK,WAAW,EAAE,CAAC;QAC9B,IAAI,CAAC,IAAI,CACP,2DAA2D,EAC3D,2CAA2C,CAC5C,CAAC;IACJ,CAAC;IACD,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;QAC5B,IAAI,CAAC,IAAI,CACP,4DAA4D,EAC5D,uDAAuD,CACxD,CAAC;IACJ,CAAC;IACD,IAAI,SAAS,KAAK,MAAM,EAAE,CAAC;QACzB,IAAI,CAAC,IAAI,CACP,2DAA2D,EAC3D,mCAAmC,CACpC,CAAC;IACJ,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,mBAAmB,CAAC,SAAiB;IAC5C,MAAM,IAAI,GAA2B;QACnC,eAAe,EAAE,wCAAwC;QACzD,kBAAkB,EAAE,oDAAoD;QACxE,qBAAqB,EAAE,oDAAoD;QAC3E,WAAW,EAAE,2CAA2C;QACxD,YAAY,EAAE,yDAAyD;QACvE,mBAAmB,EAAE,qCAAqC;KAC3D,CAAC;IACF,IAAI,SAAS,KAAK,MAAM,EAAE,CAAC;QACzB,IAAI,CAAC,oBAAoB,CAAC,GAAG,oDAAoD,CAAC;QAClF,IAAI,CAAC,wBAAwB,CAAC,GAAG,6CAA6C,CAAC;IACjF,CAAC;IACD,IAAI,SAAS,KAAK,WAAW,EAAE,CAAC;QAC9B,IAAI,CAAC,cAAc,CAAC,GAAG,uDAAuD,CAAC;QAC/E,IAAI,CAAC,gBAAgB,CAAC,GAAG,4DAA4D,CAAC;IACxF,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,iBAAiB,CAAC,KAAoB,EAAE,SAAiB;IAChE,MAAM,QAAQ,GAAG,0BAA0B,CAAC,SAAS,CAAC,CAAC;IACvD,MAAM,SAAS,GAAG,0BAA0B,CAAC,SAAS,CAAC,CAAC;IACxD,MAAM,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,KAAK,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IACjE,OAAO,GAAG,KAAK,CAAC,IAAI,GAAG,WAAW,0BAA0B,QAAQ,6BAA6B,SAAS,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,SAAS,CAAC,CAAC,CAAC,IAAI,8BAA8B,GAAG,CAAC;AAC3L,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,KAAoB;IAC3D,MAAM,SAAS,GAAG,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;IAE1E,OAAO;QACL,mBAAmB,EAAE,0BAA0B,CAAC,SAAS,CAAC;QAC1D,mBAAmB,EAAE,0BAA0B,CAAC,SAAS,CAAC;QAC1D,iBAAiB,EAAE,wBAAwB,CAAC,SAAS,CAAC;QACtD,mBAAmB,EAAE,0BAA0B,CAAC,SAAS,CAAC;QAC1D,cAAc,EAAE,qBAAqB,CAAC,SAAS,CAAC;QAChD,eAAe,EAAE,sBAAsB,CAAC,SAAS,CAAC;QAClD,iBAAiB,EAAE,sBAAsB,CAAC,KAAK,EAAE,SAAS,CAAC;QAC3D,mBAAmB,EAAE,wBAAwB,CAAC,KAAK,EAAE,SAAS,CAAC;QAC/D,cAAc,EAAE,mBAAmB,CAAC,SAAS,CAAC;QAC9C,uBAAuB,EAAE,iBAAiB,CAAC,KAAK,EAAE,SAAS,CAAC;KAC7D,CAAC;AACJ,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { BrandIdentity } from '../../types.js';
2
+ import type { BrandNewsletterOutput } from '../../types.js';
3
+ export declare function generateBrandNewsletter(brand: BrandIdentity): BrandNewsletterOutput;
4
+ //# sourceMappingURL=brand-newsletter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"brand-newsletter.d.ts","sourceRoot":"","sources":["../../../../src/lib/branding-core/generators/brand-newsletter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAc,MAAM,gBAAgB,CAAC;AAChE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAwK5D,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,aAAa,GAAG,qBAAqB,CAenF"}
@@ -0,0 +1,173 @@
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_APPROACH = {
12
+ minimal: 'Clean, curated digest — less is more, every edition earns its send',
13
+ bold: 'High-energy flagship publication with strong opinions and striking visuals',
14
+ elegant: 'Premium editorial letter — polished prose, exclusive insights, high production',
15
+ playful: 'Fun, personality-packed bulletin with surprises and interactive elements',
16
+ corporate: 'Professional intelligence briefing — authority, reliability, decision-relevant content',
17
+ tech: 'Developer-first technical dispatch — code, tools, deep dives, and community updates',
18
+ organic: 'Values-driven community letter — impact stories, provenance, and seasonal connection',
19
+ retro: 'Vintage-flavoured gazette — nostalgic design, timeless wisdom, archival depth',
20
+ };
21
+ const STYLE_FORMAT = {
22
+ minimal: ['Single-topic deep dive', 'Curated link round-up', 'One insight + one action'],
23
+ bold: [
24
+ 'Feature story + quick hits',
25
+ 'Opinion column + reader debate',
26
+ 'Visual-first with short copy',
27
+ ],
28
+ elegant: ['Long-form essay', "Editor's letter + curated picks", 'Exclusive interview transcript'],
29
+ playful: [
30
+ 'Quiz + fun facts',
31
+ 'Story-driven narrative with illustrations',
32
+ 'Interactive polls + results',
33
+ ],
34
+ corporate: [
35
+ 'Executive briefing format',
36
+ 'Market intelligence digest',
37
+ 'Trend analysis + implications',
38
+ ],
39
+ tech: [
40
+ 'Tutorial + code snippet',
41
+ 'Tool roundup + benchmarks',
42
+ 'Open-source spotlight + changelog',
43
+ ],
44
+ organic: ['Seasonal story', 'Impact report snippet', 'Producer profile + recipe/tip'],
45
+ retro: [
46
+ 'Feature column + classifieds',
47
+ 'Photo essay + captions',
48
+ 'Historical throwback + modern parallel',
49
+ ],
50
+ };
51
+ const STYLE_CADENCE = {
52
+ minimal: 'Bi-weekly — quality over quantity',
53
+ bold: 'Weekly — maintain momentum and anticipation',
54
+ elegant: 'Monthly — premium feel, subscribers look forward to each edition',
55
+ playful: 'Weekly — frequent enough to sustain delight and habit',
56
+ corporate: 'Weekly or bi-weekly — aligned with business news cycles',
57
+ tech: 'Weekly — fast-moving ecosystem demands regular updates',
58
+ organic: 'Monthly or seasonal — aligned with nature and harvest cycles',
59
+ retro: 'Bi-weekly — measured pace evokes the magazine era',
60
+ };
61
+ const STYLE_SUBJECT_LINE_FORMULA = {
62
+ minimal: 'Direct + specific: "The one thing worth reading this week"',
63
+ bold: 'Provocative + numbered: "5 truths the industry won\'t tell you"',
64
+ elegant: 'Intriguing + exclusive: "An editor\'s note on [topic] — for subscribers only"',
65
+ playful: 'Emoji + curiosity: "🎉 We tried 47 [thing] so you don\'t have to"',
66
+ corporate: 'Data-led + authoritative: "[Stat] — what it means for your business"',
67
+ tech: 'Technical + actionable: "How to [achieve X] with [framework/tool]"',
68
+ organic: 'Story-first + seasonal: "This month from [region/producer]: [story hook]"',
69
+ retro: 'Nostalgic + timeless: "From the archive: the [era] guide to [topic]"',
70
+ };
71
+ const STYLE_PERSONALISATION = {
72
+ minimal: ['First-name greeting', 'Curated section relevant to reader interest'],
73
+ bold: ['Dynamic hero image by segment', 'Personalised CTA based on last click'],
74
+ elegant: ['Handwritten-style signature', 'Exclusive member tier section'],
75
+ playful: ['Personalised quiz results', 'Name in subject line + fun fact'],
76
+ corporate: ['Industry-specific insights block', 'Role-based recommended content'],
77
+ tech: ['Stack-based code snippets', 'Contributor shout-out by username'],
78
+ organic: ['Nearest producer/farm recommendation', 'Seasonal tip by location'],
79
+ retro: ['Reader spotlight feature', "Archival reference to reader's year of joining"],
80
+ };
81
+ function buildSections(brand, safeStyle) {
82
+ const base = [
83
+ 'Hero header with brand logo and edition number',
84
+ "Editor's note / personal message (3-5 sentences)",
85
+ 'Feature content block (primary story or insight)',
86
+ 'Secondary content block (2-3 shorter items)',
87
+ 'Call-to-action section with single primary CTA',
88
+ 'Footer with unsubscribe, social links, and legal text',
89
+ ];
90
+ if (safeStyle === 'tech') {
91
+ base.splice(3, 0, 'Code snippet or tool spotlight block');
92
+ base.splice(5, 0, 'Community contributions / open-source picks');
93
+ }
94
+ else if (safeStyle === 'corporate') {
95
+ base.splice(3, 0, 'Market data or statistic callout block');
96
+ base.splice(5, 0, 'Upcoming events or webinar promotion');
97
+ }
98
+ else if (safeStyle === 'playful') {
99
+ base.splice(3, 0, 'Fun fact or trivia section');
100
+ base.splice(6, 0, 'Meme, gif, or illustrated moment');
101
+ }
102
+ else if (safeStyle === 'elegant') {
103
+ base.splice(3, 0, 'Exclusive subscriber-only section');
104
+ base.splice(5, 0, 'Recommended reading / curated picks');
105
+ }
106
+ return base;
107
+ }
108
+ function buildDeliverabilityChecklist(brand) {
109
+ return [
110
+ `Sender name is recognisable as ${brand.name} — not a generic address`,
111
+ 'From address uses a custom domain (not @gmail.com / @yahoo.com)',
112
+ 'SPF, DKIM, and DMARC DNS records verified and passing',
113
+ 'Unsubscribe link present in every edition (CAN-SPAM / GDPR)',
114
+ 'Text-to-image ratio maintained above 60:40 to avoid spam filters',
115
+ 'No spam trigger words in subject line or preview text',
116
+ 'List hygiene: hard bounces removed within 24 hours',
117
+ 'Soft bounces monitored and suppressed after 3 attempts',
118
+ 'Re-engagement campaign triggered at 90 days of inactivity',
119
+ 'Plain-text version included alongside HTML version',
120
+ ];
121
+ }
122
+ function buildAccessibilityGuidelines() {
123
+ return [
124
+ 'Minimum 16px body font size — 14px for supplementary text only',
125
+ 'Line height 1.5x or greater for body copy',
126
+ 'Colour contrast ratio 4.5:1 for body text, 3:1 for large text (WCAG AA)',
127
+ "Alt text on all images — descriptive, not 'image001.jpg'",
128
+ 'Avoid relying on colour alone to convey information',
129
+ 'Logical heading hierarchy: H1 for subject, H2 for sections',
130
+ 'CTA buttons minimum 44x44px touch target, clear label text',
131
+ ];
132
+ }
133
+ function buildSuccessMetrics(safeStyle) {
134
+ const base = {
135
+ open_rate: 'Target 35-45% (industry avg 21%)',
136
+ click_to_open_rate: 'Target 15-25%',
137
+ unsubscribe_rate: 'Keep below 0.2% per send',
138
+ spam_complaint_rate: 'Keep below 0.08%',
139
+ list_growth_rate: 'Target 5-10% monthly net growth',
140
+ revenue_per_subscriber: 'Track for monetised newsletters',
141
+ };
142
+ if (safeStyle === 'tech') {
143
+ base['github_clicks'] = 'Track developer-specific CTA engagement';
144
+ base['code_copy_events'] = 'If hosted/interactive newsletter';
145
+ }
146
+ if (safeStyle === 'corporate') {
147
+ base['qualified_lead_attribution'] = 'UTM-tagged newsletter conversion to pipeline';
148
+ base['content_download_rate'] = 'Gated asset downloads from newsletter clicks';
149
+ }
150
+ return base;
151
+ }
152
+ function buildNewsletterBriefSummary(brand, safeStyle) {
153
+ const taglinePart = brand.tagline ? ` — "${brand.tagline}"` : '';
154
+ const approach = STYLE_APPROACH[safeStyle];
155
+ const cadence = STYLE_CADENCE[safeStyle];
156
+ return `${brand.name}${taglinePart} newsletter strategy: ${approach}. ${cadence}. Subject line formula: ${STYLE_SUBJECT_LINE_FORMULA[safeStyle].split(':')[0]}.`;
157
+ }
158
+ export function generateBrandNewsletter(brand) {
159
+ const safeStyle = VALID_STYLES.has(brand.style) ? brand.style : 'minimal';
160
+ return {
161
+ newsletterApproach: STYLE_APPROACH[safeStyle],
162
+ recommendedFormats: STYLE_FORMAT[safeStyle],
163
+ publishingCadence: STYLE_CADENCE[safeStyle],
164
+ subjectLineFormula: STYLE_SUBJECT_LINE_FORMULA[safeStyle],
165
+ personalisationStrategy: STYLE_PERSONALISATION[safeStyle],
166
+ newsletterSections: buildSections(brand, safeStyle),
167
+ deliverabilityChecklist: buildDeliverabilityChecklist(brand),
168
+ accessibilityGuidelines: buildAccessibilityGuidelines(),
169
+ successMetrics: buildSuccessMetrics(safeStyle),
170
+ newsletterBriefSummary: buildNewsletterBriefSummary(brand, safeStyle),
171
+ };
172
+ }
173
+ //# sourceMappingURL=brand-newsletter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"brand-newsletter.js","sourceRoot":"","sources":["../../../../src/lib/branding-core/generators/brand-newsletter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { BrandIdentity, BrandPodcastOutput } from '../../types.js';
2
+ export declare function generateBrandPodcast(brand: BrandIdentity): BrandPodcastOutput;
3
+ //# sourceMappingURL=brand-podcast.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"brand-podcast.d.ts","sourceRoot":"","sources":["../../../../src/lib/branding-core/generators/brand-podcast.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAc,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAyNpF,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,aAAa,GAAG,kBAAkB,CAgB7E"}