Skip to content

Repository files navigation

Newsletter Content — Linkup

Long-form PDF reports for the Linkup newsletter, typeset in Typst.

Reports

Report Source Output
How to Evaluate Web Search for AI Systems search-evaluation-guide.typ search-evaluation-guide.pdf
Why Developers Are Choosing Linkup Over Exa linkup-vs-exa.typ linkup-vs-exa.pdf

Content sources live alongside the Typst files as Markdown (search-evaluation-guide.md, linkup-vs-exa.md). The .typ files carry the layout and brand system; the .md files carry the prose.

Building

Requires Typst 0.14+ (brew install typst). DM Sans and DM Mono are vendored in fonts/, so --font-path fonts is always required. linkup-vs-exa.typ additionally expects a system-installed display face — see Fonts.

For the verification steps below you will also want Poppler (brew install poppler), which provides pdftoppm, pdfinfo, and pdffonts.

typst compile --font-path fonts --root . search-evaluation-guide.typ

To watch and rebuild on save:

typst watch --font-path fonts --root . search-evaluation-guide.typ

Built PDFs are gitignored — regenerate them from source. The exception is linkup-vs-exa.pdf, which is committed (force-added) so the report can be reviewed without a local Typst install.

Fonts

Face Where it lives Used for
DM Sans vendored in fonts/ body copy, tables, card titles, italic pull-quotes
DM Mono vendored in fonts/ running header, folios, tracked labels, tags
Season Mix vendored in fonts/ display elements in linkup-vs-exa.typ only

Season Mix is the Linkup brand display face, from Displaay Type Foundry. Everything needed to build is vendored, so a fresh clone compiles both reports with no font installation at all. You can verify that for yourself by disabling system fonts entirely:

typst compile --font-path fonts --ignore-system-fonts --root . linkup-vs-exa.typ

Important

Season Mix is proprietary and licensed, not redistributable. Displaay's terms — embedded in the font's own name table — state that you must not "modify, reassemble, rename, store on publicly accessible servers, redistribute, or sell" it. It lives here so the Linkup team can build the reports; this repository must stay private, and the font file must not be copied out of it or passed on to anyone without their own Season licence. Full terms: https://displaay.net/about/licenses/

Two things to know about it:

It ships Regular only. typst fonts --variants reports a single face, Style Normal / Weight 420 — no bold, no light, no italic. Typst does not synthesize the missing faces: asking Season for weight: 600 or style: "italic" silently renders plain Regular with no compile warning. Season is therefore confined to display elements where no weight or italic distinction is doing semantic work. Anything that relies on bold or italic to carry meaning — every table cell, card titles, the pull-quotes — stays in DM Sans. Keep it that way when editing.

Its absence degrades rather than fails. This no longer applies to a normal clone, since the font is vendored — but it matters if the font is ever removed from fonts/, or if a build runs without --font-path fonts. In that case the build still exits 0 and still produces a complete 13-page PDF; the display elements simply come out in a different face. Typst does emit one warning: unknown font family: season mix, so it is not literally silent, but nothing fails and the output is wrong without saying so. Any build that does not treat warnings as errors will hand you a PDF in the wrong typeface. To keep that outcome harmless, the display font is declared as a fallback chain rather than a bare family name:

#let display-font = ("Season Mix", "DM Sans")

so an environment missing Season falls back to DM Sans — the report's previous typography — instead of Typst's default serif. To confirm a build genuinely used Season rather than the fallback, check the embedded font list:

pdffonts linkup-vs-exa.pdf | rg -i season   # expect SeasonMix-Regular

Editing a report

Prose and layout are separate. Edit the .md file to change what the report says; edit the .typ file to change how it looks. The .typ files do not read the .md files at build time — the Markdown is the content source of record, and text is carried across by hand, so change both when you reword something.

After any edit, rebuild and look at the result. A clean compile is not evidence of correctness: several failure modes in this system produce a valid PDF that is silently wrong.

typst compile --font-path fonts --root . linkup-vs-exa.typ
pdftoppm -png -r 70 linkup-vs-exa.pdf /tmp/page   # then open the images

The three traps most likely to bite you, all covered in full in the style guide:

  • The closing CTA block is positioned with place(), which reserves no space in the flow. Any body text that lands on its page is rendered underneath it and disappears. The pagebreak() before it must survive, and the last two pages need a look after any edit that shifts pagination anywhere earlier.
  • Section headings are deliberately kept unbreakable with only their first paragraph. Wrapping a whole section instead pushes it to a fresh page and leaves a large gap; wrapping nothing strands the heading alone at a page foot.
  • Season Mix has no bold or italic, and Typst substitutes Regular silently. Keep anything where weight or italic carries meaning in DM Sans.

Design system

report-style-guide.md is the full house style — the brand palette with contrast measurements, the typography split, page furniture, every reusable helper, the cover and CTA construction, the pagination rules, and the image-resolution and font-embedding checks. Read it before making structural changes.

linkup-vs-exa.typ is the current reference implementation: it carries the green palette and the Season Mix display type. Copy from it when starting a new report.

search-evaluation-guide.typ predates the rebrand — it is still orange throughout and entirely DM Sans. It remains useful for section archetypes it uniquely has, but do not copy its colours or font declarations into new work.

Diagrams live in assets/ as SVG so they stay crisp and text-editable; chart raster exports are PNG. Check the pixel dimensions of any raster asset before embedding it — an oversized cover image previously made one report 43MB. generate_docx.py produces a Word version of the evaluation guide when a non-PDF deliverable is needed.

Related

The open-source evaluation framework the search evaluation guide is built around lives at LinkupPlatform/standard-benchmark. It is checked out into standard-benchmark/ locally and ignored here.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages