@genfeedai/helpers 2.2.2
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/aspect-ratio.helper.d.ts +18 -0
- package/dist/aspect-ratio.helper.d.ts.map +1 -0
- package/dist/aspect-ratio.helper.js +116 -0
- package/dist/aspect-ratio.helper.js.map +1 -0
- package/dist/business/pricing/pricing.helper.d.ts +231 -0
- package/dist/business/pricing/pricing.helper.d.ts.map +1 -0
- package/dist/business/pricing/pricing.helper.js +443 -0
- package/dist/business/pricing/pricing.helper.js.map +1 -0
- package/dist/business/tier-models/tier-models.helper.d.ts +16 -0
- package/dist/business/tier-models/tier-models.helper.d.ts.map +1 -0
- package/dist/business/tier-models/tier-models.helper.js +42 -0
- package/dist/business/tier-models/tier-models.helper.js.map +1 -0
- package/dist/deserializer.helper.d.ts +2 -0
- package/dist/deserializer.helper.d.ts.map +1 -0
- package/dist/deserializer.helper.js +3 -0
- package/dist/deserializer.helper.js.map +1 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +10 -0
- package/dist/index.js.map +1 -0
- package/dist/model-capability.helper.d.ts +17 -0
- package/dist/model-capability.helper.d.ts.map +1 -0
- package/dist/model-capability.helper.js +184 -0
- package/dist/model-capability.helper.js.map +1 -0
- package/dist/quality-routing.helper.d.ts +29 -0
- package/dist/quality-routing.helper.d.ts.map +1 -0
- package/dist/quality-routing.helper.js +216 -0
- package/dist/quality-routing.helper.js.map +1 -0
- package/dist/serializer.helper.d.ts +25 -0
- package/dist/serializer.helper.d.ts.map +1 -0
- package/dist/serializer.helper.js +46 -0
- package/dist/serializer.helper.js.map +1 -0
- package/dist/social-url.helper.d.ts +8 -0
- package/dist/social-url.helper.d.ts.map +1 -0
- package/dist/social-url.helper.js +50 -0
- package/dist/social-url.helper.js.map +1 -0
- package/dist/types/model-like.type.d.ts +32 -0
- package/dist/types/model-like.type.d.ts.map +1 -0
- package/dist/types/model-like.type.js +3 -0
- package/dist/types/model-like.type.js.map +1 -0
- package/dist/video-duration.helper.d.ts +9 -0
- package/dist/video-duration.helper.d.ts.map +1 -0
- package/dist/video-duration.helper.js +43 -0
- package/dist/video-duration.helper.js.map +1 -0
- package/package.json +50 -0
|
@@ -0,0 +1,443 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Genfeed.ai Pricing Configuration
|
|
3
|
+
*
|
|
4
|
+
* SINGLE SOURCE OF TRUTH for all pricing across the platform.
|
|
5
|
+
* See: https://github.com/genfeedai/cloud/issues?q=is%3Aissue+pricing
|
|
6
|
+
*
|
|
7
|
+
* Pricing Strategy:
|
|
8
|
+
* - Output-based pricing (videos, images, voice) - NOT credit-based
|
|
9
|
+
* - Premium positioning ($499-$4,999/month)
|
|
10
|
+
* - Credits are tracked internally but NEVER shown to users
|
|
11
|
+
* - Auto-select premium AI models (no user decision fatigue)
|
|
12
|
+
*
|
|
13
|
+
* @updated 2026-01-21
|
|
14
|
+
*/
|
|
15
|
+
const CALENDLY_URL = process.env.NEXT_PUBLIC_CALENDLY_URL ||
|
|
16
|
+
'https://calendly.com/vincent-genfeed/30min';
|
|
17
|
+
const STRIPE_PRICE_IDS = {
|
|
18
|
+
creator: process.env.NEXT_PUBLIC_STRIPE_PRICE_SUBSCRIPTION_CREATOR_MONTHLY,
|
|
19
|
+
enterprise: process.env.NEXT_PUBLIC_STRIPE_PRICE_SUBSCRIPTION_ENTERPRISE_MONTHLY,
|
|
20
|
+
// Convenience aliases
|
|
21
|
+
monthly: process.env.NEXT_PUBLIC_STRIPE_PRICE_SUBSCRIPTION_PRO_MONTHLY,
|
|
22
|
+
pro: process.env.NEXT_PUBLIC_STRIPE_PRICE_SUBSCRIPTION_PRO_MONTHLY,
|
|
23
|
+
scale: process.env.NEXT_PUBLIC_STRIPE_PRICE_SUBSCRIPTION_SCALE_MONTHLY,
|
|
24
|
+
};
|
|
25
|
+
/**
|
|
26
|
+
* BYOK Platform Fee Configuration
|
|
27
|
+
* 5% fee on BYOK usage after a free monthly threshold.
|
|
28
|
+
* Exchange rate: 1 credit = $0.01
|
|
29
|
+
*/
|
|
30
|
+
export const BYOK_FEE_PERCENTAGE = 5;
|
|
31
|
+
export const BYOK_FREE_THRESHOLD_CREDITS = 500;
|
|
32
|
+
export const BYOK_CREDIT_VALUE_DOLLARS = 0.01;
|
|
33
|
+
export const BYOK_FEE_PER_CREDIT = BYOK_CREDIT_VALUE_DOLLARS * (BYOK_FEE_PERCENTAGE / 100);
|
|
34
|
+
/**
|
|
35
|
+
* Apply 70% margin to a provider cost in USD.
|
|
36
|
+
* Returns the sell price in credits (1 credit = $0.01).
|
|
37
|
+
*
|
|
38
|
+
* Formula: Sell Price (USD) = providerCostUsd / 0.30
|
|
39
|
+
* Credits = Sell Price / BYOK_CREDIT_VALUE_DOLLARS
|
|
40
|
+
*
|
|
41
|
+
* @example applyMargin(0.15) → 50 credits ($0.50 sell price on $0.15 cost)
|
|
42
|
+
* @example applyMargin(0.50) → 167 credits ($1.67 sell price on $0.50 cost)
|
|
43
|
+
*/
|
|
44
|
+
export function applyMargin(providerCostUsd) {
|
|
45
|
+
const sellPriceUsd = providerCostUsd / 0.3;
|
|
46
|
+
const credits = Math.ceil(sellPriceUsd / BYOK_CREDIT_VALUE_DOLLARS);
|
|
47
|
+
return Math.max(credits, 2); // absolute minimum floor
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Internal credit costs (hidden from users)
|
|
51
|
+
* Used for margin tracking and cost accounting only
|
|
52
|
+
*
|
|
53
|
+
* Exchange rate: 1 credit = $0.01
|
|
54
|
+
* Pricing formula: Sell Price = Cost / 0.30 (70% margin target)
|
|
55
|
+
*
|
|
56
|
+
* See: https://github.com/genfeedai/cloud/issues?q=is%3Aissue+pricing
|
|
57
|
+
*/
|
|
58
|
+
export const INTERNAL_CREDIT_COSTS = {
|
|
59
|
+
/** Avatar/Lip-sync per second: 100 credits = $1.00/sec */
|
|
60
|
+
avatarPerSecond: 100,
|
|
61
|
+
/** Image (1K/2K): 50 credits = $0.50 (70% margin on $0.15 cost) */
|
|
62
|
+
image: 50,
|
|
63
|
+
/** Image (4K): 100 credits = $1.00 (70% margin on $0.30 cost) */
|
|
64
|
+
image4k: 100,
|
|
65
|
+
/** Video per second: 75 credits = $0.75/sec */
|
|
66
|
+
videoPerSecond: 75,
|
|
67
|
+
/** Voice per minute: 17 credits = $0.17 (70% margin on $0.05 cost) */
|
|
68
|
+
voicePerMinute: 17,
|
|
69
|
+
};
|
|
70
|
+
/**
|
|
71
|
+
* Video duration helpers
|
|
72
|
+
* Standard video durations and their credit costs
|
|
73
|
+
*/
|
|
74
|
+
export const VIDEO_CREDIT_COSTS = {
|
|
75
|
+
/** 4 second video: 300 credits = $3.00 */
|
|
76
|
+
video4s: INTERNAL_CREDIT_COSTS.videoPerSecond * 4,
|
|
77
|
+
/** 8 second video: 600 credits = $6.00 */
|
|
78
|
+
video8s: INTERNAL_CREDIT_COSTS.videoPerSecond * 8,
|
|
79
|
+
/** 15 second video: 1125 credits = $11.25 */
|
|
80
|
+
video15s: INTERNAL_CREDIT_COSTS.videoPerSecond * 15,
|
|
81
|
+
};
|
|
82
|
+
/**
|
|
83
|
+
* Avatar duration helpers
|
|
84
|
+
* Standard avatar durations and their credit costs
|
|
85
|
+
*/
|
|
86
|
+
export const AVATAR_CREDIT_COSTS = {
|
|
87
|
+
/** 4 second avatar: 400 credits = $4.00 */
|
|
88
|
+
avatar4s: INTERNAL_CREDIT_COSTS.avatarPerSecond * 4,
|
|
89
|
+
/** 8 second avatar: 800 credits = $8.00 */
|
|
90
|
+
avatar8s: INTERNAL_CREDIT_COSTS.avatarPerSecond * 8,
|
|
91
|
+
/** 15 second avatar: 1500 credits = $15.00 */
|
|
92
|
+
avatar15s: INTERNAL_CREDIT_COSTS.avatarPerSecond * 15,
|
|
93
|
+
};
|
|
94
|
+
/**
|
|
95
|
+
* Website pricing plans - displayed on public pricing page
|
|
96
|
+
* Output-based pricing for premium positioning
|
|
97
|
+
*/
|
|
98
|
+
export const websitePlans = [
|
|
99
|
+
// BYOK Tier - Bring Your Own Key (entry tier, $0)
|
|
100
|
+
{
|
|
101
|
+
cta: 'Start Free',
|
|
102
|
+
ctaHref: '/sign-up',
|
|
103
|
+
description: 'Use your own AI keys, pay nothing',
|
|
104
|
+
features: [
|
|
105
|
+
'Full platform access',
|
|
106
|
+
'Bring your own AI keys (OpenAI, Anthropic, Replicate, etc.)',
|
|
107
|
+
'All core features',
|
|
108
|
+
'Multi-platform publishing',
|
|
109
|
+
'Content library',
|
|
110
|
+
'Community support',
|
|
111
|
+
],
|
|
112
|
+
interval: 'payg',
|
|
113
|
+
label: 'BYOK',
|
|
114
|
+
outputs: null,
|
|
115
|
+
price: 0,
|
|
116
|
+
target: 'Developers, creators with own API keys',
|
|
117
|
+
type: 'byok',
|
|
118
|
+
valueProposition: 'Full platform access with your own AI keys. You pay providers directly.',
|
|
119
|
+
},
|
|
120
|
+
// Pro Tier - $499/month
|
|
121
|
+
{
|
|
122
|
+
cta: 'Subscribe',
|
|
123
|
+
ctaHref: `${process.env.NEXT_PUBLIC_APPS_APP_ENDPOINT || 'https://app.genfeed.ai'}/sign-up?plan=pro`,
|
|
124
|
+
description: 'For serious creators and small agencies',
|
|
125
|
+
features: [
|
|
126
|
+
'5 min video/month',
|
|
127
|
+
'500 images/month',
|
|
128
|
+
'60 min voice/month',
|
|
129
|
+
'2 team seats',
|
|
130
|
+
'1 brand kit',
|
|
131
|
+
'Premium AI models (auto-selected)',
|
|
132
|
+
'Multi-platform publishing',
|
|
133
|
+
'Email support (48hr)',
|
|
134
|
+
],
|
|
135
|
+
interval: 'month',
|
|
136
|
+
label: 'Pro',
|
|
137
|
+
outputs: {
|
|
138
|
+
images: 500,
|
|
139
|
+
videoMinutes: 5,
|
|
140
|
+
voiceMinutes: 60,
|
|
141
|
+
},
|
|
142
|
+
price: 499,
|
|
143
|
+
stripePriceId: STRIPE_PRICE_IDS.pro,
|
|
144
|
+
target: 'Serious creators, small agencies (1-3 people)',
|
|
145
|
+
type: 'subscription',
|
|
146
|
+
valueProposition: 'Studio-quality video, images, and voice—for less than a single production day.',
|
|
147
|
+
},
|
|
148
|
+
// Scale Tier - $1,499/month
|
|
149
|
+
{
|
|
150
|
+
cta: 'Subscribe',
|
|
151
|
+
ctaHref: `${process.env.NEXT_PUBLIC_APPS_APP_ENDPOINT || 'https://app.genfeed.ai'}/sign-up?plan=scale`,
|
|
152
|
+
description: 'For agencies managing multiple brands',
|
|
153
|
+
features: [
|
|
154
|
+
'15 min video/month',
|
|
155
|
+
'2,000 images/month',
|
|
156
|
+
'200 min voice/month',
|
|
157
|
+
'10 team seats',
|
|
158
|
+
'5 brand kits',
|
|
159
|
+
'All AI models (your choice)',
|
|
160
|
+
'Priority support (24hr)',
|
|
161
|
+
'Read-only API access',
|
|
162
|
+
'Advanced analytics',
|
|
163
|
+
'Custom domains',
|
|
164
|
+
],
|
|
165
|
+
interval: 'month',
|
|
166
|
+
label: 'Scale',
|
|
167
|
+
outputs: {
|
|
168
|
+
images: 2000,
|
|
169
|
+
videoMinutes: 15,
|
|
170
|
+
voiceMinutes: 200,
|
|
171
|
+
},
|
|
172
|
+
price: 1499,
|
|
173
|
+
stripePriceId: STRIPE_PRICE_IDS.scale,
|
|
174
|
+
target: 'Agencies managing multiple brands (5-15 people)',
|
|
175
|
+
type: 'subscription',
|
|
176
|
+
valueProposition: 'Run 5 client accounts with enough output for daily content across all channels.',
|
|
177
|
+
},
|
|
178
|
+
// Enterprise Tier - $4,999/month
|
|
179
|
+
{
|
|
180
|
+
cta: 'Book a Call',
|
|
181
|
+
ctaHref: CALENDLY_URL,
|
|
182
|
+
description: 'For studios and large teams',
|
|
183
|
+
features: [
|
|
184
|
+
'Unlimited video',
|
|
185
|
+
'Unlimited images',
|
|
186
|
+
'Unlimited voice',
|
|
187
|
+
'Unlimited team seats',
|
|
188
|
+
'Unlimited brand kits',
|
|
189
|
+
'Full read/write API access',
|
|
190
|
+
'White-label (custom domain + branding)',
|
|
191
|
+
'Dedicated Slack support',
|
|
192
|
+
'SSO & team management',
|
|
193
|
+
'Dedicated account manager',
|
|
194
|
+
'SLA 99.9% uptime',
|
|
195
|
+
],
|
|
196
|
+
interval: 'month',
|
|
197
|
+
label: 'Enterprise',
|
|
198
|
+
outputs: null, // Unlimited
|
|
199
|
+
price: 4999,
|
|
200
|
+
stripePriceId: STRIPE_PRICE_IDS.enterprise,
|
|
201
|
+
target: 'Studios, white-label partners, large teams',
|
|
202
|
+
type: 'enterprise',
|
|
203
|
+
valueProposition: 'Your own AI content studio, fully managed.',
|
|
204
|
+
},
|
|
205
|
+
];
|
|
206
|
+
/**
|
|
207
|
+
* Get plan by label
|
|
208
|
+
*/
|
|
209
|
+
export function getPlanByLabel(label) {
|
|
210
|
+
return websitePlans.find((plan) => plan.label.toLowerCase() === label.toLowerCase());
|
|
211
|
+
}
|
|
212
|
+
/**
|
|
213
|
+
* Get Pro tier plan
|
|
214
|
+
*/
|
|
215
|
+
export function getProPlan() {
|
|
216
|
+
return websitePlans.find((plan) => plan.label === 'Pro');
|
|
217
|
+
}
|
|
218
|
+
/**
|
|
219
|
+
* Get Scale tier plan
|
|
220
|
+
*/
|
|
221
|
+
export function getScalePlan() {
|
|
222
|
+
return websitePlans.find((plan) => plan.label === 'Scale');
|
|
223
|
+
}
|
|
224
|
+
/**
|
|
225
|
+
* Get Enterprise tier plan
|
|
226
|
+
*/
|
|
227
|
+
export function getEnterprisePlan() {
|
|
228
|
+
return websitePlans.find((plan) => plan.label === 'Enterprise');
|
|
229
|
+
}
|
|
230
|
+
/**
|
|
231
|
+
* Format price for display
|
|
232
|
+
*/
|
|
233
|
+
export function formatPrice(price) {
|
|
234
|
+
if (price === null) {
|
|
235
|
+
return 'Contact Sales';
|
|
236
|
+
}
|
|
237
|
+
if (price === 0) {
|
|
238
|
+
return 'Free';
|
|
239
|
+
}
|
|
240
|
+
return `$${price.toLocaleString()}`;
|
|
241
|
+
}
|
|
242
|
+
/**
|
|
243
|
+
* Format outputs for display
|
|
244
|
+
*/
|
|
245
|
+
export function formatOutputs(outputs) {
|
|
246
|
+
if (!outputs) {
|
|
247
|
+
return null;
|
|
248
|
+
}
|
|
249
|
+
const parts = [];
|
|
250
|
+
if (outputs.videoMinutes) {
|
|
251
|
+
parts.push(`${outputs.videoMinutes} min video`);
|
|
252
|
+
}
|
|
253
|
+
if (outputs.images) {
|
|
254
|
+
parts.push(`${outputs.images.toLocaleString()} images`);
|
|
255
|
+
}
|
|
256
|
+
if (outputs.voiceMinutes) {
|
|
257
|
+
parts.push(`${outputs.voiceMinutes} min voice`);
|
|
258
|
+
}
|
|
259
|
+
return parts.join(' \u00b7 ');
|
|
260
|
+
}
|
|
261
|
+
/**
|
|
262
|
+
* Creator Tier - $50/month (UNLISTED - invite only)
|
|
263
|
+
*
|
|
264
|
+
* This is a secret offering for individual content creators.
|
|
265
|
+
* NOT displayed on the website or pricing page.
|
|
266
|
+
* Only accessible via direct link or invite.
|
|
267
|
+
*/
|
|
268
|
+
export const creatorPlan = {
|
|
269
|
+
cta: 'Subscribe',
|
|
270
|
+
ctaHref: '/checkout/creator',
|
|
271
|
+
description: 'For individual content creators',
|
|
272
|
+
features: [
|
|
273
|
+
'1 min video/month',
|
|
274
|
+
'50 images/month',
|
|
275
|
+
'15 min voice/month',
|
|
276
|
+
'1 team seat',
|
|
277
|
+
'1 brand kit',
|
|
278
|
+
'Premium AI models (auto-selected)',
|
|
279
|
+
'Email support',
|
|
280
|
+
],
|
|
281
|
+
interval: 'month',
|
|
282
|
+
label: 'Creator',
|
|
283
|
+
outputs: {
|
|
284
|
+
images: 50,
|
|
285
|
+
videoMinutes: 1,
|
|
286
|
+
voiceMinutes: 15,
|
|
287
|
+
},
|
|
288
|
+
price: 50,
|
|
289
|
+
stripePriceId: STRIPE_PRICE_IDS.creator,
|
|
290
|
+
target: 'Individual content creators',
|
|
291
|
+
type: 'subscription',
|
|
292
|
+
valueProposition: '5 studio-quality AI videos per month for less than a coffee a day.',
|
|
293
|
+
};
|
|
294
|
+
/**
|
|
295
|
+
* Get Creator tier plan (unlisted)
|
|
296
|
+
*/
|
|
297
|
+
export function getCreatorPlan() {
|
|
298
|
+
return creatorPlan;
|
|
299
|
+
}
|
|
300
|
+
/**
|
|
301
|
+
* Dedicated Server plan - Custom pricing for open-source models on dedicated infrastructure
|
|
302
|
+
*/
|
|
303
|
+
export const dedicatedServerPlan = {
|
|
304
|
+
cta: 'Book a Call',
|
|
305
|
+
ctaHref: CALENDLY_URL,
|
|
306
|
+
description: 'Your own AI infrastructure with managed content creation',
|
|
307
|
+
features: [
|
|
308
|
+
'Dedicated server infrastructure',
|
|
309
|
+
'Run any open-source model (Llama, Mistral, SD, etc.)',
|
|
310
|
+
'No API rate limits or quotas',
|
|
311
|
+
'Managed content creation service',
|
|
312
|
+
'Full control over model selection',
|
|
313
|
+
'Cost-based pricing (server costs only)',
|
|
314
|
+
],
|
|
315
|
+
interval: 'month',
|
|
316
|
+
label: 'Dedicated',
|
|
317
|
+
outputs: null,
|
|
318
|
+
price: null,
|
|
319
|
+
target: 'Studios and brands wanting unlimited open-source AI',
|
|
320
|
+
type: 'enterprise',
|
|
321
|
+
valueProposition: 'Run unlimited open-source models on your own dedicated server.',
|
|
322
|
+
};
|
|
323
|
+
export const PAYG_CREDIT_PACKS = [
|
|
324
|
+
{ bonus: null, credits: 9_900, label: 'Starter' },
|
|
325
|
+
{ bonus: null, credits: 49_900, label: 'Creator' },
|
|
326
|
+
{ bonus: 10_000, credits: 99_900, label: 'Pro' },
|
|
327
|
+
{ bonus: 37_500, credits: 249_900, label: 'Business' },
|
|
328
|
+
{ bonus: 100_000, credits: 499_900, label: 'Scale' },
|
|
329
|
+
];
|
|
330
|
+
/** Subset of credit packs shown on public pages (website, home). Settings/checkout use full list. */
|
|
331
|
+
export const WEBSITE_CREDIT_PACKS = PAYG_CREDIT_PACKS.filter((p) => ['Starter', 'Pro', 'Scale'].includes(p.label));
|
|
332
|
+
/**
|
|
333
|
+
* Get total credits for a pack (base + bonus).
|
|
334
|
+
*/
|
|
335
|
+
export function creditPackTotalCredits(pack) {
|
|
336
|
+
return pack.credits + (pack.bonus ?? 0);
|
|
337
|
+
}
|
|
338
|
+
/**
|
|
339
|
+
* Convert credits to approximate output estimates.
|
|
340
|
+
* Uses INTERNAL_CREDIT_COSTS for calculations.
|
|
341
|
+
*/
|
|
342
|
+
export function creditsToOutputEstimate(credits) {
|
|
343
|
+
const rawImages = credits / INTERNAL_CREDIT_COSTS.image;
|
|
344
|
+
const rawVideoMin = credits / INTERNAL_CREDIT_COSTS.videoPerSecond / 60;
|
|
345
|
+
const rawVoiceMin = credits / INTERNAL_CREDIT_COSTS.voicePerMinute;
|
|
346
|
+
return {
|
|
347
|
+
images: Math.round(rawImages / 100) * 100,
|
|
348
|
+
videoMinutes: Math.round(rawVideoMin),
|
|
349
|
+
voiceMinutes: Math.round(rawVoiceMin / 100) * 100,
|
|
350
|
+
};
|
|
351
|
+
}
|
|
352
|
+
/**
|
|
353
|
+
* Calculate the dollar price for a credit pack.
|
|
354
|
+
* Exchange rate: 1 credit = $0.01 (bonus credits are free).
|
|
355
|
+
*/
|
|
356
|
+
export function creditPackPrice(pack) {
|
|
357
|
+
return pack.credits * 0.01;
|
|
358
|
+
}
|
|
359
|
+
/**
|
|
360
|
+
* Done-For-You content service offering
|
|
361
|
+
* Full-service content creation retainer
|
|
362
|
+
*/
|
|
363
|
+
export const contentServiceOffering = {
|
|
364
|
+
ctaHref: CALENDLY_URL,
|
|
365
|
+
description: 'We handle everything — strategy, production, publishing. You review and approve.',
|
|
366
|
+
includes: [
|
|
367
|
+
'Dedicated content strategist',
|
|
368
|
+
'Unlimited video production',
|
|
369
|
+
'Unlimited image generation',
|
|
370
|
+
'AI voice production',
|
|
371
|
+
'Social media copywriting',
|
|
372
|
+
'Multi-platform scheduling',
|
|
373
|
+
'Brand kit management',
|
|
374
|
+
'Monthly content calendar',
|
|
375
|
+
'Performance reporting',
|
|
376
|
+
'Unlimited revisions',
|
|
377
|
+
],
|
|
378
|
+
name: 'Done-For-You Content',
|
|
379
|
+
process: [
|
|
380
|
+
{
|
|
381
|
+
description: 'We learn your brand, audience, and goals in a 30-minute call.',
|
|
382
|
+
step: 'Discovery Call',
|
|
383
|
+
},
|
|
384
|
+
{
|
|
385
|
+
description: 'We build your monthly content calendar with topics, formats, and channels.',
|
|
386
|
+
step: 'Strategy & Calendar',
|
|
387
|
+
},
|
|
388
|
+
{
|
|
389
|
+
description: 'Our team creates all content — videos, images, copy — using Genfeed AI.',
|
|
390
|
+
step: 'Production',
|
|
391
|
+
},
|
|
392
|
+
{
|
|
393
|
+
description: 'You review, request changes, and we publish across all platforms.',
|
|
394
|
+
step: 'Review & Publish',
|
|
395
|
+
},
|
|
396
|
+
],
|
|
397
|
+
};
|
|
398
|
+
/**
|
|
399
|
+
* Setup & Training packages
|
|
400
|
+
* One-time onboarding and training sessions
|
|
401
|
+
*/
|
|
402
|
+
export const TRAINING_PACKAGES = [
|
|
403
|
+
{
|
|
404
|
+
ctaHref: CALENDLY_URL,
|
|
405
|
+
description: 'Get up and running in under an hour.',
|
|
406
|
+
includes: [
|
|
407
|
+
'Workspace configuration',
|
|
408
|
+
'1 brand kit setup',
|
|
409
|
+
'1-hour platform overview',
|
|
410
|
+
'Publishing setup walkthrough',
|
|
411
|
+
'Email support for 7 days',
|
|
412
|
+
],
|
|
413
|
+
name: 'Quick Start',
|
|
414
|
+
priceLabel: '$299',
|
|
415
|
+
},
|
|
416
|
+
{
|
|
417
|
+
ctaHref: CALENDLY_URL,
|
|
418
|
+
description: 'Custom deep-dive for advanced use cases.',
|
|
419
|
+
includes: [
|
|
420
|
+
'Custom agenda based on your needs',
|
|
421
|
+
'2-hour live workshop',
|
|
422
|
+
'Session recording',
|
|
423
|
+
'Q&A follow-up',
|
|
424
|
+
'Email support for 14 days',
|
|
425
|
+
],
|
|
426
|
+
name: 'Training Sessions',
|
|
427
|
+
priceLabel: '$499',
|
|
428
|
+
},
|
|
429
|
+
{
|
|
430
|
+
ctaHref: CALENDLY_URL,
|
|
431
|
+
description: 'Full onboarding for teams ready to scale.',
|
|
432
|
+
includes: [
|
|
433
|
+
'Up to 5 brand kits',
|
|
434
|
+
'Full team training session',
|
|
435
|
+
'Content strategy session',
|
|
436
|
+
'Integration setup (socials, CMS)',
|
|
437
|
+
'30-day email support',
|
|
438
|
+
],
|
|
439
|
+
name: 'Full Onboarding',
|
|
440
|
+
priceLabel: '$999',
|
|
441
|
+
},
|
|
442
|
+
];
|
|
443
|
+
//# sourceMappingURL=pricing.helper.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pricing.helper.js","sourceRoot":"","sources":["../../../src/business/pricing/pricing.helper.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { QualityTier, SubscriptionTier } from '@genfeedai/enums';
|
|
2
|
+
/**
|
|
3
|
+
* Maps subscription tiers to their allowed quality tiers.
|
|
4
|
+
* Higher tiers get access to more quality options.
|
|
5
|
+
*/
|
|
6
|
+
export declare const TIER_QUALITY_ACCESS: Record<SubscriptionTier, QualityTier[]>;
|
|
7
|
+
/**
|
|
8
|
+
* Get all allowed quality tiers for a subscription tier.
|
|
9
|
+
* Returns BASIC only for unknown tiers.
|
|
10
|
+
*/
|
|
11
|
+
export declare function getQualityTiersForSubscription(tier: SubscriptionTier): QualityTier[];
|
|
12
|
+
/**
|
|
13
|
+
* Check if a subscription tier has access to a specific quality tier.
|
|
14
|
+
*/
|
|
15
|
+
export declare function hasQualityAccess(subscriptionTier: SubscriptionTier, qualityTier: QualityTier): boolean;
|
|
16
|
+
//# sourceMappingURL=tier-models.helper.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tier-models.helper.d.ts","sourceRoot":"","sources":["../../../src/business/tier-models/tier-models.helper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEjE;;;GAGG;AACH,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,gBAAgB,EAAE,WAAW,EAAE,CAqBvE,CAAC;AAEF;;;GAGG;AACH,wBAAgB,8BAA8B,CAC5C,IAAI,EAAE,gBAAgB,GACrB,WAAW,EAAE,CAEf;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,gBAAgB,EAAE,gBAAgB,EAClC,WAAW,EAAE,WAAW,GACvB,OAAO,CAGT"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { QualityTier, SubscriptionTier } from '@genfeedai/enums';
|
|
2
|
+
/**
|
|
3
|
+
* Maps subscription tiers to their allowed quality tiers.
|
|
4
|
+
* Higher tiers get access to more quality options.
|
|
5
|
+
*/
|
|
6
|
+
export const TIER_QUALITY_ACCESS = {
|
|
7
|
+
[SubscriptionTier.FREE]: [QualityTier.BASIC],
|
|
8
|
+
[SubscriptionTier.BYOK]: [QualityTier.BASIC],
|
|
9
|
+
[SubscriptionTier.CREATOR]: [QualityTier.BASIC, QualityTier.STANDARD],
|
|
10
|
+
[SubscriptionTier.PRO]: [
|
|
11
|
+
QualityTier.BASIC,
|
|
12
|
+
QualityTier.STANDARD,
|
|
13
|
+
QualityTier.HIGH,
|
|
14
|
+
],
|
|
15
|
+
[SubscriptionTier.SCALE]: [
|
|
16
|
+
QualityTier.BASIC,
|
|
17
|
+
QualityTier.STANDARD,
|
|
18
|
+
QualityTier.HIGH,
|
|
19
|
+
QualityTier.ULTRA,
|
|
20
|
+
],
|
|
21
|
+
[SubscriptionTier.ENTERPRISE]: [
|
|
22
|
+
QualityTier.BASIC,
|
|
23
|
+
QualityTier.STANDARD,
|
|
24
|
+
QualityTier.HIGH,
|
|
25
|
+
QualityTier.ULTRA,
|
|
26
|
+
],
|
|
27
|
+
};
|
|
28
|
+
/**
|
|
29
|
+
* Get all allowed quality tiers for a subscription tier.
|
|
30
|
+
* Returns BASIC only for unknown tiers.
|
|
31
|
+
*/
|
|
32
|
+
export function getQualityTiersForSubscription(tier) {
|
|
33
|
+
return TIER_QUALITY_ACCESS[tier] ?? [QualityTier.BASIC];
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Check if a subscription tier has access to a specific quality tier.
|
|
37
|
+
*/
|
|
38
|
+
export function hasQualityAccess(subscriptionTier, qualityTier) {
|
|
39
|
+
const allowed = TIER_QUALITY_ACCESS[subscriptionTier];
|
|
40
|
+
return allowed ? allowed.includes(qualityTier) : false;
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=tier-models.helper.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tier-models.helper.js","sourceRoot":"","sources":["../../../src/business/tier-models/tier-models.helper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEjE;;;GAGG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAA4C;IAC1E,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC;IAC5C,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC;IAC5C,CAAC,gBAAgB,CAAC,OAAO,CAAC,EAAE,CAAC,WAAW,CAAC,KAAK,EAAE,WAAW,CAAC,QAAQ,CAAC;IACrE,CAAC,gBAAgB,CAAC,GAAG,CAAC,EAAE;QACtB,WAAW,CAAC,KAAK;QACjB,WAAW,CAAC,QAAQ;QACpB,WAAW,CAAC,IAAI;KACjB;IACD,CAAC,gBAAgB,CAAC,KAAK,CAAC,EAAE;QACxB,WAAW,CAAC,KAAK;QACjB,WAAW,CAAC,QAAQ;QACpB,WAAW,CAAC,IAAI;QAChB,WAAW,CAAC,KAAK;KAClB;IACD,CAAC,gBAAgB,CAAC,UAAU,CAAC,EAAE;QAC7B,WAAW,CAAC,KAAK;QACjB,WAAW,CAAC,QAAQ;QACpB,WAAW,CAAC,IAAI;QAChB,WAAW,CAAC,KAAK;KAClB;CACF,CAAC;AAEF;;;GAGG;AACH,MAAM,UAAU,8BAA8B,CAC5C,IAAsB;IAEtB,OAAO,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;AAC1D,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAC9B,gBAAkC,EAClC,WAAwB;IAExB,MAAM,OAAO,GAAG,mBAAmB,CAAC,gBAAgB,CAAC,CAAC;IACtD,OAAO,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AACzD,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deserializer.helper.d.ts","sourceRoot":"","sources":["../src/deserializer.helper.ts"],"names":[],"mappings":"AACA,OAAO,EACL,eAAe,EACf,qBAAqB,EACrB,KAAK,eAAe,EACpB,KAAK,eAAe,GACrB,MAAM,yBAAyB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deserializer.helper.js","sourceRoot":"","sources":["../src/deserializer.helper.ts"],"names":[],"mappings":"AAAA,4DAA4D;AAC5D,OAAO,EACL,eAAe,EACf,qBAAqB,GAGtB,MAAM,yBAAyB,CAAC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export * from '@helpers/aspect-ratio.helper';
|
|
2
|
+
export * from '@helpers/business/pricing/pricing.helper';
|
|
3
|
+
export * from '@helpers/business/tier-models/tier-models.helper';
|
|
4
|
+
export * from '@helpers/deserializer.helper';
|
|
5
|
+
export * from '@helpers/model-capability.helper';
|
|
6
|
+
export * from '@helpers/quality-routing.helper';
|
|
7
|
+
export * from '@helpers/serializer.helper';
|
|
8
|
+
export * from '@helpers/social-url.helper';
|
|
9
|
+
export * from '@helpers/video-duration.helper';
|
|
10
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,8BAA8B,CAAC;AAC7C,cAAc,0CAA0C,CAAC;AACzD,cAAc,kDAAkD,CAAC;AACjE,cAAc,8BAA8B,CAAC;AAC7C,cAAc,kCAAkC,CAAC;AACjD,cAAc,iCAAiC,CAAC;AAChD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,gCAAgC,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export * from '@helpers/aspect-ratio.helper';
|
|
2
|
+
export * from '@helpers/business/pricing/pricing.helper';
|
|
3
|
+
export * from '@helpers/business/tier-models/tier-models.helper';
|
|
4
|
+
export * from '@helpers/deserializer.helper';
|
|
5
|
+
export * from '@helpers/model-capability.helper';
|
|
6
|
+
export * from '@helpers/quality-routing.helper';
|
|
7
|
+
export * from '@helpers/serializer.helper';
|
|
8
|
+
export * from '@helpers/social-url.helper';
|
|
9
|
+
export * from '@helpers/video-duration.helper';
|
|
10
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,8BAA8B,CAAC;AAC7C,cAAc,0CAA0C,CAAC;AACzD,cAAc,kDAAkD,CAAC;AACjE,cAAc,8BAA8B,CAAC;AAC7C,cAAc,kCAAkC,CAAC;AACjD,cAAc,iCAAiC,CAAC;AAChD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,gCAAgC,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { type ModelOutputCapability } from '@genfeedai/constants';
|
|
2
|
+
import type { IModel } from '@genfeedai/interfaces';
|
|
3
|
+
/**
|
|
4
|
+
* Build a ModelOutputCapability from DB fields on the IModel document.
|
|
5
|
+
* Returns null if the model has no capability fields populated (maxOutputs is undefined).
|
|
6
|
+
*/
|
|
7
|
+
export declare function getModelCapabilityFromDoc(model: IModel): ModelOutputCapability | null;
|
|
8
|
+
/**
|
|
9
|
+
* Get capability from DB fields first, falling back to the static constant.
|
|
10
|
+
*/
|
|
11
|
+
export declare function getModelCapability(model: IModel): ModelOutputCapability | null;
|
|
12
|
+
/**
|
|
13
|
+
* Get capability by model key string. If an IModel document is provided,
|
|
14
|
+
* uses DB fields with constant fallback. Otherwise looks up the static constant only.
|
|
15
|
+
*/
|
|
16
|
+
export declare function getModelCapabilityByKey(modelKey: string, model?: IModel): ModelOutputCapability | null;
|
|
17
|
+
//# sourceMappingURL=model-capability.helper.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model-capability.helper.d.ts","sourceRoot":"","sources":["../src/model-capability.helper.ts"],"names":[],"mappings":"AAAA,OAAO,EAML,KAAK,qBAAqB,EAO3B,MAAM,sBAAsB,CAAC;AAE9B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AA2KpD;;;GAGG;AACH,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,MAAM,GACZ,qBAAqB,GAAG,IAAI,CAY9B;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,MAAM,GACZ,qBAAqB,GAAG,IAAI,CAM9B;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,MAAM,EAChB,KAAK,CAAC,EAAE,MAAM,GACb,qBAAqB,GAAG,IAAI,CAM9B"}
|