Local Phrase Builder

Your services, in the places you actually work.

  • Service by place
  • Spelling variants kept
  • Grouped by area
A blank folded paper map on a table with coloured wooden pins standing in it and a few blank cards beside it in soft daylight.

The guide

A local phrase is a service and a place, and the place is the hard half

Joining a trade to a town is easy arithmetic. Spelling the town, telling two towns apart and deciding which pages deserve to exist is where the real work sits.

  • 175 phrases from the worked example: 2 x 17 x 5 + 5
  • 32,350 places in the Census Bureau's 2025 national places gazetteer
  • 28 states with a place named Franklin in that file
  • 82 names in that file holding a letter outside plain ASCII
  • 214 to 1 names starting St. against names starting Saint in that file
Read the full guide Fold the guide 7 min · 15 sources

Ask a plumber what they do and you get two answers in one breath: the work, and where they will drive to do it. Local phrasing is that sentence turned into search words. A boiler repair in one town is a different errand from a boiler repair forty miles away, and the person typing knows it. The service says what is wanted. The place says whether this business can be the one to do it.

That makes a local phrase list look like simple multiplication, and in one sense it is. Take every way of naming the work, take every way of naming the places, and join them with a few patterns. The count is fixed before a single phrase is written. The difficulty is that one side of the multiplication is clean and the other is not. Services are words the business chooses. Places are names other people chose, long ago, with their own spelling, their own punctuation and their own duplicates.

Place names are data with real spelling problems

Toponymy is the study of place names, their origins, meanings, usage and types. A list of service areas is a small toponymic inventory, and it inherits every problem the field knows about. Names repeat. Names carry accents. Names abbreviate their saints and hyphenate their rivers. None of that matters to the people who live there, and all of it matters to a list that a machine will compare, sort and remove duplicates from.

Repetition first. The United States Census Bureau publishes gazetteer files: plain, pipe-separated tables of geographic areas. The 2025 national places file lists 32,350 incorporated places and census designated places. Stripping the descriptor that ends each name (city, town, village, CDP and the like) and grouping what remains, Franklin turns up in 28 states, Clinton in 27 and Greenville in 25. A business that writes “plumber in Franklin” has written a phrase that could mean any of them. The town name alone is not an address. It is a hint that only the surrounding words can resolve.

The same file shows how names are spelled. Of its 32,350 names, 82 names hold a letter outside plain ASCII: Española, Cañon City, Doña Ana, Utqiaġvik. Saints are mostly shortened, by 214 to 1: 214 names begin “St.” and exactly one begins with the full word Saint. Apostrophes and hyphens are scattered through hundreds more. A visitor who searches for Espanola without the tilde, or for Saint Marys spelled out, is looking for the same place under a form the official list never uses.

Text encoding adds a quieter layer. Unicode allows the same visible letter to be stored in more than one way. An n followed by a combining tilde is defined as canonically equivalent to the single precomposed n with tilde, so two strings can look identical on screen and still differ byte for byte. JavaScript exposes the standard normal forms through its normalize method: NFD takes a string apart into base letters and combining marks, and NFC puts it back together. Comparing names without normalizing them first is how one town ends up listed twice.

Removing accents is not a neutral act either. A collator set to compare only base letters treats a with diaeresis as plain a in German and as a separate letter in Swedish. There is no universal answer to whether two spellings are the same name. So a careful tool does not strip accents silently. It decomposes the name, removes the marks from Latin letters only, and lists the result as a variant beside the original. Letters that have no decomposition at all, such as a slashed o or an L with a stroke, are left as typed and named, because pretending to fix them would be guessing. Greek, Cyrillic, Devanagari and Japanese names are left alone entirely.

Case needs the same discipline. The Unicode case folding data exists so that strings can be compared without regard to case, and its full mappings let a German sharp s match a doubled capital S. A phrase list that folds case this way finds the duplicates a plain lowercase pass would miss. It also has to resist folding too much. A Latin capital A and a Cyrillic capital A are drawn the same and are different letters. They should never be merged.

Telling two places apart

Duplicates inside one business’s own area are more common than people expect. A district called Test Park can sit under two different towns on the same list. Written alone, “drain cleaning in Test Park” is ambiguous on the page and in the reader’s head. The fix is old and simple: say which one. The place keeps its parent’s name as a qualifier, so the phrases become Test Park Exampleton and Test Park Saint Sampleton. When the two parents share a name too, the qualifier climbs another level until the chains differ. When nothing distinguishes them, the honest output is a warning, not a guess.

