Foundry X

Digital · January 23, 2026

Mandarijn Quest: Read and Seek

An AI-powered storybook generator that transforms Mandarin lessons into interactive adventures—where me and my daughter can read and learn characters together, one story at a time.

The Spark

My 6-year-old has been following an online Chinese course for about a year. I saw her still struggling to follow the lessons, as they weren’t story-driven—which is what actually holds her interest. When my daughter and I sat down to read a story in Mandarin together, we had to pause constantly. She would shout out questions like “What does 活泼 mean?” or “What is 鸡飞狗跳?” I’d search my brain for simple explanations, trying my best to make the meanings clear.

I wanted something different. I wanted the vocabulary explained on screen in a way a 6-year-old could understand, AND I wanted her to discover the must-learn characters herself—to find them hiding in a story like a treasure hunt.

Just before the New Year, I had an idea: What if an AI could turn her textbook materials into personalized adventures? Stories with characters she recognizes, vocabularies explained, rhythm and flow. A game built into the narrative.

I’d never “built” anything before. No coding background. But I had something better: curiosity and a daughter willing to be my test user.


The Blueprint

The big question: How do you turn boring PDF lesson materials into a story that both teaches and excites?

I sketched out the pipeline:

  1. The Input: Her school’s grade-specific Mandarin materials (the dry PDFs with vocabulary lists)
  2. The Magic: A data handling pipeline to clean the textbook and extract the details we need
  3. The Output: An interactive storybook where we read the story together. Key vocabularies have pop-up definitions for easy reference, and she gets to seek the highlighted characters positioned throughout the narrative
  4. The Loop: Her reading reinforces memory. Memory becomes fluency.

Technical Architecture:

  • Data Layer: Google Sheets as a lightweight database for character lists and story outlines
  • Automation Layer: Google Apps Script handles orchestration—extracting lesson vocabulary and sending structured prompts to Gemini API
  • Intelligence Layer: Gemini crafts the story AND generates visual descriptions for illustrations
  • Validation Layer: I review each story personally before it goes live (the “human guardian” step)
  • Delivery: GitHub Pages makes it accessible instantly—no servers, no monthly bills

The Flow:

PDF Textbook 
  ↓ (Extract vocabulary & themes)
Google Sheets 
  ↓ (Schedule & organize)
Apps Script 
  ↓ (Send structured prompt to Gemini)
Gemini API 
  ↓ (Generate story + character positions)
Story Review 
  ↓ (Mom checks: Does it make sense? Are characters positioned well?)
GitHub Pages 
  ↓ (Published & ready)
Daughter's Adventure Begins 🗺️

The Build

The Constraint: I built this on a 2016 Dell with Ubuntu installed. No fancy setup. Simplicity was not a bug—it was the entire point.

Tech Stack:

  • Gemini API — The story engine (surprisingly good at narrative + educational content)
  • Gemini Nano — AI image generation for story covers and backgrounds
  • Google Apps Script — The automation backbone (free, reliable, no deployment headaches)
  • Google Sheets — The control panel (drag-and-drop, no SQL needed)
  • pnpm — Package management (fast, clean) for project localization
  • GitHub Pages — Zero-cost hosting for demo and live usage

The Visual Strategy:

I realized early on: If she is visually attracted to the story, she’ll be more invested in reading it.

So I worked with Gemini to design visual narratives featuring characters she already loves: Pikachu, Raichu, Doraemon (哆啦a梦), Totoro, and more.

Each story includes:

  • Custom AI-generated cover art (Gemini Nano) that blends these beloved characters with the Mandarin vocabulary theme
  • Scene illustrations positioned throughout the story, helping her visualize and anchor character meanings
  • Consistent visual language so she recognizes the signature look and feel of Mandarijn Quest

