Inspiration

Many intermediate French learners can understand a lesson or podcast, but freeze when they need to produce French themselves. Listening alone does not reliably become usable language.

Croa was inspired by that gap: a learner should be able to practise immediately after a lesson, receive only the feedback that matters most, and have useful patterns remembered for the next session.

What it does

Croa is a French writing-practice companion for A2–B1 learners.

A learner chooses a short, self-authored lesson outline and writes a guided retelling in French. Croa then:

  • guides the learner through small writing prompts;
  • gives at most two focused corrections;
  • requires a sentence rewrite, so feedback becomes practice;
  • stores structured error records locally;
  • promotes only repeated evidence into a learner weakness; and
  • opens a later session with a warm-up based on a real prior pattern.

The key moment is the second session: Croa can say, in effect, “Last time, we practised this pattern. Try it again here.”

How we built it

We built Croa as a Vite, React, and TypeScript web app. The experience is organized into four focused views: lesson selection, writing session, summary, and error bank.

The product logic is separated into a conversation engine, correction flow, and a three-layer error model:

  1. structured correction records;
  2. aggregation of repeated errors into weaknesses; and
  3. scheduling of one relevant weakness for later recall.

Browser local storage keeps the demo state persistent without requiring accounts or a backend. We used Codex to turn the product outline into the app structure, interaction flow, tests, and implementation.

Challenges we ran into

The main design challenge was resisting the urge to correct everything. Too much feedback interrupts writing and makes an A2–B1 learner feel overwhelmed, so Croa deliberately limits each session to two high-value corrections.

We also needed to avoid treating one typo as a lasting weakness. The error model only surfaces a pattern after it has supporting examples, making the recall experience evidence-based rather than fabricated.

Finally, we kept the content scope intentionally narrow: self-authored lesson outlines and typed writing only. That let us validate the core learning loop instead of building a broad content platform.

What we learned

The most promising part of the product is not a single correction. It is continuity: turning a learner’s past mistakes into the right next prompt. Croa is designed to make practice feel cumulative rather than like starting a new chat every time.

Built With

Share this project:

Updates