UniMate

exam platform for Kazakhstan universities · getunimate.com · live since 2025 · solo build

Online exam proctoring built for universities and prep schools in Kazakhstan. The interesting parts aren't the AI — they're the operational details: a Kaspi checkout that doesn't feel like a bank transfer, a launch promo (KZSTART990) that actually unlocks, and a LiveKit proctor room that a Playwright worker watches at ~$0.001 per minute.

getunimate.com
UniMate landing hero

Landing — "one app for your whole university group". Dashboard mockup eyeballs you from below the CTA.

getunimate.com   · scrolling

Full landing in motion. Captured headlessly via Playwright with a 4-second eased scroll.

getunimate.com   · #dashboard-preview
Dashboard preview

Dashboard preview: streak, XP, focus-time. Next class with NLP / Deep Learning. Daily quests below. Soft localisation (RU labels, EN structure).

getunimate.com   · #ai-tutor
AI tutor section

"AI который знает твой деканат". Suggested questions in Russian about ENT prep, GPA on 4.0 scale, photosynthesis flashcards.

UniMate mobile homepage

Same landing on a 390-px viewport. Real students hit this 4× as often as the desktop site.

[ scroll → ]


What it does

UniMate is a hosted exam + course platform pitched at universities and tutoring organisations in Kazakhstan. Instructors create courses, attach exams with time windows and attempt limits, and choose whether each exam runs proctored or not. Students take exams in the browser. Proctored sessions enter a LiveKit room, and a Playwright worker behind the scenes watches the feed, flags suspicious behaviour, and produces a per-attempt report that the instructor signs off on. Payment is per-student-per-semester, with a Kaspi-driven onboarding for end users and an admin bulk-invoice path for institutional buyers.

Why I built it

Existing exam platforms in the KZ market either come from the West (priced in dollars, payments don't fit the local rails, support not in Russian) or come from the domestic side (heavyweight desktop installers, ancient UX, no LiveKit-class proctor). My take was that one engineer with the right stack and a working knowledge of Kaspi could ship a credible alternative in a quarter. That turned out to be roughly true.

The hard part

Kaspi. Kaspi is a banking application that has been retrofitted into something approximating a payment processor. There is no proper checkout SDK, no PCI-style flow, and the official documentation is mostly screenshots in PDFs. Making the user experience feel like a checkout meant building a careful sequence: a deep-linked payment URL with the correct recipient pre-filled, a server-side webhook that recognises the transaction on the bank side, and a polling fallback for users whose Kaspi app routes the confirmation through SMS instead. The launch promo KZSTART990 is the test that this whole stack survives contact with reality — you type it on the landing page, you pay 990 KZT, and the platform lights up for you in under thirty seconds.

The proctoring part, by contrast, was the easy part. LiveKit gives you a WebRTC room. A Playwright worker joins as a hidden participant, takes periodic frames, runs them through a small vision model, and writes a structured report to Postgres. At normal exam scale this costs fractions of a cent per session and the latency budget is generous because the worker is asynchronous to the student's experience.

Stack

Python · FastAPI · Postgres · Next.js · React · LiveKit · Playwright · Kaspi (no SDK, raw integration) · Telegram OAuth · Docker · nginx · deployed on a single VPS in Moscow zone for <30 ms latency to Almaty.