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

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.