Storage
A backup is not a memory
Ten thousand photos, perfectly preserved, and not one of them says what was happening. You kept the file and lost the story.
OurTales turns one photograph into a shared story. You add your side, then send a link — and everyone who was there adds theirs by voice, photo or text. Every version is kept. Nothing is public unless you say so.
Find us on Product HuntEvery cloud album on earth solved storage. None of them solved the part that actually disappears — the voice that could tell you who is on the left, and why everybody was laughing.
Storage
Ten thousand photos, perfectly preserved, and not one of them says what was happening. You kept the file and lost the story.
Silence
The knowledge lives with the eldest, the founder, the one who organised it. Nobody sits them down — until the day it's too late to.
Scroll
You post the photo, six people reply beautifully, and in a fortnight it is 900 messages up. The context existed. It just didn't stay anywhere.
The hard part of collecting memories was never the collecting — it was getting everyone else to take part before the moment passed. So the asking is one screen, and answering is a voice note.
Post one photo and say what you remember — typed, or just talk and let it transcribe. Add when and where if you know them. Guessing is allowed; the app records that you guessed.
The people who remember are usually in the room, so the invite is a QR code you hold up — or a link you send. They install OurTales and pick a username: no email, no phone number, no real name.
The story
The morning at the shore. The tide was far enough out to walk on the flats. Memories differ on the year: the owner remembers 1998, Faisal remembers 1999 — both are kept, neither is chosen.
Everything gathers into a single narrative with every claim attributed and every disagreement kept side by side. Nobody's words get rewritten. Nothing gets published until you approve it.
Three ways to answer, presented as equals — because the best account of a night is usually spoken, not typed. Voice notes play back in place, with the speaker attributed.
Family, friends, work and community stay separate. A photo goes to the circle it belongs to, and the people in that circle are the only ones who ever see it.
Every contributor marks their own certainty — certain, I think, not sure — and the app keeps it. When two people remember a night differently, the story holds both, attributed, and refuses to pick a winner. That is the single design decision the whole product turns on.
Where memories differ
Generated from two contributions. Neither was edited.
“Who remembers that old car?” goes out to the circle and comes back as a memory from each of them — one question, many answers, all kept together.
Memories are the photos you started. Shared with me are the ones you spoke into. The counter on your dashboard leads with voices collected, not photos stored — this is not a storage product.
Every product in this category asks you to trust a prompt. Prompts are guidance. These are boundaries — triggers, check constraints and row-level security in Postgres, where a bad model response simply cannot get through.
Yours or a contributor's. The owner may exclude a remark or delete it — never edit it. guard_remark_update
Proper nouns in the narrative are diffed against what people actually wrote. A violation falls back to a composer that can only rearrange, never add.
Any observation that asserts who someone is gets dropped, not softened. The app will tell you the image wasn't analysed before it will guess.
If the model returns a confidence level, it is discarded and theirs restored. Only the person who remembers gets to say how well they remember.
A check constraint, not a code path — and withdrawing approval forces the story private again. public_requires_approval
Tokens are resolved server-side and rate-limited, and row-level security decides every read. Someone you invite to one photo sees that photo — never your other memories, and never who else was invited.
This is the whole product in one screen — and the reason the uncertainty sits above the narrative instead of in a footnote.
What happened
The tide was far enough out to walk on the flats. He had just started walking that summer and would not hold anyone's hand, which is what everyone remembers first.
From the owner's account and Nadia's voice note.
Where memories differ
In their own words
Nadia Certain
“We left before sunrise so the sand would still be cold. Nobody else was down there for an hour.”
Samina Not sure
“There was somebody else with us that morning. I can't place who.”
OurTales is not on the Play Store yet, so you install it directly. That is normal for a beta, and it means the file comes from us rather than from a store listing — so here is exactly what you are getting and how to check it.
Tap the button on this page from the phone you want it on. Your browser will ask you to confirm the download — that is the browser, not the app.
Android will say it “can't install unknown apps from this source”. It is asking about the source, not the file. Tap Settings, turn on the permission for your browser, then go back and tap Install.
Android shows it for every app that did not come from the Play Store, including ones from companies you have heard of. It is a statement about where the file came from — which is why every build is published on GitHub with its SHA-256, so you can prove the file you got is the file we built.
Pick a username, add the photo, say what you remember, then send the invite link to the people who were there. They need nothing installed.
Everyone taking part needs the app, and the app is Android-only for the moment — so an iPhone cannot join a memory yet, not even to add one voice note. That is the honest answer. Leave your email and you'll hear the day it changes.
We'll email you the day the iOS build is ready.
Nothing is gated and nothing is metered — but this is a beta, and a beta only works if the people in it use it for real. No surprises after you install.
Yes — for now. Everyone adding to a memory installs the app and makes an account. Signing up is a username and a password: no email address, no phone number, no real name, about twenty seconds.
We would rather it were nothing at all. The server side of an account-free browser route is built — the endpoints that let someone hold a token instead of an account already exist — but it is not switched on in this build, so we are not going to describe it as if you could use it today. Getting an elderly relative over the install is the friction we most want the beta to show us.
It cannot add anything. The composer arranges prose that real people wrote, and the safeguards sit in the database rather than in a prompt: invented names are diffed out, invented witnesses are dropped, identification of faces is discarded, and the contributor's own certainty is restored over anything the model claims.
If no AI composer is configured at all, a deterministic composer runs instead — it can only rearrange, so invention is impossible by construction.
Only the circle you posted them to, and only the people you sent the link to. Nothing becomes public unless you approve it, and that rule is a database constraint rather than a settings toggle — withdrawing approval unpublishes the story immediately.
The beta is free, and everything you collect during the beta stays free to you permanently. We haven't set pricing beyond that, and we'd rather tell you honestly than invent a number for a landing page.
That warning appears for every app that did not come from the Play Store, including ones from companies you have heard of. It is a statement about where the file came from, not about what is inside it.
So we make the source checkable: the build is published on GitHub Releases, it is signed with APK Signature Scheme v2/v3, and every release prints its SHA-256 in the release notes. If the checksum of your download matches, you have the exact file we built — bit for bit.
Because this build carries native code for all four Android architectures in one file, so a single link works on any phone rather than making you pick. A per-architecture build is a fraction of the size and is what will go to the Play Store — this one is optimised for “send the link and it just works”.
Android for now, and that applies to everyone in the circle — the people you invite need an Android phone too, because taking part means installing the app. There is a one-field waitlist on this page for the day the iOS build lands.
For this build, by downloading the next one from this page and installing over the top — your account and everything in it stays put. Automatic updates arrive with the Play Store listing.
Yes. Ask and we export everything in your account, including the contributions other people made to your photos. It's your family's archive; holding it hostage would defeat the point of building it.
It's a beta and we'd rather you hear it from us. Everyone you invite has to install the app and sign up — the account-free browser route exists on the server but is not switched on. There is no password reset (we don't ask for an email at sign-up, so there is nowhere to send one). Invite links can't be revoked once sent. And the story won't describe what is in the photo, because image analysis is off — it says so rather than guessing.
The beta exists to break exactly these, in that order.
A place where memories become stories worth keeping.
If the idea of asking your people before you lose the answer is worth existing, an upvote is the cheapest way to say so. It puts OurTales in front of other people holding a photo nobody has explained yet — which is the only distribution a free beta really has.
Opens Product Hunt in a new tab · takes about ten seconds · you keep reading here
Ask this week. The app is free, it takes three minutes to install, and the people who remember are not getting any less busy.