<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Ganga Ponnu</title>
    <description>The latest articles on DEV Community by Ganga Ponnu (@randomtyms).</description>
    <link>https://dev.to/randomtyms</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4043774%2F416e8d49-4433-41ea-9980-833bcd81af66.webp</url>
      <title>DEV Community: Ganga Ponnu</title>
      <link>https://dev.to/randomtyms</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/randomtyms"/>
    <language>en</language>
    <item>
      <title>Building an AI Quiz Pipeline without using an AI API</title>
      <dc:creator>Ganga Ponnu</dc:creator>
      <pubDate>Mon, 27 Jul 2026 06:57:39 +0000</pubDate>
      <link>https://dev.to/randomtyms/building-an-ai-quiz-pipeline-without-using-an-ai-api-56an</link>
      <guid>https://dev.to/randomtyms/building-an-ai-quiz-pipeline-without-using-an-ai-api-56an</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;&lt;code&gt;Sometimes the most valuable software isn't another AI model—it's the workflow around it.&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The internet is full of AI quiz generators. Upload some content - click a button - a quiz appears.&lt;/p&gt;

&lt;p&gt;So why did I build something that doesn't generate quizzes directly?&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fiowfikzdx8f80ory1wsp.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fiowfikzdx8f80ory1wsp.jpg" alt="Pixar-style 3D animated boy with glasses pointing forward against a dark blue background with text reading: 'I Didn't Build Another AI Quiz Generator. I Built the Missing Piece.'" width="800" height="1422"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The Problem
&lt;/h2&gt;

&lt;p&gt;Gemini (and other LLMs) are already very good at reading textbook pages.&lt;/p&gt;

&lt;p&gt;But asking an LLM:&lt;br&gt;
"Generate a quiz from this chapter."&lt;br&gt;
rarely gives you production-ready output.&lt;/p&gt;

&lt;p&gt;Some common issues:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;inconsistent formatting&lt;/li&gt;
&lt;li&gt;incomplete coverage of the chapter&lt;/li&gt;
&lt;li&gt;questions in random order&lt;/li&gt;
&lt;li&gt;difficult to import into another application&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For a teacher, this means spending more time cleaning the output than actually teaching.&lt;/p&gt;
&lt;h2&gt;
  
  
  My Approach
&lt;/h2&gt;

&lt;p&gt;Instead of building another AI wrapper, I built a workflow.&lt;br&gt;
Textbook Images&lt;br&gt;
      │&lt;br&gt;
      ▼&lt;br&gt;
Optimized Prompt&lt;br&gt;
      │&lt;br&gt;
      ▼&lt;br&gt;
Gemini&lt;br&gt;
      │&lt;br&gt;
      ▼&lt;br&gt;
Structured Quiz Data&lt;br&gt;
      │&lt;br&gt;
      ▼&lt;br&gt;
CSV File&lt;br&gt;
      │&lt;br&gt;
      ▼&lt;br&gt;
RandomTyms Quiz Player&lt;/p&gt;

&lt;p&gt;The AI does what it's good at:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;understanding content&lt;/li&gt;
&lt;li&gt;extracting knowledge&lt;/li&gt;
&lt;li&gt;generating questions&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;My application does what it is good at:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;enforcing structure&lt;/li&gt;
&lt;li&gt;creating a reusable quiz format&lt;/li&gt;
&lt;li&gt;powering an interactive quiz interface&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  Why CSV?
&lt;/h2&gt;

&lt;p&gt;This is probably the first question developers ask.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Why not just return JSON?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Why involve CSV at all?&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Because my users aren't developers. They're teachers.&lt;/p&gt;

&lt;p&gt;CSV has some surprisingly practical advantages.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Opens in Excel.&lt;/li&gt;
&lt;li&gt;Can be edited without technical knowledge.&lt;/li&gt;
&lt;li&gt;Easy to archive.&lt;/li&gt;
&lt;li&gt;Easy to share.&lt;/li&gt;
&lt;li&gt;Works offline.&lt;/li&gt;
&lt;li&gt;Can be imported into the quiz player.
A quiz becomes a file that belongs to the teacher—not another conversation trapped inside an AI chat.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fb5xiprlpxzzmowb94bkp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fb5xiprlpxzzmowb94bkp.png" alt="Infographic titled 'Auto-Generate Quiz Files with AI' showing a 3-step guide for teachers to copy a Gemini prompt, upload textbook images, and save as a CSV file, featuring a 3D animated girl character holding a notebook." width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Prompt Engineering Is Part of the Product
&lt;/h2&gt;

