Sales materials
The document system
Every document the company issues runs the same visual system: the wordmark lockup masthead on every page, Helvetica Neue at one weight, navy #002870, hairline rules, and a three-part footer. That is what makes a memo and an invoice read as the same company.
Source of truth: varick-docs/SKILL.md · varick-docs/references/template.js · varick-engagement-letter
Route first
Before you build anything, work out which generator owns it. Most of these already exist, so building by hand is how the house style drifts.
| You need | Skill | Deliverable |
|---|---|---|
| Engagement letter / SOW | varick-engagement-letter | .docx (editable in Google Docs) plus a matching PDF |
| Memo, proposal, brief, policy | varick-docs | .docx, PDF on request |
| Charts and data viz | varick-charts | High-res PNG for print and static embeds, self-contained HTML for blogs |
| Case study, RFI response, proposal (web) | varick-doc-builder | .txt using the builder marker syntax |
| Content calendar and social | varick-content-calendar | Notion database rows plus produced assets |
The full routing table, including which skills are missing from the local pack, is on Design skills.
The document palette
Navy plus greys. That is the whole palette: no accent blue, no gradients, no rounded corners, no second hue.
Base colour / Print
The document palette
Description and usage
Navy plus greys across every document the company issues, so a memo and an invoice read as the same company.
Rules
- Navy
- Headings, title, labels, table header fill, bullets.
- Navy mid
- Indicative gantt bars. Nothing else, ever.
- INK / INK_SOFT
- Body text, and secondary text inside tables.
- Grey
- Meta labels, notes, footer.
Hierarchy comes from navy, size and small caps
bold: false is written on every run. When a document feels flat, the fix is a size step or a small-caps kicker, not a heavier weight.The blocks
Fifteen helpers cover every document Varick issues. One block, one renderer, so a document cannot drift off-brand by being written differently.
| Helper | What it is for |
|---|---|
masthead() | The wordmark lockup, in the page header so it repeats. Never call it in the body. |
titleBlock({kicker, title, from, meta}) | Small-caps kicker, 17pt navy title, then meta rows on hairlines. from renders as the first meta row. |
section(title) | Numbered heading, 14pt navy, no rule underneath. Numbers itself; pass null for unnumbered. |
subhead(text) | 12pt navy label inside a section. |
para(text) | Running prose. |
bullets(items) | Round navy bullets via the numbering config, a real list that survives Google Docs. |
deflist(rows) | Label/value grid on a pale #fafafa column. The Engagement at a Glance opener. |
table(head, rows, opts) | Navy header row, hairline grid, 10.5pt. An array cell renders as bullets. emphasizeFirst sets column one navy. widths in dxa, partial is fine. |
band(text) | Tinted callout with a navy left bar. The Impact: lines. |
gantt({cols, rows, milestones}) | Week-by-week plan as a native table, so it stays editable. Spans are [first, last, kind]. Solid is committed, light is indicative. Adjacent same-kind spans merge. |
figure(file, caption, heightPx) | PNG or JPEG at content width with a grey caption. Charts come from varick-charts. |
signature(parties) | Parties side by side, each field on its own hairline. |
note(text) | 7.5pt grey qualifier. The "illustrative only" lines. |
rule() spacer() pagebreak() | Divider, vertical space, forced page. |
houseFooter() | [CONFIDENTIAL] · Varick Agents · Page X of Y, all grey, every page. |
Emphasis
**double asterisks** in any prose string and it renders navy. That is the only inline emphasis there is.Workflow
Copy the template, rewrite the content, look at every page. The third step is the one people skip.
Build it
node template.js "Varick Agents Order-to-Cash Diagnostic.docx"
python /mnt/skills/public/docx/scripts/office/validate.py "Varick Agents Order-to-Cash Diagnostic.docx"
soffice --headless --convert-to pdf "Varick Agents Order-to-Cash Diagnostic.docx"
pdftoppm -jpeg -r 100 "Varick Agents Order-to-Cash Diagnostic.pdf" pageThen check five things on every page
- The masthead and its rule sit at the top of each page, not just the first.
- Every page's first line clears that rule by about 0.3in.
- The footer reads Page X of Y with the right total.
- No heading is stranded from the table it introduces.
- No bracketed placeholder survived.
Deliver the .docx. Google Docs opens and edits it natively, so that is the editable artefact. Add the PDF only if someone asked for one.
What not to change
The renderers are the design decision. buildDoc() is the content. These are the rules that exist because someone already broke them.
Never render the wordmark SVG directly
fill="none" with a stroke, so a direct render gives hollow, outlined letterforms. Use the PNG: cairosvg at scale=8, 3856 × 288. It is already correct.Never add a second rule under the masthead
Never hand-edit the .docx
buildDoc() and rebuild. A hand-patched file is one nobody can regenerate.- No tagline under the wordmark. It was removed deliberately.
- No replacing the wordmark with type. The masthead is an image, always.
- No switching fonts and no reaching for bold. Helvetica Neue only, never Geist, never Inter, never a mono or serif face, never italic.
- No colour beyond navy, the one mid-navy for indicative gantt bars, #f3f6fb for band fills, #fafafa for the label column, #d9d9d9 for rules.
- No rule under a section heading. The size does the work.
- No banner. The masthead replaced the old navy VARICK AGENTS block.
- Nothing centred. The whole system is left-aligned.
- No touching the footer. The page number is a live Word field, never a literal number.
Per material
The rules that are specific to one deliverable rather than to all of them.
Engagement letter / SOW
varick-engagement-letterThe document a client signs. Scope, hypothesis, week-by-week gantt, deliverables with impact bands, prerequisites, two-party signature block.
- Content comes from a JSON spec. The visual system lives in build_letter.py and letter-base.docx, never in the JSON.
- The legal entity is SolidCart, Inc (d/b/a Varick Agents).
- Number every section.
- Gantt spans are [first, last, kind].
solidis committed,lightis indicative.
Memo, proposal, brief, policy
varick-docsThe catch-all. Anything the company issues as a document that has no dedicated skill.
- Copy references/template.js, rewrite buildDoc(), keep the helpers. Rebuilding blocks is how the house style drifts.
- Seventeen block helpers cover everything. One block, one renderer.
**double asterisks**renders navy. That is the only inline emphasis there is.- Spacing is fixed at SP_BEFORE 200 / SP_AFTER 140. If a document runs long, cut copy, do not tune spacing.
- Never hand-edit the .docx. Change buildDoc() and rebuild.
Charts and data viz
varick-chartsBar, line, area, scatter, donut, stacked, ranked standings, tabbed dashboards. Gradient-stroke lines, area fills, gradient-fade bars.
- chart-spec.md is the source of truth, not globals.css.
- Default to standings for anything called a leaderboard, ranking or benchmark.
- Grid is
4 4dashes, horizontal only, except scatter. - Past five series, interpolate navy→grey. Never introduce a new hue.
- The PNG renderer screenshots the live HTML, so the two can never diverge.
Case study, RFI response, proposal (web)
varick-doc-builderThe paginated, styled documents on demo.varickagents.com. Written as plain text with markers, pasted into the builder.
- Confirm the live marker list before finalising, the builder gains block types between sessions.
- The deliverable is the .txt, not a screenshot of the result.
Content calendar and social
varick-content-calendarX articles, threads and posts; LinkedIn carousels, text posts and documents. Slot generation, state tracking, fan-out.
- The calendar lives in one Notion database. Nothing is hand-typed except the cadence config and the ideas.
- Slot generation, drafting, asset production and fan-out are four separate automations. Do not conflate them.
Gaps
Skills the others route to that are not in the local pack. Nothing here is broken, but if you reach for one of these, you will not find it.
| Skill | What it owns |
|---|---|
varick-invoice | Invoices and bills. Shares the masthead asset with varick-docs. |
varick-report | Multi-page navy-cover reports, explainers and leave-behinds. |
varick-agents-brand | One-pagers and pre-call briefs. |
