@org.ai/examples 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (40) hide show
  1. package/.turbo/turbo-build.log +4 -0
  2. package/LICENSE +21 -0
  3. package/README.md +147 -0
  4. package/api-business/index.ts +1179 -0
  5. package/directory/index.ts +1118 -0
  6. package/dist/api-business/index.d.ts +221 -0
  7. package/dist/api-business/index.d.ts.map +1 -0
  8. package/dist/api-business/index.js +1132 -0
  9. package/dist/api-business/index.js.map +1 -0
  10. package/dist/directory/index.d.ts +202 -0
  11. package/dist/directory/index.d.ts.map +1 -0
  12. package/dist/directory/index.js +1073 -0
  13. package/dist/directory/index.js.map +1 -0
  14. package/dist/index.d.ts +75 -0
  15. package/dist/index.d.ts.map +1 -0
  16. package/dist/index.js +127 -0
  17. package/dist/index.js.map +1 -0
  18. package/dist/marketplace/index.d.ts +242 -0
  19. package/dist/marketplace/index.d.ts.map +1 -0
  20. package/dist/marketplace/index.js +1249 -0
  21. package/dist/marketplace/index.js.map +1 -0
  22. package/dist/saas/index.d.ts +151 -0
  23. package/dist/saas/index.d.ts.map +1 -0
  24. package/dist/saas/index.js +1142 -0
  25. package/dist/saas/index.js.map +1 -0
  26. package/dist/startup-studio/index.d.ts +285 -0
  27. package/dist/startup-studio/index.d.ts.map +1 -0
  28. package/dist/startup-studio/index.js +1252 -0
  29. package/dist/startup-studio/index.js.map +1 -0
  30. package/dist/vc-firm/index.d.ts +248 -0
  31. package/dist/vc-firm/index.d.ts.map +1 -0
  32. package/dist/vc-firm/index.js +1335 -0
  33. package/dist/vc-firm/index.js.map +1 -0
  34. package/index.ts +151 -0
  35. package/marketplace/index.ts +1295 -0
  36. package/package.json +58 -0
  37. package/saas/index.ts +1188 -0
  38. package/startup-studio/index.ts +1324 -0
  39. package/tsconfig.json +12 -0
  40. package/vc-firm/index.ts +1430 -0