&lt;p&gt;One thing I learned while building this is that prompt engineering isn't just an implementation detail.&lt;/p&gt;

&lt;p&gt;It's product design.&lt;/p&gt;

&lt;p&gt;Instead of expecting teachers to write prompts like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Generate 40 multiple-choice questions covering every important concept...
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;they simply copy a pre-built prompt.&lt;/p&gt;

&lt;p&gt;That prompt tells the AI to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;analyse every uploaded textbook page&lt;/li&gt;
&lt;li&gt;cover all major concepts&lt;/li&gt;
&lt;li&gt;include definitions and key facts&lt;/li&gt;
&lt;li&gt;produce output in a predictable structure&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The complexity stays hidden. The workflow stays simple.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why I Didn't Use an AI API
&lt;/h2&gt;

&lt;p&gt;At first glance, that seems like extra work. But there were reasons behind it.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fwvmham5ftdkcuvsgxloy.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fwvmham5ftdkcuvsgxloy.png" alt="RandomTyms AI Quiz Generator interface featuring 3D animated characters Lokesh and Varsha alongside a upload card to choose a quiz file or paste a CSV link to start a quiz." width="800" height="450"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;1. Zero backend AI costs&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;No API billing.&lt;/li&gt;
&lt;li&gt;No token management.&lt;/li&gt;
&lt;li&gt;No rate limiting. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;2. Users benefit from better models automatically&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;When Gemini improves, the workflow improves and I don't need to deploy a new backend.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Human review&lt;/strong&gt;&lt;br&gt;
Teachers naturally review the generated questions before importing them.&lt;/p&gt;

&lt;h2&gt;
  
  
  In education, that small review step is often a feature—not a bug.
&lt;/h2&gt;

&lt;h2&gt;
  
  
  Trade-offs
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;This approach isn't perfect.&lt;/li&gt;
&lt;li&gt;There is a manual copy-paste step.&lt;/li&gt;
&lt;li&gt;That's friction.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;But it's also where teachers can fix mistakes, remove unsuitable questions, or add their own.&lt;/p&gt;

&lt;p&gt;For educational content, I think that's a worthwhile trade-off.&lt;/p&gt;

&lt;p&gt;Not every workflow needs to be fully automated.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fsdj1t6m7g6znd938gk88.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fsdj1t6m7g6znd938gk88.png" alt="Wide promo banner for RandomTyms AI Quiz Generator featuring vibrant 3D animated siblings Lokesh and Varsha with feature icons for Any Subject, AI Quiz Magic, Instant Results, and Download Options." width="799" height="273"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>edtech</category>
      <category>webdev</category>
      <category>productivity</category>
    </item>
    <item>
      <title>How I Built an AI Quiz Generator, a PWA Hub, and an Animated Kids' Brand — All on One Phone</title>
      <dc:creator>Ganga Ponnu</dc:creator>
      <pubDate>Thu, 23 Jul 2026 12:13:45 +0000</pubDate>
      <link>https://dev.to/randomtyms/how-i-built-an-ai-quiz-generator-a-pwa-hub-and-an-animated-kids-brand-all-on-one-phone-4kh5</link>
      <guid>https://dev.to/randomtyms/how-i-built-an-ai-quiz-generator-a-pwa-hub-and-an-animated-kids-brand-all-on-one-phone-4kh5</guid>
      <description>&lt;p&gt;I don't have a studio. I don't have a team. What I have is a smartphone — and that single constraint ended up shaping every decision behind RandomTyms, an AI-animated Tamil-English educational brand built around two characters, Lokesh and Varsha, and now a small suite of free learning apps.&lt;/p&gt;

