Bespoke is a language learning tool that helps you both memorize and apply vocabulary in context. Powered by spaced repetition, users are shown sentences that connect words that need practice.
Generative AI can help you create large amounts of custom flashcards for any language pair. Or, if a dataset already exists, jump straight into learning!
Compared to existing flashcard software, this tool is specialized for languages, with the following advantages:
- Depth: Beyond pure memorization, you learn to use vocabulary in sentences.
- Efficiency: A flashcard can have more than one learnable unit.
- Cohesion: Supports receptive (listen/read) and expressive (speak/write) skills. It adjusts your review schedule to account for cross-pollination. 🐝
Bespoke is experimental, and we are still learning how to learn better.
To start learning, you need a dataset of cards, and an app to learn with them.
This collection grows as more cards are generated.
Download the dataset on your Android phone, or laptop, from these sources:
| Language Pair | Kaggle Dataset |
|---|---|
| German → Traditional Chinese | bespoke-cards-german-tradchinese |
| English → German | bespoke-cards-english-german |
For Android, use the import function of the app.
For Python, copy the .db file into cards/.
If you don't find a dataset that fits your needs, follow the manual for our LLM pipeline to generate your own dataset.
Once you have a dataset ready, you can use one of our apps to select and show cards for learning. There are two options:
- An Android app.
- A Python frontend that opens a browser tab.
An Android app is being tested, but not yet in the app store. To build it, see the developer manual. You can upload a .db file into the app to start learning.
Note: If you upload a dataset into the app, it will make a copy. You can save space by deleting the downloaded dataset afterwards.
You can use uv to run the Python code, for example:
uv run learn.py --target="Japanese" --native="English" --difficulty=A1 --use_read_modeDue to browser restrictions, the first card will not autoplay sound. All cards after the first will work as expected.
Bespoke does not store or synchronize your data. After cards are generated, it
runs fully offline. This also means that you are responsible for not losing your
progress. You may want to regularly copy and save the file deck_<language>.json
to a secure location of your choice. To learn on a new device, simply copy the
file over.
The Android app regularly exports the progress into your phone storage. You can upload these files on the starting screen of the app on a new phone to continue learning.
Currently, learning on two devices simultaneously is discouraged. You would need to copy the progress file back and forth.
This is not an officially supported Google product. This project is not eligible for the Google Open Source Software Vulnerability Rewards Program.
