Skip to content

Proposal Design Concept

Version: v2.0 — reissued on the GoThrive kit Author: Jéan Roux / HQ (Hermes Agent) Purpose: One place that defines exactly how a GoThrive proposal looks and how one is produced — so any agent (or human) can build one without guessing.

v1 of this spec described the retired Nostics brand — navy #1D2844, teal #3A99B4, lime #A5D667, Montserrat, and the nostics.typ template. A proposal produced from that version today would go out carrying the dead brand. Everything below is GoThrive, and the template and tooling are now in place and verified (see §8).


1. Why this exists

GoThrive proposals are client-facing documents that carry the brand: credible, methodical, human, "seasoned alternative to Big-6". They are produced from a DocMost proposal page (source of truth for content) and compiled into a branded PDF using the house Typst template. This spec fixes the visual system, the layout rules, the signature block, and the build recipe.

Always read this document before producing a proposal. Do not improvise a layout.

2. Register

This spec covers the Digital register — business improvement and applied AI. It is secular: no faith framing anywhere in a proposal.

Counselling & Coaching material is a different surface with its own voice, its blush register and its own site. Do not use this template for it without deciding separately.

3. Sources of truth

What Where
Brand kit (tokens, marks, fonts) jcrx/client-gothrive → brand/kit/ — the only source
Bundled copy of the kit gothrive/1-General → okf-bundles/okf-gothrive/C.Purpose/C2.Brand/assets/
PDF template (source of truth) skill pdf-generation → templates/gothrive.typ
Build scripts skill pdf-generation → scripts/{md2pdf.py, docmost-to-pdf.py}
Fonts staged for Typst /opt/data/docs/brand/fonts/ (Inter 400/600/700/800, IBM Plex Mono 500/600)
Marks staged for Typst /opt/data/docs/brand/logos/ (lockup-horizontal-master.svg, -reversed, monogram-master.svg)
7P method wheel (appendix image) this bundle Resources/assets-intellectual/Method-7P-Wheel-1.Concept.png
Live site https://digital.gothrive.co.za

Never source a mark from 1-General/brand-images/ — that is a pre-rework snapshot and its monogram is the rejected one. The live kit is client-gothrive/brand/kit.

4. Design intent

Clean, professional, credible. White space over clutter. The ink is Deep Teal; a single Teal Accent rule is the only accent on a page; everything structural is a Warm Beige hairline. The document reads like it came from a firm that runs on method and data.

Client-facing copy is plain business language: low techno jargon, no internal file formats or system internals.

5. Tokens — GoThrive kit v4

Straight from brand/kit/tokens.json. No hex outside this table appears in a proposal.

Token Hex Use in a proposal
deep-teal #1C353B headings, ink, links
warm-teal #3F5C5B body copy — every running paragraph
off-white #F6F4F1 quiet fills (code blocks)
white #FFFFFF the paper; the cover ground
warm-beige #CFCABE every hairline: headers, footers, table grid, quote rule
teal-accent #5CBDB9 graphic only — the cover accent rule, the H1 rule
medium-grey #636363 small meta labels (header line, footer line)
pale-pink #FBE3E8 Counselling & Coaching only — not in a Digital proposal
blush #DEA6AF Counselling & Coaching only
sage #8EC0AE reversed-field secondary accent
deep-water #0E1F24 deepest field
ink #26302F single-colour print — every mark must survive as this one ink
rule-dark #6E8285 endorsement rule on a dark field

Two hard rules. Text is never pure black — body copy is Warm Teal and headings are Deep Teal. And Teal Accent is never text on a light field (2.03:1): it is a rule or a riser terminal, nothing else.

Retired, and forbidden: the Nostics navy #1D2844, teal #3A99B4 and lime #A5D667; Montserrat (D12); the "G!" monogram of the first identity round.

6. Typography

  • Inter (400/600/700/800) — everything set in words.
  • IBM Plex Mono (500/600) — figures, code, labels.
Token Size Weight Use
— (cover title) 22 pt bold proposal name
— (subtitle) 12 pt regular Proposal for <Client> (<Contact>)
— (H1) 18 pt bold numbered section headings
— (H2) 13 pt bold sub-sections
— (H3) 11 pt bold third level, in Warm Teal
body 10.5 pt 400 running text, justified
table 9.5 pt 400 cell text, not justified
meta 8 pt 400 header / footer

The Typst build needs the fonts on disk. Pass --font-path /opt/data/docs/brand/fonts (already the default in md2pdf.py). Without it, Inter silently falls back and the document is off-brand.

7. Page anatomy

7.1 Cover (page 1, no header)

  1. Logo — lockup-horizontal-master.svg (colour, on the white cover), width 4.5 cm.
  2. Title — proposal name, 22 pt bold, Deep Teal.
  3. Subtitle — optional, 12 pt, Warm Teal.
  4. Accent rule — 6 cm, Teal Accent (graphic).
  5. Author / date / site — 10 pt Medium Grey: GoThrive Digital, long-form date, digital.gothrive.co.za (hyperlink).
  6. Internal drafts only: Confidential — For Internal Use Only in Warm Teal. Never on a client-facing proposal.

