@synap-core/workspace-templates 0.3.0 → 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/package.json CHANGED
@@ -1,18 +1,28 @@
1
1
  {
2
2
  "name": "@synap-core/workspace-templates",
3
- "version": "0.3.0",
3
+ "version": "0.4.0",
4
4
  "type": "module",
5
+ "packageManager": "pnpm@9.15.4",
5
6
  "description": "Canonical workspace definitions — YAML source + typed exports for browser, backend, CLI, and marketplace",
6
7
  "exports": {
7
8
  ".": {
8
- "types": "./dist/index.d.ts",
9
- "default": "./dist/index.js"
9
+ "types": "./src/index.ts",
10
+ "node": "./dist/index.js",
11
+ "default": "./src/index.ts"
10
12
  }
11
13
  },
12
14
  "files": [
13
15
  "dist",
14
16
  "src"
15
17
  ],
18
+ "scripts": {
19
+ "type-check": "tsc --noEmit",
20
+ "build:yaml": "node build.mjs",
21
+ "build": "node build.mjs && tsc -p tsconfig.build.json",
22
+ "provision": "node scripts/provision.mjs",
23
+ "eval": "node scripts/eval-standard.mjs",
24
+ "prepublishOnly": "node build.mjs && tsc -p tsconfig.build.json"
25
+ },
16
26
  "dependencies": {
17
27
  "zod": "^3.0.0",
18
28
  "js-yaml": "^4.1.0"
@@ -24,16 +34,15 @@
24
34
  },
25
35
  "publishConfig": {
26
36
  "registry": "https://registry.npmjs.org",
27
- "access": "public"
28
- },
29
- "scripts": {
30
- "type-check": "tsc --noEmit",
31
- "build:yaml": "node build.mjs",
32
- "build": "node build.mjs && tsc -p tsconfig.build.json",
33
- "provision": "node scripts/provision.mjs",
34
- "eval": "node scripts/eval-standard.mjs"
35
- },
36
- "main": "./dist/index.js",
37
- "module": "./dist/index.js",
38
- "types": "./dist/index.d.ts"
39
- }
37
+ "access": "public",
38
+ "main": "./dist/index.js",
39
+ "module": "./dist/index.js",
40
+ "types": "./dist/index.d.ts",
41
+ "exports": {
42
+ ".": {
43
+ "types": "./dist/index.d.ts",
44
+ "default": "./dist/index.js"
45
+ }
46
+ }
47
+ }
48
+ }
@@ -1016,6 +1016,44 @@ playbooks:
1016
1016
  onboarding:
1017
1017
  goal: "Capture the agent fleet the user runs — the agents themselves, the model providers behind them, the skills they carry, and the projects they work — so the workspace reflects their real AI operation."
1018
1018
  framing: "Act as a pragmatic AI ops lead. Tease out which agents are live, what models and providers power them, what each agent can do, and what work they're pointed at. Translate that into agents, providers, skills, and projects."
