Two Sticks

Write the character, without leaving the chat.

Three tools became one chat, with nothing to install. A few students used it and liked not switching between apps. What they missed was pronunciation practice.

Product direction, UX/UI, bot, API, and handwriting app
Built on a 2024 МПГУ diploma
A Telegram bot and Web App with nothing to install. A few students used the prototype, and it’s no longer hosted.

The short version

Situation. Learners can recognise a Chinese character and still not be able to write it. Practice was split between a dictionary, flashcards, and paper copybooks.

Task. Turn a university diploma’s research into one working product, inside the messenger learners already use.

Action. I chose Telegram over a new app, made every saved word feed every exercise, and built the bot, the API, and the handwriting app myself.

Result. Three tools became one chat, with nothing to install. A few students used it and liked not switching between apps. What they missed was pronunciation practice.

Problem

A dictionary gives you the character, how it sounds, and what it means. Writing it from memory takes a different kind of practice, and that practice lived in separate tools: a flashcard app and a paper copybook.

The project started from a 2024 МПГУ diploma by Смакова, Шаталова, and Шинкарева. Their research became my brief.

Goal

I turned the diploma’s brief into a product and built it myself: a Telegram bot, a FastAPI backend, a PostgreSQL word database, and a Vue handwriting app.

The goal was to connect looking up a character with practising it, in one place. To know if it worked, I’d look at the share of learners who save 5 words and unlock flashcards, the share who go on to handwriting, and scores on the same character over repeated attempts. The constraints were one developer, a student budget, and a chat interface that can’t draw.

Research it started from

This research was the diploma team’s, not mine. They studied copybooks, memorisation methods, and competing apps and bots, and 15 of 20 visitors at their open-day masterclass were interested in the idea. That’s a signal of interest, not a test of my product.

Their competitive analysis also showed a gap. Serious writing practice lived in separate apps, and Telegram bots were easy to start but mostly about vocabulary.

Positioning map from the diploma team’s competitive analysis. Two Sticks aimed for the top right: easy to start, with real writing practice.

Decisions

1. A Telegram bot instead of a new app

Every new app is one more thing to install, open, and remember.

Two Sticks chat where the dictation command offers a button that opens the handwriting practice.
  1. The dictation command
  2. A button opens the handwriting practice
Handwriting opens from the chat as a Web App.

So I built a Telegram bot for search, saving, and flashcards, plus a Telegram Web App for handwriting.

Learners were already in Telegram every day. There’s nothing to install, and practice sits right next to their chats.

A standalone app would have given more freedom in the interface, but a harder start, the same trade-off Skritter makes.

2. One saved list for every exercise

Learners had to build a separate word list for each tool.

Search for a Russian word returning a list of matching Chinese words.

Search by a Russian word.

Character card with pinyin, meaning, HSK level, and a save button.
  1. Pinyin, meaning, and HSK level
  2. Save, right on the card

Save it from the card.

I put Save on the character card, next to pinyin, meaning, and HSK level, and flashcards, notebook sheets, and handwriting all pull from that one list.

That way every lookup can turn into practice, with no extra setup.

3. Flashcards unlock at five words

A multiple-choice card with only one or two saved words has no real wrong answers.

Flashcard practice built from the learner’s saved characters.
  1. A word you saved
  2. The other answers: your other saved words
Questions come from your own saved words.

So flashcards open once five words are saved, and until then the empty state says how many more to add.

The quiz only works with real alternatives, and the countdown turns the wait into a small goal.

4. A notebook sheet for each character

Copying a character without knowing its parts makes it hard to remember.

The saved-words command sending a notebook sheet into the chat.
The sheet arrives in the chat.
Filled notebook sheet for 教 with structure, stroke order, similar characters, mnemonic, and writing grid.
Structure, stroke order, look-alikes, a mnemonic, and a grid on one sheet.

The bot sends one notebook sheet per character right into the chat, with structure, stroke order, similar characters, a mnemonic, examples, and a writing grid.

The diploma research pointed to structure and mnemonics, and in the chat the sheet is always one scroll away.

5. An optional primer

A primer on how characters work helps beginners and slows everyone else down.

Two Sticks introduction asking whether the learner wants to learn how characters are built, with the options “Yes, show me” and “I already know”.
  1. “Yes, show me” or “I already know”

A choice before the primer.

Primer message explaining graphemes and radicals with an example diagram.

The primer, for those who want it.

So the bot asks first: “Yes, show me” or “I already know”.

People who know the basics can skip it, and the primer is still there for everyone else.

6. The learner’s core loop first

The diploma brief also included live teacher supervision, an HSK statistics dashboard, and audience growth plans.

I shipped the learner’s core loop first: find, save, recall, understand, write. The rest could wait.

Teacher tools only matter once learners come back on their own, so that had to be proven first.

  1. 1Find
  2. 2Save
  3. 3Recall
  4. 4Understand
  5. 5Write

Results

Three tools became one chat, with nothing to install.

Before: 3 tools

  • Dictionary
  • Flashcard app
  • Paper copybook

Two Sticks: 1 chat

  • Search, flashcards, notebook sheets, and handwriting, all in Telegram

A few students at the university used it, and I talked with them about how it went. They liked having everything in one place: no switching between apps, and less effort just to keep up. What they missed was pronunciation practice.

One honest limit: the handwriting score shows how similar a drawing is to the character, but it doesn’t check stroke order. And no usage analytics were collected, so all of this comes from those conversations.

The prototype is no longer hosted, because the bot, API, and Web App need paid infrastructure. The public source code shows the working version, under its working name, Chinese Bee.

Next steps

I’d add the voice. Students missed pronunciation practice, and Telegram already has voice messages, so the next step fits right into the chat: hear a word, record it, and get feedback on the tones.

Pronunciation drill, proposed

In the chat, 4 steps

  1. Hear the word
  2. Record a voice message
  3. See which tones were off
  4. Try again

Not built yet. Success would mean tone scores improving on the same word over attempts.