7.2 Header (pages 2+)

  • Left: GoThrive Digital — <Proposal title> in 8 pt Medium Grey.
  • Right: Confidential in Warm Teal, internal drafts only.
  • Warm Beige hairline below.
  • Warm Beige hairline, then three columns, 8 pt Medium Grey:
  • Left: date YYYY-MM-DD
  • Centre: GoThrive Digital · digital.gothrive.co.za
  • Right: Page X of Y — required, always right-aligned

7.4 Content opening (page 2)

The first body page repeats the proposal title as an H1 block, followed by the grey document info block:

Prepared for: <Client> (<Contact name>)
Prepared by: GoThrive Digital
Date: <dd Mmm yyyy>
Version: <vNN>
Status: <optional — Draft / for review>

Then numbered sections (1. Introduction, 2. Your context, …).

7.5 Blocks

  • Quote — a 3 pt Warm Beige left stroke, italic, Warm Teal.
  • Code — Off-White fill, flat (no radius), IBM Plex Mono 9 pt.
  • Table — Warm Beige hairlines only, no fill, cell text left-aligned and not justified.

8. Build recipe

The template and the tooling are in place and verified (2026-11-03):

  • Template: /opt/data/skills/pdf-generation/templates/gothrive.typ
  • Default logo: /opt/data/docs/brand/logos/lockup-horizontal-master.svg
  • Default author: GoThrive Digital
  • md2pdf.py's default template is now gothrive.typ; nostics.typ is retained for reproducing historical documents only and must not be used for anything new.
# from markdown
python3 /opt/data/skills/pdf-generation/scripts/md2pdf.py <input.md> \
  -o <output.pdf> -t "<Proposal title>" -s "Proposal for <Client> (<Contact>)" --no-confidential

# from a DocMost page (content source of truth)
python3 /opt/data/skills/pdf-generation/scripts/docmost-to-pdf.py <slugId> \
  -t "<Proposal title>" -s "Proposal for <Client> (<Contact>)" --no-confidential
  • Binaries: /opt/data/.local/bin/{typst,pandoc} — pass explicit paths if PATH differs.
  • Compile the output into the proposal folder, e.g. /opt/data/workspace/proposals/<Client>/.
  • Upload the final PDF to WebDAV /gothrive/Clients/<Client>/Opportunities/<file>.pdf (URL-encode spaces/&/!); confirm Content-Length matches after upload.
  • --no-confidential for anything client-facing.
  • Only pass --logo for a client logo — the GoThrive lockup is the default.

9. QA checklist (before handing over)

  • Page 1 is the cover: GoThrive lockup present, title = proposal name, date + digital.gothrive.co.za, footer Page 1 of N.
  • Every page ≥2 has the header GoThrive Digital — <Proposal title> top-left.
  • Footer right on every page reads Page X of N.
  • Document info block (Prepared for / by / Date / Version) is present and correct.
  • Signature block matches §10 with clickable links.
  • Appendix images (e.g. the 7P wheel) are fully visible — nothing cropped.
  • No Confidential — For Internal Use Only on client-facing output.
  • Render sanity check: no overlaps, tables not overflowing.
  • Brand check, done on pixels not on vibes — render the PDF to PNG and probe the palette. Any pure black (0,0,0) or any retired Nostics colour is a defect:
typst compile --font-path /opt/data/docs/brand/fonts --format png <doc>.typ "page-{p}.png"
python3 - <<'PY'
from PIL import Image
from collections import Counter
im = Image.open("page-2.png").convert("RGB"); px = im.load()
c = Counter(p for y in range(0, im.size[1], 2) for x in range(0, im.size[0], 2)
            if sum(px[x, y]) < 720 for p in [px[x, y]])
print("pure black:", c.get((0,0,0), 0), "| warm teal:", c.get((63,92,91), 0),
      "| deep teal:", c.get((28,53,59), 0), "| warm beige:", c.get((207,202,190), 0))
PY

Expected: pure black 0; Warm Teal dominating body text; Deep Teal on headings; Warm Beige on the hairlines. This is not ceremony — it is how the retired-table-grid defect was found in the first place.

10. Signature block

Every proposal closes with this block. Hyperlinks are mandatory:

**Jéan Roux** — [GoThrive Digital](https://digital.gothrive.co.za)
[hello@gothrive.co.za](mailto:hello@gothrive.co.za) · 082 573 1880
[https://www.linkedin.com/in/jeanroux](https://www.linkedin.com/in/jeanroux)

Rules:

  • GoThrive Digital text is a hyperlink to https://digital.gothrive.co.za (the link sits on the words, not on a separate URL).
  • hello@gothrive.co.za is a mailto: link. It is the client-facing address; a personal address is internal only.
  • The LinkedIn URL is shown as its own line, and the URL text itself is clickable.
  • In Typst markup, escape the at-sign in visible email text (hello\@gothrive.co.za) or render via #link(...); in DocMost markdown use standard mailto: links.

11. Guardrails

  • Plain business language. No internal file formats, no system internals, no techno jargon.
  • No invented statistics. Every number needs a source.
  • No unsourced regulatory or accreditation claims.
  • Never reintroduce a retired brand element — the Nostics palette, Montserrat, the G! monogram, the nostics.typ template, or the www.nostics.biz / hello@nostics.biz strings. Existing documents keep their hostnames until the domain retires; new ones use digital.gothrive.co.za.
  • The entity is GoThriveCoach (Pty) Ltd, trading as GoThrive. "Nostics" was a trading style, never a legal entity.