1019
+ expertise:
1020
+ starters:
1021
+ - >
1022
+ For every live agent, pin down the trio that actually matters: model, provider, and daily
1023
+ budget ceiling. "I have an agent" is not an entity — "a Coder agent on Claude via OpenRouter,
1024
+ capped at $5/day" is. Lead by capturing that trio for the one agent running most, then fan
1025
+ out. An agent with no budget number is an uncapped spend waiting to happen.
1026
+ - >
1027
+ Capture each provider as its own entity with cost-per-token AND key health, not just a name.
1028
+ Propose logging the provider behind your busiest agent first, with its input/output token
1029
+ cost and when the key expires — because the two ways a fleet dies are a blown budget and an
1030
+ expired key, and both live on the provider, not the agent.
1031
+ - >
1032
+ Scope each agent to ONE role and catalogue the specific skills it carries, with a trust
1033
+ level on each. Lead with "what is this agent FOR, and what exactly can it do?" A named,
1034
+ scoped agent with three trusted skills beats one vague "assistant" agent that can supposedly
1035
+ do everything.
1036
+ blindSpots:
1037
+ - >
1038
+ Untracked spend is the fleet-killer. Agents burn tokens silently — a runaway loop, a retry
1039
+ storm, a context window nobody trimmed — and the first signal is the invoice. Surface daily
1040
+ budget ceilings and weekly actual spend per provider proactively; the CFO view (which work
1041
+ is burning budget) is the one nobody builds until it's too late.
1042
+ - >
1043
+ The "one agent for everything" anti-pattern feels efficient and is the opposite. A single
1044
+ generalist agent with every skill and every key is un-auditable, un-scopeable, and a fat
1045
+ blast radius when a skill goes rogue. Push toward scoped agents — Coder, Researcher, Ops —
1046
+ each with only the skills and provider budget its job needs.
1047
+ - >
1048
+ Single-provider risk hides until the provider has an outage or rate-limits you mid-run.
1049
+ Teams wire every agent to one provider and have no fallback, so one 429 halts the whole
1050
+ fleet. Capture provider fallback intent (primary + backup) so a single vendor's bad day
1051
+ isn't your whole operation's bad day.
1052
+ bar: >
1053
+ A great result is a fleet you can run like an operation, not a pile of daemons: every live
1054
+ agent has a model, a provider, a budget, and a scoped set of trusted skills; every provider
1055
+ shows its cost, key health, and spend-against-budget; and you can answer "which agent is
1056
+ burning the most, on whose key, and what happens if that provider goes down?" in one glance.
1019
1057
  collect:
1020
1058
  - profileSlug: agent
1021
1059
  what: "The agents they run and what powers each"
@@ -518,6 +518,43 @@ onboarding:
518
518
  colors, type), and the non-negotiable rules. Translate fuzzy vibes into
519
519
  concrete voice guides and rules. Reference the Foundation (mission, audience,
520
520
  positioning) so the brand expresses the strategy, never contradicts it.
