The problem
I started Konverge while preparing for AI and ML engineering interviews. LeetCode was useful for data structures and algorithms, but that was only one part of what I needed to practise. An interview could also include an unexpected Python question, an ML algorithm implemented from scratch, a theory discussion, or a system-design problem. Material for those topics existed, but it was spread across articles, repositories, videos, and interview reports.
I wanted one place where I could practise a little every day without turning preparation into another large task. The goal is to stay familiar with the material and avoid getting rusty, while still covering more than the standard algorithm interview.
What I built
Konverge puts twelve question formats into one practice queue, including Python coding, ML implementation, vectorization, debugging, theory, system design, applied LLM work, experiment design, and operational incidents. Coding questions run in the browser through Pyodide, while open-ended answers can be compared with a structured rubric and reviewed by an LLM. A spaced-repetition queue brings weaker topics back later, and a timed mock interview combines several formats into one session.
Correctness matters more than the size of the question bank. The supporting content pipeline finds useful sources, extracts possible topics, generates draft questions, and validates code against its own test cases. AI helps with discovery, drafting, and an additional verification pass, but it is not treated as the final authority. Questions still move through explicit review stages before they are made available. More work is needed on those guardrails because a confident but incorrect explanation would make the product actively harmful for interview preparation.
Continue from your last session
The home dashboard suggests one useful next action, either continuing a question or starting a recommendation, alongside pass rate and the current review load.
- Recommended next questions ranked by what you haven't seen and what's due for review
- Live pass rate, average score, and 7-day activity stats
- Admin shortcuts appear inline for admin accounts, with no separate dashboard to check
Decisions and tradeoffs
Pyodide over server-side code execution
Running Python in a browser Web Worker through Pyodide avoids backend compute and server-side sandboxing. The tradeoff is a split between the browser runtime used for practice and the local Python runtime used to validate questions, so their behavior has to be kept consistent.
JSONB payload, Zod as the schema authority
Twelve question types share one `questions` table with type-specific content in a `payload JSONB` column, validated by a Zod discriminated union rather than twelve separate tables or a database-level schema. It keeps adding a new question type to a single file (`lib/schemas/question.ts`) instead of a migration, at the cost of the database itself not enforcing payload shape.
Nothing publishes without a human gate
AI can help find source material and turn it into a first draft, but it can also produce a plausible wrong answer. Source review, seed approval, candidate review, validation, and release are therefore separate steps. The process is still being tested and tightened before the question bank is opened publicly.
Grade caching by answer hash
LLM-graded submissions are hashed (question id + normalized answer) and cached in `grade_cache` before falling through to a live grading call. Combined with per-user rate limits (10/hour, 40/day), this keeps the LLM grading bill predictable even under repeated or bursty submissions.
What I learned
AI makes it easy to draft a large number of questions. It does not make those questions correct. The difficult part is building a review process that can catch a faulty explanation, a weak rubric, or a reference solution whose tests are too forgiving.
Supporting many interview formats also pushed me toward stricter schemas. Coding, theory, debugging, and system-design questions need different payloads, but they still have to behave consistently in the practice queue, review scheduler, and admin tools.