@rubytech/create-maxy-code 0.1.169 → 0.1.171

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 (169) hide show
  1. package/dist/__tests__/premium-mcp-discover.test.js +42 -0
  2. package/dist/lib/premium-mcp-discover.js +9 -2
  3. package/package.json +1 -1
  4. package/payload/platform/plugins/.claude-plugin/marketplace.json +0 -15
  5. package/payload/platform/plugins/docs/references/platform.md +1 -1
  6. package/payload/premium-plugins/writer-craft/lib/mcp-stderr-tee/dist/index.d.ts +51 -0
  7. package/payload/premium-plugins/writer-craft/lib/mcp-stderr-tee/dist/index.d.ts.map +1 -0
  8. package/payload/premium-plugins/writer-craft/lib/mcp-stderr-tee/dist/index.js +196 -0
  9. package/payload/premium-plugins/writer-craft/lib/mcp-stderr-tee/dist/index.js.map +1 -0
  10. package/payload/premium-plugins/writer-craft/lib/mcp-stderr-tee/package.json +7 -0
  11. package/payload/premium-plugins/writer-craft/mcp/dist/index.d.ts +3 -0
  12. package/payload/premium-plugins/writer-craft/mcp/dist/index.d.ts.map +1 -0
  13. package/payload/premium-plugins/writer-craft/mcp/dist/index.js +257 -0
  14. package/payload/premium-plugins/writer-craft/mcp/dist/index.js.map +1 -0
  15. package/payload/premium-plugins/writer-craft/mcp/dist/lib/neo4j.d.ts +14 -0
  16. package/payload/premium-plugins/writer-craft/mcp/dist/lib/neo4j.d.ts.map +1 -0
  17. package/payload/premium-plugins/writer-craft/mcp/dist/lib/neo4j.js +47 -0
  18. package/payload/premium-plugins/writer-craft/mcp/dist/lib/neo4j.js.map +1 -0
  19. package/payload/premium-plugins/writer-craft/mcp/dist/lib/voice-corpus.d.ts +42 -0
  20. package/payload/premium-plugins/writer-craft/mcp/dist/lib/voice-corpus.d.ts.map +1 -0
  21. package/payload/{platform/plugins/writer-craft/mcp/src/lib/voice-corpus.ts → premium-plugins/writer-craft/mcp/dist/lib/voice-corpus.js} +5 -5
  22. package/payload/premium-plugins/writer-craft/mcp/dist/lib/voice-corpus.js.map +1 -0
  23. package/payload/premium-plugins/writer-craft/mcp/dist/tools/voice-distil-profile.d.ts +36 -0
  24. package/payload/premium-plugins/writer-craft/mcp/dist/tools/voice-distil-profile.d.ts.map +1 -0
  25. package/payload/premium-plugins/writer-craft/mcp/dist/tools/voice-distil-profile.js +225 -0
  26. package/payload/premium-plugins/writer-craft/mcp/dist/tools/voice-distil-profile.js.map +1 -0
  27. package/payload/premium-plugins/writer-craft/mcp/dist/tools/voice-record-feedback.d.ts +26 -0
  28. package/payload/premium-plugins/writer-craft/mcp/dist/tools/voice-record-feedback.d.ts.map +1 -0
  29. package/payload/premium-plugins/writer-craft/mcp/dist/tools/voice-record-feedback.js +74 -0
  30. package/payload/premium-plugins/writer-craft/mcp/dist/tools/voice-record-feedback.js.map +1 -0
  31. package/payload/premium-plugins/writer-craft/mcp/dist/tools/voice-retrieve-conditioning.d.ts +22 -0
  32. package/payload/premium-plugins/writer-craft/mcp/dist/tools/voice-retrieve-conditioning.d.ts.map +1 -0
  33. package/payload/premium-plugins/writer-craft/mcp/dist/tools/voice-retrieve-conditioning.js +102 -0
  34. package/payload/premium-plugins/writer-craft/mcp/dist/tools/voice-retrieve-conditioning.js.map +1 -0
  35. package/payload/premium-plugins/writer-craft/mcp/dist/tools/voice-tag-content.d.ts +14 -0
  36. package/payload/premium-plugins/writer-craft/mcp/dist/tools/voice-tag-content.d.ts.map +1 -0
  37. package/payload/premium-plugins/writer-craft/mcp/dist/tools/voice-tag-content.js +84 -0
  38. package/payload/premium-plugins/writer-craft/mcp/dist/tools/voice-tag-content.js.map +1 -0
  39. package/payload/premium-plugins/writer-craft/mcp/package-lock.json +1327 -0
  40. package/payload/server/{chunk-3TRIXQSJ.js → chunk-L2YK2VK3.js} +17 -29
  41. package/payload/server/maxy-edge.js +1 -1
  42. package/payload/server/server.js +1 -1
  43. package/payload/platform/plugins/teaching/.claude-plugin/plugin.json +0 -8
  44. package/payload/platform/plugins/teaching/PLUGIN.md +0 -58
  45. package/payload/platform/plugins/teaching/skills/interactive-tutor/SKILL.md +0 -59
  46. package/payload/platform/plugins/teaching/skills/interactive-tutor/references/assessment.md +0 -70
  47. package/payload/platform/plugins/teaching/skills/interactive-tutor/references/classroom-conduct.md +0 -43
  48. package/payload/platform/plugins/teaching/skills/interactive-tutor/references/teaching-modes.md +0 -83
  49. package/payload/platform/plugins/teaching/skills/lesson-planner/SKILL.md +0 -48
  50. package/payload/platform/plugins/teaching/skills/lesson-planner/references/context-gathering.md +0 -41
  51. package/payload/platform/plugins/teaching/skills/lesson-planner/references/plan-structure.md +0 -94
  52. package/payload/platform/plugins/teaching/skills/study-pack-builder/SKILL.md +0 -52
  53. package/payload/platform/plugins/teaching/skills/study-pack-builder/references/disaggregation.md +0 -49
  54. package/payload/platform/plugins/teaching/skills/study-pack-builder/references/materials.md +0 -116
  55. package/payload/platform/plugins/venture-studio/.claude-plugin/plugin.json +0 -8
  56. package/payload/platform/plugins/venture-studio/PLUGIN.md +0 -119
  57. package/payload/platform/plugins/venture-studio/bin/scaffold.sh +0 -116
  58. package/payload/platform/plugins/venture-studio/skills/brand-pack/SKILL.md +0 -256
  59. package/payload/platform/plugins/venture-studio/skills/brand-pack/references/color-psychology.md +0 -118
  60. package/payload/platform/plugins/venture-studio/skills/investor-data-room/SKILL.md +0 -376
  61. package/payload/platform/plugins/venture-studio/skills/investor-data-room/references/business-plan-template.md +0 -64
  62. package/payload/platform/plugins/venture-studio/skills/investor-data-room/references/compliance-research-checklist.md +0 -53
  63. package/payload/platform/plugins/venture-studio/skills/investor-data-room/references/data-room-structure.md +0 -88
  64. package/payload/platform/plugins/venture-studio/skills/investor-data-room/references/deck-blueprint-template.md +0 -39
  65. package/payload/platform/plugins/venture-studio/skills/investor-data-room/references/design-tokens-application.md +0 -79
  66. package/payload/platform/plugins/venture-studio/skills/investor-data-room/references/html-pdf-pipeline.md +0 -236
  67. package/payload/platform/plugins/venture-studio/skills/investor-data-room/references/internal-workings-scrub.md +0 -33
  68. package/payload/platform/plugins/venture-studio/skills/investor-data-room/references/termsheet-template.md +0 -88
  69. package/payload/platform/plugins/venture-studio/skills/investor-data-room/templates/prospectus/index.html +0 -1565
  70. package/payload/platform/plugins/venture-studio/skills/investor-data-room/templates/prospectus/render-pdf.mjs +0 -91
  71. package/payload/platform/plugins/venture-studio/skills/investor-data-room/templates/prospectus/term_sheet.html +0 -715
  72. package/payload/platform/plugins/venture-studio/skills/office-hours/SKILL.md +0 -587
  73. package/payload/platform/plugins/venture-studio/skills/prototype-host/SKILL.md +0 -179
  74. package/payload/platform/plugins/venture-studio/skills/prototype-host/references/cloudflared-ingress-edit.md +0 -81
  75. package/payload/platform/plugins/venture-studio/skills/prototype-host/references/scaffold-frameworks.md +0 -60
  76. package/payload/platform/plugins/venture-studio/skills/prototype-host/references/systemd-user-service.md +0 -104
  77. package/payload/platform/plugins/venture-studio/skills/zero-to-prototype/SKILL.md +0 -336
  78. package/payload/platform/plugins/venture-studio/skills/zero-to-prototype/references/aarrr-metrics.md +0 -275
  79. package/payload/platform/plugins/venture-studio/skills/zero-to-prototype/references/assumption-testing.md +0 -93
  80. package/payload/platform/plugins/venture-studio/skills/zero-to-prototype/references/boolean-search.md +0 -308
  81. package/payload/platform/plugins/venture-studio/skills/zero-to-prototype/references/build-measure-learn.md +0 -262
  82. package/payload/platform/plugins/venture-studio/skills/zero-to-prototype/references/business-model-canvas.md +0 -171
  83. package/payload/platform/plugins/venture-studio/skills/zero-to-prototype/references/commitment-signals.md +0 -246
  84. package/payload/platform/plugins/venture-studio/skills/zero-to-prototype/references/design-thinking.md +0 -183
  85. package/payload/platform/plugins/venture-studio/skills/zero-to-prototype/references/earlyvangelist.md +0 -190
  86. package/payload/platform/plugins/venture-studio/skills/zero-to-prototype/references/first-principles.md +0 -58
  87. package/payload/platform/plugins/venture-studio/skills/zero-to-prototype/references/fishbone.md +0 -114
  88. package/payload/platform/plugins/venture-studio/skills/zero-to-prototype/references/five-whys.md +0 -43
  89. package/payload/platform/plugins/venture-studio/skills/zero-to-prototype/references/ice-scoring.md +0 -237
  90. package/payload/platform/plugins/venture-studio/skills/zero-to-prototype/references/innovation-accounting.md +0 -290
  91. package/payload/platform/plugins/venture-studio/skills/zero-to-prototype/references/jtbd.md +0 -105
  92. package/payload/platform/plugins/venture-studio/skills/zero-to-prototype/references/landing-page.md +0 -361
  93. package/payload/platform/plugins/venture-studio/skills/zero-to-prototype/references/market-type.md +0 -167
  94. package/payload/platform/plugins/venture-studio/skills/zero-to-prototype/references/mom-test.md +0 -193
  95. package/payload/platform/plugins/venture-studio/skills/zero-to-prototype/references/mvp-types.md +0 -200
  96. package/payload/platform/plugins/venture-studio/skills/zero-to-prototype/references/og-images.md +0 -239
  97. package/payload/platform/plugins/venture-studio/skills/zero-to-prototype/references/pareto.md +0 -103
  98. package/payload/platform/plugins/venture-studio/skills/zero-to-prototype/references/persona-development.md +0 -291
  99. package/payload/platform/plugins/venture-studio/skills/zero-to-prototype/references/pivot-types.md +0 -225
  100. package/payload/platform/plugins/venture-studio/skills/zero-to-prototype/references/positioning-statement.md +0 -179
  101. package/payload/platform/plugins/venture-studio/skills/zero-to-prototype/references/prd.md +0 -363
  102. package/payload/platform/plugins/venture-studio/skills/zero-to-prototype/references/pre-mortem.md +0 -74
  103. package/payload/platform/plugins/venture-studio/skills/zero-to-prototype/references/problem-validation.md +0 -253
  104. package/payload/platform/plugins/venture-studio/skills/zero-to-prototype/references/product-market-fit.md +0 -256
  105. package/payload/platform/plugins/venture-studio/skills/zero-to-prototype/references/research-synthesis.md +0 -276
  106. package/payload/platform/plugins/venture-studio/skills/zero-to-prototype/references/three-engines-of-growth.md +0 -248
  107. package/payload/platform/plugins/venture-studio/skills/zero-to-prototype/references/validation-tests.md +0 -89
  108. package/payload/platform/plugins/venture-studio/skills/zero-to-prototype/references/value-proposition-canvas.md +0 -121
  109. package/payload/platform/plugins/venture-studio/skills/zero-to-prototype/references/win-loss-analysis.md +0 -242
  110. package/payload/platform/plugins/venture-studio/skills/zero-to-prototype/references/workflow-mapping.md +0 -271
  111. package/payload/platform/plugins/writer-craft/.claude-plugin/plugin.json +0 -17
  112. package/payload/platform/plugins/writer-craft/PLUGIN.md +0 -130
  113. package/payload/platform/plugins/writer-craft/agents/writer-craft--manuscript-reviewer.md +0 -96
  114. package/payload/platform/plugins/writer-craft/mcp/package.json +0 -19
  115. package/payload/platform/plugins/writer-craft/mcp/scripts/smoke.mjs +0 -152
  116. package/payload/platform/plugins/writer-craft/mcp/src/index.ts +0 -289
  117. package/payload/platform/plugins/writer-craft/mcp/src/lib/neo4j.ts +0 -56
  118. package/payload/platform/plugins/writer-craft/mcp/src/tools/voice-distil-profile.ts +0 -303
  119. package/payload/platform/plugins/writer-craft/mcp/src/tools/voice-record-feedback.ts +0 -114
  120. package/payload/platform/plugins/writer-craft/mcp/src/tools/voice-retrieve-conditioning.ts +0 -145
  121. package/payload/platform/plugins/writer-craft/mcp/src/tools/voice-tag-content.ts +0 -117
  122. package/payload/platform/plugins/writer-craft/mcp/tsconfig.json +0 -8
  123. package/payload/platform/plugins/writer-craft/skills/citation-style/SKILL.md +0 -94
  124. package/payload/platform/plugins/writer-craft/skills/citation-style/references/book-and-chapter-models.md +0 -77
  125. package/payload/platform/plugins/writer-craft/skills/citation-style/references/citation-rules.md +0 -103
  126. package/payload/platform/plugins/writer-craft/skills/citation-style/references/journal-article-models.md +0 -74
  127. package/payload/platform/plugins/writer-craft/skills/citation-style/references/other-source-models.md +0 -146
  128. package/payload/platform/plugins/writer-craft/skills/citation-style/references/reference-list-rules.md +0 -70
  129. package/payload/platform/plugins/writer-craft/skills/editorial-practice/SKILL.md +0 -108
  130. package/payload/platform/plugins/writer-craft/skills/editorial-practice/references/copyediting.md +0 -73
  131. package/payload/platform/plugins/writer-craft/skills/editorial-practice/references/developmental-editing.md +0 -85
  132. package/payload/platform/plugins/writer-craft/skills/editorial-practice/references/genre-specific-editing.md +0 -78
  133. package/payload/platform/plugins/writer-craft/skills/editorial-practice/references/line-editing.md +0 -55
  134. package/payload/platform/plugins/writer-craft/skills/editorial-practice/references/self-editing.md +0 -89
  135. package/payload/platform/plugins/writer-craft/skills/persuasive-storytelling/SKILL.md +0 -114
  136. package/payload/platform/plugins/writer-craft/skills/persuasive-storytelling/references/audience-analysis.md +0 -73
  137. package/payload/platform/plugins/writer-craft/skills/persuasive-storytelling/references/crafting-persuasive-story.md +0 -76
  138. package/payload/platform/plugins/writer-craft/skills/persuasive-storytelling/references/persuasion-case-studies.md +0 -67
  139. package/payload/platform/plugins/writer-craft/skills/persuasive-storytelling/references/transformation-framework.md +0 -86
  140. package/payload/platform/plugins/writer-craft/skills/point-of-view/SKILL.md +0 -97
  141. package/payload/platform/plugins/writer-craft/skills/point-of-view/references/indirect-narration.md +0 -72
  142. package/payload/platform/plugins/writer-craft/skills/point-of-view/references/pov-types-and-voice.md +0 -91
  143. package/payload/platform/plugins/writer-craft/skills/point-of-view/references/protagonist-filter.md +0 -71
  144. package/payload/platform/plugins/writer-craft/skills/point-of-view/references/tense-and-person.md +0 -85
  145. package/payload/platform/plugins/writer-craft/skills/prose-craft/SKILL.md +0 -100
  146. package/payload/platform/plugins/writer-craft/skills/prose-craft/references/punctuation-and-grammar.md +0 -72
  147. package/payload/platform/plugins/writer-craft/skills/prose-craft/references/repetition.md +0 -71
  148. package/payload/platform/plugins/writer-craft/skills/prose-craft/references/sound-and-rhythm.md +0 -64
  149. package/payload/platform/plugins/writer-craft/skills/prose-craft/references/word-economy.md +0 -93
  150. package/payload/platform/plugins/writer-craft/skills/reader-engagement/SKILL.md +0 -100
  151. package/payload/platform/plugins/writer-craft/skills/reader-engagement/references/cause-effect-setup-payoff.md +0 -79
  152. package/payload/platform/plugins/writer-craft/skills/reader-engagement/references/conflict-escalation.md +0 -81
  153. package/payload/platform/plugins/writer-craft/skills/reader-engagement/references/hooking-readers.md +0 -67
  154. package/payload/platform/plugins/writer-craft/skills/reader-engagement/references/neurochemistry-of-engagement.md +0 -94
  155. package/payload/platform/plugins/writer-craft/skills/review-manuscript/SKILL.md +0 -111
  156. package/payload/platform/plugins/writer-craft/skills/review-manuscript/references/review-manuscript-checklist.md +0 -119
  157. package/payload/platform/plugins/writer-craft/skills/review-prose/SKILL.md +0 -99
  158. package/payload/platform/plugins/writer-craft/skills/review-prose/references/prose-review-checklist.md +0 -112
  159. package/payload/platform/plugins/writer-craft/skills/review-scene/SKILL.md +0 -99
  160. package/payload/platform/plugins/writer-craft/skills/review-scene/references/scene-analysis-framework.md +0 -95
  161. package/payload/platform/plugins/writer-craft/skills/story-architecture/SKILL.md +0 -106
  162. package/payload/platform/plugins/writer-craft/skills/story-architecture/references/blueprinting-and-scene-cards.md +0 -118
  163. package/payload/platform/plugins/writer-craft/skills/story-architecture/references/inner-issue-and-protagonist-goal.md +0 -66
  164. package/payload/platform/plugins/writer-craft/skills/story-architecture/references/misbelief-desire-worldview.md +0 -87
  165. package/payload/platform/plugins/writer-craft/skills/story-architecture/references/origin-scenes-and-escalation.md +0 -82
  166. package/payload/platform/plugins/writer-craft/skills/story-blueprint/SKILL.md +0 -133
  167. package/payload/platform/plugins/writer-craft/skills/story-blueprint/references/blueprinting-exercises.md +0 -118
  168. package/payload/platform/plugins/writer-craft/skills/story-blueprint/references/blueprinting-process.md +0 -128
  169. package/payload/platform/plugins/writer-craft/skills/voice-mirror/SKILL.md +0 -166
