The ParrotTalk parrot mascot wearing headphones next to a speech bubble

On July 7 I fixed the bug that matters more than anything else I have built into ParrotTalk. It has no screenshot, it wins no argument, and nobody will ever thank me for it. It is simply this: your progress is saved, and a reload no longer costs you your answers.

I want to explain why I put a whole session into something so invisible, because the reasoning shaped a lot of what came after.

Picture the person on the other side

The candidate I keep in mind is not sitting in a quiet study with two spare hours. They are practising at half past ten at night, on a laptop with fourteen tabs open, after a full day of work. They have answered twenty-something Listening questions. Then the browser hiccups, or they hit refresh out of habit, or a phone call knocks the tab sideways.

If everything they just typed disappears at that moment, they do not file a bug report. They close the tab. And they are right to. Redoing twenty answers you already got right is not practice, it is punishment, and nobody signs up for punishment on a free site they found ten minutes ago. Losing work is the single most effective way to make someone never come back.

So before adding anything new, I went and made the thing not lose your work.

Deciding what "done" actually means

The first decision was smaller than it sounds and it fixed a lot on its own. Until then, a Listening section was considered finished when the audio finished playing. That is a tidy idea and a bad one. The audio ending tells you the recording is over. It tells you nothing about whether the person is done writing. Plenty of candidates are still going back over question seven when the tape runs out, which is exactly what happens in the real exam too.

So I moved the decision to where it belongs, which is with you. There is now an explicit button, "I've finished this section", on each of the four Listening sections, and "I've finished this passage" on each of the nine Reading blocks across the three tests. Clicking it does two things at once: it saves your score and your answers, and it moves you on. Nothing is ever decided by a clock or a sound file.

That single change turned a fuzzy state, "the audio is over so presumably you are done", into a fact I can act on. And a fact is something you can save.

Saving without collecting anything

Underneath, I wrote three small helpers, save, load and clear, and kept them generic so Listening and Reading could share the exact same machinery instead of each growing its own slightly different version. Everything lives in your own browser, namespaced per module and per test, so a Listening test in progress cannot tread on a Reading one.

Worth saying plainly, because it is the kind of thing people assume the worst about: none of this involves an account, a server or a single piece of personal information. There is nothing to sign up for, nothing sent anywhere, and nothing about you in what gets stored. It is your answers, on your machine, waiting for you to come back. That is the whole design. It is also why the site can stay 100% free with no sign-up: there is no user database to build, because there are no users to store.

I also went and taught the reset button on the dashboard about the new saved data, so that "clear everything" really means everything. A reset button that quietly leaves things behind is worse than no reset button at all.

The bug inside the fix

Here is the part I like. While testing the save and restore cycle, I found that I was storing the wrong position. When you finished section one, I was saving "you are on section one", because that was the section the code was holding at the time. Reload, and you would come back to the section you had just completed rather than the one you were about to start.

Nothing was lost, technically. Every answer was safely there. But you would have come back to a section already marked as done and thought the site was confused, or worse, that your work had been thrown away and you were starting again. The perception of a lost answer does exactly the same damage as a genuinely lost answer.

It was a one-line fix, and I would never have found it by reading the code. I only found it by running the whole cycle end to end, the way a person would: finish section one, start section two, simulate the reload, look at what actually comes back.

What it taught me

The lesson has stayed with me. On a practice tool, reliability is not a background quality that sits behind the features. It is the feature. A brilliant AI report is worth nothing to a candidate who lost twenty answers on the way to it.

Every session since, I have started with the same question: what would make someone close the tab in frustration tonight, and can I remove it before I build anything new. It is a slower way to work. It is the only one that produces a tool you would actually rely on the week before your exam.

Your work stays where you left it. Practice a section tonight, finish the rest tomorrow.

Take a full mock test →

The autosave described here runs on every section, including the free IELTS Listening test.