Nicknames and places the business does not serve belong in the same tree. Locals may call the Demo Quarter by an older name, and that name is worth a phrase of its own. A town just outside the van’s range should stay on the list, marked not served with the reason written down, so that it is left out of every output and nobody adds it back by accident next season. Everything under it inherits the exclusion. Structured data on the web has a property for exactly this boundary, areaServed, described as the geographic area where a service is provided.

What “near me” needs and what it does not

“Near me” is the odd form out. It names no place, so it cannot be multiplied by the place list. One phrase per service is enough: plumber near me, boiler repair near me. The location that gives such a search its meaning belongs to the searcher, not to the page. A web page cannot be near everyone, and it cannot see where a visitor stands unless they agree. The W3C Geolocation specification requires express permission from the person before any location data is shared with a web application.

So a near-me phrase is a reminder of intent rather than a string to paste into a heading. It says the searcher wants someone close by and available. What answers that is plain information on the page: the towns covered, the hours, a way to call. Repeating the words “near me” through the text tells a reader nothing they did not already assume.

Covering an area is not the same as spamming it

Here is the worked example the tool opens with. Three services, two of them with a synonym, give five service forms. Ten places sit in a small tree under Sample County, one of them marked not served, which leaves nine. With the shared Test Park qualified, the saint written both long and short, accents, apostrophes and hyphens given their variants and one nickname added, those nine places become 17 place forms. Two patterns use a place and one, near me, does not. The count is 2 x 17 x 5 + 5, which is 175 phrases, stated before any is made.

The tool then groups the 175 by place, by service or by parent area. Grouped by place, nine place groups appear beside the near-me group, and every one of them holds the same shapes: the same services in the same patterns, with only the town swapped. That observation is the useful output, more than the list itself. Nine pages written from those groups would be nine copies of one page.

Search engines have published views on exactly this. Google’s spam policies, read on 21 October 2026, describe doorway abuse and list among the examples multiple pages targeted at specific regions or cities that funnel users to one page, and substantially similar pages that are closer to search results than to a browsable hierarchy. Its guidance on helpful content asks whether pages are made mainly to attract visits from search engines rather than for people. This page is not affiliated with any search engine, and those documents describe one company’s current policy, not a law of nature. They match common sense closely enough to plan by.

The practical rule is one page per group worth reading, not one page per phrase. A town earns its own page when there is something specific to say about working there: the old housing stock and its pipework, the hard water, the parking, a job finished last winter with photographs and permission. A district without that story is better served by a line on the area page that lists every place covered. The phrase list does its job when it shows which groups have a story and which do not.

What the method cannot do

A phrase builder works only on the words it is given. It has no search volumes, no difficulty scores and no rankings, and it should never imply any. It cannot know whether locals say Saint or St, whether a nickname is current or quaint, or where a boundary really runs. The board it draws is a schematic grid in list order, not a map. The variants are mechanical, and the person who knows the area decides which are real.

Its output is also only as safe as the files it writes. A spreadsheet that receives a cell starting with an equals sign may treat it as a formula, a risk OWASP documents as CSV injection. The files therefore put a single quote before such cells, and they follow the CSV format described in RFC 4180 so that any reader opens them the same way. Even that is a mitigation rather than a guarantee, as OWASP itself warns. What the tool can promise is narrower and more useful: every place spelled the ways it is really spelled, no town confused with its namesake, no excluded town slipping back in, and an honest count of how many pages are worth writing.

Sources

Every source consulted for this guide. Links checked October 21, 2026.

  1. Toponymy Wikipedia
  2. Unicode equivalence Wikipedia
  3. String.prototype.normalize() MDN Web Docs
  4. Intl.Segmenter MDN Web Docs
  5. Intl.Collator MDN Web Docs
  6. CaseFolding-18.0.0.txt, Unicode Character Database Unicode Consortium
  7. UnicodeData.txt, Unicode Character Database Unicode Consortium
  8. Gazetteer Files United States Census Bureau
  9. Gazetteer Files United States Census Bureau
  10. Spam Policies for Google Web Search Google for Developers, Search Central documentation
  11. Creating Helpful, Reliable, People-First Content Google for Developers, Search Central documentation
  12. areaServed - Schema.org Property Schema.org
  13. Geolocation World Wide Web Consortium
  14. RFC 4180: Common Format and MIME Type for Comma-Separated Values (CSV) Files IETF, RFC Editor
  15. CSV Injection OWASP Foundation