Skip to content

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 needSkillDeliverable
Engagement letter / SOWvarick-engagement-letter.docx (editable in Google Docs) plus a matching PDF
Memo, proposal, brief, policyvarick-docs.docx, PDF on request
Charts and data vizvarick-chartsHigh-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 socialvarick-content-calendarNotion 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

Never from weight. The bold faces are not in the package, and 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.

HelperWhat 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

Wrap a phrase in **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" page

Then 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

Its path is 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

The lockup is wordmark plus a hairline spanning the full canvas. The rule is the divider.

Never hand-edit the .docx

Change 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-letter

The 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]. solid is committed, light is indicative.

Memo, proposal, brief, policy

varick-docs

The 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-charts

Bar, 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 4 dashes, 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-builder

The 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-calendar

X 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.

SkillWhat it owns
varick-invoiceInvoices and bills. Shares the masthead asset with varick-docs.
varick-reportMulti-page navy-cover reports, explainers and leave-behinds.
varick-agents-brandOne-pagers and pre-call briefs.