How Glassdoor got its users
One page per company, filled by employees in exchange for access to everyone else's. The contribution wall was the mechanic.
Confirmed. The team said it publicly, or the signals leave no room for doubt.
It worked because of something they already had, or a window that has closed. Copying it will not reproduce it.
The edge you do not have: A stock of employee reviews banked before LinkedIn moved into the space
- A traffic base that does not collapse when you stop publishing
- Acquisition that owes nothing to any social platform
- A proprietary or painful-to-assemble data source
- A template with a reason to exist page by page
- 6 to 12 months before it compounds
Programmatic SEO in 2026
Still alive, but the bar has moved. Thin pages get deindexed, so you need real data on every single page.
Everything on this channel →The play
5 steps, in the order they ran them.
- 1
Do not go looking for a company list. Glassdoor's Write Review flow carries an "Add a new Employer" option that asks the contributor for website, HQ location, employer type and headcount, then mints a permanent employer ID (Glassdoor's own is E100431, visible in /Salary/Glassdoor-Salaries-E100431.htm and in its robots.txt). Build that same escape hatch: whoever has something to say about a missing entity creates the row, so your list grows while you sleep.
done whenCan a stranger create a brand new entity in your product without you touching anything? If rows only appear when you add them by hand, you have a catalogue, not a page factory.
- 2
Never ship one page per entity. The same employer ID renders in separate top level directories, cross linked as tabs: /Reviews/, /Salary/, /Interview/, /Benefits/, /Jobs/, /Overview/Working-at-. Compare /Salary/Glassdoor-Salaries-E100431.htm with /Jobs/Glassdoor-Jobs-E100431.htm. Titles are rebuilt from the live table, shaped "How Much Does {Company} Pay in {Year}? ({N} Salaries)", so each submission rewrites the title. One record, one URL per question.
done whenTake your single best entity and write down every distinct thing someone might want to know about it. If all of them land on one URL, you are running one page where five could stand.
- 3
Add a second field and put it in the slug. Live URL: /Interview/EY-Senior-Software-Engineer-Interview-Questions-EI_IE2784.0,2_KO3,27.htm. The number pairs are character offsets into the slug, the first marking the company span, KO marking the job title span. The city variant swaps in IL and IC: /Salaries/chicago-il-pricing-salary-SRCH_IL.0,10_IC1128808_KO11,18.htm. Readable to a human, parseable by your router, no lookup table.
done whenRead one of your generated URLs out loud. Can you tell which part is the entity and which is the second field, and could your router split it without querying the database?
- 4
Copy the give to get wall, and copy where it stops. Reviews, salaries, interviews and benefits open only after the visitor posts a contribution of their own; Jobs and Community stay reachable with a plain account. The page still ranks on what it holds, and the stranger who lands reads the top of it before being asked to add a row. Pick now which of your sections stays free forever and which one charges in data.
done whenOpen one gated page in a logged out window. Is there enough visible above the wall that a stranger, and a crawler, can tell what question the page answers before being asked to contribute?
- 5
Budget for the junk your template mints. A live listing sits at /Salaries/miami-made-up-job-title-salary-SRCH_IL.0,5_IM558_KO6,23.htm, because the salary template fires on any keyword string somebody typed. Glassdoor's robots.txt is the cleanup: it blocks /Explore/browse-companies and nearly all pagination (/Reviews/*_P*.htm, /Interview/*_IP*.htm) while allowing only /Salaries/*_IP2 through _IP5. Write those rules the day you ship the template.
done whenSort Search Console by impressions ascending. If the bottom of the list is combinations nobody searched and your data barely fills, the template is minting rows faster than the data arrives.
The product itself
read from glassdoor.com, live“Découvrez l’entreprise qui vous mérite”
Run this against your own product
Carries the play above, and is written to tell you no when this channel is out of reach for you.
The same twelve channels as an agent skill. It reads your repository and eliminates what you cannot run. Open source, MIT.
curl -o ~/.claude/skills/howtodistribute/SKILL.md https://howtodistribute.com/skill.md
How big it got
Acquired by Recruit Holdings
What else they ran
They ran the same play
Want this verdict on your product?
Describe it. You get back the channel I would run in your place, the 30-day plan, and the number at which you stop.