521
+ expertise:
522
+ starters:
523
+ - >
524
+ Adjectives don't define a voice — "friendly, bold, human" describes every
525
+ brand and constrains none. Propose voice as a small set of DO / DON'T pairs
526
+ instead ("say 'you', not 'users'"; "short declaratives, never hedged
527
+ qualifiers"). Pairs are testable; adjectives are decoration.
528
+ - >
529
+ A voice guide is only real if it survives a sentence test. Take one actual
530
+ line from their site or a competitor's and rewrite it in the proposed voice
531
+ on the spot — if the rewrite looks identical to the original, the voice isn't
532
+ differentiated yet. Push until the two versions are visibly different.
533
+ - >
534
+ Build the palette around ROLES, not just favorite colors. Pin the semantic
535
+ roles first — primary, surface, text, and one restrained accent — and make
536
+ the accent earn its keep. Most brands leak trust by using three "brand
537
+ colors" as accents; propose one hero accent and demote the rest to support.
538
+ blindSpots:
539
+ - >
540
+ "Brand = logo" is the classic trap. The logo is the least-used, most-argued
541
+ asset; the voice, the color roles, and the do/don't rules drive 90% of what
542
+ anyone actually ships. If they lead with the logo, redirect to how the brand
543
+ SOUNDS and behaves in a paragraph of copy.
544
+ - >
545
+ Rules with no severity are ignored. A pile of equally-weighted "guidelines"
546
+ gives an AI or a teammate nothing to obey — mark each as mandatory,
547
+ important, or guideline so the non-negotiables (clearspace, accessibility
548
+ contrast, forbidden words) actually hold under pressure.
549
+ - >
550
+ Color contrast is a silent brand-killer: a beautiful palette that fails WCAG
551
+ AA on text is off-brand the moment it's inaccessible. If they've picked
552
+ colors without checking text-on-surface contrast, flag it before it's
553
+ codified into tokens.
554
+ bar: >
555
+ A stranger handed the voice pairs, the color roles, and the rules could write a
556
+ new paragraph and pick a button color that both read unmistakably as THIS brand —
557
+ and every rule is testable on a real sentence or a real screen, not a vibe.
521
558
  collect:
522
559
  - profileSlug: brand-identity
523
560
  what: The core brand identity — name, essence, and how it presents itself.
package/src/builder.yaml CHANGED
@@ -1266,6 +1266,42 @@ onboarding:
1266
1266
  lives (repos + local paths), what runs behind each app, where it deploys, and what's on
1267
1267
  the bench right now. Prefer concrete over aspirational — a repo URL beats a wish. Tie the
1268
1268
  roadmap back to the Foundation's mission and audiences: the surface exists to serve them.
1269
+ expertise:
1270
+ starters:
1271
+ - >
1272
+ Don't ask "what do you want to build?" — ask what's already running. Propose starting from
1273
+ the ONE app that's live today, its primary deploy target, and the single feature in flight
1274
+ right now. One real node with a repo URL beats ten aspirational ones. The map grows from
1275
+ what exists, not from the org chart you wish you had.
1276
+ - >
1277
+ For each app, capture the deploy path end to end: repo → branch that auto-deploys → target
1278
+ (Vercel/Coolify/bare VPS) → the URL it lands on. A node that says "app" but can't answer
1279
+ "how does a commit reach production?" is a label, not a map.
1280
+ - >
1281
+ Lead with the in-flight work as first-class entities, not a backlog dump. Take the feature
1282
+ being coded this week, give it a status and an acceptance criterion, and link it to its app.
1283
+ That single live thread is what makes the workspace a command center instead of a wiki.
1284
+ blindSpots:
1285
+ - >
1286
+ The map is worthless the moment it drifts from reality. Founders capture the IDEAL
1287
+ architecture (the clean diagram) instead of the system AS IT IS — the hacky cron, the
1288
+ service everyone forgot owns auth, the package no one dares upgrade. Capture the mess;
1289
+ the mess is where the incidents come from.
1290
+ - >
1291
+ "We'll document it later" is how tribal knowledge dies. The one engineer who knows why
1292
+ service X can't be restarted during a deploy leaves, and it becomes a 2am incident. Capture
1293
+ the non-obvious operational facts (decision records, gotchas) NOW, while someone still
1294
+ remembers the why — not after the outage.
1295
+ - >
1296
+ Packages and their dependency edges are the silent killer. Founders track apps but not the
1297
+ shared substrate underneath — so a "small" bump to a core package breaks three apps nobody
1298
+ connected to it. Capture what depends on what; the blast radius lives in the edges, not the
1299
+ nodes.
1300
+ bar: >
1301
+ A great result is a graph you can navigate in any direction to answer a real operational
1302
+ question — "if I bump this package, what breaks?", "how does a commit reach prod for app X?",
1303
+ "what's actually in flight and who's on it?" — and every answer matches what's true in the
1304
+ terminal right now, not what was true at kickoff.
1269
1305
  collect:
1270
1306
  - profileSlug: devplane_app
1271
1307
  what: The apps that are shipped or actively being built — with where their code lives and what stack they run on.
@@ -1009,6 +1009,37 @@ playbooks: []
1009
1009
  onboarding:
1010
1010
  goal: "Capture the user's brand voice, audience, content pillars, and publishing rhythm across channels — so the workspace reflects how they actually create and distribute content, not a generic calendar."
1011
1011
  framing: "Act as a seasoned content strategist. Tease out their voice and positioning, who they're talking to, the recurring themes they own, the channels they publish on, and how often. Translate that into pillars, platforms, and a seeded content calendar."
1012
+ expertise:
1013
+ starters:
1014
+ - >
1015
+ Most creators over-index on one format and burn out. Propose 3–4 pillars
1016
+ that mix TEACH (how it works), PROVE (customer/results), and PROVOKE
1017
+ (point of view) — then adapt the mix to their niche. Don't ask for pillars
1018
+ from a blank slate; offer a starting set and let them react.
1019
+ - >
1020
+ Better to own ONE channel consistently than be thin on four. If they list
1021
+ many platforms, propose a primary channel + a cadence they can actually
1022
+ sustain, and treat the rest as repurposing targets, not separate efforts.
1023
+ - >
1024
+ Every pillar should ladder to a business goal — awareness, trust, or
1025
+ conversion. If a pillar is just "stuff we post", propose the job it should
1026
+ do and tie it to a specific audience segment.
1027
+ blindSpots:
1028
+ - >
1029
+ Distribution is the silent killer — great content nobody sees. If they
1030
+ haven't said HOW each piece gets discovered (SEO, a platform's algorithm,
1031
+ an email list, founder-led amplification), raise it before moving on.
1032
+ - >
1033
+ No repurposing plan = 5× the work for 1× the reach. If they treat each
1034
+ post as one-and-done, propose a chain: one deep piece → clips → posts →
1035
+ newsletter.
1036
+ - >
1037
+ Pillars with no audience attached reach no one. Tie each pillar to a
1038
+ specific segment — "content for everyone" is content for nobody.
1039
+ bar: >
1040
+ The pillars + primary platform + cadence read like a system a small team
1041
+ could actually run for 3 months without burning out — where every pillar has
1042
+ a clear audience, a clear job, and a way to get discovered.
1012
1043
  collect:
