We Accidentally Deleted a Week of Learning Data. Here's What Happened.

Last night we accidentally deleted a week of learning data. We want to tell you exactly what happened, why it happened, and what we're doing about it.

First, the good news: we recovered. We had a backup from 10 days ago, and everyone's progress has been restored. If you used Ari in the last week, you might notice a session or two missing — and we're genuinely sorry about that.

Now here's what actually happened.

Building personalized AI isn't just about prompt engineering. It's about building a living history with each student. When that history disappears, a piece of the relationship disappears too. And last night, we felt that in our gut.

We've been rebuilding how Ari remembers you. This is something most people never think about, but it's actually one of the hardest parts of what we do. When you sit down with Ari to study GED Math or practice for your CBCS exam, Ari doesn't just answer your questions. Ari knows what you've already covered, where you're struggling, how you learn best, and what to focus on next. To give you a sense of what's happening under the hood — every time you click "Start" or "Resume" on a topic, here's what happens behind the scenes before Ari says a single word:

  1. We load your entire learning profile from storage — your learning style, engagement patterns, knowledge gaps, everything Ari has observed about you across all your sessions.

  2. We load your progress on that specific topic — which subtopics you've mastered, which ones you're still working on, what happened last time.

  3. We check for unprocessed sessions — if there's an old session that hasn't been analyzed yet, we run extraction on it first (analyzing what you said, updating your progress, noting new patterns) so Ari has the freshest picture possible.

  4. Only then do we build the system prompt and call Claude to generate Ari's greeting.

That's 3-4 calls to our storage layer and at least one AI call, just to say "Welcome back." Compare that to something like ChatGPT or Gemini, where the AI starts fresh every time — or at best has a flat summary of past conversations. We're doing something fundamentally different. Ari actually adapts to you over time, and that requires real infrastructure underneath.

The old system loaded all of this when you opened the page. Every page load triggered all those calls. It worked fine with a few users, but when people started using the back button, opening multiple tabs, or switching between topics quickly, things got messy. Sessions would collide. Data would overwrite. It was fragile in ways that weren't obvious until real people used it in real ways.

So we redesigned it. The new architecture is simple and elegant: we don't do anything until you actually click Start or Resume. The page loads instantly, showing you your topics and progress. When you're ready, you see "Ari prepares..." while we do the real work behind the scenes. No wasted calls. No race conditions. No collisions.

It worked. It was clean. We had done it.

There's a feeling you get late at night when a migration goes perfectly — when the new system lights up and everything just clicks. You feel invincible. You feel like the code is finally right. That's the feeling we had.

And then we went to clean up.

The new system stores data in a different location than the old one. Same bucket, different path structure. We'd migrated everything over, confirmed it was working, watched real users hit the new paths successfully. The old data was just sitting there — dead weight, legacy cruft. Time to clean house.

The old code references were still scattered in parts of the codebase. The old paths looked familiar. Too familiar. In the excitement of "let's get this codebase spotless," we pointed at the wrong thing and pulled the trigger.

We deleted the new path instead.

Within minutes, the euphoria evaporated into that cold, sinking feeling every developer knows in their gut. The one where you stare at your terminal and the silence of the room becomes deafening. We'd just wiped a week of learning sessions, progress updates, and observations that Ari had built about real students.

Thankfully, we had the backup. We restored from 10 days ago, re-ran the migration correctly this time, and verified everything was back. But roughly a week of sessions — conversations, progress updates, learning observations — were gone. A week of Ari getting to know people better, erased by a single command.

If you're one of the users affected: we're sorry. Your progress might be slightly behind where you left it. Ari might ask you about something you've already covered. It'll catch up quickly — Ari is good at that — but it shouldn't have happened.

Here's what we're doing now.

We've implemented daily backups. Not weekly, not "when we remember" — daily, automated, no human in the loop. We've also cleaned up the codebase so there's exactly one storage path, clearly labeled, with no legacy references that could cause confusion. The thing that tripped us up — having two similar-looking paths where one was alive and one was dead — can never happen again.

This was our first real data incident in over a year of being live. We're a small team, we move fast, and sometimes moving fast means you break something that matters. We'd rather be honest about it than pretend it didn't happen.

Your learning data matters to us. It's what makes Ari different from every other AI chatbot out there. It's the reason Ari can pick up where you left off, skip what you already know, and push you exactly where you need to grow. That data is the relationship. And we'll protect it better going forward.