@rubytech/create-maxy-code 0.1.110 → 0.1.112

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.
Files changed (33) hide show
  1. package/dist/index.js +39 -25
  2. package/package.json +1 -1
  3. package/payload/platform/neo4j/schema.cypher +6 -3
  4. package/payload/platform/plugins/cloudflare/references/manual-setup.md +3 -3
  5. package/payload/platform/plugins/cloudflare/references/reset-guide.md +5 -3
  6. package/payload/platform/plugins/memory/references/schema-estate-agent.md +51 -1
  7. package/payload/platform/plugins/venture-studio/PLUGIN.md +6 -1
  8. package/payload/platform/plugins/venture-studio/bin/scaffold.sh +1 -1
  9. package/payload/platform/plugins/venture-studio/skills/brand-pack/SKILL.md +1 -1
  10. package/payload/platform/plugins/venture-studio/skills/investor-data-room/SKILL.md +27 -14
  11. package/payload/platform/plugins/venture-studio/skills/investor-data-room/references/business-plan-template.md +7 -4
  12. package/payload/platform/plugins/venture-studio/skills/investor-data-room/references/data-room-structure.md +6 -5
  13. package/payload/platform/plugins/venture-studio/skills/investor-data-room/references/deck-blueprint-template.md +7 -6
  14. package/payload/platform/plugins/venture-studio/skills/office-hours/SKILL.md +8 -9
  15. package/payload/platform/plugins/venture-studio/skills/zero-to-prototype/SKILL.md +4 -0
  16. package/payload/platform/templates/specialists/agents/personal-assistant.md +1 -1
  17. package/payload/premium-plugins/real-agent/BUNDLE.md +3 -2
  18. package/payload/premium-plugins/real-agent/agents/listing-curator.md +133 -0
  19. package/payload/premium-plugins/real-agent/plugins/brochures/skills/a4-print-documents/SKILL.md +1 -1
  20. package/payload/premium-plugins/real-agent/plugins/brochures/skills/brand-design/SKILL.md +5 -11
  21. package/payload/premium-plugins/real-agent/plugins/brochures/skills/make-brochure/SKILL.md +7 -7
  22. package/payload/premium-plugins/real-agent/plugins/brochures/skills/property-extract/SKILL.md +31 -39
  23. package/payload/premium-plugins/real-agent/plugins/brochures/skills/property-market-report/SKILL.md +4 -4
  24. package/payload/premium-plugins/real-agent/plugins/brochures/skills/property-socials/SKILL.md +3 -2
  25. package/payload/premium-plugins/venture-studio/PLUGIN.md +6 -1
  26. package/payload/premium-plugins/venture-studio/bin/scaffold.sh +1 -1
  27. package/payload/premium-plugins/venture-studio/skills/brand-pack/SKILL.md +1 -1
  28. package/payload/premium-plugins/venture-studio/skills/investor-data-room/SKILL.md +27 -14
  29. package/payload/premium-plugins/venture-studio/skills/investor-data-room/references/business-plan-template.md +7 -4
  30. package/payload/premium-plugins/venture-studio/skills/investor-data-room/references/data-room-structure.md +6 -5
  31. package/payload/premium-plugins/venture-studio/skills/investor-data-room/references/deck-blueprint-template.md +7 -6
  32. package/payload/premium-plugins/venture-studio/skills/office-hours/SKILL.md +8 -9
  33. package/payload/premium-plugins/venture-studio/skills/zero-to-prototype/SKILL.md +4 -0
package/dist/index.js CHANGED
@@ -1284,31 +1284,45 @@ function setupDedicatedNeo4j() {
1284
1284
  shell("cp", ["-r", "/etc/neo4j", confDir], { sudo: true });
1285
1285
  }
1286
1286
  // Idempotent per-brand state — runs on every install.
1287
- // sed `s|^#?key=.*|key=value|` no-ops when the file already has the target
1288
- // value; mkdir -p, chown -R, and unit-write are idempotent by definition.
1289
- // NEO4J_HOME=${dataDir} makes server.directories.run resolve per-brand to
1290
- // ${dataDir}/run, so the launcher's pre-flight does not collide with the
1291
- // system unit's /var/lib/neo4j/run/neo4j.pid (root cause). Plugins
1292
- // and import are sed-overridden because the apt base conf pins them to
1293
- // absolute /var/lib/neo4j/plugins and /var/lib/neo4j/import (shared).
1294
- console.log(" [privileged] sed -i");
1295
- shell("sed", ["-i", `s/^#\\?server\\.bolt\\.listen_address=.*/server.bolt.listen_address=:${NEO4J_PORT}/`, `${confDir}/neo4j.conf`], { sudo: true });
1296
- console.log(" [privileged] sed -i");
1297
- shell("sed", ["-i", `s/^#\\?server\\.http\\.listen_address=.*/server.http.listen_address=:${httpPort}/`, `${confDir}/neo4j.conf`], { sudo: true });
1298
- console.log(" [privileged] sed -i");
1299
- shell("sed", ["-i", `s|^#\\?server\\.directories\\.data=.*|server.directories.data=${dataDir}/data|`, `${confDir}/neo4j.conf`], { sudo: true });
1300
- console.log(" [privileged] sed -i");
1301
- shell("sed", ["-i", `s|^#\\?server\\.directories\\.logs=.*|server.directories.logs=${logDir}|`, `${confDir}/neo4j.conf`], { sudo: true });
1302
- console.log(" [privileged] sed -i");
1303
- shell("sed", ["-i", `s|^#\\?server\\.directories\\.plugins=.*|server.directories.plugins=${dataDir}/plugins|`, `${confDir}/neo4j.conf`], { sudo: true });
1304
- console.log(" [privileged] sed -i");
1305
- shell("sed", ["-i", `s|^#\\?server\\.directories\\.import=.*|server.directories.import=${dataDir}/import|`, `${confDir}/neo4j.conf`], { sudo: true });
1306
- // Verify config was updated — sed silently no-ops if the key format changed
1307
- const confContent = spawnSync("grep", [`server.bolt.listen_address=:${NEO4J_PORT}`, `${confDir}/neo4j.conf`], { stdio: "pipe" });
1308
- if (confContent.status !== 0) {
1309
- console.error(` WARNING: neo4j.conf may not have been updated correctly bolt port ${NEO4J_PORT} not found in config`);
1310
- logFile(` WARNING: sed verification failed bolt port ${NEO4J_PORT} not found in ${confDir}/neo4j.conf`);
1311
- }
1287
+ // Older Neo4j 5.x templates ship a SECOND commented occurrence of these
1288
+ // keys in the "Other Neo4j system properties" section. An in-place
1289
+ // `sed s|^#?key=.*|key=value|` matches both and writes duplicate active
1290
+ // lines; the 5.26.26 parser turns that into a fatal startup error.
1291
+ // Delete-all-then-append guarantees exactly one active line per key
1292
+ // regardless of how many commented occurrences the template ships.
1293
+ const confPath = `${confDir}/neo4j.conf`;
1294
+ const confKeys = [
1295
+ ["server.bolt.listen_address", `:${NEO4J_PORT}`],
1296
+ ["server.http.listen_address", `:${httpPort}`],
1297
+ ["server.directories.data", `${dataDir}/data`],
1298
+ ["server.directories.logs", logDir],
1299
+ ["server.directories.plugins", `${dataDir}/plugins`],
1300
+ ["server.directories.import", `${dataDir}/import`],
1301
+ ];
1302
+ for (const [key, value] of confKeys) {
1303
+ const keyRe = key.replace(/\./g, "\\.");
1304
+ console.log(" [privileged] sed -i (delete)");
1305
+ shell("sed", ["-i", `/^#\\?${keyRe}=/d`, confPath], { sudo: true });
1306
+ console.log(" [privileged] echo >>");
1307
+ shell("sh", ["-c", `echo '${key}=${value}' >> ${confPath}`], { sudo: true });
1308
+ }
1309
+ // Verify exactly one active line per key. Any n>1 aborts the install
1310
+ // BEFORE the systemd unit is written. n==0 means the append failed.
1311
+ const activeCounts = [];
1312
+ for (const [key] of confKeys) {
1313
+ const r = spawnSync("sudo", ["grep", "-c", `^${key}=`, confPath], { stdio: "pipe" });
1314
+ const n = parseInt((r.stdout?.toString() ?? "0").trim(), 10) || 0;
1315
+ activeCounts.push(`${key}:${n}`);
1316
+ if (n !== 1) {
1317
+ const msg = `[neo4j-conf] FATAL ${key} active_count=${n}`;
1318
+ console.error(` ${msg}`);
1319
+ logFile(` ${msg}`);
1320
+ throw new Error(msg);
1321
+ }
1322
+ }
1323
+ const summary = `[neo4j-conf] keys_active=${activeCounts.join(",")}`;
1324
+ console.log(` ${summary}`);
1325
+ logFile(` ${summary}`);
1312
1326
  console.log(" [privileged] mkdir -p");
