@sprinterai/runtime 0.6.0 → 0.7.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/dist/index.d.ts +11 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -0
- package/dist/index.js.map +1 -1
- package/dist/inngest/create-extraction-functions.d.ts +71 -0
- package/dist/inngest/create-extraction-functions.d.ts.map +1 -0
- package/dist/inngest/create-extraction-functions.js +71 -0
- package/dist/inngest/create-extraction-functions.js.map +1 -0
- package/dist/inngest/event-names.d.ts +20 -0
- package/dist/inngest/event-names.d.ts.map +1 -0
- package/dist/inngest/event-names.js +19 -0
- package/dist/inngest/event-names.js.map +1 -0
- package/dist/inngest/index.d.ts +5 -0
- package/dist/inngest/index.d.ts.map +1 -0
- package/dist/inngest/index.js +3 -0
- package/dist/inngest/index.js.map +1 -0
- package/dist/package-exports.test.d.ts +2 -0
- package/dist/package-exports.test.d.ts.map +1 -0
- package/dist/package-exports.test.js +36 -0
- package/dist/package-exports.test.js.map +1 -0
- package/dist/tool/gallery/gallery-module.d.ts +4 -0
- package/dist/tool/gallery/gallery-module.d.ts.map +1 -0
- package/dist/tool/gallery/gallery-module.js +10 -0
- package/dist/tool/gallery/gallery-module.js.map +1 -0
- package/dist/tool/gallery/gallery-tool-definitions.d.ts +17 -0
- package/dist/tool/gallery/gallery-tool-definitions.d.ts.map +1 -0
- package/dist/tool/gallery/gallery-tool-definitions.js +748 -0
- package/dist/tool/gallery/gallery-tool-definitions.js.map +1 -0
- package/dist/tool/gallery/gallery-tools.d.ts +11 -0
- package/dist/tool/gallery/gallery-tools.d.ts.map +1 -0
- package/dist/tool/gallery/gallery-tools.js +971 -0
- package/dist/tool/gallery/gallery-tools.js.map +1 -0
- package/dist/tool/gallery/gallery-tools.test.d.ts +2 -0
- package/dist/tool/gallery/gallery-tools.test.d.ts.map +1 -0
- package/dist/tool/gallery/gallery-tools.test.js +75 -0
- package/dist/tool/gallery/gallery-tools.test.js.map +1 -0
- package/dist/tool/gallery/index.d.ts +5 -0
- package/dist/tool/gallery/index.d.ts.map +1 -0
- package/dist/tool/gallery/index.js +4 -0
- package/dist/tool/gallery/index.js.map +1 -0
- package/dist/tool/index.d.ts +9 -7
- package/dist/tool/index.d.ts.map +1 -1
- package/dist/tool/index.js +6 -5
- package/dist/tool/index.js.map +1 -1
- package/dist/tool/tool-registry.d.ts +1 -1
- package/dist/tool/tool-registry.d.ts.map +1 -1
- package/dist/tool/tool-registry.js +1 -0
- package/dist/tool/tool-registry.js.map +1 -1
- package/dist/tool/tool-registry.test.js +7 -0
- package/dist/tool/tool-registry.test.js.map +1 -1
- package/dist/workflow/create-node-executor.d.ts +40 -0
- package/dist/workflow/create-node-executor.d.ts.map +1 -0
- package/dist/workflow/create-node-executor.js +234 -0
- package/dist/workflow/create-node-executor.js.map +1 -0
- package/dist/workflow/field-recovery.d.ts +12 -0
- package/dist/workflow/field-recovery.d.ts.map +1 -0
- package/dist/workflow/field-recovery.js +86 -0
- package/dist/workflow/field-recovery.js.map +1 -0
- package/dist/workflow/index.d.ts +5 -0
- package/dist/workflow/index.d.ts.map +1 -1
- package/dist/workflow/index.js +3 -0
- package/dist/workflow/index.js.map +1 -1
- package/dist/workflow/run-entity-workflow.d.ts +53 -0
- package/dist/workflow/run-entity-workflow.d.ts.map +1 -0
- package/dist/workflow/run-entity-workflow.js +72 -0
- package/dist/workflow/run-entity-workflow.js.map +1 -0
- package/package.json +123 -3
|
@@ -0,0 +1,748 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Gallery tool definitions — structured tool definitions for all 17 interactive
|
|
3
|
+
* demo tools. Each definition includes a JSON Schema compatible with GenericToolForm.
|
|
4
|
+
*
|
|
5
|
+
* Used by the seed endpoint to populate the tools table.
|
|
6
|
+
*/
|
|
7
|
+
export const galleryToolDefinitions = [
|
|
8
|
+
// ── Roofing & Home Services ──────────────────────────────────────────
|
|
9
|
+
{
|
|
10
|
+
slug: 'roof-readiness-check',
|
|
11
|
+
name: 'Roof Readiness Check',
|
|
12
|
+
description: 'Help homeowners understand if they likely need repair, replacement, or a professional inspection first.',
|
|
13
|
+
type: 'quiz',
|
|
14
|
+
category: 'roofing',
|
|
15
|
+
icon: 'home',
|
|
16
|
+
schema: {
|
|
17
|
+
type: 'object',
|
|
18
|
+
properties: {
|
|
19
|
+
roofAge: {
|
|
20
|
+
type: 'string',
|
|
21
|
+
description: 'Roof age',
|
|
22
|
+
enum: ['Under 10 years', '10–19 years', '20–24 years', '25+ years'],
|
|
23
|
+
default: '20–24 years',
|
|
24
|
+
},
|
|
25
|
+
symptom: {
|
|
26
|
+
type: 'string',
|
|
27
|
+
description: 'Main symptom',
|
|
28
|
+
enum: [
|
|
29
|
+
'Granule loss / cosmetic wear',
|
|
30
|
+
'Missing shingles or flashing concern',
|
|
31
|
+
'Active leak or interior staining',
|
|
32
|
+
'Sagging / structural concern',
|
|
33
|
+
],
|
|
34
|
+
default: 'Active leak or interior staining',
|
|
35
|
+
},
|
|
36
|
+
stormStatus: {
|
|
37
|
+
type: 'string',
|
|
38
|
+
description: 'Storm / insurance context',
|
|
39
|
+
enum: [
|
|
40
|
+
'No known storm event',
|
|
41
|
+
'Storm damage suspected',
|
|
42
|
+
'Known storm / claim discussion',
|
|
43
|
+
],
|
|
44
|
+
default: 'Storm damage suspected',
|
|
45
|
+
},
|
|
46
|
+
timeline: {
|
|
47
|
+
type: 'string',
|
|
48
|
+
description: 'Homeowner timeline',
|
|
49
|
+
enum: ['Just exploring', 'This month', 'This week', 'Need help immediately'],
|
|
50
|
+
default: 'This week',
|
|
51
|
+
},
|
|
52
|
+
},
|
|
53
|
+
required: ['roofAge', 'symptom', 'stormStatus', 'timeline'],
|
|
54
|
+
},
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
slug: 'project-budget-estimator',
|
|
58
|
+
name: 'Project Budget Estimator',
|
|
59
|
+
description: 'Give homeowners a rough project cost band before they ever talk to sales.',
|
|
60
|
+
type: 'calculator',
|
|
61
|
+
category: 'roofing',
|
|
62
|
+
icon: 'calculator',
|
|
63
|
+
schema: {
|
|
64
|
+
type: 'object',
|
|
65
|
+
properties: {
|
|
66
|
+
squares: {
|
|
67
|
+
type: 'integer',
|
|
68
|
+
description: 'Roof size (squares)',
|
|
69
|
+
minimum: 12,
|
|
70
|
+
maximum: 60,
|
|
71
|
+
default: 28,
|
|
72
|
+
},
|
|
73
|
+
material: {
|
|
74
|
+
type: 'string',
|
|
75
|
+
description: 'Material tier',
|
|
76
|
+
enum: [
|
|
77
|
+
'Architectural shingle',
|
|
78
|
+
'Premium shingle',
|
|
79
|
+
'Standing seam metal',
|
|
80
|
+
'Tile / specialty roof',
|
|
81
|
+
],
|
|
82
|
+
default: 'Architectural shingle',
|
|
83
|
+
},
|
|
84
|
+
complexity: {
|
|
85
|
+
type: 'string',
|
|
86
|
+
description: 'Complexity',
|
|
87
|
+
enum: [
|
|
88
|
+
'Simple roofline',
|
|
89
|
+
'Moderate tear-off / complexity',
|
|
90
|
+
'Steep pitch / complex details',
|
|
91
|
+
],
|
|
92
|
+
default: 'Moderate tear-off / complexity',
|
|
93
|
+
},
|
|
94
|
+
insuranceCredit: {
|
|
95
|
+
type: 'string',
|
|
96
|
+
description: 'Assumed insurance contribution',
|
|
97
|
+
enum: [
|
|
98
|
+
'No claim contribution',
|
|
99
|
+
'$3,000 contribution',
|
|
100
|
+
'$7,000 contribution',
|
|
101
|
+
'$12,000 contribution',
|
|
102
|
+
],
|
|
103
|
+
default: 'No claim contribution',
|
|
104
|
+
},
|
|
105
|
+
},
|
|
106
|
+
required: ['squares', 'material', 'complexity', 'insuranceCredit'],
|
|
107
|
+
},
|
|
108
|
+
},
|
|
109
|
+
// ── Mortgage & Lending ───────────────────────────────────────────────
|
|
110
|
+
{
|
|
111
|
+
slug: 'borrower-scenario-studio',
|
|
112
|
+
name: 'Borrower Scenario Studio',
|
|
113
|
+
description: 'Let borrowers test the real impact of rate, down payment, and timeline changes on their monthly payment.',
|
|
114
|
+
type: 'calculator',
|
|
115
|
+
category: 'mortgage',
|
|
116
|
+
icon: 'landmark',
|
|
117
|
+
schema: {
|
|
118
|
+
type: 'object',
|
|
119
|
+
properties: {
|
|
120
|
+
purchasePrice: {
|
|
121
|
+
type: 'integer',
|
|
122
|
+
description: 'Purchase price ($)',
|
|
123
|
+
minimum: 250000,
|
|
124
|
+
maximum: 1200000,
|
|
125
|
+
default: 640000,
|
|
126
|
+
},
|
|
127
|
+
downPaymentPct: {
|
|
128
|
+
type: 'integer',
|
|
129
|
+
description: 'Down payment (%)',
|
|
130
|
+
minimum: 3,
|
|
131
|
+
maximum: 30,
|
|
132
|
+
default: 10,
|
|
133
|
+
},
|
|
134
|
+
creditRange: {
|
|
135
|
+
type: 'string',
|
|
136
|
+
description: 'Credit range',
|
|
137
|
+
enum: ['660–699', '700–719', '720–739', '740+'],
|
|
138
|
+
default: '720–739',
|
|
139
|
+
},
|
|
140
|
+
timeline: {
|
|
141
|
+
type: 'string',
|
|
142
|
+
description: 'Move timeline',
|
|
143
|
+
enum: ['30 days', '60 days', '90 days', '6+ months'],
|
|
144
|
+
default: '90 days',
|
|
145
|
+
},
|
|
146
|
+
},
|
|
147
|
+
required: ['purchasePrice', 'downPaymentPct', 'creditRange', 'timeline'],
|
|
148
|
+
},
|
|
149
|
+
},
|
|
150
|
+
{
|
|
151
|
+
slug: 'refi-savings-audit',
|
|
152
|
+
name: 'Refi Savings Audit',
|
|
153
|
+
description: 'Help homeowners see whether a refinance conversation is worth having now.',
|
|
154
|
+
type: 'audit',
|
|
155
|
+
category: 'mortgage',
|
|
156
|
+
icon: 'percent',
|
|
157
|
+
schema: {
|
|
158
|
+
type: 'object',
|
|
159
|
+
properties: {
|
|
160
|
+
currentBalance: {
|
|
161
|
+
type: 'integer',
|
|
162
|
+
description: 'Current balance ($)',
|
|
163
|
+
minimum: 150000,
|
|
164
|
+
maximum: 900000,
|
|
165
|
+
default: 412000,
|
|
166
|
+
},
|
|
167
|
+
currentRate: {
|
|
168
|
+
type: 'string',
|
|
169
|
+
description: 'Current rate',
|
|
170
|
+
enum: ['6.125%', '6.500%', '6.875%', '7.250%'],
|
|
171
|
+
default: '6.875%',
|
|
172
|
+
},
|
|
173
|
+
homeValue: {
|
|
174
|
+
type: 'integer',
|
|
175
|
+
description: 'Estimated home value ($)',
|
|
176
|
+
minimum: 250000,
|
|
177
|
+
maximum: 1200000,
|
|
178
|
+
default: 615000,
|
|
179
|
+
},
|
|
180
|
+
cashOutGoal: {
|
|
181
|
+
type: 'string',
|
|
182
|
+
description: 'Cash-out goal',
|
|
183
|
+
enum: ['No cash-out', '$25,000', '$50,000', '$75,000'],
|
|
184
|
+
default: 'No cash-out',
|
|
185
|
+
},
|
|
186
|
+
},
|
|
187
|
+
required: ['currentBalance', 'currentRate', 'homeValue', 'cashOutGoal'],
|
|
188
|
+
},
|
|
189
|
+
},
|
|
190
|
+
// ── Building Products ────────────────────────────────────────────────
|
|
191
|
+
{
|
|
192
|
+
slug: 'material-match-selector',
|
|
193
|
+
name: 'Material Match Selector',
|
|
194
|
+
description: 'Guide specifiers to the right product family based on environment, budget, and install constraints.',
|
|
195
|
+
type: 'selector',
|
|
196
|
+
category: 'building-products',
|
|
197
|
+
icon: 'layers',
|
|
198
|
+
schema: {
|
|
199
|
+
type: 'object',
|
|
200
|
+
properties: {
|
|
201
|
+
application: {
|
|
202
|
+
type: 'string',
|
|
203
|
+
description: 'Application',
|
|
204
|
+
enum: [
|
|
205
|
+
'Exterior cladding',
|
|
206
|
+
'Multifamily retrofit',
|
|
207
|
+
'Commercial interior',
|
|
208
|
+
'Residential finish package',
|
|
209
|
+
],
|
|
210
|
+
default: 'Exterior cladding',
|
|
211
|
+
},
|
|
212
|
+
environment: {
|
|
213
|
+
type: 'string',
|
|
214
|
+
description: 'Environment',
|
|
215
|
+
enum: [
|
|
216
|
+
'Coastal / humidity-heavy',
|
|
217
|
+
'Freeze-thaw exposure',
|
|
218
|
+
'Standard weather exposure',
|
|
219
|
+
'Interior / dry environment',
|
|
220
|
+
],
|
|
221
|
+
default: 'Coastal / humidity-heavy',
|
|
222
|
+
},
|
|
223
|
+
budget: {
|
|
224
|
+
type: 'string',
|
|
225
|
+
description: 'Budget tier',
|
|
226
|
+
enum: ['Value-focused', 'Mid-range', 'Premium'],
|
|
227
|
+
default: 'Mid-range',
|
|
228
|
+
},
|
|
229
|
+
priority: {
|
|
230
|
+
type: 'string',
|
|
231
|
+
description: 'Primary priority',
|
|
232
|
+
enum: ['Low maintenance', 'Design flexibility', 'Install speed', 'Cleaner code path'],
|
|
233
|
+
default: 'Cleaner code path',
|
|
234
|
+
},
|
|
235
|
+
},
|
|
236
|
+
required: ['application', 'environment', 'budget', 'priority'],
|
|
237
|
+
},
|
|
238
|
+
},
|
|
239
|
+
{
|
|
240
|
+
slug: 'spec-readiness-audit',
|
|
241
|
+
name: 'Spec Readiness Audit',
|
|
242
|
+
description: 'Expose missing inputs before an architect or contractor sends an incomplete request.',
|
|
243
|
+
type: 'audit',
|
|
244
|
+
category: 'building-products',
|
|
245
|
+
icon: 'clipboard-check',
|
|
246
|
+
schema: {
|
|
247
|
+
type: 'object',
|
|
248
|
+
properties: {
|
|
249
|
+
projectType: {
|
|
250
|
+
type: 'string',
|
|
251
|
+
description: 'Project type',
|
|
252
|
+
enum: [
|
|
253
|
+
'Multifamily retrofit',
|
|
254
|
+
'New commercial build',
|
|
255
|
+
'Tenant improvement',
|
|
256
|
+
'Custom residential',
|
|
257
|
+
],
|
|
258
|
+
default: 'Multifamily retrofit',
|
|
259
|
+
},
|
|
260
|
+
substrateStatus: {
|
|
261
|
+
type: 'string',
|
|
262
|
+
description: 'Substrate status',
|
|
263
|
+
enum: ['Unknown', 'Assumed but unverified', 'Confirmed'],
|
|
264
|
+
default: 'Unknown',
|
|
265
|
+
},
|
|
266
|
+
installMethod: {
|
|
267
|
+
type: 'string',
|
|
268
|
+
description: 'Install method',
|
|
269
|
+
enum: ['Undecided', 'Direct attach', 'Clip / rail system', 'Panelized assembly'],
|
|
270
|
+
default: 'Undecided',
|
|
271
|
+
},
|
|
272
|
+
compliance: {
|
|
273
|
+
type: 'string',
|
|
274
|
+
description: 'Compliance path',
|
|
275
|
+
enum: [
|
|
276
|
+
'Standard code review',
|
|
277
|
+
'NFPA / fire path needed',
|
|
278
|
+
'Acoustic performance needed',
|
|
279
|
+
'Energy / envelope focus',
|
|
280
|
+
],
|
|
281
|
+
default: 'NFPA / fire path needed',
|
|
282
|
+
},
|
|
283
|
+
},
|
|
284
|
+
required: ['projectType', 'substrateStatus', 'installMethod', 'compliance'],
|
|
285
|
+
},
|
|
286
|
+
},
|
|
287
|
+
// ── Legal Intake ─────────────────────────────────────────────────────
|
|
288
|
+
{
|
|
289
|
+
slug: 'matter-fit-screener',
|
|
290
|
+
name: 'Matter Fit Screener',
|
|
291
|
+
description: 'Let prospects understand likely case fit before waiting on a callback.',
|
|
292
|
+
type: 'quiz',
|
|
293
|
+
category: 'legal-intake',
|
|
294
|
+
icon: 'scale',
|
|
295
|
+
schema: {
|
|
296
|
+
type: 'object',
|
|
297
|
+
properties: {
|
|
298
|
+
practiceArea: {
|
|
299
|
+
type: 'string',
|
|
300
|
+
description: 'Practice area',
|
|
301
|
+
enum: ['Personal Injury', 'Employment', 'Immigration', 'Consumer Protection'],
|
|
302
|
+
default: 'Personal Injury',
|
|
303
|
+
},
|
|
304
|
+
incidentType: {
|
|
305
|
+
type: 'string',
|
|
306
|
+
description: 'Incident / event type',
|
|
307
|
+
enum: [
|
|
308
|
+
'Auto accident',
|
|
309
|
+
'Workplace injury',
|
|
310
|
+
'Product liability',
|
|
311
|
+
'Wrongful termination',
|
|
312
|
+
'Wage / hour dispute',
|
|
313
|
+
'Visa application',
|
|
314
|
+
'Billing or contract dispute',
|
|
315
|
+
'Other',
|
|
316
|
+
],
|
|
317
|
+
default: 'Auto accident',
|
|
318
|
+
},
|
|
319
|
+
timeline: {
|
|
320
|
+
type: 'string',
|
|
321
|
+
description: 'Timeline since incident',
|
|
322
|
+
enum: ['Less than 30 days', '30–90 days', 'More than 90 days', 'No deadline yet'],
|
|
323
|
+
default: 'Less than 30 days',
|
|
324
|
+
},
|
|
325
|
+
evidence: {
|
|
326
|
+
type: 'string',
|
|
327
|
+
description: 'Evidence available',
|
|
328
|
+
enum: ['None gathered yet', 'Some (photos, records, etc.)', 'Extensive documentation'],
|
|
329
|
+
default: 'Some (photos, records, etc.)',
|
|
330
|
+
},
|
|
331
|
+
},
|
|
332
|
+
required: ['practiceArea', 'incidentType', 'timeline', 'evidence'],
|
|
333
|
+
},
|
|
334
|
+
},
|
|
335
|
+
// ── Healthcare & Clinics ─────────────────────────────────────────────
|
|
336
|
+
{
|
|
337
|
+
slug: 'consult-readiness-navigator',
|
|
338
|
+
name: 'Consult Readiness Navigator',
|
|
339
|
+
description: 'Guide patients through fit, timing, and expectation questions before they book a consultation.',
|
|
340
|
+
type: 'quiz',
|
|
341
|
+
category: 'clinics',
|
|
342
|
+
icon: 'stethoscope',
|
|
343
|
+
schema: {
|
|
344
|
+
type: 'object',
|
|
345
|
+
properties: {
|
|
346
|
+
category: {
|
|
347
|
+
type: 'string',
|
|
348
|
+
description: 'Treatment category',
|
|
349
|
+
enum: ['Aesthetics / MedSpa', 'Dental', 'Sports Medicine', 'Functional Medicine'],
|
|
350
|
+
default: 'Aesthetics / MedSpa',
|
|
351
|
+
},
|
|
352
|
+
concern: {
|
|
353
|
+
type: 'string',
|
|
354
|
+
description: 'Main concern',
|
|
355
|
+
enum: [
|
|
356
|
+
'Body contouring',
|
|
357
|
+
'Skin rejuvenation',
|
|
358
|
+
'Injectables / fillers',
|
|
359
|
+
'Laser treatments',
|
|
360
|
+
'Cosmetic dentistry',
|
|
361
|
+
'Implants',
|
|
362
|
+
'Orthodontics',
|
|
363
|
+
'Restorative',
|
|
364
|
+
'Injury rehabilitation',
|
|
365
|
+
'Performance optimization',
|
|
366
|
+
'Chronic pain management',
|
|
367
|
+
'Surgical consultation',
|
|
368
|
+
'Hormone optimization',
|
|
369
|
+
'Gut health',
|
|
370
|
+
'Autoimmune support',
|
|
371
|
+
'Longevity / wellness',
|
|
372
|
+
],
|
|
373
|
+
default: 'Body contouring',
|
|
374
|
+
},
|
|
375
|
+
budget: {
|
|
376
|
+
type: 'string',
|
|
377
|
+
description: 'Budget range',
|
|
378
|
+
enum: ['$500–$1,500', '$1,500–$5,000', '$5,000+'],
|
|
379
|
+
default: '$1,500–$5,000',
|
|
380
|
+
},
|
|
381
|
+
urgency: {
|
|
382
|
+
type: 'string',
|
|
383
|
+
description: 'Urgency',
|
|
384
|
+
enum: ['Exploring (3+ months)', 'Planning (1–3 months)', 'Ready now'],
|
|
385
|
+
default: 'Planning (1–3 months)',
|
|
386
|
+
},
|
|
387
|
+
},
|
|
388
|
+
required: ['category', 'concern', 'budget', 'urgency'],
|
|
389
|
+
},
|
|
390
|
+
},
|
|
391
|
+
// ── Recruiting & Staffing ────────────────────────────────────────────
|
|
392
|
+
{
|
|
393
|
+
slug: 'candidate-fit-snapshot',
|
|
394
|
+
name: 'Candidate Fit Snapshot',
|
|
395
|
+
description: 'Show candidates how well they match a role before a recruiter spends live time.',
|
|
396
|
+
type: 'scorecard',
|
|
397
|
+
category: 'staffing',
|
|
398
|
+
icon: 'user-check',
|
|
399
|
+
schema: {
|
|
400
|
+
type: 'object',
|
|
401
|
+
properties: {
|
|
402
|
+
roleType: {
|
|
403
|
+
type: 'string',
|
|
404
|
+
description: 'Role type',
|
|
405
|
+
enum: ['Technology', 'Finance / Accounting', 'Operations', 'Creative / Marketing'],
|
|
406
|
+
default: 'Technology',
|
|
407
|
+
},
|
|
408
|
+
experience: {
|
|
409
|
+
type: 'string',
|
|
410
|
+
description: 'Years of experience',
|
|
411
|
+
enum: ['0–2 years', '3–7 years', '8–15 years', '15+ years'],
|
|
412
|
+
default: '3–7 years',
|
|
413
|
+
},
|
|
414
|
+
workPref: {
|
|
415
|
+
type: 'string',
|
|
416
|
+
description: 'Work preference',
|
|
417
|
+
enum: ['Remote', 'Hybrid', 'Onsite', 'Flexible'],
|
|
418
|
+
default: 'Remote',
|
|
419
|
+
},
|
|
420
|
+
startTimeline: {
|
|
421
|
+
type: 'string',
|
|
422
|
+
description: 'Timeline to start',
|
|
423
|
+
enum: ['Immediately', 'Within 30 days', '60+ days'],
|
|
424
|
+
default: 'Within 30 days',
|
|
425
|
+
},
|
|
426
|
+
},
|
|
427
|
+
required: ['roleType', 'experience', 'workPref', 'startTimeline'],
|
|
428
|
+
},
|
|
429
|
+
},
|
|
430
|
+
// ── Tax Advisory ─────────────────────────────────────────────────────
|
|
431
|
+
{
|
|
432
|
+
slug: 'tax-strategy-snapshot',
|
|
433
|
+
name: 'Tax Strategy Snapshot',
|
|
434
|
+
description: 'Help business owners gauge whether there is meaningful strategy upside before a paid advisory conversation.',
|
|
435
|
+
type: 'calculator',
|
|
436
|
+
category: 'tax-advisory',
|
|
437
|
+
icon: 'receipt',
|
|
438
|
+
schema: {
|
|
439
|
+
type: 'object',
|
|
440
|
+
properties: {
|
|
441
|
+
entityType: {
|
|
442
|
+
type: 'string',
|
|
443
|
+
description: 'Current entity',
|
|
444
|
+
enum: ['Sole Proprietorship', 'LLC', 'S-Corp', 'C-Corp'],
|
|
445
|
+
default: 'S-Corp',
|
|
446
|
+
},
|
|
447
|
+
revenue: {
|
|
448
|
+
type: 'string',
|
|
449
|
+
description: 'Annual revenue',
|
|
450
|
+
enum: ['Under $500k', '$500k–$1M', '$1M–$3M', '$3M+'],
|
|
451
|
+
default: '$1M–$3M',
|
|
452
|
+
},
|
|
453
|
+
compStyle: {
|
|
454
|
+
type: 'string',
|
|
455
|
+
description: 'Owner comp style',
|
|
456
|
+
enum: ['W-2 only', 'W-2 + distributions', 'Distributions only', '1099 only'],
|
|
457
|
+
default: 'W-2 + distributions',
|
|
458
|
+
},
|
|
459
|
+
multiState: {
|
|
460
|
+
type: 'string',
|
|
461
|
+
description: 'Multi-state activity',
|
|
462
|
+
enum: ['One state', 'Two states', 'Three or more states'],
|
|
463
|
+
default: 'One state',
|
|
464
|
+
},
|
|
465
|
+
},
|
|
466
|
+
required: ['entityType', 'revenue', 'compStyle', 'multiState'],
|
|
467
|
+
},
|
|
468
|
+
},
|
|
469
|
+
{
|
|
470
|
+
slug: 'entity-choice-planner',
|
|
471
|
+
name: 'Entity Choice Planner',
|
|
472
|
+
description: 'Give business owners a better starting point for entity and compensation structure conversations.',
|
|
473
|
+
type: 'planner',
|
|
474
|
+
category: 'tax-advisory',
|
|
475
|
+
icon: 'building',
|
|
476
|
+
schema: {
|
|
477
|
+
type: 'object',
|
|
478
|
+
properties: {
|
|
479
|
+
currentEntity: {
|
|
480
|
+
type: 'string',
|
|
481
|
+
description: 'Current entity',
|
|
482
|
+
enum: ['Sole Proprietorship', 'LLC', 'S-Corp', 'C-Corp'],
|
|
483
|
+
default: 'Sole Proprietorship',
|
|
484
|
+
},
|
|
485
|
+
netProfit: {
|
|
486
|
+
type: 'integer',
|
|
487
|
+
description: 'Est. annual net profit ($)',
|
|
488
|
+
minimum: 50000,
|
|
489
|
+
maximum: 1000000,
|
|
490
|
+
default: 200000,
|
|
491
|
+
},
|
|
492
|
+
ownerGoal: {
|
|
493
|
+
type: 'string',
|
|
494
|
+
description: 'Primary owner goal',
|
|
495
|
+
enum: ['Reduce taxes', 'Fund growth', 'Plan exit', 'Protect assets'],
|
|
496
|
+
default: 'Reduce taxes',
|
|
497
|
+
},
|
|
498
|
+
hiringPlans: {
|
|
499
|
+
type: 'string',
|
|
500
|
+
description: 'Hiring plans',
|
|
501
|
+
enum: ['Staying solo', 'Hiring soon', 'Already have employees'],
|
|
502
|
+
default: 'Staying solo',
|
|
503
|
+
},
|
|
504
|
+
},
|
|
505
|
+
required: ['currentEntity', 'netProfit', 'ownerGoal', 'hiringPlans'],
|
|
506
|
+
},
|
|
507
|
+
},
|
|
508
|
+
// ── Industrial Quotes ────────────────────────────────────────────────
|
|
509
|
+
{
|
|
510
|
+
slug: 'rfq-readiness-builder',
|
|
511
|
+
name: 'RFQ Readiness Builder',
|
|
512
|
+
description: 'Help buyers gather the right technical details before they ask for a quote.',
|
|
513
|
+
type: 'planner',
|
|
514
|
+
category: 'industrial-quotes',
|
|
515
|
+
icon: 'clipboard-list',
|
|
516
|
+
schema: {
|
|
517
|
+
type: 'object',
|
|
518
|
+
properties: {
|
|
519
|
+
application: {
|
|
520
|
+
type: 'string',
|
|
521
|
+
description: 'Application',
|
|
522
|
+
enum: ['Conveyor drive', 'Pump drive', 'Mixer', 'Fan / blower', 'General'],
|
|
523
|
+
default: 'Conveyor drive',
|
|
524
|
+
},
|
|
525
|
+
capacity: {
|
|
526
|
+
type: 'string',
|
|
527
|
+
description: 'Capacity / load',
|
|
528
|
+
enum: ['Light', 'Moderate', 'Heavy', 'Severe'],
|
|
529
|
+
default: 'Moderate',
|
|
530
|
+
},
|
|
531
|
+
environment: {
|
|
532
|
+
type: 'string',
|
|
533
|
+
description: 'Operating environment',
|
|
534
|
+
enum: ['Indoor / clean', 'Outdoor / dusty', 'Washdown', 'Hazardous'],
|
|
535
|
+
default: 'Outdoor / dusty',
|
|
536
|
+
},
|
|
537
|
+
timeline: {
|
|
538
|
+
type: 'string',
|
|
539
|
+
description: 'Lead time target',
|
|
540
|
+
enum: ['2 weeks', '4 weeks', '8 weeks', 'Flexible'],
|
|
541
|
+
default: '8 weeks',
|
|
542
|
+
},
|
|
543
|
+
},
|
|
544
|
+
required: ['application', 'capacity', 'environment', 'timeline'],
|
|
545
|
+
},
|
|
546
|
+
},
|
|
547
|
+
{
|
|
548
|
+
slug: 'product-family-shortlist',
|
|
549
|
+
name: 'Product Family Shortlist',
|
|
550
|
+
description: 'Guide buyers toward the right product family before a sales engineer gets involved.',
|
|
551
|
+
type: 'selector',
|
|
552
|
+
category: 'industrial-quotes',
|
|
553
|
+
icon: 'cog',
|
|
554
|
+
schema: {
|
|
555
|
+
type: 'object',
|
|
556
|
+
properties: {
|
|
557
|
+
industry: {
|
|
558
|
+
type: 'string',
|
|
559
|
+
description: 'Industry',
|
|
560
|
+
enum: [
|
|
561
|
+
'Material handling',
|
|
562
|
+
'Food & beverage',
|
|
563
|
+
'Aggregate',
|
|
564
|
+
'Chemical',
|
|
565
|
+
'General manufacturing',
|
|
566
|
+
],
|
|
567
|
+
default: 'Material handling',
|
|
568
|
+
},
|
|
569
|
+
useCase: {
|
|
570
|
+
type: 'string',
|
|
571
|
+
description: 'Primary use case',
|
|
572
|
+
enum: ['Moderate shock', 'Severe shock', 'Low-speed / high-torque', 'Variable speed'],
|
|
573
|
+
default: 'Moderate shock',
|
|
574
|
+
},
|
|
575
|
+
dutyLevel: {
|
|
576
|
+
type: 'string',
|
|
577
|
+
description: 'Duty level',
|
|
578
|
+
enum: ['Light', 'Standard', 'Heavy'],
|
|
579
|
+
default: 'Standard',
|
|
580
|
+
},
|
|
581
|
+
constraint: {
|
|
582
|
+
type: 'string',
|
|
583
|
+
description: 'Key constraint',
|
|
584
|
+
enum: ['Compact envelope', 'NEMA 4X', 'Budget priority', 'Lead time priority'],
|
|
585
|
+
default: 'NEMA 4X',
|
|
586
|
+
},
|
|
587
|
+
},
|
|
588
|
+
required: ['industry', 'useCase', 'dutyLevel', 'constraint'],
|
|
589
|
+
},
|
|
590
|
+
},
|
|
591
|
+
// ── Realtor Teams ────────────────────────────────────────────────────
|
|
592
|
+
{
|
|
593
|
+
slug: 'move-readiness-planner',
|
|
594
|
+
name: 'Move Readiness Planner',
|
|
595
|
+
description: 'Show buyers and sellers what to do next based on timing, budget, and urgency.',
|
|
596
|
+
type: 'planner',
|
|
597
|
+
category: 'realtor-teams',
|
|
598
|
+
icon: 'map-pin',
|
|
599
|
+
schema: {
|
|
600
|
+
type: 'object',
|
|
601
|
+
properties: {
|
|
602
|
+
moveType: {
|
|
603
|
+
type: 'string',
|
|
604
|
+
description: 'Move type',
|
|
605
|
+
enum: ['Sell and buy', 'Sell only', 'Buy only', 'Rent first'],
|
|
606
|
+
default: 'Sell and buy',
|
|
607
|
+
},
|
|
608
|
+
timeline: {
|
|
609
|
+
type: 'string',
|
|
610
|
+
description: 'Target timeline',
|
|
611
|
+
enum: ['1 month', '3 months', '6 months', 'Exploring'],
|
|
612
|
+
default: '6 months',
|
|
613
|
+
},
|
|
614
|
+
equity: {
|
|
615
|
+
type: 'integer',
|
|
616
|
+
description: 'Estimated equity ($)',
|
|
617
|
+
minimum: 0,
|
|
618
|
+
maximum: 800000,
|
|
619
|
+
default: 280000,
|
|
620
|
+
},
|
|
621
|
+
prepStatus: {
|
|
622
|
+
type: 'string',
|
|
623
|
+
description: 'Property prep status',
|
|
624
|
+
enum: ['Ready now', 'Light prep needed', 'Staging needed', 'Major work required'],
|
|
625
|
+
default: 'Light prep needed',
|
|
626
|
+
},
|
|
627
|
+
},
|
|
628
|
+
required: ['moveType', 'timeline', 'equity', 'prepStatus'],
|
|
629
|
+
},
|
|
630
|
+
},
|
|
631
|
+
{
|
|
632
|
+
slug: 'offer-strength-check',
|
|
633
|
+
name: 'Offer Strength Check',
|
|
634
|
+
description: 'Help buyers understand how competitive their likely offer position is before touring.',
|
|
635
|
+
type: 'scorecard',
|
|
636
|
+
category: 'realtor-teams',
|
|
637
|
+
icon: 'shield-check',
|
|
638
|
+
schema: {
|
|
639
|
+
type: 'object',
|
|
640
|
+
properties: {
|
|
641
|
+
downPayment: {
|
|
642
|
+
type: 'integer',
|
|
643
|
+
description: 'Down payment available ($)',
|
|
644
|
+
minimum: 10000,
|
|
645
|
+
maximum: 500000,
|
|
646
|
+
default: 180000,
|
|
647
|
+
},
|
|
648
|
+
preApproval: {
|
|
649
|
+
type: 'string',
|
|
650
|
+
description: 'Financing status',
|
|
651
|
+
enum: ['Not started', 'Pre-qualified', 'Pre-approved', 'Cash buyer'],
|
|
652
|
+
default: 'Pre-approved',
|
|
653
|
+
},
|
|
654
|
+
marketSpeed: {
|
|
655
|
+
type: 'string',
|
|
656
|
+
description: 'Target market speed',
|
|
657
|
+
enum: ['Slow', 'Moderate', 'Fast', 'Bidding war'],
|
|
658
|
+
default: 'Fast',
|
|
659
|
+
},
|
|
660
|
+
closingFlex: {
|
|
661
|
+
type: 'string',
|
|
662
|
+
description: 'Closing timeline flexibility',
|
|
663
|
+
enum: ['Flexible', 'Moderate', 'Constrained'],
|
|
664
|
+
default: 'Flexible',
|
|
665
|
+
},
|
|
666
|
+
},
|
|
667
|
+
required: ['downPayment', 'preApproval', 'marketSpeed', 'closingFlex'],
|
|
668
|
+
},
|
|
669
|
+
},
|
|
670
|
+
// ── Private Equity ───────────────────────────────────────────────────
|
|
671
|
+
{
|
|
672
|
+
slug: 'diligence-readiness-scorecard',
|
|
673
|
+
name: 'Diligence Readiness Scorecard',
|
|
674
|
+
description: 'Expose operational gaps before a management team enters a live deal process.',
|
|
675
|
+
type: 'scorecard',
|
|
676
|
+
category: 'private-equity',
|
|
677
|
+
icon: 'bar-chart',
|
|
678
|
+
schema: {
|
|
679
|
+
type: 'object',
|
|
680
|
+
properties: {
|
|
681
|
+
companyType: {
|
|
682
|
+
type: 'string',
|
|
683
|
+
description: 'Company type',
|
|
684
|
+
enum: ['SaaS', 'Services', 'Manufacturing', 'Distribution'],
|
|
685
|
+
default: 'SaaS',
|
|
686
|
+
},
|
|
687
|
+
reportingCadence: {
|
|
688
|
+
type: 'string',
|
|
689
|
+
description: 'Reporting cadence',
|
|
690
|
+
enum: ['Weekly', 'Monthly', 'Quarterly', 'Ad-hoc'],
|
|
691
|
+
default: 'Monthly',
|
|
692
|
+
},
|
|
693
|
+
keymanRisk: {
|
|
694
|
+
type: 'string',
|
|
695
|
+
description: 'Key-man risk',
|
|
696
|
+
enum: ['None', 'Present', 'Severe'],
|
|
697
|
+
default: 'Present',
|
|
698
|
+
},
|
|
699
|
+
financialModel: {
|
|
700
|
+
type: 'string',
|
|
701
|
+
description: 'Financial model state',
|
|
702
|
+
enum: ['Complete', 'Partial', 'None'],
|
|
703
|
+
default: 'Partial',
|
|
704
|
+
},
|
|
705
|
+
},
|
|
706
|
+
required: ['companyType', 'reportingCadence', 'keymanRisk', 'financialModel'],
|
|
707
|
+
},
|
|
708
|
+
},
|
|
709
|
+
{
|
|
710
|
+
slug: 'portco-signal-brief',
|
|
711
|
+
name: 'Portco Signal Brief',
|
|
712
|
+
description: 'Show portfolio teams how a lightweight signal monitor could work before full implementation.',
|
|
713
|
+
type: 'audit',
|
|
714
|
+
category: 'private-equity',
|
|
715
|
+
icon: 'activity',
|
|
716
|
+
schema: {
|
|
717
|
+
type: 'object',
|
|
718
|
+
properties: {
|
|
719
|
+
revenueTrend: {
|
|
720
|
+
type: 'string',
|
|
721
|
+
description: 'Revenue trend (last 3 months)',
|
|
722
|
+
enum: ['Growing', 'Flat', 'Declining'],
|
|
723
|
+
default: 'Flat',
|
|
724
|
+
},
|
|
725
|
+
headcountTrend: {
|
|
726
|
+
type: 'string',
|
|
727
|
+
description: 'Headcount trend',
|
|
728
|
+
enum: ['Growing', 'Stable', 'Decline', 'Rapid decline'],
|
|
729
|
+
default: 'Decline',
|
|
730
|
+
},
|
|
731
|
+
churnLevel: {
|
|
732
|
+
type: 'string',
|
|
733
|
+
description: 'Customer churn level',
|
|
734
|
+
enum: ['Low', 'Elevated', 'High'],
|
|
735
|
+
default: 'Elevated',
|
|
736
|
+
},
|
|
737
|
+
reportingLag: {
|
|
738
|
+
type: 'string',
|
|
739
|
+
description: 'Reporting lag',
|
|
740
|
+
enum: ['Under 7 days', '7–14 days', '15+ days', '30+ days'],
|
|
741
|
+
default: '15+ days',
|
|
742
|
+
},
|
|
743
|
+
},
|
|
744
|
+
required: ['revenueTrend', 'headcountTrend', 'churnLevel', 'reportingLag'],
|
|
745
|
+
},
|
|
746
|
+
},
|
|
747
|
+
];
|
|
748
|
+
//# sourceMappingURL=gallery-tool-definitions.js.map
|