Ikorya
SaaS web app with AI · 2026
Ikorya is a web app that walks anyone through turning scattered memories into a coffee table book of around thirty pages, say, about a loved one’s life. We designed and built the whole product: a guided interview with voice notes, an editable timeline, AI writing and images, automatic layout, a 3D viewer, and PDF export. These are family stories, so privacy was designed and tested before the pilot opened.

- Client
- Ikorya
- Year
- 2026
- Our role
- Product, UX/UI, end-to-end development, and infrastructure
- Platform
- Web app
- Status
- Pilot with real accounts since September 2026
- 54/54
- data isolation tests, not a single leak
- 115
- automated tests, all green
- 9
- editorial collections, 25 templates
Context
01
A book about a life, no design skills required.
Users bring the story (text or voice notes), documents, and images. The AI plays editor: it interviews, spots the key moments, proposes the structure, writes, captions the photos, and generates or restores images.
The flagship use case: a short book about Grandma’s life. The art direction goes for editorial calm, none of that “AI tool” look: the pages look like paper.
The challenge
02
Four jobs in one app, and data that can’t get out.
Put the work of an interviewer, a writer, a photo editor, and a layout designer in anyone’s hands, with a result that doesn’t look like a template.
- 01Family stories, photos, and voices: privacy is non-negotiable from day one.
- 02Images that keep the likeness of real people without inventing scenes that never happened.
- 03What you flip through on screen is exactly what gets printed.
- 04A locked scope: create, tell, generate, tweak, and export.
How we worked
03
The process, step by step
- 01
Scope
Functional scope signed in June, followed by a module-by-module PRD with acceptance criteria, the architecture, and a build plan in waves.
- 02
Build
Parallel waves of AI agents, each the sole owner of its own folders so nobody steps on anybody’s toes, plus QA with two reviewers and browser testing: 16 findings fixed.
- 03
Three designs
Three complete directions, landing page and app, that you could compare inside the app itself with a switcher. The client picked one.
- 04
Trust and family
Images proposed before they’re saved, controls to skip or pause topics, an honest “how much book do we have” meter, family collaboration by link, and AI provenance credits.
- 05
Audit
A review from every angle (backend and security, frontend, data, product, and DevOps), verified against the code. Verdict: no rewrite and no stack change.
- 06
Polish
A complete UI system, nine editorial collections with 25 templates, and a 3D book viewer.
- 07
Pilot and handoff
Production and staging in Frankfurt, the isolation matrix, pilot accounts, and the code on GitLab with a dev → test → main flow, plus a product wiki and a backlog for the team.
Problems & fixes
04
Problems we ran into and how we fixed them
Nobody sees a book that isn’t theirs
- Problem
- Family stories, photos, and voices: exporting and publishing couldn’t be the same thing.
- Fix
- Exporting a PDF no longer publishes anything. Publishing is a separate action, confirmed and revocable, with a random link; the public edition filters the moments first and only then signs the image URLs. Every voice note requires consent, and photos are stripped of their metadata.
- Result
- An automated isolation matrix: 54 of 54 checks, two runs in a row, zero leaks.
Images for sensitive moments
- Problem
- For moments about a death or an illness, the image model came back with no image and no error.
- Fix
- Claude first translates the moment into a purely visual scene (object, light, place, season) without spelling out the sensitive part, with retries and diagnostics.
- Result
- A moment about a death produced a warm image on the first try: a table by a snowy window.
The model, swamped on the first real test
- Problem
- On the client’s account, the image model returned “high demand” and the feature looked broken.
- Fix
- Retries with a growing wait, for overload only; quota errors are left out on purpose, because retrying them is pointless.
- Result
- The transient failure now gets absorbed on its own, with a test to back it.
What you flip through is what you print
- Problem
- The viewer and the PDF could drift apart, and a parameter in the PDF library was shrinking the height of every page.
- Fix
- Viewer, editor, and PDF all read the same layout model, in the same unit; the parameter was removed and text was capped by density.
- Result
- A single model for screen and print.
Sign-up links that were “no longer valid”
- Problem
- The pilot’s activation links carried the token in a part of the URL that never reaches the server.
- Fix
- A confirmation route that redeems the token on the server, with a locked-down redirect; public routes stay on an explicit list.
- Result
- All five pilot accounts, activated.
Family pitches in without opening up the database
- Problem
- A relative without an account had to be able to add a photo or a memory to a specific moment.
- Fix
- A per-moment link that the owner generates; all collaboration runs through a single server module that revalidates the link on every write.
- Result
- Tested end to end: contribute, attribute, revoke, and block.
What we built
05
Pieces of the project
- 01
The book
An Ikorya book, pages turning.
02The landing page
Editorial calm: the pages look like paper.
03For the family
Books to keep and to give as gifts.
Results
06
What we pulled off
54/54
isolation tests
Two owners, an anonymous visitor, the private photo storage, the public link, and a revoked invitation. Zero leaks.
115
automated tests, all green
From 28 in July to 115 in September.
0
lint errors and warnings
In the July audit, with browser QA on desktop and mobile.
9 · 25
collections and templates
Nine editorial collections and 25 page templates.
5 → 3
steps to create a book
The creation wizard, simplified after testing it.
5
pilot accounts
With sign-ups closed since September 8, 2026.
Services
Built with

