Case study

token.ee — A Trilingual Publication That Explains AI in Plain Words

A trilingual publication that explains AI in plain words — a five-step path for beginners, a glossary written one sentence at a time, a live tokenizer and articles in Estonian, English and Russian, built to be found in search and quoted by AI assistants.

Client
token.ee
Industry
Digital publishing
Timeline
1 week
Year
2026
Stack
PostgreSQLTypeScriptNext.jsnext-intlWebGPU / vGPUgpt-tokenizerCloudflare R2Tailwind CSS
Live site
www.token.ee
token.ee — A Trilingual Publication That Explains AI in Plain Words

token.ee explains artificial intelligence in simple words, for people who are not technical and should not have to become technical to use it. It publishes in Estonian, English and Russian, and it starts where the machine starts. A language model does not read words; it reads tokens — fragments of text with a number attached — and once a reader understands that one idea, the rest begins to fall into place: why an answer can sound certain and still be wrong, why a long conversation forgets its beginning, why the way you ask changes what you get. The site is named after it, and the name is its own first lesson: in the encoding GPT-4o and GPT-5 use, the word token is itself exactly one token. We built the publication end to end — the beginner's path, the glossary, the interactive tokenizer, three native editions, and the search, publishing and discovery machinery underneath.

The opportunity

Almost everyone has typed a question into ChatGPT by now. Far fewer know what happens next, and that gap is where most disappointment with AI comes from — not from a bad tool, but from wrong expectations. Someone who believes the model looks facts up will trust an invented citation. Someone who believes it remembers everything is surprised when a long chat loses the thread. The explanations that could fix this are mostly written for engineers, written to sell something, or written in English.

That last gap matters in Estonia, where people read in three languages: Estonian for work and public life, Russian as a first language for a large share of the population, English for everyone arriving from elsewhere. A reader who wants to understand what a context window is, in the language they think in, has had very little to read — and so has the AI assistant they increasingly ask instead, which can only repeat what somebody has published.

The brief was to explain AI the way you would explain it to a friend who is clever but has not read about it: no jargon, no hype, no circular definitions, and three native editions rather than one site with a language switcher. And because the site teaches readers why AI makes things up, it could not afford to make anything up itself.

What we built

A way in for complete beginners

Nothing on the site assumes the reader already has the vocabulary. The first link in the navigation, and the first button on the homepage, lead to AI for beginners, which opens with the promise the rest of the site has to keep: you do not need to be technical, you need to know five things, and after that it is practice. The five steps run in order and take about an hour — understand that a language model predicts the next piece of text rather than knowing anything; learn the word token; ask properly; always verify; decide what you paste in — each in two or three sentences, before the page hands the reader on to the glossary and the tokenizer.

The eleven articles take on the questions people actually ask: what a token is, why AI lies, what a context window is and why AI forgets you, how to write a good prompt, how a machine turns noise into a picture. Each shows its reading time and difficulty level up front, with a table of contents and heading anchors that copy a shareable link. Nine topic hubs gather them by what a reader came for, and two comparisons answer the choices readers actually face: ChatGPT, Claude or Gemini, and whether paying for AI is worth it. Even the cover images follow the rule. They are literal rather than metaphorical — no glowing circuits, no holograms — because a beginner should not have to decode a picture before reading the title under it.

A glossary written one sentence at a time

The glossary is the site's backbone: twenty-seven terms, from token and prompt to RAG, MCP and the AI Act, grouped into fundamentals, language models, tools, images, audio and video, business and law, and security. Every term opens with one sentence a reader could repeat to someone else, then follows exactly the same three steps — Simply put, Example, Why it matters to you — so a reader who has understood one term already knows how to read the next. The shape is enforced rather than hoped for. A content check flags any term whose headings drift from the ones its siblings use, which is how a Russian term headed Простыми словами, where the other twenty-six said Проще говоря, was caught. Both are correct Russian; only one is the convention, and the convention is what makes a glossary easy to scan.

No reader should be stranded on a word. The first mention of a glossary term in any article becomes a link to its definition at render time, longest term first, so suur keelemudel is matched before keelemudel. Matching uses Unicode-aware word boundaries, because JavaScript's \b is ASCII-only and would happily match inside a Cyrillic or accented word, and every term declares its inflected forms, since Estonian rarely leaves a noun in the case it was defined in. Not one of those links is maintained by hand.

Showing how the machine reads

Tokens are easier to show than to describe, so the site shows them. The homepage hero puts one question in a translucent card — What is artificial intelligence? — first as a person reads it, then as the model does: five pieces, each with its token id. Those ids, and the token count on every glossary term, come from the real o200k_base tokenizer rather than from anyone typing a number.

The tokenizer page turns the idea into something to play with. Type anything, in any of the three languages, and watch it split into coloured tokens as you type, with counts for tokens, characters and words and a switch to show every id. It runs entirely in the reader's browser — the text is never sent anywhere — and its vocabulary, about 3.6 MB, is loaded lazily and only on that page, so it costs nothing anywhere else on the site.

Three editions, not three translations

Estonian is the default and serves unprefixed from the bare domain; English and Russian live under /en and /ru, and every route carries its own slug in each language — /artiklid/mis-on-token, /en/articles/what-is-a-token, /ru/statji/chto-takoe-token. Estonian slugs drop diacritics and Russian ones are transliterated, because that is what people type, and the middleware stops next-intl from advertising one article's slug under all three languages' hreflang tags.

