--- name: |- deck-logos description: |- Find, clean and choose company logos for Augusta decks, fully automatically — the horizontal wordmark for the lockups next to Augusta's logo and the square mark for portfolio-company tiles. Use when a deck skill needs logos for a client, fund or portfolio companies; not for placing or colouring them on slides. notion_page_id: 3e576b8e-5e31-8112-bacd-fad7eba0f90b --- # deck-logos Called by a deck skill with a list of logos to find. Returns one clean file per entry, or an explicit none with the reason. No human step. ## Input One entry per logo, from the deck skill: - company: the short brand name (Rolls-Royce, not Rolls-Royce Holdings plc) - domain: the company's own website - kind: wordmark for the lockups (cover, company divider, thank-you), or mark for the square portfolio-company tiles - role: client, fund or portco ## Setup The only file is `logos.py`, and it is self-contained. Run it with `uv run logos.py ...`. On first use, uv installs its dependencies and the script fetches Chromium once. The machine only needs `uv`. Run the entries one at a time, never in parallel. Parallel runs get rate-limited by Wikimedia and some sites. ## Steps, for each entry 1. Collect:

`uv run logos.py collect --run --company "" --domain --kind --role `

- It scans the company's own site in a real browser for the header logo, the [schema.org](http://schema.org) logo, the apple-touch icon, icons and favicon. - It cleans and checks every candidate, and prints the entry's folder (`dir:`) and its contact sheet (`sheet:`). 2. Open the contact sheet. - For a wordmark, each row shows the candidate in white next to Augusta's logo on the dark cover. - For a mark, each row shows the candidate in ink in the tile. - The original colours are on the right. 3. Pick the best candidate that passes the rules below:

`uv run logos.py pick

--reason ""`

It records the file and works out the confidence itself.

4. No good candidate yet, or a WARNING that the scan found nothing? The site probably blocks automated browsers. Add sources and collect again:

`uv run logos.py collect ... --no-site --extra `

- This adds to the same sheet: the earlier candidates keep their numbers and the new ones follow. - To find sources, web-search ` logo svg`, ` brand assets` or ` press kit`. When the company's own pages are blocked, go straight to Wikimedia Commons. - `--extra` takes direct file URLs (.svg, .png, .jpg, .webp, .zip), not web pages and not PDFs. Open the page yourself and copy the file links. - Wikimedia and Wikipedia `File:` page URLs are the one exception: they work as they are. - Look in this order: 1. the company's brand, press or media page (an SVG or a brand-kit .zip) 2. Wikimedia Commons 3. logo sites - Never use Google Images, and never get past a CAPTCHA or a login. - A failed download is retried when you pass it again. 5. Still nothing acceptable: `uv run logos.py none --reason ""`. The deck keeps its placeholder. When every entry is done, run `uv run logos.py report --run `. It writes `/logos/logos.json` and warns about any entry left without a pick or a none. ## Rules for picking - Right company. - The file comes from the company's own domain, its official brand page, or a Wikimedia file named for the company. - A logo site is a last resort. Use it only when its file is identical to the logo the company itself uses today. - Reject look-alikes, e.g. H&M for HM Hospitales. - Current version. - When the live site header and an older file disagree, the header wins. - [Schema.org](http://Schema.org) logos, old uploads and anniversary or campaign versions (e.g. "KKR \| 50", "80 anos") are often outdated or temporary. - Among Wikimedia files, take the one dated most recently (the year is usually in the name, e.g. "(2023)"). Check it against how the company presents itself today. - The same applies to site icons: an icon that differs from the logo in the live header is outdated. - The current version beats an older one, even when the older one is unboxed or has no campaign line. - Primary logo only. No sub-brand, product, campaign, tagline or country version. - Clean. - The blocking flags (busy\_background, solid\_block, boxed\_logo, knockout\_detail, empty) mean the logo breaks when made one colour. - Those candidates stay numbered on the sheet, but `pick` refuses them. - Knockouts are handled for you. When a logo has white letters or shapes over colour (a badge, a circle with bars), the script cuts the white out, the way the brand prints itself in one colour. It notes this as `knockout_cut`. Check on the sheet that it reads right. This does not lower confidence. - Detail lost. The `detail_lost` note means colours that touch each other merge in one colour, e.g. a pin on a disc becomes a dot, or a tri-colour symbol becomes a block. - Pick it only if the one-colour preview still reads as the company's logo. - Otherwise look for the company's own one-colour version (brand page, Wikimedia), or take the next candidate. - Boxed logos. The `boxed` note means the logo is a filled box with the name cut out. Prefer an unboxed version of the same logo when the company has one. - Low resolution. Accept it with `--accept low_resolution` only when the sheet shows the logo reading cleanly at slot size. - Wordmark: one unit with Augusta. Take the horizontal version whose proportions sit best next to Augusta's logo in the dark preview. - Use the logo as the company shows it in its header, symbol included. Take a text-only version only when the company itself uses one. - A name set on two lines is still a wordmark. - When the only horizontal version is a campaign or anniversary one, use the current primary logo instead, even if it is `stacked`. - The `stacked` note marks a tall, symbol-style logo (narrower than 1.5:1), such as a monogram or badge. Use it only when no horizontal version exists anywhere, including step 4. - Mark, in this order: 1. the company's real symbol 2. its site icon (apple-touch icon, favicon), including a letter icon such as a single "c" 3. its standard logo, picked despite the `not_square` note, which then goes in the tile as it is

Never crop letters or set type to make a symbol.

- Page noise. Ignore photos, arrows, social icons and cookie-banner copies, unless one is the only clean copy of the current logo. ## Output `logos.json` is one object per entry: ```json {"company": "Apax", "role": "fund", "kind": "wordmark", "file": ".../logo.svg", "png": ".../logo.png", "aspect": 2.72, "source": "https://www.apax.com/assets/images/logo-main-new.svg", "confidence": "high", "reason": "current site header logo, vector"} ``` - The script sets confidence: - high: the company's own site, with no accepted flag and no note. - medium: anything else, such as a third-party source like Wikimedia, an accepted low\_resolution, `stacked` or `not_square`. - A none entry is `{"company": ..., "kind": ..., "none": ""}`. - `file` is the vector when there is one; `png` is always there. - After a knockout cut, `file` is the PNG, because the cut exists only in pixels. It is rendered large, so it stays sharp. - Files keep their own colours. White, ink and grey are applied on the slide. ## Out of scope - Which companies need logos: research and the deck skill decide. - Where logos go, their colour and their size: the deck skill and the template decide.