Agent skill
normalise-outreach-names
Normalise first names and company names in an outreach list so template merge fields read naturally.
Filed under Outbound email.
From Theo7777/gtm-skills · 13 skill entries · 1 · pushed 2026-10-01
What it does when it runs
Normalise first names and company names in an outreach list so template merge fields read naturally. Strips emoji, credentials, honorifics, and legal suffixes, shortens companies to the name a person would say aloud, and enforces a caps policy (no ALL CAPS unless it is a true acronym or the brand styles itself that way everywhere). Use before any CSV goes into an email tool or enrichment table, or when the user says "normalise names", "clean up the company names", "fix the first names", or "the merge fields look wrong".
Automated analysis of the skill and the 1 file bundled beside it. A skill’s own description is written to be selected by an agent, so it describes the job and not the dependencies.
- Keys and connectors you must supply
- None found.
- Hosts it reaches
- No third-party host appears in the skill or its bundled files.
- Tool permissions it declares
- No
allowed-toolsin the frontmatter. It only issues instructions, so there is nothing to bound. - Actions present in the files
- None. Instructions only.
Install it
View source on GitHub ↗git clone --depth 1 --filter=blob:none --sparse https://github.com/Theo7777/gtm-skills.git /tmp/gtm-skills git -C /tmp/gtm-skills sparse-checkout set "skills/normalise-outreach-names" mkdir -p ~/.claude/skills/normalise-outreach-names cp -R "/tmp/gtm-skills/skills/normalise-outreach-names/." ~/.claude/skills/normalise-outreach-names/
Picked up without a restart. A project skill of the same name is shadowed by your personal one. For one repository only, swap ~/.claude/skills for .claude/skills. Claude Code docs ↗
The folder is the same in every client that implements the format — 46 of them — so if yours is not above, only the destination changes.
The skill
Source on GitHub ↗Reproduced in full from Theo7777/gtm-skills/blob/21df471416b83c64d3eafbbb56a3234a70f17e6b/skills/normalise-outreach-names/SKILL.md, which is licensed MIT (repository). 769 words, 9 headings.
Normalise outreach names
A merge field is a promise that a human wrote this. "Hey NORTHWIND LTD" breaks it instantly. Every list gets these rules before it touches a template.
Before you start
This skill works on a list, so it rarely needs the shared context file. If .agents/product-marketing.md (or .claude/product-marketing.md) exists, check it for a "words to use" or brand list that should override the defaults below.
Confirm, in one message:
- Which file, and which columns hold the person's name and the company name.
- Whether to reuse a caps-OK list from earlier runs (look for
caps-ok.txtnext to the CSV).
If the answers are obvious from the file, proceed and state your assumptions.
Workflow
- Read the CSV and identify the name and company columns.
- Add
First nameandCompany cleancolumns. Never overwrite the originals. - Apply the first name rules, then the company rules, then the caps policy.
- Verify any unfamiliar all-caps names (see the caps policy).
- Print the diff and run the say-aloud test before writing the file.
First names
- Strip emoji and symbols, then anything after a comma (credentials: "Priya Shah, CPMM" becomes Priya).
- Drop honorifics (Dr, Mr, Mrs, Ms, Prof): "Dr Tom Hale" becomes Tom.
- Take the first token. If it is a bare initial, take the next token: "J Arun Mehta" becomes Arun.
- ALL-CAPS names get sentence case ("OKAFOR" becomes Okafor), but short initialism names stay ("MJ").
- If the first name is still unusable (a company name, a single letter, or empty), leave it blank and flag the row. Never guess.
Company names
- Strip emoji, ® and ™.
- Drop trailing parentheticals and taglines: "Brightloop (brightloop.io)" becomes Brightloop; "Fleetwise - Logistics Software" becomes Fleetwise; "Castly.io: Live Shopping Platform" becomes Castly.io. Exception: "(previously X)" – drop the bracket and keep the current name ("paydo (previously QuickPay)" becomes paydo).
- Strip legal suffixes, repeatedly if stacked: Inc, Inc., LLC, Ltd, Limited, PLC, LLP, GmbH, GmbH & Co. KG, Pte Ltd, Sdn Bhd, AG, Corp, Co. "Hartmann Tierfutter GmbH & Co. KG" becomes Hartmann Tierfutter.
- The say-aloud test decides length. The merge field holds the name a person would say across a table, not the registered name: Clearpath, not Clearpath Technologies; Easy Move, not Easy Move Removals & Storage. Drop generic trailing descriptors (Technologies, Software, Solutions, AI) when the remaining stem is distinctive. Keep them when the stem becomes ambiguous (a three-letter stem that matches a famous bank or brand) or when it is how people say the name (Ada Health, Street Soccer USA).
- Never use "your company" instead of a name. It is the biggest template tell. For a genuinely unsayable name, rephrase the template around "your team".
- Never "correct" a brand that styles itself lowercase. If the source is lowercase and the brand writes itself that way, trust it.
The caps policy
ALL CAPS is banned in merge fields unless one of these holds:
- True acronym (the letters stand for something), and always AI, UK, USA, and TM.
- Verified brand styling: the company writes itself in caps everywhere. Its website header, LinkedIn page name, and logo agree.
When an all-caps name is not on the caps-OK list and is not obviously an acronym, check before deciding. Fetch the company site or LinkedIn page and see how it writes its own name. One check per name. Add verified names to caps-ok.txt so the next run skips the check.
If you can't verify it, use sentence case. "Quick question about Northwind" reads fine. "NORTHWIND" mid-sentence reads like shouting.
Watch for casing traps
Python's str.capitalize() lowercases everything after the first character. It turns "AI" into "Ai", "TM" into "Tm", and "1VALET" into "1valet" (digit first). Title-case word by word, apply the caps-OK list afterwards, and read the diff before writing.
Output format
- The same CSV with two new columns:
First nameandCompany clean. - A short summary: rows changed, rows flagged for review (with the reason), and any names added to
caps-ok.txt.
Quality checklist
- Original columns untouched.
- No emoji, credentials, honorifics, or legal suffixes left.
- No ALL CAPS unless it is an acronym or verified brand styling.
- No "Ai", "Tm", or other casing-trap damage.
- Lowercase brands left lowercase.
- Three cleaned companies read aloud inside "quick question about {company}" sound like a person talking, not a legal filing or a shout.
- Blank or doubtful first names flagged, not guessed.
Files bundled with it
These load only when the skill asks for them, so they cost nothing until it runs.
Other skills for the same job
Different authors, same problem. Matched on the words in the skill name, across every library in the catalogue except this one.
- sales-outreach by zubair-trabzada · 1,407
- apollo-outreach by OpenClaudia · 708
- outreach-sequence-builder by Varnan-Tech · 672
- cold-outreach-sequence by BrianRWagner · 440
- cold-outreach by shawnpang · 337
- earned-media-outreach by shawnpang · 337
- partnership-outreach by shawnpang · 337
- cold-email-outreach by thatrebeccarae · 162
Need help setting it up?
This page tells you what normalise-outreach-names does and what it needs. Cheetah builds the agent setup it runs inside: data, CRM, sequencing and the guardrails.
Book a call →The directory stays free. There is nothing gated behind this.