Inspiration

Most AI language-learning tools treat every learner the same way: generate a lesson, correct a mistake, move on. But if you already speak two or three languages, you're not learning in a vacuum. Your existing languages are constantly leaking into the new one. Sometimes that helps. Sometimes it's exactly why you keep making the same mistake.

We wanted to build something that treats a learner's linguistic background as data, not noise. Instead of generic grammar correction, what if an AI could tell you which of your languages is actually causing a specific mistake, and use that insight to teach you better?

What it does

LingoTrace analyzes a sentence you write in the language you're learning, using AI to detect cross-linguistic interference: patterns from your other known languages showing up in your target language.

You select the languages you already know and the one you're learning. You write (or speak, using voice input) a sentence responding to a prompt. The AI breaks down your sentence across word order, vocabulary, register, and grammar, scoring how much interference shows up in each category and identifying which of your known languages is the likely source.

You get a full breakdown: a translation, a word-by-word analysis, more natural alternative phrasings, a plain-language explanation of the pattern it found, and a targeted follow-up exercise built specifically around your mistake, plus a quick quiz to check it landed. [Add/remove based on what's actually confirmed working: AI-generated roleplay scenarios instead of one fixed prompt, so every practice sentence comes from a realistic situation. A session recap tracking how your scores trend across multiple sentences. A shareable result card.]

The goal isn't just correction. It's showing a learner why they made a specific mistake, in terms of the languages they already know.

How we built it

Frontend: Next.js (App Router), TypeScript, Tailwind CSS.

AI: Google Gemini API (@google/genai), with a structured response schema so every analysis returns consistent, validated data.

Voice input: the browser-native Web Speech API, with language mapping so recognition matches the target language being practiced.

No backend database. This is a fast, stateless demo build, and all session state lives in the browser.

We built this as a team of two. One of us focused on the AI and prompt engineering along with backend logic, the other on UI design, polish, and the demo itself.

Challenges we ran into

Getting the AI to produce genuinely differentiated interference scores instead of lazy, uniform placeholder values took real prompt iteration. We had to explicitly instruct the model against taking shortcuts on short or simple sentences.

Gemini response latency varied quite a bit, from a few seconds to over 30 in some cases, so we had to design the loading experience carefully so it didn't feel broken.

We also had to balance linguistic honesty with a compelling demo. We wanted the AI to sound confident without overclaiming things it can't actually observe, like what language someone was "thinking in," so we framed everything as observable pattern and likelihood rather than certainty.

What we learned

Prompt design is product design. The single biggest quality jump in this project didn't come from a new feature. It came from rewriting one instruction in our prompt that was quietly giving the model an easy way out. Small, precise changes to how you ask an AI for something matter just as much as what you ask it to build.

What's next for LingoTrace

Real pronunciation and audio analysis, not just text-based interference detection. Persistent learner profiles that track interference patterns across many sessions instead of just one. Expanding beyond isolated sentences into full conversational practice.

Built With

Share this project:

Updates

Submission history