Chicago Trades
- Web Design
- Web Development
- Local SEO
- Multi-site Templating
- Self-initiated
- Visit live site ↗
One template, ten client configurations, nine deployed. Sourced from the City of Chicago licence register.
A licensed trade with no website is invisible at the moment somebody decides whether to call them. Chicago publishes every licence it issues, so the businesses in that position are a query away rather than a guess. The hard part is not finding them. It is what you build next without pretending to be something you are not.
Self-initiated and unpaid. Not commissioned by any of the businesses involved. Research, data work, design, build and deployment.
- Filtering 1.2M licence records to a working shortlist
- Cross-referencing licence data against existing web presence
- One Next.js template driving every client configuration
- Build-time preset selection, so one repository serves ten sites
- Disclosure bar and noindex wired to a single switch
- Per-client deployment, each ready for its own domain
Finding who to build for
The City of Chicago publishes its business licence register: 1,203,585 records, 494 MB of CSV, every licence issued and renewed with the trade, address, ward, licence number and dates attached.
What it does not contain is whether the business already has a website, which is the only column that mattered. So the filtering ran in two passes. First by licence activity and trade, down to construction, roofing, landscaping, mechanical and auto repair. Then each remaining business was checked against directories to see what web presence, if any, already existed.
That produced 228 rows across four lists, ordered by how badly each business needed the thing I was going to offer. The most useful column turned out to be the least technical one: a note recording where each phone number came from, so I would know how much to trust it later.
One template, ten businesses
A site per business is ten codebases to maintain, which is nine too many. Instead there is one template and a config object per client carrying copy, services, colours, hours, service area, schema and SEO. Switching the active preset changes the entire site, including the Tailwind palette, without rebuilding the design system.
Locally that is a CLI: npm run use richmond-glass. That works on a laptop and does not work on a host, because a hosted build reads from git and would ship whichever preset happened to be committed. The deployed build resolves the client from an environment variable instead, and an unrecognised name throws rather than quietly falling back to a default.
That last decision is the one worth keeping. The failure it prevents is the silent kind: a typo in a hosting dashboard putting one company’s copy on another company’s domain, live, with nothing in the build log to say so.
Publishing a site with somebody else’s name on it
Building a website for a business that has not asked for one raises a question with no engineering in it: what does the page say about itself while they have not agreed to it?
Every one of these sites carries a bar fixed above the content, which cannot be scrolled past or covered, stating that it is an unsolicited design concept, that it is not affiliated with or endorsed by the business, who prepared it, and that the contact details are taken from public records and are unverified.
The same config field also sets noindex. The disclosure and the search-engine exclusion are deliberately one switch rather than two, because a speculative site ranking for a real company’s name is a problem whatever the banner says. When a business agrees the site is theirs, the field comes off and both reverse together.
Where the source data was thin the page says so instead of filling the gap. One firm has 464 permits on public record and no project detail I could verify, so the case studies on their page are placeholders and are labelled as placeholders.
Where it stands
Nine sites are deployed, one per business, each on its own URL and ready to take its own domain. None of the businesses has commissioned one. This is speculative work and the write-up would be dishonest if it implied otherwise.
What it has produced is a repeatable process rather than a portfolio piece: a filtered list, a template that configures in minutes, a production build of under thirty seconds a site, and a standard for publishing work about somebody before they have agreed to it.
Want to talk about the work?
Tell me what you have in mind and what it has to do. I answer within a day, and I will say plainly if I am not the right person for it.