@@ -0,0 +1,1118 @@
1
+ /**
2
+ * Directory Business Example
3
+ *
4
+ * A complete example of a directory/listing business modeled using primitives.org.ai
5
+ * Think: ProductHunt, Crunchbase, G2, Capterra, Yellow Pages, Yelp for B2B
6
+ *
7
+ * @example TechDirectory - A curated directory of SaaS tools
8
+ * @packageDocumentation
9
+ */
10
+
11
+ /**
12
+ * NOTE: These examples demonstrate the DESIRED API shape for business-as-code.
13
+ * Some types may not exist yet in the actual package. The examples serve as
14
+ * documentation and specification for the ideal primitives API.
15
+ */
16
+
17
+ // Use any for flexibility - these examples define the ideal API shape
18
+ const Business = (def: any) => def
19
+ const Product = (def: any) => def
20
+ const Service = (def: any) => def
21
+ const Goals = (defs: any[]) => defs
22
+ const Vision = (def: any) => def
23
+ const kpis = (defs: any[]) => defs
24
+ const okrs = (defs: any[]) => defs
25
+ const financials = (def: any) => def
26
+ const Process = (def: any) => def
27
+ const Workflow = (def: any) => def
28
+ const createBusinessRole = (def: any) => def
29
+
30
+ // Re-export Organization type placeholder
31
+ export interface Organization {
32
+ id: string
33
+ name: string
34
+ settings?: any
35
+ departments?: any[]
36
+ teams?: any[]
37
+ roles?: any[]
38
+ approvalChains?: any[]
39
+ routingRules?: any[]
40
+ }
41
+
42
+ // $ helper placeholder
43
+ const $ = {
44
+ format: (n: number) => `$${n.toLocaleString()}`,
45
+ growth: (current: number, previous: number) => ((current - previous) / previous * 100).toFixed(1),
46
+ margin: (revenue: number, cost: number) => ((revenue - cost) / revenue * 100).toFixed(1),
47
+ }
48
+
49
+ // =============================================================================
50
+ // 1. BUSINESS DEFINITION
51
+ // =============================================================================
52
+
53
+ /**
54
+ * TechDirectory - Curated SaaS Tools Directory
55
+ */
56
+ export const TechDirectoryBusiness = Business({
57
+ name: 'TechDirectory Inc.',
58
+ mission: 'Help businesses discover and compare the best software tools',
59
+ values: ['Curation Quality', 'User Trust', 'Vendor Fairness', 'Community'],
60
+ industry: 'Media / Information Services',
61
+ founded: new Date('2020-03-15'),
62
+ stage: 'growth',
63
+ structure: {
64
+ departments: [
65
+ {
66
+ name: 'Product & Engineering',
67
+ headcount: 18,
68
+ budget: 2200000,
69
+ teams: [
70
+ { name: 'Platform', headcount: 6, focus: 'Core directory platform' },
71
+ { name: 'Search & Discovery', headcount: 4, focus: 'Search, recommendations' },
72
+ { name: 'Data', headcount: 4, focus: 'Data pipelines, enrichment' },
73
+ { name: 'Growth', headcount: 4, focus: 'Acquisition, engagement' },
74
+ ],
75
+ },
76
+ {
77
+ name: 'Content & Curation',
78
+ headcount: 12,
79
+ budget: 900000,
80
+ teams: [
81
+ { name: 'Editorial', headcount: 4, focus: 'Reviews, guides, comparisons' },
82
+ { name: 'Curation', headcount: 4, focus: 'Listing quality, verification' },
83
+ { name: 'Community', headcount: 4, focus: 'User reviews, Q&A' },
84
+ ],
85
+ },
86
+ {
87
+ name: 'Sales & Partnerships',
88
+ headcount: 10,
89
+ budget: 1200000,
90
+ teams: [
91
+ { name: 'Vendor Sales', headcount: 5, focus: 'Premium listings' },
92
+ { name: 'Partnerships', headcount: 3, focus: 'Affiliate, integrations' },
93
+ { name: 'Account Management', headcount: 2, focus: 'Vendor success' },
94
+ ],
95
+ },
96
+ {
97
+ name: 'Marketing',
98
+ headcount: 6,
99
+ budget: 800000,
100
+ teams: [
101
+ { name: 'SEO & Content', headcount: 3 },
102
+ { name: 'Demand Gen', headcount: 3 },
103
+ ],
104
+ },
105
+ ],
106
+ },
107
+ })
108
+
109
+ // =============================================================================
110
+ // 2. VISION & GOALS
111
+ // =============================================================================
112
+
113
+ export const TechDirectoryVision = Vision({
114
+ statement: 'Be the most trusted source for software discovery worldwide',
115
+ timeHorizon: '2027',
116
+ pillars: [
117
+ 'Content Quality',
118
+ 'User Trust',
119
+ 'Vendor Ecosystem',
120
+ 'Data Excellence',
121
+ ],
122
+ successIndicators: [
123
+ { name: 'Monthly Visitors', target: 10000000 },
124
+ { name: 'Listed Tools', target: 50000 },
125
+ { name: 'Verified Reviews', target: 500000 },
126
+ { name: 'Vendor NPS', target: 50 },
127
+ ],
128
+ })
129
+
130
+ export const TechDirectoryGoals = Goals([
131
+ {
132
+ name: 'Reach 3M Monthly Visitors',
133
+ category: 'growth',
134
+ status: 'in-progress',
135
+ progress: 70,
136
+ dueDate: new Date('2024-12-31'),
137
+ owner: 'VP Marketing',
138
+ },
139
+ {
140
+ name: 'Launch AI-Powered Recommendations',
141
+ category: 'product',
142
+ status: 'in-progress',
143
+ progress: 45,
144
+ dueDate: new Date('2024-06-30'),
145
+ owner: 'VP Product',
146
+ },
147
+ {
148
+ name: 'Expand to 25K Listed Tools',
149
+ category: 'content',
150
+ status: 'in-progress',
151
+ progress: 60,
152
+ dueDate: new Date('2024-09-30'),
153
+ owner: 'Content Lead',
154
+ },
155
+ {
156
+ name: '1000 Paying Vendors',
157
+ category: 'revenue',
158
+ status: 'in-progress',
159
+ progress: 65,
160
+ dueDate: new Date('2024-12-31'),
161
+ owner: 'VP Sales',
162
+ },
163
+ {
164
+ name: '$5M ARR',
165
+ category: 'financial',
166
+ status: 'in-progress',
167
+ progress: 55,
168
+ dueDate: new Date('2024-12-31'),
169
+ owner: 'CEO',
170
+ },
171
+ ])
172
+
173
+ // =============================================================================
174
+ // 3. PRODUCTS & SERVICES
175
+ // =============================================================================
176
+
177
+ export const DirectoryPlatform = Product({
178
+ name: 'TechDirectory Platform',
179
+ description: 'The core directory platform for discovering software tools',
180
+ pricingModel: 'freemium',
181
+ features: [
182
+ 'Tool search & discovery',
183
+ 'Category browsing',
184
+ 'Comparison tables',
185
+ 'User reviews & ratings',
186
+ 'Tool profiles',
187
+ 'Alternatives finder',
188
+ 'Stack builder',
189
+ ],
190
+ roadmap: [
191
+ { name: 'AI Recommendations', status: 'in-progress', priority: 'high', targetDate: new Date('2024-Q2') },
192
+ { name: 'Integration Directory', status: 'planned', priority: 'medium', targetDate: new Date('2024-Q3') },
193
+ { name: 'Pricing Intelligence', status: 'planned', priority: 'high', targetDate: new Date('2024-Q4') },
194
+ ],
195
+ })
196
+
197
+ /**
198
+ * Vendor Products (B2B Revenue)
199
+ */
200
+ export const VendorProducts = {
201
+ basicListing: Product({
202
+ name: 'Basic Listing',
203
+ description: 'Free listing with verified profile',
204
+ pricingModel: 'free',
205
+ features: [
206
+ 'Basic profile',
207
+ 'Logo & description',
208
+ 'Category listing',
209
+ 'User reviews',
210
+ 'Basic analytics',
211
+ ],
212
+ }),
213
+ premiumListing: Product({
214
+ name: 'Premium Listing',
215
+ description: 'Enhanced visibility and features',
216
+ pricingModel: 'subscription',
217
+ price: 299, // /month
218
+ features: [
219
+ 'Everything in Basic',
220
+ 'Featured placement',
221
+ 'Rich media gallery',
222
+ 'Lead capture form',
223
+ 'Review response',
224
+ 'Competitor insights',
225
+ 'Advanced analytics',
226
+ ],
227
+ }),
228
+ sponsoredPlacement: Product({
229
+ name: 'Sponsored Placement',
230
+ description: 'Top visibility in search and categories',
231
+ pricingModel: 'usage-based',
232
+ price: 5, // per click
233
+ features: [
234
+ 'Category top placement',
235
+ 'Search result boost',
236
+ 'Comparison table feature',
237
+ 'Homepage showcase',
238
+ ],
239
+ }),
240
+ enterpriseProfile: Product({
241
+ name: 'Enterprise Profile',
242
+ description: 'Full-featured vendor presence',
243
+ pricingModel: 'subscription',
244
+ price: 999, // /month
245
+ features: [
246
+ 'Everything in Premium',
247
+ 'Dedicated landing page',
248
+ 'Case study publishing',
249
+ 'Integration showcase',
250
+ 'Custom badges',
251
+ 'API access',
252
+ 'Dedicated support',
253
+ ],
254
+ }),
255
+ }
256
+
257
+ /**
258
+ * Affiliate & Lead Services
259
+ */
260
+ export const AffiliateServices = Service({
261
+ name: 'Affiliate Partnerships',
262
+ description: 'Revenue share on qualified leads',
263
+ pricingModel: 'performance-based',
264
+ deliverables: [
265
+ 'Click tracking',
266
+ 'Conversion attribution',
267
+ 'Monthly reporting',
268
+ 'Dedicated affiliate link',
269
+ ],
270
+ })
271
+
272
+ // =============================================================================
273
+ // 4. ORGANIZATION & ROLES
274
+ // =============================================================================
275
+
276
+ export const TechDirectoryOrg: Organization = {
277
+ id: 'techdirectory',
278
+ name: 'TechDirectory Inc.',
279
+ settings: {
280
+ timezone: 'America/New_York',
281
+ currency: 'USD',
282
+ fiscalYearStart: 1,
283
+ },
284
+ departments: [
285
+ {
286
+ id: 'content',
287
+ name: 'Content & Curation',
288
+ permissions: {
289
+ listings: ['read', 'write', 'publish', 'feature'],
290
+ reviews: ['read', 'write', 'moderate'],
291
+ content: ['read', 'write', 'publish'],
292
+ },
293
+ teams: [
294
+ {
295
+ id: 'editorial',
296
+ name: 'Editorial',
297
+ positions: [
298
+ { id: 'editor-chief', title: 'Editor in Chief', roleId: 'content-lead', reportsTo: 'ceo' },
299
+ { id: 'senior-editor', title: 'Senior Editor', roleId: 'editor', reportsTo: 'editor-chief' },
300
+ ],
301
+ },
302
+ {
303
+ id: 'curation',
304
+ name: 'Curation',
305
+ positions: [
306
+ { id: 'curation-lead', title: 'Curation Lead', roleId: 'curator', reportsTo: 'editor-chief' },
307
+ { id: 'curator-1', title: 'Curator', roleId: 'curator', reportsTo: 'curation-lead' },
308
+ ],
309
+ },
310
+ ],
311
+ },
312
+ {
313
+ id: 'sales',
314
+ name: 'Sales & Partnerships',
315
+ permissions: {
316
+ vendors: ['read', 'write', 'manage'],
317
+ deals: ['read', 'write', 'negotiate'],
318
+ partnerships: ['read', 'write', 'manage'],
319
+ },
320
+ },
321
+ {
322
+ id: 'engineering',
323
+ name: 'Engineering',
324
+ permissions: {
325
+ code: ['read', 'write', 'deploy'],
326
+ data: ['read', 'write', 'manage'],
327
+ infrastructure: ['read', 'write'],
328
+ },
329
+ },
330
+ ],
331
+ roles: [
332
+ createBusinessRole({
333
+ id: 'content-lead',
334
+ name: 'Content Lead',
335
+ type: 'manager',
336
+ level: 6,
337
+ permissions: {
338
+ listings: ['read', 'write', 'publish', 'feature', 'delete'],
339
+ reviews: ['read', 'write', 'moderate', 'delete'],
340
+ content: ['read', 'write', 'publish'],
341
+ },
342
+ canHandle: ['content-strategy', 'editorial-review', 'quality-control'],
343
+ canApprove: ['listing-publish', 'feature-decision', 'content-removal'],
344
+ }),
345
+ createBusinessRole({
346
+ id: 'editor',
347
+ name: 'Editor',
348
+ type: 'support',
349
+ level: 4,
350
+ permissions: {
351
+ listings: ['read', 'write', 'publish'],
352
+ reviews: ['read', 'write', 'moderate'],
353
+ content: ['read', 'write'],
354
+ },
355
+ canHandle: ['listing-review', 'content-editing', 'comparison-writing'],
356
+ }),
357
+ createBusinessRole({
358
+ id: 'curator',
359
+ name: 'Curator',
360
+ type: 'support',
361
+ level: 3,
362
+ permissions: {
363
+ listings: ['read', 'write'],
364
+ reviews: ['read', 'moderate'],
365
+ },
366
+ canHandle: ['listing-verification', 'data-enrichment', 'categorization'],
367
+ }),
368
+ createBusinessRole({
369
+ id: 'community-mod',
370
+ name: 'Community Moderator',
371
+ type: 'support',
372
+ level: 2,
373
+ workerType: 'hybrid', // AI + human
374
+ permissions: {
375
+ reviews: ['read', 'moderate'],
376
+ comments: ['read', 'moderate'],
377
+ },
378
+ canHandle: ['review-moderation', 'spam-detection', 'community-response'],
379
+ }),
380
+ createBusinessRole({
381
+ id: 'vendor-success',
382
+ name: 'Vendor Success Manager',
383
+ type: 'support',
384
+ level: 4,
385
+ permissions: {
386
+ vendors: ['read', 'write'],
387
+ listings: ['read'],
388
+ analytics: ['read'],
389
+ },
390
+ canHandle: ['vendor-onboarding', 'listing-optimization', 'renewal-management'],
391
+ }),
392
+ createBusinessRole({
393
+ id: 'data-enrichment-bot',
394
+ name: 'Data Enrichment Bot',
395
+ type: 'agent',
396
+ level: 1,
397
+ workerType: 'ai',
398
+ permissions: {
399
+ listings: ['read', 'write'],
400
+ data: ['read', 'write'],
401
+ },
402
+ canHandle: ['data-scraping', 'profile-enrichment', 'pricing-updates'],
403
+ }),
404
+ ],
405
+ routingRules: [
406
+ {
407
+ id: 'new-listing-review',
408
+ taskType: 'listing-review',
409
+ priority: 1,
410
+ assignTo: { roleId: 'curator' },
411
+ },
412
+ {
413
+ id: 'review-moderation',
414
+ taskType: 'review-moderation',
415
+ priority: 1,
416
+ assignTo: { roleId: 'community-mod' },
417
+ },
418
+ {
419
+ id: 'vendor-inquiry',
420
+ taskType: 'vendor-inquiry',
421
+ priority: 2,
422
+ assignTo: { roleId: 'vendor-success' },
423
+ },
424
+ ],
425
+ }
426
+
427
+ // =============================================================================
428
+ // 5. KPIs & METRICS
429
+ // =============================================================================
430
+
431
+ export const TechDirectoryKPIs = kpis([
432
+ // Traffic & Engagement
433
+ {
434
+ name: 'Monthly Unique Visitors',
435
+ category: 'operational',
436
+ target: 3000000,
437
+ current: 2100000,
438
+ frequency: 'monthly',
439
+ owner: 'VP Marketing',
440
+ },
441
+ {
442
+ name: 'Pages per Session',
443
+ category: 'operational',
444
+ target: 4.5,
445
+ current: 3.8,
446
+ frequency: 'weekly',
447
+ owner: 'VP Product',
448
+ },
449
+ {
450
+ name: 'Time on Site',
451
+ category: 'operational',
452
+ target: 5,
453
+ current: 4.2,
454
+ unit: 'minutes',
455
+ frequency: 'weekly',
456
+ owner: 'VP Product',
457
+ },
458
+ {
459
+ name: 'Bounce Rate',
460
+ category: 'operational',
461
+ target: 40,
462
+ current: 48,
463
+ unit: '%',
464
+ frequency: 'weekly',
465
+ owner: 'VP Marketing',
466
+ },
467
+ // Content Metrics
468
+ {
469
+ name: 'Listed Tools',
470
+ category: 'content',
471
+ target: 25000,
472
+ current: 15000,
473
+ frequency: 'monthly',
474
+ owner: 'Content Lead',
475
+ },
476
+ {
477
+ name: 'Verified Reviews',
478
+ category: 'content',
479
+ target: 200000,
480
+ current: 125000,
481
+ frequency: 'monthly',
482
+ owner: 'Community Lead',
483
+ },
484
+ {
485
+ name: 'Data Completeness Score',
486
+ category: 'content',
487
+ target: 90,
488
+ current: 78,
489
+ unit: '%',
490
+ frequency: 'monthly',
491
+ owner: 'Data Lead',
492
+ },
493
+ // Revenue Metrics
494
+ {
495
+ name: 'Paying Vendors',
496
+ category: 'financial',
497
+ target: 1000,
498
+ current: 650,
499
+ frequency: 'monthly',
500
+ owner: 'VP Sales',
501
+ },
502
+ {
503
+ name: 'MRR',
504
+ category: 'financial',
505
+ target: 400000,
506
+ current: 275000,
507
+ unit: 'USD',
508
+ frequency: 'monthly',
509
+ owner: 'CEO',
510
+ },
511
+ {
512
+ name: 'Affiliate Revenue',
513
+ category: 'financial',
514
+ target: 80000,
515
+ current: 55000,
516
+ unit: 'USD',
517
+ frequency: 'monthly',
518
+ owner: 'Partnerships Lead',
519
+ },
520
+ {
521
+ name: 'Vendor Churn Rate',
522
+ category: 'customer',
523
+ target: 3,
524
+ current: 4.5,
525
+ unit: '%',
526
+ frequency: 'monthly',
527
+ owner: 'VP Sales',
528
+ },
529
+ // SEO Metrics
530
+ {
531
+ name: 'Organic Traffic Share',
532
+ category: 'marketing',
533
+ target: 70,
534
+ current: 62,
535
+ unit: '%',
536
+ frequency: 'monthly',
537
+ owner: 'SEO Lead',
538
+ },
539
+ {
540
+ name: 'Ranking Keywords',
541
+ category: 'marketing',
542
+ target: 50000,
543
+ current: 32000,
544
+ frequency: 'monthly',
545
+ owner: 'SEO Lead',
546
+ },
547
+ ])
548
+
549
+ // =============================================================================
550
+ // 6. OKRs
551
+ // =============================================================================
552
+
553
+ export const TechDirectoryOKRs = okrs([
554
+ {
555
+ objective: 'Become the Go-To Resource for Software Discovery',
556
+ owner: 'CEO',
557
+ period: 'Q1 2024',
558
+ keyResults: [
559
+ {
560
+ description: 'Reach 2.5M monthly visitors',
561
+ metric: 'Monthly Visitors',
562
+ targetValue: 2500000,
563
+ currentValue: 2100000,
564
+ },
565
+ {
566
+ description: 'Achieve 4+ pages per session',
567
+ metric: 'Pages per Session',
568
+ targetValue: 4,
569
+ currentValue: 3.8,
570
+ },
571
+ {
572
+ description: 'Grow to 20K listed tools',
573
+ metric: 'Listed Tools',
574
+ targetValue: 20000,
575
+ currentValue: 15000,
576
+ },
577
+ ],
578
+ },
579
+ {
580
+ objective: 'Build Trust Through Quality Content',
581
+ owner: 'Content Lead',
582
+ period: 'Q1 2024',
583
+ keyResults: [
584
+ {
585
+ description: 'Achieve 85% data completeness',
586
+ metric: 'Data Completeness',
587
+ targetValue: 85,
588
+ currentValue: 78,
589
+ unit: '%',
590
+ },
591
+ {
592
+ description: 'Publish 100 in-depth comparisons',
593
+ metric: 'Comparisons Published',
594
+ targetValue: 100,
595
+ currentValue: 45,
596
+ },
597
+ {
598
+ description: 'Verify 50K new reviews',
599
+ metric: 'Verified Reviews',
600
+ targetValue: 50000,
601
+ currentValue: 28000,
602
+ },
603
+ ],
604
+ },
605
+ {
606
+ objective: 'Scale Vendor Revenue',
607
+ owner: 'VP Sales',
608
+ period: 'Q1 2024',
609
+ keyResults: [
610
+ {
611
+ description: 'Reach 800 paying vendors',
612
+ metric: 'Paying Vendors',
613
+ targetValue: 800,
614
+ currentValue: 650,
615
+ },
616
+ {
617
+ description: 'Achieve $350K MRR',
618
+ metric: 'MRR',
619
+ targetValue: 350000,
620
+ currentValue: 275000,
621
+ unit: 'USD',
622
+ },
623
+ {
624
+ description: 'Reduce vendor churn to 3%',
625
+ metric: 'Vendor Churn',
626
+ targetValue: 3,
627
+ currentValue: 4.5,
628
+ unit: '%',
629
+ },
630
+ ],
631
+ },
632
+ {
633
+ objective: 'Dominate Organic Search',
634
+ owner: 'VP Marketing',
635
+ period: 'Q1 2024',
636
+ keyResults: [
637
+ {
638
+ description: 'Rank for 40K keywords',
639
+ metric: 'Ranking Keywords',
640
+ targetValue: 40000,
641
+ currentValue: 32000,
642
+ },
643
+ {
644
+ description: 'Achieve 65% organic traffic share',
645
+ metric: 'Organic Traffic',
646
+ targetValue: 65,
647
+ currentValue: 62,
648
+ unit: '%',
649
+ },
650
+ {
651
+ description: 'Top 3 ranking for 500 key terms',
652
+ metric: 'Top 3 Rankings',
653
+ targetValue: 500,
654
+ currentValue: 320,
655
+ },
656
+ ],
657
+ },
658
+ ])
659
+
660
+ // =============================================================================
661
+ // 7. PROCESSES
662
+ // =============================================================================
663
+
664
+ export const ListingSubmissionProcess = Process({
665
+ name: 'Listing Submission',
666
+ description: 'Process for new tool listings',
667
+ owner: 'Content Lead',
668
+ steps: [
669
+ {
670
+ order: 1,
671
+ name: 'Submission',
672
+ description: 'Vendor submits listing request',
673
+ automationLevel: 'automated',
674
+ duration: 'instant',
675
+ },
676
+ {
677
+ order: 2,
678
+ name: 'Initial Validation',
679
+ description: 'Automated validation of submission data',
680
+ automationLevel: 'automated',
681
+ duration: '5 minutes',
682
+ },
683
+ {
684
+ order: 3,
685
+ name: 'Data Enrichment',
686
+ description: 'AI enriches profile with public data',
687
+ automationLevel: 'automated',
688
+ duration: '30 minutes',
689
+ },
690
+ {
691
+ order: 4,
692
+ name: 'Human Review',
693
+ description: 'Curator reviews and verifies listing',
694
+ automationLevel: 'manual',
695
+ duration: '1 day',
696
+ owner: 'Curator',
697
+ },
698
+ {
699
+ order: 5,
700
+ name: 'Categorization',
701
+ description: 'Assign categories and tags',
702
+ automationLevel: 'semi-automated',
703
+ duration: '15 minutes',
704
+ owner: 'Curator',
705
+ },
706
+ {
707
+ order: 6,
708
+ name: 'Publication',
709
+ description: 'Publish listing to directory',
710
+ automationLevel: 'automated',
711
+ duration: 'instant',
712
+ },
713
+ {
714
+ order: 7,
715
+ name: 'Notification',
716
+ description: 'Notify vendor of publication',
717
+ automationLevel: 'automated',
718
+ duration: 'instant',
719
+ },
720
+ ],
721
+ metrics: [
722
+ { name: 'Time to Publish', target: 48, unit: 'hours' },
723
+ { name: 'Approval Rate', target: 85, unit: '%' },
724
+ { name: 'Data Quality Score', target: 90, unit: '%' },
725
+ ],
726
+ })
727
+
728
+ export const ReviewModerationProcess = Process({
729
+ name: 'Review Moderation',
730
+ description: 'Moderate user reviews for quality and authenticity',
731
+ owner: 'Community Lead',
732
+ steps: [
733
+ {
734
+ order: 1,
735
+ name: 'Submission',
736
+ description: 'User submits review',
737
+ automationLevel: 'automated',
738
+ duration: 'instant',
739
+ },
740
+ {
741
+ order: 2,
742
+ name: 'Spam Check',
743
+ description: 'AI filters obvious spam',
744
+ automationLevel: 'automated',
745
+ duration: 'instant',
746
+ },
747
+ {
748
+ order: 3,
749
+ name: 'Sentiment Analysis',
750
+ description: 'Analyze review sentiment and flag outliers',
751
+ automationLevel: 'automated',
752
+ duration: '1 minute',
753
+ },
754
+ {
755
+ order: 4,
756
+ name: 'Verification',
757
+ description: 'Verify reviewer identity and usage',
758
+ automationLevel: 'semi-automated',
759
+ duration: '5 minutes',
760
+ },
761
+ {
762
+ order: 5,
763
+ name: 'Human Review',
764
+ description: 'Moderator reviews flagged reviews',
765
+ automationLevel: 'manual',
766
+ duration: '30 minutes',
767
+ owner: 'Community Moderator',
768
+ },
769
+ {
770
+ order: 6,
771
+ name: 'Publication',
772
+ description: 'Publish approved review',
773
+ automationLevel: 'automated',
774
+ duration: 'instant',
775
+ },
776
+ ],
777
+ metrics: [
778
+ { name: 'Auto-Approval Rate', target: 80, unit: '%' },
779
+ { name: 'Moderation Time', target: 2, unit: 'hours' },
780
+ { name: 'Fake Review Detection', target: 99, unit: '%' },
781
+ ],
782
+ })
783
+
784
+ export const VendorOnboardingProcess = Process({
785
+ name: 'Vendor Onboarding',
786
+ description: 'Onboard new paying vendors',
787
+ owner: 'VP Sales',
788
+ steps: [
789
+ {
790
+ order: 1,
791
+ name: 'Welcome',
792
+ description: 'Send welcome email with credentials',
793
+ automationLevel: 'automated',
794
+ duration: 'instant',
795
+ },
796
+ {
797
+ order: 2,
798
+ name: 'Kickoff Call',
799
+ description: 'Introduction call with vendor',
800
+ automationLevel: 'manual',
801
+ duration: '30 minutes',
802
+ owner: 'Vendor Success Manager',
803
+ },
804
+ {
805
+ order: 3,
806
+ name: 'Profile Setup',
807
+ description: 'Help vendor complete premium profile',
808
+ automationLevel: 'semi-automated',
809
+ duration: '1 week',
810
+ owner: 'Vendor Success Manager',
811
+ },
812
+ {
813
+ order: 4,
814
+ name: 'Badge Assignment',
815
+ description: 'Assign verified badges',
816
+ automationLevel: 'semi-automated',
817
+ duration: '1 day',
818
+ },
819
+ {
820
+ order: 5,
821
+ name: 'Training',
822
+ description: 'Train on analytics and lead management',
823
+ automationLevel: 'manual',
824
+ duration: '1 hour',
825
+ owner: 'Vendor Success Manager',
826
+ },
827
+ {
828
+ order: 6,
829
+ name: 'Go Live',
830
+ description: 'Activate premium features',
831
+ automationLevel: 'automated',
832
+ duration: 'instant',
833
+ },
834
+ ],
835
+ metrics: [
836
+ { name: 'Time to Value', target: 7, unit: 'days' },
837
+ { name: 'Profile Completion Rate', target: 95, unit: '%' },
838
+ { name: 'Vendor CSAT', target: 90, unit: '%' },
839
+ ],
840
+ })
841
+
842
+ // =============================================================================
843
+ // 8. WORKFLOWS
844
+ // =============================================================================
845
+
846
+ export const NewListingWorkflow = Workflow({
847
+ name: 'New Listing Processing',
848
+ description: 'Automated processing of new listing submissions',
849
+ trigger: { type: 'event', event: 'listing.submitted' },
850
+ actions: [
851
+ {
852
+ order: 1,
853
+ type: 'compute',
854
+ name: 'Validate Submission',
855
+ config: {
856
+ checks: ['url_valid', 'name_unique', 'description_length', 'category_valid'],
857
+ },
858
+ },
859
+ {
860
+ order: 2,
861
+ type: 'condition',
862
+ name: 'Check Validation',
863
+ condition: 'validation.passed == true',
864
+ },
865
+ {
866
+ order: 3,
867
+ type: 'api',
868
+ name: 'Enrich Data',
869
+ config: {
870
+ sources: ['clearbit', 'linkedin', 'crunchbase'],
871
+ fields: ['logo', 'employees', 'funding', 'social'],
872
+ },
873
+ },
874
+ {
875
+ order: 4,
876
+ type: 'compute',
877
+ name: 'Auto-Categorize',
878
+ config: {
879
+ model: 'category-classifier',
880
+ confidence_threshold: 0.8,
881
+ },
882
+ },
883
+ {
884
+ order: 5,
885
+ type: 'condition',
886
+ name: 'Check Auto-Approval',
887
+ condition: 'enrichment.score >= 80 && categorization.confidence >= 0.9',
888
+ },
889
+ {
890
+ order: 6,
891
+ type: 'task',
892
+ name: 'Queue for Review',
893
+ config: {
894
+ type: 'listing-review',
895
+ assignTo: 'curator',
896
+ priority: 'normal',
897
+ },
898
+ },
899
+ ],
900
+ })
901
+
902
+ export const ReviewVerificationWorkflow = Workflow({
903
+ name: 'Review Verification',
904
+ description: 'Verify authenticity of user reviews',
905
+ trigger: { type: 'event', event: 'review.submitted' },
906
+ actions: [
907
+ {
908
+ order: 1,
909
+ type: 'compute',
910
+ name: 'Spam Detection',
911
+ config: {
912
+ model: 'spam-classifier',
913
+ checks: ['content', 'user_history', 'ip_reputation'],
914
+ },
915
+ },
916
+ {
917
+ order: 2,
918
+ type: 'condition',
919
+ name: 'Check Spam',
920
+ condition: 'spam.score < 0.3',
921
+ },
922
+ {
923
+ order: 3,
924
+ type: 'compute',
925
+ name: 'Verify User',
926
+ config: {
927
+ checks: ['email_verified', 'linked_profile', 'usage_signals'],
928
+ },
929
+ },
930
+ {
931
+ order: 4,
932
+ type: 'compute',
933
+ name: 'Analyze Content',
934
+ config: {
935
+ checks: ['sentiment', 'specificity', 'helpful_vote_prediction'],
936
+ },
937
+ },
938
+ {
939
+ order: 5,
940
+ type: 'condition',
941
+ name: 'Check Auto-Approve',
942
+ condition: 'verification.score >= 70 && content.score >= 60',
943
+ },
944
+ {
945
+ order: 6,
946
+ type: 'api',
947
+ name: 'Publish Review',
948
+ config: { action: 'publish', notify_vendor: true },
949
+ },
950
+ {
951
+ order: 7,
952
+ type: 'task',
953
+ name: 'Queue Manual Review',
954
+ config: {
955
+ type: 'review-moderation',
956
+ assignTo: 'community-mod',
957
+ reason: 'auto_approval_failed',
958
+ },
959
+ },
960
+ ],
961
+ })
962
+
963
+ export const VendorEngagementWorkflow = Workflow({
964
+ name: 'Vendor Engagement',
965
+ description: 'Engage free vendors for conversion',
966
+ trigger: { type: 'schedule', cron: '0 10 * * 1' }, // Weekly Monday 10am
967
+ actions: [
968
+ {
969
+ order: 1,
970
+ type: 'compute',
971
+ name: 'Identify High-Value Free Vendors',
972
+ config: {
973
+ criteria: {
974
+ profile_views: '> 1000',
975
+ review_count: '> 10',
976
+ days_since_signup: '> 30',
977
+ has_premium: false,
978
+ },
979
+ },
980
+ },
981
+ {
982
+ order: 2,
983
+ type: 'notification',
984
+ name: 'Send Upgrade Email',
985
+ config: {
986
+ template: 'vendor_upgrade_offer',
987
+ channel: 'email',
988
+ personalize: ['profile_views', 'competitor_comparison'],
989
+ },
990
+ },
991
+ {
992
+ order: 3,
993
+ type: 'wait',
994
+ name: 'Wait 3 Days',
995
+ duration: '3 days',
996
+ },
997
+ {
998
+ order: 4,
999
+ type: 'condition',
1000
+ name: 'Check Not Converted',
1001
+ condition: 'vendor.plan == "free"',
1002
+ },
1003
+ {
1004
+ order: 5,
1005
+ type: 'task',
1006
+ name: 'Assign Sales Outreach',
1007
+ config: {
1008
+ type: 'vendor-outreach',
1009
+ assignTo: 'vendor-sales',
1010
+ data: ['vendor.id', 'engagement_score'],
1011
+ },
1012
+ },
1013
+ ],
1014
+ })
1015
+
1016
+ // =============================================================================
1017
+ // 9. FINANCIALS
1018
+ // =============================================================================
1019
+
1020
+ export const TechDirectoryFinancials = financials({
1021
+ revenue: 3960000, // ARR
1022
+ cogs: 594000, // 15% (mostly hosting/data)
1023
+ operatingExpenses: 2800000,
1024
+ depreciation: 50000,
1025
+ interestExpense: 0,
1026
+ otherIncome: 30000,
1027
+ taxes: 100000,
1028
+ })
1029
+
1030
+ export const DirectoryMetrics = {
1031
+ mrr: 275000,
1032
+ arr: 3300000,
1033
+ affiliateRevenue: 660000, // yearly
1034
+ totalRevenue: 3960000,
1035
+ visitors: {
1036
+ monthly: 2100000,
1037
+ organic: 1302000, // 62%
1038
+ pagesPerSession: 3.8,
1039
+ bounceRate: 48,
1040
+ },
1041
+ content: {
1042
+ listedTools: 15000,
1043
+ verifiedReviews: 125000,
1044
+ comparisons: 450,
1045
+ guides: 200,
1046
+ },
1047
+ vendors: {
1048
+ total: 15000,
1049
+ paying: 650,
1050
+ premium: 450,
1051
+ enterprise: 50,
1052
+ sponsored: 150,
1053
+ conversionRate: 4.3, // %
1054
+ },
1055
+ arpu: 423, // MRR / paying vendors
1056
+ vendorChurn: 4.5, // %
1057
+ cac: 1200,
1058
+ ltv: 9500, // 22 months avg
1059
+ }
1060
+
1061
+ // =============================================================================
1062
+ // 10. UTILITY FUNCTIONS
1063
+ // =============================================================================
1064
+
1065
+ export function getBusinessSummary() {
1066
+ return {
1067
+ company: TechDirectoryBusiness,
1068
+ vision: TechDirectoryVision,
1069
+ goals: TechDirectoryGoals,
1070
+ products: { platform: DirectoryPlatform, vendor: VendorProducts },
1071
+ kpis: TechDirectoryKPIs,
1072
+ okrs: TechDirectoryOKRs,
1073
+ financials: TechDirectoryFinancials,
1074
+ metrics: DirectoryMetrics,
1075
+ }
1076
+ }
1077
+
1078
+ export function getTrafficMetrics() {
1079
+ return {
1080
+ visitors: DirectoryMetrics.visitors.monthly.toLocaleString(),
1081
+ organic: `${((DirectoryMetrics.visitors.organic / DirectoryMetrics.visitors.monthly) * 100).toFixed(0)}%`,
1082
+ pagesPerSession: DirectoryMetrics.visitors.pagesPerSession,
1083
+ bounceRate: `${DirectoryMetrics.visitors.bounceRate}%`,
1084
+ }
1085
+ }
1086
+
1087
+ export function getVendorMetrics() {
1088
+ return {
1089
+ total: DirectoryMetrics.vendors.total.toLocaleString(),
1090
+ paying: DirectoryMetrics.vendors.paying,
1091
+ conversionRate: `${DirectoryMetrics.vendors.conversionRate}%`,
1092
+ mrr: $.format(DirectoryMetrics.mrr),
1093
+ arpu: $.format(DirectoryMetrics.arpu),
1094
+ }
1095
+ }
1096
+
1097
+ export default {
1098
+ business: TechDirectoryBusiness,
1099
+ vision: TechDirectoryVision,
1100
+ goals: TechDirectoryGoals,
1101
+ products: { platform: DirectoryPlatform, vendor: VendorProducts },
1102
+ services: { affiliate: AffiliateServices },
1103
+ organization: TechDirectoryOrg,
1104
+ kpis: TechDirectoryKPIs,
1105
+ okrs: TechDirectoryOKRs,
1106
+ processes: {
1107
+ listingSubmission: ListingSubmissionProcess,
1108
+ reviewModeration: ReviewModerationProcess,
1109
+ vendorOnboarding: VendorOnboardingProcess,
1110
+ },
1111
+ workflows: {
1112
+ newListing: NewListingWorkflow,
1113
+ reviewVerification: ReviewVerificationWorkflow,
1114
+ vendorEngagement: VendorEngagementWorkflow,
1115
+ },
1116
+ financials: TechDirectoryFinancials,
1117
+ metrics: DirectoryMetrics,
1118
+ }