@rubytech/create-maxy-code 0.1.169 → 0.1.170
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/payload/platform/plugins/.claude-plugin/marketplace.json +0 -15
- package/payload/platform/plugins/docs/references/platform.md +1 -1
- package/payload/server/{chunk-3TRIXQSJ.js → chunk-L2YK2VK3.js} +17 -29
- package/payload/server/maxy-edge.js +1 -1
- package/payload/server/server.js +1 -1
- 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/venture-studio/.claude-plugin/plugin.json +0 -8
- package/payload/platform/plugins/venture-studio/PLUGIN.md +0 -119
- package/payload/platform/plugins/venture-studio/bin/scaffold.sh +0 -116
- package/payload/platform/plugins/venture-studio/skills/brand-pack/SKILL.md +0 -256
- package/payload/platform/plugins/venture-studio/skills/brand-pack/references/color-psychology.md +0 -118
- package/payload/platform/plugins/venture-studio/skills/investor-data-room/SKILL.md +0 -376
- package/payload/platform/plugins/venture-studio/skills/investor-data-room/references/business-plan-template.md +0 -64
- package/payload/platform/plugins/venture-studio/skills/investor-data-room/references/compliance-research-checklist.md +0 -53
- package/payload/platform/plugins/venture-studio/skills/investor-data-room/references/data-room-structure.md +0 -88
- package/payload/platform/plugins/venture-studio/skills/investor-data-room/references/deck-blueprint-template.md +0 -39
- package/payload/platform/plugins/venture-studio/skills/investor-data-room/references/design-tokens-application.md +0 -79
- package/payload/platform/plugins/venture-studio/skills/investor-data-room/references/html-pdf-pipeline.md +0 -236
- package/payload/platform/plugins/venture-studio/skills/investor-data-room/references/internal-workings-scrub.md +0 -33
- package/payload/platform/plugins/venture-studio/skills/investor-data-room/references/termsheet-template.md +0 -88
- package/payload/platform/plugins/venture-studio/skills/investor-data-room/templates/prospectus/index.html +0 -1565
- package/payload/platform/plugins/venture-studio/skills/investor-data-room/templates/prospectus/render-pdf.mjs +0 -91
- package/payload/platform/plugins/venture-studio/skills/investor-data-room/templates/prospectus/term_sheet.html +0 -715
- package/payload/platform/plugins/venture-studio/skills/office-hours/SKILL.md +0 -587
- package/payload/platform/plugins/venture-studio/skills/prototype-host/SKILL.md +0 -179
- package/payload/platform/plugins/venture-studio/skills/prototype-host/references/cloudflared-ingress-edit.md +0 -81
- package/payload/platform/plugins/venture-studio/skills/prototype-host/references/scaffold-frameworks.md +0 -60
- package/payload/platform/plugins/venture-studio/skills/prototype-host/references/systemd-user-service.md +0 -104
- package/payload/platform/plugins/venture-studio/skills/zero-to-prototype/SKILL.md +0 -336
- package/payload/platform/plugins/venture-studio/skills/zero-to-prototype/references/aarrr-metrics.md +0 -275
- package/payload/platform/plugins/venture-studio/skills/zero-to-prototype/references/assumption-testing.md +0 -93
- package/payload/platform/plugins/venture-studio/skills/zero-to-prototype/references/boolean-search.md +0 -308
- package/payload/platform/plugins/venture-studio/skills/zero-to-prototype/references/build-measure-learn.md +0 -262
- package/payload/platform/plugins/venture-studio/skills/zero-to-prototype/references/business-model-canvas.md +0 -171
- package/payload/platform/plugins/venture-studio/skills/zero-to-prototype/references/commitment-signals.md +0 -246
- package/payload/platform/plugins/venture-studio/skills/zero-to-prototype/references/design-thinking.md +0 -183
- package/payload/platform/plugins/venture-studio/skills/zero-to-prototype/references/earlyvangelist.md +0 -190
- package/payload/platform/plugins/venture-studio/skills/zero-to-prototype/references/first-principles.md +0 -58
- package/payload/platform/plugins/venture-studio/skills/zero-to-prototype/references/fishbone.md +0 -114
- package/payload/platform/plugins/venture-studio/skills/zero-to-prototype/references/five-whys.md +0 -43
- package/payload/platform/plugins/venture-studio/skills/zero-to-prototype/references/ice-scoring.md +0 -237
- package/payload/platform/plugins/venture-studio/skills/zero-to-prototype/references/innovation-accounting.md +0 -290
- package/payload/platform/plugins/venture-studio/skills/zero-to-prototype/references/jtbd.md +0 -105
- package/payload/platform/plugins/venture-studio/skills/zero-to-prototype/references/landing-page.md +0 -361
- package/payload/platform/plugins/venture-studio/skills/zero-to-prototype/references/market-type.md +0 -167
- package/payload/platform/plugins/venture-studio/skills/zero-to-prototype/references/mom-test.md +0 -193
- package/payload/platform/plugins/venture-studio/skills/zero-to-prototype/references/mvp-types.md +0 -200
- package/payload/platform/plugins/venture-studio/skills/zero-to-prototype/references/og-images.md +0 -239
- package/payload/platform/plugins/venture-studio/skills/zero-to-prototype/references/pareto.md +0 -103
- package/payload/platform/plugins/venture-studio/skills/zero-to-prototype/references/persona-development.md +0 -291
- package/payload/platform/plugins/venture-studio/skills/zero-to-prototype/references/pivot-types.md +0 -225
- package/payload/platform/plugins/venture-studio/skills/zero-to-prototype/references/positioning-statement.md +0 -179
- package/payload/platform/plugins/venture-studio/skills/zero-to-prototype/references/prd.md +0 -363
- package/payload/platform/plugins/venture-studio/skills/zero-to-prototype/references/pre-mortem.md +0 -74
- package/payload/platform/plugins/venture-studio/skills/zero-to-prototype/references/problem-validation.md +0 -253
- package/payload/platform/plugins/venture-studio/skills/zero-to-prototype/references/product-market-fit.md +0 -256
- package/payload/platform/plugins/venture-studio/skills/zero-to-prototype/references/research-synthesis.md +0 -276
- package/payload/platform/plugins/venture-studio/skills/zero-to-prototype/references/three-engines-of-growth.md +0 -248
- package/payload/platform/plugins/venture-studio/skills/zero-to-prototype/references/validation-tests.md +0 -89
- package/payload/platform/plugins/venture-studio/skills/zero-to-prototype/references/value-proposition-canvas.md +0 -121
- package/payload/platform/plugins/venture-studio/skills/zero-to-prototype/references/win-loss-analysis.md +0 -242
- package/payload/platform/plugins/venture-studio/skills/zero-to-prototype/references/workflow-mapping.md +0 -271
- package/payload/platform/plugins/writer-craft/.claude-plugin/plugin.json +0 -17
- package/payload/platform/plugins/writer-craft/PLUGIN.md +0 -130
- package/payload/platform/plugins/writer-craft/agents/writer-craft--manuscript-reviewer.md +0 -96
- package/payload/platform/plugins/writer-craft/mcp/package.json +0 -19
- package/payload/platform/plugins/writer-craft/mcp/scripts/smoke.mjs +0 -152
- package/payload/platform/plugins/writer-craft/mcp/src/index.ts +0 -289
- package/payload/platform/plugins/writer-craft/mcp/src/lib/neo4j.ts +0 -56
- package/payload/platform/plugins/writer-craft/mcp/src/lib/voice-corpus.ts +0 -54
- package/payload/platform/plugins/writer-craft/mcp/src/tools/voice-distil-profile.ts +0 -303
- package/payload/platform/plugins/writer-craft/mcp/src/tools/voice-record-feedback.ts +0 -114
- package/payload/platform/plugins/writer-craft/mcp/src/tools/voice-retrieve-conditioning.ts +0 -145
- package/payload/platform/plugins/writer-craft/mcp/src/tools/voice-tag-content.ts +0 -117
- package/payload/platform/plugins/writer-craft/mcp/tsconfig.json +0 -8
- 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/payload/platform/plugins/writer-craft/skills/voice-mirror/SKILL.md +0 -166
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
# Deck blueprint template — 13 slides
|
|
2
|
-
|
|
3
|
-
Each slide is specified by Purpose, Headline (one-line message), Body (bullets + figures pulled from the business plan), Visual suggestion, and Source reference. The deck is the presentation surface; the business plan is the source of truth.
|
|
4
|
-
|
|
5
|
-
## 13-slide layout
|
|
6
|
-
|
|
7
|
-
| # | Slide | What it lands |
|
|
8
|
-
|---|---|---|
|
|
9
|
-
| 1 | Cover | Company name, raise headline, three foregrounded founders, Companies House identifier. |
|
|
10
|
-
| 2 | Vision | Vision / Mission / Doctrine triad. |
|
|
11
|
-
| 3 | The Market | TAM with citation, structural tailwind (margin-squeeze / regulatory / equivalent), self-employed or analogous wedge, domestic adjacency, international upside, pricing band, **CAGR with citation**. |
|
|
12
|
-
| 4 | Business Model | Subscription tiers + hardware + service layer + future network-effect revenue + unit economics + compute-no-markup doctrine. |
|
|
13
|
-
| 5 | Go-to-Market | Wedge → Beachhead → Blitzscale framework, demand evidence numbers, named GTM partners, horse-before-cart logic. |
|
|
14
|
-
| 6 | The Product | Substrate description, wedge, upsell path, substrate moat, conversation ingestion, network, asymmetric capture, services layer. |
|
|
15
|
-
| 7 | Competition | Three failing categories + most-direct-competitor counter (CRM-agnostic vs migration-required). |
|
|
16
|
-
| 8 | The Team | Founders + strategic shareholders, with one-line credential per person and shareholding %. |
|
|
17
|
-
| 9 | Economics | Y1 revenue, P&L loss, cash burn, M11 cash low, M12 closing cash, closing ARR, break-even month, **LTV:CAC and burn multiple**. Two-panel chart: MRR ramp with burn overlay + monthly cash balance. |
|
|
18
|
-
| 10 | The Raise | Size, pre-money, post-money, dilution, instrument, use of funds, IP transfer at close, Round 2 size + timing, pre-emption. Pie chart of post-investment cap table. |
|
|
19
|
-
| 11 | Exit | Target exit value, 5–8-year horizon, exit routes (strategic / PE / IPO), 3–5 named acquirers with one-line rationale each. Sourced from `01-narrative/exit-thesis.md`. |
|
|
20
|
-
| 12 | Milestones | M0 to M-final timeline with MRR curve and Round-1 / Round-2 close markers. |
|
|
21
|
-
| 13 | Other Information | Compliance (DMCC + UK ICO + EU AI Act), platform-dependency disclosure with the commercial-practice-insurance answer, contact card (founders + email + web). |
|
|
22
|
-
|
|
23
|
-
## Production notes attached to the blueprint
|
|
24
|
-
|
|
25
|
-
- **Format.** 16:9 landscape, A4-or-equivalent print-safe. PDF deliverable + source deck file (PowerPoint or Keynote, founder preference).
|
|
26
|
-
- **Font and colour.** Apply the project's design tokens (`<project-site>/.docs/design-tokens.md`) — teal-ink + gold-accent + paper-surface + slate-text + champagne rule. Tier 1 raw tokens; reference Tier 2 aliases in component CSS, never raw hex.
|
|
27
|
-
- **Charts.** Build in the same renderer the prospectus uses so figures match the financial model. Source all numbers from `04-financials/model_worksheet.md`.
|
|
28
|
-
- **Logo and hero.** Reuse white-mono icon for dark slides, dark icon for light slides.
|
|
29
|
-
- **Internal commentary.** Zero. Every slide carries the current position as a fact. No "open items", no "pending rebuild", no "reconciliation paths". See `internal-workings-scrub.md`.
|
|
30
|
-
- **Speaker notes.** One paragraph per slide. The founder of the relevant function writes their own (technical founder writes the vision and product notes; commercial founder writes the GTM note; operator founder writes the team note).
|
|
31
|
-
|
|
32
|
-
## Deliverables
|
|
33
|
-
|
|
34
|
-
Once the deck is designed, archive at:
|
|
35
|
-
|
|
36
|
-
- `<data-room>/10-supporting/investor-deck.pptx` (or `.key`)
|
|
37
|
-
- `<data-room>/10-supporting/investor-deck.pdf`
|
|
38
|
-
|
|
39
|
-
The blueprint file (`01-narrative/deck-blueprint.md`) stays as the brief for any future redesign.
|
|
@@ -1,79 +0,0 @@
|
|
|
1
|
-
# Design tokens application
|
|
2
|
-
|
|
3
|
-
How a print-ready HTML artefact consumes the project's design-tokens spec.
|
|
4
|
-
|
|
5
|
-
## Source of truth
|
|
6
|
-
|
|
7
|
-
Project keeps `<project-site>/.docs/design-tokens.md` as the canonical tokens spec. Three tiers:
|
|
8
|
-
|
|
9
|
-
- **Tier 1 — Global tokens.** Raw hex values (e.g. `--teal-900: #0E1418`). Never reference directly from a component.
|
|
10
|
-
- **Tier 2 — Semantic aliases.** Maps Tier 1 to roles (e.g. `--text-primary: var(--teal-900)`).
|
|
11
|
-
- **Tier 3 — Component tokens.** Per-component variables that reference Tier 2 aliases.
|
|
12
|
-
|
|
13
|
-
Components consume Tier 2 or Tier 3, never Tier 1 directly. This isolation lets a token-value update propagate without touching component CSS.
|
|
14
|
-
|
|
15
|
-
## Premium register defaults (the reference project)
|
|
16
|
-
|
|
17
|
-
| Token | Value | Role |
|
|
18
|
-
|---|---|---|
|
|
19
|
-
| `--teal-900` | `#0E1418` | Primary ink |
|
|
20
|
-
| `--teal-950` | `#06080A` | Deepest dark surface |
|
|
21
|
-
| `--teal-700` | `#2A3036` | Secondary ink |
|
|
22
|
-
| `--gold-300` | `#C9B07A` | Champagne flourish |
|
|
23
|
-
| `--gold-500` | `#A4884C` | Antique gold rule |
|
|
24
|
-
| `--gold-700` | `#7A6235` | Bronze accent |
|
|
25
|
-
| `--paper-0` | `#FFFFFF` | Pure white (elevated cards) |
|
|
26
|
-
| `--paper-25` | `#FBFAF6` | Near-white page surface (default) |
|
|
27
|
-
| `--paper-50` | `#F4EFE5` | One step warmer |
|
|
28
|
-
| `--paper-100` | `#ECF1F2` | Cool mist (callout / tinted-band surface) |
|
|
29
|
-
| `--slate-400` | `#8A8E96` | Tertiary text |
|
|
30
|
-
| `--slate-600` | `#5C6470` | Secondary text |
|
|
31
|
-
| `--rule-fine` | `#E2D5BD` | Champagne sand divider |
|
|
32
|
-
|
|
33
|
-
## Tier 2 aliases
|
|
34
|
-
|
|
35
|
-
```css
|
|
36
|
-
--surface-page: var(--paper-25); /* default page background */
|
|
37
|
-
--surface-elevated: var(--paper-0); /* cards, panels */
|
|
38
|
-
--surface-warm: var(--paper-100); /* tinted band; in premium register this is cool mist */
|
|
39
|
-
--surface-deep: var(--teal-950); /* full-bleed dark sections */
|
|
40
|
-
--text-primary: var(--teal-900);
|
|
41
|
-
--text-secondary: var(--slate-600);
|
|
42
|
-
--text-tertiary: var(--slate-400);
|
|
43
|
-
--text-on-deep: var(--paper-25);
|
|
44
|
-
--text-accent: var(--gold-700);
|
|
45
|
-
--text-accent-on-deep: var(--gold-300);
|
|
46
|
-
--border-fine: var(--rule-fine);
|
|
47
|
-
--border-accent: var(--gold-500);
|
|
48
|
-
--font-display: var(--serif); /* Cormorant Garamond */
|
|
49
|
-
--font-editorial: var(--body-serif); /* Lora */
|
|
50
|
-
--font-ui: var(--sans); /* Inter */
|
|
51
|
-
```
|
|
52
|
-
|
|
53
|
-
## Hard rules
|
|
54
|
-
|
|
55
|
-
- **Never hard-code a hex value inside component CSS.** Audit by `grep -E '#[0-9A-Fa-f]{3,6}' <artefact>/index.html` — every match must be inside the `:root` block.
|
|
56
|
-
- **Page background is `--paper-25`, never pure `#FFFFFF`.** Pure white is reserved for elevated cards (`--surface-elevated`).
|
|
57
|
-
- **Gold is reserved for accent, never primary CTA.** Primary action buttons sit on `--teal-900` with `--gold-700` hover.
|
|
58
|
-
- **All-caps eyebrows always use `--font-ui` + letter-spacing ≥ 0.24em.**
|
|
59
|
-
- **Cool mist (`--paper-100 #ECF1F2`) replaced warm cream (`#EFE7D8`) in the premium register.** Tinted bands / callouts read as pale steely blue, not light brown.
|
|
60
|
-
|
|
61
|
-
## When the user says "I don't like this colour"
|
|
62
|
-
|
|
63
|
-
The pattern from the reference project: the user identifies a token whose value is off. The fix is:
|
|
64
|
-
|
|
65
|
-
1. Update the value in `<project-site>/.docs/design-tokens.md` Tier 1 table.
|
|
66
|
-
2. Mirror the value in every consuming artefact's `:root` block (business plan HTML, prospectus HTML, deck HTML).
|
|
67
|
-
3. Re-render PDFs.
|
|
68
|
-
|
|
69
|
-
Keep the token NAMES stable. Updating values is non-breaking; renaming is.
|
|
70
|
-
|
|
71
|
-
## Logo assets
|
|
72
|
-
|
|
73
|
-
Project ships icon variants in `<project-site>/public/<brand>/`:
|
|
74
|
-
|
|
75
|
-
- White-mono variant for dark backgrounds (cover, backpage).
|
|
76
|
-
- Dark variant for light content pages.
|
|
77
|
-
- Colour variant for general use.
|
|
78
|
-
|
|
79
|
-
Copy the needed variants into the artefact directory (e.g. `html/business-plan/logo-light.png`) for relative-path reference inside the HTML.
|
|
@@ -1,236 +0,0 @@
|
|
|
1
|
-
# HTML + PDF render pipeline
|
|
2
|
-
|
|
3
|
-
Image-only A4 portrait PDF, rendered from a single HTML file via Playwright + img2pdf + qpdf. Constraints inlined in the parent `SKILL.md` Stage 5.
|
|
4
|
-
|
|
5
|
-
## File layout per artefact
|
|
6
|
-
|
|
7
|
-
```
|
|
8
|
-
html/<artefact>/
|
|
9
|
-
index.html # source of truth
|
|
10
|
-
render-pdf.mjs # Playwright pipeline
|
|
11
|
-
<artefact>.pdf # rendered output
|
|
12
|
-
logo-light.png # for dark cover/backpage
|
|
13
|
-
logo-dark.png # for light content pages (optional)
|
|
14
|
-
README.md # render + verify commands, page list
|
|
15
|
-
```
|
|
16
|
-
|
|
17
|
-
## HTML scaffold (key blocks)
|
|
18
|
-
|
|
19
|
-
```html
|
|
20
|
-
<!DOCTYPE html>
|
|
21
|
-
<html lang="en-GB">
|
|
22
|
-
<head>
|
|
23
|
-
<meta charset="UTF-8">
|
|
24
|
-
<link href="https://fonts.googleapis.com/css2?family=Cormorant+Garamond:ital,wght@0,400;0,500;0,600;0,700;1,400&family=Inter:wght@400;500;600;700&family=Lora:ital,wght@0,400;0,500;0,600;1,400&display=swap" rel="stylesheet">
|
|
25
|
-
<style>
|
|
26
|
-
/* Tier 1 + Tier 2 design tokens from project's design-tokens.md */
|
|
27
|
-
:root {
|
|
28
|
-
--teal-900: #0E1418;
|
|
29
|
-
--teal-950: #06080A;
|
|
30
|
-
--gold-500: #A4884C;
|
|
31
|
-
--gold-300: #C9B07A;
|
|
32
|
-
--gold-700: #7A6235;
|
|
33
|
-
--paper-0: #FFFFFF;
|
|
34
|
-
--paper-25: #FBFAF6;
|
|
35
|
-
--paper-100: #ECF1F2;
|
|
36
|
-
--slate-400: #8A8E96;
|
|
37
|
-
--slate-600: #5C6470;
|
|
38
|
-
--rule-fine: #E2D5BD;
|
|
39
|
-
--serif: 'Cormorant Garamond', serif;
|
|
40
|
-
--body-serif: 'Lora', Georgia, serif;
|
|
41
|
-
--sans: 'Inter', sans-serif;
|
|
42
|
-
--surface-page: var(--paper-25);
|
|
43
|
-
--surface-deep: var(--teal-950);
|
|
44
|
-
--text-primary: var(--teal-900);
|
|
45
|
-
--text-on-deep: var(--paper-25);
|
|
46
|
-
--text-accent: var(--gold-700);
|
|
47
|
-
--text-accent-on-deep: var(--gold-300);
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
@page { size: A4 portrait; margin: 18mm 16mm 20mm; }
|
|
51
|
-
@page :first { margin: 0; }
|
|
52
|
-
@page backpage-full { margin: 0; }
|
|
53
|
-
|
|
54
|
-
body {
|
|
55
|
-
margin: 0;
|
|
56
|
-
background: var(--surface-page);
|
|
57
|
-
color: var(--text-primary);
|
|
58
|
-
font-family: var(--body-serif);
|
|
59
|
-
font-size: 11pt;
|
|
60
|
-
line-height: 1.55;
|
|
61
|
-
counter-reset: pagenum;
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
.page {
|
|
65
|
-
counter-increment: pagenum;
|
|
66
|
-
position: relative;
|
|
67
|
-
}
|
|
68
|
-
.page:not(.page--cover):not(.page--backpage)::after {
|
|
69
|
-
content: counter(pagenum);
|
|
70
|
-
position: absolute;
|
|
71
|
-
bottom: 10mm;
|
|
72
|
-
right: 16mm;
|
|
73
|
-
font-family: var(--sans);
|
|
74
|
-
font-size: 9pt;
|
|
75
|
-
letter-spacing: 0.28em;
|
|
76
|
-
color: var(--slate-400);
|
|
77
|
-
}
|
|
78
|
-
.page:not(.page--cover):not(.page--backpage)::before {
|
|
79
|
-
content: "REAL AGENT NETWORK LIMITED · BUSINESS PLAN · v1.0";
|
|
80
|
-
position: absolute;
|
|
81
|
-
bottom: 10mm;
|
|
82
|
-
left: 16mm;
|
|
83
|
-
font-family: var(--sans);
|
|
84
|
-
font-size: 7pt;
|
|
85
|
-
letter-spacing: 0.24em;
|
|
86
|
-
color: var(--slate-400);
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
@media screen {
|
|
90
|
-
body { background: #FFFFFF; padding: 24px; }
|
|
91
|
-
.page {
|
|
92
|
-
width: 210mm; min-height: 297mm;
|
|
93
|
-
margin: 20px auto; padding: 18mm 16mm 20mm;
|
|
94
|
-
background: var(--surface-page);
|
|
95
|
-
box-shadow: 0 4px 28px rgba(0,0,0,0.14);
|
|
96
|
-
}
|
|
97
|
-
.page--cover, .page--backpage { padding: 0; overflow: hidden; }
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
@media print {
|
|
101
|
-
body { background: var(--surface-page); padding: 0; }
|
|
102
|
-
.page { page-break-after: always; padding: 0; }
|
|
103
|
-
.page--cover, .page--backpage {
|
|
104
|
-
margin: 0; width: auto; box-shadow: none;
|
|
105
|
-
height: 100vh; position: relative; overflow: hidden;
|
|
106
|
-
-webkit-print-color-adjust: exact;
|
|
107
|
-
print-color-adjust: exact;
|
|
108
|
-
}
|
|
109
|
-
.page--backpage { page-break-before: always; page: backpage-full; }
|
|
110
|
-
.download-btn { display: none !important; }
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
.download-btn {
|
|
114
|
-
position: fixed; top: 20px; right: 20px; z-index: 100;
|
|
115
|
-
font-family: var(--sans); font-size: 9pt; letter-spacing: 0.28em;
|
|
116
|
-
text-transform: uppercase; color: var(--paper-0);
|
|
117
|
-
background: var(--teal-900); padding: 11px 18px 12px;
|
|
118
|
-
border-radius: 9999px; text-decoration: none;
|
|
119
|
-
box-shadow: 0 4px 16px rgba(14, 20, 24, 0.18);
|
|
120
|
-
}
|
|
121
|
-
.download-btn:hover { background: var(--gold-700); }
|
|
122
|
-
</style>
|
|
123
|
-
</head>
|
|
124
|
-
<body>
|
|
125
|
-
<a class="download-btn" href="<artefact>.pdf" download>Download PDF</a>
|
|
126
|
-
|
|
127
|
-
<section class="page page--cover" data-screen-label="cover"> ... </section>
|
|
128
|
-
<section class="page" data-screen-label="exec-summary"> ... </section>
|
|
129
|
-
<!-- ... one <section class="page"> per A4 page ... -->
|
|
130
|
-
<section class="page page--backpage" data-screen-label="backpage"> ... </section>
|
|
131
|
-
</body>
|
|
132
|
-
</html>
|
|
133
|
-
```
|
|
134
|
-
|
|
135
|
-
## render-pdf.mjs (canonical)
|
|
136
|
-
|
|
137
|
-
```javascript
|
|
138
|
-
#!/usr/bin/env node
|
|
139
|
-
import { chromium } from 'playwright';
|
|
140
|
-
import { execFileSync } from 'node:child_process';
|
|
141
|
-
import { mkdirSync, rmSync, existsSync } from 'node:fs';
|
|
142
|
-
import { dirname, basename, join, resolve, extname } from 'node:path';
|
|
143
|
-
import { pathToFileURL } from 'node:url';
|
|
144
|
-
|
|
145
|
-
const [, , htmlInput, pdfOutput] = process.argv;
|
|
146
|
-
if (!htmlInput || !pdfOutput) {
|
|
147
|
-
console.error('Usage: render-pdf.mjs <input.html> <output.pdf>');
|
|
148
|
-
process.exit(64);
|
|
149
|
-
}
|
|
150
|
-
|
|
151
|
-
const htmlPath = resolve(htmlInput);
|
|
152
|
-
const pdfPath = resolve(pdfOutput);
|
|
153
|
-
const tmpDir = resolve(dirname(pdfPath), `.tmp-${basename(pdfPath, extname(pdfPath))}`);
|
|
154
|
-
rmSync(tmpDir, { recursive: true, force: true });
|
|
155
|
-
mkdirSync(tmpDir, { recursive: true });
|
|
156
|
-
|
|
157
|
-
const VIEWPORT_W = 794; // A4 portrait at 96 dpi
|
|
158
|
-
const VIEWPORT_H = 1123;
|
|
159
|
-
const SCALE = 3.125; // → 300 dpi PNGs
|
|
160
|
-
const A4_HEIGHT_PX_SLACK = VIEWPORT_H + 2;
|
|
161
|
-
|
|
162
|
-
(async () => {
|
|
163
|
-
const browser = await chromium.launch();
|
|
164
|
-
const context = await browser.newContext({
|
|
165
|
-
viewport: { width: VIEWPORT_W, height: VIEWPORT_H },
|
|
166
|
-
deviceScaleFactor: SCALE,
|
|
167
|
-
});
|
|
168
|
-
const page = await context.newPage();
|
|
169
|
-
|
|
170
|
-
await page.goto(pathToFileURL(htmlPath).toString(), { waitUntil: 'networkidle' });
|
|
171
|
-
await page.emulateMedia({ media: 'print' });
|
|
172
|
-
await page.evaluate(() => document.fonts ? document.fonts.ready : Promise.resolve());
|
|
173
|
-
await page.evaluate(() => { document.body.style.padding = '0'; });
|
|
174
|
-
|
|
175
|
-
const sections = await page.$$('section.page');
|
|
176
|
-
if (sections.length === 0) {
|
|
177
|
-
console.error('No <section class="page"> elements found.');
|
|
178
|
-
process.exit(65);
|
|
179
|
-
}
|
|
180
|
-
|
|
181
|
-
const pngFiles = [];
|
|
182
|
-
let overflow = false;
|
|
183
|
-
|
|
184
|
-
for (let i = 0; i < sections.length; i++) {
|
|
185
|
-
const section = sections[i];
|
|
186
|
-
const label = await section.getAttribute('data-screen-label') || `page${i + 1}`;
|
|
187
|
-
const scrollHeight = await section.evaluate(el => el.scrollHeight);
|
|
188
|
-
if (scrollHeight > A4_HEIGHT_PX_SLACK) {
|
|
189
|
-
console.error(`[OVERFLOW] page ${i + 1} (${label}): ${scrollHeight}px > A4 + 2px slack`);
|
|
190
|
-
overflow = true;
|
|
191
|
-
}
|
|
192
|
-
const outPath = join(tmpDir, `page-${String(i + 1).padStart(2, '0')}-${label}.png`);
|
|
193
|
-
await section.scrollIntoViewIfNeeded();
|
|
194
|
-
await section.screenshot({ path: outPath, type: 'png' });
|
|
195
|
-
pngFiles.push(outPath);
|
|
196
|
-
}
|
|
197
|
-
|
|
198
|
-
await browser.close();
|
|
199
|
-
if (overflow) {
|
|
200
|
-
console.error('Overflow detected. Aborting.');
|
|
201
|
-
process.exit(4);
|
|
202
|
-
}
|
|
203
|
-
|
|
204
|
-
const preLinearize = join(tmpDir, 'pre-linearize.pdf');
|
|
205
|
-
execFileSync('img2pdf', ['--pagesize', '210mmx297mm', '--output', preLinearize, ...pngFiles], { stdio: 'inherit' });
|
|
206
|
-
execFileSync('qpdf', ['--linearize', '--object-streams=disable', preLinearize, pdfPath], { stdio: 'inherit' });
|
|
207
|
-
|
|
208
|
-
console.log(`✓ PDF written: ${pdfPath}`);
|
|
209
|
-
})();
|
|
210
|
-
```
|
|
211
|
-
|
|
212
|
-
## Verification
|
|
213
|
-
|
|
214
|
-
After every render:
|
|
215
|
-
|
|
216
|
-
```sh
|
|
217
|
-
qpdf --check <artefact>.pdf # → "No syntax or stream encoding errors found"
|
|
218
|
-
pdfinfo <artefact>.pdf | grep -E "Pages|Optimized" # → confirms page count + linearization
|
|
219
|
-
```
|
|
220
|
-
|
|
221
|
-
Then **read every page visually**. `pdfinfo` reporting "25 pages, A4" is not verification.
|
|
222
|
-
|
|
223
|
-
## Dependencies
|
|
224
|
-
|
|
225
|
-
```sh
|
|
226
|
-
npm i -D playwright && npx playwright install chromium
|
|
227
|
-
brew install img2pdf qpdf
|
|
228
|
-
```
|
|
229
|
-
|
|
230
|
-
## Hard rules
|
|
231
|
-
|
|
232
|
-
- One `<section class="page">` per A4 page. Renderer aborts (exit 4) on overflow.
|
|
233
|
-
- `execFileSync` (never `execSync` with template strings).
|
|
234
|
-
- Cover and backpage are full-bleed dark teal (`--surface-deep`); skip page numbers and running footer via `:not(.page--cover):not(.page--backpage)` selectors on the page-counter pseudo-elements.
|
|
235
|
-
- Even page count for booklet binding (multiple of 4 ideal).
|
|
236
|
-
- Logo: copy the white-mono icon variant as `logo-light.png` for dark cover/backpage; copy the dark icon variant as `logo-dark.png` if used on light content pages.
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
# Internal-workings scrub — public-vs-internal doctrine
|
|
2
|
-
|
|
3
|
-
Public-facing documents (business plan, prospectus, deck, term sheet, anything the investor reads) state the **current position** only. The journey to that position, the reasoning behind it, comparisons against prior baselines, open items still being reconciled, and cross-references to internal sections all stay in working documents in the data-room's internal sections.
|
|
4
|
-
|
|
5
|
-
## Patterns that must NOT appear in public docs
|
|
6
|
-
|
|
7
|
-
- **Comparison to baseline / prior version.** *"The loss has grown from -£282.6k to -£323.1k because…"*, *"Total opex (M0 customer-success hire adds £40,500 vs the M10 model worksheet baseline)"*.
|
|
8
|
-
- **Process commentary.** *"Numbers below use the model's published figures pending the reconciled rebuild"*, *"reconciliation pending"*, *"open item, not actioned here"*, *"see Section X critical note and Section Y contingency levers for the reconciliation paths"*.
|
|
9
|
-
- **Internal cross-references to scaffolding.** *"see Section 12.3 critical note"*, *"see Section 12.6 contingency levers"* when the linked content itself is process-talk rather than substance.
|
|
10
|
-
- **Discrepancy resolution narratives.** *"The earlier '£0.01 vs £0.001 nominal' note is resolved by treating the £4,500 as share premium"*.
|
|
11
|
-
- **"Open Q" or "Open item" markers in body text.** Belongs in section READMEs and the office-hours design doc only.
|
|
12
|
-
- **Date-coded internal designs.** *"2026-04-22 design"*, *"office-hours design doc"*, *"model worksheet (Appendix A) needs a rebuild"*.
|
|
13
|
-
- **"Pre-contingency-lever activation" / "once X is included" hedges in summary tables.**
|
|
14
|
-
- **Explanatory parentheticals that name the process.** *"(M10-trigger model did not carry)"* is process commentary and must go.
|
|
15
|
-
|
|
16
|
-
## What IS acceptable in a public-facing document
|
|
17
|
-
|
|
18
|
-
- The current position, stated as a fact.
|
|
19
|
-
- A footnote citing a source (Companies House, IBISWorld, ICO, etc.) when the figure derives from public data.
|
|
20
|
-
- A pointer to a public appendix (titled documents only; not internal-section READMEs).
|
|
21
|
-
- Conditions on a forecast figure that an investor needs to know (e.g. "assuming Round 2 closes at M9-M10").
|
|
22
|
-
|
|
23
|
-
## The same content, internal vs public
|
|
24
|
-
|
|
25
|
-
| Internal version (working doc) | Public version (business plan) |
|
|
26
|
-
|---|---|
|
|
27
|
-
| Total operating expenses ~£649,100 (M0 customer-success hire adds £40,500 vs the M10 model worksheet baseline). | Total operating expenses ~£649,100. |
|
|
28
|
-
| Year-1 P&L loss has grown from -£282.6k to -£323.1k because the customer-success hire is brought forward from M10 to M0. | Year-1 P&L loss is approximately £323k against revenue of £356k. |
|
|
29
|
-
| Cash crosses zero at M8–M9 if Round 2 does not close; the model worksheet's M11 £34k cash low arrives roughly two months earlier under the M0 CS hire structure. | The raise is sized to deliver the Round 2 gating milestones; Round 2 closes at M9 to M10. |
|
|
30
|
-
|
|
31
|
-
## Recurrence is a P0 violation
|
|
32
|
-
|
|
33
|
-
In the reference project this rule was violated three times in one session (initial draft used a dated internal design reference; appendix table referenced internal-only documents alongside externally-shareable ones; M0 customer-success hire updates added "model worksheet baseline" comparisons). The pattern: every time the founder adds content or asks for an update, the temptation is to include "what changed and why" alongside the new value. The temptation must be resisted; the public document carries only the new value. The "what changed and why" goes in a sibling internal document if it needs to live somewhere.
|
|
@@ -1,88 +0,0 @@
|
|
|
1
|
-
# Term sheet template
|
|
2
|
-
|
|
3
|
-
A4-portrait, 6-to-8-page formal term sheet, same render pipeline as the business plan (Playwright + img2pdf + qpdf). Lives at `html/prospectus/term_sheet.html`. The reference project produces a 7-page artefact: cover + 5 content pages + signatures.
|
|
4
|
-
|
|
5
|
-
## Page-by-page structure
|
|
6
|
-
|
|
7
|
-
| # | Page | Contents |
|
|
8
|
-
|---|---|---|
|
|
9
|
-
| 1 | Cover + preamble | Issuer (full Companies-House-filed legal name), document title, "Non-binding — confidentiality and exclusivity bind", preamble (round purpose, recipient self-cert reminder), introductory parties table (Issuer, Founders list, Investors, round size, minimum cheque, minimum aggregate, target first close) |
|
|
10
|
-
| 2 | Share economics & use of proceeds | Instrument (ordinary £0.001 or £0.01 nominal, ranking *pari passu*), pre-money / post-money / dilution, issue price (computed from pre-money ÷ pre-investment shares), Round Share count, use of proceeds split, long-stop date, funds-expected timing |
|
|
11
|
-
| 3 | Cap table on closing | Holder / Role / Shares / % table; founders subtotal; Round Shares row; total = 100% / 625,000 |
|
|
12
|
-
| 4 | Governance & shareholder protections | Board composition (director-designate per IN01), information rights (≥5% threshold), pre-emption, drag-along / tag-along, share-transfer good-leaver / bad-leaver, SEIS/EIS posture, confidentiality (binding), exclusivity (binding) |
|
|
13
|
-
| 5 | Closing terms | Governing law (English), expenses (each party bears own), founder IP assignment (deed at first close, no licence-back, no royalty), conditions to closing, long-form documentation timeline |
|
|
14
|
-
| 6 | Signatures | Company block (director-designate per IN01) + Investor block (name / entity / commitment / signature line) |
|
|
15
|
-
| 7 | **Appendix A — High Net Worth Individual Investor Statement** | FSMA 2000 (Financial Promotion) Order 2005 / FCA COBS 4 Annex 2 statement, verbatim. Income £170,000 / net assets £430,000 thresholds (post-31 Jan 2024 reverted thresholds). Checkboxes, declaration callout, signature lines. |
|
|
16
|
-
| 8 | **Appendix B — Self-Certified Sophisticated Investor Statement** | FSMA 2000 (Financial Promotion) Order 2005 / FCA COBS 4 Annex 4 statement, verbatim. Conditions A (PE / SME finance professional past 2yr), B (director of company with £1.6m+ turnover past 2yr), C (business-angel network member 6m+). Checkboxes, declaration callout, signature lines. |
|
|
17
|
-
| 9 | Backpage | Contact card (2×2 founder grid: role / name / email / phone) + confidentiality reminder + companies-house identifier |
|
|
18
|
-
|
|
19
|
-
## Cap table reconciliation
|
|
20
|
-
|
|
21
|
-
The cap table on closing **must reconcile against the IN01 + the Round 1 dilution model exactly**. The pattern from the reference project:
|
|
22
|
-
|
|
23
|
-
| Step | Source |
|
|
24
|
-
|---|---|
|
|
25
|
-
| Pre-investment shares (e.g. 500,000) | IN01 statement of capital |
|
|
26
|
-
| Per-founder pre-investment % | IN01 cap table |
|
|
27
|
-
| Dilution % | (Round size / post-money) = 350 / 1,750 = 20% in the reference project |
|
|
28
|
-
| Post-investment % per founder | Pre-investment % × (1 − dilution%) |
|
|
29
|
-
| Post-investment shares per founder | Pre-investment shares × (1 − dilution%) — note this only works if all founders dilute pro rata |
|
|
30
|
-
| Round Shares | New investor's post-investment % × total post-investment shares |
|
|
31
|
-
| Total post-closing shares | Pre-investment shares ÷ (1 − dilution%) |
|
|
32
|
-
|
|
33
|
-
Reference project numbers (pre 500k, dilution 20%):
|
|
34
|
-
- Joel 24.90% / 124,500 → 19.92% / 124,500 (no change in shares; dilution is via issuance of new shares)
|
|
35
|
-
- Adam 24.90% / 124,500 → 19.92% / 124,500
|
|
36
|
-
- Alex 20.00% / 100,000 → 16.00% / 100,000
|
|
37
|
-
- Jamie 15.16% / 75,813 → 12.13% / 75,813
|
|
38
|
-
- BackleyBlack 8.75% / 43,749 → 7.00% / 43,749
|
|
39
|
-
- Stewart Smalley 6.29% / 31,438 → 5.03% / 31,438
|
|
40
|
-
- Founders subtotal 500,000 / 80.00%
|
|
41
|
-
- New investors (Round 1) 125,000 / 20.00%
|
|
42
|
-
- Total post-closing 625,000 / 100.00%
|
|
43
|
-
|
|
44
|
-
Issue price = pre-money / pre-investment shares = £1,400,000 / 500,000 = **£2.80 per Round Share** (£0.001 nominal + £2.799 share premium in the reference project where nominal was £0.001; or £0.01 nominal + £2.79 premium if the term sheet sets nominal at £0.01).
|
|
45
|
-
|
|
46
|
-
## Doctrine
|
|
47
|
-
|
|
48
|
-
- **Issuer name is the IN01-filed legal entity.** Stale term sheets that reference a marketing or trading entity instead of the filed company are defects. The Companies House number on every page header should match the IN01.
|
|
49
|
-
- **Founder list reads exactly as the cap table.** Six holders on the cap table = six in the founder list. No phantom founders. Strategic shareholders (e.g. an investing LLP) ride in by entity name, not by their constituent individuals.
|
|
50
|
-
- **Sole director on IN01 is the director-designate on the term sheet's signature page.** A term sheet that names two directors when IN01 named one needs reconciling before issue.
|
|
51
|
-
- **SEIS/EIS posture is post-funding obligation, never closing contingency.** Never assured prior to distribution; no representation as to qualifying status. Forms no part of consideration.
|
|
52
|
-
- **Confidentiality + exclusivity bind; everything else is non-binding** until subscription & shareholders' agreement.
|
|
53
|
-
|
|
54
|
-
## FCA self-certification appendices — sourcing the verbatim wording
|
|
55
|
-
|
|
56
|
-
Both appendices reproduce the FCA template **word-for-word**. Never paraphrase regulatory text. The FCA Handbook pages (COBS 4 Annex 2 / Annex 4) are JavaScript-rendered and not directly fetchable; the most reliable verbatim source is the **UK Business Angels Association** templated PDFs, updated whenever HM Treasury or the FCA change the thresholds:
|
|
57
|
-
|
|
58
|
-
- High Net Worth: <https://ukbaa.org.uk/wp-content/uploads/2024/02/HighNetWorthStatement.pdf>
|
|
59
|
-
- Sophisticated: <https://ukbaa.org.uk/wp-content/uploads/2024/02/SelfCertifiedStatement.pdf>
|
|
60
|
-
|
|
61
|
-
These are the **Feb 2024 versions**, reflecting the thresholds in force after HM Treasury reverted the January-2024 increases. Current thresholds:
|
|
62
|
-
|
|
63
|
-
| Statement | Condition | Threshold |
|
|
64
|
-
|---|---|---|
|
|
65
|
-
| HNW | A — income | £170,000 in last financial year (excludes one-off pension withdrawals) |
|
|
66
|
-
| HNW | B — net assets | £430,000 (excludes primary residence, loan secured on it, equity released from it, pension, insurance rights) |
|
|
67
|
-
| Sophisticated | A — PE / SME finance professional | last two years |
|
|
68
|
-
| Sophisticated | B — director of company | annual turnover ≥ £1.6 million, last two years |
|
|
69
|
-
| Sophisticated | C — business-angel network | member ≥ 6 months, still a member |
|
|
70
|
-
|
|
71
|
-
**Re-fetch before issue.** Thresholds change. The Feb 2024 templates were issued after HM Treasury reverted a Jan 2024 increase to £170k income / £430k net assets / £1.6m turnover (the original 2023 thresholds were £100k / £250k / £1m). The pattern: if it changes again, UKBAA reissues; re-fetch their PDF and re-render the appendix.
|
|
72
|
-
|
|
73
|
-
Render the appendices in the **same A4 stylesheet as the term sheet** but with a `.page--appendix` class that tightens `h2` (22pt instead of 26pt), `.form-question` margins (2.5mm instead of 4mm), and `.form-declaration` padding (3mm instead of 4mm). Without these overrides, the Sophisticated page (3 questions + 4 declarations + signature) overflows A4.
|
|
74
|
-
|
|
75
|
-
## Render
|
|
76
|
-
|
|
77
|
-
Same `render-pdf.mjs` pattern as the business plan; viewport 794×1123 (A4 portrait at 96 dpi), deviceScaleFactor 3.125 (300 dpi PNG), `img2pdf --pagesize 210mmx297mm`, `qpdf --linearize`. Output: `html/prospectus/term_sheet.pdf`.
|
|
78
|
-
|
|
79
|
-
## Common defects to avoid
|
|
80
|
-
|
|
81
|
-
| Defect | Fix |
|
|
82
|
-
|---|---|
|
|
83
|
-
| Issuer name mismatch (marketing vs filed) | Use the IN01 legal name verbatim on every page header |
|
|
84
|
-
| Founder list includes individuals also represented by an LLP holding | Use the LLP holding only; do not double-count |
|
|
85
|
-
| Issue price stated without showing the calculation | `£2.80 = £1.4m ÷ 500,000 pre-shares` in the issue-price row |
|
|
86
|
-
| Cap-table % rounding doesn't sum to 100% | Compute % as `shares / total` and verify the sum; never hand-enter % rows |
|
|
87
|
-
| SEIS/EIS implied as confirmed | "Pursuing SEIS/EIS Advance Assurance from HMRC is a post-funding obligation … not a closing contingency … no representation as to qualifying status" |
|
|
88
|
-
| Director-designate doesn't match IN01 | Read the IN01 PDF; the proposed director on IN01 is the director-designate |
|