Lee Foot

Product Title Gap Analyser

Compare product titles with competitors using MPN matching to find missing keywords.

Launch the app → View the source

#about

Matches products across datasets using normalised MPN (lowercase, stripped whitespace).

Uses NLTK stopwords corpus with multi-language support (EN, DE, FR, ES, IT, NL, PT).

Text preprocessing: lowercase, punctuation removal, minimum word length filter, custom stopword exclusion.

Collections.Counter calculates word frequency differences.

Streamlit app

Platform
Browser-based (no installation required)
Input
Your crawl CSV with url, h1/title, mpn columnsCompetitor crawls CSV with same columnsUTF-8 or Latin-1 encoding
Output
CSV with content gaps and missing words
Category
E-commerce

Use cases

  • Product title optimisation
  • Competitive content gap analysis
  • Identifying missing product attributes
  • Bulk title improvement suggestions

#features

  • MPN/SKU matching (normalised lowercase)
  • NLTK stopwords: English, German, French, Spanish, Italian, Dutch, Portuguese
  • Custom stopwords input
  • Minimum word length filter (1-10 characters)
  • Collections.Counter word frequency analysis
  • Title length gap calculation

#how-to-use

  1. Crawl your site and competitors with MPN extraction
  2. Upload your crawl and competitor files
  3. Map URL, H1, and MPN columns
  4. Select stopwords language and add custom exclusions
  5. Set minimum word length
  6. Download gap analysis results

#faq

Why do so few of my products match against competitors?
MPN matching is exact after lowercasing and trimming outer whitespace only. Formatting differences inside the value, such as dashes, internal spaces or leading zeros ('AB-123' vs 'AB123', '0451' vs '451'), are not normalised and will not match. Products with no MPN match in any competitor file are dropped from the results entirely, so a small output usually means the identifiers are formatted differently across crawls, not that the tool failed.
How does the tool find my crawl's columns?
It auto-detects columns by substring: any column containing 'url' or 'address' for the URL, 'h1', 'title 1', 'title' or 'heading' for the title, and 'mpn', 'sku', 'product_id' or 'part_number' for the identifier. If your export uses different names, or the wrong column is picked up, override the selection in the Column Mapping expander before running.
How is the Length Gap calculated?
Both your title and each matched competitor title are first stripped of punctuation, stopwords and words shorter than the minimum word length (default 2 characters). The Length Gap is the median competitor word count minus your word count on that cleaned text, and results are sorted by it descending. It can therefore differ from a raw word count comparison of the visible titles.
Why do hyphenated terms appear as one merged word in Missing Words?
Preprocessing removes all punctuation without inserting spaces, so 'heavy-duty' becomes 'heavyduty' before comparison. If competitors hyphenate a term you write as two words, it can be flagged as missing even though you effectively have it. Adding the merged form as a custom stopword suppresses the noise.
What happens when a competitor lists the same MPN more than once?
Only the first matching row from each competitor file is used for the comparison; any further products with the same MPN in that file are ignored. Deduplicate competitor crawls by MPN first if you want control over which version is compared.

/contact

Want me to run this for you? I run this tool as a managed service, or build something custom around your data. You get the insights without touching the code.