Product case study
Frolio
A fragrance collection that helps you choose.
I design and build Frolio solo with Claude Code, owning the product decisions, interface, data model, and production setup. It connects a personal collection, wear journal, and private notes with guided discovery, semantic search, daily recommendations, and buying information.

A collection is more than a list.
What someone owns, what they have sampled, and what they actually wear tell different stories. Frolio brings those records together and gives beginners a way into discovery without requiring expert scent vocabulary.
Start, collect, wear, discover.
The public catalog and community sit alongside a personal collection and journal. The experience connects a first exploration with the small decisions someone makes each day.
- Collection and privacy. Owned, sampled, wishlist, and archived states organize bottles. A public collection can include ratings and recent wear history; personal notes remain private.
- A wear journal and a habit. Wear logs, ratings, a calendar, private notes, and logging streaks help people revisit what they actually use. Weekly tasks and a capped freeze balance support the streak.
- Buying with context. Researched US retailer offers identify bottle size, concentration, source, and checked date. Before you buy compares listed notes and accords with owned bottles and samples.
- Reviewable photo intake. A bottle or shelf photo can start collection entry; each proposed bottle is reviewed by the user before it is added.
- Three interface languages. English, Simplified Chinese, and Traditional Chinese interfaces share the product flows, with reviewed scent terminology.
Find a starting point
Choose a starting path, describe familiar smells, and explore catalog-grounded matches and learning quests.
Build a personal record
Organize owned bottles, samples, and a wishlist; save private notes, rate fragrances, and log what you wear.
Choose what comes next
Return to daily picks, search by a description, or compare a possible purchase with the collection you already have.

The public example shelf makes owned, sampled, and wishlist states concrete before signup. Personal notes remain private in the signed-in product.
Three ways into discovery.
A guided starting point, a search from a description, and daily recommendations solve different tasks. Frolio combines model-assisted semantic retrieval with deterministic matching and ranking.
- A familiar-smell taste finder. A rule-based taste finder returns up to three catalog matches without a model request. Three saved learning quests help beginners take the next step.
- Semantic search and similar fragrances. Claude interprets a scent description; Voyage AI produces 1,024-dimensional embeddings. pgvector and an HNSW index retrieve candidates for reranking and the similar-fragrances rail.
- Personal daily picks. Up to three private daily discoveries use collection ratings, wear history, scent facets, and negative feedback. Deterministic ranking adds variety and duplicate safeguards without a model call.
Frolio architecture
Collection states, ratings, wear history, and private notes live in PostgreSQL through Prisma. Daily picks use deterministic ranking; semantic search uses Claude query interpretation, Voyage AI embeddings, and pgvector retrieval. Next.js and NextAuth provide the interface and account boundary, while Docker and Cloudflare serve the product.
The verified components behind Frolio’s public product.
Product experience, discovery, and production infrastructure.
A product that has to keep running.
Running the product is part of building it. Frolio runs in Docker behind a Cloudflare tunnel, with rate limits, error monitoring, content moderation, and scheduled backups.
- Application safeguards. Upstash handles rate limits, Sentry monitors application errors, and Anthropic supports safety moderation.
- Scheduled backups. A systemd timer runs scheduled backup jobs.
Current numbers
Product scale, verified through the public discovery API on October 1, 2026.
Catalog entries, not users or recommendation-quality measurements.
Keep the evidence visible.
Discovery and buying aids offer useful context, with limits that should stay visible in the product.
- Note and accord overlap is a comparison clue, not proof that two fragrances smell alike.
- Retailer offers cover researched US bottle variants; dated observations and Fragrantica shop ranges are labeled separately.
- Photo recognition requires user review. Forum image uploads on Cloudflare R2 remain disabled.