Methodology
How openradar counts pay and budgets.
What is measured
openradar research shows what employers and clients offer: the pay stated in published vacancies and orders. It is neither what people take home nor a survey. Such data shows the hiring market as it is now and how it changes month to month.
Sources
Vacancies and orders published in the period on hh.ru, Habr Career, the state portal «Работа России», getmatch, FL.ru, Kwork, Freelancehunt, Telegram channels, international boards and company career pages (the public job-board APIs of Greenhouse, Lever and Ashby), and posts added by participants. A post on several boards counts once: openradar merges duplicates by link, text and similarity. Posts flagged as junk or scam are left out.
Russian-language and international market
The main figures describe the Russian-language market: posts written mostly in Cyrillic. English-language vacancies are shown in a section of their own and do not enter the shares, medians or employer lists of the main part.
How pay is read
- First the vacancy page markup (schema.org JobPosting), then the post text, then the budget the board states.
- Only sums next to a currency or words like «оклад», «зарплата» count: «3–5 years of experience» never becomes pay.
- A range gives its middle; a single bound («from ₽150,000») gives itself. Yearly sums are divided by 12; hourly rates stay out of the monthly figures.
- Currencies are converted to roubles at a reference rate: RUB 1, RUR 1, USD 92, USDT 92, EUR 99, GBP 118, KZT 0.19, BYN 28, UAH 2.2.
- Values below ₽12,000 or above ₽3,000,000 a month are parsing errors and dropped.
The openradar index
The index shows how many new vacancies and orders appear each day against a base of 100. Only Russian-language posts on a fixed panel count: vacancies on hh.ru, Habr Career, getmatch and «Работа России»; orders on Kwork, FL.ru and Freelancehunt. A day's value is the seven-day mean. The base is the mean daily count over 2–29 November 2026; until 30 November it is provisional and covers every day since 27 October. The last two days are recalculated as late posts arrive.
Language model
Some posts are free text («pay 50k», «need a mid-level Python dev»). A language model reads them and returns a strict set of fields. It only fills gaps: page markup, rules and the board's budget always win. Answers below 70% confidence are dropped, and the model enters the figures only once it agrees with the rules on at least 85% of role and pay on 30+ comparisons.
Limits
- Not every vacancy states the pay; the share is shown in each report.
- Whether a sum is before or after tax is not always stated, so the two are not separated.
- A freelance budget is the client's estimate before negotiation.
Data
Open under CC BY 4.0. The CSV has a row per post with derived fields only: date, board, role, seniority, language, city, company, pay in roubles, skills and market scope.