1013
1044
  - profileSlug: pillar
1014
1045
  what: "Their recurring content themes / brand voice — the lenses their audience knows them for, and who each speaks to"
@@ -298,6 +298,44 @@ onboarding:
298
298
  and series they actually run, not one-off ideas. Pull voice and visual identity
299
299
  from Brand and target audience from Foundation so every piece lands on-brand.
300
300
  Be concrete about specs; a fuzzy "we make videos" helps no one.
301
+ expertise:
302
+ starters:
303
+ - >
304
+ Produce in BATCHES, not one-at-a-time. Setup — lighting, wardrobe, template
305
+ loading, brand assets — is the real cost; shooting or composing five pieces
306
+ in one session amortizes it. Propose a batch cadence (e.g. one shoot day →
307
+ a month of cuts) rather than a per-video pipeline.
308
+ - >
309
+ The hook is 80% of the view. On a 9:16 feed the first 1–2 seconds decide
310
+ whether the piece is watched at all, so it's worth more iteration than the
311
+ rest combined. Propose a template whose title card / cold-open IS the hook,
312
+ and treat the hook as its own reusable asset.
313
+ - >
314
+ Design every shoot for REPURPOSING before you roll. One long-form capture
315
+ should yield the long cut, several vertical clips, and stills — but only if
316
+ it's framed and shot with those crops in mind. Propose the repurpose chain
317
+ up front so the raw footage is cut-once, use-many.
318
+ blindSpots:
319
+ - >
320
+ The velocity-vs-quality tradeoff is a real dial, not a failing — a weekly
321
+ show that's "good enough and on time" beats a cinematic piece that ships
322
+ quarterly. If they're chasing polish on a high-cadence line, name the
323
+ tradeoff and propose a quality bar that survives the schedule.
324
+ - >
325
+ No reusable templates = every video rebuilt from scratch, and brand drift
326
+ creeps in. If they're producing on a cadence but have no locked
327
+ intros/outros/lower-thirds, that's the gap — templates are what make output
328
+ both fast AND on-brand. Surface it.
329
+ - >
330
+ Aspect ratio and platform are a production decision, not an export
331
+ afterthought. Shooting 16:9 and cropping to 9:16 later loses the frame and
332
+ the hook. If a pipeline's platform doesn't match how it's actually shot,
333
+ flag the mismatch before it's baked into every render.
334
+ bar: >
335
+ The studio reads like a production LINE: recurring shows with locked specs,
336
+ reusable templates that carry brand into every render, and asset sources feeding
337
+ a batch-then-repurpose flow — so a producer could ship the next episode this week
338
+ without reinventing the format or fighting brand drift.
301
339
  collect:
