I built a tool that tells me if readers actually understood my articles
DEV Community

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.

Read on DEV Community ↗ ← Back to News

Comments

No comments yet. Start the discussion.