@synap-core/workspace-templates 0.2.2 → 0.4.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.
- package/dist/templates.d.ts.map +1 -1
- package/dist/templates.js +5284 -4420
- package/dist/types.d.ts +22 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +25 -15
- package/src/agent-fleet.yaml +38 -398
- package/src/brand-library.yaml +68 -44
- package/src/builder.yaml +75 -18
- package/src/content-os.yaml +31 -391
- package/src/content-studio.yaml +70 -22
- package/src/crm.yaml +112 -423
- package/src/dev-dashboard.yaml +37 -393
- package/src/finance.yaml +485 -0
- package/src/foundation.yaml +34 -8
- package/src/hr.yaml +474 -0
- package/src/legal.yaml +495 -0
- package/src/life-os.yaml +42 -89
- package/src/marketing.yaml +67 -15
- package/src/operations.yaml +496 -0
- package/src/personal.yaml +68 -6
- package/src/project-management.yaml +38 -378
- package/src/radar.yaml +34 -11
- package/src/templates.ts +5284 -4420
- package/src/types.ts +27 -0
package/src/finance.yaml
ADDED
|
@@ -0,0 +1,485 @@
|
|
|
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
|
+
expertise:
|
|
366
|
+
starters:
|
|
367
|
+
- >
|
|
368
|
+
Don't reconstruct a full P&L on day one — default the model to the three
|
|
369
|
+
numbers that keep a startup alive: cash in bank, monthly net burn, and
|
|
370
|
+
runway (cash ÷ burn, in months). Propose those first and layer detail later;
|
|
371
|
+
a founder who knows their runway to the month is ahead of one with a
|
|
372
|
+
beautiful chart of accounts.
|
|
373
|
+
- >
|
|
374
|
+
Add a small set of unit economics, not a whole finance stack: gross margin,
|
|
375
|
+
CAC, and LTV (or at minimum LTV:CAC ratio). Propose sensible defaults —
|
|
376
|
+
payback under ~12 months, LTV:CAC above ~3:1 — as reference points to react
|
|
377
|
+
to, rather than asking them to define metrics from scratch.
|
|
378
|
+
- >
|
|
379
|
+
Model cash on a timing basis, not an accrual one. When they give you revenue,
|
|
380
|
+
ask when the cash actually LANDS — Net-30/60 invoices, annual prepay,
|
|
381
|
+
Stripe payout lag — and capture that gap explicitly, because a profitable
|
|
382
|
+
month can still run the account dry.
|
|
383
|
+
blindSpots:
|
|
384
|
+
- >
|
|
385
|
+
Revenue ≠ cash. Founders book an annual contract and feel rich, but the cash
|
|
386
|
+
arrives monthly or after Net-60 — meanwhile payroll is due Friday. If they
|
|
387
|
+
conflate the two, separate signed bookings from collected cash before
|
|
388
|
+
computing anything.
|
|
389
|
+
- >
|
|
390
|
+
Runway is THE number that predicts survival, and it's the one most often
|
|
391
|
+
stale. If there's no current runway figure — or it hasn't been recomputed
|
|
392
|
+
since the last big hire or price change — that's the first gap to close.
|
|
393
|
+
Everything else is secondary to "how many months of oxygen is left".
|
|
394
|
+
- >
|
|
395
|
+
Bookings, revenue, and cash are three different numbers and founders routinely
|
|
396
|
+
merge them. A signed deal (booking), revenue recognized over its term, and
|
|
397
|
+
the money in the account are rarely equal in any given month. Name which one
|
|
398
|
+
each figure is, or the whole model lies.
|
|
399
|
+
bar: >
|
|
400
|
+
A stranger could open the workspace and answer three questions in ten seconds:
|
|
401
|
+
how much cash is in the bank, how much it burns a month, and how many months of
|
|
402
|
+
runway that leaves — with revenue captured on a cash-timing basis, bookings kept
|
|
403
|
+
distinct from collected cash, and at least a rough gross margin and LTV:CAC in view.
|
|
404
|
+
collect:
|
|
405
|
+
- profileSlug: account
|
|
406
|
+
what: The bank and credit accounts holding company cash, with current balances.
|
|
407
|
+
cardinality: few
|
|
408
|
+
keyFields: [title, account-type, balance]
|
|
409
|
+
- profileSlug: revenue-stream
|
|
410
|
+
what: How the company makes money — each recurring or one-off revenue stream and its MRR/ARR.
|
|
411
|
+
cardinality: several
|
|
412
|
+
keyFields: [title, stream-type, mrr]
|
|
413
|
+
- profileSlug: expense
|
|
414
|
+
what: The biggest recurring and one-off costs — payroll, software, contractors, rent.
|
|
415
|
+
cardinality: several
|
|
416
|
+
keyFields: [title, category, amount]
|
|
417
|
+
- profileSlug: financial-metric
|
|
418
|
+
what: The current vital signs, above all RUNWAY (months of cash left) plus burn rate and MRR.
|
|
419
|
+
cardinality: few
|
|
420
|
+
keyFields: [metric-type, value, unit]
|
|
421
|
+
openingQuestions:
|
|
422
|
+
- How much cash is in the bank right now, and across which accounts?
|
|
423
|
+
- Where does revenue come from today, and roughly what's the monthly recurring amount?
|
|
424
|
+
- What do you burn in a typical month — and how many months of runway does that leave?
|
|
425
|
+
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.
|
|
426
|
+
|
|
427
|
+
app:
|
|
428
|
+
kind: stored
|
|
429
|
+
cellKey: entity-detail
|
|
430
|
+
|
|
431
|
+
layout:
|
|
432
|
+
defaultView: Invoices
|
|
433
|
+
defaultApp: null
|
|
434
|
+
pinnedApps: [dashboard, data, intelligence]
|
|
435
|
+
sidebarItems:
|
|
436
|
+
- kind: view
|
|
437
|
+
viewName: Runway & Metrics
|
|
438
|
+
label: Runway & Metrics
|
|
439
|
+
icon: gauge
|
|
440
|
+
- kind: view
|
|
441
|
+
viewName: Accounts
|
|
442
|
+
label: Accounts
|
|
443
|
+
icon: landmark
|
|
444
|
+
- kind: view
|
|
445
|
+
viewName: Invoices
|
|
446
|
+
label: Invoices
|
|
447
|
+
icon: receipt
|
|
448
|
+
- kind: view
|
|
449
|
+
viewName: Expenses
|
|
450
|
+
label: Expenses
|
|
451
|
+
icon: credit-card
|
|
452
|
+
- kind: view
|
|
453
|
+
viewName: Revenue
|
|
454
|
+
label: Revenue
|
|
455
|
+
icon: trending-up
|
|
456
|
+
- kind: view
|
|
457
|
+
viewName: Budget vs Actual
|
|
458
|
+
label: Budget vs Actual
|
|
459
|
+
icon: pie-chart
|
|
460
|
+
- kind: app
|
|
461
|
+
appId: data
|
|
462
|
+
label: All Data
|
|
463
|
+
icon: database
|
|
464
|
+
|
|
465
|
+
bento:
|
|
466
|
+
viewName: Finance Command Center
|
|
467
|
+
blocks:
|
|
468
|
+
- kind: view
|
|
469
|
+
viewName: Runway & Metrics
|
|
470
|
+
pos: { x: 0, y: 0, w: 8, h: 4 }
|
|
471
|
+
- kind: view
|
|
472
|
+
viewName: Accounts
|
|
473
|
+
pos: { x: 8, y: 0, w: 4, h: 4 }
|
|
474
|
+
- kind: view
|
|
475
|
+
viewName: Invoices
|
|
476
|
+
pos: { x: 0, y: 4, w: 6, h: 4 }
|
|
477
|
+
- kind: view
|
|
478
|
+
viewName: Expenses
|
|
479
|
+
pos: { x: 6, y: 4, w: 6, h: 4 }
|
|
480
|
+
- kind: view
|
|
481
|
+
viewName: Revenue
|
|
482
|
+
pos: { x: 0, y: 8, w: 6, h: 4 }
|
|
483
|
+
- kind: view
|
|
484
|
+
viewName: Budget vs Actual
|
|
485
|
+
pos: { x: 6, y: 8, w: 6, h: 4 }
|
package/src/foundation.yaml
CHANGED
|
@@ -254,6 +254,40 @@ onboarding:
|
|
|
254
254
|
THE COFOUNDER: Act as a sharp, skeptical co-founder. Pressure-test why-now, why-you, and
|
|
255
255
|
why-this. Refuse fuzzy answers; push for specifics and evidence. Be
|
|
256
256
|
respectful but direct — a vague mission helps no one.
|
|
257
|
+
expertise:
|
|
258
|
+
starters:
|
|
259
|
+
- >
|
|
260
|
+
A mission is a CHANGE in the world, not a description of the product
|
|
261
|
+
("make complex products understandable", not "we make explainer videos").
|
|
262
|
+
If they describe the deliverable, reflect the underlying change back and
|
|
263
|
+
propose THAT as the mission.
|
|
264
|
+
- >
|
|
265
|
+
Positioning is sharpest as ONE sentence — "the <X> for <who>" or "the only
|
|
266
|
+
<category> that <wedge>". If they give you a vague "we help companies with
|
|
267
|
+
Y", propose a crisp category+wedge framing from what they've told you and
|
|
268
|
+
let them sharpen it — never file the vague version.
|
|
269
|
+
- >
|
|
270
|
+
Audience is a SPECIFIC buyer at a specific stage ("Head of Product
|
|
271
|
+
Marketing at Series A–B technical SaaS"), not a market ("SaaS companies").
|
|
272
|
+
Push from the market to the person who actually signs off.
|
|
273
|
+
blindSpots:
|
|
274
|
+
- >
|
|
275
|
+
Founders skip the NON-goal — what they deliberately DON'T do. A company
|
|
276
|
+
with no "no" has no focus. If they haven't named boundaries, ask what they
|
|
277
|
+
turn down.
|
|
278
|
+
- >
|
|
279
|
+
A differentiator that's just "we're better / faster / care more" isn't
|
|
280
|
+
defensible. Push for a structural moat a competitor can't easily copy — and
|
|
281
|
+
if it's founder-dependent (bus-factor), capture that honestly rather than
|
|
282
|
+
dressing it up.
|
|
283
|
+
- >
|
|
284
|
+
The #1 tells of fuzzy strategy: a mission that's really a deliverable, and
|
|
285
|
+
positioning that's really a feature list. When you see either, name it and
|
|
286
|
+
dig.
|
|
287
|
+
bar: >
|
|
288
|
+
A stranger could read the mission, audience, and positioning and instantly
|
|
289
|
+
explain WHO this is for, WHAT changes for them, and WHY this company over the
|
|
290
|
+
alternatives — in one breath, with no fluff.
|
|
257
291
|
collect:
|
|
258
292
|
- profileSlug: mission
|
|
259
293
|
what: The one mission that anchors the company — what we serve, what we change, why now.
|
|
@@ -334,11 +368,3 @@ bento:
|
|
|
334
368
|
- kind: view
|
|
335
369
|
viewName: Pain Points
|
|
336
370
|
pos: { x: 6, y: 4, w: 6, h: 4 }
|
|
337
|
-
|
|
338
|
-
seedEntities:
|
|
339
|
-
- profileSlug: mission
|
|
340
|
-
title: Example Mission
|
|
341
|
-
properties:
|
|
342
|
-
statement: "Example — replace this: we help [audience] [change] so they can [outcome], starting now because [why now]."
|
|
343
|
-
time-horizon: 3 years
|
|
344
|
-
status: active
|