302
340
  - profileSlug: content-pipeline
303
341
  what: The recurring productions you run — the shows, series, or content lines that generate output on a cadence (e.g. weekly reels, product demos, explainer drops).
package/src/crm.yaml CHANGED
@@ -620,6 +620,64 @@ profiles:
620
620
  - healthy
621
621
  - at_risk
622
622
  - critical
623
+ - slug: partner
624
+ displayName: Partner
625
+ icon: handshake
626
+ color: teal
627
+ description: A partner relationship — both a referral source and a co-delivery collaborator, distinguished by partner type.
628
+ properties:
629
+ - slug: partnerStatus
630
+ label: Status
631
+ valueType: string
632
+ inputType: select
633
+ enumValues:
634
+ - active
635
+ - paused
636
+ - churned
637
+ - slug: partnerType
638
+ label: Partner Type
639
+ valueType: string
640
+ inputType: select
641
+ enumValues:
642
+ - referral
643
+ - co-delivery
644
+ - both
645
+ - slug: accountManager
646
+ label: Account Manager
647
+ valueType: string
648
+ inputType: text
649
+ - slug: engagementStartDate
650
+ label: Engagement Start
651
+ valueType: date
652
+ inputType: date
653
+ - slug: satisfactionScore
654
+ label: Satisfaction
655
+ valueType: number
656
+ inputType: number
657
+ - slug: lifetimeValue
658
+ label: Lifetime Value
659
+ valueType: number
660
+ inputType: number
661
+ - slug: notes
662
+ label: Notes
663
+ valueType: string
664
+ inputType: textarea
665
+ - slug: contractValue
666
+ label: Contract Value
667
+ valueType: number
668
+ inputType: number
669
+ - slug: renewalDate
670
+ label: Renewal Date
671
+ valueType: date
672
+ inputType: date
673
+ - slug: healthScore
674
+ label: Health
675
+ valueType: string
676
+ inputType: select
677
+ enumValues:
678
+ - healthy
679
+ - at_risk
680
+ - critical
623
681
  - slug: contact
624
682
  displayName: Contact
625
683
  icon: user
@@ -1555,6 +1613,21 @@ entityLinks:
1555
1613
  - sourceProfileSlug: deal
1556
1614
  targetProfileSlug: pipeline
1557
1615
  type: belongs_to
1616
+ - sourceProfileSlug: client
1617
+ targetProfileSlug: company
1618
+ type: belongs_to
1619
+ - sourceProfileSlug: client
1620
+ targetProfileSlug: contact
1621
+ type: primary_contact
1622
+ - sourceProfileSlug: partner
1623
+ targetProfileSlug: company
1624
+ type: works_with
1625
+ - sourceProfileSlug: partner
1626
+ targetProfileSlug: contact
1627
+ type: primary_contact
1628
+ - sourceProfileSlug: partner
1629
+ targetProfileSlug: client
1630
+ type: refers
1558
1631
  displayTemplates:
1559
1632
  - name: Deal Card
1560
1633
  description: Sales deal with pipeline stage, value, probability, and linked company
@@ -2145,6 +2218,45 @@ integrations:
2145
2218
  onboarding:
2146
2219
  goal: Capture the user's sales pipeline shape, their key accounts/contacts, and how they qualify and move deals — so the CRM reflects their real revenue motion, not a generic template.
2147
2220
  framing: "Act as a sharp revenue/sales-ops lead. Tease out how they actually sell: who they sell to, what stages a deal moves through, where leads come from, and what 'qualified' means to them. Translate their words into pipeline config, companies, contacts, and deals."
