nikam.dev ← Blog
2026-07-23 · astrolab · edtech · ai · product

Astrolab: how I built free, method-based career guidance — and grew it to five countries

It started with my teenage nephew, whom every free quiz handed a label instead of an answer. So I built a service that computes your profile from a real method, matches professions with no AI invention, and shows honest salary and admission paths — now in five languages, with per-country data.

Astrolab is free, method-based career guidance — not fortune-telling. A RIASEC test computes your profile, matches professions (the AI explains the fit but never invents one), and honestly shows salary and admission paths — for each of five countries. Below is how I built it, starting with Russia, and the part that took the most work to get right: the salary data.

It started with my nephew. A teenager, time to choose what to study — and every free quiz we found did the same thing: it handed back a label (“you’re a humanities type”) or a list of forty job titles, and stopped exactly where the hard part begins. Who to actually become, and how to get there — figure it out yourself.

I built him something better. And while I was at it, I noticed adults have it worse. People in their 30s, 40s, 50s know they want out of their current work but have no idea what to move toward. The tools that could help either entertain, or make you finish the whole test and only then charge for the result. So I built that side too — the career-change track.

The service is called Astrolab. Free, no signup.

A method, not a mood

At its core: RIASEC (John Holland’s interest model, published in 1959; it powers O*NET, the U.S. Department of Labor’s occupation database today), Klimov’s typology, work values, and a short AI interview. You answer quick cards — there are no right answers — and get a visual radar profile instead of a single verdict-label.

A formula computes, AI only explains

This is a product about a life-shaping choice, so it has no right to hallucinate. A deterministic engine computes the profession match — from interests, subjects and values. The AI re-ranks the top and writes a warm “why you”, but it cannot add a profession outside the vetted catalog: anti-hallucination is built into the architecture. If the model is down, you still get a result, just without the text notes. AI assists, but never blocks.

Professions arrive in three baskets: “core” is a direct hit, “nearby” is adjacent, “dark horses” are unexpected but on-profile.

An honest “how to get in”

Picking a profession isn’t enough — between “I want” and “I got in” stands a wall of unclear steps. So every profession carries a path: field of study, which exams to sit, what deadlines to file by. Salary comes with an honest “estimate” badge, not “the exact number”. Where there’s no vetted data, it says so — no invented paths.

Five languages and per-country data

I started with Russia — salaries from Rosstat, later from live hh.ru, and admission paths from the national classifiers and postupi. Today Astrolab runs in five languages, and each version is localized to its country rather than machine-translated:

Every number carries a source and a date. On the French profession page the salary comes in euros from Adzuna; on the U.S. page, in dollars from the BLS. No ruble ever leaks onto another country’s page — that’s wired into the API as a country filter.

Astrolab profession page in French: salary in euros from Adzuna
The French version of a profession page: the interface, radar and "how to get in" are in French, the salary is €37,000–46,500 a year from Adzuna, with the source shown.

The fiddly part — per-country salaries

It looks tidy in a list. In reality, honest per-country salaries were the part that resisted the most — each country a separate wrestle with its own source, and almost none came easy.

Russia — where I started. I wanted live job ads, but hh.ru’s open API is OAuth-gated and the state “Trudvsem” board kept flaking. So the first honest version came not from ads but from the official Rosstat wage survey (pay by occupation group): I took the group means, scaled them from October 2023 to now by Rosstat’s own economy-wide wage growth (×1.34), and turned the mean into a band. Airline pilot and fitness trainer I left on their prior estimate — their occupation group doesn’t fit the job. Coverage 88 of 90. Later I did get live hh.ru working (an app token, salaried postings only): p25–p75 percentiles, net→gross adjustment, professions with fewer than 30 postings skipped — 72 re-measured for real. What I threw out as lies: real-estate agent (commission fantasies in the ads), statistician (matched the wrong occupation), airline pilot (no real postings).

USA. The BLS has no usable API — only OEWS flat-file spreadsheets. I parsed those, joined them by occupation code, and returned a 25th–90th percentile annual band. Actors and musicians are counted hourly-only in OEWS — so I left them with no salary rather than a fabricated annual one. 46 of 49.

Spain, France, Germany — this is where I hit the wall. National statistics (INE, INSEE, Entgeltatlas) only give coarse group averages. To show a salary for a specific profession you need live ads. For Spain — the first international country — I first went to InfoJobs.net (Spain’s biggest job board): I registered for the API, and it just said “API keys temporarily unavailable”. I didn’t wait — I switched to Adzuna (which has an open API). And here’s where it got messy:

And a cross-cutting problem — data leaking between countries. Ruble bands leaked onto the Spanish catalog and the landing page — the example profession showed rubles on any locale. I fixed it with country-scoping at the API level: one country’s numbers physically can’t reach another country’s page.

This is the boring part of the work that the polished happy-ending stories never show. But it’s exactly what separates “one more quiz” from a service you can trust.

A journal appeared

Astrolab has also grown a journal — articles on how to choose a profession: what RIASEC is, why the highest salary isn’t the first question, how to choose by method rather than guesswork. Not SEO filler, but write-ups that cite real research (Holland, 1959; O*NET; BLS). Each article is self-contained and localizes its data to the reader’s country.

Astrolab journal
The Astrolab journal: articles that cite research, not SEO filler.

Why free

Because I can. I like building systems that quietly help people — this is one of them. The test needs no account, the result lives on a link; minors’ data isn’t collected by default: privacy as a decision, not a checkbox.

Two honest notes, because career quizzes make a living reselling hope:

The full architecture write-up is in the Astrolab case.

Frequently asked questions

What is Astrolab?

A free career-guidance platform built on the RIASEC + Klimov method: a test computes your profile, matches fitting professions, and honestly shows salary and admission paths for each of five countries.

Is Astrolab paid?

No. Completely free, the test needs no signup, the result lives on a link. Minors' data isn't collected by default.

What languages does Astrolab support?

Five: Russian, English, Spanish, French, German. Each version is localized to its country rather than machine-translated.

Where do the salaries come from?

Per country, from separate sources: Russia — Rosstat and hh.ru; USA — BLS; Spain — INE and Adzuna; France — INSEE and Adzuna; Germany — Entgeltatlas and Adzuna. Every number carries a source and a date, and the figure itself is badged as an estimate.

Does the AI invent professions?

No. A deterministic engine computes the match from interests, subjects and values. The AI only re-ranks the top and writes the explanation — it cannot add a profession outside the vetted catalog.

Is it an exact salary for the profession?

No, it's an estimate — a range from the market or official statistics. A good place to start thinking, not a guarantee of a specific figure.