Project

A platform for preserving community oral histories

Shipped · Claude Code · Codex · 2026

Role
Founding Product Lead
Timeline
Oct 2025 to Mar 2026
Platform
Web (mobile, tablet, desktop)
On the institution side, an organization opens a campaign from its dashboard, shares it as a link or QR code, then reviews a neighbor's submitted story and publishes it.

The Problem

Oral histories are still collected much as they always have been. Staff recruit participants, schedule interviews, sit for each recording, and then transcribe and analyze it all by hand. Every step costs staff hours, and libraries in particular are short of staff. The stories a community most wants to keep are the ones there is never enough time to gather.

I set out to move each of those steps off staff time without taking the stories away from the institution or the people who tell them.

The usual way, with every step on staff time
  1. Recruit participants
  2. Schedule interviews
  3. Sit for each recording
  4. Transcribe by hand
  5. Analyze by hand
With Oria
  1. Open a campaign

    Topics and questions, drafted with Gemini.

  2. Share a link or QR code

    Through the institution's own channels.

  3. Neighbors answer

    Text, audio, video, or photo, on any device.

  4. Stories return ready

    Transcribed and indexed, in the institution's archive.

The need was sharpest in senior living, assisted living, local libraries, and cultural initiatives. All of them hold stories that cannot be replaced, and none had a realistic way to collect them or a tool built for the institution's side.

Talking to the Stakeholders

We were bootstrapping, so the product was shaped by conversations with the people who would use it. To move from a rough alpha to something real, I interviewed two librarians, a historic-resources lead from Maryland's park and planning commission, and a therapist who works with personal narrative. Their guidance kept steering the build from then on.

Two findings reset the plan. First, they welcomed AI, and they cared deeply about ownership. The collection had to belong to the institution rather than to Oria. Second, and more surprising, these institutions already have trusted channels to their participants.

What ate their time was collecting and analyzing the stories. They did not need help with distribution or recruitment the way a consumer product would, so I cut recruitment from the scope and aimed the product at collection and analysis. That set three requirements I designed against. A campaign had to be quick to create and share, collected stories had to be easy to manage and understand, and telling a story had to feel worth the effort, so that people would share a real one.

The Platform

I structured a collection in three levels. A campaign sets the overall theme, topics sit under it, and each topic has its own questions. To save them from a blank page, the platform drafts questions with the Gemini API from the campaign, the topic, and the direction the organizer enters. I placed the drafts in the same editor where organizers write their own questions, editable at any time, so the AI removes the blank page without taking over the authorship. Each campaign and topic publishes to missionoria.com as a link or QR code, so an institution can send it through the channels it already trusts, and participants can also browse public campaigns to find an institution collecting stories near them.

  1. Organization

    Signs up and creates its space.

  2. Campaign

    The theme of a collection.

  3. Topics

    Each with its own questions.

  4. Questions

    Written, or drafted with the Gemini API.

  5. Link or QR code

    Published on missionoria.com.

On the public side of missionoria.com, a neighbor can start a submission without an account, using an organization lookup or a join code, then browse the campaigns running now and open one to see its topics.

A participant opens the link and answers in text, audio, video, or photo, on a phone, tablet, or desktop, so a story can be told at the library or at home. I kept every contribution in its original format and had it transcribed on arrival, so the collection can be searched from the first story and nothing of the teller's voice is lost.

A campaign page with its list of topics, each linking to Submit a story
A campaign prompt, one question per screen, with read-aloud and microphone icons beside it and record video, record audio, and upload below the answer field
A teller picks one of the campaign's topics, then answers its prompt on a screen that asks one question at a time, with read-aloud and microphone icons beside it and options to record audio or video or upload below.

Ownership came straight from the interviews, so I designed it in at two levels. The collection belongs to the institution, which can download every story in it. Each teller keeps ownership of their own story and chooses whether it is public, community-only, or private, or submits it anonymously. Choosing public or community-only grants Oria a license to store, display, and share the story for historical, educational, and research purposes.

I also gave organizations the analytics their old process could not produce, including participation, completion, and retention rates and the number of stories collected, so a small team can see what is working without counting by hand.

Designing for Two Users at Once

The hard part was that this is two products sharing one platform. The institution needs control, speed, and clarity, so that creating, deploying, and managing a collection takes as little effort as possible. The participant needs a calm space that makes telling a real story feel worth doing, which is the opposite of an admin tool. The central design challenge was holding both in one system without letting the operational side make the teller's side feel cold.

The institution needs
  • Control
  • Speed
  • Clarity
  • Ownership of every story
The participant needs
  • A calm space
  • An immersive prompt
  • Any medium, any device
  • A say in how the story is shared

I turned each need into a specific decision in the screens. A teller joins with an organization lookup or a join code, with no account to create. Each screen asks a single question, with read-aloud and microphone icons beside the prompt, so a question can be heard and answered by voice. An answer can be typed, recorded as audio or video, or uploaded, and a story can go in anonymously. On the institution side, a campaign is one link and one QR code, and every story arrives transcribed and ready to review.

The submission and consent flow
Before sending, the teller chooses whether the story is public, community-only, or private, can submit it anonymously, and reads the agreement.
A neighbor answers a prompt, sets how the story is shared, and reaches a thank-you page with more prompts waiting.

I designed in Figma and built most of the product myself with Claude Code and Codex, on React and AWS after an initial Vercel build. The data engineer structured the database and set up the build and deploy pipelines.

Learnings

Moving fast cost consistency. The project went through many design phases and a shifting set of tools in a few months. The technology let me build quickly, but it also let the work sprawl, and the visual design has not caught up yet. I am still going screen by screen to bring everything back to one design system. That is the cost of building this fast with AI tools. The work can get ahead of its own conventions, and then it has to go back and fix them.

Updated March 2026@Oria

More work

View all