1313
1327
  shell("mkdir", ["-p", `${dataDir}/data`, `${dataDir}/plugins`, `${dataDir}/import`, logDir], { sudo: true });
1314
1328
  console.log(" [privileged] chown -R");
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rubytech/create-maxy-code",
3
- "version": "0.1.110",
3
+ "version": "0.1.112",
4
4
  "description": "Install Maxy — AI for Productive People",
5
5
  "bin": {
6
6
  "create-maxy-code": "./dist/index.js"
@@ -1071,9 +1071,12 @@ FOR (n:Task) ON (n.createdBySession);
1071
1071
 
1072
1072
  // ----------------------------------------------------------
1073
1073
  // CloudflareTunnel / CloudflareHostname — graph audit of
1074
- // the tunnel-login deterministic flow. Written by the
1075
- // /api/admin/cloudflare/setup endpoint after setup-tunnel.sh exits 0,
1076
- // linked via (Task {kind:'cloudflare-tunnel-login'})-[:PRODUCED]->.
1074
+ // the tunnel-login flow. Historically written by the
1075
+ // /api/admin/cloudflare/setup endpoint after setup-tunnel.sh exits 0;
1076
+ // after Task 288 (PTY-native cloudflared) both the endpoint and the
1077
+ // wrapper script are gone. The constraints below remain so legacy
1078
+ // projections stay queryable, but no current writer emits these nodes.
1079
+ // Linked via (Task {kind:'cloudflare-tunnel-login'})-[:PRODUCED]->.
1077
1080
  // CloudflareHostname carries the routed FQDN; CloudflareTunnel
1078
1081
  // carries the connector identity. Source of truth remains the on-disk
1079
1082
  // cert.pem + tunnel.state + config.yml — these nodes are the graph
@@ -505,20 +505,20 @@ sudo cloudflared service uninstall
505
505
  If `admin.<yourdomain>` is rendering the public-agent UI, the tunnel is fine but the platform UI is treating the admin hostname as public. The platform UI classifies a host as public when either:
506
506
 
507
507
  - the hostname starts with `public.`, or
508
- - the hostname appears in `${CFG_DIR}/alias-domains.json`.
508
+ - the hostname appears in `${HOME}/.${BRAND}/alias-domains.json` (note: brand root, **not** `${CFG_DIR}` — `alias-domains.json` lives one level above `cloudflared/`, because that's where the platform UI watches).
509
509
 
510
510
  Pre-Task-548 sessions populated this file via the now-deleted `tunnel-add-hostname` MCP tool, which wrote every routed hostname — including `admin.*` — into the alias set. The pollution persists across installs.
511
511
 
512
512
  **Diagnose:**
513
513
 
514
514
  ```
515
- cat "${CFG_DIR}/alias-domains.json"
515
+ cat "${HOME}/.${BRAND}/alias-domains.json"
516
516
  ```
517
517
 
518
518
  If `admin.<yourdomain>` appears in the array, remove it:
519
519
 
520
520
  ```
521
- jq --arg H "admin.<yourdomain>" 'map(select(. != $H))' "${CFG_DIR}/alias-domains.json" > /tmp/alias.json && mv /tmp/alias.json "${CFG_DIR}/alias-domains.json"
521
+ jq --arg H "admin.<yourdomain>" 'map(select(. != $H))' "${HOME}/.${BRAND}/alias-domains.json" > /tmp/alias.json && mv /tmp/alias.json "${HOME}/.${BRAND}/alias-domains.json"
522
522
  ```
523
523
 
524
524
  Replace `<yourdomain>` with your actual domain. The platform UI watches the file — no restart required; the next request to the admin hostname routes to the admin surface.
@@ -86,16 +86,18 @@ When the operator is unsure which records are stray, have them list the zone's C
86
86
 
87
87
  ### Remove a rogue entry from `alias-domains.json`
88
88
 
89
- `alias-domains.json` controls which hostnames the platform UI classifies as public (serving the public agent) rather than admin. A prior setup flow may have written an `admin.*` hostname into this file by mistake. Remove it manually:
89
+ `alias-domains.json` controls which hostnames the platform UI classifies as public (serving the public agent) rather than admin. It lives at `${HOME}/.${BRAND}/alias-domains.json` the brand root, **not** `${CFG_DIR}` (which is `${HOME}/.${BRAND}/cloudflared`). The platform UI watches the brand root; writing to `${CFG_DIR}/alias-domains.json` is invisible to the watcher.
90
+
91
+ A prior setup flow may have written an `admin.*` hostname into this file by mistake. Remove it manually:
90
92
 
91
93
  ```
92
- cat "${CFG_DIR}/alias-domains.json"
94
+ cat "${HOME}/.${BRAND}/alias-domains.json"
93
95
  ```
94
96
 
95
97
  If `admin.<yourdomain>` is listed, strip it:
96
98
 
97
99
  ```
98
- jq --arg H "admin.<yourdomain>" 'map(select(. != $H))' "${CFG_DIR}/alias-domains.json" > /tmp/alias.json && mv /tmp/alias.json "${CFG_DIR}/alias-domains.json"
100
+ jq --arg H "admin.<yourdomain>" 'map(select(. != $H))' "${HOME}/.${BRAND}/alias-domains.json" > /tmp/alias.json && mv /tmp/alias.json "${HOME}/.${BRAND}/alias-domains.json"
99
101
  ```
100
102
 
101
103
  Replace `<yourdomain>` with the actual domain. The platform UI watches the file and reloads without a restart.
@@ -12,12 +12,59 @@ When loading this reference, confirm: "Using schema-base + schema-estate-agent".
12
12
 
13
13
  | Entity | Neo4j Label | Schema.org Type | Required Properties |
14
14
  |--------|-------------|-----------------|---------------------|
15
- | Listing | `Listing` | `schema:RealEstateListing` | `accountId`, `address` (id), `listingType` (sale/let), `price`, `status`, `bedrooms`, `bathrooms`, `sqft` |
15
+ | Listing | `Listing` | `schema:RealEstateListing` | `accountId`, `slug`, `displayName`, `listingType` (sale/let), `status`, `sourceSystem`, `sourceId`, `scope`, `heroImageUrl`*, `pageUrl`*, `blurb` |
16
16
  | Property | `Property` | `schema:Accommodation` | `accountId`, `address` (id), `propertyType`, `tenure`, `epcRating`, `features` |
17
17
  | Viewing | `Viewing` | `schema:Event` (subtype) | `accountId`, `listing` (id), `applicant` (id), `date`, `feedback`, `outcome` |
18
18
  | Applicant | `Applicant` | `schema:Person` (extended) | Base Person properties + `budget`, `tenure`, `moveDate`, `requirements` |
19
19
  | Offer | `Offer` | `schema:Offer` | `accountId`, `listing` (id), `applicant` (id), `amount`, `conditions`, `status`, `date` |
20
20
 
21
+ \* `heroImageUrl` and `pageUrl` are required for any Listing whose `status` is `for-sale`, `under-offer`, or `sold` (anything publicly listable). Listings with `status: "off-market"` or `status: "withdrawn"` are exempt — they describe stock not currently visible to visitors and have no public listing page to point at. The curator writes `status: "off-market"` and skips the two URLs when the source has no public marketing.
22
+
23
+ ### Listing — full property set
24
+
25
+ The required-properties column above is the minimum a Listing must carry. The complete property set the `listing-curator` specialist writes:
26
+
27
+ **Visitor-renderable (the public agent reads these to assemble property cards):**
28
+ - `slug` — URL-safe identifier derived from address (`griffin-house-upper-church-street-chepstow`)
29
+ - `displayName` — human-readable title (`Griffin House, Upper Church Street, Chepstow NP16 5EX`)
30
+ - `heroImageUrl` — primary image URL that will render inline in the chat
31
+ - `blurb` — single marketing-grade sentence, ≤ 280 characters, suitable as alt-text and short caption
32
+ - `pageUrl` — the live listing URL the visitor follows to view full details
33
+
34
+ **Marketing entity:**
35
+ - `listingType` — `sale` or `let`
36
+ - `status` — `for-sale` / `under-offer` / `sold` / `withdrawn` / `off-market`
37
+ - `price` — integer in pence (no currency symbol, no commas)
38
+ - `priceQualifier` — `guide` / `offers-over` / `offers-in-excess` / `poa` / `fixed-price` / `auction` (null when not stated)
39
+ - `bedrooms`, `bathrooms`, `receptionRooms` — integers (null when unknown)
40
+ - `floorAreaSqft` — integer square feet (null when unknown)
41
+
42
+ **Address (carried directly on the Listing rather than via a separate PostalAddress when only the formatted address is known — addresses upgrade to a linked `:PostalAddress` once structured):**
43
+ - `postcode` — UK postcode, upper-case, single-space-separated outward/inward (`NP16 5EX`)
44
+ - `addressLine` — first line of the address
45
+ - `town`
46
+
47
+ **Structured detail (optional):**
48
+ - `propertyType` — `cottage` / `detached` / `semi-detached` / `terraced` / `flat` / `bungalow` / etc.
49
+ - `tenure` — `freehold` / `leasehold` / `share-of-freehold` / `commonhold`
50
+ - `description` — the full descriptive copy from the source (the `body` of any legacy KnowledgeDocument; the description block of the source listing)
51
+ - `imageUrls` — string array of all image URLs (`heroImageUrl` is always also present in this array, at index 0)
52
+ - `floorplanUrls` — string array
53
+ - `epcUrl` — the EPC document URL
54
+
55
+ **Provenance + search:**
56
+ - `sourceSystem` — `loop-crm` / `zip-upload` / `manual`
57
+ - `sourceId` — natural key in the source system (for Loop, the `loopPropertyId`)
58
+ - `ingestedAt`, `lastVerifiedAt` — ISO timestamps
59
+ - `scope` — `public` for listings that should be returned to anonymous visitors via the public memory-search; `shared` for staff-only listings (e.g. pre-marketing pipeline)
60
+ - `embedding` — 768-dim vector (written automatically by `memory-write`)
61
+
62
+ ### Listing — natural-key contract
63
+
64
+ Idempotency key: **`(accountId, sourceSystem, sourceId)`**. The curator MERGEs on this triple. Re-running the curator over the same source record updates the existing Listing in place — fields refresh (status drift over the listing's lifecycle is expected and desired: `for-sale` → `under-offer` → `sold`); no duplicate Listing is ever created.
65
+
66
+ If the source emits multiple distinct listing events tied to a single underlying property (e.g. relisted after withdrawal, then again let separately), each listing event carries its own `sourceId` in the source system and becomes its own `:Listing` node. The two listings share a `:Property` parent via separate `[:FOR_PROPERTY]` edges. The curator never collapses distinct listing events into one node.
67
+
21
68
  ### Applicant vs base Person
22
69
 
23
70
  `Applicant` extends the base `Person` type with property-search-specific properties. Use `Applicant` as an additional label on the `Person` node — the applicant is still a `Person` for base queries, but the extra label carries estate-agent-specific fields like `budget` and `requirements`.
@@ -27,9 +74,12 @@ When loading this reference, confirm: "Using schema-base + schema-estate-agent".
27
74
  ## Relationship Patterns
28
75
 
29
76
  ```
77
+ (:Listing)-[:LISTED_BY]->(:LocalBusiness)
30
78
  (:Listing)-[:FOR_PROPERTY]->(:Property)
31
79
  (:Viewing)-[:FOR_LISTING]->(:Listing)
32
80
  (:Viewing)-[:BY_APPLICANT]->(:Person)
33
81
  (:Offer)-[:ON_LISTING]->(:Listing)
34
82
  (:Offer)-[:FROM_APPLICANT]->(:Person)
35
83
  ```
84
+
85
+ `(:Listing)-[:LISTED_BY]->(:LocalBusiness)` is the mandatory parent edge that every Listing carries — it satisfies the ≥1-adjacency write-gate doctrine ([[feedback_graph_hierarchy_doctrine]]) and names the estate agency that owns the listing. `[:FOR_PROPERTY]` is composed additionally when the underlying physical `:Property` node is known (full structural data captured); it is optional because Listings frequently land before Property structural data has been collected.
@@ -4,6 +4,7 @@ description: "Founding-a-business agent. Drives an operator from raw idea to fun
4
4
  requires:
5
5
  - projects
6
6
  - work
7
+ - deep-research
7
8
  metadata: {"platform":{"always":false,"embed":["admin"],"pluginKey":"venture-studio","optional":true,"recommended":true}}
8
9
  ---
9
10
 
@@ -62,8 +63,8 @@ The script's three effects:
62
63
  2. **Creates the `Project` node.** Tier `full` (data-room work is multi-phase). Project name is the business's working name; description references the data-room root path.
63
64
  3. **Enumerates the eight artefact Tasks** in section order — one transaction, atomic with the Project. The work-item list the script pre-seeds:
64
65
  - **Stage 1 — Office-hours design doc** → produces `01-narrative/office-hours-design.md` (skill: `office-hours`)
65
- - **Brand pack** → produces brand identity files into `06-product-ip/brand/` (skill: `brand-pack`)
66
66
  - **Stage 2 — Wedge validation + landing page + PRD** → produces `01-narrative/{PMF, LANDING, PRD}.md` (skill: `zero-to-prototype`)
67
+ - **Brand pack** → produces brand guidelines + summary + color palette + typography system + tone-of-voice (voice/messaging/copy) + logo guidelines into `06-product-ip/brand/` (skill: `brand-pack`)
67
68
  - **Stage 3 — Business plan** → produces `01-narrative/business-plan.md` (skill: `investor-data-room` Stage 3)
68
69
  - **Stage 3b — Term sheet** → produces `html/prospectus/term_sheet.html` (skill: `investor-data-room` Stage 3b)
69
70
  - **Stage 4 — Deck blueprint** → produces `01-narrative/deck-blueprint.md` (skill: `investor-data-room` Stage 4)
@@ -96,6 +97,10 @@ When the operator's intent matches a row but the scaffold does not yet exist, ru
96
97
  - If a section reveals a new artefact the operator wants (e.g. a competitor-claims-rebuttal in `08-market/`), `work-create` a new Task under the same Project, then proceed.
97
98
  - The Project's health signal (green/amber/red) is computed from Task state. Use `project-get` at the start of each turn to surface what's outstanding.
98
99
 
100
+ ## Research routing
101
+
102
+ Every structured-research task — market sizing (TAM/SAM/SOM + CAGR), compliance research (DMCC / ICO ADM / EU AI Act), competitor scans, comparable rounds and exit comparables, named-acquirer enumeration — routes through the `research-assistant` specialist with the five `deep-research` skills (`deep-research`, `book-mirror`, `strategic-reading`, `academic-verify`, `data-research`). Dispatch the specialist; do not call `WebSearch` or `WebFetch` directly from a venture-studio skill. The specialist returns structured findings with citations the data-room artefacts can quote verbatim.
103
+
99
104
  ## Tone
100
105
 
101
106
  Founder-facing. Direct, evidence-based, no flattery. You are the chief of staff for a one-person founding team — your job is to keep every artefact tracked and every deadline visible, while the operator focuses on the parts only they can do (customer conversations, founder signal, vision).
@@ -64,8 +64,8 @@ PAYLOAD=$(cat <<JSON
64
64
  "tier": "full",
65
65
  "workItems": [
66
66
  {"name": "Stage 1 — Office-hours design doc", "description": "Produces 01-narrative/office-hours-design.md via the office-hours skill."},
67
- {"name": "Brand pack", "description": "Produces brand identity (palette, typography, logo) into 06-product-ip/brand/ via the brand-pack skill."},
68
67
  {"name": "Stage 2 — Wedge validation + landing page + PRD", "description": "Produces 01-narrative/{PMF,LANDING,PRD}.md via the zero-to-prototype skill."},
68
+ {"name": "Brand pack", "description": "Produces brand guidelines + summary + color palette + typography system + tone-of-voice (voice/messaging/copy) + logo guidelines into 06-product-ip/brand/ via the brand-pack skill."},
69
69
  {"name": "Stage 3 — Business plan", "description": "Produces 01-narrative/business-plan.md via investor-data-room Stage 3."},
70
70
  {"name": "Stage 3b — Term sheet", "description": "Produces html/prospectus/term_sheet.html via investor-data-room Stage 3b."},
71
71
  {"name": "Stage 4 — Deck blueprint", "description": "Produces 01-narrative/deck-blueprint.md via investor-data-room Stage 4."},
@@ -39,7 +39,7 @@ Before generating anything, gather the following. Ask all questions in a single
39
39
  - Website URL (fetch it if provided — extract existing colors, fonts, tone)
40
40
  - Inspiration brands (brands they admire aesthetically)
41
41
 
42
- If the user provides a URL, use the fetch tool to read it and extract: dominant colors (check CSS or visual description), font choices, tone of copy, and any existing brand signals. Pre-fill your recommendations based on this research.
42
+ If the user provides a URL — their own site, a competitor brand, or an inspiration brand — dispatch the `research-assistant` specialist (with `deep-research` for site copy + visual scan, `WebFetch` available through the specialist) rather than calling `fetch` or `WebFetch` directly from this skill. The specialist returns: dominant colors (CSS or visual description), font choices, tone of copy, and any existing brand signals. Pre-fill your recommendations from the specialist's structured findings.
43
43
 
44
44
  ---
45
45
 
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: investor-data-room
3
- description: Use when a UK-domiciled founder needs to produce a full seed-raise pack from idea to deliverables: graph-structured data room, 15-section business plan, persuasive prospectus + formal term sheet (with FCA self-certification appendices), 12-slide deck blueprint, print-ready HTML+PDF for each. Trigger phrases include "build me a data room", "draft a business plan", "deck from the business plan", "draft an investment prospectus", "generate a term sheet", "from office hours to investor pack", "set up the fundraise repo". The skill never speculates on financial figures or cap-table values: every number traces to a Companies House filing, a financial model worksheet, or a source citation. Public-facing artefacts contain zero internal workings (no "reconciliation pending", no "open Q" markers, no comparison-to-baseline commentary). Design tokens are harmonised across business plan, prospectus, term sheet, and deck via the operator's project design-tokens spec.
3
+ description: Use when a UK-domiciled founder needs to produce a full seed-raise pack from idea to deliverables: graph-structured data room, 16-section business plan, persuasive prospectus + formal term sheet (with FCA self-certification appendices), 13-slide deck blueprint, print-ready HTML+PDF for each. Trigger phrases include "build me a data room", "draft a business plan", "deck from the business plan", "draft an investment prospectus", "generate a term sheet", "from office hours to investor pack", "set up the fundraise repo". The skill never speculates on financial figures or cap-table values: every number traces to a Companies House filing, a financial model worksheet, or a source citation. Public-facing artefacts contain zero internal workings (no "reconciliation pending", no "open Q" markers, no comparison-to-baseline commentary). Design tokens are harmonised across business plan, prospectus, term sheet, and deck via the operator's project design-tokens spec.
4
4
  allowed-tools:
5
5
  - Bash
6
6
  - Read
@@ -25,13 +25,15 @@ Complete when the data room contains:
25
25
  README.md # data-room index, status snapshot, doctrine
26
26
  01-narrative/
27
27
  office-hours-design.md # ideation working scratchpad
28
- business-plan.md # 15-section business plan
29
- deck-blueprint.md # 12-slide blueprint
28
+ business-plan.md # 16-section business plan
29
+ deck-blueprint.md # 13-slide blueprint
30
+ exit-thesis.md # named acquirers + recent exit comparables
30
31
  02-corporate-legal/
31
32
  README.md # incorporation filings, articles, board minutes
32
33
  incorporation-<co-house-no>-<date>.pdf # IN01 + statement of capital + cap table
33
34
  03-cap-table/
34
35
  README.md # pre/post-investment cap table with PSC notes
36
+ comparables.md # recent comparable rounds (company / pre-money / post-money / multiple / source) cited by the term-sheet valuation
35
37
  04-financials/
36
38
  README.md
37
39
  model_worksheet.md # opening cash, capex, burn, MRR ramp, two-round
@@ -78,7 +80,9 @@ Skip stages that are already complete; do not regenerate stale artefacts blindly
78
80
 
79
81
  ## Stage 1 — Office-hours ideation
80
82
 
81
- Drive a conversational discovery session using the sibling `office-hours` skill. Output a single `office-hours-design.md` capturing:
83
+ Drive a conversational discovery session using the sibling `office-hours` skill. Market sizing and competitor recon during discovery dispatch the `research-assistant` specialist with `deep-research` + `data-research` rather than calling `WebSearch` directly — every market figure that ends up in `08-market/sources.md` must trace to a structured-research citation.
84
+
85
+ Output a single `office-hours-design.md` capturing:
82
86
 
83
87
  - Problem statement
84
88
  - Demand evidence (with numbers and dates)
@@ -113,22 +117,23 @@ References: `references/data-room-structure.md` for the section-by-section purpo
113
117
 
114
118
  ## Stage 3 — Business plan synthesis
115
119
 
116
- Generate `01-narrative/business-plan.md` with **15 sections** following the canonical structure:
120
+ Generate `01-narrative/business-plan.md` with **16 sections** following the canonical structure:
117
121
 
118
122
  1. Executive Summary
119
123
  2. Vision and Mission (Vision / Mission / Doctrine triad)
120
124
  3. The Company (legal entity table + pre-investment cap table)
121
- 4. The Market (TAM/SAM/SOM + structural tailwind + self-employed wedge + domestic adjacency + international upside + pricing)
125
+ 4. The Market (TAM/SAM/SOM bottoms-up with geography-tier floor + CAGR with citation + 3-yr market-expansion thesis + market-share trajectory to 3–8% SAM in 5 yrs + structural tailwind + self-employed wedge + domestic adjacency + international upside + pricing)
122
126
  5. The Product (what it is + wedge product + upsell path + substrate moat + conversation ingestion + network + Anthropic asymmetric capture + human-services layer)
123
- 6. The Business Model (revenue streams + unit economics)
127
+ 6. The Business Model (revenue streams + unit economics — ACV, CAC, LTV, **LTV:CAC**, gross margin, **burn multiple**, churn — each a named line)
124
128
  7. Go-to-Market (Wedge → Beachhead → Blitzscale framework + demand evidence + GTM partners + horse-before-cart logic + geography)
125
129
  8. Competition (three failing categories + RANL differentiation + most-direct-competitor counter)
126
130
  9. Operations (technology stack + data sovereignty + IP ownership chain + compliance posture summary)
127
131
  10. Compliance and regulatory positioning (UK consumer protection + UK data/AI regime + EU AI Act + adjacent UK obligations + moat-not-tax close)
128
132
  11. Team (founders + strategic shareholders + hiring plan)
129
- 12. Financial Plan (12.1 opening balance sheet through 12.7 use of funds)
133
+ 12. Financial Plan (12.1 opening balance sheet through 12.7 use of funds; valuation per round cites `03-cap-table/comparables.md`)
130
134
  13. Risks and Mitigations
131
135
  14. Milestones (the N-month thesis)
136
+ 14b. Exit thesis (target exit value + 5–8-year horizon + exit routes — strategic / PE / IPO — + 3–5 named acquirers with one-line rationale each)
132
137
  15. The bottom line (summary table + close)
133
138
  + Appendices (titled documents only; no internal-only file pointers)
134
139
 
@@ -140,7 +145,14 @@ Generate `01-narrative/business-plan.md` with **15 sections** following the cano
140
145
  - **Financial figures derive from the model worksheet.** Cite "Appendix A" by title.
141
146
  - **No em-dashes between alphabetic words** in user-facing prose (recurring style violation in this project's history; see `references/internal-workings-scrub.md`).
142
147
 
143
- Compliance research is mandatory before drafting Section 10. WebSearch (or equivalent) for: DMCC Act (UK consumer protection for estate-agency), ICO ADM framework (Articles 22A–22D under UK GDPR + ICO 2025 strategy), EU AI Act (force date, high-risk classification for property-financing decisions). Cite each.
148
+ **Research routing across Stage 3.** Every figure sourced from the wider world routes through the `research-assistant` specialist never raw `WebSearch` / `WebFetch` from this skill:
149
+
150
+ - **Section 4 (Market)** — TAM/SAM/SOM citations, CAGR sourcing, market-share trajectory baselines, competitor rebuttal facts: dispatch `research-assistant` with `data-research`.
151
+ - **Section 10 (Compliance)** — DMCC Act (UK consumer protection for estate-agency), ICO ADM framework (Articles 22A–22D under UK GDPR + ICO 2025 strategy), EU AI Act (force date, high-risk classification for property-financing decisions): dispatch `research-assistant` with `academic-verify` to retrieve the primary regulatory texts. Cite each in the body.
152
+ - **Section 12 (Financial — valuation comparables)** — recent comparable rounds that feed `03-cap-table/comparables.md`: dispatch `research-assistant` with `data-research`.
153
+ - **Section 14b (Exit thesis)** — 3–5 named acquirers (strategic / PE / IPO) with one-line rationale each, plus recent comparable exits (company / acquirer / multiple / year / source) that feed the exit section of `03-cap-table/comparables.md`: dispatch `research-assistant` with `data-research`.
154
+
155
+ The specialist returns structured findings; the skill quotes those findings verbatim into the relevant section and into `08-market/sources.md` / `03-cap-table/comparables.md`.
144
156
 
145
157
  References: `references/business-plan-template.md` for the section-by-section template; `references/compliance-research-checklist.md` for the UK + EU regulatory regimes to verify.
146
158
 
@@ -172,20 +184,21 @@ References: `references/termsheet-template.md`.
172
184
 
173
185
  ## Stage 4 — Deck blueprint synthesis
174
186
 
175
- Generate `01-narrative/deck-blueprint.md` as a **12-slide brief** the deck designer can execute. Each slide has Purpose, Headline (one-line message), Body (bullets + figures pulled from the business plan), Visual suggestion, and Source reference. The 12 slides:
187
+ Generate `01-narrative/deck-blueprint.md` as a **13-slide brief** the deck designer can execute. Each slide has Purpose, Headline (one-line message), Body (bullets + figures pulled from the business plan), Visual suggestion, and Source reference. The 13 slides:
176
188
 
177
189
  1. Cover (raise headline + founders)
178
190
  2. Vision (Vision / Mission / Doctrine)
179
- 3. The Market (TAM + tailwind + wedge)
191
+ 3. The Market (TAM + tailwind + wedge + **CAGR with citation**)
180
192
  4. Business Model (subscription + service layer + unit economics)
181
193
  5. Go-to-Market (Wedge → Beachhead → Blitzscale + named partners)
182
194
  6. The Product (substrate + wedge + network + asymmetric capture + services layer)
183
195
  7. Competition (three failing categories + most-direct counter)
184
196
  8. The Team (founders + strategic shareholders)
185
- 9. Economics (P&L summary + cash flow + break-even)
197
+ 9. Economics (P&L summary + cash flow + break-even + **LTV:CAC and burn multiple**)
186
198
  10. The Raise (size, valuation, dilution, instrument, use of funds, IP transfer, follow-on round)
187
- 11. Milestones (M0 to M-final timeline)
188
- 12. Other Information (compliance + platform dependency + contact)
199
+ 11. Exit (target exit value + 5–8-year horizon + routes — strategic / PE / IPO — + 3–5 named acquirers with one-line rationale)
200
+ 12. Milestones (M0 to M-final timeline)
201
+ 13. Other Information (compliance + platform dependency + contact)
189
202
 
190
203
  Production notes attached: format (16:9 landscape, PDF + source deck), design tokens reference (the operator's project design-tokens spec, path supplied at Stage 5 invocation), chart-source consistency with the financial model, speaker-note attribution.
191
204
 
@@ -1,4 +1,4 @@
1
- # Business plan template — 15-section structure
1
+ # Business plan template — 16-section structure
2
2
 
3
3
  The canonical structure used by `01-narrative/business-plan.md`. Every public-facing artefact (deck, prospectus, term sheet) derives from this file. Apply the internal-workings scrub (see `internal-workings-scrub.md`) on every revision.
4
4
 
@@ -14,13 +14,13 @@ Three blocks. **Vision.** Where the company ends up at full execution. **Mission
14
14
  Legal entity table (legal name, Companies House number, incorporation date, registered office, SIC, PSC status, sole proposed director on IN01) + pre-investment cap table (sourced from the IN01 verbatim) + post-investment dilution pointer.
15
15
 
16
16
  ### 4. The Market
17
- Subsections: Size of the addressable market (TAM with citation per figure); Structural tailwind (margin squeeze, regulatory tailwind, or equivalent); Self-employed wedge or analogous high-growth segment; Domestic adjacency (next-vertical expansion); International upside (channel partner enabling it); Pricing and TAM (per-customer ACV × addressable count = TAM number).
17
+ Subsections: Size of the addressable market (TAM with citation per figure, bottoms-up construction; geography-tier floor — **late pre-seed TAM is expected to clear $1B US / $500M UK / $500M EU**, flag if the named geography sits below its floor); Market growth rate (single CAGR figure with citation + a one-line 3-year market-expansion thesis stating why the market gets bigger and why this company captures more share as it does); Market-share trajectory (path to 3-8% of SAM within 5 years, reconciled line-by-line against the ARR target in Section 12); Structural tailwind (margin squeeze, regulatory tailwind, or equivalent); Self-employed wedge or analogous high-growth segment; Domestic adjacency (next-vertical expansion); International upside (channel partner enabling it); Pricing and TAM (per-customer ACV × addressable count = TAM number).
18
18
 
19
19
  ### 5. The Product
20
20
  Subsections: What it is (substrate description, CRM-agnostic / data-sovereign positioning); The wedge product (narrowest unit of value, public-by-default if applicable); The upsell path (wedge → high-value output → full substrate); The substrate moat (operator-data + ontological graph + flywheel); Conversation ingestion (or equivalent lock-in mechanic); The network (federation thesis); Asymmetric-capture position (the LLM-binary wrap argument, with commercial-practice insurance); Human-services layer (training, support, white-glove, anti-fragile-against-frontier-AI).
21
21
 
22
22
  ### 6. The Business Model
23
- Revenue streams (subscription tiers + future network-effect revenue), unit economics (ACV, CAC, gross margin, churn placeholder), compute-mark-up doctrine ("never mark up the LLM compute; customer pays the LLM provider directly").
23
+ Revenue streams (subscription tiers + future network-effect revenue). Unit economics — each metric is a named line: **ACV**, **CAC**, **LTV**, **LTV:CAC ratio** (target ≥ 3:1 by Month 12), **gross margin** (target ≥ 70% steady-state), **burn multiple** (net burn ÷ net new ARR; target ≤ 2× during wedge, ≤ 1× post-PMF), **churn** (logo + revenue). Compute-mark-up doctrine ("never mark up the LLM compute; customer pays the LLM provider directly").
24
24
 
25
25
  ### 7. Go-to-Market
26
26
  Wedge → Beachhead → Blitzscale framework (with months and funding source per phase), demand evidence (40+ EOIs, paid intents, founder dogfood, partnership status — every number cited), GTM partners (one row per named partner with role and source), horse-before-cart logic (public-first wedge that earns trust for the private high-value upsell), geography.
@@ -38,7 +38,7 @@ Three regulatory regimes: UK consumer protection (DMCC Act for estate agency / e
38
38
  Founders (foregrounded) with role + concise career summary + key credentials + pre-investment shareholding. Strategic shareholders from incorporation (advisors, family, JV partners on the cap table from day one). Hiring plan table with month-triggered roles + salary + trigger condition.
39
39
 
40
40
  ### 12. Financial Plan
41
- 12.1 Opening balance sheet (M0 after capex). 12.2 Year-1 Income Statement (revenue + COGS + every opex line + depreciation + EBIT + corp tax + net loss). 12.3 Year-1 cash flow summary table (period-by-period opening, net flow, closing cash). 12.4 Closing balance sheet (M12). 12.5 Two-round funding strategy (timing, size, pre-money, purpose, gating evidence per round). 12.6 Contingency levers. 12.7 Use of funds (this round) by bucket.
41
+ 12.1 Opening balance sheet (M0 after capex). 12.2 Year-1 Income Statement (revenue + COGS + every opex line + depreciation + EBIT + corp tax + net loss). 12.3 Year-1 cash flow summary table (period-by-period opening, net flow, closing cash). 12.4 Closing balance sheet (M12). 12.5 Two-round funding strategy (timing, size, pre-money, purpose, gating evidence per round) — **valuation per round cites `03-cap-table/comparables.md`** (recent comparable rounds: company / pre-money / post-money / multiple / source). 12.6 Contingency levers. 12.7 Use of funds (this round) by bucket.
42
42
 
43
43
  ### 13. Risks and Mitigations
44
44
  Two-column table: risk + mitigation. Cover Loop / Anthropic / competitor-ships-earlier / wedge-fails-to-convert / founder-transition / counsel-delays / Round-2-market / investor-structure.
@@ -46,6 +46,9 @@ Two-column table: risk + mitigation. Cover Loop / Anthropic / competitor-ships-e
46
46
  ### 14. Milestones (the N-month thesis)
47
47
  Month-by-month table: M0 close + closing conditions; M1 first paying customer; M3 product-engineer hire + ~10 customers; M6 wedge phase complete; M7 Round 2 raise opens; M9 Round 2 closes; M12 break-even.
48
48
 
49
+ ### 14b. Exit thesis
50
+ Target exit value (£m), horizon (5–8 years), exit routes considered (strategic acquisition, PE rollup, IPO) with a one-line view on which route is most likely and why. **3–5 named acquirers**, each with a one-line rationale (why they would buy: distribution gap, technology gap, defensive play, vertical entry). Sourced from `08-market/sources.md` and `03-cap-table/comparables.md` (recent exit comparables: company / acquirer / multiple / year / source). Body references "Appendix B" by title.
51
+
49
52
  ### 15. The bottom line
50
53
  Summary table of headline numbers (raise size, pre-money, post-money, dilution, runway, Y1 revenue/loss/cash-burn/closing-cash/ARR, break-even month, Round 2 timing/size). Closing paragraph.
51
54
 
@@ -9,8 +9,9 @@ Standard ten numbered sections plus root README, internal-narrative subdirectory
9
9
 
10
10
  **Currently present.**
11
11
  - `office-hours-design.md` — APPROVED office-hours output (internal).
12
- - `business-plan.md` — 15-section public business plan.
13
- - `deck-blueprint.md` — 12-slide brief.
12
+ - `business-plan.md` — 16-section public business plan.
13
+ - `deck-blueprint.md` — 13-slide brief.
14
+ - `exit-thesis.md` — target exit value, 5–8-year horizon, exit routes (strategic / PE / IPO), 3–5 named acquirers with one-line rationale each.
14
15
 
15
16
  ### 02-corporate-legal
16
17
  **Purpose.** Statutory documentation. First section any investor's lawyer asks for.
@@ -20,12 +21,12 @@ Standard ten numbered sections plus root README, internal-narrative subdirectory
20
21
  ### 03-cap-table
21
22
  **Purpose.** Who owns what, before and after the round. Most-scrutinised number in seed-stage diligence.
22
23
 
23
- **Standard contents.** Pre-investment cap table (per IN01), post-investment cap table (with dilution math), fully-diluted including option pool, founder vesting schedule (if any), share register, subscription letters.
24
+ **Standard contents.** Pre-investment cap table (per IN01), post-investment cap table (with dilution math), fully-diluted including option pool, founder vesting schedule (if any), share register, subscription letters, `comparables.md` (recent comparable rounds — company / pre-money / post-money / multiple / source — that the term sheet's valuation cites).
24
25
 
25
26
  ### 04-financials
26
27
  **Purpose.** The investability of the raise: runway, burn, revenue ramp, break-even, contingency.
27
28
 
28
- **Standard contents.** `model_worksheet.md` (opening cash, capex, monthly burn, MRR ramp, two-round funding strategy, contingency levers), historical accounts (if any), bank statements, unit economics, VAT status.
29
+ **Standard contents.** `model_worksheet.md` (opening cash, capex, monthly burn, MRR ramp, two-round funding strategy, contingency levers), historical accounts (if any), bank statements, unit economics (must include **LTV:CAC ratio** and **burn multiple** as named lines alongside ACV / CAC / LTV / gross margin / churn), VAT status.
29
30
 
30
31
  ### 05-commercial
31
32
  **Purpose.** Customer pipeline, demand evidence, GTM partners, route-to-revenue.
@@ -45,7 +46,7 @@ Standard ten numbered sections plus root README, internal-narrative subdirectory
45
46
  ### 08-market
46
47
  **Purpose.** Size of the prize, shape of demand, competitive landscape. Every market figure in the business plan must trace to a row in this section.
47
48
 
48
- **Standard contents.** `sources.md` (every figure with citation), `competitor-value-claims-rebuttal.md` (vendor-by-vendor rebuttal framework), TAM/SAM/SOM file, customer-segmentation analysis, regulatory landscape, international-expansion potential.
49
+ **Standard contents.** `sources.md` (every figure with citation), `competitor-value-claims-rebuttal.md` (vendor-by-vendor rebuttal framework), TAM/SAM/SOM file (bottoms-up; **geography-tier floor** — late pre-seed TAM is expected to clear $1B US / $500M UK / $500M EU; flag any named geography that sits below its floor), `market-growth-rate.md` (single CAGR figure with citation + one-line 3-year market-expansion thesis), `market-share-trajectory.md` (path to 3–8% SAM within 5 years, reconciled to the ARR target in the business plan), customer-segmentation analysis, regulatory landscape, international-expansion potential.
49
50
 
50
51
  ### 09-operations
51
52
  **Purpose.** Day-to-day regulatory, compliance, and operational infrastructure.
@@ -1,23 +1,24 @@
1
- # Deck blueprint template — 12 slides
1
+ # Deck blueprint template — 13 slides
2
2
 
3
3
  Each slide is specified by Purpose, Headline (one-line message), Body (bullets + figures pulled from the business plan), Visual suggestion, and Source reference. The deck is the presentation surface; the business plan is the source of truth.
4
4
 
5
- ## 12-slide layout
5
+ ## 13-slide layout
6
6
 
7
7
  | # | Slide | What it lands |
8
8
  |---|---|---|
9
9
  | 1 | Cover | Company name, raise headline, three foregrounded founders, Companies House identifier. |
10
10
  | 2 | Vision | Vision / Mission / Doctrine triad. |
11
- | 3 | The Market | TAM with citation, structural tailwind (margin-squeeze / regulatory / equivalent), self-employed or analogous wedge, domestic adjacency, international upside, pricing band. |
11
+ | 3 | The Market | TAM with citation, structural tailwind (margin-squeeze / regulatory / equivalent), self-employed or analogous wedge, domestic adjacency, international upside, pricing band, **CAGR with citation**. |
12
12
  | 4 | Business Model | Subscription tiers + hardware + service layer + future network-effect revenue + unit economics + compute-no-markup doctrine. |
13
13
  | 5 | Go-to-Market | Wedge → Beachhead → Blitzscale framework, demand evidence numbers, named GTM partners, horse-before-cart logic. |
14
14
  | 6 | The Product | Substrate description, wedge, upsell path, substrate moat, conversation ingestion, network, asymmetric capture, services layer. |
15
15
  | 7 | Competition | Three failing categories + most-direct-competitor counter (CRM-agnostic vs migration-required). |
16
16
  | 8 | The Team | Founders + strategic shareholders, with one-line credential per person and shareholding %. |
17
- | 9 | Economics | Y1 revenue, P&L loss, cash burn, M11 cash low, M12 closing cash, closing ARR, break-even month. Two-panel chart: MRR ramp with burn overlay + monthly cash balance. |
17
+ | 9 | Economics | Y1 revenue, P&L loss, cash burn, M11 cash low, M12 closing cash, closing ARR, break-even month, **LTV:CAC and burn multiple**. Two-panel chart: MRR ramp with burn overlay + monthly cash balance. |
18
18
  | 10 | The Raise | Size, pre-money, post-money, dilution, instrument, use of funds, IP transfer at close, Round 2 size + timing, pre-emption. Pie chart of post-investment cap table. |
19
- | 11 | Milestones | M0 to M-final timeline with MRR curve and Round-1 / Round-2 close markers. |
20
- | 12 | Other Information | Compliance (DMCC + UK ICO + EU AI Act), platform-dependency disclosure with the commercial-practice-insurance answer, contact card (founders + email + web). |
19
+ | 11 | Exit | Target exit value, 5–8-year horizon, exit routes (strategic / PE / IPO), 3–5 named acquirers with one-line rationale each. Sourced from `01-narrative/exit-thesis.md`. |
20
+ | 12 | Milestones | M0 to M-final timeline with MRR curve and Round-1 / Round-2 close markers. |
21
+ | 13 | Other Information | Compliance (DMCC + UK ICO + EU AI Act), platform-dependency disclosure with the commercial-practice-insurance answer, contact card (founders + email + web). |
21
22
 
22
23
  ## Production notes attached to the blueprint
23
24
 
@@ -32,14 +32,13 @@ You are a **YC office hours partner**. Your job is to ensure the problem is unde
32
32
 
33
33
  ## Phase 1: Context Gathering
34
34
 
35
- Understand the project and the area the user wants to change.
35
+ Understand the operator's business and the area they want to change.
36
36
 
37
- 1. Read `CLAUDE.md`, `TODOS.md` (if they exist).
38
- 2. Run `git log --oneline -30` and `git diff origin/main --stat 2>/dev/null` to understand recent context.
39
- 3. Use Grep/Glob to map the codebase areas most relevant to the user's request.
40
- 4. **List any prior office-hours design docs on disk** under the operator's project (e.g. the data-room `01-narrative/` directory when invoked from `venture-studio`, or the operator-supplied path otherwise). If prior designs exist, list them: "Prior designs for this project: [titles + dates]"
37
+ 1. Read any operator-supplied notes path the caller passed in (a brief, a market scan, a prior memo). If no path was passed, skip.
38
+ 2. **List any prior office-hours design docs on disk** under the operator's project: the data-room `01-narrative/` directory when invoked from `venture-studio`, or the operator-supplied project root otherwise. If prior designs exist, list them: "Prior designs for this project: [titles + dates]"
39
+ 3. For market, competitor, or prior-art recon, dispatch the `research-assistant` specialist with the `deep-research` skill rather than calling `WebSearch` directly. The specialist returns structured findings the design doc can cite.
41
40
 
42
- 5. **Ask: what's your goal with this?** This is a real question, not a formality. The answer determines everything about how the session runs.
41
+ 4. **Ask: what's your goal with this?** This is a real question, not a formality. The answer determines everything about how the session runs.
43
42
 
44
43
  Via AskUserQuestion, ask:
45
44
 
@@ -56,7 +55,7 @@ Understand the project and the area the user wants to change.
56
55
  - Startup, intrapreneurship → **Startup mode** (Phase 2A)
57
56
  - Hackathon, open source, research, learning, having fun → **Builder mode** (Phase 2B)
58
57
 
59
- 6. **Assess product stage** (only for startup/intrapreneurship modes):
58
+ 5. **Assess product stage** (only for startup/intrapreneurship modes):
60
59
  - Pre-product (idea stage, no users yet)
61
60
  - Has users (people using it, not yet paying)
62
61
  - Has paying customers
@@ -275,7 +274,7 @@ If no matches found, proceed silently.
275
274
 
276
275
  ## Phase 2.75: Landscape Awareness
277
276
 
278
- Read ETHOS.md for the full Search Before Building framework (three layers, eureka moments). The preamble's Search Before Building section has the ETHOS.md path.
277
+ **Search Before Building three layers, eureka moments.** Before proposing solutions, you check what the world already thinks about this space, so you can spot where conventional wisdom is wrong. The three layers are: (1) **existing solutions** — what people already use to solve this exact problem; (2) **adjacent solutions** — what they use to solve neighbouring problems that hint at the same job-to-be-done; (3) **eureka moments** — places where layers 1 and 2 reveal a shared assumption everyone is making that this session's evidence shows is wrong. A eureka moment is a single sentence: "Everyone does X because they assume Y, but the evidence we have suggests Y is wrong here." Layer 3 is the only layer that justifies building something different.
279
278
 
280
279
  After understanding the problem through questioning, search for what the world thinks. This is NOT competitive research (that's /design-consultation's job). This is understanding conventional wisdom so you can evaluate where it's wrong.
281
280
 
@@ -302,7 +301,7 @@ Read the top 2-3 results. Run the three-layer synthesis:
302
301
  - **[Layer 2]** What are the search results and current discourse saying?
303
302
  - **[Layer 3]** Given what WE learned in Phase 2A/2B — is there a reason the conventional approach is wrong?
304
303
 
305
- **Eureka check:** If Layer 3 reasoning reveals a genuine insight, name it: "EUREKA: Everyone does X because they assume [assumption]. But [evidence from our conversation] suggests that's wrong here. This means [implication]." Log the eureka moment (see preamble).
304
+ **Eureka check:** If Layer 3 reasoning reveals a genuine insight, name it: "EUREKA: Everyone does X because they assume [assumption]. But [evidence from our conversation] suggests that's wrong here. This means [implication]." Record the eureka moment in the design doc's Premises section so it travels with the artefact.
306
305
 
307
306
  If no eureka moment exists, say: "The conventional wisdom seems sound here. Let's build on it." Proceed to Phase 3.
308
307
 
@@ -284,6 +284,10 @@ For go-to-market planning:
284
284
  4. **Progress over perfection** — Ship, measure, iterate
285
285
  5. **Synthesis over summary** — Connect dots, don't just list facts
286
286
 
287
+ ## Research routing
288
+
289
+ Customer-discovery prior-art lookups, prospect-finding (`references/boolean-search.md` invocations, Earlyvangelist identification), citation-backed claims (PMF benchmarks, market signal precedents), and academic-grade evidence all route through the `research-assistant` specialist with the `deep-research`, `data-research`, and `academic-verify` skills. Dispatch the specialist; do not call `WebSearch` or `WebFetch` directly from this skill. The specialist returns structured findings with citations the PMF, Landing, and PRD artefacts can quote.
290
+
287
291
  ## Framework Reference Files
288
292
 
289
293
  All frameworks are in `references/` directory:
@@ -23,7 +23,7 @@ These three rules win when anything else in this prompt conflicts with them.
23
23
  Each domain has a small set of tools and, where it exists, a skill that drives the multi-step flow. Match the brief to the domain, load the skill if one is named, and run the tools the skill prescribes.
24
24
 
25
25
  - **WhatsApp setup or config:** load `skill-load skillName=connect-whatsapp` for QR pairing and admin-phone setup; load `skill-load skillName=manage-whatsapp-config` for DM/group policies and admin-phone management. The skills carry the per-phase flow.
26
- - **Cloudflare tunnel:** load `skill-load skillName=setup-tunnel`. The skill names the four sanctioned surfaces (`setup-tunnel.sh`, `reset-tunnel.sh`, `manual-setup.md`, `dashboard-guide.md`) and the inputs to collect.
26
+ - **Cloudflare tunnel:** load `skill-load skillName=setup-tunnel`. The skill drives `cloudflared` directly via Bash following `references/manual-setup.md`, `references/reset-guide.md`, and `references/dashboard-guide.md`. There is no shell-script wrapper; PTY stdout is the only surface.
27
27
  - **Every other domain** (scheduling, Telegram, email, Outlook, contacts, browser, platform admin) runs through the tool descriptions injected into your system prompt. The rules below apply across these domains regardless of which tool is invoked.
28
28
 
29
29
  ## Cross-domain rules