2221
+ expertise:
2222
+ starters:
2223
+ - >
2224
+ Don't ask for stages on a blank slate — infer the motion first and propose
2225
+ a default pipeline for it. PLG: Signup → Activated → PQL → Expansion.
2226
+ Sales-led: Discovery → Qualified → Demo → Proposal → Negotiation → Closed.
2227
+ Agency/retainer: Lead → Scoping → Proposal → Won → Delivery. Offer the one
2228
+ that fits and let them cut stages, rather than starting from nothing.
2229
+ - >
2230
+ Define every stage by a BUYER action, not a seller activity — "Demo booked"
2231
+ or "Security review passed", not "Following up" or "Sent email". Seller-verb
2232
+ stages are why pipelines rot: they describe effort, not progress. If they
2233
+ name an activity stage, reflect it back as the buyer commitment it's meant
2234
+ to prove.
2235
+ - >
2236
+ Anchor qualification to a named framework, don't leave "qualified" as a
2237
+ feeling. Propose BANT for transactional deals or MEDDIC for enterprise, then
2238
+ make the exit criteria out of it — e.g. a deal can't leave Qualified without
2239
+ a known budget, an identified economic buyer, and a compelling event.
2240
+ blindSpots:
2241
+ - >
2242
+ The "everything is 'in progress'" pipeline. If most deals sit in middle
2243
+ stages with no close date or next step, that's not a pipeline, it's a
2244
+ graveyard — hygiene has collapsed. Push for a next step + a date on every
2245
+ open deal, and be willing to mark the dead ones lost.
2246
+ - >
2247
+ A stage with no exit criteria is a wish, not a stage. If they can't tell you
2248
+ the ONE thing that must be true to advance a deal, the stage is theater.
2249
+ Force a crisp gate for each — what the buyer must have done to move forward.
2250
+ - >
2251
+ Founders track deal value but not the two numbers that actually predict
2252
+ revenue: win rate by stage and average sales-cycle length. Without them you
2253
+ can't forecast or spot where deals stall. Surface both early even if the
2254
+ first answer is a rough guess.
2255
+ bar: >
2256
+ The pipeline stages mirror how a buyer actually commits (not how the rep works
2257
+ their day), each stage has a one-line exit gate, "qualified" maps to a real
2258
+ framework, and every live deal on the board has an owner, a value, a next step,
2259
+ and a close date — so a glance at the board tells the truth about revenue.
2148
2260
  collect:
2149
2261
  - profileSlug: pipeline
2150
2262
  what: Their real deal stages in order (e.g. Lead → Qualified → Demo → Proposal → Won/Lost)
@@ -888,6 +888,43 @@ bento:
888
888
  onboarding:
889
889
  goal: "Capture the user's infrastructure surface — the services they run, the repositories behind them, their environments, the vendors they depend on, and their credentials inventory — so the command center reflects their real stack."
890
890
  framing: "Act as a staff platform engineer doing an infra walkthrough. Tease out what's running in production, where the code lives, how environments are laid out, which third parties they depend on, and what secrets need tracking. Translate that into services, repositories, environments, vendors, and credentials."
