Langchats V2

What I've been working on.

<01.07.25>

Hi everyone and thanks for taking the time out of your day to read about my journey with Langchats so far and my plan for the application moving forward.

The Beginning

Langchats V1

Two years ago I made the first version of Langchats using the T3 Stack. This was my very first production web app and the first time I properly had people using a product I had built. Not many, but enough to show me that making money online is possible. I didn’t carry on with the project after only about a month of development because my main marketing strategy and method of distribution was my YouTube channel about learning German. I loved the idea for the product but the AI just wasn’t quite advanced enough yet, I didn’t know enough about building production web applications yet and, most importantly, I didn’t see myself becoming a full-time German teacher on the side. I’m not even fluent in German, only B1 level (and that was seven years ago) probably only A2 now. So I couldn’t see a way forward with the project and I lost all motivation.

In-between

Here’s a super condensed look at what’s happened since then:

  1. Spent another five months working on different projects. Nothing took off. I was in over my head, didn’t have the structure, wasn’t a good enough coder and didn’t have any great ideas.
  2. Got a job at a great startup in Edinburgh building hospitality SaaS. Spent six months there and learned how to actually build production applications. Built out v2 of their loyalty service. Never should have left.
  3. Got scared that AI would take my job, panicked and quit to do a one-year Masters in AI. (In hindsight this was not the right call, I should have stuck where I was, but that’s life. You live and you learn.)
  4. In two months I will finish my MSc in AI (end of August 2025).

Quick note on what I learned from MSc AI

  1. I like building more than research.
  2. Machine learning and AI is slow to train and develop and I don’t have the patience for it. I prefer the fast feedback loop of software development.
  3. Software development is going to change dramatically in the next few years but it isn’t going away.
  4. I want to be at the forefront of the agentic software revolution.

Today

Langchats V2

Towards the end of the MSc I realised that I actually don’t want to go down the AI research path. It’s extremely competitive and there are far smarter people who have spent their entire time at uni optimising to get one of these AI research jobs. I have to accept I cannot compete with them and I’m not willing to spend years trying. And as I mentioned, AI/ML is interesting but it’s pay-to-play (way out of my budget) and I don’t have the time to sit around waiting hours, days or maybe weeks for models to run. I want almost instant feedback loops and agentic software development gives me that.

Therefore, I chose to do my MSc AI dissertation on AI-enhanced language learning and I’m building the whole Langchats product again but way better this time. It’s given me an excuse and the ability to go all in on this for at least three months (one down already). I’m having a blast so far and the development process has been so fun with the latest AI tools, Cursor and Claude Code.

My goal with this is to build an exceptional web-based product. One that I can be proud of and will use religiously myself. If I can do this I know I’ll be able to get others to use it too. I’ve also realised that I don’t need to be a “German teacher” in order to make interesting language-related content. I have some other plans like me talking shit with my AI in German and recording it, and a series that documents me trying to go from B1 to C1 in about three months using my own product. This is content I’m actually excited to make and it doesn’t feel like a burden.

Langchats so far

I’m a little over a month into creating this full time. This is very much an MVP so everything will get better over time, but I’m pretty happy with where it’s at right now. Here’s a quick video demo of what I’ve done so far:

Realtime voice-to-voice chat

Realtime Voice-to-Voice Chat

The most important feature of this application is almost certainly realtime voice-to-voice communication. This is what people really want. This is what I want. People want to be able to speak to an AI just like they would to a real language partner. It currently works really well with the latest Google realtime voice model that doesn’t have rate limits. The native audio model that launched earlier this month is unbelievable but it’s rate-limited to 50 requests per day so I can’t use it in production unfortunately. Hopefully within the next month or two it will be out of preview and I can use it to my heart’s content. It’s so damn good and at a price point that makes it usable. OpenAI’s realtime voice is also great but way too expensive right now.

