Your site has two readers. One page. Two readers. Some readers want it easy. Some want ALL the details. Two reader types. One page. your page is giving mixed signals. Both of your readers left. Your site has two readers. Always has. Show each one the version they want. Both versions in the DOM. A 1 KB script picks. Give every reader their favorite words. Serve both. One 1 KB script. let it code-switch. one toggle does it. Fix the words first. The rest is a longer conversation. Back in my day we wrote it properly the first time.
Bifocal is dark mode for words. One page contains a plain version and a technical version of your copy. The reader flips between them and the choice sticks. This page runs on it. Try the switch below.
A theme toggle for copy. The switcher sets data-audience on <html>, one CSS rule hides the other lens, and the pick persists in localStorage. Plain HTML, no build step. This page runs on it.
It's like a magic book. Press the button and the same page tells the story a different way. Easy words for people who want easy, tricky words for people who love tricky.
A copy toggle. Two versions of your messaging in one page. The reader picks and the preference sticks. Install is one script with no pipeline change.
ok so it's dark mode but for words. your page keeps every version and the reader picks the one that doesn't make them close the tab.
Your hero reads like three people edited it and nobody read it back. Bifocal won't fix your taste. It will let you ship one version for humans and one for engineers, so each can be disappointed in their own language.
It's a switch. Like the one on the wall. Flip it and the page shows different words. No app, no account, no subscription, nothing phoning home. One small thing that does its job and then leaves you alone. They used to make everything this way.
Copy written once loses one of the two readers.Single-variant copy fails one audience by construction.One way of talking can't make everyone happy.Single-copy pages lose half the audience.your copy picked a side. the other reader noticed.Your page picked a favorite reader. It picked wrong.You shouldn't need an engineering degree to read a web page.
To an engineer, plain copy reads as fluff. Precise copy sends everyone else away at the first acronym. Most sites pick a side and lose the other reader. The same promise, written for each: Copy tuned for the buyer reads as marketing to the evaluator. Tune it for the evaluator and the buyer stops at the jargon. One source string cannot serve both. The same claim, both renderings: If you talk in easy words, the builder people ask "but HOW does it work?" If you talk in builder words, everyone else stops listening. Look, the same promise for each reader: Simple copy loses evaluators, precise copy loses buyers, both cost pipeline. Same claim, both renderings: write it simple and the devs don't buy it. write it technical and everyone else leaves. same claim, both dialects: You wrote "secure and scalable" and called it a day. The engineer wants a cipher name. The buyer wants a sentence without an acronym. Neither got one. Nobody writes a clear sentence anymore. Half the web is buzzwords and the other half is jargon, and both halves needed an editor. We used to ship printed manuals a plumber and an engineer could both read. The same promise, written for each:
The assessor measures this. Paste a URL and it shows which reader the page ignores. The example above scores 78% technical. The buyer is the reader it loses.The assessor takes one URL and returns a skew score. This sample reads 78% technical. The buyer stopped above the fold.A helper can check. Show it your page and it says who you forgot. This page forgot the not-builder people: 78% tricky words.Assessor: URL in, skew score out. Sample reads 78% technical. Buyer loss, quantified.the assessor does not lie. paste your url and it tells you who you lost. this page is 78% technical. the buyer left.The assessor puts a number on it. This sample is 78% technical, so your buyer left at the subhead. Add another acronym and see if that helps.There's a meter for this now. Paste your address and it names who you're ignoring. This one reads 78% jargon. The customer went elsewhere.
Only the switcher reaches your visitors.One component ships to prod. The rest run at build.Only one helper goes to your page.One component touches production.one part ships. the rest stay home.Only one part ships, so there is only one you can break.Three parts. Two stay in the workshop.
Bifocal drafts the second version of your copy. You approve every line, and a small script shows the right version to each reader. The second variant used to cost a full rewrite of the site, which is why nobody shipped this alongside dark mode. A model drafts it at build time now. The runtime stays static, with no dependencies. The computer helper writes the other ways for you, and a grown-up checks every word before anyone sees it. LLM generates the variants at build. Human review gates publish. Runtime is static. the llm drafts the other versions and you fact-check them before they ship. You barely wrote it once, so no, you will not write it twice. The machine drafts, you approve, and a visitor finally learns what you sell. You don't write your site twice. The computer drafts the second version and you check its work before it goes anywhere. Trust, but verify. Mostly verify.
The switcher
A small script and a naming convention. It reads the visitor's pick, remembers it, and shows that version. This is the only part that ships to your site.About 1 KB with no dependencies. It sets data-audience, injects the visibility CSS, persists the pick to localStorage, and renders the toggle. Nothing calls a model at runtime.A tiny robot that lives on your page. It remembers which words you like and shows you those. That's its whole job.1 KB script. Sets the audience flag, persists the choice, zero dependencies. The only shipped component.a 1 kb script that remembers your pick. no framework and no cloud.One kilobyte. Less code than your cookie banner, and this one does something for the visitor.A small piece of code with no moving parts. It remembers what the visitor picked, the way a radio remembers its station, and shows the right version. That's the whole thing. Software with one job tends to keep working.
The generator
Point it at your page. It writes the second version of your words for the other reader, and you review every line before it goes live.One batched model call per page. Each text node comes back unchanged or as a paired {plain, dev} rewrite, reassembled into data-bf markup. It runs at build and a person reviews the output. Live traffic never touches it.The computer reads your page and writes the story the other ways. You check every word before it goes out, like a teacher.Build-time LLM pass produces the variants. Human review required. Zero runtime inference cost.the llm rewrites your copy for the other audiences and you review it before it ships. the robots stay in preprod where they belong.A model rewrites your copy, which was not a high bar. You review every line, so whatever blandness remains is yours.The machine writes the second draft. You read every line before it ships, because you never sign anything you haven't read. It runs once, when you build the page, and never touches a live visitor.
The assessor
Paste your URL and it shows, in seconds, which reader your current site leaves behind. Free, before you install anything.The same call, run against a URL. It returns a skew score for how regular- or dev-slanted the page reads, with the worst lines shown rewritten. Zero install.Show it your page and it tells you who can't read it. For free, before you decide anything.Free skew audit per URL. Identifies the ignored segment pre-purchase. Zero install.paste your url and it tells you which reader you've been ignoring. free, no signup.Paste your URL and get told, with numbers, which half of your audience you ignore. Same as this page, with your copy in the chair.Paste your address in and it tells you which reader your page ignores. We used to have a name for this. An editor. This one is free and doesn't take lunch.
The lenses.Every registered lens.All the ways this page can talk.Available lenses.the lens lineup.Six voices. Your site has half of one.Your channel guide.
A lens is one version of the page, written for one reader. This page runs on two. The other four have their own page.
One lens = one data-audience value plus its data-bf spans. Two core lenses here; four more registered at /others.
A lens is like reading glasses for words. Same page, different words. The two normal pairs live here. The funny glasses have their own page.
One lens per audience segment. Two core. Extras: /others.
the main two live here. the weird ones got their own page.
The two sensible lenses are below. The circus you are enjoying right now moved to /others.
Channels, we used to call them. The regular ones are here, the cable package is on another page, and you still found the one they don't print in the listings.
Regular
For the reader who wants the point and skips the plumbing. Plain words, and promises you can check.
Technical
Claims with the specifics: algorithms, versions, limits, exact behavior. For the reader who opens the docs before the pricing page.
The other lenses
ELI5, Exec, Gen Z, Roast. The same page and the same facts in four other voices. Each one has its own card and a live demo one click away.
Boomer
Not in the menu, not in the listings. A seventh lens behind ?boomer in the address bar, the way easter eggs used to work: no announcement, no badge, just there for whoever thought to look. And it proves the point. The contract doesn't stop at two.