@rubytech/create-maxy-code 0.1.106 → 0.1.107
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +1 -1
- package/dist/uninstall.js +1 -1
- package/package.json +1 -1
- package/payload/platform/plugins/.claude-plugin/marketplace.json +0 -15
- package/payload/server/{chunk-BVDLDM6O.js → chunk-TZD23CX6.js} +71 -1
- package/payload/server/maxy-edge.js +1 -1
- package/payload/server/server.js +6 -1
- package/payload/platform/plugins/founder-pack/.claude-plugin/plugin.json +0 -8
- package/payload/platform/plugins/founder-pack/skills/investor-data-room/SKILL.md +0 -258
- package/payload/platform/plugins/founder-pack/skills/investor-data-room/references/business-plan-template.md +0 -61
- package/payload/platform/plugins/founder-pack/skills/investor-data-room/references/compliance-research-checklist.md +0 -53
- package/payload/platform/plugins/founder-pack/skills/investor-data-room/references/data-room-structure.md +0 -77
- package/payload/platform/plugins/founder-pack/skills/investor-data-room/references/deck-blueprint-template.md +0 -38
- package/payload/platform/plugins/founder-pack/skills/investor-data-room/references/design-tokens-application.md +0 -79
- package/payload/platform/plugins/founder-pack/skills/investor-data-room/references/html-pdf-pipeline.md +0 -236
- package/payload/platform/plugins/founder-pack/skills/investor-data-room/references/internal-workings-scrub.md +0 -33
- package/payload/platform/plugins/founder-pack/skills/investor-data-room/references/termsheet-template.md +0 -88
- package/payload/platform/plugins/teaching/.claude-plugin/plugin.json +0 -8
- package/payload/platform/plugins/teaching/PLUGIN.md +0 -58
- package/payload/platform/plugins/teaching/skills/interactive-tutor/SKILL.md +0 -59
- package/payload/platform/plugins/teaching/skills/interactive-tutor/references/assessment.md +0 -70
- package/payload/platform/plugins/teaching/skills/interactive-tutor/references/classroom-conduct.md +0 -43
- package/payload/platform/plugins/teaching/skills/interactive-tutor/references/teaching-modes.md +0 -83
- package/payload/platform/plugins/teaching/skills/lesson-planner/SKILL.md +0 -48
- package/payload/platform/plugins/teaching/skills/lesson-planner/references/context-gathering.md +0 -41
- package/payload/platform/plugins/teaching/skills/lesson-planner/references/plan-structure.md +0 -94
- package/payload/platform/plugins/teaching/skills/study-pack-builder/SKILL.md +0 -52
- package/payload/platform/plugins/teaching/skills/study-pack-builder/references/disaggregation.md +0 -49
- package/payload/platform/plugins/teaching/skills/study-pack-builder/references/materials.md +0 -116
- package/payload/platform/plugins/writer-craft/.claude-plugin/plugin.json +0 -8
- package/payload/platform/plugins/writer-craft/PLUGIN.md +0 -88
- package/payload/platform/plugins/writer-craft/agents/writer-craft--manuscript-reviewer.md +0 -92
- package/payload/platform/plugins/writer-craft/skills/citation-style/SKILL.md +0 -94
- package/payload/platform/plugins/writer-craft/skills/citation-style/references/book-and-chapter-models.md +0 -77
- package/payload/platform/plugins/writer-craft/skills/citation-style/references/citation-rules.md +0 -103
- package/payload/platform/plugins/writer-craft/skills/citation-style/references/journal-article-models.md +0 -74
- package/payload/platform/plugins/writer-craft/skills/citation-style/references/other-source-models.md +0 -146
- package/payload/platform/plugins/writer-craft/skills/citation-style/references/reference-list-rules.md +0 -70
- package/payload/platform/plugins/writer-craft/skills/editorial-practice/SKILL.md +0 -108
- package/payload/platform/plugins/writer-craft/skills/editorial-practice/references/copyediting.md +0 -73
- package/payload/platform/plugins/writer-craft/skills/editorial-practice/references/developmental-editing.md +0 -85
- package/payload/platform/plugins/writer-craft/skills/editorial-practice/references/genre-specific-editing.md +0 -78
- package/payload/platform/plugins/writer-craft/skills/editorial-practice/references/line-editing.md +0 -55
- package/payload/platform/plugins/writer-craft/skills/editorial-practice/references/self-editing.md +0 -89
- package/payload/platform/plugins/writer-craft/skills/persuasive-storytelling/SKILL.md +0 -114
- package/payload/platform/plugins/writer-craft/skills/persuasive-storytelling/references/audience-analysis.md +0 -73
- package/payload/platform/plugins/writer-craft/skills/persuasive-storytelling/references/crafting-persuasive-story.md +0 -76
- package/payload/platform/plugins/writer-craft/skills/persuasive-storytelling/references/persuasion-case-studies.md +0 -67
- package/payload/platform/plugins/writer-craft/skills/persuasive-storytelling/references/transformation-framework.md +0 -86
- package/payload/platform/plugins/writer-craft/skills/point-of-view/SKILL.md +0 -97
- package/payload/platform/plugins/writer-craft/skills/point-of-view/references/indirect-narration.md +0 -72
- package/payload/platform/plugins/writer-craft/skills/point-of-view/references/pov-types-and-voice.md +0 -91
- package/payload/platform/plugins/writer-craft/skills/point-of-view/references/protagonist-filter.md +0 -71
- package/payload/platform/plugins/writer-craft/skills/point-of-view/references/tense-and-person.md +0 -85
- package/payload/platform/plugins/writer-craft/skills/prose-craft/SKILL.md +0 -100
- package/payload/platform/plugins/writer-craft/skills/prose-craft/references/punctuation-and-grammar.md +0 -72
- package/payload/platform/plugins/writer-craft/skills/prose-craft/references/repetition.md +0 -71
- package/payload/platform/plugins/writer-craft/skills/prose-craft/references/sound-and-rhythm.md +0 -64
- package/payload/platform/plugins/writer-craft/skills/prose-craft/references/word-economy.md +0 -93
- package/payload/platform/plugins/writer-craft/skills/reader-engagement/SKILL.md +0 -100
- package/payload/platform/plugins/writer-craft/skills/reader-engagement/references/cause-effect-setup-payoff.md +0 -79
- package/payload/platform/plugins/writer-craft/skills/reader-engagement/references/conflict-escalation.md +0 -81
- package/payload/platform/plugins/writer-craft/skills/reader-engagement/references/hooking-readers.md +0 -67
- package/payload/platform/plugins/writer-craft/skills/reader-engagement/references/neurochemistry-of-engagement.md +0 -94
- package/payload/platform/plugins/writer-craft/skills/review-manuscript/SKILL.md +0 -111
- package/payload/platform/plugins/writer-craft/skills/review-manuscript/references/review-manuscript-checklist.md +0 -119
- package/payload/platform/plugins/writer-craft/skills/review-prose/SKILL.md +0 -99
- package/payload/platform/plugins/writer-craft/skills/review-prose/references/prose-review-checklist.md +0 -112
- package/payload/platform/plugins/writer-craft/skills/review-scene/SKILL.md +0 -99
- package/payload/platform/plugins/writer-craft/skills/review-scene/references/scene-analysis-framework.md +0 -95
- package/payload/platform/plugins/writer-craft/skills/story-architecture/SKILL.md +0 -106
- package/payload/platform/plugins/writer-craft/skills/story-architecture/references/blueprinting-and-scene-cards.md +0 -118
- package/payload/platform/plugins/writer-craft/skills/story-architecture/references/inner-issue-and-protagonist-goal.md +0 -66
- package/payload/platform/plugins/writer-craft/skills/story-architecture/references/misbelief-desire-worldview.md +0 -87
- package/payload/platform/plugins/writer-craft/skills/story-architecture/references/origin-scenes-and-escalation.md +0 -82
- package/payload/platform/plugins/writer-craft/skills/story-blueprint/SKILL.md +0 -133
- package/payload/platform/plugins/writer-craft/skills/story-blueprint/references/blueprinting-exercises.md +0 -118
- package/payload/platform/plugins/writer-craft/skills/story-blueprint/references/blueprinting-process.md +0 -128
package/dist/index.js
CHANGED
|
@@ -59,7 +59,7 @@ function claudePluginEnv() {
|
|
|
59
59
|
* evidence. When a third brand is added under `brands/`, append its hostname
|
|
60
60
|
* here AND in the matching constant in `uninstall.ts` (intentional duplication
|
|
61
61
|
* per `uninstall.ts:` "Shell helpers (duplicated from index.ts ...)" policy). */
|
|
62
|
-
const KNOWN_BRAND_HOSTNAMES = ["maxy", "realagent", "maxy-2", "maxy-3", "maxy-4"];
|
|
62
|
+
const KNOWN_BRAND_HOSTNAMES = ["maxy", "maxy-code", "realagent", "realagent-code", "maxy-2", "maxy-3", "maxy-4"];
|
|
63
63
|
// The device's actual hostname — may differ from BRAND.hostname if the user customized it.
|
|
64
64
|
// Updated by installSystemDeps() after hostname setup; used for user-facing URLs.
|
|
65
65
|
let DEVICE_HOSTNAME = BRAND.hostname;
|
package/dist/uninstall.js
CHANGED
|
@@ -103,7 +103,7 @@ export function isMaxyInstalled() {
|
|
|
103
103
|
* `.service` file — stale units, gnome-keyring disable markers, and unrelated
|
|
104
104
|
* user services are not peer evidence. When a third brand is
|
|
105
105
|
* added under `brands/`, append its hostname here. */
|
|
106
|
-
const KNOWN_BRAND_HOSTNAMES = ["maxy", "realagent", "maxy-2", "maxy-3", "maxy-4"];
|
|
106
|
+
const KNOWN_BRAND_HOSTNAMES = ["maxy", "maxy-code", "realagent", "realagent-code", "maxy-2", "maxy-3", "maxy-4"];
|
|
107
107
|
/** Detect whether another brand is installed on this device.
|
|
108
108
|
* device-wide steps (apt package purge, Ollama binary removal, apt
|
|
109
109
|
* repo cleanup, ~/.claude / ~/.ollama wipes) must skip when a peer brand is
|
package/package.json
CHANGED
|
@@ -39,11 +39,6 @@
|
|
|
39
39
|
"source": "./email",
|
|
40
40
|
"version": "0.1.0"
|
|
41
41
|
},
|
|
42
|
-
{
|
|
43
|
-
"name": "founder-pack",
|
|
44
|
-
"source": "./founder-pack",
|
|
45
|
-
"version": "0.1.0"
|
|
46
|
-
},
|
|
47
42
|
{
|
|
48
43
|
"name": "linkedin-extension",
|
|
49
44
|
"source": "./linkedin-extension",
|
|
@@ -84,11 +79,6 @@
|
|
|
84
79
|
"source": "./scheduling",
|
|
85
80
|
"version": "0.1.0"
|
|
86
81
|
},
|
|
87
|
-
{
|
|
88
|
-
"name": "teaching",
|
|
89
|
-
"source": "./teaching",
|
|
90
|
-
"version": "0.1.0"
|
|
91
|
-
},
|
|
92
82
|
{
|
|
93
83
|
"name": "telegram",
|
|
94
84
|
"source": "./telegram",
|
|
@@ -113,11 +103,6 @@
|
|
|
113
103
|
"name": "workflows",
|
|
114
104
|
"source": "./workflows",
|
|
115
105
|
"version": "0.1.0"
|
|
116
|
-
},
|
|
117
|
-
{
|
|
118
|
-
"name": "writer-craft",
|
|
119
|
-
"source": "./writer-craft",
|
|
120
|
-
"version": "0.1.0"
|
|
121
106
|
}
|
|
122
107
|
]
|
|
123
108
|
}
|
|
@@ -2632,6 +2632,7 @@ import { resolve, join } from "path";
|
|
|
2632
2632
|
import { existsSync, readFileSync } from "fs";
|
|
2633
2633
|
var configDirName = ".maxy";
|
|
2634
2634
|
var commercialMode = false;
|
|
2635
|
+
var shipsPremiumBundlesFlag = false;
|
|
2635
2636
|
var vncDisplayNum = 99;
|
|
2636
2637
|
var rfbPortNum = 5900;
|
|
2637
2638
|
var websockifyPortNum = 6080;
|
|
@@ -2651,6 +2652,7 @@ if (platformRoot) {
|
|
|
2651
2652
|
}
|
|
2652
2653
|
if (typeof brand.configDir === "string") configDirName = brand.configDir;
|
|
2653
2654
|
if (brand.commercialMode === true) commercialMode = true;
|
|
2655
|
+
if (brand.shipsPremiumBundles === true) shipsPremiumBundlesFlag = true;
|
|
2654
2656
|
if (typeof brand.vncDisplay === "number") vncDisplayNum = brand.vncDisplay;
|
|
2655
2657
|
const brandLabel = configDirName.replace(/^\./, "");
|
|
2656
2658
|
const required = [
|
|
@@ -2674,6 +2676,7 @@ if (platformRoot) {
|
|
|
2674
2676
|
var MAXY_DIR = resolve(homedir(), configDirName);
|
|
2675
2677
|
var BRAND_NAME = configDirName.replace(/^\./, "");
|
|
2676
2678
|
var COMMERCIAL_MODE = commercialMode;
|
|
2679
|
+
var SHIPS_PREMIUM_BUNDLES = shipsPremiumBundlesFlag;
|
|
2677
2680
|
var VNC_DISPLAY = `:${vncDisplayNum}`;
|
|
2678
2681
|
var RFB_PORT = rfbPortNum;
|
|
2679
2682
|
var WEBSOCKIFY_PORT = websockifyPortNum;
|
|
@@ -3429,6 +3432,38 @@ if (!existsSync4(PLATFORM_ROOT2)) {
|
|
|
3429
3432
|
Set the MAXY_PLATFORM_ROOT environment variable to the absolute path of the platform directory.`
|
|
3430
3433
|
);
|
|
3431
3434
|
}
|
|
3435
|
+
var _stubDirsLoggedThisBoot = /* @__PURE__ */ new Set();
|
|
3436
|
+
function listValidAccounts() {
|
|
3437
|
+
if (!existsSync4(ACCOUNTS_DIR)) return [];
|
|
3438
|
+
const out = [];
|
|
3439
|
+
const entries = readdirSync(ACCOUNTS_DIR, { withFileTypes: true });
|
|
3440
|
+
for (const entry of entries) {
|
|
3441
|
+
if (!entry.isDirectory()) continue;
|
|
3442
|
+
if (entry.name.startsWith(".")) continue;
|
|
3443
|
+
const accountDir = resolve3(ACCOUNTS_DIR, entry.name);
|
|
3444
|
+
const configPath = resolve3(accountDir, "account.json");
|
|
3445
|
+
if (!existsSync4(configPath)) {
|
|
3446
|
+
if (!_stubDirsLoggedThisBoot.has(entry.name)) {
|
|
3447
|
+
console.error(
|
|
3448
|
+
`[platform] accounts-state STUB-DIR id=${entry.name} \u2014 onboarding leak; remove or repair`
|
|
3449
|
+
);
|
|
3450
|
+
_stubDirsLoggedThisBoot.add(entry.name);
|
|
3451
|
+
}
|
|
3452
|
+
continue;
|
|
3453
|
+
}
|
|
3454
|
+
let config;
|
|
3455
|
+
try {
|
|
3456
|
+
config = JSON.parse(readFileSync4(configPath, "utf-8"));
|
|
3457
|
+
} catch {
|
|
3458
|
+
console.error(
|
|
3459
|
+
`[platform] accounts-state CORRUPT-JSON id=${entry.name} \u2014 account.json failed to parse; treating as stub`
|
|
3460
|
+
);
|
|
3461
|
+
continue;
|
|
3462
|
+
}
|
|
3463
|
+
out.push({ accountId: config.accountId, accountDir, config });
|
|
3464
|
+
}
|
|
3465
|
+
return out;
|
|
3466
|
+
}
|
|
3432
3467
|
function resolveAccount() {
|
|
3433
3468
|
if (!existsSync4(ACCOUNTS_DIR)) return null;
|
|
3434
3469
|
let usersJsonUserId = null;
|
|
@@ -3622,7 +3657,10 @@ function readBundleSubPlugins(bundlePath) {
|
|
|
3622
3657
|
return subs;
|
|
3623
3658
|
}
|
|
3624
3659
|
function walkPremiumBundles() {
|
|
3625
|
-
if (
|
|
3660
|
+
if (!SHIPS_PREMIUM_BUNDLES) return [];
|
|
3661
|
+
return walkPremiumBundlesOnDisk();
|
|
3662
|
+
}
|
|
3663
|
+
function walkPremiumBundlesOnDisk() {
|
|
3626
3664
|
const stagingRoot = resolve4(PLATFORM_ROOT2, "../premium-plugins");
|
|
3627
3665
|
if (!existsSync5(stagingRoot)) return [];
|
|
3628
3666
|
let entries;
|
|
@@ -3735,6 +3773,36 @@ function reconcileEnabledPlugins(accountDir, config) {
|
|
|
3735
3773
|
console.error(`${TAG} enabled-stamp write failed: ${err instanceof Error ? err.message : String(err)}`);
|
|
3736
3774
|
}
|
|
3737
3775
|
}
|
|
3776
|
+
function cleanupLeakedPremiumSubs(accountDir, config, accountId) {
|
|
3777
|
+
const TAG = "[premium-auto-deliver]";
|
|
3778
|
+
if (!accountDir || !config) return;
|
|
3779
|
+
if (SHIPS_PREMIUM_BUNDLES) return;
|
|
3780
|
+
const current = Array.isArray(config.enabledPlugins) ? config.enabledPlugins : [];
|
|
3781
|
+
if (current.length === 0) return;
|
|
3782
|
+
const leakedNames = /* @__PURE__ */ new Set();
|
|
3783
|
+
for (const { subs } of walkPremiumBundlesOnDisk()) {
|
|
3784
|
+
for (const sub of subs) leakedNames.add(sub);
|
|
3785
|
+
}
|
|
3786
|
+
if (leakedNames.size === 0) return;
|
|
3787
|
+
const removed = [];
|
|
3788
|
+
const kept = [];
|
|
3789
|
+
for (const name of current) {
|
|
3790
|
+
if (leakedNames.has(name)) removed.push(name);
|
|
3791
|
+
else kept.push(name);
|
|
3792
|
+
}
|
|
3793
|
+
if (removed.length === 0) return;
|
|
3794
|
+
const configPath = resolve4(accountDir, "account.json");
|
|
3795
|
+
try {
|
|
3796
|
+
const raw2 = readFileSync5(configPath, "utf-8");
|
|
3797
|
+
const parsed = JSON.parse(raw2);
|
|
3798
|
+
parsed.enabledPlugins = kept;
|
|
3799
|
+
writeFileSync2(configPath, JSON.stringify(parsed, null, 2) + "\n");
|
|
3800
|
+
config.enabledPlugins = kept;
|
|
3801
|
+
console.log(`${TAG} cleanup accountId=${accountId ?? "unknown"} removed=[${removed.join(",")}]`);
|
|
3802
|
+
} catch (err) {
|
|
3803
|
+
console.error(`${TAG} cleanup write failed accountId=${accountId ?? "unknown"}: ${err instanceof Error ? err.message : String(err)}`);
|
|
3804
|
+
}
|
|
3805
|
+
}
|
|
3738
3806
|
|
|
3739
3807
|
// app/lib/claude-agent/logging.ts
|
|
3740
3808
|
var emitMissingOnResolve = (..._args) => null;
|
|
@@ -4414,6 +4482,7 @@ export {
|
|
|
4414
4482
|
parseCookieValue,
|
|
4415
4483
|
PLATFORM_ROOT2 as PLATFORM_ROOT,
|
|
4416
4484
|
ACCOUNTS_DIR,
|
|
4485
|
+
listValidAccounts,
|
|
4417
4486
|
resolveAccount,
|
|
4418
4487
|
resolveUserAccounts,
|
|
4419
4488
|
fingerprintSessionKey,
|
|
@@ -4432,6 +4501,7 @@ export {
|
|
|
4432
4501
|
walkPremiumBundles,
|
|
4433
4502
|
autoDeliverPremiumPlugins,
|
|
4434
4503
|
reconcileEnabledPlugins,
|
|
4504
|
+
cleanupLeakedPremiumSubs,
|
|
4435
4505
|
emitMissingOnResolve,
|
|
4436
4506
|
stripAttachmentMetaSuffix,
|
|
4437
4507
|
requirePortEnv,
|
package/payload/server/server.js
CHANGED
|
@@ -18,6 +18,7 @@ import {
|
|
|
18
18
|
browserViewerLog,
|
|
19
19
|
canAccessAdmin,
|
|
20
20
|
checkRateLimit,
|
|
21
|
+
cleanupLeakedPremiumSubs,
|
|
21
22
|
clearRateLimit,
|
|
22
23
|
clientIpMiddleware,
|
|
23
24
|
createRemoteSession,
|
|
@@ -35,6 +36,7 @@ import {
|
|
|
35
36
|
isPasswordValid,
|
|
36
37
|
isRemoteAuthConfigured,
|
|
37
38
|
launchAction,
|
|
39
|
+
listValidAccounts,
|
|
38
40
|
reconcileEnabledPlugins,
|
|
39
41
|
recordFailedAttempt,
|
|
40
42
|
registerSession,
|
|
@@ -59,7 +61,7 @@ import {
|
|
|
59
61
|
vncLog,
|
|
60
62
|
waitForExit,
|
|
61
63
|
walkPremiumBundles
|
|
62
|
-
} from "./chunk-
|
|
64
|
+
} from "./chunk-TZD23CX6.js";
|
|
63
65
|
import {
|
|
64
66
|
CLOUDFLARE_TASK_DIAGNOSTICS,
|
|
65
67
|
appendCloudflareSteps,
|
|
@@ -14368,6 +14370,9 @@ var bootEntitlement = bootAccountConfig ? resolveEntitlement(
|
|
|
14368
14370
|
) : null;
|
|
14369
14371
|
autoDeliverPremiumPlugins();
|
|
14370
14372
|
reconcileEnabledPlugins(bootAccount?.accountDir, bootAccount?.config);
|
|
14373
|
+
for (const acct of listValidAccounts()) {
|
|
14374
|
+
cleanupLeakedPremiumSubs(acct.accountDir, acct.config, acct.accountId);
|
|
14375
|
+
}
|
|
14371
14376
|
(async () => {
|
|
14372
14377
|
if (!bootAccount) return;
|
|
14373
14378
|
try {
|
|
@@ -1,258 +0,0 @@
|
|
|
1
|
-
---
|
|
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, 12-slide deck blueprint, print-ready HTML+PDF for both. Trigger phrases include "build me a data room", "draft a business plan", "deck from the business plan", "print-ready PDF for the prospectus", "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, deck, and prospectus per `realagent-site/.docs/design-tokens.md`.
|
|
4
|
-
allowed-tools:
|
|
5
|
-
- Bash
|
|
6
|
-
- Read
|
|
7
|
-
- Write
|
|
8
|
-
- Edit
|
|
9
|
-
- Glob
|
|
10
|
-
- Grep
|
|
11
|
-
- WebSearch
|
|
12
|
-
- WebFetch
|
|
13
|
-
---
|
|
14
|
-
|
|
15
|
-
# investor-data-room
|
|
16
|
-
|
|
17
|
-
Build a UK seed-raise pack in five stages. Each stage has an outcome contract; do not advance until the contract is met.
|
|
18
|
-
|
|
19
|
-
## Outcome contract (whole skill)
|
|
20
|
-
|
|
21
|
-
Complete when the data room contains:
|
|
22
|
-
|
|
23
|
-
```
|
|
24
|
-
<project-site>/.docs/data-room/
|
|
25
|
-
README.md # data-room index, status snapshot, doctrine
|
|
26
|
-
01-narrative/
|
|
27
|
-
office-hours-design.md # ideation working scratchpad
|
|
28
|
-
business-plan.md # 15-section business plan
|
|
29
|
-
deck-blueprint.md # 12-slide blueprint
|
|
30
|
-
02-corporate-legal/
|
|
31
|
-
README.md # incorporation filings, articles, board minutes
|
|
32
|
-
incorporation-<co-house-no>-<date>.pdf # IN01 + statement of capital + cap table
|
|
33
|
-
03-cap-table/
|
|
34
|
-
README.md # pre/post-investment cap table with PSC notes
|
|
35
|
-
04-financials/
|
|
36
|
-
README.md
|
|
37
|
-
model_worksheet.md # opening cash, capex, burn, MRR ramp, two-round
|
|
38
|
-
05-commercial/
|
|
39
|
-
README.md
|
|
40
|
-
<gtm-partner-1>.md # one file per named partner
|
|
41
|
-
<gtm-partner-1>-proposal.pdf
|
|
42
|
-
06-product-ip/
|
|
43
|
-
README.md
|
|
44
|
-
encrypted-document-sharing.md # if applicable
|
|
45
|
-
07-team/
|
|
46
|
-
README.md
|
|
47
|
-
<founder-1>.pdf # CV per foregrounded founder
|
|
48
|
-
08-market/
|
|
49
|
-
README.md
|
|
50
|
-
sources.md # every market figure with citation
|
|
51
|
-
competitor-value-claims-rebuttal.md
|
|
52
|
-
09-operations/
|
|
53
|
-
README.md
|
|
54
|
-
10-supporting/
|
|
55
|
-
README.md
|
|
56
|
-
html/
|
|
57
|
-
business-plan/
|
|
58
|
-
index.html # A4 portrait, design tokens, premium register
|
|
59
|
-
render-pdf.mjs # Playwright + img2pdf + qpdf pipeline
|
|
60
|
-
business-plan.pdf # rendered output
|
|
61
|
-
logo-light.png logo-dark.png
|
|
62
|
-
prospectus/
|
|
63
|
-
index.html # A4 portrait, 10-15 page persuasive cut
|
|
64
|
-
term_sheet.html # A4 portrait, 6-8 page formal term sheet
|
|
65
|
-
render-pdf.mjs
|
|
66
|
-
prospectus.pdf term_sheet.pdf
|
|
67
|
-
logo-light.png logo-dark.png
|
|
68
|
-
deck/
|
|
69
|
-
index.html # 16:9 landscape (297mm x 167mm), 12+1 slides
|
|
70
|
-
render-pdf.mjs
|
|
71
|
-
deck.pdf
|
|
72
|
-
logo-light.png logo-dark.png
|
|
73
|
-
team/ # cropped headshot WebPs for slide 8 founder grid
|
|
74
|
-
<founder-firstname>-<lastname>.webp
|
|
75
|
-
```
|
|
76
|
-
|
|
77
|
-
Skip stages that are already complete; do not regenerate stale artefacts blindly.
|
|
78
|
-
|
|
79
|
-
## Stage 1 — Office-hours ideation
|
|
80
|
-
|
|
81
|
-
Drive a conversational discovery session using the `/office-hours` skill (or equivalent YC-style forcing questions: demand reality, status quo, desperate specificity, narrowest wedge, observation, future-fit). Output a single `office-hours-design.md` capturing:
|
|
82
|
-
|
|
83
|
-
- Problem statement
|
|
84
|
-
- Demand evidence (with numbers and dates)
|
|
85
|
-
- Status quo
|
|
86
|
-
- Target user and narrowest wedge
|
|
87
|
-
- Constraints
|
|
88
|
-
- Six to eight numbered premises (founder-confirmed)
|
|
89
|
-
- Two to four narrative-shape alternatives with a recommendation
|
|
90
|
-
- Financials / use-of-funds placeholders flagged as open questions
|
|
91
|
-
- Founder Signal Reflection
|
|
92
|
-
|
|
93
|
-
This file is the working substrate. It stays internal-only. Every later artefact derives from it.
|
|
94
|
-
|
|
95
|
-
**Doctrine.** Never speculate on numbers; flag them as open questions until the founder confirms.
|
|
96
|
-
|
|
97
|
-
## Stage 2 — Data room scaffold
|
|
98
|
-
|
|
99
|
-
Build the directory tree above. Each section gets a `README.md` that doubles as a content checklist (purpose, expected contents, current state, gaps). The graph structure is fixed: ten numbered sections (`01-narrative` through `10-supporting`) plus a top-level README and an `html/` subdirectory for rendered deliverables.
|
|
100
|
-
|
|
101
|
-
**File-naming conventions:**
|
|
102
|
-
|
|
103
|
-
- `<co-house-no>` for Companies House filings (e.g. `incorporation-17237239-2026-05-22.pdf`).
|
|
104
|
-
- `<founder-firstname>-<lastname>.pdf` for CVs.
|
|
105
|
-
- `<gtm-partner>.md` + `<gtm-partner>-proposal.pdf` for each commercial partner.
|
|
106
|
-
- All `README.md` files are markdown only.
|
|
107
|
-
|
|
108
|
-
**Where the published URL lives.** If the project hosts a public prospectus or marketing microsite, keep the published artefacts at a stable path (e.g. `realagent.chat/sites/<slug>/`); the rendered HTML inside `html/<artefact>/index.html` is the source of truth and republishes from there.
|
|
109
|
-
|
|
110
|
-
References: `references/data-room-structure.md` for the section-by-section purpose statements.
|
|
111
|
-
|
|
112
|
-
## Stage 3 — Business plan synthesis
|
|
113
|
-
|
|
114
|
-
Generate `01-narrative/business-plan.md` with **15 sections** following the canonical structure:
|
|
115
|
-
|
|
116
|
-
1. Executive Summary
|
|
117
|
-
2. Vision and Mission (Vision / Mission / Doctrine triad)
|
|
118
|
-
3. The Company (legal entity table + pre-investment cap table)
|
|
119
|
-
4. The Market (TAM/SAM/SOM + structural tailwind + self-employed wedge + domestic adjacency + international upside + pricing)
|
|
120
|
-
5. The Product (what it is + wedge product + upsell path + substrate moat + conversation ingestion + network + Anthropic asymmetric capture + human-services layer)
|
|
121
|
-
6. The Business Model (revenue streams + unit economics)
|
|
122
|
-
7. Go-to-Market (Wedge → Beachhead → Blitzscale framework + demand evidence + GTM partners + horse-before-cart logic + geography)
|
|
123
|
-
8. Competition (three failing categories + RANL differentiation + most-direct-competitor counter)
|
|
124
|
-
9. Operations (technology stack + data sovereignty + IP ownership chain + compliance posture summary)
|
|
125
|
-
10. Compliance and regulatory positioning (UK consumer protection + UK data/AI regime + EU AI Act + adjacent UK obligations + moat-not-tax close)
|
|
126
|
-
11. Team (founders + strategic shareholders + hiring plan)
|
|
127
|
-
12. Financial Plan (12.1 opening balance sheet through 12.7 use of funds)
|
|
128
|
-
13. Risks and Mitigations
|
|
129
|
-
14. Milestones (the N-month thesis)
|
|
130
|
-
15. The bottom line (summary table + close)
|
|
131
|
-
+ Appendices (titled documents only; no internal-only file pointers)
|
|
132
|
-
|
|
133
|
-
**Critical rules** (all enforced; recurrence is a P0 violation):
|
|
134
|
-
|
|
135
|
-
- **No internal workings** in body text. No "reconciliation pending", no "open Q", no comparison-to-baseline ("loss has grown from X to Y because…"), no cross-references to `office-hours-design.md` or any working file.
|
|
136
|
-
- **Cap table is authoritative from the IN01.** Reconcile the share-capital line (`500,000 ordinary @ £0.001 nominal` vs `@ £0.01`) before writing the opening balance sheet. Inception premium (e.g. one founder paying £4,500 above nominal) reconciles £5k inception cash against £500 nominal.
|
|
137
|
-
- **Every market figure cites a source.** Maintain `08-market/sources.md` with every figure used in the business plan; the body references "Appendix B" by title, never an internal file path.
|
|
138
|
-
- **Financial figures derive from the model worksheet.** Cite "Appendix A" by title.
|
|
139
|
-
- **No em-dashes between alphabetic words** in user-facing prose (recurring style violation in this project's history; see `references/internal-workings-scrub.md`).
|
|
140
|
-
|
|
141
|
-
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.
|
|
142
|
-
|
|
143
|
-
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.
|
|
144
|
-
|
|
145
|
-
## Stage 3b — Term sheet synthesis
|
|
146
|
-
|
|
147
|
-
Generate `html/prospectus/term_sheet.html` as an **A4 portrait, 10-page formal term sheet** sectioned as:
|
|
148
|
-
|
|
149
|
-
1. Cover + preamble + parties (Issuer / Founders / Investors / round size / minimum cheque / target close)
|
|
150
|
-
2. Share economics & use of proceeds (instrument, valuation, dilution, issue price, share count, use of funds)
|
|
151
|
-
3. Cap table on closing (post-money, fully diluted, total = 100%)
|
|
152
|
-
4. Governance & shareholder protections (board, info rights, pre-emption, drag/tag, SEIS/EIS posture)
|
|
153
|
-
5. Closing terms (governing law, IP assignment, conditions to closing, long-form docs timeline)
|
|
154
|
-
6. Signatures (Company + Investor blocks)
|
|
155
|
-
7. **Appendix A — High Net Worth Individual Investor Statement** (FSMA 2000 / FCA COBS 4 Annex 2 verbatim)
|
|
156
|
-
8. **Appendix B — Self-Certified Sophisticated Investor Statement** (FSMA 2000 / FCA COBS 4 Annex 4 verbatim)
|
|
157
|
-
9. Backpage (contact)
|
|
158
|
-
|
|
159
|
-
**Doctrine for the term sheet:**
|
|
160
|
-
|
|
161
|
-
- **Entity name is the IN01-filed name**, not a marketing entity. Issuer must read as the actual filed company (e.g. "Real Agent Network Limited" not "Real Agent Systems Ltd").
|
|
162
|
-
- **Cap table matches the IN01 + Round 1 dilution model exactly.** Pre-investment shares + new investor Round Shares = post-investment total. No fractional shares; no rounding to the % column that breaks share totals.
|
|
163
|
-
- **Founder list reads exactly as the cap table.** No phantom founders. Strategic shareholders (e.g. an investing LLP) ride in the cap table by entity name, not via their individuals.
|
|
164
|
-
- **Sole director on IN01 is the director-designate.** A term sheet that names two directors when IN01 names one is a defect.
|
|
165
|
-
- **SEIS/EIS posture is post-funding obligation, not closing contingency.** Never assured prior to distribution; no representation as to qualifying status. Forms no part of consideration.
|
|
166
|
-
- **Confidentiality and exclusivity provisions are the only binding clauses.** Everything else non-binding until long-form docs.
|
|
167
|
-
- **FCA self-certification statements are appendices to the term sheet, not separate documents.** The High Net Worth Individual Investor Statement (FSMA 2000 (Financial Promotion) Order 2005 / FCA COBS 4 Annex 2) and the Self-Certified Sophisticated Investor Statement (COBS 4 Annex 4) ship as Appendix A and Appendix B. **Use verbatim wording**; never paraphrase regulatory text. Current source: UKBAA's templated PDFs (Feb 2024 versions reflect the post-31 Jan 2024 reverted thresholds: HNW £170k income or £430k net assets; sophisticated director threshold £1.6m turnover). When the regulatory wording changes, the templates change first at UKBAA / FCA COBS Annexes; re-fetch before issue.
|
|
168
|
-
|
|
169
|
-
References: `references/termsheet-template.md`.
|
|
170
|
-
|
|
171
|
-
## Stage 4 — Deck blueprint synthesis
|
|
172
|
-
|
|
173
|
-
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:
|
|
174
|
-
|
|
175
|
-
1. Cover (raise headline + founders)
|
|
176
|
-
2. Vision (Vision / Mission / Doctrine)
|
|
177
|
-
3. The Market (TAM + tailwind + wedge)
|
|
178
|
-
4. Business Model (subscription + service layer + unit economics)
|
|
179
|
-
5. Go-to-Market (Wedge → Beachhead → Blitzscale + named partners)
|
|
180
|
-
6. The Product (substrate + wedge + network + asymmetric capture + services layer)
|
|
181
|
-
7. Competition (three failing categories + most-direct counter)
|
|
182
|
-
8. The Team (founders + strategic shareholders)
|
|
183
|
-
9. Economics (P&L summary + cash flow + break-even)
|
|
184
|
-
10. The Raise (size, valuation, dilution, instrument, use of funds, IP transfer, follow-on round)
|
|
185
|
-
11. Milestones (M0 to M-final timeline)
|
|
186
|
-
12. Other Information (compliance + platform dependency + contact)
|
|
187
|
-
|
|
188
|
-
Production notes attached: format (16:9 landscape, PDF + source deck), design tokens reference (`realagent-site/.docs/design-tokens.md` or project equivalent), chart-source consistency with the financial model, speaker-note attribution.
|
|
189
|
-
|
|
190
|
-
References: `references/deck-blueprint-template.md`.
|
|
191
|
-
|
|
192
|
-
## Stage 5 — HTML + PDF render pipeline
|
|
193
|
-
|
|
194
|
-
For each artefact that ships as a print-ready PDF (business plan, prospectus, deck), produce three files under `html/<artefact>/`:
|
|
195
|
-
|
|
196
|
-
```
|
|
197
|
-
index.html # A4 portrait single HTML file, premium design tokens, sectioned by <section class="page">
|
|
198
|
-
render-pdf.mjs # Playwright + img2pdf + qpdf pipeline (image-only PDF, linearized)
|
|
199
|
-
<artefact>.pdf # rendered output (regenerate after every HTML edit)
|
|
200
|
-
```
|
|
201
|
-
|
|
202
|
-
**Hard constraints** (from the `property-brochure:a4-print-documents` skill):
|
|
203
|
-
|
|
204
|
-
- A4 portrait: `@page { size: A4 portrait; margin: 18mm 16mm 20mm; }`
|
|
205
|
-
- One `<section class="page">` per A4 page; renderer aborts if `scrollHeight` exceeds 1123px + 2px slack.
|
|
206
|
-
- Page numbers via CSS counter in `.page::after { content: counter(pagenum); }`. The renderer screenshots each section, so `@page @bottom-center` rules do NOT propagate.
|
|
207
|
-
- Image-only PDF: Playwright captures one PNG per section at deviceScaleFactor 3.125 (300 dpi); `img2pdf --pagesize 210mmx297mm` binds them; `qpdf --linearize --object-streams=disable` linearises.
|
|
208
|
-
- Even page count for booklet binding (multiple of 4 ideal). Add or remove a supporting page if parity breaks.
|
|
209
|
-
- Cover and backpage are full-bleed `--surface-deep` with `@page :first { margin: 0 }` and named `@page backpage-full`.
|
|
210
|
-
- Screen-only chrome (e.g. a Download PDF pill button) uses `@media print { display: none !important; }` per the skill.
|
|
211
|
-
- `execFileSync` for img2pdf and qpdf (never `execSync` with template strings: shell-injection class).
|
|
212
|
-
- Verify: `qpdf --check`, `pdfinfo | grep -E "Pages|Optimized"`, **and read every page visually**. `pdfinfo` reporting "25 pages, A4" is not verification.
|
|
213
|
-
|
|
214
|
-
**Design tokens.** Reference the project's `design-tokens.md` Tier 1 (raw) + Tier 2 (semantic aliases) + Tier 3 (component) layers. Premium register defaults: `--paper-25` near-white page surface, `--teal-900` ink, `--gold-500` accent, `--paper-100` cool mist (`#ECF1F2`) tinted-band surface. Update token values in one place; CSS `:root` mirrors the spec.
|
|
215
|
-
|
|
216
|
-
**Logo placement.** Copy the light and dark icon variants from the project's public assets (`logo-light.png` for dark cover/backpage, `logo-dark.png` reserved for light content pages if needed) into the artefact directory. Cover top-left pairs the icon with the wordmark; backpage top-left does the same.
|
|
217
|
-
|
|
218
|
-
References: `references/html-pdf-pipeline.md` for the canonical `render-pdf.mjs` source and CSS scaffold.
|
|
219
|
-
|
|
220
|
-
## Doctrine (enforced across all stages)
|
|
221
|
-
|
|
222
|
-
- **No internal workings in public artefacts.** Comparison-to-baseline, reconciliation-pending, open-Q markers, internal cross-references all stay in working files (`01-narrative/office-hours-design.md`, section READMEs). Public artefacts (business plan, deck, prospectus, PDFs) state the current position as a fact.
|
|
223
|
-
- **Every claim cites a source.** Companies House for the cap table. The model worksheet for every financial figure. A named publication for every market figure. A specific vendor page for every competitor claim.
|
|
224
|
-
- **Design tokens are the visual contract.** Update once in the tokens spec; the business plan CSS, the prospectus CSS, and the deck CSS all consume the same tokens. Never hardcode hex values inside component CSS.
|
|
225
|
-
- **Even page count for booklet binding.** Multiple of 4 ideally; minimum even. Add or remove a supporting page to maintain parity if a section change breaks it.
|
|
226
|
-
- **Verify by reading every rendered page.** `pdfinfo` page count is not verification. The bottom 30% of every page must reach the content margin without significant whitespace.
|
|
227
|
-
|
|
228
|
-
## Slide-design patterns (collected from the deck build)
|
|
229
|
-
|
|
230
|
-
- **Cap-table over labelled pie chart.** A labelled donut with seven slices puts the percentages on the chart but adds visual clutter at small slice counts. A clean post-investment cap table (Shareholder / Shares / % with a gold-rule Total row) reads faster on the slide and matches the term-sheet treatment. Default to the table; reserve the pie for slides with three to four large slices.
|
|
231
|
-
- **Circular founder avatars on the team slide.** Square photos at full card width over-allocate vertical real-estate and crowd the bio + advisor band. Fixed-diameter circular avatars (e.g. 42mm × 42mm, `border-radius: 50%`, centred `margin: 0 auto`) leave room for the eyebrow + name + 3-line bio + advisor band on a 16:9 slide.
|
|
232
|
-
- **Headshot crops are face-centred, not full-environment.** Crop each source PNG/JPG to a tight head + shoulders square at 1200×1200 (`magick <src> -crop WxH+X+Y +repage -resize 1200x1200 -strip <crop>.png`), then encode with `cwebp -q 88 -m 6 -mt`. Resize-then-encode never loses face fidelity at the 42mm display size. Track per-founder face position from the source dimensions and centre the crop window on it.
|
|
233
|
-
- **Bio line budget on slide 8 is ~3 lines at 8.5pt.** A 4th line crashes into the advisor band's `border-top`. Trim aggressively: lead with the headline number ("33 years residential estate agency"), then 2-3 firms and 1-2 awards.
|
|
234
|
-
- **Linter strips trailing text in long edits.** When editing a multi-line founder bio (or any cell where you append clauses past a verbatim sentence), the auto-formatter has rewritten the trailing fragment on this project. Always re-grep the file after the edit; if "Sole IN01 director." or "2× Capper" went missing, the edit needs a second pass with a smaller anchor.
|
|
235
|
-
|
|
236
|
-
## Pitfalls to avoid (collected from the reference project)
|
|
237
|
-
|
|
238
|
-
- **Renaming a directory after the URL is published.** Keep `<project-site>/.docs/data-room/html/<artefact>/index.html` stable; if the URL changes, downstream investor links break.
|
|
239
|
-
- **Letting Round-2 hires inflate the Year-1 P&L.** Only Round-1 hires belong in the Year-1 income statement. Customer-success and product-engineer hires that trigger in Round 1 are in; senior platform engineer, head of growth, and CS team scale that Round 2 funds are not.
|
|
240
|
-
- **Mixing "Year 1" (12-month) and "Round 1 runway" (9-month).** If the £350k buys 9 months, present a 9-month forecast; do not present a 12-month forecast that implicitly assumes Round 2 closes mid-period without modelling the Round-2 cash injection.
|
|
241
|
-
- **Generic AI-bolted-onto-cloud-CRM competitors.** Treat the competitive set as three failing categories: incumbents (cloud CRM + bolted AI), Anthropic horizontal AI (inaccessible to non-tech-wizard users), and new-build cloud-SaaS AI-OS replacements (migration-required, same lock-in pattern as incumbents). Name each vendor, cite each claim from the vendor's own page, rebut with the substrate-AI inversion.
|
|
242
|
-
- **Forgetting Priestley / equivalent founder-thesis anchor.** Any founder who built the same thesis years before AI made it structurally apparent should reference it: book title, first-publication date, founder's costly-signal action (e.g. "bought 200 copies and distributed them to operators in his network"). This dates the conviction and lifts the deck's signal weight.
|
|
243
|
-
- **Letting the page background go light brown.** Premium register page surface (`--paper-25`) is near-white (`#FBFAF6`), not ivory. The screen-preview body background stays plain white (`#FFFFFF`).
|
|
244
|
-
|
|
245
|
-
## References
|
|
246
|
-
|
|
247
|
-
- `references/data-room-structure.md` — section-by-section README templates
|
|
248
|
-
- `references/business-plan-template.md` — 15-section business plan template
|
|
249
|
-
- `references/deck-blueprint-template.md` — 12-slide deck brief template
|
|
250
|
-
- `references/html-pdf-pipeline.md` — render-pdf.mjs canonical source + CSS scaffold
|
|
251
|
-
- `references/compliance-research-checklist.md` — UK + EU regulatory regimes to verify
|
|
252
|
-
- `references/internal-workings-scrub.md` — the public-vs-internal doctrine, patterns to scrub, recurrence list
|
|
253
|
-
- `references/design-tokens-application.md` — how to consume `realagent-site/.docs/design-tokens.md` from an artefact's `:root` block
|
|
254
|
-
- `references/termsheet-template.md` — A4-portrait term-sheet structure, cap-table reconciliation, common defects
|
|
255
|
-
|
|
256
|
-
## Reference project
|
|
257
|
-
|
|
258
|
-
The first execution of this skill produced `realagent-site/.docs/data-room/` for Real Agent Network Limited (Companies House 17237239). Read that directory as the canonical example; the skill's job is to reproduce its structure and doctrine for any subsequent UK seed raise.
|
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
# Business plan template — 15-section structure
|
|
2
|
-
|
|
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
|
-
|
|
5
|
-
## Section-by-section skeleton
|
|
6
|
-
|
|
7
|
-
### 1. Executive Summary
|
|
8
|
-
One paragraph each: what the company is (legal entity + Companies House identifier + substrate description), what is being raised (size, pre-money, post-money, runway, Round 2 follow-on), demand evidence (numbers with dates), market size + structural tailwind, competitive set in three failing categories + the architectural inversion, bottom-line P&L summary.
|
|
9
|
-
|
|
10
|
-
### 2. Vision and Mission
|
|
11
|
-
Three blocks. **Vision.** Where the company ends up at full execution. **Mission.** What the company gives to its customer day one. **Doctrine.** The structural belief that everything else derives from.
|
|
12
|
-
|
|
13
|
-
### 3. The Company
|
|
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
|
-
|
|
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).
|
|
18
|
-
|
|
19
|
-
### 5. The Product
|
|
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
|
-
|
|
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").
|
|
24
|
-
|
|
25
|
-
### 7. Go-to-Market
|
|
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.
|
|
27
|
-
|
|
28
|
-
### 8. Competition
|
|
29
|
-
Three failing categories: (a) cloud-CRM-bolted-AI incumbents, (b) horizontal-AI providers inaccessible to ICP, (c) new-build cloud-SaaS replacements requiring full migration. RANL differentiation paragraph. Most-direct-competitor counter (CRM-agnostic vs migration-required is the headline rebuttal).
|
|
30
|
-
|
|
31
|
-
### 9. Operations
|
|
32
|
-
Technology stack (foundation model, graph store, hardware tiered by workload, network, hosting), data sovereignty paragraph, IP ownership chain (deed-of-assignment commitment), compliance posture operational summary (pointer to Section 10 for full treatment).
|
|
33
|
-
|
|
34
|
-
### 10. Compliance and regulatory positioning
|
|
35
|
-
Three regulatory regimes: UK consumer protection (DMCC Act for estate agency / equivalent for the vertical), UK data and AI regime (UK GDPR + ICO ADM Articles 22A–22D), EU AI Act (relevant only to international expansion). Adjacent UK obligations (Estate Agents Act / equivalent + AML + sector membership bodies). Closing: "Why compliance is the moat, not the tax".
|
|
36
|
-
|
|
37
|
-
### 11. Team
|
|
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
|
-
|
|
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.
|
|
42
|
-
|
|
43
|
-
### 13. Risks and Mitigations
|
|
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.
|
|
45
|
-
|
|
46
|
-
### 14. Milestones (the N-month thesis)
|
|
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
|
-
|
|
49
|
-
### 15. The bottom line
|
|
50
|
-
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
|
-
|
|
52
|
-
### Appendices
|
|
53
|
-
Cited documents listed by title only. Each available to a serious investor on request; internal-only working documents are not listed.
|
|
54
|
-
|
|
55
|
-
## Writing rules
|
|
56
|
-
|
|
57
|
-
- **Numbers cite their source.** Every figure in the body links to an Appendix entry that is itself a publicly-shareable document.
|
|
58
|
-
- **No internal commentary.** See `internal-workings-scrub.md`.
|
|
59
|
-
- **No em-dashes between alphabetic words** in user-facing prose. Use colons, parentheses, semicolons, or rewrites.
|
|
60
|
-
- **Even-page-count parity** if the document is printed; add a supporting page if a section change breaks parity.
|
|
61
|
-
- **One pre-investment cap table source: the IN01.** Reconcile the nominal-value discrepancy (e.g. £0.001 vs £0.01) before writing the balance sheet.
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
# Compliance research checklist
|
|
2
|
-
|
|
3
|
-
Required before drafting business plan Section 10 (Compliance and regulatory positioning) for a UK-domiciled raise. Every claim must cite a primary source (ICO guidance, gov.uk, regulator strategy document) verified by WebSearch.
|
|
4
|
-
|
|
5
|
-
## UK consumer-protection regime
|
|
6
|
-
|
|
7
|
-
**For estate-agency / property:** Digital Markets, Competition and Consumers Act 2024 (DMCC Act). In force from 6 April 2025. Supersedes the Consumer Protection from Unfair Trading Regulations 2008 for estate-agency consumer protection. Under the DMCC Act, **omitting material information is automatically an unfair commercial practice regardless of whether the omission affected the consumer's decision**. CMA holds direct enforcement powers including fines without court process. Property brochures must include Part B material information.
|
|
8
|
-
|
|
9
|
-
**For other verticals:** Identify the equivalent UK consumer-protection regime (financial services → FCA Consumer Duty; healthcare → CQC; legal services → SRA; etc.). Same pattern: cite the binding statute, name the regulator, identify the enforcement mechanism.
|
|
10
|
-
|
|
11
|
-
## UK data-protection and AI regime
|
|
12
|
-
|
|
13
|
-
- **UK GDPR** sits over UK data processing. Articles 22A to 22D (added by the Data Use and Access Act) govern solely automated decision-making.
|
|
14
|
-
- **No UK AI-specific statute in the 2026 parliamentary session.** Labour's 2024 King's Speech committed to "appropriate legislation on the most powerful AI models" but the Bill has not been introduced. A dedicated 2026 AI Bill is not expected.
|
|
15
|
-
- **ICO strategy.** June 2025 strategy "Preventing Harm, Promoting Trust" frames the regulator's approach. ICO consulting on updated Automated Decision-Making and Profiling guidance during 2025–2026, with a statutory code of practice on AI and ADM in the pipeline. First substantive enforcement guidance expected later in 2026.
|
|
16
|
-
- **UK is not adopting the EU AI Act.** Sector-led approach via existing regulators. Starmer's stated position: *"instead of over-regulating these new technologies, we're seizing the opportunities they offer"*.
|
|
17
|
-
|
|
18
|
-
## EU AI Act (relevant only to international expansion)
|
|
19
|
-
|
|
20
|
-
- Entered into force 1 August 2024.
|
|
21
|
-
- Fully applicable 2 August 2026.
|
|
22
|
-
- Classifies AI systems used in credit and insurance (which overlap with mortgage and property-financing decisions) as **high-risk**. Most marketing and operational AI applications sit at lower risk tiers.
|
|
23
|
-
- High-risk obligations: risk-management systems, data-quality controls, human oversight, transparency to affected individuals, conformity assessment, post-market monitoring.
|
|
24
|
-
- For UK-domiciled companies, the EU AI Act binds only when serving EU customers. Document the international expansion path and confirm whether any planned product crosses into high-risk territory.
|
|
25
|
-
|
|
26
|
-
## Adjacent UK obligations to verify per vertical
|
|
27
|
-
|
|
28
|
-
- **Estate Agents Act 1979** for property: distinguish software vendor (out of scope) from estate agent (in scope).
|
|
29
|
-
- **Money Laundering Regulations 2017 + Economic Crime and Corporate Transparency Act 2023** for AML obligations.
|
|
30
|
-
- **PECR (Privacy and Electronic Communications Regulations 2003)** for electronic marketing, cookies, and tracking. Sits alongside UK GDPR. Enforced by ICO with fines up to £500,000.
|
|
31
|
-
- **Sector membership bodies** (NAEA / ARLA Propertymark for property; equivalents per vertical).
|
|
32
|
-
- **Client Money Protection schemes** where the business handles client money.
|
|
33
|
-
|
|
34
|
-
## WebSearch protocol
|
|
35
|
-
|
|
36
|
-
For each regime, search for:
|
|
37
|
-
|
|
38
|
-
1. The primary statute / regulation page on gov.uk or the regulator's site.
|
|
39
|
-
2. A recent (within last 12 months) legal-firm briefing summarising current state.
|
|
40
|
-
3. The regulator's strategy document.
|
|
41
|
-
|
|
42
|
-
Examples that worked in the reference project:
|
|
43
|
-
|
|
44
|
-
- DMCC Act + Propertymark guidance withdrawal: `https://www.propertymark.co.uk/resource/material-information-guidance-withdrawn-as-the-digital-markets-competition-and-consumers-act-takes-over.html`
|
|
45
|
-
- ICO AI strategy: `https://ico.org.uk/for-organisations/uk-gdpr-guidance-and-resources/artificial-intelligence/guidance-on-ai-and-data-protection/`
|
|
46
|
-
- UK AI Bill status: `https://iapp.org/news/a/king-s-speech-signals-diffuse-uk-digital-policy-agenda-but-no-ai-bill`
|
|
47
|
-
- EU AI Act compliance for UK businesses: `https://www.rmoklegal.com/guides/eu-ai-act-compliance-uk`
|
|
48
|
-
|
|
49
|
-
Cite the actual source URLs in the business plan's reply / Sources block (per the WebSearch tool's mandatory citation rule).
|
|
50
|
-
|
|
51
|
-
## The closing argument
|
|
52
|
-
|
|
53
|
-
The business plan's Section 10 ends with "Why compliance is the moat, not the tax": cloud-CRM-bolted-AI competitors inherit the vendor's data-protection posture; the product owns the agent's data sovereignty by design, so compliance is a competitive moat (especially into EU markets where the EU AI Act amplifies the cost differential).
|