@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.
- package/.turbo/turbo-build.log +4 -0
- package/LICENSE +21 -0
- package/README.md +147 -0
- package/api-business/index.ts +1179 -0
- package/directory/index.ts +1118 -0
- package/dist/api-business/index.d.ts +221 -0
- package/dist/api-business/index.d.ts.map +1 -0
- package/dist/api-business/index.js +1132 -0
- package/dist/api-business/index.js.map +1 -0
- package/dist/directory/index.d.ts +202 -0
- package/dist/directory/index.d.ts.map +1 -0
- package/dist/directory/index.js +1073 -0
- package/dist/directory/index.js.map +1 -0
- package/dist/index.d.ts +75 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +127 -0
- package/dist/index.js.map +1 -0
- package/dist/marketplace/index.d.ts +242 -0
- package/dist/marketplace/index.d.ts.map +1 -0
- package/dist/marketplace/index.js +1249 -0
- package/dist/marketplace/index.js.map +1 -0
- package/dist/saas/index.d.ts +151 -0
- package/dist/saas/index.d.ts.map +1 -0
- package/dist/saas/index.js +1142 -0
- package/dist/saas/index.js.map +1 -0
- package/dist/startup-studio/index.d.ts +285 -0
- package/dist/startup-studio/index.d.ts.map +1 -0
- package/dist/startup-studio/index.js +1252 -0
- package/dist/startup-studio/index.js.map +1 -0
- package/dist/vc-firm/index.d.ts +248 -0
- package/dist/vc-firm/index.d.ts.map +1 -0
- package/dist/vc-firm/index.js +1335 -0
- package/dist/vc-firm/index.js.map +1 -0
- package/index.ts +151 -0
- package/marketplace/index.ts +1295 -0
- package/package.json +58 -0
- package/saas/index.ts +1188 -0
- package/startup-studio/index.ts +1324 -0
- package/tsconfig.json +12 -0
- package/vc-firm/index.ts +1430 -0
|
@@ -0,0 +1,1335 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* VC Firm Business Example
|
|
3
|
+
*
|
|
4
|
+
* A complete example of a venture capital firm modeled using primitives.org.ai
|
|
5
|
+
* Think: a16z, Sequoia, Benchmark, Accel, Index Ventures
|
|
6
|
+
*
|
|
7
|
+
* @example Catalyst Ventures - An early-stage enterprise VC firm
|
|
8
|
+
* @packageDocumentation
|
|
9
|
+
*/
|
|
10
|
+
/**
|
|
11
|
+
* NOTE: These examples demonstrate the DESIRED API shape for business-as-code.
|
|
12
|
+
* Some types may not exist yet in the actual package. The examples serve as
|
|
13
|
+
* documentation and specification for the ideal primitives API.
|
|
14
|
+
*/
|
|
15
|
+
// Use any for flexibility - these examples define the ideal API shape
|
|
16
|
+
const Business = (def) => def;
|
|
17
|
+
const Product = (def) => def;
|
|
18
|
+
const Service = (def) => def;
|
|
19
|
+
const Goals = (defs) => defs;
|
|
20
|
+
const Vision = (def) => def;
|
|
21
|
+
const kpis = (defs) => defs;
|
|
22
|
+
const okrs = (defs) => defs;
|
|
23
|
+
const financials = (def) => def;
|
|
24
|
+
const Process = (def) => def;
|
|
25
|
+
const Workflow = (def) => def;
|
|
26
|
+
const createBusinessRole = (def) => def;
|
|
27
|
+
// $ helper placeholder
|
|
28
|
+
const $ = {
|
|
29
|
+
format: (n) => `$${n.toLocaleString()}`,
|
|
30
|
+
growth: (current, previous) => ((current - previous) / previous * 100).toFixed(1),
|
|
31
|
+
margin: (revenue, cost) => ((revenue - cost) / revenue * 100).toFixed(1),
|
|
32
|
+
};
|
|
33
|
+
// =============================================================================
|
|
34
|
+
// 1. BUSINESS DEFINITION
|
|
35
|
+
// =============================================================================
|
|
36
|
+
/**
|
|
37
|
+
* Catalyst Ventures - Early-Stage Enterprise VC
|
|
38
|
+
*/
|
|
39
|
+
export const CatalystVenturesBusiness = Business({
|
|
40
|
+
name: 'Catalyst Ventures',
|
|
41
|
+
mission: 'Back exceptional founders building the future of enterprise software',
|
|
42
|
+
values: ['Founder First', 'Long-Term Thinking', 'Operational Excellence', 'Integrity'],
|
|
43
|
+
industry: 'Venture Capital',
|
|
44
|
+
founded: new Date('2015-03-01'),
|
|
45
|
+
stage: 'established',
|
|
46
|
+
structure: {
|
|
47
|
+
departments: [
|
|
48
|
+
{
|
|
49
|
+
name: 'Investment Team',
|
|
50
|
+
headcount: 12,
|
|
51
|
+
budget: 3500000,
|
|
52
|
+
teams: [
|
|
53
|
+
{ name: 'Partners', headcount: 4, focus: 'Investment decisions' },
|
|
54
|
+
{ name: 'Principals', headcount: 4, focus: 'Deal sourcing & diligence' },
|
|
55
|
+
{ name: 'Associates', headcount: 4, focus: 'Research & support' },
|
|
56
|
+
],
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
name: 'Platform',
|
|
60
|
+
headcount: 8,
|
|
61
|
+
budget: 1500000,
|
|
62
|
+
teams: [
|
|
63
|
+
{ name: 'Talent', headcount: 3, focus: 'Portfolio recruiting' },
|
|
64
|
+
{ name: 'GTM', headcount: 2, focus: 'Sales & marketing support' },
|
|
65
|
+
{ name: 'Technical', headcount: 2, focus: 'Technical advisory' },
|
|
66
|
+
{ name: 'Marketing', headcount: 1, focus: 'Brand & content' },
|
|
67
|
+
],
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
name: 'Operations',
|
|
71
|
+
headcount: 5,
|
|
72
|
+
budget: 800000,
|
|
73
|
+
teams: [
|
|
74
|
+
{ name: 'Finance', headcount: 2, focus: 'Fund accounting' },
|
|
75
|
+
{ name: 'Legal', headcount: 1, focus: 'Legal & compliance' },
|
|
76
|
+
{ name: 'IR', headcount: 2, focus: 'LP relations' },
|
|
77
|
+
],
|
|
78
|
+
},
|
|
79
|
+
],
|
|
80
|
+
},
|
|
81
|
+
});
|
|
82
|
+
// =============================================================================
|
|
83
|
+
// 2. VISION & GOALS
|
|
84
|
+
// =============================================================================
|
|
85
|
+
export const CatalystVision = Vision({
|
|
86
|
+
statement: 'Be the most founder-friendly firm backing category-defining enterprise companies',
|
|
87
|
+
timeHorizon: '2030',
|
|
88
|
+
pillars: [
|
|
89
|
+
'Founder Partnership',
|
|
90
|
+
'Platform Value',
|
|
91
|
+
'Investment Returns',
|
|
92
|
+
'Thought Leadership',
|
|
93
|
+
],
|
|
94
|
+
successIndicators: [
|
|
95
|
+
{ name: 'AUM', target: 2000000000, unit: 'USD' },
|
|
96
|
+
{ name: 'Unicorn Portfolio Companies', target: 15 },
|
|
97
|
+
{ name: 'Net IRR', target: 30, unit: '%' },
|
|
98
|
+
{ name: 'Founder NPS', target: 90 },
|
|
99
|
+
],
|
|
100
|
+
});
|
|
101
|
+
export const CatalystGoals = Goals([
|
|
102
|
+
{
|
|
103
|
+
name: 'Close Fund V ($500M)',
|
|
104
|
+
category: 'financial',
|
|
105
|
+
status: 'in-progress',
|
|
106
|
+
progress: 70,
|
|
107
|
+
dueDate: new Date('2024-06-30'),
|
|
108
|
+
owner: 'Managing Partner',
|
|
109
|
+
},
|
|
110
|
+
{
|
|
111
|
+
name: 'Deploy Fund IV',
|
|
112
|
+
category: 'operational',
|
|
113
|
+
status: 'in-progress',
|
|
114
|
+
progress: 60,
|
|
115
|
+
dueDate: new Date('2024-12-31'),
|
|
116
|
+
owner: 'Investment Team',
|
|
117
|
+
},
|
|
118
|
+
{
|
|
119
|
+
name: '3 IPO/M&A Exits',
|
|
120
|
+
category: 'strategic',
|
|
121
|
+
status: 'in-progress',
|
|
122
|
+
progress: 33,
|
|
123
|
+
dueDate: new Date('2024-12-31'),
|
|
124
|
+
owner: 'Managing Partner',
|
|
125
|
+
},
|
|
126
|
+
{
|
|
127
|
+
name: 'Launch AI/ML Thesis',
|
|
128
|
+
category: 'strategic',
|
|
129
|
+
status: 'in-progress',
|
|
130
|
+
progress: 50,
|
|
131
|
+
dueDate: new Date('2024-03-31'),
|
|
132
|
+
owner: 'Partner - AI',
|
|
133
|
+
},
|
|
134
|
+
{
|
|
135
|
+
name: 'Expand Platform Team',
|
|
136
|
+
category: 'operational',
|
|
137
|
+
status: 'in-progress',
|
|
138
|
+
progress: 40,
|
|
139
|
+
dueDate: new Date('2024-06-30'),
|
|
140
|
+
owner: 'Head of Platform',
|
|
141
|
+
},
|
|
142
|
+
]);
|
|
143
|
+
export const Funds = [
|
|
144
|
+
{
|
|
145
|
+
id: 'fund-i',
|
|
146
|
+
name: 'Catalyst Ventures I',
|
|
147
|
+
vintage: 2015,
|
|
148
|
+
size: 75000000,
|
|
149
|
+
deployed: 75000000,
|
|
150
|
+
reserved: 0,
|
|
151
|
+
status: 'harvesting',
|
|
152
|
+
strategy: 'Seed & Series A Enterprise',
|
|
153
|
+
metrics: { tvpi: 4.2, dpi: 2.8, irr: 38, moic: 4.2 },
|
|
154
|
+
},
|
|
155
|
+
{
|
|
156
|
+
id: 'fund-ii',
|
|
157
|
+
name: 'Catalyst Ventures II',
|
|
158
|
+
vintage: 2017,
|
|
159
|
+
size: 150000000,
|
|
160
|
+
deployed: 150000000,
|
|
161
|
+
reserved: 0,
|
|
162
|
+
status: 'harvesting',
|
|
163
|
+
strategy: 'Seed & Series A Enterprise',
|
|
164
|
+
metrics: { tvpi: 3.5, dpi: 1.5, irr: 32, moic: 3.5 },
|
|
165
|
+
},
|
|
166
|
+
{
|
|
167
|
+
id: 'fund-iii',
|
|
168
|
+
name: 'Catalyst Ventures III',
|
|
169
|
+
vintage: 2019,
|
|
170
|
+
size: 250000000,
|
|
171
|
+
deployed: 225000000,
|
|
172
|
+
reserved: 25000000,
|
|
173
|
+
status: 'investing',
|
|
174
|
+
strategy: 'Seed & Series A Enterprise',
|
|
175
|
+
metrics: { tvpi: 2.8, dpi: 0.5, irr: 28 },
|
|
176
|
+
},
|
|
177
|
+
{
|
|
178
|
+
id: 'fund-iv',
|
|
179
|
+
name: 'Catalyst Ventures IV',
|
|
180
|
+
vintage: 2022,
|
|
181
|
+
size: 400000000,
|
|
182
|
+
deployed: 180000000,
|
|
183
|
+
reserved: 100000000,
|
|
184
|
+
status: 'investing',
|
|
185
|
+
strategy: 'Seed to Series B Enterprise',
|
|
186
|
+
metrics: { tvpi: 1.4, dpi: 0, irr: 0 },
|
|
187
|
+
},
|
|
188
|
+
{
|
|
189
|
+
id: 'fund-v',
|
|
190
|
+
name: 'Catalyst Ventures V',
|
|
191
|
+
vintage: 2024,
|
|
192
|
+
size: 500000000,
|
|
193
|
+
deployed: 0,
|
|
194
|
+
reserved: 150000000,
|
|
195
|
+
status: 'fundraising',
|
|
196
|
+
strategy: 'Seed to Series B Enterprise + AI/ML',
|
|
197
|
+
},
|
|
198
|
+
{
|
|
199
|
+
id: 'growth-i',
|
|
200
|
+
name: 'Catalyst Growth I',
|
|
201
|
+
vintage: 2021,
|
|
202
|
+
size: 300000000,
|
|
203
|
+
deployed: 240000000,
|
|
204
|
+
reserved: 60000000,
|
|
205
|
+
status: 'investing',
|
|
206
|
+
strategy: 'Series B-D Growth',
|
|
207
|
+
metrics: { tvpi: 1.6, dpi: 0.2, irr: 22 },
|
|
208
|
+
},
|
|
209
|
+
];
|
|
210
|
+
export const TotalAUM = Funds.reduce((sum, f) => sum + f.size, 0);
|
|
211
|
+
export const Portfolio = [
|
|
212
|
+
{
|
|
213
|
+
id: 'datastream',
|
|
214
|
+
name: 'DataStream',
|
|
215
|
+
description: 'Real-time data infrastructure',
|
|
216
|
+
sector: 'Data Infrastructure',
|
|
217
|
+
stage: 'pre-ipo',
|
|
218
|
+
fundId: 'fund-i',
|
|
219
|
+
initialInvestment: new Date('2016-03-15'),
|
|
220
|
+
invested: 8000000,
|
|
221
|
+
ownership: 12,
|
|
222
|
+
currentValuation: 2500000000,
|
|
223
|
+
markValue: 300000000,
|
|
224
|
+
status: 'active',
|
|
225
|
+
board: true,
|
|
226
|
+
leadInvestor: true,
|
|
227
|
+
metrics: { arr: 180000000, growth: 45, employees: 800 },
|
|
228
|
+
},
|
|
229
|
+
{
|
|
230
|
+
id: 'securecloud',
|
|
231
|
+
name: 'SecureCloud',
|
|
232
|
+
description: 'Cloud security platform',
|
|
233
|
+
sector: 'Security',
|
|
234
|
+
stage: 'public',
|
|
235
|
+
fundId: 'fund-i',
|
|
236
|
+
initialInvestment: new Date('2015-09-01'),
|
|
237
|
+
invested: 5000000,
|
|
238
|
+
ownership: 0, // Exited
|
|
239
|
+
status: 'exited',
|
|
240
|
+
board: true,
|
|
241
|
+
leadInvestor: true,
|
|
242
|
+
},
|
|
243
|
+
{
|
|
244
|
+
id: 'aiops',
|
|
245
|
+
name: 'AIOps',
|
|
246
|
+
description: 'AI-powered IT operations',
|
|
247
|
+
sector: 'DevOps',
|
|
248
|
+
stage: 'series-c',
|
|
249
|
+
fundId: 'fund-ii',
|
|
250
|
+
initialInvestment: new Date('2018-06-01'),
|
|
251
|
+
invested: 15000000,
|
|
252
|
+
ownership: 15,
|
|
253
|
+
currentValuation: 800000000,
|
|
254
|
+
markValue: 120000000,
|
|
255
|
+
status: 'active',
|
|
256
|
+
board: true,
|
|
257
|
+
leadInvestor: true,
|
|
258
|
+
metrics: { arr: 65000000, growth: 55, employees: 350 },
|
|
259
|
+
},
|
|
260
|
+
{
|
|
261
|
+
id: 'complyhq',
|
|
262
|
+
name: 'ComplyHQ',
|
|
263
|
+
description: 'Compliance automation',
|
|
264
|
+
sector: 'RegTech',
|
|
265
|
+
stage: 'series-b',
|
|
266
|
+
fundId: 'fund-iii',
|
|
267
|
+
initialInvestment: new Date('2020-02-15'),
|
|
268
|
+
invested: 20000000,
|
|
269
|
+
ownership: 18,
|
|
270
|
+
currentValuation: 400000000,
|
|
271
|
+
markValue: 72000000,
|
|
272
|
+
status: 'active',
|
|
273
|
+
board: true,
|
|
274
|
+
leadInvestor: true,
|
|
275
|
+
metrics: { arr: 32000000, growth: 80, employees: 180 },
|
|
276
|
+
},
|
|
277
|
+
{
|
|
278
|
+
id: 'devflow',
|
|
279
|
+
name: 'DevFlow',
|
|
280
|
+
description: 'Developer productivity platform',
|
|
281
|
+
sector: 'Developer Tools',
|
|
282
|
+
stage: 'series-a',
|
|
283
|
+
fundId: 'fund-iv',
|
|
284
|
+
initialInvestment: new Date('2022-09-01'),
|
|
285
|
+
invested: 12000000,
|
|
286
|
+
ownership: 20,
|
|
287
|
+
currentValuation: 120000000,
|
|
288
|
+
markValue: 24000000,
|
|
289
|
+
status: 'active',
|
|
290
|
+
board: true,
|
|
291
|
+
leadInvestor: true,
|
|
292
|
+
metrics: { arr: 8000000, growth: 120, employees: 45 },
|
|
293
|
+
},
|
|
294
|
+
{
|
|
295
|
+
id: 'mlplatform',
|
|
296
|
+
name: 'MLPlatform',
|
|
297
|
+
description: 'Enterprise ML infrastructure',
|
|
298
|
+
sector: 'AI/ML',
|
|
299
|
+
stage: 'seed',
|
|
300
|
+
fundId: 'fund-iv',
|
|
301
|
+
initialInvestment: new Date('2023-06-15'),
|
|
302
|
+
invested: 4000000,
|
|
303
|
+
ownership: 15,
|
|
304
|
+
currentValuation: 40000000,
|
|
305
|
+
markValue: 6000000,
|
|
306
|
+
status: 'active',
|
|
307
|
+
board: false,
|
|
308
|
+
leadInvestor: true,
|
|
309
|
+
metrics: { arr: 500000, growth: 200, employees: 12 },
|
|
310
|
+
},
|
|
311
|
+
];
|
|
312
|
+
// =============================================================================
|
|
313
|
+
// 5. SERVICES (Platform)
|
|
314
|
+
// =============================================================================
|
|
315
|
+
export const PlatformServices = {
|
|
316
|
+
talent: Service({
|
|
317
|
+
name: 'Talent Network',
|
|
318
|
+
description: 'Executive recruiting and team building support',
|
|
319
|
+
pricingModel: 'free', // Included for portfolio
|
|
320
|
+
deliverables: [
|
|
321
|
+
'Executive search support',
|
|
322
|
+
'Candidate pipeline',
|
|
323
|
+
'Interview process design',
|
|
324
|
+
'Compensation benchmarking',
|
|
325
|
+
'Reference checks',
|
|
326
|
+
],
|
|
327
|
+
}),
|
|
328
|
+
gtm: Service({
|
|
329
|
+
name: 'GTM Acceleration',
|
|
330
|
+
description: 'Sales and marketing support',
|
|
331
|
+
pricingModel: 'free',
|
|
332
|
+
deliverables: [
|
|
333
|
+
'Sales playbook development',
|
|
334
|
+
'Customer introductions',
|
|
335
|
+
'Marketing strategy',
|
|
336
|
+
'Pricing optimization',
|
|
337
|
+
'Partnership introductions',
|
|
338
|
+
],
|
|
339
|
+
}),
|
|
340
|
+
technical: Service({
|
|
341
|
+
name: 'Technical Advisory',
|
|
342
|
+
description: 'Technical strategy and architecture review',
|
|
343
|
+
pricingModel: 'free',
|
|
344
|
+
deliverables: [
|
|
345
|
+
'Architecture review',
|
|
346
|
+
'Technology strategy',
|
|
347
|
+
'Security assessment',
|
|
348
|
+
'Scalability planning',
|
|
349
|
+
'Tech due diligence support',
|
|
350
|
+
],
|
|
351
|
+
}),
|
|
352
|
+
ops: Service({
|
|
353
|
+
name: 'Operational Excellence',
|
|
354
|
+
description: 'Finance, legal, and operational support',
|
|
355
|
+
pricingModel: 'free',
|
|
356
|
+
deliverables: [
|
|
357
|
+
'CFO/finance support',
|
|
358
|
+
'Legal introductions',
|
|
359
|
+
'Board governance',
|
|
360
|
+
'Fundraising preparation',
|
|
361
|
+
'M&A support',
|
|
362
|
+
],
|
|
363
|
+
}),
|
|
364
|
+
};
|
|
365
|
+
// =============================================================================
|
|
366
|
+
// 6. ORGANIZATION & ROLES
|
|
367
|
+
// =============================================================================
|
|
368
|
+
export const CatalystOrg = {
|
|
369
|
+
id: 'catalyst',
|
|
370
|
+
name: 'Catalyst Ventures',
|
|
371
|
+
settings: {
|
|
372
|
+
timezone: 'America/San_Francisco',
|
|
373
|
+
currency: 'USD',
|
|
374
|
+
fiscalYearStart: 1,
|
|
375
|
+
},
|
|
376
|
+
departments: [
|
|
377
|
+
{
|
|
378
|
+
id: 'investment',
|
|
379
|
+
name: 'Investment Team',
|
|
380
|
+
permissions: {
|
|
381
|
+
deals: ['read', 'write', 'diligence', 'recommend'],
|
|
382
|
+
portfolio: ['read', 'write'],
|
|
383
|
+
fund: ['read'],
|
|
384
|
+
},
|
|
385
|
+
teams: [
|
|
386
|
+
{
|
|
387
|
+
id: 'partners',
|
|
388
|
+
name: 'Partners',
|
|
389
|
+
positions: [
|
|
390
|
+
{ id: 'mp', title: 'Managing Partner', roleId: 'managing-partner', reportsTo: null },
|
|
391
|
+
{ id: 'gp-1', title: 'General Partner', roleId: 'general-partner', reportsTo: 'mp' },
|
|
392
|
+
{ id: 'gp-2', title: 'General Partner', roleId: 'general-partner', reportsTo: 'mp' },
|
|
393
|
+
{ id: 'gp-3', title: 'General Partner', roleId: 'general-partner', reportsTo: 'mp' },
|
|
394
|
+
],
|
|
395
|
+
},
|
|
396
|
+
{
|
|
397
|
+
id: 'principals',
|
|
398
|
+
name: 'Principals',
|
|
399
|
+
positions: [
|
|
400
|
+
{ id: 'principal-1', title: 'Principal', roleId: 'principal', reportsTo: 'gp-1' },
|
|
401
|
+
{ id: 'principal-2', title: 'Principal', roleId: 'principal', reportsTo: 'gp-2' },
|
|
402
|
+
],
|
|
403
|
+
},
|
|
404
|
+
{
|
|
405
|
+
id: 'associates',
|
|
406
|
+
name: 'Associates',
|
|
407
|
+
positions: [
|
|
408
|
+
{ id: 'associate-1', title: 'Associate', roleId: 'associate', reportsTo: 'principal-1' },
|
|
409
|
+
{ id: 'associate-2', title: 'Associate', roleId: 'associate', reportsTo: 'principal-2' },
|
|
410
|
+
],
|
|
411
|
+
},
|
|
412
|
+
],
|
|
413
|
+
},
|
|
414
|
+
{
|
|
415
|
+
id: 'platform',
|
|
416
|
+
name: 'Platform',
|
|
417
|
+
permissions: {
|
|
418
|
+
portfolio: ['read', 'support'],
|
|
419
|
+
talent: ['read', 'write'],
|
|
420
|
+
gtm: ['read', 'write'],
|
|
421
|
+
},
|
|
422
|
+
},
|
|
423
|
+
{
|
|
424
|
+
id: 'operations',
|
|
425
|
+
name: 'Operations',
|
|
426
|
+
permissions: {
|
|
427
|
+
fund: ['read', 'write', 'report'],
|
|
428
|
+
lps: ['read', 'write'],
|
|
429
|
+
compliance: ['read', 'write', 'manage'],
|
|
430
|
+
},
|
|
431
|
+
},
|
|
432
|
+
],
|
|
433
|
+
roles: [
|
|
434
|
+
createBusinessRole({
|
|
435
|
+
id: 'managing-partner',
|
|
436
|
+
name: 'Managing Partner',
|
|
437
|
+
type: 'executive',
|
|
438
|
+
level: 10,
|
|
439
|
+
permissions: {
|
|
440
|
+
deals: ['read', 'write', 'approve', 'veto'],
|
|
441
|
+
fund: ['read', 'write', 'manage'],
|
|
442
|
+
portfolio: ['read', 'write', 'manage'],
|
|
443
|
+
lps: ['read', 'write'],
|
|
444
|
+
},
|
|
445
|
+
canHandle: ['investment-decision', 'fundraising', 'lp-relations', 'exit'],
|
|
446
|
+
canApprove: ['investment', 'follow-on', 'exit', 'hiring'],
|
|
447
|
+
}),
|
|
448
|
+
createBusinessRole({
|
|
449
|
+
id: 'general-partner',
|
|
450
|
+
name: 'General Partner',
|
|
451
|
+
type: 'executive',
|
|
452
|
+
level: 9,
|
|
453
|
+
permissions: {
|
|
454
|
+
deals: ['read', 'write', 'diligence', 'recommend', 'lead'],
|
|
455
|
+
portfolio: ['read', 'write', 'board'],
|
|
456
|
+
fund: ['read'],
|
|
457
|
+
},
|
|
458
|
+
canHandle: ['deal-sourcing', 'diligence', 'board-seat', 'portfolio-support'],
|
|
459
|
+
canApprove: ['term-sheet', 'follow-on'],
|
|
460
|
+
}),
|
|
461
|
+
createBusinessRole({
|
|
462
|
+
id: 'principal',
|
|
463
|
+
name: 'Principal',
|
|
464
|
+
type: 'analyst',
|
|
465
|
+
level: 6,
|
|
466
|
+
permissions: {
|
|
467
|
+
deals: ['read', 'write', 'diligence', 'recommend'],
|
|
468
|
+
portfolio: ['read', 'support'],
|
|
469
|
+
},
|
|
470
|
+
canHandle: ['deal-sourcing', 'diligence', 'portfolio-support'],
|
|
471
|
+
}),
|
|
472
|
+
createBusinessRole({
|
|
473
|
+
id: 'associate',
|
|
474
|
+
name: 'Associate',
|
|
475
|
+
type: 'analyst',
|
|
476
|
+
level: 4,
|
|
477
|
+
permissions: {
|
|
478
|
+
deals: ['read', 'write', 'research'],
|
|
479
|
+
portfolio: ['read'],
|
|
480
|
+
},
|
|
481
|
+
canHandle: ['market-research', 'deal-sourcing', 'diligence-support'],
|
|
482
|
+
}),
|
|
483
|
+
createBusinessRole({
|
|
484
|
+
id: 'platform-head',
|
|
485
|
+
name: 'Head of Platform',
|
|
486
|
+
type: 'manager',
|
|
487
|
+
level: 7,
|
|
488
|
+
permissions: {
|
|
489
|
+
portfolio: ['read', 'support', 'coordinate'],
|
|
490
|
+
talent: ['read', 'write', 'manage'],
|
|
491
|
+
gtm: ['read', 'write', 'manage'],
|
|
492
|
+
},
|
|
493
|
+
canHandle: ['platform-strategy', 'portfolio-support', 'talent-coordination'],
|
|
494
|
+
}),
|
|
495
|
+
createBusinessRole({
|
|
496
|
+
id: 'talent-partner',
|
|
497
|
+
name: 'Talent Partner',
|
|
498
|
+
type: 'support',
|
|
499
|
+
level: 5,
|
|
500
|
+
permissions: {
|
|
501
|
+
portfolio: ['read'],
|
|
502
|
+
talent: ['read', 'write'],
|
|
503
|
+
candidates: ['read', 'write'],
|
|
504
|
+
},
|
|
505
|
+
canHandle: ['executive-search', 'recruiting-support', 'compensation-advice'],
|
|
506
|
+
}),
|
|
507
|
+
createBusinessRole({
|
|
508
|
+
id: 'ir-manager',
|
|
509
|
+
name: 'IR Manager',
|
|
510
|
+
type: 'support',
|
|
511
|
+
level: 5,
|
|
512
|
+
permissions: {
|
|
513
|
+
fund: ['read', 'report'],
|
|
514
|
+
lps: ['read', 'write'],
|
|
515
|
+
},
|
|
516
|
+
canHandle: ['lp-reporting', 'lp-communication', 'agm-coordination'],
|
|
517
|
+
}),
|
|
518
|
+
createBusinessRole({
|
|
519
|
+
id: 'deal-sourcing-bot',
|
|
520
|
+
name: 'Deal Sourcing Bot',
|
|
521
|
+
type: 'agent',
|
|
522
|
+
level: 2,
|
|
523
|
+
workerType: 'ai',
|
|
524
|
+
permissions: {
|
|
525
|
+
deals: ['read', 'write'],
|
|
526
|
+
research: ['read', 'write'],
|
|
527
|
+
},
|
|
528
|
+
canHandle: ['company-research', 'news-monitoring', 'deal-flow-tracking'],
|
|
529
|
+
}),
|
|
530
|
+
],
|
|
531
|
+
approvalChains: [
|
|
532
|
+
{
|
|
533
|
+
id: 'investment',
|
|
534
|
+
name: 'Investment Approval',
|
|
535
|
+
requestType: 'investment',
|
|
536
|
+
levels: [
|
|
537
|
+
{ threshold: 2000000, approvers: [{ type: 'role', roleId: 'general-partner' }] }, // Seed
|
|
538
|
+
{ threshold: 10000000, approvers: [{ type: 'role', roleId: 'managing-partner' }, { type: 'role', roleId: 'general-partner' }] }, // Series A
|
|
539
|
+
{ threshold: Infinity, approvers: [{ type: 'all-partners' }] }, // Large checks - full partnership
|
|
540
|
+
],
|
|
541
|
+
},
|
|
542
|
+
{
|
|
543
|
+
id: 'follow-on',
|
|
544
|
+
name: 'Follow-on Approval',
|
|
545
|
+
requestType: 'follow-on',
|
|
546
|
+
levels: [
|
|
547
|
+
{ threshold: 5000000, approvers: [{ type: 'role', roleId: 'general-partner' }] },
|
|
548
|
+
{ threshold: Infinity, approvers: [{ type: 'role', roleId: 'managing-partner' }] },
|
|
549
|
+
],
|
|
550
|
+
},
|
|
551
|
+
],
|
|
552
|
+
routingRules: [
|
|
553
|
+
{
|
|
554
|
+
id: 'deal-research',
|
|
555
|
+
taskType: 'company-research',
|
|
556
|
+
priority: 1,
|
|
557
|
+
assignTo: { roleId: 'associate' },
|
|
558
|
+
},
|
|
559
|
+
{
|
|
560
|
+
id: 'deal-diligence',
|
|
561
|
+
taskType: 'deal-diligence',
|
|
562
|
+
priority: 2,
|
|
563
|
+
assignTo: { roleId: 'principal' },
|
|
564
|
+
},
|
|
565
|
+
{
|
|
566
|
+
id: 'executive-search',
|
|
567
|
+
taskType: 'executive-search',
|
|
568
|
+
priority: 1,
|
|
569
|
+
assignTo: { roleId: 'talent-partner' },
|
|
570
|
+
},
|
|
571
|
+
],
|
|
572
|
+
};
|
|
573
|
+
// =============================================================================
|
|
574
|
+
// 7. KPIs & METRICS
|
|
575
|
+
// =============================================================================
|
|
576
|
+
export const CatalystKPIs = kpis([
|
|
577
|
+
// Fund Performance
|
|
578
|
+
{
|
|
579
|
+
name: 'AUM',
|
|
580
|
+
category: 'financial',
|
|
581
|
+
target: 2000000000,
|
|
582
|
+
current: 1675000000,
|
|
583
|
+
unit: 'USD',
|
|
584
|
+
frequency: 'quarterly',
|
|
585
|
+
owner: 'Managing Partner',
|
|
586
|
+
},
|
|
587
|
+
{
|
|
588
|
+
name: 'Fund IV TVPI',
|
|
589
|
+
category: 'financial',
|
|
590
|
+
target: 2.0,
|
|
591
|
+
current: 1.4,
|
|
592
|
+
frequency: 'quarterly',
|
|
593
|
+
owner: 'Managing Partner',
|
|
594
|
+
},
|
|
595
|
+
{
|
|
596
|
+
name: 'Net IRR (Blended)',
|
|
597
|
+
category: 'financial',
|
|
598
|
+
target: 25,
|
|
599
|
+
current: 28,
|
|
600
|
+
unit: '%',
|
|
601
|
+
frequency: 'yearly',
|
|
602
|
+
owner: 'Managing Partner',
|
|
603
|
+
},
|
|
604
|
+
// Investment Activity
|
|
605
|
+
{
|
|
606
|
+
name: 'New Investments / Year',
|
|
607
|
+
category: 'operational',
|
|
608
|
+
target: 15,
|
|
609
|
+
current: 8,
|
|
610
|
+
frequency: 'yearly',
|
|
611
|
+
owner: 'Investment Team',
|
|
612
|
+
},
|
|
613
|
+
{
|
|
614
|
+
name: 'Follow-ons / Year',
|
|
615
|
+
category: 'operational',
|
|
616
|
+
target: 20,
|
|
617
|
+
current: 12,
|
|
618
|
+
frequency: 'yearly',
|
|
619
|
+
owner: 'Investment Team',
|
|
620
|
+
},
|
|
621
|
+
{
|
|
622
|
+
name: 'Win Rate (Competitive Deals)',
|
|
623
|
+
category: 'operational',
|
|
624
|
+
target: 40,
|
|
625
|
+
current: 35,
|
|
626
|
+
unit: '%',
|
|
627
|
+
frequency: 'quarterly',
|
|
628
|
+
owner: 'Investment Team',
|
|
629
|
+
},
|
|
630
|
+
// Deal Flow
|
|
631
|
+
{
|
|
632
|
+
name: 'Deals Reviewed / Month',
|
|
633
|
+
category: 'operational',
|
|
634
|
+
target: 200,
|
|
635
|
+
current: 180,
|
|
636
|
+
frequency: 'monthly',
|
|
637
|
+
owner: 'Investment Team',
|
|
638
|
+
},
|
|
639
|
+
{
|
|
640
|
+
name: 'Meetings / Month',
|
|
641
|
+
category: 'operational',
|
|
642
|
+
target: 80,
|
|
643
|
+
current: 65,
|
|
644
|
+
frequency: 'monthly',
|
|
645
|
+
owner: 'Investment Team',
|
|
646
|
+
},
|
|
647
|
+
{
|
|
648
|
+
name: 'Conversion Rate (Meeting to Term Sheet)',
|
|
649
|
+
category: 'operational',
|
|
650
|
+
target: 5,
|
|
651
|
+
current: 4.2,
|
|
652
|
+
unit: '%',
|
|
653
|
+
frequency: 'quarterly',
|
|
654
|
+
owner: 'Investment Team',
|
|
655
|
+
},
|
|
656
|
+
// Portfolio
|
|
657
|
+
{
|
|
658
|
+
name: 'Portfolio Companies',
|
|
659
|
+
category: 'portfolio',
|
|
660
|
+
target: 50,
|
|
661
|
+
current: 42,
|
|
662
|
+
frequency: 'quarterly',
|
|
663
|
+
owner: 'Managing Partner',
|
|
664
|
+
},
|
|
665
|
+
{
|
|
666
|
+
name: 'Unicorns',
|
|
667
|
+
category: 'portfolio',
|
|
668
|
+
target: 10,
|
|
669
|
+
current: 6,
|
|
670
|
+
frequency: 'quarterly',
|
|
671
|
+
owner: 'Managing Partner',
|
|
672
|
+
},
|
|
673
|
+
{
|
|
674
|
+
name: 'Portfolio ARR (Aggregate)',
|
|
675
|
+
category: 'portfolio',
|
|
676
|
+
target: 500000000,
|
|
677
|
+
current: 385000000,
|
|
678
|
+
unit: 'USD',
|
|
679
|
+
frequency: 'quarterly',
|
|
680
|
+
owner: 'Managing Partner',
|
|
681
|
+
},
|
|
682
|
+
// Platform
|
|
683
|
+
{
|
|
684
|
+
name: 'Executive Placements / Year',
|
|
685
|
+
category: 'platform',
|
|
686
|
+
target: 50,
|
|
687
|
+
current: 35,
|
|
688
|
+
frequency: 'yearly',
|
|
689
|
+
owner: 'Head of Platform',
|
|
690
|
+
},
|
|
691
|
+
{
|
|
692
|
+
name: 'Customer Intros / Quarter',
|
|
693
|
+
category: 'platform',
|
|
694
|
+
target: 100,
|
|
695
|
+
current: 75,
|
|
696
|
+
frequency: 'quarterly',
|
|
697
|
+
owner: 'Head of Platform',
|
|
698
|
+
},
|
|
699
|
+
{
|
|
700
|
+
name: 'Founder NPS',
|
|
701
|
+
category: 'customer',
|
|
702
|
+
target: 85,
|
|
703
|
+
current: 78,
|
|
704
|
+
frequency: 'yearly',
|
|
705
|
+
owner: 'Managing Partner',
|
|
706
|
+
},
|
|
707
|
+
// LP Relations
|
|
708
|
+
{
|
|
709
|
+
name: 'LP Re-up Rate',
|
|
710
|
+
category: 'financial',
|
|
711
|
+
target: 90,
|
|
712
|
+
current: 85,
|
|
713
|
+
unit: '%',
|
|
714
|
+
frequency: 'yearly',
|
|
715
|
+
owner: 'IR Manager',
|
|
716
|
+
},
|
|
717
|
+
]);
|
|
718
|
+
// =============================================================================
|
|
719
|
+
// 8. OKRs
|
|
720
|
+
// =============================================================================
|
|
721
|
+
export const CatalystOKRs = okrs([
|
|
722
|
+
{
|
|
723
|
+
objective: 'Close Fund V Successfully',
|
|
724
|
+
owner: 'Managing Partner',
|
|
725
|
+
period: 'H1 2024',
|
|
726
|
+
keyResults: [
|
|
727
|
+
{
|
|
728
|
+
description: 'Raise $500M for Fund V',
|
|
729
|
+
metric: 'Fund Size',
|
|
730
|
+
targetValue: 500000000,
|
|
731
|
+
currentValue: 350000000,
|
|
732
|
+
unit: 'USD',
|
|
733
|
+
},
|
|
734
|
+
{
|
|
735
|
+
description: 'Secure 3 new anchor LPs',
|
|
736
|
+
metric: 'New Anchors',
|
|
737
|
+
targetValue: 3,
|
|
738
|
+
currentValue: 1,
|
|
739
|
+
},
|
|
740
|
+
{
|
|
741
|
+
description: 'Achieve 90% LP re-up rate',
|
|
742
|
+
metric: 'Re-up Rate',
|
|
743
|
+
targetValue: 90,
|
|
744
|
+
currentValue: 85,
|
|
745
|
+
unit: '%',
|
|
746
|
+
},
|
|
747
|
+
],
|
|
748
|
+
},
|
|
749
|
+
{
|
|
750
|
+
objective: 'Build Best-in-Class Investment Team',
|
|
751
|
+
owner: 'Managing Partner',
|
|
752
|
+
period: 'Q1 2024',
|
|
753
|
+
keyResults: [
|
|
754
|
+
{
|
|
755
|
+
description: 'Hire 2 new partners',
|
|
756
|
+
metric: 'Partners Hired',
|
|
757
|
+
targetValue: 2,
|
|
758
|
+
currentValue: 1,
|
|
759
|
+
},
|
|
760
|
+
{
|
|
761
|
+
description: 'Achieve 40% competitive win rate',
|
|
762
|
+
metric: 'Win Rate',
|
|
763
|
+
targetValue: 40,
|
|
764
|
+
currentValue: 35,
|
|
765
|
+
unit: '%',
|
|
766
|
+
},
|
|
767
|
+
{
|
|
768
|
+
description: 'Source 30% deals from network',
|
|
769
|
+
metric: 'Network Sourcing',
|
|
770
|
+
targetValue: 30,
|
|
771
|
+
currentValue: 22,
|
|
772
|
+
unit: '%',
|
|
773
|
+
},
|
|
774
|
+
],
|
|
775
|
+
},
|
|
776
|
+
{
|
|
777
|
+
objective: 'Maximize Portfolio Value',
|
|
778
|
+
owner: 'Portfolio Team',
|
|
779
|
+
period: 'Q1 2024',
|
|
780
|
+
keyResults: [
|
|
781
|
+
{
|
|
782
|
+
description: 'Support 5 portfolio fundraises',
|
|
783
|
+
metric: 'Fundraises Supported',
|
|
784
|
+
targetValue: 5,
|
|
785
|
+
currentValue: 3,
|
|
786
|
+
},
|
|
787
|
+
{
|
|
788
|
+
description: 'Achieve 80% follow-on rate',
|
|
789
|
+
metric: 'Follow-on Rate',
|
|
790
|
+
targetValue: 80,
|
|
791
|
+
currentValue: 72,
|
|
792
|
+
unit: '%',
|
|
793
|
+
},
|
|
794
|
+
{
|
|
795
|
+
description: 'Add 2 new unicorns',
|
|
796
|
+
metric: 'New Unicorns',
|
|
797
|
+
targetValue: 2,
|
|
798
|
+
currentValue: 1,
|
|
799
|
+
},
|
|
800
|
+
],
|
|
801
|
+
},
|
|
802
|
+
{
|
|
803
|
+
objective: 'Scale Platform Impact',
|
|
804
|
+
owner: 'Head of Platform',
|
|
805
|
+
period: 'Q1 2024',
|
|
806
|
+
keyResults: [
|
|
807
|
+
{
|
|
808
|
+
description: 'Place 15 executives',
|
|
809
|
+
metric: 'Executive Placements',
|
|
810
|
+
targetValue: 15,
|
|
811
|
+
currentValue: 8,
|
|
812
|
+
},
|
|
813
|
+
{
|
|
814
|
+
description: 'Make 30 customer intros',
|
|
815
|
+
metric: 'Customer Intros',
|
|
816
|
+
targetValue: 30,
|
|
817
|
+
currentValue: 18,
|
|
818
|
+
},
|
|
819
|
+
{
|
|
820
|
+
description: 'Achieve 85 Founder NPS',
|
|
821
|
+
metric: 'Founder NPS',
|
|
822
|
+
targetValue: 85,
|
|
823
|
+
currentValue: 78,
|
|
824
|
+
},
|
|
825
|
+
],
|
|
826
|
+
},
|
|
827
|
+
]);
|
|
828
|
+
// =============================================================================
|
|
829
|
+
// 9. PROCESSES
|
|
830
|
+
// =============================================================================
|
|
831
|
+
export const DealSourcingProcess = Process({
|
|
832
|
+
name: 'Deal Sourcing',
|
|
833
|
+
description: 'Source and evaluate new investment opportunities',
|
|
834
|
+
owner: 'Investment Team',
|
|
835
|
+
steps: [
|
|
836
|
+
{
|
|
837
|
+
order: 1,
|
|
838
|
+
name: 'Inbound/Outbound',
|
|
839
|
+
description: 'Receive or identify potential deal',
|
|
840
|
+
automationLevel: 'semi-automated',
|
|
841
|
+
duration: 'ongoing',
|
|
842
|
+
},
|
|
843
|
+
{
|
|
844
|
+
order: 2,
|
|
845
|
+
name: 'Initial Screen',
|
|
846
|
+
description: 'Quick assessment against investment criteria',
|
|
847
|
+
automationLevel: 'semi-automated',
|
|
848
|
+
duration: '1 day',
|
|
849
|
+
owner: 'Associate',
|
|
850
|
+
},
|
|
851
|
+
{
|
|
852
|
+
order: 3,
|
|
853
|
+
name: 'First Meeting',
|
|
854
|
+
description: 'Initial meeting with founders',
|
|
855
|
+
automationLevel: 'manual',
|
|
856
|
+
duration: '1 hour',
|
|
857
|
+
owner: 'Principal',
|
|
858
|
+
},
|
|
859
|
+
{
|
|
860
|
+
order: 4,
|
|
861
|
+
name: 'Deep Dive',
|
|
862
|
+
description: 'Extended meeting and product demo',
|
|
863
|
+
automationLevel: 'manual',
|
|
864
|
+
duration: '2 hours',
|
|
865
|
+
owner: 'Partner',
|
|
866
|
+
},
|
|
867
|
+
{
|
|
868
|
+
order: 5,
|
|
869
|
+
name: 'Market Research',
|
|
870
|
+
description: 'Market sizing and competitive analysis',
|
|
871
|
+
automationLevel: 'semi-automated',
|
|
872
|
+
duration: '1 week',
|
|
873
|
+
owner: 'Associate',
|
|
874
|
+
},
|
|
875
|
+
{
|
|
876
|
+
order: 6,
|
|
877
|
+
name: 'Partner Meeting',
|
|
878
|
+
description: 'Present to full partnership',
|
|
879
|
+
automationLevel: 'manual',
|
|
880
|
+
duration: '30 minutes',
|
|
881
|
+
owner: 'Partner',
|
|
882
|
+
},
|
|
883
|
+
{
|
|
884
|
+
order: 7,
|
|
885
|
+
name: 'Due Diligence',
|
|
886
|
+
description: 'Full due diligence process',
|
|
887
|
+
automationLevel: 'manual',
|
|
888
|
+
duration: '2-4 weeks',
|
|
889
|
+
owner: 'Principal',
|
|
890
|
+
},
|
|
891
|
+
{
|
|
892
|
+
order: 8,
|
|
893
|
+
name: 'Investment Committee',
|
|
894
|
+
description: 'Final IC decision',
|
|
895
|
+
automationLevel: 'manual',
|
|
896
|
+
duration: '1 day',
|
|
897
|
+
},
|
|
898
|
+
{
|
|
899
|
+
order: 9,
|
|
900
|
+
name: 'Term Sheet',
|
|
901
|
+
description: 'Issue and negotiate term sheet',
|
|
902
|
+
automationLevel: 'manual',
|
|
903
|
+
duration: '1 week',
|
|
904
|
+
owner: 'Partner',
|
|
905
|
+
},
|
|
906
|
+
{
|
|
907
|
+
order: 10,
|
|
908
|
+
name: 'Close',
|
|
909
|
+
description: 'Legal documentation and close',
|
|
910
|
+
automationLevel: 'manual',
|
|
911
|
+
duration: '2-4 weeks',
|
|
912
|
+
},
|
|
913
|
+
],
|
|
914
|
+
metrics: [
|
|
915
|
+
{ name: 'Time to Decision', target: 4, unit: 'weeks' },
|
|
916
|
+
{ name: 'Win Rate', target: 40, unit: '%' },
|
|
917
|
+
{ name: 'Conversion (Meeting to IC)', target: 10, unit: '%' },
|
|
918
|
+
],
|
|
919
|
+
});
|
|
920
|
+
export const DueDiligenceProcess = Process({
|
|
921
|
+
name: 'Due Diligence',
|
|
922
|
+
description: 'Comprehensive due diligence on investment opportunities',
|
|
923
|
+
owner: 'Investment Team',
|
|
924
|
+
steps: [
|
|
925
|
+
{
|
|
926
|
+
order: 1,
|
|
927
|
+
name: 'Data Room Review',
|
|
928
|
+
description: 'Review company data room',
|
|
929
|
+
automationLevel: 'semi-automated',
|
|
930
|
+
duration: '3 days',
|
|
931
|
+
owner: 'Associate',
|
|
932
|
+
},
|
|
933
|
+
{
|
|
934
|
+
order: 2,
|
|
935
|
+
name: 'Financial Analysis',
|
|
936
|
+
description: 'Financial model review and projections',
|
|
937
|
+
automationLevel: 'manual',
|
|
938
|
+
duration: '1 week',
|
|
939
|
+
owner: 'Principal',
|
|
940
|
+
},
|
|
941
|
+
{
|
|
942
|
+
order: 3,
|
|
943
|
+
name: 'Customer Calls',
|
|
944
|
+
description: 'Reference calls with customers',
|
|
945
|
+
automationLevel: 'manual',
|
|
946
|
+
duration: '1 week',
|
|
947
|
+
owner: 'Principal',
|
|
948
|
+
},
|
|
949
|
+
{
|
|
950
|
+
order: 4,
|
|
951
|
+
name: 'Expert Calls',
|
|
952
|
+
description: 'Industry expert interviews',
|
|
953
|
+
automationLevel: 'manual',
|
|
954
|
+
duration: '1 week',
|
|
955
|
+
owner: 'Associate',
|
|
956
|
+
},
|
|
957
|
+
{
|
|
958
|
+
order: 5,
|
|
959
|
+
name: 'Technical Review',
|
|
960
|
+
description: 'Technology and product assessment',
|
|
961
|
+
automationLevel: 'manual',
|
|
962
|
+
duration: '3 days',
|
|
963
|
+
owner: 'Technical Advisor',
|
|
964
|
+
},
|
|
965
|
+
{
|
|
966
|
+
order: 6,
|
|
967
|
+
name: 'Founder References',
|
|
968
|
+
description: 'Back-channel founder references',
|
|
969
|
+
automationLevel: 'manual',
|
|
970
|
+
duration: '1 week',
|
|
971
|
+
owner: 'Partner',
|
|
972
|
+
},
|
|
973
|
+
{
|
|
974
|
+
order: 7,
|
|
975
|
+
name: 'Legal Review',
|
|
976
|
+
description: 'Cap table and legal review',
|
|
977
|
+
automationLevel: 'semi-automated',
|
|
978
|
+
duration: '3 days',
|
|
979
|
+
owner: 'Legal',
|
|
980
|
+
},
|
|
981
|
+
{
|
|
982
|
+
order: 8,
|
|
983
|
+
name: 'Investment Memo',
|
|
984
|
+
description: 'Write investment memo',
|
|
985
|
+
automationLevel: 'manual',
|
|
986
|
+
duration: '3 days',
|
|
987
|
+
owner: 'Principal',
|
|
988
|
+
},
|
|
989
|
+
],
|
|
990
|
+
metrics: [
|
|
991
|
+
{ name: 'Completion Time', target: 3, unit: 'weeks' },
|
|
992
|
+
{ name: 'Customer Calls', target: 10 },
|
|
993
|
+
{ name: 'Expert Calls', target: 5 },
|
|
994
|
+
],
|
|
995
|
+
});
|
|
996
|
+
export const PortfolioSupportProcess = Process({
|
|
997
|
+
name: 'Portfolio Support',
|
|
998
|
+
description: 'Ongoing support for portfolio companies',
|
|
999
|
+
owner: 'Head of Platform',
|
|
1000
|
+
steps: [
|
|
1001
|
+
{
|
|
1002
|
+
order: 1,
|
|
1003
|
+
name: 'Monthly Check-in',
|
|
1004
|
+
description: 'Monthly sync with CEO',
|
|
1005
|
+
automationLevel: 'manual',
|
|
1006
|
+
duration: '30 minutes',
|
|
1007
|
+
owner: 'Partner',
|
|
1008
|
+
},
|
|
1009
|
+
{
|
|
1010
|
+
order: 2,
|
|
1011
|
+
name: 'Board Meeting',
|
|
1012
|
+
description: 'Quarterly board meeting',
|
|
1013
|
+
automationLevel: 'manual',
|
|
1014
|
+
duration: '3 hours',
|
|
1015
|
+
owner: 'Partner',
|
|
1016
|
+
},
|
|
1017
|
+
{
|
|
1018
|
+
order: 3,
|
|
1019
|
+
name: 'Platform Support',
|
|
1020
|
+
description: 'Talent, GTM, technical support',
|
|
1021
|
+
automationLevel: 'manual',
|
|
1022
|
+
duration: 'ongoing',
|
|
1023
|
+
owner: 'Platform Team',
|
|
1024
|
+
},
|
|
1025
|
+
{
|
|
1026
|
+
order: 4,
|
|
1027
|
+
name: 'Fundraising Support',
|
|
1028
|
+
description: 'Support next round fundraising',
|
|
1029
|
+
automationLevel: 'manual',
|
|
1030
|
+
duration: '3 months',
|
|
1031
|
+
owner: 'Partner',
|
|
1032
|
+
},
|
|
1033
|
+
{
|
|
1034
|
+
order: 5,
|
|
1035
|
+
name: 'Strategic Planning',
|
|
1036
|
+
description: 'Annual strategic planning',
|
|
1037
|
+
automationLevel: 'manual',
|
|
1038
|
+
duration: '1 day',
|
|
1039
|
+
owner: 'Partner',
|
|
1040
|
+
},
|
|
1041
|
+
],
|
|
1042
|
+
metrics: [
|
|
1043
|
+
{ name: 'Founder NPS', target: 85 },
|
|
1044
|
+
{ name: 'Follow-on Rate', target: 80, unit: '%' },
|
|
1045
|
+
{ name: 'Board Attendance', target: 100, unit: '%' },
|
|
1046
|
+
],
|
|
1047
|
+
});
|
|
1048
|
+
// =============================================================================
|
|
1049
|
+
// 10. WORKFLOWS
|
|
1050
|
+
// =============================================================================
|
|
1051
|
+
export const DealScreeningWorkflow = Workflow({
|
|
1052
|
+
name: 'Deal Screening',
|
|
1053
|
+
description: 'Automated initial deal screening',
|
|
1054
|
+
trigger: { type: 'event', event: 'deal.submitted' },
|
|
1055
|
+
actions: [
|
|
1056
|
+
{
|
|
1057
|
+
order: 1,
|
|
1058
|
+
type: 'compute',
|
|
1059
|
+
name: 'Parse Deal Info',
|
|
1060
|
+
config: {
|
|
1061
|
+
extract: ['company', 'stage', 'sector', 'metrics', 'founders'],
|
|
1062
|
+
},
|
|
1063
|
+
},
|
|
1064
|
+
{
|
|
1065
|
+
order: 2,
|
|
1066
|
+
type: 'compute',
|
|
1067
|
+
name: 'Thesis Fit Score',
|
|
1068
|
+
config: {
|
|
1069
|
+
criteria: ['sector_fit', 'stage_fit', 'metrics_threshold', 'team_background'],
|
|
1070
|
+
weights: [0.3, 0.2, 0.3, 0.2],
|
|
1071
|
+
},
|
|
1072
|
+
},
|
|
1073
|
+
{
|
|
1074
|
+
order: 3,
|
|
1075
|
+
type: 'api',
|
|
1076
|
+
name: 'Enrich Company Data',
|
|
1077
|
+
config: {
|
|
1078
|
+
sources: ['pitchbook', 'crunchbase', 'linkedin'],
|
|
1079
|
+
},
|
|
1080
|
+
},
|
|
1081
|
+
{
|
|
1082
|
+
order: 4,
|
|
1083
|
+
type: 'condition',
|
|
1084
|
+
name: 'Check Fit Score',
|
|
1085
|
+
condition: 'fitScore >= 70',
|
|
1086
|
+
},
|
|
1087
|
+
{
|
|
1088
|
+
order: 5,
|
|
1089
|
+
type: 'notification',
|
|
1090
|
+
name: 'Alert Team',
|
|
1091
|
+
config: {
|
|
1092
|
+
channel: 'slack',
|
|
1093
|
+
template: 'high_priority_deal',
|
|
1094
|
+
to: '#deal-flow',
|
|
1095
|
+
},
|
|
1096
|
+
},
|
|
1097
|
+
{
|
|
1098
|
+
order: 6,
|
|
1099
|
+
type: 'task',
|
|
1100
|
+
name: 'Assign Review',
|
|
1101
|
+
config: {
|
|
1102
|
+
type: 'deal-review',
|
|
1103
|
+
assignTo: 'associate',
|
|
1104
|
+
dueIn: '24 hours',
|
|
1105
|
+
},
|
|
1106
|
+
},
|
|
1107
|
+
],
|
|
1108
|
+
});
|
|
1109
|
+
export const PortfolioMonitoringWorkflow = Workflow({
|
|
1110
|
+
name: 'Portfolio Monitoring',
|
|
1111
|
+
description: 'Weekly portfolio health monitoring',
|
|
1112
|
+
trigger: { type: 'schedule', cron: '0 9 * * 1' }, // Weekly Monday 9am
|
|
1113
|
+
actions: [
|
|
1114
|
+
{
|
|
1115
|
+
order: 1,
|
|
1116
|
+
type: 'api',
|
|
1117
|
+
name: 'Collect Metrics',
|
|
1118
|
+
config: {
|
|
1119
|
+
sources: ['portfolio_dashboard', 'financial_reports'],
|
|
1120
|
+
metrics: ['arr', 'growth', 'runway', 'team_changes'],
|
|
1121
|
+
},
|
|
1122
|
+
},
|
|
1123
|
+
{
|
|
1124
|
+
order: 2,
|
|
1125
|
+
type: 'compute',
|
|
1126
|
+
name: 'Calculate Health Scores',
|
|
1127
|
+
config: {
|
|
1128
|
+
factors: ['revenue_growth', 'burn_rate', 'runway', 'retention'],
|
|
1129
|
+
},
|
|
1130
|
+
},
|
|
1131
|
+
{
|
|
1132
|
+
order: 3,
|
|
1133
|
+
type: 'condition',
|
|
1134
|
+
name: 'Check At Risk',
|
|
1135
|
+
condition: 'healthScore < 60 || runway < 9',
|
|
1136
|
+
},
|
|
1137
|
+
{
|
|
1138
|
+
order: 4,
|
|
1139
|
+
type: 'notification',
|
|
1140
|
+
name: 'Alert Partner',
|
|
1141
|
+
config: {
|
|
1142
|
+
channel: 'email',
|
|
1143
|
+
template: 'portfolio_alert',
|
|
1144
|
+
priority: 'high',
|
|
1145
|
+
},
|
|
1146
|
+
},
|
|
1147
|
+
{
|
|
1148
|
+
order: 5,
|
|
1149
|
+
type: 'task',
|
|
1150
|
+
name: 'Schedule Check-in',
|
|
1151
|
+
config: {
|
|
1152
|
+
type: 'portfolio-checkin',
|
|
1153
|
+
assignTo: 'partner',
|
|
1154
|
+
dueIn: '48 hours',
|
|
1155
|
+
},
|
|
1156
|
+
},
|
|
1157
|
+
],
|
|
1158
|
+
});
|
|
1159
|
+
export const LPReportingWorkflow = Workflow({
|
|
1160
|
+
name: 'LP Reporting',
|
|
1161
|
+
description: 'Quarterly LP reporting process',
|
|
1162
|
+
trigger: { type: 'schedule', cron: '0 9 1 */3 *' }, // Quarterly
|
|
1163
|
+
actions: [
|
|
1164
|
+
{
|
|
1165
|
+
order: 1,
|
|
1166
|
+
type: 'api',
|
|
1167
|
+
name: 'Aggregate Data',
|
|
1168
|
+
config: {
|
|
1169
|
+
collect: ['portfolio_metrics', 'fund_performance', 'new_investments', 'exits'],
|
|
1170
|
+
},
|
|
1171
|
+
},
|
|
1172
|
+
{
|
|
1173
|
+
order: 2,
|
|
1174
|
+
type: 'task',
|
|
1175
|
+
name: 'Update Valuations',
|
|
1176
|
+
config: {
|
|
1177
|
+
type: 'valuation-update',
|
|
1178
|
+
assignTo: 'finance',
|
|
1179
|
+
dueIn: '1 week',
|
|
1180
|
+
},
|
|
1181
|
+
},
|
|
1182
|
+
{
|
|
1183
|
+
order: 3,
|
|
1184
|
+
type: 'task',
|
|
1185
|
+
name: 'Draft Report',
|
|
1186
|
+
config: {
|
|
1187
|
+
type: 'lp-report-draft',
|
|
1188
|
+
assignTo: 'ir-manager',
|
|
1189
|
+
dueIn: '2 weeks',
|
|
1190
|
+
},
|
|
1191
|
+
},
|
|
1192
|
+
{
|
|
1193
|
+
order: 4,
|
|
1194
|
+
type: 'task',
|
|
1195
|
+
name: 'Partner Review',
|
|
1196
|
+
config: {
|
|
1197
|
+
type: 'report-review',
|
|
1198
|
+
assignTo: 'managing-partner',
|
|
1199
|
+
dueIn: '1 week',
|
|
1200
|
+
},
|
|
1201
|
+
},
|
|
1202
|
+
{
|
|
1203
|
+
order: 5,
|
|
1204
|
+
type: 'notification',
|
|
1205
|
+
name: 'Send to LPs',
|
|
1206
|
+
config: {
|
|
1207
|
+
channel: 'email',
|
|
1208
|
+
template: 'quarterly_lp_report',
|
|
1209
|
+
to: 'lps',
|
|
1210
|
+
},
|
|
1211
|
+
},
|
|
1212
|
+
],
|
|
1213
|
+
});
|
|
1214
|
+
// =============================================================================
|
|
1215
|
+
// 11. FINANCIALS
|
|
1216
|
+
// =============================================================================
|
|
1217
|
+
export const CatalystFinancials = financials({
|
|
1218
|
+
revenue: 33500000, // Management fees (2% of AUM)
|
|
1219
|
+
cogs: 0,
|
|
1220
|
+
operatingExpenses: 25000000,
|
|
1221
|
+
depreciation: 100000,
|
|
1222
|
+
interestExpense: 0,
|
|
1223
|
+
otherIncome: 0,
|
|
1224
|
+
taxes: 2000000,
|
|
1225
|
+
});
|
|
1226
|
+
export const FirmMetrics = {
|
|
1227
|
+
aum: 1675000000,
|
|
1228
|
+
managementFee: 0.02, // 2%
|
|
1229
|
+
carry: 0.20, // 20%
|
|
1230
|
+
managementFeeRevenue: 33500000,
|
|
1231
|
+
realizedCarry: 45000000, // From exits
|
|
1232
|
+
portfolio: {
|
|
1233
|
+
companies: 42,
|
|
1234
|
+
activeBoard: 18,
|
|
1235
|
+
unicorns: 6,
|
|
1236
|
+
totalInvested: 680000000,
|
|
1237
|
+
totalMarkValue: 1250000000,
|
|
1238
|
+
aggregateArr: 385000000,
|
|
1239
|
+
},
|
|
1240
|
+
dealFlow: {
|
|
1241
|
+
dealsReviewedYearly: 2200,
|
|
1242
|
+
meetingsYearly: 800,
|
|
1243
|
+
investmentsYearly: 12,
|
|
1244
|
+
conversionRate: 0.5, // %
|
|
1245
|
+
},
|
|
1246
|
+
team: {
|
|
1247
|
+
partners: 4,
|
|
1248
|
+
principals: 4,
|
|
1249
|
+
associates: 4,
|
|
1250
|
+
platform: 8,
|
|
1251
|
+
operations: 5,
|
|
1252
|
+
},
|
|
1253
|
+
performance: {
|
|
1254
|
+
blendedIrr: 28,
|
|
1255
|
+
blendedTvpi: 2.8,
|
|
1256
|
+
blendedDpi: 1.2,
|
|
1257
|
+
},
|
|
1258
|
+
};
|
|
1259
|
+
// =============================================================================
|
|
1260
|
+
// 12. UTILITY FUNCTIONS
|
|
1261
|
+
// =============================================================================
|
|
1262
|
+
export function getBusinessSummary() {
|
|
1263
|
+
return {
|
|
1264
|
+
company: CatalystVenturesBusiness,
|
|
1265
|
+
vision: CatalystVision,
|
|
1266
|
+
goals: CatalystGoals,
|
|
1267
|
+
funds: Funds,
|
|
1268
|
+
portfolio: Portfolio,
|
|
1269
|
+
services: PlatformServices,
|
|
1270
|
+
kpis: CatalystKPIs,
|
|
1271
|
+
okrs: CatalystOKRs,
|
|
1272
|
+
financials: CatalystFinancials,
|
|
1273
|
+
metrics: FirmMetrics,
|
|
1274
|
+
};
|
|
1275
|
+
}
|
|
1276
|
+
export function getFundPerformance() {
|
|
1277
|
+
return Funds.map(f => ({
|
|
1278
|
+
name: f.name,
|
|
1279
|
+
vintage: f.vintage,
|
|
1280
|
+
size: $.format(f.size),
|
|
1281
|
+
deployed: `${((f.deployed / f.size) * 100).toFixed(0)}%`,
|
|
1282
|
+
tvpi: f.metrics?.tvpi ? `${f.metrics.tvpi}x` : 'N/A',
|
|
1283
|
+
irr: f.metrics?.irr ? `${f.metrics.irr}%` : 'N/A',
|
|
1284
|
+
status: f.status,
|
|
1285
|
+
}));
|
|
1286
|
+
}
|
|
1287
|
+
export function getPortfolioSummary() {
|
|
1288
|
+
const active = Portfolio.filter(c => c.status === 'active');
|
|
1289
|
+
const totalValue = active.reduce((sum, c) => sum + (c.markValue || 0), 0);
|
|
1290
|
+
const totalInvested = active.reduce((sum, c) => sum + c.invested, 0);
|
|
1291
|
+
return {
|
|
1292
|
+
companies: active.length,
|
|
1293
|
+
totalInvested: $.format(totalInvested),
|
|
1294
|
+
totalValue: $.format(totalValue),
|
|
1295
|
+
moic: (totalValue / totalInvested).toFixed(2) + 'x',
|
|
1296
|
+
unicorns: active.filter(c => (c.currentValuation || 0) >= 1000000000).length,
|
|
1297
|
+
};
|
|
1298
|
+
}
|
|
1299
|
+
export function getTopCompanies(n = 5) {
|
|
1300
|
+
return Portfolio
|
|
1301
|
+
.filter(c => c.status === 'active' && c.markValue)
|
|
1302
|
+
.sort((a, b) => (b.markValue || 0) - (a.markValue || 0))
|
|
1303
|
+
.slice(0, n)
|
|
1304
|
+
.map(c => ({
|
|
1305
|
+
name: c.name,
|
|
1306
|
+
stage: c.stage,
|
|
1307
|
+
value: $.format(c.markValue),
|
|
1308
|
+
ownership: `${c.ownership}%`,
|
|
1309
|
+
arr: c.metrics?.arr ? $.format(c.metrics.arr) : 'N/A',
|
|
1310
|
+
}));
|
|
1311
|
+
}
|
|
1312
|
+
export default {
|
|
1313
|
+
business: CatalystVenturesBusiness,
|
|
1314
|
+
vision: CatalystVision,
|
|
1315
|
+
goals: CatalystGoals,
|
|
1316
|
+
funds: Funds,
|
|
1317
|
+
portfolio: Portfolio,
|
|
1318
|
+
services: PlatformServices,
|
|
1319
|
+
organization: CatalystOrg,
|
|
1320
|
+
kpis: CatalystKPIs,
|
|
1321
|
+
okrs: CatalystOKRs,
|
|
1322
|
+
processes: {
|
|
1323
|
+
dealSourcing: DealSourcingProcess,
|
|
1324
|
+
dueDiligence: DueDiligenceProcess,
|
|
1325
|
+
portfolioSupport: PortfolioSupportProcess,
|
|
1326
|
+
},
|
|
1327
|
+
workflows: {
|
|
1328
|
+
dealScreening: DealScreeningWorkflow,
|
|
1329
|
+
portfolioMonitoring: PortfolioMonitoringWorkflow,
|
|
1330
|
+
lpReporting: LPReportingWorkflow,
|
|
1331
|
+
},
|
|
1332
|
+
financials: CatalystFinancials,
|
|
1333
|
+
metrics: FirmMetrics,
|
|
1334
|
+
};
|
|
1335
|
+
//# sourceMappingURL=index.js.map
|