I built a tool that tells me if readers actually understood my articles
After publishing 66 technical articles on DevOps and AI infrastructure, I realised I had a blind spot. I knew how many people visited my articles. I had no idea how many people understood them. Page views, bounce rates, time on page - none of these tell you whether your explanation of Kubernetes state management actually made sense to the reader. So I built QuizOps.
What it does
You paste your article URL. GPT-4o reads it and generates 10 multiple-choice questions streamed in real time. You review, edit, and publish. Your readers get a quiz link. You see who passed, who failed, and which specific questions tripped people up.
The technical bits
The generation uses OpenAI's streaming API with NDJSON output - each question is a complete JSON object on its own line. The frontend reads the ReadableStream line by line and renders questions as they arrive with a fade-in animation. It genuinely looks like the AI is thinking in real time.
// Each line from the stream is a question
const lines = buffer.split('\n');
for (const line of lines) {
if (!line.trim()) continue;
try {
const q = JSON.parse(line);
setQuestions(prev => [...prev, q]);
} catch {}
}
Stack:
- Next.js 14 (App Router)
- Supabase (auth + DB with RLS)
- OpenAI API (gpt-4o-mini, streaming)
- Vercel (hosting + serverless)
- Resend (email notifications)
- Playwright (E2E test suite)
- Sentry (error monitoring)
Content moderation
Before generating questions, the API runs two classification checks:
- Domain intent check - is this URL likely to contain inappropriate content?
- Content check - is the fetched article appropriate for educational quiz generation?
Both use a lightweight GPT-4o-mini call before the main generation request.
Community quiz banks
Beyond publisher quizzes, there are community quiz banks (JSON files in the repo) covering:
- Prompt Engineering
- LLM APIs
- AI Agents
- RAG & Vectors
- Kubernetes
- Terraform
- GitHub Actions
- Python for AI Engineers
- Cloud Native
- AI Security
Anyone can add a new bank by dropping a JSON file - no code changes needed.
Try it quiz.autoshiftops.com - free, no credit card. Would love feedback from other technical writers on what's missing.
Comments
No comments yet. Start the discussion.