&lt;p&gt;This post is about the "how" — not the brand story, but the actual technical build: a PWA hub, an AI-powered quiz generator, and the scrappy fixes that come with building mobile-only.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I ended up shipping
&lt;/h2&gt;

&lt;p&gt;The core of it is a Progressive Web App hosted on GitHub Pages: randomtyms.github.io. It bundles together:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  AI Textbook Quiz Generator
&lt;/h2&gt;

&lt;p&gt;— generates quizzes from textbook content using Google Gemini, with OMR-style answer bubbles and score-tiered feedback&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Spinner Wheel
&lt;/h2&gt;

&lt;p&gt;— a simple randomizer for classroom use&lt;br&gt;
Multiplication Practice — quick-fire drills for kids&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Symmetry Detective
&lt;/h2&gt;

&lt;p&gt;— an interactive shape-recognition tool&lt;br&gt;
All free. No sign-up, no ads, no tracking.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Building the PWA hub
&lt;/h2&gt;

&lt;p&gt;The hub itself is a manifest + service worker setup, which sounds simple until you're debugging it entirely from a phone browser's dev tools.&lt;/p&gt;

&lt;p&gt;A few specific things that took longer than expected:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Live content feeds:&lt;/strong&gt; the Blog tab pulls from a live Blogger JSONP feed, and the Shorts tab runs through an RSS-to-JSON proxy — no dashboard, just feeds updating automatically.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;YouTube thumbnails silently failing:&lt;/strong&gt; this one took a while to track down. Shorts-style RSS links didn't match the video ID regex I was using, so thumbnails just wouldn't render for some videos. Fixed it by adding /shorts/ pattern matching plus a fallback to the guid field.&lt;/p&gt;

&lt;h2&gt;
  
  
  Building the quiz generator
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fawy7zy6unyb2zxbhz086.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fawy7zy6unyb2zxbhz086.png" alt="RandomTyms Textbook to AI Quiz Generator" width="800" height="519"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This is the piece with the most moving parts. It's not just "call an API and show the output" — the widget needed:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Prompt engineering tuned so Gemini reliably hits a minimum question count (it would sometimes shortchange this)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;CSV export handling — cleaning up BOM characters and CRLF line endings that were quietly corrupting downloads&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;OMR-style answer bubbles and score-tiered feedback, built as a reusable embeddable component (rt-quiz-embed.html) and a full standalone version (rt-quiz-full.html)&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Basic security hardening on the widget itself&lt;/p&gt;

&lt;h2&gt;
  
  
  One unexpected debugging detour:
&lt;/h2&gt;

&lt;p&gt;Google Safe Browsing flagged the blog at one point. After digging in, the likely trigger wasn't the quiz code — it was the instructional pattern &lt;/p&gt;

&lt;p&gt;&lt;code&gt;"copy this prompt → open Gemini → paste → send"&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;reading as suspicious to automated scanners. Worth knowing if you're building anything that walks users through copy-pasting into another AI tool.&lt;/p&gt;

&lt;p&gt;Making the repo actually discoverable&lt;br&gt;
Shipping the apps was only half the job — a live PWA with no polish around it just doesn't get found. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Recent cleanup included:&lt;/strong&gt;&lt;br&gt;
A`` proper README.md with screenshots of each app, not just a text description&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;MIT license added (code only — the characters and brand art stay separately owned)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;GitHub topics (education, pwa, kids-learning, quiz-app) so it surfaces in topic search&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;A pinned profile repo and a real profile picture instead of the default identicon&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Small things, but they add up to a repo that looks maintained rather than abandoned.&lt;/p&gt;

&lt;h2&gt;
  
  
  What's next
&lt;/h2&gt;

&lt;p&gt;More apps are in active development on the hub. If you're curious about building AI-powered tools without a team or a dev environment beyond a phone, happy to answer questions in the comments — this whole thing has been one long lesson in working within constraints rather than around them.&lt;/p&gt;

&lt;p&gt;🔗 Try the apps: randomtyms.github.io&lt;br&gt;
📖 Follow the blog: lokeshvarsha.blogspot.com&lt;/p&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>buildinpublic</category>
      <category>deved</category>
    </item>
  </channel>
</rss>
