Wenwei Lin

← All projects

Personal projects

Read Flow

Reading English books without getting stuck on new words. Based on your English level, AI highlights new words and idioms in advance, and one tap shows the meaning. An English EPUB reader for Chinese readers.

When
2025.09 – 2025.10
My role
Product design and development
Built with
Next.js · React · Vercel AI SDK · Qwen · EPUB.js
Good design is as little design aspossible. It is unobtrusive andleaves room for the user's ownself-expression, with a clearrationale behind every choice.unobtrusive adj.不显眼的,不打扰人的

An English EPUB reader for Chinese readers. As you read, it underlines in red the words, phrases and tricky expressions you might not know at your level, and one tap shows what they mean in context, in Chinese.

Why

I was reading English design books at the time, full of words I didn’t know:

This was my own frustration lately: design books have so many unfamiliar words that I didn’t want to read, or I kept stopping to look things up. So I wanted to build this.

What I wanted wasn’t a faster dictionary, but a way to not get stuck on words and keep reading.

Design

The first version only did the core:

Sign-in and payments come later. Think about the core features first.

  1. Open an EPUB;
  2. every time you turn to a new page, AI analyses it and underlines what you might not know;
  3. tap an underline to see the meaning and part of speech;
  4. later: save unknown words to a word list, with their meaning and the sentence they came from, and review them with something like Anki.

Read Flow’s reading view: new words and phrases are underlined in red

The first version: red underlines appear under new words and set phrases as you read.

I also wrote down a question I hadn’t solved: what about a word the AI didn’t underline, but I still don’t know?

Let the model decide, not a word list

The usual approach is to compare against word frequency and level lists. Instead, I described the reader in the prompt and let the model decide:

  • Reader profile: CET-4 level, about 4,000 words, learning everyday English;
  • mark five kinds of things: new words beyond that vocabulary, unusual meanings of common words, set phrases and phrasal verbs, technical terms, and complex expressions that might be hard to follow;
  • don’t mark simple words; give the base form of inflected words; mark whole phrases (“take advantage of”, not just “advantage”);
  • output only structured data: the original text, its base form, its meaning in context, and its part of speech.

That skips the whole heavy NLP pipeline, at the cost of a model call for every page.

Trade-offs

  • The reader uses react-reader (built on EPUB.js); the model is Qwen on SiliconFlow, called through the Vercel AI SDK;
  • results for a book are saved so reopening it doesn’t recompute anything; analysis runs chapter by chapter, chunk by chunk, so progress has to be tracked;
  • meanings come from the model for now, and a proper dictionary could be added later.

Result

A working first version: read a book, get automatic underlines, tap for meanings. I didn’t take it further, but I still think learning words as you read is worth doing.