Inspiration

What it does

How we built it

Challenges we ran into

Accomplishments that we're proud of

What we learned

What's next for CATSETTE

Inspiration

Photos preserve what a moment looked like, but they rarely preserve the voice that explains why it mattered. Voice memos keep that feeling, but they are easily lost in a long list with no visual context. We wanted a keepsake that felt as understandable and personal as writing a label on a cassette.

What it does

CATSETTE combines one photo with up to sixty seconds of the user's own voice. Side A permanently keeps the original recording. On Side B, GPT-5.6 organizes the memory into a title, short liner note, cautiously supported context and tags. A small cat asks exactly one warm question about something the photo cannot reveal. The user reviews and edits the result before it is saved locally.

How we built it

The iOS 17 app is native SwiftUI with SwiftData metadata, file-based photo and AAC storage, PhotosPicker, AVFoundation recording and playback, Swift Concurrency and URLSession multipart networking. The cassette and cat are original SwiftUI vector components whose states reflect recording, processing, completion and playback.

The TypeScript Fastify backend transcribes audio with gpt-4o-transcribe, then sends the transcript and EXIF-stripped image to the GPT-5.6 Responses API. Zod Structured Outputs enforce the response contract. The archivist prompt prohibits identity, sensitive-attribute, exact-date and exact-place guessing. Calls use store: false, and media or content is never retained or logged.

Challenges we ran into

The hardest design constraint was keeping AI useful without allowing it to become the author of someone's memory. We made the transcript the primary source, kept the original voice permanently playable, represented uncertainty with nullable fields, prohibited unsupported inference, and limited the cat to one missing-context question.

Accomplishments that we're proud of

  • A coherent photo-to-voice-to-cassette experience rather than a caption-generator prototype
  • Real 60-second recording, metering, interruption handling, seeking and animated cassette reels
  • A gentle original cat identity drawn entirely in SwiftUI
  • Strict multimodal GPT-5.6 output with a server-side privacy boundary
  • Passing iOS and Backend tests with no external iOS dependencies

What we learned

The strongest AI memory experience is often the most constrained one. GPT-5.6 can understand a photo and transcript together, but trust comes from clear boundaries: the human voice is evidence, uncertain context stays uncertain, and the user approves the archive.

How we used Codex

Codex accelerated product scoping, SwiftUI cassette and mascot interaction design, the audio and persistence layers, multipart networking, the Fastify/OpenAI backend, tests, privacy review and submission documentation. XcodeBuildMCP was used to build, test, run and record the complete simulator flow.

What's next

Next we would add optional short audio answers, encrypted family sharing, richer cassette styles and exportable memory cards—without changing the principle that AI organizes memories but never replaces them.

Built With

  • codex
Share this project:

Updates