Normalize job titles

How it works

what happens to one messy row
INVP, Sales & Marketing at Acme | ex-GoogleRAW
CLEANVP of Sales & MarketingTITLE
LABELSVP · Sales · score 4SORTABLE
MERGE{{title}} → VP of SalesSAFE TO SEND
Nothing is uploaded. The list is parsed in the page and the CSV is written by your browser.
01

Paste the list

One title per line, or paste whole CSV rows. If the first row has a column called title, position, role or headline, that column is used and every other column is carried through to the export.

02

Strip the noise

Company names after “at”, pipe-separated taglines, bracketed asides, emoji, and the ex-employer boasting people put in LinkedIn headlines all come off. Abbreviations are expanded and acronyms kept upper case.

03

Label and score

Each title gets a seniority band, a department and a decision score from 0 to 5. Assistants, interns, former roles and board seats are flagged separately, because a C-level match on “EA to the CEO” is the classic false positive.

04

Export

Download the CSV with the new columns appended, or copy just the merge titles. Filter to decision makers only if you want the short list.

Why raw titles break sequences

A scraped list carries whatever the person typed into their profile, which is not a job title so much as a small advertisement. “Head of Growth | B2B SaaS | ex-Google | Angel Investor” is one field in your CSV, and if it goes straight into {{title}} your first line reads like a parsing error. Personalisation that is visibly automated is worse than no personalisation, because it tells the reader the message was never meant for them specifically.

The second problem is sorting. You cannot prioritise a list you cannot group. Ten thousand rows of free text contain perhaps forty real seniority levels and a dozen departments, but only after somebody maps “sr. mktg mgr”, “Senior Marketing Manager” and “Marketing Manager (Senior)” onto the same thing. That mapping is what this does.

The bands

Seniority is resolved in priority order so the strongest signal wins: Founder / Owner and C-Level first, then VP, Director, Head, Manager, Lead, Senior IC, Entry, and plain IC for everything left. Order matters more than it looks: “Senior Director” must land on Director and not on Senior IC, and “Chief of Staff” must not land on Manager. Board seats and advisory roles are pulled out into their own band because they are rarely operational buyers and will inflate your C-level count if you let them.

The decision score is a blunt 0 to 5 derived from the band, then knocked down by the flags. An assistant to a C-level drops to 1. A former role drops to 1. An intern drops to 0. That is deliberately harsher than the band alone, because those three patterns are exactly what makes a “C-suite verified” list look impressive and perform badly.

Departments, and where it will be wrong

Department is keyword matching, in a fixed order, which means a title that names two functions gets the first one that matches rather than a judgement call. “VP of Sales & Marketing” is filed under Sales and flagged as carrying two functions. Cross-functional titles, invented titles (“Chief Happiness Officer”), and non-English titles are the weak spots — the first two land in Executive or Other, the third mostly passes through cleaned but unlabelled. Check the Other bucket before you trust the summary; if it is large, your source is not what you think it is.

What to do with the output

Filter to score 3 and above for the first send and keep the rest for a lower-priority sequence rather than deleting them — Managers forward internally more often than VPs reply. Drop the flagged rows entirely; there is no sequence that works on an intern. Map merge_title rather than title_clean into your sending tool, since the merge column is the first function only and reads naturally inside a sentence. Then run the list through the email verifier before the first send, and the list splitter to spread it across your inboxes.

Frequently asked questions

Does anything leave my browser?

No. The parsing, scoring and CSV writing all happen in the page. Nothing is uploaded, stored or logged.

How big a list can it take?

Two thousand rows per run, with the first three hundred shown on screen and all of them in the CSV. For bigger lists, split the file or send it to Rooster4am.

Will it handle non-English titles?

Partly. Accented characters survive and the cleanup still works, but the seniority and department rules are English keyword rules, so a French or German title usually comes back cleaned but labelled Other.

Why did a C-level title score low?

Look at the flags column. “Assistant to the CEO”, “ex-CTO” and “Board Member” all match C-level wording and are all deliberately scored down.

Can I keep my other CSV columns?

Yes. Paste the full rows with a header line. If a column is named title, position, role, designation or headline it is used as the input and every other column is written back out unchanged.

What is the merge title for?

The value to put in {{title}}. It strips the second function, the region qualifier and anything after a slash, so the sentence you wrote around it still reads properly.

Last reviewed

Related tools

What to run next

The checks that most often follow this one.

Find, verify & clean

More in this category

Read more

Guides that go deeper

Services

When the tools tell you something is wrong

The diagnostics here are free and always will be. When the fix is bigger than a DNS record, this is the work I do.

Get in touch

Start with a call

Bring a domain and the symptom. I will tell you what is actually wrong and whether you need me at all — plenty of people leave that call able to fix it themselves.

Thirty minutes, no pitch

We will run the checks together on your actual domains, and you will leave knowing what is broken, what it takes to fix, and what it should cost. If that is a job you can do in-house, I will say so.

Based inRangpur, Bangladesh — all time zones
RepliesWithin one business day
LicensingWorkspace below list price
Back to top