@@ -1,1565 +0,0 @@
1
- <!DOCTYPE html>
2
- <html lang="en-GB">
3
-
4
- <head>
5
- <meta charset="UTF-8">
6
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
7
- <title>{{ BRAND_NAME }} — Prospectus | {{ DOC_MONTH_YEAR }}</title>
8
- <link rel="preconnect" href="https://fonts.googleapis.com">
9
- <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
10
- <link
11
- href="https://fonts.googleapis.com/css2?family=Cormorant+Garamond:ital,wght@0,300;0,400;0,500;0,600;1,300;1,400;1,500;1,600&family=Lora:ital,wght@0,400;0,500;0,600;1,400;1,500&family=Inter:wght@400;500;600&display=swap"
12
- rel="stylesheet">
13
- <style>
14
- /* Kappa — editorial theme. Strict monochrome. */
15
- :root {
16
- --paper: #FFFFFF;
17
- --paper-2: #F4F4F4;
18
- --ink: #000000;
19
- --ink-2: #222222;
20
- --slate: #666666;
21
- --rule: rgba(0, 0, 0, 0.14);
22
- --rule-fine: #DDDDDD;
23
- --gold: #000000;
24
- --gold-soft: #999999;
25
- --serif: 'Cormorant Garamond', 'EB Garamond', Garamond, serif;
26
- --body-serif: 'Lora', 'Source Serif Pro', Georgia, serif;
27
- --sans: 'Inter', system-ui, -apple-system, sans-serif;
28
- --color-accent: #ecf1f2;
29
- --bg-accent: var(--color-accent);
30
- }
31
-
32
- * {
33
- margin: 0;
34
- padding: 0;
35
- box-sizing: border-box;
36
- }
37
-
38
- html {
39
- font-size: 16px;
40
- -webkit-font-smoothing: antialiased;
41
- -moz-osx-font-smoothing: grayscale;
42
- }
43
-
44
- body {
45
- font-family: var(--body-serif);
46
- background: var(--paper);
47
- color: var(--ink);
48
- line-height: 1.55;
49
- }
50
-
51
- img,
52
- svg {
53
- display: block;
54
- max-width: 100%;
55
- height: auto;
56
- }
57
-
58
- a {
59
- color: inherit;
60
- }
61
-
62
- /* HERO — first A4 page */
63
- .page {
64
- max-width: 920px;
65
- margin: 0 auto;
66
- padding: 32px 36px 28px;
67
- }
68
-
69
- .topbar {
70
- background: var(--paper);
71
- display: flex;
72
- justify-content: space-between;
73
- align-items: center;
74
- border-bottom: 1px solid var(--ink);
75
- padding: 10px 0;
76
- margin-bottom: 18px;
77
- font-family: var(--sans);
78
- font-size: 10px;
79
- font-weight: 500;
80
- letter-spacing: 0.28em;
81
- text-transform: uppercase;
82
- color: var(--ink-2);
83
- }
84
-
85
- /* Screen-only fixed topbar that sits outside any .page section, so it stays put
86
- through the whole scroll instead of vanishing once the cover scrolls out. */
87
- .fixed-topbar {
88
- position: fixed; top: 0; left: 0; right: 0; z-index: 50;
89
- background: var(--paper);
90
- border-bottom: 1px solid var(--ink);
91
- }
92
- .fixed-topbar-inner {
93
- max-width: 920px;
94
- margin: 0 auto;
95
- padding: 10px 36px;
96
- display: flex;
97
- justify-content: space-between;
98
- align-items: center;
99
- font-family: var(--sans);
100
- font-size: 10px;
101
- font-weight: 500;
102
- letter-spacing: 0.28em;
103
- text-transform: uppercase;
104
- color: var(--ink-2);
105
- }
106
- .fixed-topbar-inner .brand {
107
- font-family: var(--serif); font-style: italic; font-size: 18px;
108
- letter-spacing: 0.01em; color: var(--ink); text-transform: none;
109
- display: inline-flex; align-items: center; gap: 8px;
110
- }
111
- .fixed-topbar-inner .brand .mark { width: 22px; height: 22px; }
112
- .fixed-topbar-inner .meta { flex: 1 1 auto; text-align: center; }
113
- .fixed-topbar-inner .pdf-btn {
114
- background: var(--ink); color: var(--paper);
115
- padding: 7px 14px; font-family: var(--sans);
116
- font-size: 10px; font-weight: 500;
117
- letter-spacing: 0.18em; text-transform: uppercase;
118
- display: inline-flex; align-items: center; gap: 6px;
119
- }
120
- .fixed-topbar-inner .pdf-btn svg { width: 13px; height: 13px; }
121
- @media print { .fixed-topbar { display: none !important; } }
122
-
123
- /* Mobile: brand + button on row 1; document title drops to row 2; PDF button shows icon only. */
124
- @media (max-width: 720px) {
125
- .fixed-topbar-inner {
126
- flex-wrap: wrap;
127
- padding: 8px 16px;
128
- gap: 4px 12px;
129
- }
130
- .fixed-topbar-inner .meta {
131
- order: 99;
132
- flex: 1 1 100%;
133
- text-align: left;
134
- font-size: 9px;
135
- letter-spacing: 0.18em;
136
- padding-top: 4px;
137
- border-top: 1px solid var(--rule);
138
- }
139
- .fixed-topbar-inner .pdf-btn .label { display: none; }
140
- .fixed-topbar-inner .pdf-btn { padding: 7px 9px; }
141
- .fixed-topbar-inner .brand { font-size: 15px; gap: 6px; }
142
- .fixed-topbar-inner .brand .mark { width: 18px; height: 18px; }
143
- body { padding-top: 78px !important; }
144
- }
145
-
146
- .topbar .brand {
147
- font-family: var(--serif);
148
- font-style: italic;
149
- font-size: 18px;
150
- letter-spacing: 0.01em;
151
- color: var(--ink);
152
- text-transform: none;
153
- display: inline-flex;
154
- align-items: center;
155
- gap: 8px;
156
- }
157
-
158
- .topbar .brand .mark {
159
- width: 22px;
160
- height: 22px;
161
- display: inline-block;
162
- vertical-align: middle;
163
- }
164
-
165
- .topbar .right {
166
- display: flex;
167
- align-items: center;
168
- gap: 16px;
169
- }
170
-
171
- .topbar .pdf-btn {
172
- background: var(--ink);
173
- color: var(--paper);
174
- border: none;
175
- cursor: pointer;
176
- padding: 7px 14px;
177
- font-family: var(--sans);
178
- font-size: 10px;
179
- font-weight: 500;
180
- letter-spacing: 0.18em;
181
- text-transform: uppercase;
182
- transition: background 180ms;
183
- display: inline-flex;
184
- align-items: center;
185
- gap: 6px;
186
- }
187
- .topbar .pdf-btn svg { width: 13px; height: 13px; }
188
- .topbar .pdf-btn:hover { background: #333; }
189
- .topbar .meta { flex: 1 1 auto; text-align: center; }
190
-
191
- /* On screen: hide ALL per-section topbars (the fixed topbar above replaces them);
192
- on print: show them at the top of every A4 page so each printed page is self-labelled. */
193
- @media screen {
194
- .topbar { display: none; }
195
- body { padding-top: 48px; }
196
- .page+.page { padding-top: 12px; }
197
- }
198
- @media print {
199
- .topbar .pdf-btn { display: none; }
200
- }
201
-
202
-
203
- .hero {
204
- display: grid;
205
- grid-template-columns: 1.6fr 1fr;
206
- gap: 28px;
207
- padding-bottom: 18px;
208
- border-bottom: 1px solid var(--rule);
209
- margin-bottom: 18px;
210
- }
211
-
212
- .hero .stage .eyebrow {
213
- font-family: var(--sans);
214
- font-size: 9.5px;
215
- font-weight: 600;
216
- letter-spacing: 0.32em;
217
- text-transform: uppercase;
218
- color: var(--slate);
219
- margin-bottom: 8px;
220
- }
221
-
222
- .hero .stage h1 {
223
- font-family: var(--serif);
224
- font-style: italic;
225
- font-weight: 400;
226
- font-size: 38px;
227
- line-height: 1.04;
228
- letter-spacing: -0.012em;
229
- color: var(--ink);
230
- margin-bottom: 10px;
231
- }
232
-
233
- .hero .stage h1 .upright {
234
- font-style: normal;
235
- }
236
-
237
- .hero .stage .deck {
238
- font-family: var(--body-serif);
239
- font-size: 13.5px;
240
- line-height: 1.55;
241
- color: var(--ink-2);
242
- margin-bottom: 14px;
243
- }
244
-
245
- .hero .stage .chart {
246
- background: var(--paper);
247
- border: 1px solid var(--rule-fine);
248
- padding: 10px 12px 6px;
249
- }
250
-
251
- .hero .stage .chart-caption {
252
- font-family: var(--sans);
253
- font-size: 9px;
254
- font-weight: 600;
255
- letter-spacing: 0.22em;
256
- text-transform: uppercase;
257
- color: var(--slate);
258
- margin-top: 4px;
259
- text-align: right;
260
- }
261
-
262
- /* Cover hero image — full-width landscape band above the title/info-card grid. */
263
- .cover-band {
264
- width: 100%;
265
- margin-bottom: 16px;
266
- }
267
- .cover-band img {
268
- display: block;
269
- width: 100%;
270
- height: auto;
271
- border: 1px solid var(--rule-fine);
272
- }
273
-
274
- /* Info-card — the ask */
275
- .info-card {
276
- background: var(--bg-accent);
277
- padding: 20px 22px 22px;
278
- border-top: 1px solid var(--ink);
279
- display: flex;
280
- flex-direction: column;
281
- }
282
-
283
- .info-card .tag {
284
- font-family: var(--sans);
285
- font-size: 9px;
286
- font-weight: 600;
287
- letter-spacing: 0.32em;
288
- text-transform: uppercase;
289
- color: var(--ink-2);
290
- margin-bottom: 8px;
291
- }
292
-
293
- .info-card .title {
294
- font-family: var(--serif);
295
- font-style: italic;
296
- font-weight: 400;
297
- font-size: 30px;
298
- line-height: 1.0;
299
- color: var(--ink);
300
- margin-bottom: 4px;
301
- }
302
-
303
- .info-card .subtitle {
304
- font-family: var(--body-serif);
305
- font-size: 12.5px;
306
- color: var(--ink-2);
307
- line-height: 1.45;
308
- margin-bottom: 12px;
309
- }
310
-
311
- .info-card table {
312
- width: 100%;
313
- border-collapse: collapse;
314
- font-variant-numeric: tabular-nums;
315
- border-top: 1px solid var(--rule);
316
- border-bottom: 1px solid var(--rule);
317
- margin-bottom: 12px;
318
- }
319
-
320
- .info-card th {
321
- text-align: left;
322
- padding: 6px 0;
323
- font-family: var(--body-serif);
324
- font-style: italic;
325
- font-weight: 400;
326
- font-size: 12px;
327
- color: var(--ink);
328
- }
329
-
330
- .info-card td {
331
- text-align: right;
332
- padding: 6px 0;
333
- font-family: var(--sans);
334
- font-size: 11px;
335
- color: var(--ink);
336
- white-space: nowrap;
337
- }
338
-
339
- .info-card tr+tr th,
340
- .info-card tr+tr td {
341
- border-top: 1px solid var(--rule);
342
- }
343
-
344
- .info-card .note {
345
- font-family: var(--body-serif);
346
- font-style: italic;
347
- font-size: 11.5px;
348
- color: var(--slate);
349
- line-height: 1.4;
350
- }
351
-
352
- /* Body blocks */
353
- .block {
354
- margin-bottom: 16px;
355
- }
356
-
357
- .block h2 {
358
- font-family: var(--serif);
359
- font-style: italic;
360
- font-weight: 400;
361
- font-size: 20px;
362
- color: var(--ink);
363
- margin-bottom: 8px;
364
- letter-spacing: -0.005em;
365
- line-height: 1.2;
366
- }
367
-
368
- .block h2::before {
369
- content: '';
370
- display: block;
371
- width: 28px;
372
- height: 1px;
373
- background: var(--ink);
374
- margin-bottom: 8px;
375
- }
376
-
377
- .block p {
378
- font-family: var(--body-serif);
379
- font-size: 12.5px;
380
- line-height: 1.62;
381
- color: var(--ink-2);
382
- margin-bottom: 8px;
383
- }
384
-
385
- /* Drop cap on the first paragraph of each body block and the hero deck (Kappa editorial convention). */
386
- .block > p:first-of-type::first-letter,
387
- .hero .stage .deck::first-letter {
388
- font-family: var(--serif);
389
- font-weight: 400;
390
- font-style: normal;
391
- font-size: 3.4em;
392
- line-height: 0.85;
393
- float: left;
394
- margin: 0.08em 0.12em -0.04em 0;
395
- color: var(--ink);
396
- letter-spacing: -0.02em;
397
- }
398
- /* Opt-out: paragraphs that start with a proper noun (a name) read badly with a drop cap. */
399
- .block > p.no-dropcap:first-of-type::first-letter { all: unset; }
400
-
401
- .block p strong {
402
- color: var(--ink);
403
- font-weight: 500;
404
- }
405
-
406
- .block p em {
407
- font-style: italic;
408
- }
409
-
410
- .block ul {
411
- font-family: var(--body-serif);
412
- font-size: 12.5px;
413
- line-height: 1.55;
414
- color: var(--ink-2);
415
- padding-left: 18px;
416
- margin-bottom: 8px;
417
- }
418
-
419
- .block ul li {
420
- margin-bottom: 3px;
421
- }
422
-
423
- .block ul li strong {
424
- color: var(--ink);
425
- font-weight: 500;
426
- }
427
-
428
- .two-col {
429
- display: grid;
430
- grid-template-columns: 1fr 1fr;
431
- gap: 24px;
432
- }
433
-
434
- /* Asset (Platform — already built) block */
435
- .asset-block {
436
- background: var(--bg-accent);
437
- padding: 18px 22px;
438
- margin: 0 0 18px;
439
- border-top: 1px solid var(--ink);
440
- }
441
-
442
- .asset-block p {
443
- margin-bottom: 14px;
444
- }
445
-
446
- .asset-grid {
447
- display: grid;
448
- grid-template-columns: 1fr 1fr;
449
- gap: 24px;
450
- }
451
-
452
- .asset-grid .asset-head {
453
- font-family: var(--sans);
454
- font-size: 9.5px;
455
- font-weight: 600;
456
- letter-spacing: 0.28em;
457
- text-transform: uppercase;
458
- color: var(--ink);
459
- margin-bottom: 8px;
460
- }
461
-
462
- .asset-grid ul {
463
- font-family: var(--body-serif);
464
- font-size: 12px;
465
- line-height: 1.5;
466
- color: var(--ink-2);
467
- padding-left: 16px;
468
- }
469
-
470
- .asset-grid ul li {
471
- margin-bottom: 5px;
472
- }
473
-
474
- .asset-grid ul li strong {
475
- color: var(--ink);
476
- font-weight: 500;
477
- }
478
-
479
- /* Page break */
480
- .page-break {
481
- page-break-after: always;
482
- break-after: page;
483
- }
484
-
485
- /* Section heading */
486
- .section-rule {
487
- display: flex;
488
- align-items: baseline;
489
- justify-content: space-between;
490
- border-top: 1px solid var(--ink);
491
- padding-top: 10px;
492
- margin-top: 4px;
493
- margin-bottom: 14px;
494
- }
495
-
496
- .section-rule h2 {
497
- font-family: var(--serif);
498
- font-style: italic;
499
- font-weight: 400;
500
- font-size: 22px;
501
- color: var(--ink);
502
- }
503
-
504
- .section-rule .nav {
505
- font-family: var(--sans);
506
- font-size: 9.5px;
507
- font-weight: 600;
508
- letter-spacing: 0.28em;
509
- text-transform: uppercase;
510
- color: var(--slate);
511
- }
512
-
513
- /* Param section (trajectory) */
514
- .traj {
515
- display: grid;
516
- grid-template-columns: 1.1fr 1fr;
517
- gap: 24px;
518
- margin-bottom: 16px;
519
- align-items: start;
520
- }
521
-
522
- .traj .visual {
523
- background: var(--paper);
524
- border: 1px solid var(--rule-fine);
525
- padding: 12px;
526
- }
527
-
528
- .traj .visual svg {
529
- width: 100%;
530
- height: auto;
531
- display: block;
532
- }
533
-
534
- .traj .visual-caption {
535
- font-family: var(--sans);
536
- font-size: 9px;
537
- font-weight: 600;
538
- letter-spacing: 0.22em;
539
- text-transform: uppercase;
540
- color: var(--slate);
541
- margin-top: 4px;
542
- }
543
-
544
- .traj .meta h3 {
545
- font-family: var(--serif);
546
- font-style: italic;
547
- font-weight: 400;
548
- font-size: 16px;
549
- color: var(--ink);
550
- margin-bottom: 6px;
551
- }
552
-
553
- .traj .meta p.lead {
554
- font-family: var(--body-serif);
555
- font-size: 12px;
556
- color: var(--ink-2);
557
- margin-bottom: 12px;
558
- line-height: 1.5;
559
- }
560
-
561
- .traj .grid {
562
- display: grid;
563
- grid-template-columns: 1fr 1fr;
564
- gap: 8px 18px;
565
- border-top: 1px solid var(--rule);
566
- padding-top: 12px;
567
- font-variant-numeric: tabular-nums;
568
- }
569
-
570
- .traj .grid .row .k {
571
- display: block;
572
- font-family: var(--sans);
573
- font-size: 8.5px;
574
- font-weight: 600;
575
- letter-spacing: 0.22em;
576
- text-transform: uppercase;
577
- color: var(--slate);
578
- margin-bottom: 2px;
579
- }
580
-
581
- .traj .grid .row .v {
582
- font-family: var(--serif);
583
- font-size: 15px;
584
- color: var(--ink);
585
- font-style: italic;
586
- }
587
-
588
- /* Horizon table (Beyond Year 1) */
589
- .horizon {
590
- width: 100%;
591
- border-collapse: collapse;
592
- margin-bottom: 14px;
593
- font-variant-numeric: tabular-nums;
594
- font-family: var(--body-serif);
595
- font-size: 12px;
596
- }
597
-
598
- .horizon thead th {
599
- font-family: var(--sans);
600
- font-size: 9.5px;
601
- font-weight: 600;
602
- letter-spacing: 0.16em;
603
- text-transform: uppercase;
604
- color: var(--slate);
605
- text-align: right;
606
- padding: 8px 8px;
607
- border-bottom: 1px solid var(--ink);
608
- }
609
-
610
- .horizon thead th.l {
611
- text-align: left;
612
- }
613
-
614
- .horizon tbody td {
615
- padding: 9px 8px;
616
- border-bottom: 1px solid var(--rule);
617
- text-align: right;
618
- color: var(--ink);
619
- white-space: nowrap;
620
- font-family: var(--serif);
621
- font-style: italic;
622
- font-size: 14px;
623
- }
624
-
625
- .horizon tbody td.l {
626
- text-align: left;
627
- white-space: normal;
628
- font-family: var(--body-serif);
629
- font-style: normal;
630
- font-size: 12px;
631
- color: var(--ink-2);
632
- }
633
-
634
- .horizon tbody tr:last-child td {
635
- border-bottom: 1px solid var(--ink);
636
- }
637
-
638
- /* Tables (use-of-funds, founders) */
639
- .data-table {
640
- margin-bottom: 18px;
641
- }
642
-
643
- .data-table h3 {
644
- font-family: var(--serif);
645
- font-style: italic;
646
- font-weight: 400;
647
- font-size: 16px;
648
- color: var(--ink);
649
- margin-bottom: 8px;
650
- }
651
-
652
- .data-table table {
653
- width: 100%;
654
- border-collapse: collapse;
655
- font-variant-numeric: tabular-nums;
656
- font-family: var(--body-serif);
657
- font-size: 12px;
658
- }
659
-
660
- .data-table thead th {
661
- font-family: var(--sans);
662
- font-size: 9.5px;
663
- font-weight: 600;
664
- letter-spacing: 0.16em;
665
- text-transform: uppercase;
666
- color: var(--slate);
667
- text-align: right;
668
- padding: 8px 6px;
669
- border-bottom: 1px solid var(--ink);
670
- }
671
-
672
- .data-table thead th.l {
673
- text-align: left;
674
- }
675
-
676
- .data-table tbody td {
677
- padding: 7px 6px;
678
- border-bottom: 1px solid var(--rule);
679
- text-align: right;
680
- color: var(--ink-2);
681
- white-space: nowrap;
682
- }
683
-
684
- .data-table tbody td.l {
685
- text-align: left;
686
- white-space: normal;
687
- color: var(--ink);
688
- }
689
-
690
- .data-table tbody tr:last-child td {
691
- border-bottom: 1px solid var(--ink);
692
- }
693
-
694
- .data-table tbody tr.total td {
695
- font-weight: 600;
696
- color: var(--ink);
697
- background: var(--paper-2);
698
- }
699
-
700
- /* Two-table layout */
701
- .tables-row {
702
- display: grid;
703
- grid-template-columns: 1fr 1fr;
704
- gap: 24px;
705
- margin-bottom: 14px;
706
- }
707
-
708
- /* Footer */
709
- footer {
710
- border-top: 1px solid var(--ink);
711
- padding-top: 10px;
712
- margin-top: 14px;
713
- display: flex;
714
- justify-content: space-between;
715
- align-items: baseline;
716
- font-family: var(--sans);
717
- font-size: 9px;
718
- font-weight: 500;
719
- letter-spacing: 0.18em;
720
- text-transform: uppercase;
721
- color: var(--slate);
722
- }
723
-
724
- footer .legal {
725
- font-family: var(--body-serif);
726
- font-style: italic;
727
- font-size: 10.5px;
728
- color: var(--slate);
729
- letter-spacing: 0;
730
- text-transform: none;
731
- max-width: 540px;
732
- line-height: 1.45;
733
- }
734
-
735
- /* Print — A4 single-sheet enforcement */
736
- /* Image-PDF print pipeline (per a4-print-documents skill). Each .page locked to A4.
737
- Browser headers/footers (date, URL, page X/Y) can only be suppressed by the user toggling
738
- "Headers and footers" off in the print dialog — they are not CSS-controllable. For a fully
739
- image-only PDF (no metadata, no browser print dialog), use the Playwright + img2pdf + qpdf
740
- pipeline (see a4-print-documents skill); the PDF download button can then link to a static
741
- {{ PROSPECTUS_PDF }} instead of calling window.print(). */
742
- @page { size: A4; margin: 0; }
743
-
744
- /* Compact page-number indicator — print-only. Hidden on screen so the HTML reads as a
745
- continuous web document; shown in the rendered PDF where readers expect pagination. */
746
- .page { position: relative; }
747
- .page-num { display: none; }
748
-
749
- @media print {
750
- html, body { background: white; -webkit-print-color-adjust: exact; print-color-adjust: exact; }
751
- .screen-only { display: none !important; }
752
- /* The topbar's bottom border already separates the page from the section below;
753
- drop the section-rule's top border to avoid the double-line stack in PDF. */
754
- .section-rule { border-top: none; padding-top: 0; }
755
- .page-num {
756
- display: block;
757
- position: absolute;
758
- bottom: 6mm;
759
- right: 14mm;
760
- font-family: var(--sans);
761
- font-size: 9px;
762
- font-weight: 500;
763
- letter-spacing: 0.18em;
764
- text-transform: uppercase;
765
- color: var(--slate);
766
- }
767
- .page {
768
- width: 210mm;
769
- height: 297mm;
770
- max-width: none;
771
- margin: 0;
772
- padding: 10mm 14mm;
773
- box-sizing: border-box;
774
- overflow: hidden;
775
- page-break-after: always;
776
- break-after: page;
777
- }
778
- .page:last-child { page-break-after: auto; break-after: auto; }
779
- .page-break { display: none; }
780
- .topbar.repeat { display: flex !important; }
781
- .hero, .traj, .tables-row, .two-col, .asset-grid, .asset-block { break-inside: avoid; }
782
- .pdf-btn { display: none !important; }
783
- a { color: inherit; text-decoration: none; }
784
- }
785
-
786
- @media (max-width: 760px) {
787
-
788
- .hero,
789
- .traj,
790
- .tables-row,
791
- .two-col,
792
- .asset-grid {
793
- grid-template-columns: 1fr;
794
- }
795
-
796
- /* Topbar: stack brand+button on row 1, meta wraps to row 2. */
797
- .topbar { flex-wrap: wrap; gap: 8px; align-items: center; }
798
- .topbar .brand { font-size: 15px; gap: 6px; }
799
- .topbar .brand .mark { width: 18px; height: 18px; }
800
- .topbar .meta { flex: 1 1 100%; order: 99; text-align: left; font-size: 9px; letter-spacing: 0.18em; padding-top: 4px; border-top: 1px solid var(--rule); }
801
- .topbar .pdf-btn { padding: 6px 10px; }
802
- .topbar .pdf-btn .label { display: none; }
803
-
804
- /* Section-rule heading: stack title + nav. */
805
- .section-rule { flex-direction: column; align-items: flex-start; gap: 4px; }
806
- .section-rule h2 { font-size: 20px; line-height: 1.2; }
807
- .section-rule .nav { padding-left: 0; }
808
-
809
- /* Footer: stack the three blocks. */
810
- footer { flex-direction: column; align-items: flex-start; gap: 8px; }
811
- footer .legal { max-width: 100%; }
812
-
813
- /* Hero stage: tighten H1 + deck. */
814
- .hero { gap: 16px; }
815
- .hero .stage h1 { font-size: 28px; }
816
- .hero .stage .deck { font-size: 12.5px; }
817
-
818
- /* Tables: smaller font, allow horizontal scroll where needed. */
819
- .data-table { overflow-x: auto; }
820
- .data-table table { font-size: 11px; min-width: 100%; }
821
- .data-table thead th { padding: 6px 4px; font-size: 8.5px; letter-spacing: 0.10em; }
822
- .data-table tbody td { padding: 6px 4px; }
823
-
824
- .horizon-wrap { overflow-x: auto; -webkit-overflow-scrolling: touch; }
825
- .horizon { font-size: 11px; min-width: 640px; }
826
- .horizon thead th { padding: 6px 8px; font-size: 8.5px; letter-spacing: 0.10em; }
827
- .horizon tbody td { padding: 8px; }
828
- .horizon tbody td.l { font-size: 11px; }
829
- /* Favour the long "What it means" column when scrolling — give the other cells just enough. */
830
- .horizon th:nth-child(1), .horizon td:nth-child(1) { white-space: nowrap; }
831
- .horizon th:nth-child(2), .horizon td:nth-child(2) { white-space: nowrap; }
832
- .horizon th:nth-child(3), .horizon td:nth-child(3) { white-space: nowrap; }
833
- .horizon th:nth-child(4), .horizon td:nth-child(4) { white-space: nowrap; }
834
- .horizon th:nth-child(5), .horizon td:nth-child(5) { min-width: 280px; }
835
-
836
- /* Info-card: tighten padding + table density. */
837
- .info-card { padding: 16px 18px; }
838
- .info-card .title { font-size: 26px; }
839
- .info-card table { font-size: 11px; }
840
-
841
- /* Asset block: tighter padding on mobile. */
842
- .asset-block { padding: 14px 16px; }
843
- .asset-grid { gap: 16px; }
844
-
845
- /* Trajectory grid: 2-col already, but tighter on small screens. */
846
- .traj .grid { gap: 6px 12px; }
847
-
848
- /* Param block: keep KV pairs as 2-col if there's room, else 1-col. */
849
- .block h2 { font-size: 18px; }
850
- .block p { font-size: 12.5px; }
851
- .block ul { font-size: 12.5px; }
852
-
853
- .page {
854
- padding: 22px 18px;
855
- }
856
- }
857
- </style>
858
- </head>
859
-
860
- <body>
861
-
862
- <!-- Screen-only fixed topbar — stays at the viewport top through the whole scroll. -->
863
- <div class="fixed-topbar">
864
- <div class="fixed-topbar-inner">
865
- <span class="brand">
866
- <img class="mark" src="{{ BRAND_ICON }}" alt="{{ BRAND_NAME }}"> {{ BRAND_NAME }}
867
- </span>
868
- <span class="meta">Prospectus &middot; {{ DOC_MONTH_YEAR }} &middot; Private</span>
869
- <a class="pdf-btn" href="{{ PROSPECTUS_PDF }}" download aria-label="Download PDF">
870
- <svg viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true">
871
- <path d="M8 2v8M4 7l4 4 4-4M3 13h10" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"/>
872
- </svg>
873
- <span class="label">Download PDF</span>
874
- </a>
875
- </div>
876
- </div>
877
-
878
- <!-- ─────────────── PAGE 1 ─────────────── -->
879
- <section class="page cover">
880
-
881
- <div class="topbar">
882
- <span class="brand"><img class="mark" src="{{ BRAND_ICON }}" alt="{{ BRAND_NAME }}"> {{ BRAND_NAME }}</span>
883
- <span class="meta">Prospectus &middot; {{ DOC_MONTH_YEAR }} &middot; Private</span>
884
- <a class="pdf-btn" href="{{ PROSPECTUS_PDF }}" download aria-label="Download PDF">
885
- <svg viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true">
886
- <path d="M8 2v8M4 7l4 4 4-4M3 13h10" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"/>
887
- </svg>
888
- <span class="label">Download PDF</span>
889
- </a>
890
- </div>
891
-
892
- <div class="cover-band">
893
- <img src="{{ HERO_IMAGE }}" alt="{{ BRAND_NAME }}" />
894
- </div>
895
-
896
- <div class="hero">
897
- <div class="stage">
898
- <div class="eyebrow">Prospectus — {{ DOC_MONTH_YEAR }}</div>
899
- <h1>Operating System for <span class="upright">Estate Agents</span></h1>
900
- <p class="deck">{{ BRAND_NAME }} is built for the UK self-employed estate agent &mdash; a cohort on track to reach
901
- ~10% of the UK property market by 2030. One admin agent runs the business through a chat. Other agents handle
902
- the admin no-one wants to do: qualifying enquiries, chasing vendor updates, booking viewings, keeping the
903
- chain moving. The agent's day
904
- stays in front of customers, not the keyboard. £500 a month &mdash; less than a Virtual Assistant (VA).</p>
905
-
906
- <div class="chart">
907
- <!-- Two-panel chart driven by the operator's financial model worksheet.
908
- Recompute SVG coordinates from the new model: cash polyline, MRR bars, burn step-lines.
909
- See Stage 4b § "How to apply answers" step 7 for the recomputation formulae. -->
910
- <svg viewBox="0 0 520 320" xmlns="http://www.w3.org/2000/svg" role="img"
911
- aria-label="Cash balance, monthly MRR and burn">
912
- <defs>
913
- <pattern id="halftone" x="0" y="0" width="6" height="6" patternUnits="userSpaceOnUse">
914
- <circle cx="3" cy="3" r="0.55" fill="#000000" opacity="0.22" />
915
- </pattern>
916
- </defs>
917
-
918
- <!-- ── PANEL 1: cash balance y 22–140 (span 118). Scale -£50k → £400k. Zero line y=128. -->
919
- <line x1="48" y1="22" x2="48" y2="140" stroke="#000" stroke-width="0.8" />
920
- <line x1="48" y1="140" x2="500" y2="140" stroke="#000" stroke-width="0.8" />
921
- <line x1="48" y1="128" x2="500" y2="128" stroke="#000" stroke-width="0.4" stroke-dasharray="2 3" />
922
- <g font-family="Inter, sans-serif" font-size="8.5" fill="#666" text-anchor="end">
923
- <text x="44" y="25">£400k</text>
924
- <text x="44" y="76">£200k</text>
925
- <text x="44" y="131">£0</text>
926
- <text x="44" y="143">−£50k</text>
927
- </g>
928
- <polyline points="48,43 86,55 123,65 161,77 199,87 236,97 274,104 312,109 349,113 387,115 425,117 462,118 500,117"
929
- fill="none" stroke="#000" stroke-width="1.7" />
930
- <polygon
931
- points="48,43 86,55 123,65 161,77 199,87 236,97 274,104 312,109 349,113 387,115 425,117 462,118 500,117 500,140 48,140"
932
- fill="url(#halftone)" />
933
- <g fill="#000">
934
- <circle cx="48" cy="43" r="2.6" />
935
- <circle cx="462" cy="118" r="2.6" />
936
- <circle cx="500" cy="117" r="2.6" />
937
- </g>
938
- <g font-family="Inter, sans-serif" font-size="9.5" fill="#000">
939
- <text x="56" y="38">£321k after capex</text>
940
- <text x="332" y="132" font-size="8.5">low £34k · M11 (Round 2 closes M10)</text>
941
- <text x="450" y="110">£36k · M12</text>
942
- </g>
943
-
944
- <!-- ── PANEL 2: monthly MRR (bars) and burn (dashed) y 170–290 (span 120). Scale £0–£60k. -->
945
- <line x1="48" y1="170" x2="48" y2="290" stroke="#000" stroke-width="0.8" />
946
- <line x1="48" y1="290" x2="500" y2="290" stroke="#000" stroke-width="0.8" />
947
- <g font-family="Inter, sans-serif" font-size="8.5" fill="#666" text-anchor="end">
948
- <text x="44" y="293">£0</text>
949
- <text x="44" y="233">£30k</text>
950
- <text x="44" y="173">£60k</text>
951
- </g>
952
- <g fill="#000">
953
- <rect x="81" y="278" width="10" height="12" />
954
- <rect x="118" y="276" width="10" height="14" />
955
- <rect x="156" y="272" width="10" height="18" />
956
- <rect x="194" y="264" width="10" height="26" />
957
- <rect x="231" y="254" width="10" height="36" />
958
- <rect x="269" y="242" width="10" height="48" />
959
- <rect x="307" y="228" width="10" height="62" />
960
- <rect x="344" y="214" width="10" height="76" />
961
- <rect x="382" y="202" width="10" height="88" />
962
- <rect x="420" y="190" width="10" height="100" />
963
- <rect x="457" y="178" width="10" height="112" />
964
- <rect x="495" y="170" width="10" height="120" />
965
- </g>
966
- <line x1="48" y1="194" x2="124" y2="194" stroke="#000" stroke-width="1.5" stroke-dasharray="5 3" />
967
- <line x1="124" y1="194" x2="124" y2="184" stroke="#000" stroke-width="1" stroke-dasharray="2 2" />
968
- <line x1="124" y1="184" x2="424" y2="184" stroke="#000" stroke-width="1.5" stroke-dasharray="5 3" />
969
- <line x1="424" y1="184" x2="424" y2="174" stroke="#000" stroke-width="1" stroke-dasharray="2 2" />
970
- <line x1="424" y1="174" x2="500" y2="174" stroke="#000" stroke-width="1.5" stroke-dasharray="5 3" />
971
- <text x="56" y="190" font-family="Inter, sans-serif" font-size="9.5" font-weight="600" fill="#000">BURN £48k</text>
972
- <text x="120" y="180" font-family="Inter, sans-serif" font-size="9.5" font-weight="600" fill="#000">£53k (i)</text>
973
- <text x="420" y="170" font-family="Inter, sans-serif" font-size="9.5" font-weight="600" fill="#000">£58k (ii)</text>
974
- <line x1="495" y1="170" x2="495" y2="290" stroke="#999" stroke-width="0.6" stroke-dasharray="2 3" />
975
- <text x="520" y="150" font-family="Inter, sans-serif" font-size="8.5" fill="#666" text-anchor="end">Break-even · M12</text>
976
- <g font-family="Inter, sans-serif" font-size="9" fill="#666" text-anchor="middle">
977
- <text x="48" y="306">M0</text>
978
- <text x="161" y="306">M3</text>
979
- <text x="274" y="306">M6</text>
980
- <text x="387" y="306">M9</text>
981
- <text x="500" y="306">M12</text>
982
- </g>
983
- </svg>
984
- <div class="chart-caption">
985
- <svg width="22" height="6" viewBox="0 0 22 6"
986
- style="display:inline-block;vertical-align:middle;margin-right:4px">
987
- <line x1="0" y1="3" x2="22" y2="3" stroke="#000" stroke-width="1.6" />
988
- </svg>Cash balance
989
- &middot;
990
- <svg width="8" height="10" viewBox="0 0 8 10"
991
- style="display:inline-block;vertical-align:middle;margin:0 4px">
992
- <rect x="1" y="2" width="6" height="8" fill="#000" />
993
- </svg>Monthly revenue
994
- &middot;
995
- <svg width="22" height="6" viewBox="0 0 22 6"
996
- style="display:inline-block;vertical-align:middle;margin:0 4px">
997
- <line x1="0" y1="3" x2="22" y2="3" stroke="#000" stroke-width="1.2" stroke-dasharray="4 3" />
998
- </svg>Monthly costs
999
- </div>
1000
- </div>
1001
- </div>
1002
-
1003
- <aside class="info-card">
1004
- <span class="tag">Equity
1005
- Capital Raise
1006
- </span>
1007
- <div class="title">{{ ROUND_SIZE }}</div>
1008
- <div class="subtitle">Priced equity in a new UK Ltd. 20% post-money. Single tranche. Minimum cheque {{ MIN_CHEQUE }}; we
1009
- will not proceed unless we raise at least {{ MIN_AGGREGATE }} in aggregate.</div>
1010
-
1011
- <table>
1012
- <tr>
1013
- <th>Instrument</th>
1014
- <td>Priced equity</td>
1015
- </tr>
1016
- <tr>
1017
- <th>Post-money cap</th>
1018
- <td>{{ POST_MONEY_CAP }}</td>
1019
- </tr>
1020
- <tr>
1021
- <th>Founders retained</th>
1022
- <td>80%</td>
1023
- </tr>
1024
- <tr>
1025
- <th>Minimum cheque</th>
1026
- <td>{{ MIN_CHEQUE }}</td>
1027
- </tr>
1028
- <tr>
1029
- <th>Round closes</th>
1030
- <td>{{ ROUND_CLOSE_DATE }}</td>
1031
- </tr>
1032
- <tr>
1033
- <th>Funds expected</th>
1034
- <td>{{ FUNDS_EXPECTED_DATE }}</td>
1035
- </tr>
1036
- <tr>
1037
- <th>SEIS/EIS</th>
1038
- <td>Post-funding pursuit</td>
1039
- </tr>
1040
- </table>
1041
-
1042
- <p class="note">After we close, we will apply to HMRC for SEIS/EIS advance assurance. That is a post-funding
1043
- commitment, not a condition of this round. No eligibility work has been done. This round is not contingent on
1044
- SEIS/EIS eligibility.</p>
1045
- <p class="note screen-only" style="margin-top: 10px;">→ <a href="{{ TERM_SHEET_HTML }}" style="border-bottom: 1px solid var(--ink); color: var(--ink); font-style: normal;">Open the term sheet</a> — principal financing terms and the FCA self-certification forms.</p>
1046
- </aside>
1047
- </div>
1048
-
1049
- <div class="page-num">Page 1 / 7</div>
1050
- </section>
1051
-
1052
- <div class="page-break"></div>
1053
-
1054
- <!-- ─────────────── PAGE 2 — Executive summary + Architecture intro ─────────────── -->
1055
- <section class="page">
1056
-
1057
- <div class="topbar repeat">
1058
- <span class="brand"><img class="mark" src="{{ BRAND_ICON }}" alt="{{ BRAND_NAME }}"> {{ BRAND_NAME }}</span>
1059
- <span class="meta">Prospectus &middot; {{ DOC_MONTH_YEAR }} &middot; Private</span>
1060
- </div>
1061
-
1062
- <!-- Executive summary -->
1063
- <section class="block">
1064
- <h2>Executive summary.</h2>
1065
- <p><strong>The market.</strong> {{ BRAND_NAME }}'s primary target customer is the self-employed UK estate agent. A
1066
- cohort whose
1067
- transaction share has grown 7.5&times; since 2019 (TwentyEA), reached ~2.5% of UK property transactions
1068
- in 2025, and is on track to account for ~10% of the market by 2030 (Worth Recruiting). The wider industry sits
1069
- behind it: 26,374 estate-agency businesses, ~388,000 workforce (ONS / IBISWorld 2026).</p>
1070
- <p><strong>The opportunity.</strong> More and more UK estate agents are leaving agencies to run their own book.
1071
- When
1072
- they do, all the admin that used to be split across an office lands on one person: enquiries, CRM, vendor
1073
- reports, chasing sales through to completion, the regulatory paperwork. The current alternatives are to hire a
1074
- VA, at £500 to £1,500 a month or subscribe to a range of expensive SaaS tools. A new VA
1075
- starts knowing nothing about the agent's business; every client quirk, every process, every property has to be
1076
- taught
1077
- from scratch. When the VA leaves, all of it walks out with them. Saas tools have steep learning curves, with
1078
- every new feature loading as much burden on the user as benefit, so much of the value, especially in CRMs, is
1079
- untapped.</p>
1080
- <p><strong>{{ BRAND_NAME }} value proposition.</strong> {{ BRAND_NAME }} starts at £500 a month for a solo operator. It
1081
- learns the agent's business once and keeps everything organised. No handover, no slow first month, no knowledge
1082
- walking out of
1083
- the door. It is also on the agent's side by design: every minute of admin it takes off their plate is a minute
1084
- they spend
1085
- in front of a customer, a vendor or a buyer in the chain. The data stays with them. Customer conversations sit
1086
- between their customers and the model provider (Anthropic); {{ BRAND_NAME }} is not in the middle holding the data.
1087
- That is a much lighter compliance footprint than competitors who pass throiugh the AI costs and keep the agent's
1088
- data on their servers. <em>For information:</em> the model itself is Anthropic's Claude, paid for on the
1089
- customer's own
1090
- subscription. That is a build choice, not what makes {{ BRAND_NAME }} different &mdash; any competitor could pick the
1091
- same model.</p>
1092
- </section>
1093
-
1094
- <!-- Architecture (intro + subagent fleets) flows on the same A4 page -->
1095
- <section class="block">
1096
- <h2>Architecture &amp; differentiation.</h2>
1097
- <p><strong>The architecture &mdash; every role you play. Amplified.</strong> {{ BRAND_NAME }} is built around one
1098
- <strong>AI Operations Manager</strong> &mdash; the chief of staff &mdash; that orchestrates the business: runs
1099
- the workflows, manages the schedule, prepares the briefings, generates the documents. Underneath it sit two
1100
- fleets of role-specific subagents (see <a href="{{ PRODUCT_URL }}">{{ PRODUCT_URL_LABEL }}</a> for the
1101
- live articulation):
1102
- </p>
1103
- <ul>
1104
- <li><strong>Admin specialist subagents</strong> (private, ring-fenced &mdash; one per role the human estate
1105
- agent
1106
- plays in their day): <em>Negotiator</em> logs call notes from a voice message with no CRM typing;
1107
- <em>Chain Progressor</em> monitors every open transaction and flags when a milestone is overdue;
1108
- <em>Valuer</em> assembles pre-built valuation packs, ranked call lists and automated vendor reports;
1109
- <em>Branch Manager</em> delivers morning pipeline briefings, automated progression tracking, team activity
1110
- digests; <em>Prospector</em> runs ranked call lists, farming letters, market triggers and database follow-up
1111
- sequences; <em>Compliance</em> handles legislation, listing audit, AML and citations (internal only).
1112
- </li>
1113
- <li><strong>Public specialist subagents</strong> (customer-facing): <em>Buyer Enquiry Agent</em> onboards new
1114
- buyers through natural conversation &mdash; not inconvenient forms &mdash; 24/7; <em>Viewing Booking
1115
- Agent</em>
1116
- schedules, sends confirmations, groups viewings for efficiency; <em>Sales Progression Agent</em> (one per
1117
- transaction, gated to buyer, seller and solicitors, knows the full chain); <em>Vendor Update Agent</em> (gated
1118
- to a specific vendor, real-time status on their property); and the on-platform <em>{{ BRAND_NAME }} Sales</em> agent
1119
- that qualifies leads for {{ BRAND_NAME }} itself 24/7.</li>
1120
- </ul>
1121
- </section>
1122
-
1123
- <div class="page-num">Page 2 / 7</div>
1124
- </section>
1125
-
1126
- <div class="page-break"></div>
1127
-
1128
- <!-- ─────────────── PAGE 3 — Architecture cont. ─────────────── -->
1129
- <section class="page">
1130
-
1131
- <div class="topbar repeat">
1132
- <span class="brand"><img class="mark" src="{{ BRAND_ICON }}" alt="{{ BRAND_NAME }}"> {{ BRAND_NAME }}</span>
1133
- <span class="meta">Prospectus &middot; {{ DOC_MONTH_YEAR }} &middot; Private</span>
1134
- </div>
1135
-
1136
- <section class="block">
1137
- <h2>Architecture &amp; differentiation (cont.).</h2>
1138
- <p>Every subagent is briefed, scoped and access-controlled like a junior member of staff &mdash; given one clear
1139
- job, one identity, and the data needed to do it, nothing more. The agent <em>delegates</em> rather than
1140
- operates;
1141
- the subagents carry the load; the agent's time and judgement go to the relationships that win instructions and
1142
- close transactions. This is the architectural reason an estate agent can hit the ground running on day one:
1143
- nothing needs to be learned beyond the chat &mdash; the platform is run the same way the agent already runs a
1144
- team of people. {{ BRAND_NAME }} handles the admin that fills the gaps between, and gives the agent back the work
1145
- that only they can do, in every role they play. <strong>The public agents are the interface. Not the
1146
- product.</strong></p>
1147
- <p><strong>What we do that nobody else does.</strong> Most software, and most AI tools, work the same way: they
1148
- pull the customer's data onto the supplier's server, then make the customer learn a dashboard to get any value
1149
- out of it. {{ BRAND_NAME }} does the opposite. The data stays with the agent. The AI does the work that frees the
1150
- agent up, instead of sitting between the agent and their own customer. The whole platform runs through a natural
1151
- language chat interface,
1152
- not a dashboard. The chat can be text or voice driven, according to the working pattern of the user. The real
1153
- defence, however, is the structure
1154
- underneath, where the human is in the middle and not the platform. That is also why 60% of agents using current
1155
- AI tools say they don't really understand them &mdash; those tools are still built the old way, not intuitively.
1156
- </p>
1157
- <p><strong>Cross-CRM AI &mdash; the structural differentiator.</strong> Every CRM in UK estate agency is now
1158
- bolting AI onto its own product &mdash; AI features that only work inside that one CRM, with that one vendor's
1159
- roadmap, locking the customer in. {{ BRAND_NAME }} is built the opposite way: it integrates every CRM through its open
1160
- API, so the agent keeps their CRM choice and {{ BRAND_NAME }} makes whichever one they use materially more powerful.
1161
- Every agent on every CRM is therefore addressable. This is the structural funnel driver as the AI-in-CRM trend
1162
- accelerates.</p>
1163
- <p><strong>Wedge &middot; beachhead &middot; blitzscale.</strong> Our entry into the market has already begun with
1164
- a brochure flywheel strategy, designed to hook agents into the utility of the product without having to make a
1165
- firm commitment. We then leverage this to generate early revenue and upsell to pre-val presentations. The
1166
- brochure flywheel and pre-val
1167
- product are
1168
- <em>the wedge</em> &mdash; narrow entry, fast proof, low-friction adoption into the agent's day. The Loop
1169
- integration into eXp UK (3,000+ agents on a mandated CRM) is <em>the beachhead</em> &mdash; one decisively
1170
- winnable segment chosen to gather repeatable wins. The Round 2 raise at month 9 (£500k&ndash;£1m on hit
1171
- milestones) funds <em>the blitzscale</em>: integrate every property CRM in the UK, market into the whole UK
1172
- estate-agency workforce, and {{ BRAND_NAME }} becomes the operating system for UK estate agency &mdash; not
1173
- aspirationally, concretely. At that point, <strong>an agent cannot compete effectively with an agent who has
1174
- {{ BRAND_NAME }} operating their CRM &mdash; whichever CRM either of them happens to use.</strong> The race is to
1175
- that establishing position.
1176
- </p>
1177
- </section>
1178
-
1179
- <div class="page-num">Page 3 / 7</div>
1180
- </section>
1181
-
1182
- <div class="page-break"></div>
1183
-
1184
- <!-- ─────────────── PAGE 3 — How we get customers ─────────────── -->
1185
- <section class="page">
1186
-
1187
- <div class="topbar repeat">
1188
- <span class="brand"><img class="mark" src="{{ BRAND_ICON }}" alt="{{ BRAND_NAME }}"> {{ BRAND_NAME }}</span>
1189
- <span class="meta">Prospectus &middot; {{ DOC_MONTH_YEAR }} &middot; Private</span>
1190
- </div>
1191
-
1192
- <!-- Body block 2: Funnel -->
1193
- <section class="block">
1194
- <h2>Business development.</h2>
1195
- <p>{{ BRAND_NAME }} acquires customers by producing the artefacts agents already need, at a fraction of the time and
1196
- cost
1197
- the agent would otherwise spend, and at better quality too. This is the revolutionary outcome that only AI can
1198
- achieve in the right hands. Each artefact demonstrates the platform's capability and earns revenue in its
1199
- own right, before the agent commits to their own subscription. There are two such products today and a third
1200
- strategic channel that opens at scale.</p>
1201
- <ul>
1202
- <li><strong>The brochure flywheel (live).</strong> A property brochure is the standard sales document an estate
1203
- agent prepares for every listing &mdash; photography, floorplan, room descriptions, EPC, location narrative.
1204
- Producing one well, in regulatory compliance, takes hours. {{ BRAND_NAME }} produces a brochure from the listing URL
1205
- and a short brief in
1206
- minutes, and only a few seconds of the operator's time. A free LinkedIn campaign has delivered five brochures
1207
- to date. The brochures themselves are
1208
- discoverable artefacts &mdash; agents publish them to win the instruction, other agents see them, demand
1209
- compounds. The next step is to convert delivery into a low-cost monthly service or pay-per-brochure, with
1210
- gross margin near 100%.</li>
1211
- <li><strong>The pre-valuation product (next).</strong> A pre-val presentation is the higher-value private
1212
- document an agent walks into a homeowner's kitchen with to win a listing instruction: comparable sales,
1213
- marketing plan, recommended price, the agent's pitch. It is high-stakes, time-consuming and currently done by
1214
- hand. Same architecture as the brochure flywheel, much higher willingness-to-pay. Because the data is
1215
- sovereign, this is what will drive {{ BRAND_NAME }} conversion from the service-based brochure production.</li>
1216
- <li><strong>The Loop CRM integration &mdash; the first of many (Q3 2026).</strong> Loop is the only CRM
1217
- integration today and it is the right place to start: Loop is the CRM every eXp UK agent has to use &mdash;
1218
- 3,000+ agents &mdash; and is releasing an open API to which we have early access. {{ BRAND_NAME }} already
1219
- integrates
1220
- natively with email, Outlook, WhatsApp and Telegram, so agents and their customers communicate on the channel
1221
- they already use. CRM vendors are racing to bolt AI onto their own products, locked to their stack. {{ BRAND_NAME }}
1222
- does the opposite: AI that will work with whichever CRM the agent already uses (Reapit, Alto, Street,
1223
- GoHighLevel and any other open-API CRM under Round 2). The whole UK estate-agency CRM base becomes
1224
- addressable,
1225
- not just one vendor's.</li>
1226
- </ul>
1227
- </section>
1228
-
1229
- <div class="page-num">Page 4 / 7</div>
1230
-
1231
- </section>
1232
-
1233
- <div class="page-break"></div>
1234
-
1235
- <!-- ─────────────── PAGE 2 ─────────────── -->
1236
- <section class="page">
1237
-
1238
- <div class="topbar repeat">
1239
- <span class="brand"><img class="mark" src="{{ BRAND_ICON }}" alt="{{ BRAND_NAME }}"> {{ BRAND_NAME }}</span>
1240
- <span class="meta">Prospectus &middot; {{ DOC_MONTH_YEAR }} &middot; Private</span>
1241
- </div>
1242
-
1243
- <div class="section-rule">
1244
- <h2>The {{ BRAND_NAME }} platform</h2>
1245
- <span class="nav">Asset transferred at closing</span>
1246
- </div>
1247
-
1248
- <section class="block asset-block">
1249
- <p>{{ BRAND_NAME }} is not a slide-ware concept. The platform is in production today, built over months of senior
1250
- engineering by Joel Smalley before incorporation. <strong>At closing it transfers outright to {{ BRAND_NAME }}
1251
- Systems Ltd</strong> &mdash; with no licence-back, no royalty, and no encumbrance. The {{ ROUND_SIZE }} raise funds
1252
- go-to-market and
1253
- product hardening, not greenfield engineering. The difficult architectural choices have already been made and
1254
- the core components are already working in production.</p>
1255
- <div class="asset-grid">
1256
- <div class="asset-col">
1257
- <div class="asset-head">Working today</div>
1258
- <ul>
1259
- <li><strong>Admin agent.</strong> One conversation runs the whole business &mdash; briefings, CRM updates,
1260
- document generation, follow-ups, scheduling.</li>
1261
- <li><strong>Unlimited specialist public agents.</strong> Lead qualifiers, vendor-update agents, viewing
1262
- bookers, sales-progression chasers &mdash; each with its own identity, knowledge, and access control.</li>
1263
- <li><strong>Workflow orchestration.</strong> Continuous, AI-initiated &mdash; the platform monitors business
1264
- state and acts without being asked.</li>
1265
- <li><strong>CRM integration.</strong> Loop is the live CRM integration today; every other open-API CRM
1266
- follows under Round 2.</li>
1267
- <li><strong>Communication channels (live).</strong> Native email, Outlook, WhatsApp and Telegram &mdash;
1268
- agents and their customers reach {{ BRAND_NAME }} on the channel they already use, with no new app to install.
1269
- </li>
1270
- <li><strong>Customer-owned model subscription.</strong> Customers hold their own Claude subscription &mdash;
1271
- zero AI compute on {{ BRAND_NAME }}'s P&amp;L, customer data stays with the customer.</li>
1272
-
1273
- </ul>
1274
- </div>
1275
- <div class="asset-col">
1276
- <div class="asset-head">Implications for this round</div>
1277
- <ul>
1278
- <li><strong>The hard engineering risk is mitigated.</strong> The architecture, agent orchestration, and the
1279
- admin/public split are designed and shipped.</li>
1280
- <li><strong>£350k goes to commercial work, not R&amp;D.</strong> Hardening, the Loop API integration,
1281
- marketing, training, legal &mdash; not greenfield build.</li>
1282
- <li><strong>Replacement cost exceeds the raise.</strong> Building this from a blank canvas at UK
1283
- senior-engineering rates would cost more than {{ ROUND_SIZE }} and take 9&ndash;12 months.</li>
1284
- <li><strong>Time-to-revenue is short.</strong> Two pilots run from week 1 because the platform exists:
1285
- Muvin (Adam &amp; Jamie's agency) and Beacons (Alex's agency). Both are founder-operated &mdash; the
1286
- people promoting {{ BRAND_NAME }} are active users of it.</li>
1287
- </ul>
1288
- </div>
1289
- </div>
1290
- </section>
1291
-
1292
- <div class="page-num">Page 5 / 7</div>
1293
- </section>
1294
-
1295
- <div class="page-break"></div>
1296
-
1297
- <!-- ─────────────── PAGE 3 ─────────────── -->
1298
- <section class="page">
1299
-
1300
- <div class="topbar repeat">
1301
- <span class="brand"><img class="mark" src="{{ BRAND_ICON }}" alt="{{ BRAND_NAME }}"> {{ BRAND_NAME }}</span>
1302
- <span class="meta">Prospectus &middot; {{ DOC_MONTH_YEAR }} &middot; Private</span>
1303
- </div>
1304
-
1305
- <div class="section-rule">
1306
- <h2>The 12-month operating plan.</h2>
1307
- <span class="nav">Driven by model_worksheet.md</span>
1308
- </div>
1309
-
1310
- <div class="traj">
1311
- <div class="visual">
1312
- <!-- MRR by month — exponential ramp to £60k by M12. Three-step burn line. -->
1313
- <svg viewBox="0 0 480 320" xmlns="http://www.w3.org/2000/svg" role="img"
1314
- aria-label="MRR by month with monthly burn line">
1315
- <line x1="40" y1="40" x2="40" y2="280" stroke="#000000" stroke-width="0.8" />
1316
- <line x1="40" y1="280" x2="464" y2="280" stroke="#000000" stroke-width="0.8" />
1317
- <!-- Y ticks: £0, £20k, £40k, £60k. Scale 0→60k mapped 280→40, span 240. -->
1318
- <g font-family="Inter, sans-serif" font-size="9" fill="#666666" text-anchor="end">
1319
- <text x="36" y="283">£0</text>
1320
- <text x="36" y="203">£20k</text>
1321
- <text x="36" y="123">£40k</text>
1322
- <text x="36" y="43">£60k</text>
1323
- </g>
1324
- <!-- X ticks M0-M12 -->
1325
- <g font-family="Inter, sans-serif" font-size="8.5" fill="#666666" text-anchor="middle">
1326
- <text x="40" y="296">M0</text>
1327
- <text x="146" y="296">M3</text>
1328
- <text x="252" y="296">M6</text>
1329
- <text x="358" y="296">M9</text>
1330
- <text x="464" y="296">M12</text>
1331
- </g>
1332
- <!-- MRR bars M1-M12: 6,7,9,13,18,24,31,38,44,50,56,60 (£k). y = 280-(m/60)*240. -->
1333
- <g fill="#000000">
1334
- <rect x="75" y="256" width="22" height="24" /> <!-- M1: 6k -->
1335
- <rect x="110" y="252" width="22" height="28" /> <!-- M2: 7k -->
1336
- <rect x="145" y="244" width="22" height="36" /> <!-- M3: 9k -->
1337
- <rect x="180" y="228" width="22" height="52" /> <!-- M4: 13k -->
1338
- <rect x="215" y="208" width="22" height="72" /> <!-- M5: 18k -->
1339
- <rect x="250" y="184" width="22" height="96" /> <!-- M6: 24k -->
1340
- <rect x="285" y="156" width="22" height="124" /> <!-- M7: 31k -->
1341
- <rect x="320" y="128" width="22" height="152" /> <!-- M8: 38k -->
1342
- <rect x="355" y="104" width="22" height="176" /> <!-- M9: 44k -->
1343
- <rect x="390" y="80" width="22" height="200" /> <!-- M10: 50k -->
1344
- <rect x="425" y="56" width="22" height="224" /> <!-- M11: 56k -->
1345
- <rect x="460" y="40" width="22" height="240" /> <!-- M12: 60k -->
1346
- </g>
1347
- <!-- Three-step burn line: M1–M2 £48k (y=88), M3–M9 £53k (y=68), M10–M12 £58k (y=48). -->
1348
- <line x1="40" y1="88" x2="132" y2="88" stroke="#000000" stroke-width="1.6" stroke-dasharray="5 3" />
1349
- <line x1="132" y1="88" x2="132" y2="68" stroke="#000" stroke-width="1" stroke-dasharray="2 2" />
1350
- <line x1="132" y1="68" x2="412" y2="68" stroke="#000000" stroke-width="1.6" stroke-dasharray="5 3" />
1351
- <line x1="412" y1="68" x2="412" y2="48" stroke="#000" stroke-width="1" stroke-dasharray="2 2" />
1352
- <line x1="412" y1="48" x2="482" y2="48" stroke="#000000" stroke-width="1.6" stroke-dasharray="5 3" />
1353
- <text x="46" y="84" font-family="Inter, sans-serif" font-size="10" font-weight="600" fill="#000">BURN £48k</text>
1354
- <text x="138" y="64" font-family="Inter, sans-serif" font-size="10" font-weight="600" fill="#000">£53k (i)</text>
1355
- <text x="418" y="44" font-family="Inter, sans-serif" font-size="10" font-weight="600" fill="#000">£58k (ii)</text>
1356
- <!-- Break-even marker at M12 -->
1357
- <line x1="471" y1="40" x2="471" y2="280" stroke="#999" stroke-width="0.6" stroke-dasharray="2 3" />
1358
- <text x="475" y="30" font-family="Inter, sans-serif" font-size="9" fill="#666" text-anchor="end">Break-even · M12</text>
1359
- </svg>
1360
- <div class="visual-caption">Monthly MRR (bars) vs. monthly burn (dashed line)</div>
1361
- </div>
1362
- <div class="meta">
1363
- <h3>Subscriptions only.</h3>
1364
- <p class="lead">Solo £500 a month, Office £2,000 a month from month four, Annual £6,000 a year. A free tier
1365
- capped at 50 stays in place for early evangelists and KOLs. £60k closing MRR is the M12 target: <strong>100
1366
- Solo + 5 Office customer relationships, 105 Pi devices to support.</strong></p>
1367
- <div class="grid">
1368
- <div class="row"><span class="k">Cash at incorporation</span><span class="v">£5,000</span></div>
1369
- <div class="row"><span class="k">Cash after raise</span><span class="v">£355,000</span></div>
1370
- <div class="row"><span class="k">Capex at M0</span><span class="v">£34,000</span></div>
1371
- <div class="row"><span class="k">Cash after capex</span><span class="v">£321,000</span></div>
1372
- <div class="row"><span class="k">Burn (M1–M2 / M3–M9 / M10+)</span><span class="v">£48k / £53k / £58k</span>
1373
- </div>
1374
- <div class="row"><span class="k">MRR · Month 6</span><span class="v">£24,000</span></div>
1375
- <div class="row"><span class="k">MRR · Month 12</span><span class="v">£60,000</span></div>
1376
- <div class="row"><span class="k">Customers · M12 (Solo / Office)</span><span class="v">100 / 5</span></div>
1377
- <div class="row"><span class="k">Break-even month</span><span class="v">M12</span></div>
1378
- <div class="row"><span class="k">Cash · Month 12</span><span class="v">£36,000</span></div>
1379
- </div>
1380
- </div>
1381
- </div>
1382
-
1383
- <section class="block">
1384
- <h2>Beyond Year 1.</h2>
1385
- <div class="horizon-wrap">
1386
- <table class="horizon">
1387
- <thead>
1388
- <tr>
1389
- <th class="l">Horizon</th>
1390
- <th class="l">Funding state</th>
1391
- <th>Paying agents</th>
1392
- <th>ARR target</th>
1393
- <th class="l">What it means</th>
1394
- </tr>
1395
- </thead>
1396
- <tbody>
1397
- <tr>
1398
- <td class="l">Y1 close (M12)</td>
1399
- <td class="l">Round 1 deployed</td>
1400
- <td>105 (100 Solo + 5 Office)</td>
1401
- <td>£0.72m (£60k MRR)</td>
1402
- <td class="l">Loop integration proven; Muvin (Adam &amp; Jamie) and Beacons (Alex) both running as
1403
- founder-operated pilots; 100+ production systems live across the customer base.</td>
1404
- </tr>
1405
- <tr>
1406
- <td class="l">Y2 close (M24)</td>
1407
- <td class="l">Round 2 (M9, £1m) deployed</td>
1408
- <td>~500</td>
1409
- <td>£3m</td>
1410
- <td class="l">Every UK property CRM integrated; marketing into the full UK estate-agency workforce; senior
1411
- hires added on top of the Y1 junior engineer (senior platform engineer, head of customer success, head of
1412
- growth); {{ BRAND_NAME }} established as the operating layer.</td>
1413
- </tr>
1414
- <tr>
1415
- <td class="l">Y3 (M25+)</td>
1416
- <td class="l">Internationalisation round</td>
1417
- <td>&mdash;</td>
1418
- <td>&mdash;</td>
1419
- <td class="l">International expansion. Primary candidate: North America. Same conversational architecture;
1420
- different CRM landscape; the playbook is replicable.</td>
1421
- </tr>
1422
- </tbody>
1423
- </table>
1424
- </div>
1425
- </section>
1426
-
1427
- <div class="page-num">Page 6 / 7</div>
1428
- </section>
1429
-
1430
- <div class="page-break"></div>
1431
-
1432
- <!-- ─────────────── PAGE 4 ─────────────── -->
1433
- <section class="page">
1434
-
1435
- <div class="topbar repeat">
1436
- <span class="brand"><img class="mark" src="{{ BRAND_ICON }}" alt="{{ BRAND_NAME }}"> {{ BRAND_NAME }}</span>
1437
- <span class="meta">Prospectus &middot; {{ DOC_MONTH_YEAR }} &middot; Private</span>
1438
- </div>
1439
-
1440
- <div class="tables-row">
1441
- <div class="data-table">
1442
- <h3>Use of funds.</h3>
1443
- <table>
1444
- <thead>
1445
- <tr>
1446
- <th class="l">Bucket</th>
1447
- <th>%</th>
1448
- <th>£</th>
1449
- </tr>
1450
- </thead>
1451
- <tbody>
1452
- <tr>
1453
- <td class="l">Product &amp; engineering</td>
1454
- <td>40%</td>
1455
- <td>£140,000</td>
1456
- </tr>
1457
- <tr>
1458
- <td class="l">Business development &amp; GTM (events, training delivery, travel)</td>
1459
- <td>30%</td>
1460
- <td>£105,000</td>
1461
- </tr>
1462
- <tr>
1463
- <td class="l">Infrastructure &amp; operations (hosting, compute, Pi inventory)</td>
1464
- <td>15%</td>
1465
- <td>£52,500</td>
1466
- </tr>
1467
- <tr>
1468
- <td class="l">Working capital, legal &amp; compliance (corporate, data, AI regs, SEIS/EIS)</td>
1469
- <td>15%</td>
1470
- <td>£52,500</td>
1471
- </tr>
1472
- <tr class="total">
1473
- <td class="l">Total raise</td>
1474
- <td>100%</td>
1475
- <td>{{ ROUND_SIZE }}</td>
1476
- </tr>
1477
- </tbody>
1478
- </table>
1479
- </div>
1480
- <div class="data-table">
1481
- <h3>Founders &middot; post-dilution.</h3>
1482
- <table>
1483
- <thead>
1484
- <tr>
1485
- <th class="l">Founder</th>
1486
- <th>Role</th>
1487
- <th>%</th>
1488
- </tr>
1489
- </thead>
1490
- <tbody>
1491
- <tr>
1492
- <td class="l">Joel Smalley</td>
1493
- <td>Product, CTO</td>
1494
- <td>24.95%</td>
1495
- </tr>
1496
- <tr>
1497
- <td class="l">Adam Mackay</td>
1498
- <td>BD, CEO &middot; Muvin</td>
1499
- <td>24.95%</td>
1500
- </tr>
1501
- <tr>
1502
- <td class="l">Alex Pelosi-Buchanan</td>
1503
- <td>Distribution</td>
1504
- <td>16.00%</td>
1505
- </tr>
1506
- <tr>
1507
- <td class="l">Jamie Fisher</td>
1508
- <td>Pilot &middot; Muvin</td>
1509
- <td>7.10%</td>
1510
- </tr>
1511
- <tr>
1512
- <td class="l">Roger Black / Steve Backley</td>
1513
- <td>BackelyBlack Distribution</td>
1514
- <td>7.00%</td>
1515
- </tr>
1516
- <tr class="total">
1517
- <td class="l">Founders</td>
1518
- <td>&mdash;</td>
1519
- <td>{{ FOUNDERS_PCT }}</td>
1520
- </tr>
1521
- <tr>
1522
- <td class="l">New investors (this round)</td>
1523
- <td>&mdash;</td>
1524
- <td>{{ NEW_INVESTOR_PCT }}</td>
1525
- </tr>
1526
- </tbody>
1527
- </table>
1528
- </div>
1529
- </div>
1530
-
1531
- <section class="block">
1532
- <h2>The team.</h2>
1533
- <p class="no-dropcap"><strong>Joel Smalley</strong> runs product and engineering. He built the underlying architecture of the
1534
- platform from the ground up and assigns the {{ BRAND_NAME }} version to {{ COMPANY_LEGAL_NAME }} at incorporation, with
1535
- full, exclusive rights. Joel also runs <em>The Maxy
1536
- Institute</em>, where he teaches professionals &mdash; solicitors, accountants, architects, recruiters, estate
1537
- agents, etc. &mdash; how to use
1538
- AI effectively in their day-to-day work.</p>
1539
- <p><strong>Adam Mackay</strong> runs sales and business development. He is a working estate agent and co-founder
1540
- of <em>Muvin</em> with Jamie Fisher. Adam, Jamie, Alex Pelosi-Buchanan, Roger Black and Steve Backley work
1541
- together informally as <em>Real Agency</em>, an estate agency network, offering elite coaching and access to
1542
- network products, like {{ BRAND_NAME }}.</p>
1543
- <p><strong>Two founder-operated pilots run concurrently from week 1: Muvin and Beacons.</strong>
1544
- <em>Muvin</em> (Adam &amp; Jamie Fisher) is the first agency on the platform. <em>Beacons</em> (Alex
1545
- Pelosi-Buchanan's own agency) is the second, running in parallel. Both are real, paying estate-agency businesses
1546
- operated by {{ BRAND_NAME }} founders &mdash; demonstrating that the people promoting the product are active users
1547
- of it. They generate the first case studies; they are not the funnel itself.
1548
- </p>
1549
- </section>
1550
-
1551
- <section class="block">
1552
- <h2>Headcount cover.</h2>
1553
- <p>The plan above is Joel and Adam only at start. Two founders can comfortably serve 10 paying users. Past that,
1554
- a product engineer (i) joins around month 3 (forward deployment, support, training, dev support); a customer success
1555
- hire (ii) joins around month 10, coinciding with Round 2 close. Each hire fires when the paying-user count justifies
1556
- it.</p>
1557
- </section>
1558
-
1559
- <div class="page-num">Page 7 / 7</div>
1560
-
1561
- </section>
1562
-
1563
- </body>
1564
-
1565
- </html>