How Each Story Gets Made:

  1. Step 1: Load the Materials

    • I extract the vocabulary and key characters from the school material and organize them in Google Sheets
    • Apps Script automates the extraction and organization process
    • I randomly select two featuring characters for the cover image generation
  2. Step 2: Generate the Story

    • Apps Script bundles the vocabulary list + theme + character into a carefully-worded prompt
    • Gemini writes a 2-3 minute story that naturally weaves in those characters AND her favorite companions
  3. Step 3: Generate Visual Assets

    • Gemini Nano API creates custom cover art featuring the selected character + theme aesthetic
    • The visuals aren’t generic—they’re specifically crafted to match the vibe and mood of each story
  4. Step 4: Smart Vocabulary Placement & Character Seeking

    • Vocabulary words are highlighted with clickable pop-ups showing their meanings
    • Target characters are hidden throughout the story; clicking the correct ones makes them light up and counts toward a “Found” score
    • This creates an engaging hunt within the narrative
  5. Step 5: Deploy

    • GitHub Pages updates. Story with full visual package goes live.
    • My daughter opens it on her tablet during our reading time and immediately sees her favorite characters waiting for her

The MVP Release

Live Site: Mandarijn Quest

What’s Inside:

  • 📖 Story-First Learning: Each story is written to be interesting first, educational second
  • 🔤 Character Seeking: Mid-story prompts ask her to find and highlight key characters she just learned
  • 🎨 AI-Generated Illustrations: Each scene has a visual (when the images cooperate!)
  • 📊 Progress Tracking: Simple stats showing which characters she’s encountered most
  • 👧 Designed for Her: The difficulty curves with the grade level; the storytelling matches what keeps her engaged

Real Example - Story Title: “月亮姐姐和小星星” (Sister Moon and Little Star)

  • Grade 1 vocabulary: 月 (moon), 星 (star), 小 (small), 天 (sky), 晚上 (evening)
  • The Story: A cozy narrative about how the moon watches over the stars each night
  • The Game: “Can you find all 3 times the word 月 appears on this page?”
  • The Payoff: She reads it three times—once for fun, once to find the characters, once to tell me the story

Learning Retro

What Surprised Me

  1. Characters Make Learning Emotional

    • When she saw Pikachu on the cover, she literally said: “I want to read this”
    • Her favorite characters became anchors—visual hooks that made vocabulary stick
    • Learning insight: Emotional connection to the character > academic motivation. Every single time.
  2. AI Gets Story Structure

    • I prompted Gemini by referencing famous children’s book writers combined with her favorite storytelling style
    • The result? Stories with real rhythm and emotional resonance that matched her interests exactly.
  3. Visuals + Text = Deeper Memory Encoding

    • Early stories were text-only
      • After adding the character-seeking mechanic, something clicked: she’d hunt for 20 instances of the same character in a story of 200-300 total characters—sometimes just one
      • This repetitive reading reinforced vocabulary naturally and organically
  4. The Simplest Tech Stack Won

    • I could have built a custom React app
    • Instead: Google Sheets + Apps Script + GitHub Pages + Gemini API
    • Result? Zero maintenance. Zero stress. New stories deploy in minutes.
  5. She’s the Best Product Manager

    • After the first story, she challenged herself to tackle the second story with more difficult vocabulary

What Was Hard

  1. Image Quality Inconsistency

    • AI-generated images can be unpredictable
      • Sometimes the character expression is perfect, sometimes not; corrupted characters in images are still a challenge
      • Solution: Manual review. Every image I publish, I check personally. Some minor issues remain, but they add to the authenticity.
  2. Balancing Simplicity and Feature Creep

    • I could add progress dashboards, user accounts, spaced-repetition algorithms
    • But that would add complexity that might break this beautiful, simple system
    • Decision: Stay minimal. If she asks for it, I’ll build it.
  3. Time Constraints

    • Built over 2 weeks, mostly in spare evening hours
    • Early versions were fragile—Gemini would occasionally generate stories with mismatched tone

Key Wins

I built something digital for realUnlocked the power of Apps Script and the hidden potential of Google Sheets
She asks to read Mandarijn Quest—I don’t have to convince her
Built entirely on my own, with zero financial cost


The Real MVP

At the end of the day, the MVP isn’t the website. It’s the quiet 20 minutes every evening where my daughter and I sit down with a story, and I watch her eyes light up when she finds a character on the page.

The technology just gets out of the way and lets that happen.


Next Phase

For now, we read together. That’s the real victory.