@synap-core/workspace-templates 0.2.1 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,446 @@
1
+ # Finance workspace template
2
+ # A pragmatic startup CFO's operating model: cash, receivables, spend, revenue,
3
+ # budgets, and the vital signs (runway / burn / MRR). Provider of the `finance`
4
+ # domain; consumes `strategy` from Foundation for pricing/positioning context.
5
+
6
+ meta:
7
+ slug: finance
8
+ name: Finance
9
+ description: The company's money model — accounts, receivables, spend, revenue streams, budgets, and runway.
10
+ icon: banknote
11
+ color: "#16A34A"
12
+ tags: [finance, accounting, revenue]
13
+ isPublic: true
14
+
15
+ workspace:
16
+ name: Finance
17
+ description: Startup finance workspace — bank/ledger accounts, invoices (AR), expenses (AP), revenue streams, budgets, and the runway/burn/MRR metrics that keep the company alive.
18
+ proposalId: finance-v1
19
+ subtype: finance
20
+ visibility: members
21
+ workspaceType: operational
22
+ capabilities:
23
+ - finance.accounts
24
+ - finance.revenue
25
+ - finance.expenses
26
+ # Finance PROVIDES the finance domain, and CONSUMES strategy (Foundation) so
27
+ # pricing/positioning context informs revenue modeling. The concrete provider
28
+ # workspaceId for `strategy` is resolved at runtime (defaultSources), so it is
29
+ # expressed here declaratively via the consumer source role.
30
+ sourceRoles:
31
+ finance: provider
32
+ strategy: consumer
33
+
34
+ profiles:
35
+ - slug: account
36
+ displayName: Account
37
+ icon: landmark
38
+ color: green
39
+ description: A bank, credit, or ledger account holding company cash.
40
+ properties:
41
+ - slug: account-type
42
+ label: Type
43
+ valueType: string
44
+ inputType: select
45
+ enumValues: [checking, savings, credit-card, ledger, investment, other]
46
+ constraints: { defaultValue: checking }
47
+ - slug: institution
48
+ label: Institution
49
+ valueType: string
50
+ inputType: text
51
+ placeholder: e.g. Mercury, Chase
52
+ - slug: balance
53
+ label: Current Balance
54
+ valueType: number
55
+ inputType: number
56
+ - slug: currency
57
+ label: Currency
58
+ valueType: string
59
+ inputType: select
60
+ enumValues: [USD, EUR, GBP, other]
61
+ constraints: { defaultValue: USD }
62
+ - slug: status
63
+ label: Status
64
+ valueType: string
65
+ inputType: select
66
+ enumValues: [active, dormant, closed]
67
+ constraints: { defaultValue: active }
68
+ - slug: last-four
69
+ label: Account (last 4)
70
+ valueType: string
71
+ inputType: text
72
+
73
+ - slug: invoice
74
+ displayName: Invoice
75
+ icon: receipt
76
+ color: blue
77
+ description: An accounts-receivable invoice — money customers owe us.
78
+ properties:
79
+ - slug: invoice-number
80
+ label: Invoice #
81
+ valueType: string
82
+ inputType: text
83
+ - slug: status
84
+ label: Status
85
+ valueType: string
86
+ inputType: select
87
+ enumValues: [draft, sent, paid, overdue, void]
88
+ constraints: { defaultValue: draft }
89
+ - slug: amount
90
+ label: Amount
91
+ valueType: number
92
+ inputType: number
93
+ - slug: currency
94
+ label: Currency
95
+ valueType: string
96
+ inputType: select
97
+ enumValues: [USD, EUR, GBP, other]
98
+ constraints: { defaultValue: USD }
99
+ - slug: customer
100
+ label: Customer
101
+ valueType: string
102
+ inputType: text
103
+ - slug: issue-date
104
+ label: Issue Date
105
+ valueType: date
106
+ inputType: date
107
+ - slug: due-date
108
+ label: Due Date
109
+ valueType: date
110
+ inputType: date
111
+ - slug: paid-date
112
+ label: Paid Date
113
+ valueType: date
114
+ inputType: date
115
+
116
+ - slug: expense
117
+ displayName: Expense
118
+ icon: credit-card
119
+ color: orange
120
+ description: An accounts-payable expense or spend commitment.
121
+ properties:
122
+ - slug: category
123
+ label: Category
124
+ valueType: string
125
+ inputType: select
126
+ enumValues: [payroll, software, marketing, rent, travel, contractors, taxes, other]
127
+ constraints: { defaultValue: other }
128
+ - slug: status
129
+ label: Status
130
+ valueType: string
131
+ inputType: select
132
+ enumValues: [pending, approved, paid, reimbursed, rejected]
133
+ constraints: { defaultValue: pending }
134
+ - slug: amount
135
+ label: Amount
136
+ valueType: number
137
+ inputType: number
138
+ - slug: vendor
139
+ label: Vendor
140
+ valueType: string
141
+ inputType: text
142
+ - slug: expense-date
143
+ label: Date
144
+ valueType: date
145
+ inputType: date
146
+ - slug: recurring
147
+ label: Recurring
148
+ valueType: boolean
149
+ inputType: checkbox
150
+ - slug: payment-method
151
+ label: Payment Method
152
+ valueType: string
153
+ inputType: text
154
+
155
+ - slug: revenue-stream
156
+ displayName: Revenue Stream
157
+ icon: trending-up
158
+ color: teal
159
+ description: A source of revenue — recurring subscription, services, or one-off.
160
+ properties:
161
+ - slug: stream-type
162
+ label: Type
163
+ valueType: string
164
+ inputType: select
165
+ enumValues: [subscription, usage, services, one-off, licensing, other]
166
+ constraints: { defaultValue: subscription }
167
+ - slug: status
168
+ label: Status
169
+ valueType: string
170
+ inputType: select
171
+ enumValues: [active, paused, churned, planned]
172
+ constraints: { defaultValue: active }
173
+ - slug: mrr
174
+ label: MRR
175
+ valueType: number
176
+ inputType: number
177
+ - slug: arr
178
+ label: ARR
179
+ valueType: number
180
+ inputType: number
181
+ - slug: billing-cadence
182
+ label: Billing Cadence
183
+ valueType: string
184
+ inputType: select
185
+ enumValues: [monthly, quarterly, annual, one-time]
186
+ constraints: { defaultValue: monthly }
187
+ - slug: customer-segment
188
+ label: Customer Segment
189
+ valueType: string
190
+ inputType: text
191
+ - slug: start-date
192
+ label: Start Date
193
+ valueType: date
194
+ inputType: date
195
+
196
+ - slug: budget
197
+ displayName: Budget
198
+ icon: pie-chart
199
+ color: violet
200
+ description: A planned spend allocation for a category and period, tracked vs actual.
201
+ properties:
202
+ - slug: category
203
+ label: Category
204
+ valueType: string
205
+ inputType: select
206
+ enumValues: [payroll, marketing, product, sales, ops, g-and-a, other]
207
+ constraints: { defaultValue: other }
208
+ - slug: period
209
+ label: Period
210
+ valueType: string
211
+ inputType: select
212
+ enumValues: [monthly, quarterly, annual]
213
+ constraints: { defaultValue: quarterly }
214
+ - slug: fiscal-year
215
+ label: Fiscal Year
216
+ valueType: string
217
+ inputType: text
218
+ placeholder: e.g. FY2026
219
+ - slug: budgeted-amount
220
+ label: Budgeted
221
+ valueType: number
222
+ inputType: number
223
+ - slug: actual-amount
224
+ label: Actual
225
+ valueType: number
226
+ inputType: number
227
+ - slug: status
228
+ label: Status
229
+ valueType: string
230
+ inputType: select
231
+ enumValues: [on-track, at-risk, over-budget]
232
+ constraints: { defaultValue: on-track }
233
+ - slug: owner
234
+ label: Owner
235
+ valueType: string
236
+ inputType: text
237
+
238
+ - slug: financial-metric
239
+ displayName: Financial Metric
240
+ icon: gauge
241
+ color: amber
242
+ description: A tracked vital sign — runway, burn rate, MRR, cash balance, margin.
243
+ properties:
244
+ - slug: metric-type
245
+ label: Metric
246
+ valueType: string
247
+ inputType: select
248
+ enumValues: [runway, burn-rate, mrr, arr, cash-balance, gross-margin, cac, ltv, other]
249
+ constraints: { defaultValue: runway }
250
+ - slug: value
251
+ label: Value
252
+ valueType: number
253
+ inputType: number
254
+ - slug: unit
255
+ label: Unit
256
+ valueType: string
257
+ inputType: select
258
+ enumValues: [months, currency, percent, ratio]
259
+ constraints: { defaultValue: months }
260
+ - slug: as-of-date
261
+ label: As Of
262
+ valueType: date
263
+ inputType: date
264
+ - slug: period
265
+ label: Period
266
+ valueType: string
267
+ inputType: select
268
+ enumValues: [point-in-time, monthly, quarterly, annual]
269
+ constraints: { defaultValue: point-in-time }
270
+ - slug: target
271
+ label: Target
272
+ valueType: number
273
+ inputType: number
274
+ - slug: trend
275
+ label: Trend
276
+ valueType: string
277
+ inputType: select
278
+ enumValues: [up, flat, down]
279
+
280
+ views:
281
+ - name: Accounts
282
+ slug: accounts
283
+ type: table
284
+ scopeProfileSlug: account
285
+ description: All cash, credit, and ledger accounts with balances.
286
+ config:
287
+ columns: [title, account-type, institution, balance, currency, status]
288
+ - name: Invoices
289
+ slug: invoices
290
+ type: table
291
+ scopeProfileSlug: invoice
292
+ defaultView: true
293
+ description: Accounts receivable — who owes us, how much, and when it's due.
294
+ config:
295
+ columns: [title, invoice-number, status, amount, customer, due-date, paid-date]
296
+ defaultSort:
297
+ field: due-date
298
+ direction: asc
299
+ - name: Expenses
300
+ slug: expenses
301
+ type: kanban
302
+ scopeProfileSlug: expense
303
+ groupBy: status
304
+ description: Accounts payable and spend, grouped by approval/payment status.
305
+ config:
306
+ groupBy: status
307
+ cardFields: [category, amount, vendor, expense-date]
308
+ - name: Revenue
309
+ slug: revenue
310
+ type: table
311
+ scopeProfileSlug: revenue-stream
312
+ description: Revenue streams with MRR/ARR and billing cadence.
313
+ config:
314
+ columns: [title, stream-type, status, mrr, arr, billing-cadence, customer-segment]
315
+ defaultSort:
316
+ field: mrr
317
+ direction: desc
318
+ - name: Budget vs Actual
319
+ slug: budget-vs-actual
320
+ type: table
321
+ scopeProfileSlug: budget
322
+ description: Planned spend against actuals, by category and period.
323
+ config:
324
+ columns: [title, category, period, fiscal-year, budgeted-amount, actual-amount, status]
325
+ - name: Runway & Metrics
326
+ slug: runway-metrics
327
+ type: table
328
+ scopeProfileSlug: financial-metric
329
+ description: The vital signs — runway, burn, MRR, cash balance — vs target.
330
+ config:
331
+ columns: [title, metric-type, value, unit, target, trend, as-of-date]
332
+ defaultSort:
333
+ field: as-of-date
334
+ direction: desc
335
+
336
+ # Schema-level links — give the finance graph and relation picker sensible
337
+ # domain edges from day one.
338
+ entityLinks:
339
+ - sourceProfileSlug: invoice
340
+ targetProfileSlug: account
341
+ type: deposited_to
342
+ label: Deposited to
343
+ - sourceProfileSlug: expense
344
+ targetProfileSlug: budget
345
+ type: counts_against
346
+ label: Counts against
347
+ - sourceProfileSlug: expense
348
+ targetProfileSlug: account
349
+ type: paid_from
350
+ label: Paid from
351
+ - sourceProfileSlug: revenue-stream
352
+ targetProfileSlug: account
353
+ type: deposits_to
354
+ label: Deposits to
355
+
356
+ onboarding:
357
+ goal: Capture the company's real money model — where cash sits, what revenue comes in, what it burns on, and its current runway — so the workspace reflects the actual financial position, not a generic ledger.
358
+ framing: >
359
+ THE CFO: Act as a pragmatic, numerate startup CFO. Get to the truth of the
360
+ company's finances fast: how much cash is in the bank, what's coming in and
361
+ from where, what it burns each month, and how many months of runway that
362
+ leaves. Push for real numbers over estimates, flag anything that doesn't add
363
+ up, and tie revenue back to the company's positioning and pricing (from
364
+ Foundation) so the model is grounded in strategy, not spreadsheets.
365
+ collect:
366
+ - profileSlug: account
367
+ what: The bank and credit accounts holding company cash, with current balances.
368
+ cardinality: few
369
+ keyFields: [title, account-type, balance]
370
+ - profileSlug: revenue-stream
371
+ what: How the company makes money — each recurring or one-off revenue stream and its MRR/ARR.
372
+ cardinality: several
373
+ keyFields: [title, stream-type, mrr]
374
+ - profileSlug: expense
375
+ what: The biggest recurring and one-off costs — payroll, software, contractors, rent.
376
+ cardinality: several
377
+ keyFields: [title, category, amount]
378
+ - profileSlug: financial-metric
379
+ what: The current vital signs, above all RUNWAY (months of cash left) plus burn rate and MRR.
380
+ cardinality: few
381
+ keyFields: [metric-type, value, unit]
382
+ openingQuestions:
383
+ - How much cash is in the bank right now, and across which accounts?
384
+ - Where does revenue come from today, and roughly what's the monthly recurring amount?
385
+ - What do you burn in a typical month — and how many months of runway does that leave?
386
+ doneWhen: At least one account with a balance, the main revenue streams, the largest expenses, and a runway metric are all captured with real numbers.
387
+
388
+ app:
389
+ kind: stored
390
+ cellKey: entity-detail
391
+
392
+ layout:
393
+ defaultView: Invoices
394
+ defaultApp: null
395
+ pinnedApps: [dashboard, data, intelligence]
396
+ sidebarItems:
397
+ - kind: view
398
+ viewName: Runway & Metrics
399
+ label: Runway & Metrics
400
+ icon: gauge
401
+ - kind: view
402
+ viewName: Accounts
403
+ label: Accounts
404
+ icon: landmark
405
+ - kind: view
406
+ viewName: Invoices
407
+ label: Invoices
408
+ icon: receipt
409
+ - kind: view
410
+ viewName: Expenses
411
+ label: Expenses
412
+ icon: credit-card
413
+ - kind: view
414
+ viewName: Revenue
415
+ label: Revenue
416
+ icon: trending-up
417
+ - kind: view
418
+ viewName: Budget vs Actual
419
+ label: Budget vs Actual
420
+ icon: pie-chart
421
+ - kind: app
422
+ appId: data
423
+ label: All Data
424
+ icon: database
425
+
426
+ bento:
427
+ viewName: Finance Command Center
428
+ blocks:
429
+ - kind: view
430
+ viewName: Runway & Metrics
431
+ pos: { x: 0, y: 0, w: 8, h: 4 }
432
+ - kind: view
433
+ viewName: Accounts
434
+ pos: { x: 8, y: 0, w: 4, h: 4 }
435
+ - kind: view
436
+ viewName: Invoices
437
+ pos: { x: 0, y: 4, w: 6, h: 4 }
438
+ - kind: view
439
+ viewName: Expenses
440
+ pos: { x: 6, y: 4, w: 6, h: 4 }
441
+ - kind: view
442
+ viewName: Revenue
443
+ pos: { x: 0, y: 8, w: 6, h: 4 }
444
+ - kind: view
445
+ viewName: Budget vs Actual
446
+ pos: { x: 6, y: 8, w: 6, h: 4 }
@@ -229,6 +229,7 @@ views:
229
229
  - name: Strategy Map
230
230
  slug: strategy-map
231
231
  type: graph
232
+ scopeProfileSlugs: [mission, vision, value, audience, pain-point, positioning, narrative, differentiator, non-goal]
232
233
  description: The strategic DNA as a connected graph.
233
234
 
234
235
  # Schema-level relations — give the Strategy Map and the relation picker
@@ -333,11 +334,3 @@ bento:
333
334
  - kind: view
334
335
  viewName: Pain Points
335
336
  pos: { x: 6, y: 4, w: 6, h: 4 }
336
-
337
- seedEntities:
338
- - profileSlug: mission
339
- title: Example Mission
340
- properties:
341
- statement: "Example — replace this: we help [audience] [change] so they can [outcome], starting now because [why now]."
342
- time-horizon: 3 years
343
- status: active