ML-Powered Adaptive IQ Test A developer built IQ Platform, a free adaptive cognitive assessment tool that calibrates question difficulty based on age, education, and occupation. The tool uses a multi-feature ML regression model for scoring and remembers previously seen questions across sessions, all without a backend API or database. Tags: nextjs typescript machinelearning webdev Most online IQ tests are broken. They ask the same 20 questions to everyone — whether you're a 14-year-old high school student or a 35-year-old PhD. They don't adapt. They don't remember what you've already answered. And after two or three retakes, you've memorised the answers. The score stops meaning anything. I got frustrated enough to build my own. After a few months of work, I launched IQ Platform https://iq-platform-plum.vercel.app — a free, fully adaptive cognitive assessment tool that calibrates question difficulty to your age, education, and occupation, scores you using a multi-feature ML regression model, and remembers which questions you've already seen across sessions. Here's the complete technical breakdown of how I built it. No Auth. No database. No backend API. Everything meaningful happens on the client or at build time. Here's why standard online IQ tests fail: Standard test: User A: 14 years old, high school → gets "What is 30% of 200?" User B: 26 years old, PhD CS → gets "What is 30% of 200?" Both answer correctly. Both score the same. But the question told you nothing useful about User B. The solution is adaptive difficulty — selecting questions based on who is actually taking the test. This is how real psychometric assessments like the WAIS-IV work. They calibrate to the individual. The question bank covers six cognitive domains: | Domain | What it measures | |---|---| | Numerical | Arithmetic, algebra, ratios, percentages, logarithms | | Verbal | Vocabulary, analogies, anagrams, antonyms | | Pattern | Number series, letter sequences, figurate numbers | | Logical | Syllogisms, seating arrangements, propositional logic | | Memory | Sequence recall, list recognition, position memory | | Spatial | 3D geometry, rotations, Euler's formula, clock angles | Each question has a difficulty rating from 1 school level to 5 postgraduate/doctorate level , plus optional minAge , maxAge , and tags STEM, arts, language, general : export interface Question { id: string category: QuestionCategory difficulty: 1 | 2 | 3 | 4 | 5 minAge?: number maxAge?: number tags?: string // 'stem' | 'arts' | 'language' | 'general' text: string options: string correctIndex: number explanation: string timeLimit: number // seconds per question } A difficulty-5 Logical question looks like this: { id: 'l8', category: 'Logical', difficulty: 5, tags: 'stem' , text: 'Cards A, D, 4, 7. Which to flip to verify "vowel → even on other side"?', options: 'A and 4', 'A and 7', 'D and 4', 'A, D and 4' , correctIndex: 1, timeLimit: 40, explanation: 'Flip A check even and 7 check no vowel . Wason selection task.' } While a difficulty-1 version looks like: { id: 'l1', category: 'Logical', difficulty: 1, minAge: 10, maxAge: 16, text: 'All cats are animals. Whiskers is a cat. Therefore:', options: 'Whiskers is an animal', 'All animals are cats', ... , correctIndex: 0, timeLimit: 15, explanation: 'Simple syllogism: cat → animal' } When a user fills in their profile, the system computes a difficulty target based on three inputs: js export const EDU DIFFICULTY: Record