The editions are written for their readers rather than converted. An article about Estonia's two words for AI, tehisintellekt and tehisaru, is a small study in how a language absorbs a new concept for English readers, while the Russian edition adds what it means for a Russian speaker living in Estonia: the word you choose decides what you find in Estonian-language sources. Three alphabets side by side also produce errors no proofreader sees — a Cyrillic о inside an Estonian word is pixel-identical to a Latin one, and it quietly breaks search for that word — so a script checker runs over every piece. During the initial build it caught four such slips, one of them a stray CJK character in the Russian edition.

Search that understands how people type

Readers do not type the way an index expects. They skip diacritics, search half of a compound word and use nicknames. Search began as a static index the browser downloaded on first focus, which could see titles and excerpts but not article bodies — seven-eighths of the writing on the site could not be found. So matching moved to where the text lives, in PostgreSQL, and the browser now asks a question instead of downloading a corpus.

The first database version was a regression, caught by testing rather than reasoning. Postgres prefix matching only matches from the start of a word, and Estonian glues words together, so ettevottele missed the article AI väikeettevõttele. The fix filters on substring over a folded copy of every searchable field, backed by a trigram index, and ranks with a weighted text vector, title first and body last. Diacritics are folded so sonastik finds sõnastik, and the text configuration is simple, because Postgres ships no Estonian dictionary and stemming Estonian with an English one is worse than not stemming at all. Topic hubs, services and the tools directory join the same results, so a reader who has only heard the nickname nano banana still lands on Gemini — and typing kontekstiaken costs thirteen keystrokes and a single request.

Publishing without a deploy

The articles live in PostgreSQL, hosted on Supabase but written as plain Postgres — plain SQL over a plain driver, no vendor client library — so the provider is a connection string rather than an architecture. The content layer was asynchronous from the start, even while articles were still markdown files, which made the move into the database a one-line change; before the files were retired, the site was built both ways and the output compared byte for byte. Publishing is now a row write. A database trigger calls the site's revalidation endpoint on every change, Next.js 16's Cache Components regenerate the changed page and the indexes that list it while everything else stays cached, and the sitemap and both llms files refresh within a minute on their own — so a new explanation is findable almost as soon as it exists.

An ocean behind the words

The hero sits on a live ocean: an FFT wave simulation computed on the GPU in WGSL and drawn as a field of glowing particles, rendered with vGPU, Vercel Labs' WebGPU library. It began as a three.js scene that kept losing its WebGL context on navigation — on a dual-GPU laptop, switching graphics chips is itself a context loss — and after four targeted fixes we moved it to WebGPU, with an explicit create-and-dispose lifecycle that guards every asynchronous boundary. The particles blend additively, so they can only glow, which is why the hero band stays black in both themes. There is deliberately no fallback branch: a static CSS wash always sits underneath, a browser without WebGPU simply sees the wash, and every word of the hero is server-rendered either way. Everything else stays out of the reader's way — black and white, hairline borders, Geist for text, and a logo that is a lowercase t and a full stop.

Honest where the decision is made

A site that teaches people to check AI's answers has to be checkable itself. Analytics loads only after an explicit accept; declining, or never answering, loads nothing at all. The AI tools directory — thirteen tools in seven categories, grouped by the job a reader has in mind rather than by vendor — carries no prices, because a stale price reads as carelessness, and its two referral links are disclosed where the reader decides: rel="sponsored" on the link, a visible marker beside it and a standing note at the top of the page, all driven by one flag in the data. The rule was written into the code before the first paid link existed: merit decides the list and the order; commission decides nothing. Brand marks come from openly licensed sources or the products' own artwork, never hand-drawn approximations, and they are re-hosted rather than hot-linked, so no vendor sees a visitor before consent. The contact form verifies a Cloudflare Turnstile token server-side, posts enquiries into ERPFlow.ai's lead-capture API, and fails loudly rather than silently if that connection is ever misconfigured.

Written to be quoted

People increasingly ask an assistant before they open a search engine, and for a publication whose purpose is explaining AI, being the source that assistant quotes is the point. The glossary's one-sentence definitions are exactly the kind of text an assistant can lift whole, and they are marked up as what they are: a DefinedTermSet whose every term page is a DefinedTerm pointing back at the set. The homepage's short answers are a FAQPage, articles are authored by the publication's Organization rather than a personal byline, and the services catalogue is an OfferCatalog that emits no price, because a fabricated figure would be worse than none. An llms.txt maps the key pages, services and every glossary term; llms-full.txt carries the full text of all three editions, about 22,600 words in one fetch; and robots.txt names nineteen crawlers explicitly, from GPTBot and ClaudeBot to PerplexityBot and YandexBot.

The result

token.ee was built in a week: 195 URLs — 65 pages in each of Estonian, English and Russian — with a five-step path for beginners, eleven articles, twenty-seven glossary terms, two comparisons, nine topic hubs, a live tokenizer and a thirteen-tool directory, all published from PostgreSQL without a deploy. It is a small site with one job. A reader who arrives knowing only that ChatGPT exists can leave understanding why it sounds sure of itself when it is wrong, why a long conversation forgets how it started, and what never to paste into a free account — in the language they think in, and without having to become technical first.