891
+ expertise:
892
+ starters:
893
+ - >
894
+ Start from what's serving live traffic RIGHT NOW, not the architecture diagram. Walk the
895
+ request path: what does a user hit first, and what does that call, and what does THAT call?
896
+ Capture each hop as a service with its host and health-check URL. The production edge is the
897
+ map's anchor; everything else hangs off it.
898
+ - >
899
+ For every third party, capture the cost AND who owns the account. Propose logging each
900
+ vendor with its pricing model and monthly spend the moment you name it — the €12/mo that
901
+ became €400/mo is always a vendor nobody was watching. An untracked line item is a future
902
+ surprise on the card.
903
+ - >
904
+ Inventory credentials by their EXPIRY, not their existence. For each secret, capture where
905
+ it's stored (vault ref), what it unlocks, and when it expires or was last rotated. The
906
+ credential nobody wrote down is the one that expires at 3am and takes prod with it.
907
+ blindSpots:
908
+ - >
909
+ The untracked credential is the classic infra time-bomb: the SSH key on one laptop, the API
910
+ token in someone's .env, the cert that auto-renewed until it didn't. Teams track services
911
+ obsessively and secrets not at all — surface expiry dates and rotation policy proactively,
912
+ because the outage is silent until the exact moment it isn't.
913
+ - >
914
+ Vendor cost creep has no owner. Each SaaS was signed up "just to try," and now the monthly
915
+ bill is a mystery no single person can explain line by line. Force a monthly-cost number and
916
+ an owner on every vendor — the sum is almost always higher than anyone guessed.
917
+ - >
918
+ "Works on my machine" is environment drift, and it hides until deploy day. Staging runs a
919
+ different Node, prod has an env var dev doesn't, the migration ran here but not there. Map
920
+ each environment EXPLICITLY with its branch and base URL so the deltas between prod, staging,
921
+ and dev are visible instead of discovered during an incident.
922
+ bar: >
923
+ A great result is a command center where you can answer, without SSHing anywhere: what's
924
+ serving traffic and is it healthy, which credential expires next and who rotates it, what each
925
+ vendor costs and who owns it, and exactly how prod differs from staging. The value is in the
926
+ facts nobody keeps in one place — expiry dates, cost owners, environment deltas — surfaced
927
+ before they become incidents.
891
928
  collect:
892
929
  - profileSlug: service
893
930
  what: "The services / apps they run and their stack"
package/src/finance.yaml CHANGED
@@ -362,6 +362,45 @@ onboarding:
362
362
  leaves. Push for real numbers over estimates, flag anything that doesn't add
363
363
  up, and tie revenue back to the company's positioning and pricing (from
364
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.
365
404
  collect:
366
405
  - profileSlug: account
367
406
  what: The bank and credit accounts holding company cash, with current balances.
@@ -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.
package/src/hr.yaml CHANGED
@@ -328,6 +328,47 @@ onboarding:
328
328
  Foundation values and reflect them back as the hiring bar and review rubric.
329
329
  Be direct about gaps (no owner on a policy, a role open with no hiring manager),
330
330
  but never clinical — these are people.