A little bit on the architecture: the system uses a WebSocket connection between the Next.js frontend and Node.js backend to stream real-time audio. The frontend captures microphone input, sends it as 24kHz PCM chunks, and plays back AI responses with smooth buffering. The backend routes audio to my AI model provider, handles authentication, interruptions, and saves transcripts. This enables fast, high-quality, two-way voice conversations with AI that feel really natural and responsive.

Non-realtime chat

Non-realtime chat is also important for those at the beginning of their language learning journey who need more time to think about what they want to say. It’s also a cheaper alternative and uses fewer credits than realtime chat.

Translations

Translations

Translations are available in both chat formats and allow a user to translate a portion or all of a given chat message to their native language.

Suggestions

Suggestions

In both chat formats the user has the option to get a suggestion for what to say next based on the previous chat history, or if they know what they want to say but don’t know how to say it in the target language, they can translate it through the suggestions feature.

Corrections

Corrections

In both chat formats the user can press a button on their chat message and get a correction for what they’ve just said.

Chat Contexts

Chat Contexts

A user can create their own context to be used in the application. A chat context guides the conversation. It tells the AI what the conversation is about. Chat contexts can be very specific, for example a hotel check-in scenario in German, or you can simply have a free chat and talk about anything you like. Totally up to you.

Another great part of this is the ability to add vocabulary from the word frequency list of your language for the AI to use in conversation. My goal here is to hook this up to the flashcards feature so I can learn X words a day via spaced-repetition flashcards and then both hear and use them in conversation.

Progress tracking

Progress Tracking

All words, both used and heard in the conversation, are tracked so the user can get detailed progress analytics. This, coupled with flashcards and realtime voice-to-voice conversations, I think is going to be the backbone of the application. I’m a data guy. I love the numbers. There’s nothing more motivating than knowing you’re getting better because the data shows it. I really want to get this feature right as it can be incredibly motivating to track progress. Currently, it’s all very rudimentary but I’ll vastly improve this in the coming months.

Billing and Usage

Billing and Usage

AI models are expensive so I run a subscription model where users get a set amount of subscription credits per month, followed by optional credit packs if they run out. Each piece of functionality in the app has a different credit cost and all credit usage is tracked so users can see exactly how much they’ve spent and what on over time.

UI

Currently the user interface is a bit too “shadcn-y” and I want to give it more flair. I have a couple of apps in mind whose design I really like and I’ll try to emulate their style. I also need to make optional dark and light themes based on system settings.

Thoughts

When I think about the application so far I’ve been building lots of sections in isolation. The next step is to focus on the application flow. What is going to bring people back to keep using the application? What are some really cool new features we can create? Here are some of my thoughts:

The main loop that keeps people coming back is going to be a really good progression tracking system. I want people to be able to track their progress in great detail. I also want them to have to come back daily to learn their new flashcard words and then practise using them in conversation with the AI.

I also want to build a tangential service that is basically just Italki but with AI language partners, not real ones:

  1. You pick the level you want to talk at, the duration of your interaction, whether you want it to be realtime or not (or switch between the two). You pay for a set amount of conversation, so one-off payments for communication.
  2. You get help during the conversation: suggestions, translations, feedback, pronunciation help.
  3. You get a full report of the conversation:
    • A breakdown of the level it thought you were at, distribution of vocabulary used, etc.
  4. We can then upsell the full Langchats platform.

Unfortunately I think the future of this application is mobile. Pretty much every consumer application is mobile first. Only B2B applications are web native. So I’m I think I’m going to focus most of my time building out a react-native mobile application, I’d ideally like to put this off as mobile development is a really horrible experience and I’d rather stick with the web. I really need to consider whether I am using this as a project just to show of my software development skills, in which case going all out on web is ok, OR do I want this to actually become a successful product, because in order to become a successful product I almost certainly need this to be mobile native.

Techy stuff

If you’re interested in the stack I’ve used:

  • Database: PlanetScale (with Prisma ORM)
  • Frontend: Next.js
  • Backend: Express server (Node.js)
  • Frontend deployment: Vercel
  • Backend deployment and infrastructure: AWS
  • AI code editor: Cursor & Claude Code