Upload PDF Question Banks
Upload up to 200+ PDFs containing existing questions and answers. The AI will extract patterns and generate thousands of new questions.
πŸ“„

Drop your PDF files here

Supports bulk upload Β· Maths, English, Verbal & Non-Verbal Reasoning

Click to browse or drag and drop Β· Max 200+ files

πŸ’‘ Tip: The AI reads question patterns, topic coverage, and difficulty distribution from your PDFs to generate contextually accurate new questions. More PDFs = better quality output.
No files selected β€” or continue with AI-only generation
Configure Generation
Select subjects, question types, difficulty levels, and how many questions to generate.
Subjects (select all that apply)
πŸ“ Maths
Arithmetic, Algebra, Geometry, Statistics
πŸ“– English
Grammar, Comprehension, Vocabulary, Writing
πŸ”€ Verbal Reasoning
Analogies, Sequences, Logic, Word Problems
πŸ”· Non-Verbal Reasoning
Patterns, Matrices, Shapes, Spatial Reasoning
Question Types (select all that apply)
βœ… MCQ
4 options, 1 correct answer
βš–οΈ True / False
Binary choice with explanation
✏️ Fill in the Blank
Complete the sentence/equation
πŸ’¬ Short Answer
Brief written response, marked answer
Difficulty Levels & Question Count
🟒 Easy
Foundational β€” recall and recognition
🟑 Medium
Applied β€” understanding and analysis
πŸ”΄ Hard
Advanced β€” synthesis and evaluation
βœ… Estimated total: 10,000 questions across 4 subjects Γ— 4 formats Γ— 3 difficulty levels
Generating Questions
Using Claude AI to create unique, curriculum-aligned questions…
Initialising…
0 questions generated
0%
Generated Questions
Browse, filter, copy or download your questions in Khan Academy-compatible JSON format.
Preview
Full JSON
Schema
Breakdown
API Integration Guide
Everything your development team needs to integrate this question generator into your educational app.

πŸ“¦ What you receive

The generator outputs a single JSON file with all questions structured in Khan Academy-compatible format. Your app can:

  • Import the JSON directly into your question database
  • Use the REST endpoint below to trigger generation on-demand
  • Schedule batch generation via cron and store results in your DB
  • Stream questions in real-time using the Claude API with SSE

πŸ”Œ REST Endpoint (Claude API powered)

POSThttps://api.anthropic.com/v1/messages

Headers required:

x-api-key: YOUR_ANTHROPIC_API_KEY anthropic-version: 2023-06-01 content-type: application/json

Request body structure:

{ "model": "claude-sonnet-4-20250514", "max_tokens": 4096, "system": "You are an expert educational question generator...", "messages": [{ "role": "user", "content": "Generate 10 Maths MCQ questions for Grade 5-6, difficulty: Medium..." }] }

🟨 JavaScript / Node.js Integration

const Anthropic = require('@anthropic-ai/sdk'); const client = new Anthropic({ apiKey: process.env.ANTHROPIC_API_KEY }); async function generateQuestions({ subject, difficulty, count, type, grade }) { const prompt = buildPrompt(subject, difficulty, count, type, grade); const response = await client.messages.create({ model: 'claude-sonnet-4-20250514', max_tokens: 4096, messages: [{ role: 'user', content: prompt }] }); return JSON.parse(response.content[0].text); } // Upload to your database async function uploadToApp(questions) { const res = await fetch('https://your-app.com/api/questions/bulk', { method: 'POST', headers: { 'Content-Type': 'application/json', 'Authorization': 'Bearer YOUR_APP_TOKEN' }, body: JSON.stringify({ questions, format: 'khan_academy_v1' }) }); return res.json(); }

🐍 Python Integration

import anthropic, json client = anthropic.Anthropic(api_key="YOUR_API_KEY") def generate_questions(subject, difficulty, count, question_type, grade): prompt = build_prompt(subject, difficulty, count, question_type, grade) message = client.messages.create( model="claude-sonnet-4-20250514", max_tokens=4096, messages=[{"role": "user", "content": prompt}] ) return json.loads(message.content[0].text) # Bulk generation for 10,000 questions def bulk_generate(config): all_questions = [] for subject in config['subjects']: for diff in config['difficulties']: for qtype in config['question_types']: batch = generate_questions( subject, diff, config['count_per_batch'], qtype, config['grade'] ) all_questions.extend(batch['exercise_bank']) return all_questions

πŸ—„οΈ Database Schema (SQL)

CREATE TABLE questions ( id VARCHAR(64) PRIMARY KEY, subject ENUM('Maths','English','Verbal Reasoning','Non-Verbal Reasoning'), topic VARCHAR(128), difficulty ENUM('Easy','Medium','Hard'), question_type ENUM('multiple_choice','true_false','fill_in_the_blank','short_answer'), grade_level VARCHAR(32), question_text TEXT NOT NULL, choices JSON, -- [{id, text, correct}] for MCQ correct_answer VARCHAR(512), explanation TEXT, tags JSON, -- ["subject","difficulty","type"] points TINYINT DEFAULT 1, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP );

πŸ“€ Import to Popular Platforms

Khan Academy
Use the Khan Academy Content API β€” POST to /api/v1/exercises/bulk with our JSON format directly.
Moodle / LMS
Convert JSON to GIFT or QTI 2.1 format using the included converter script. Import via Moodle's Question Bank.
Custom React App
Import JSON directly. Map question_type to your component types. choices array renders MCQ options.
Google Classroom
Use Google Forms API. Map each question to a pageBreakItem or questionItem form element.
πŸ”‘ API Key: Get your Anthropic API key at console.anthropic.com. Store it server-side β€” never expose it in client-side code.
JSON Schema Reference
Share this schema with your development partners for app integration.
Khan Academy v1 Schema
Format Coverage
βœ… Multiple Choice (MCQ)
question_type: "multiple_choice"
Includes choices[] array with A/B/C/D options and correct: true/false flag on each choice.
βš–οΈ True / False
question_type: "true_false"
No choices array. correct_answer is either "True" or "False".
✏️ Fill in the Blank
question_type: "fill_in_the_blank"
Question text contains ___ as placeholder. correct_answer is the expected word/phrase.
πŸ’¬ Short Answer
question_type: "short_answer"
Open-ended. correct_answer is a model answer. explanation contains marking guidance.
Shareable Tool Link
πŸ“Ž Claude.ai conversations are private β€” the tool lives in this chat and cannot be shared via URL. To share with partners, download the standalone HTML file and send it directly.

The downloaded HTML file is fully self-contained β€” no server needed. Partners can open it in any browser, enter their Anthropic API key, and generate questions immediately. You can also host it on any static web server (Netlify, Vercel, GitHub Pages) and share the URL.