Case study · Product, AI
Marking that admits when it fails.
Synolang marks and practises IELTS Writing (WiMentor) and Speaking (SiMentor), one account. The web app runs at despa.qomero.vn.
Status: LIVE3,179 registered users

Context
Qomero's product for IELTS learners, live at despa.qomero.vn.
Problem
IELTS learners need to know which criterion holds them back, and what to change.
Published scope
WiMentor (Writing) and SiMentor (Speaking) under one account, one credit balance, one history.
What we did
Marking per criterion, Task 1 charts read from a screenshot, sample answers at a target band. Every run returns a full, partial or failed result and says which. Credits are reserved first and charged only on a result.
Verified result
3,179 registered users (Synolang, as of 2026-10-30).
Limits
Registered users, not paying or active users. Counted on 2026-10-30.
3,179
registered users
Source: Synolang, as of 2026-10-30
Before the build
IELTS learners need to know which criterion holds their writing back and what to change. A band score alone does not say how to revise.
Synolang was built as one place to learn: practice worth doing, and documents for every skill.
What we decided
Failures are not hidden. Every run returns a full result, a partial result or a failure, and says which.
Charge only for a result. Credits are held before a run and charged only when there is one.
One data contract. WiMentor (writing) and SiMentor (speaking) share it; any drift fails the check.
One account. One credit balance and one history across writing and speaking.
Architecture
Drawn from documented technologies; data flows are not inferred.
Synolang
Stack: Python, FastAPI, HTMX, Next.js, Supabase. Marking uses a model we trained ourselves. Live at despa.qomero.vn.
What the system handles
- Task 1 and Task 2 essays are marked criterion by criterion, with feedback and suggested revisions.
- Speaking is assessed; shadowing is practised session by session.
- Task 1 charts are read from a screenshot.
- Sample answers are written at the learner's target band.
- A run fails part-way: the learner sees it marked failed and is not charged.
Result
3,179
registered users
Source: Synolang, as of 2026-10-30
More case studies

Public README example; synthetic demo data. Praukron
People and AI on one project, each reading a different state.
You know what's actually done.
Read the case study
KOVAA
Sales on spreadsheets, paper and Zalo.
The same kind of sales and debt system, for your industry.
Read the case study