331
+ expertise:
332
+ starters:
333
+ - >
334
+ Don't ask for a hiring wishlist — propose the first roles by what unblocks
335
+ the FOUNDER. Whatever the founder is the bottleneck on (sales they can't
336
+ scale, product they can't ship fast enough, ops eating their week) is the
337
+ next hire. Reflect their week back and name the role that buys their time
338
+ back, rather than filling an org chart.
339
+ - >
340
+ Hire for the next 12 months, not the dream team. Propose the role at the
341
+ seniority the company needs NOW — often a scrappy generalist over a
342
+ specialist VP who'll be bored and expensive. Push back on premature senior
343
+ hires the stage can't feed with real scope.
344
+ - >
345
+ Anchor the hiring bar and review rubric to the company's actual values
346
+ (pull them from Foundation), not generic competencies. Propose 3–4 concrete
347
+ "must be true" signals per role derived from those values, so "a great hire"
348
+ means something specific here rather than "smart and nice".
349
+ blindSpots:
350
+ - >
351
+ Culture is not perks — it's what you REWARD and what you TOLERATE. Founders
352
+ describe culture as ping-pong and free lunch; the real culture is who gets
353
+ promoted and what bad behavior goes unchecked. If they answer "culture" with
354
+ benefits, redirect to: what do you celebrate, and what do you refuse to
355
+ put up with?
356
+ - >
357
+ Onboarding and role clarity beat headcount. A team that doesn't know who owns
358
+ what will thrash no matter how many people you add. Before proposing new
359
+ hires, check that existing roles have clear ownership and every new hire has a
360
+ 30/60/90 plan — hiring into ambiguity just scales the confusion.
361
+ - >
362
+ An open role with no hiring manager, or a policy with no owner, is a gap
363
+ hiding in plain sight. Surface these directly: unowned reqs stall for months
364
+ and unowned policies get ignored. Every role needs a decision-maker; every
365
+ policy needs someone accountable for it.
366
+ bar: >
367
+ The org is honest — real people with clear ownership and no orphaned roles or
368
+ policies — the open roles map to what actually unblocks the founder at the right
369
+ seniority for the stage, "a great hire" is defined by concrete signals tied to
370
+ the company's real values, and every new hire lands into role clarity and a
371
+ 30/60/90 plan rather than ambiguity.
331
372
  collect:
332
373
  - profileSlug: team-member
333
374
  what: The people currently on the team, with their role, department, and status.
package/src/legal.yaml CHANGED
@@ -368,6 +368,49 @@ onboarding:
368
368
  renews, what filings and obligations have deadlines, and what IP is worth protecting.
369
369
  Be precise about dates and counterparties; flag risk plainly; never invent legal
370
370
  conclusions. Turn their answers into entities, contracts, compliance items, and IP assets.
371
+ expertise:
372
+ starters:
373
+ - >
374
+ Start by mapping the corporate skeleton, then hang contracts off it. Ask what the
375
+ top-level entity is, where it's incorporated (Delaware C-corp? a local Ltd/GmbH?),
376
+ and whether any subsidiaries or branches exist — because a contract's counterparty
377
+ and an IP asset's owner only mean something once you know which entity signed or
378
+ holds it. Seed the entities first; everything else references them.
379
+ - >
380
+ For each contract they name, capture the RENEWAL and NOTICE dates, not just the
381
+ signing date. The dangerous field is the auto-renew clause with a 30/60/90-day
382
+ notice window — that's what silently locks a company into another year. Propose
383
+ the renewal date and renewal type up front so the workspace can surface it before
384
+ the window closes.
385
+ - >
386
+ Frame the whole session as surfacing RISK, not giving advice. Capture what exists
387
+ and flag what's missing for a real lawyer to review — never state whether something
388
+ is enforceable, compliant, or "fine". Turn "is this okay?" into a captured gap:
389
+ "contract with no signed copy on file — flag for counsel", not a legal opinion.
390
+ blindSpots:
391
+ - >
392
+ The handshake-deal risk: real obligations — a vendor arrangement, a co-founder
393
+ split, a customer commitment — exist with no signed paper behind them. Ask
394
+ explicitly what agreements are operating verbally or by email only, and capture
395
+ each as a contract in "draft" with a flag; an unpapered deal is a dispute waiting
396
+ to happen, and it's invisible unless you go looking for it.
397
+ - >
398
+ Missing IP assignment is the classic startup landmine: founders, early employees,
399
+ and especially contractors who wrote code or designed the brand without a signed
400
+ IP-assignment / work-for-hire clause. The company may not legally own its own
401
+ product. Probe for it directly — "did every contributor sign IP assignment?" — and
402
+ log any gap as a high-priority matter, because it kills fundraises and acquisitions.
403
+ - >
404
+ Renewal, expiry, and filing dates that nobody owns: trademark renewals, annual
405
+ registered-agent/franchise-tax filings, insurance and license expirations, data-
406
+ privacy obligations. These lapse silently and are expensive to revive. Every date
407
+ captured needs an OWNER and a deadline — an unowned deadline is a missed one.
408
+ bar: >
409
+ A GREAT result is an accurate, date-aware risk map: the real legal entities and
410
+ where they sit, the live contracts with their renewal/notice dates and owners, the
411
+ compliance obligations with deadlines and owners, and the IP the company actually
412
+ needs to own — with every gap and unpapered deal explicitly FLAGGED for a real
413
+ lawyer, and not one invented legal conclusion anywhere in it.
371
414
  collect:
372
415
  - profileSlug: legal-entity
373
416
  what: The company's legal entities and the jurisdictions they operate in.