18
points
Hello! I finished school recently, and I've spent my time working on Nuenki (https://nuenki.app). It's a browser extension that translates sentences at your difficulty level into your target language and lets you quickly compare to the original by hovering.
You naturally pick up the language as you browse, checking the original when needed.
Translations are handled by DeepL, which is 3-6x more accurate than Google Translate[0].
You can use it for free for 24h, no card details required. I'd really appreciate feedback!
One minor feedback: I would like a larger, much more prominent toggle to turn the translation on and off — not that the setting is hard to find, but I found myself wanting to quickly toggle the add-on (e.g. off for serious work) and the small checkbox feels a bit fiddly.
More technical question since I'm interested in language learning software: How do you implement sentence difficulty, and how do you track user progress, aka when do you show harder sentences?
Sentence difficulty is all calculated on the English side, because it would be prohibitively expensive to translate before doing the calculation. It uses the vocabulary difficulty (via bloom filters - I'm planning to write a blog post with more detail on how I made it performant) and some grammar heuristics (punctuation, case/tense, etc).
Users don't automatically progress - perhaps I should have made that clearer. You choose your difficulty using the slider in the extension popup, deciding yourself when it's a good time to increase it.
If you want some inspiration for the toggle: have you ever seen the Firefox uBlock Origin plugin UI? They basically have a giant on/off button, which I think is a rather good solution.
Interesting approach for the difficulty evaluation, and rather pragmatic. If you happen to have some write-up for the grammar heuristics or more detailed sources, I'd be interested :)
Definitely didn't realize I had to set difficulty manually (but maybe I'm just blind). Would be interesting to see if there's any smart way of auto-evaluating progress...maybe something like occasionally asking how difficult a sentence that the user hovers was or even just passive signals such as whether sentences are hovered. Just because if difficulty would be evaluated by the software, you'd both have a non-subjective measurement of your progress and you truly just could have this on in the background, never thinking about it, and still always learn.
Just some random thoughts; in any case good luck with this!
This is very well executed. I don't do Chrome Extensions and am not looking to learn a language at this point in my life, but will be curious to see where you go with this.
Here are a couple of user tests for you: https://news.pub/?try=https://www.loom.com/embed/ff5edd3d420...
Customer-wise, I'm right in your wheelhouse. However, the price is too high for what it does. If your app performed better, I would grit my teeth and subscribe anyway, but as it is I'll wait.
I understand if that cost range is just not feasible, though.
In any case, best of luck with this!
I'd love to decrease the price, but DeepL is really quite expensive. I'm hoping I can decrease it in the long run as users build the cache, but there's a bit of a chicken and egg problem because I need users first.
The other issue is latency, which DeepL is pretty good at.
Right now my focus is on why not a single user has converted from the demo, and yet I got four from posting it on producthunt without a demo. I think I might not make it clear enough when it's ended - it stops translating and tells you if you open the popup, but maybe people aren't noticing?
One more recommendation: collect emails for people like me who want to see how your project develops over time.
https://jointoucan.com/ does the similar but is free
There seem to be some browser extensions that specialise in adding furigana to existing text, so you might be able to layer that on top as a temporary solution. https://chromewebstore.google.com/detail/furiganator/ijfcmmk... works for me, but you have to click the extension icon first.