Jul 2026

Opalo

Role

Role

Founder & Product Designer

Duration

Duration

5 Months

Tools

Tools

Claude Code, Figma, Xcode, Firebase

Overview

What Opalo is

Opalo is a private photo and video journaling app for close friends — a calmer, no feed, more personal alternative to traditional social media. I took it from an idea to a live app on TestFlight: the product thinking, the design, the engineering, the backend, the brand and the testflight, all myself.

With Opalo I wanted to see how far one person could take a real product using AI properly — not to cut corners, but to cover the ground a whole team normally would. This is a look at how I did it, what worked, and what I’d change.

Version 1
Version 2

The work

Every role, one person

Product

Scoped the roadmap and decided what to build and what to cut.

Design

The full interface, interaction and motion, in Figma.

Engineering

Directed the whole SwiftUI codebase to production.

Backend

Firebase — data, storage, security rules and cross-device sync.

Research

Onboarding, keyboard and interaction studies before building.

Brand & launch

The name, the voice, the business plan and the waitlist.

Results

Where it is now

Opalo is live in a small private beta. It’s small on purpose — but the people in it actually use it.

6,487

Messages exchanged

+70%

Growth in 5 weeks

15

Active testers

53

On the waitlist

Message volume, early May to mid June

Early May

3,816

Mid June

6,487

26 friendships formed since the beta opened. The waitlist went live in April 2026, and I built the a custom analytics pipeline and dashboard across the app, website and TikTok.

Figures as of July 2026.

Testflight Version

Opalo Features

one camera — two places it can go.

profile

inbox

camera

Sending, not posting - you share a moment like sending a letter, not pinning it to a bulletin board.

Shared on purpose - everything you get was chosen for you — that’s what makes it mean something.

Nothing gets lost - the moments that’d disappear in your camera roll, kept somewhere they matter.

Memories, your way - relive them by calendar, stacked by day, or played back like highlights.

A place that’s yours - somewhere to save your life for you — not too public, not too noisy.

Working with AI

A system, not a chat window

I set things up so the AI worked like a small team I manage — with rules and roles, instead of one open-ended conversation.

Everything runs behind an architecture check I wrote and a constraints rulebook in the repo — and I usually run several of these at once, across two machines.

Engineering

Architect

Code reviewer

SwiftUI

Firebase

Design

UX designer

Marketing

Marketeer

ASO

PR

Community

Lifecycle

Founder voice

Short-form

Tech scout

Web research

The commands I run it with

/sprint

/ship

/review

/deploy

/handoff

/status

Running it in parallel

One app, many terminals — each with its own job and its own files, so they never overwrite each other.

Opalo · one codebase

frontend

Chat, inbox & profile

owns Chat/*, Inbox/*, Profile/*

media

Camera & media

owns Camera/*, Media/*, Story/*

backend

Backend & sync

owns Firebase, rules, sync

audit

Audit terminal

reads across all of it — checks every piece still fits together.

Handoff files + commits

State saved after every big change — so any new session starts fresh, even with a small context window.

Two models, two jobs

The strongest model plans; the workhorse builds — so the hard calls get top-tier judgment, and everything else stays fast.

architect

Fable 5

Makes the calls that need the most judgment and writes the plan — the recipe to follow.

builder

Opus 4.8

Carries out the plan, file by file, across the terminals.

Judgment

Seeing what the AI can’t

With my basic background in coding, I mainly caught bugs by testing the app — noticing when something felt off and describing exactly what I was seeing until the AI could find the cause.

Noticing what it can’t see

AI can’t see the running app. Things like two gestures clashing would slip past Claude. When something was off, I narrow it down, and point Claude straight at the conflict.

Translating through Figma

When words weren’t enough, I stopped explaining and started showing. e.g. I built the message bubbles — far more complex than they look — in Figma until they worked, then used the Figma MCP so the AI could read the constraints and rebuild them in the app.

Making it prove its work

AI jumps to the first solution it thinks of. I made it research the alternatives and audit its own answers before I accepted anything, then added that into its rules, so it stopped reaching for shortcuts that would cost me later.

None of this needed me to write Swift. It needed me to know the product cold and keep finding ways to close the gap between what I could see and what the AI could understand.

Craft

Holding the bar

Building quickly only helps if the quality holds.

A design system with guardrails

Colour, type, motion and component patterns — with a few “do not touch” rules so the AI couldn’t quietly erode the details.

Voice as well as looks

I designed how the product sounds, not just how it looks: its tone, the words it uses and the ones it doesn’t.

Current with iOS

As iOS moved forward I moved the app with it — onto Apple’s newer patterns and the Liquid Glass design language — so it doesn’t feel dated.

Reflection

What I’d do differently

AI extends how much one person can do; it doesn’t replace judgment, and it has a ceiling I hit regularly. The honest risk of building alone is an echo chamber, so I lean on the testers and how they actually behave to tell me when I’m wrong, rather than trusting my own taste in a vacuum.

If I did it again, I’d get real users in earlier. Some of what I polished, I could have tested sooner.

Let's Get in Touch 👋🏽

© 2025  Julietta Daidone