Shipped · Apr 2026 – May 2026
FinMayak
Gamified financial literacy app paired with a real portfolio builder, contracted by FinUslugi (Moscow Exchange's consumer financial marketplace).
Shipped · Apr 2026 – May 2026
Gamified financial literacy app paired with a real portfolio builder, contracted by FinUslugi (Moscow Exchange's consumer financial marketplace).
FinMayak · the story
Scroll
Four risk buckets · must total 100%
Once the foundations are cleared, users allocate a practice balance across four buckets, then watch it move against live MOEX prices.
LESSON
short scenario module, gated by the ones before
QUIZ
checks the idea, awards XP and keeps the streak
UNLOCK
foundations clear the portfolio builder
ALLOCATE
a practice balance across four risk buckets
MARK
portfolio marked to live MOEX prices on every read
The instruments in lesson 1.3 are the ones in the portfolio
Open hours never hit the upstream
FinMayak · the write-up
FinUslugi wanted financial literacy that wasn’t a PDF. The app pairs Duolingo-style learning paths with a portfolio builder where users actually pick stocks, funds, and bonds against live MOEX market data and watch how their picks perform. The mascot is Маяк — a lighthouse that tracks streaks, awards XP, and pulls users back the next day.
Lessons are short and scenario-driven (“Маша earns 80,000 ₽ and spends 60,000 ₽ — what emergency fund does she need?”), structured into modules that gate each other so learners build foundations before touching brokerage mechanics or risk allocation. The same instruments that show up on the home dashboard ticker bar are the ones users encounter inside lessons and inside their practice portfolio — one coherent surface across the whole app.
home · quiz · celebration — the gamified learning loop
The backend’s most interesting bit. MOEX feeds change throughout the trading day, and the gamified learning paths reference the same instruments users hold in their practice portfolios — so every educational module has to stay coherent with whatever the market is doing right now. Quote a stock in lesson 1.3 and a user can flip to their portfolio and see that same instrument’s price tick moments later.
The market layer wraps the MOEX ISS API, normalises instrument metadata, and caches quotes with TTLs sized to the trading session so we never blow up the upstream during open hours. Portfolios are mark-to-market on every read; the CMS surfaces an instrument picker driven by the same data so editors can’t reference a delisted ticker.
Once a user clears the foundational modules they unlock the portfolio builder. They allocate a fixed practice balance across high / medium / medium-low / low risk buckets, then drill down to specific instruments inside each bucket — growth stocks, dividend payers, bonds, money-market funds. The allocation has to total 100% before they can submit, and from that point the portfolio updates against live MOEX prices on every visit.
The point isn’t to teach trading. It’s to give users a low-stakes surface where the abstractions from the lessons (volatility, correlation, drawdown, duration) become things that actually move on their phone the next morning.
Pictured at the top of this page. The FinUslugi content team needed to author lessons, quizzes, and interactive widgets — calculators, scenario sliders, instrument pickers — without touching code or waiting on a mobile release. So I shipped a custom CMS: page tree on the left, a live phone preview in the middle, and a typed editor on the right.
Each page is composed of typed visual blocks (text, calculator, quiz, instrument picker, etc.). Editors pick a block type, fill in its fields, and the preview re-renders against the same component tree the mobile clients use. Content publishes over the air to the apps — no app-store review required for a new lesson, no engineer involved past the initial block type definition.
Built on a tight contract window between April and May 2026, then handed off to FinUslugi’s internal IT team for ongoing operation. The CMS is the part that keeps paying off: the content team can author and ship new modules without backend involvement for routine work.
End of FinMayak