← Back to home

NorskOrd — AI Vocabulary Builder

Jun 2026 · personal tool · built through iterative LLM collaboration

HTML JavaScript LLM orchestration Claude API localStorage product design

NorskOrd started as a personal need: while studying for Norskprøven B1, I wanted richer word entries than a flashcard app or a dictionary gives. When I look up a Norwegian word I want the whole picture — the definite and indefinite forms, the gender, the register (formal, informal, or slang), IPA, example sentences, and a short grammar note — all expandable on demand, and savable so I can build a personal bank of exactly the words I'm weak at.

Existing tools each missed a piece. Flashcard apps store a word but don't explain it. Dictionaries explain a word but don't let you curate and track. I wanted both, plus a way to work systematically through the high-frequency words that make up the bulk of everyday Norwegian.

I built NorskOrd by orchestrating a large language model end-to-end rather than writing every line by hand. I scoped the feature set, designed the structured-entry schema the model fills in for each word, and drove the iteration — but the build velocity came from working with the LLM as a collaborator. The point of the project is the product thinking and the orchestration, not a hand-rolled NLP engine: the linguistic lookup is Claude returning a structured entry per word, and I built the application and the workflow around it.

The interesting work was in the iteration. Getting persistence to survive across sessions, making slang and compound words (like dokø — toilet queue) resolve to their real meaning instead of a wrong dictionary match, normalising verb forms so å spre and spre save as one entry, and reasoning through the cost and privacy trade-offs of running an AI-backed tool publicly — each of these was a concrete product decision, not a line of boilerplate.

Lookup with structured entries: Type any English or Norwegian word or phrase and get a full linguistic entry — translation, IPA, word class and gender, all inflected forms (verb conjugations, noun declensions, adjective degrees), two example sentences in context, a B1-pitched grammar note, a register tag, and tappable related words. Save any entry to your personal bank with one click.

My Words bank: A curated, filterable store of saved entries (verbs, nouns, adjectives, phrases). Tap any word to re-open the full breakdown, delete what you've mastered, or export the whole bank as JSON for backup.

High-frequency-word tracker: A progress panel for working through the ~500 most common Norwegian words in tiers and sets — recording how far you've got, the last set completed, and notes on what to revisit.

Self-contained and persistent: The whole tool is a single HTML/JS file with no build step. State persists in the browser via localStorage, and live lookups call the Claude API directly with a structured-output prompt.

Build

Single file

Tabs

3

Backend

LLM-powered

Live lookups need an API key, which can't be exposed on a public page. So the demo runs in two modes. By default it covers a fixed, curated set of words and phrases that work instantly — no key, no cost — so anyone can try the full interface, save words, and explore the tracker. To look up any word, you add your own Anthropic API key, which is stored only in your browser and used only for your own lookups. The demo opens with a sample word bank and progress already populated so the experience is immediately tangible.

The most useful skill here wasn't coding — it was turning a fuzzy personal need into a precise spec the model could build against, then steering it through real problems. Knowing what to ask for, recognising when an approach was a dead end, and deciding what was worth fixing mattered far more than any single function.

It also clarified where an LLM-as-backend is the right tool and where it isn't. Using a model to generate rich, structured linguistic entries on demand is a genuinely good fit — but it forces honest decisions about cost, latency, privacy, and what should be cached or curated rather than generated live. The two-mode demo is the direct result of taking those constraints seriously instead of pretending they don't exist.