My dad tells his stories in Bulgarian. He was the first real user of Spomen, so getting it to work in Bulgarian mattered from the beginning. The app needed to follow what he was saying, ask a useful question and let him keep talking without too much waiting around.

The part behind that is StoryEngine. It transcribes the recording, works out which details might be missing, and turns the conversation into a story you can read later. That last step is where things can get tricky. A well-written paragraph can still get someone’s life wrong.

Spomen story editor showing a fictional sample family story
The story editor, shown with fictional sample content.

Asking a useful question

After each answer, the engine keeps track of the people, places and dates mentioned, along with what happened and why it mattered. It uses those details to choose a follow-up question.

A story about a grandfather’s character needs different questions from a story about moving to another country. Repeatedly asking “what happened next?” gets tedious, especially when the person is describing a habit or a relationship rather than a sequence of events.

The engine also remembers what it has already asked and which details the speaker corrected. If someone says “Pernik, no, Kremikovtsi,” Pernik shouldn’t keep turning up in the story’s tags. This sounds like a small thing until you see how often a model keeps both.

Longer interviews brought another problem. Sending the whole conversation back to the model after every answer made it slower as the story grew. I changed that to a running summary plus the recent exchanges, while keeping names, dates and earlier questions separately. Tests with long English and Bulgarian conversations helped check that the shorter input hadn’t lost important details. I wrote more about that in the model comparison.

Turning speech into something readable

Spoken stories wander. People repeat themselves, remember a detail halfway through and go back to explain who someone was. A transcript preserves that, but it can be hard to read.

Spomen offers two treatments. “As told” stays close to the speaker’s wording and order, with some cleanup. “Literary” gives the writing more shape and rhythm. Neither is meant to add events or explanations that the person never gave.

Family members can add their own memories too. Those contributions keep their names attached, including when two people remember something differently. The engine shouldn’t settle a family disagreement just because one version makes a tidier paragraph.

Keeping the original close

A separate check compares the finished text with the transcript. It looks for changed names and dates, missing negatives, invented causes and remarks assigned to the wrong person. It can flag a problem; it can also miss one. The story remains editable.

The original recording and transcript stay alongside the rewritten version. You can return to them, correct the text or export the material. Optional narration uses a separate voice rather than cloning the person who told the story.

I like being able to read a family memory as a finished piece, but the recording matters just as much. The pauses, the way someone says a name, the little detours they take—those are part of what you wanted to keep in the first place.