Case study, Roam, Side Project, 2025

Roam: from idea to working web app in 80 hours

A solo sprint to design and ship an AI-first travel planning app — from blank canvas to published product — using Figma Make and the Anthropic API.

Total time

80 hrs

80 hrs

Core screens

10+

10+

Engineers involved

0

0

Role

Solo designer and builder

Timeline

80 hours total

Stack

Figma Make, Anthropic API, Framer

Status

Live prototype, in progress

Context

Try it out

An 80-hour solo sprint to design and ship an AI-first travel planning app from scratch. Ideated with Claude, built a token system and wireframes in Figma Make, designed hi-fidelity screens with a full component library and design system, then used the Figma MCP with Cursor to translate designs into code, committed to Github, deployed on Vercel, and QA'd against design specs until it shipped without bugs. This case study covers the problem it was built to solve, the three core product surfaces, and what's still left to build.

Stack

Technical stack

Figma

Design systems, product design

Figma

Design systems, product design

Claude

Design, prototype, code

Claude

Design, prototype, code

Cursor

Design to code

Cursor

Design to code

Vercel

Deployment

Vercel

Deployment

GitHub

Version control

GitHub

Version control

Framer

Web design

Framer

Web design

Context

A personal frustration that became a product question

Planning a group trip is still a surprisingly broken experience. You start in a WhatsApp thread, end up in a Google Doc, consult a few travel blogs, and somehow consolidate everything in a spreadsheet. There’s no shortage of travel apps, but most of them search for things you already know you want. They don’t help you figure out what you want in the first place. After planning a trip to Ksamil, Albania with two couples — coordinating ferry timetables, accommodation, beach recommendations, restaurant reservations, and daily budgets across multiple tools — the question felt real: could a single AI-native interface replace all of that without it feeling like yet another chatbot? Roam was the attempt to find out. The constraint was deliberate: not a portfolio exercise, but a real thing, built from scratch, with a hard time budget of 80 hours.

Weeks Phase With
1–2 Research: interviews, empathy mapping, card sorting, competitor analysis User Researcher, Data Scientists
3–4 Ideation: crazy 8s, wireframes, flow validation Head of Design, PM
5–6 High-fidelity design and prototyping Head of Design, Engineers
7 Usability testing: 12 participants, moderated User Researcher
8 Iteration, consent architecture, developer handoff Legal and Privacy, Engineers
Weeks 1–2
Research: interviews, empathy mapping, card sorting, competitor analysis
User Researcher, Data Scientists
Weeks 3–4
Ideation: crazy 8s, wireframes, flow validation
Head of Design, PM
Weeks 5–6
High-fidelity design and prototyping
Head of Design, Engineers
Week 7
Usability testing: 12 participants, moderated
User Researcher
Week 8
Iteration, consent architecture, developer handoff
Legal and Privacy, Engineers

Stack

Technical stack

Figma

Design systems, product design

Figma

Design systems, product design

Claude

Design, prototype, code

Claude

Design, prototype, code

Cursor

Design to code

Cursor

Design to code

Vercel

Deployment

Vercel

Deployment

GitHub

Version control

GitHub

Version control

Framer

Web design

Framer

Web design

Problem

Travel planning is fragmented by design

Existing tools are built around search, not discovery. They optimise for people who already know where they’re going, for how long, and at what budget. They don’t handle the earlier, messier phase — the “we want to go somewhere warm in late June, we have four people, not sure how long” conversation that most real trips actually start with.

Core problem statement

How do we reduce the cognitive work of building a complete outfit from hours to minutes, while earning enough trust that shoppers actually act on the recommendations?

"I can find individual pieces I like but I never know if they're going to work together until I'm standing in front of a mirror. By then I've already paid for everything."

Usability test participant, 2023

Approach

Constraint as a creative forcing function

The 80-hour budget was not just a timeline — it was a design constraint. Every decision had to be defensible against a single question: does this justify the time? That discipline shaped the scope more cleanly than any brief could have. Rather than designing exhaustively in Figma and handing off to a developer, the entire project was built inside Figma Make — Figma’s AI-assisted build tool — which meant design and build decisions happened simultaneously. The Anthropic API powered the core planning feature — natural language trip input, preference gathering, and day-by-day itinerary generation.

Core build stack

The project combined AI-assisted interface generation, live itinerary logic, and a Framer publish pipeline into one fast design-build loop.

PRODUCT SCREENSHOT

Figma Make

Design and build environment

Used to move from natural-language prompts to live, interactive UI instead of static handoff frames.

PRODUCT SCREENSHOT

Anthropic API (Claude)

Planning intelligence

Powered preference gathering, budget-aware suggestions, and day-by-day itinerary generation.

PRODUCT SCREENSHOT

Framer

Publish and prototype layer

Used to publish the working prototype and shape the responsive case-study-ready experience.

Design and build decisions happened simultaneously

Because the AI generated functional code from natural language prompts, the work shifted from pixel-perfecting static frames to responding to live output. Design decisions were made in the product, not around it.

JOURNEY DIAGRAM

Figma Make prompt → live UI → Anthropic API → itinerary output loop.

The planning model had to feel specific

Claude handled everything from clarifying traveller count and budget tier to surfacing real location suggestions with reasoning attached. The system needed to ask before it answered, then return structured outputs the interface could render predictably.

USER FLOW DIAGRAM

Preference gathering and itinerary generation were split into two separate API calls to prevent generic output.

What the product had to solve

01

No AI-native planning layer

Booking platforms bolt AI on top of existing search UIs. Roam’s question was whether you could design the planning layer as an AI-first conversation from the start — not a feature added later.

02

Group trips are an unserved use case

Most apps assume one traveller making one decision. Multi-person trips with shared preferences, split costs, and competing interests are almost entirely unaddressed.

03

The gap between inspiration and booking

There’s a dead zone between “I want to go somewhere” and “here are the hotel results.” No tool lives in that gap with any intelligence. Roam was designed to live there.

04

Itineraries have no visual home

Once you’ve decided where to go, the itinerary lives in a notes app or a spreadsheet. A day-by-day, map-integrated view with cost estimates doesn’t exist as a lightweight standalone tool.

Process

Eighty hours, sequenced

The sprint was divided into five phases, each with a hard time ceiling. When a phase ran long, scope was cut — not quality.

Hours 0–12 · Define and map

TRIP BRIEF SCREEN

User flow mapping, competitor audit across Wanderlog, TripIt, Google Travel, and Airbnb Experiences. Three primary surfaces identified: onboarding brief, AI planning chat, day-by-day itinerary view.

Hours 12–28 · Design system and onboarding

AI CHAT SCREEN

Visual language set in Figma Make: warm neutral palette, Outfit typeface, teal accent, card-based layout. Onboarding flow built — destination, traveller count, dates, budget tier.

Hours 28–48 · AI planning interface

ITINERARY SCREEN

ITINERARY DETAIL

ACCOMMODATION SCREEN

MOBILE PLANNING SCREEN

Core chat interface built and wired to the Anthropic API. Prompt engineering for clarifying questions, preference gathering, group size, and budget constraint handling. Itinerary output format designed.

Hours 48–68 · Itinerary view and map

Day-by-day itinerary screen with time blocks, cost estimates, and location pins. Map embed integrated. Accommodation picker screen built. Mobile-responsive layout pass.

80-HOUR TIMELINE

Hours 68–80 · Polish and publish

DAY 1 BUILD SCREENSHOT

DAY 2 BUILD SCREENSHOT

DAY 3 BUILD SCREENSHOT

Micro-interactions, loading states, empty states, error handling. Published via Framer. Final QA on mobile and desktop.

The time ceiling made scope decisions fast and unambiguous. Cost splitting, social sharing, saved accounts, and real booking integrations were cut so the core planning loop could become real.

Design

Three surfaces, one coherent journey

Roam’s interface was built around a three-act structure: tell us about your trip, let us plan it with you, then explore and refine the result. Each surface had to feel like a natural step in the same tool — not three separate product decisions stitched together.

1. The trip brief

1. The trip brief

Rather than a blank search bar, Roam opens with a structured brief — destination, dates, travellers, budget tier. A deliberate departure from conversational-first design: most people don’t want to type an essay to start a trip. They want to answer a few clear inputs and then let the AI work.

TRIP BRIEF SCREEN

2. AI preference chat

2. AI preference chat

Once the brief is submitted, Roam enters a short clarifying conversation before generating anything. The AI asks two or three targeted questions first — activity preferences, must-sees, dietary requirements, pace — so the output feels earned rather than generic.

AI PREFERENCE CHAT SCREEN

3. Day-by-day itinerary

3. Day-by-day itinerary

The itinerary screen is structured as a vertical timeline with one card per activity — arrival, accommodation, meals, sights, transport. Each card shows a time, location, estimated cost, and a short AI-written note explaining why it was included.

DAY-BY-DAY ITINERARY SCREEN

4. Accommodation picker

4. Accommodation picker

Roam suggests accommodation options filtered by the selected budget tier. Each card includes name, location, nightly rate estimate, and a brief rationale so the recommendation feels advisory instead of arbitrary.

ACCOMMODATION PICKER SCREEN

5. Map-integrated planning

5. Map-integrated planning

The day’s activities are plotted on an embedded map with location pins. Real-time routing and deep-linked navigation were intentionally left out of scope for the 80-hour sprint.

MAP-INTEGRATED PLANNING SCREEN

6. Responsive travel planning

6. Responsive travel planning

The itinerary layout adapts for mobile with day tabs and stacked activity cards, keeping the planning loop usable on the device people actually carry while travelling.

RESPONSIVE MOBILE PLANNING SCREEN

Integrating the Anthropic API meant that one of the most important design artefacts was the system prompt — not a Figma frame. Getting the AI to produce itineraries that felt specific, useful, and appropriately scoped took as much iteration as any screen design.

AI planning logic

All items in stock in the user's size
Show look normally.
One item unavailable in the user's size, available in an adjacent size
Substitute the item with the closest available size. Surface a note flagging the size difference. The shopper decides whether to proceed.
One item low stock or fully out of stock
Substitute the look with the next best complete alternative.
Hero garment out of stock or unavailable in the user's size
Substitute the look entirely. No partial looks are surfaced.
Two or more items unavailable
Substitute the look with the next best complete alternative.
No size data yet (first visit, Fit Finder not completed)
Surface looks without size filtering. Prompt to complete Fit Finder before adding to cart. Size-aware substitution activates after the first sizing interaction.

AI design

Designing the prompt as much as the interface

Prompt engineering is interaction design. The most impactful decisions weren’t about layout or colour — they were about how the AI was instructed to behave. Writing the system prompt with the same rigour as UX copy changed the output quality dramatically.

CLOSING PRODUCT IMAGE

Metric
Muse
Proposal B
Proposal C
Task success rate
88%
75%
70%
Error rate
3%
7%
9%
Feature engagement
65%
50%
45%

The AI was prompted to return itinerary data as a consistent JSON structure — time, location, category, cost estimate, reasoning note — so the UI could render it predictably regardless of destination or trip type. Preference gathering and itinerary generation were split into two separate API calls, and the selected budget tier was injected into the system prompt as a hard constraint.

Reflection

What 80 hours teaches you about building

Prompt engineering is interaction design

Prompt engineering is interaction design

The most impactful decisions weren’t about layout or colour — they were about how the AI was instructed to behave. Writing the system prompt with the same rigour as UX copy changed the output quality dramatically.

Figma Make changes the design-to-build relationship

Figma Make changes the design-to-build relationship

When you’re designing in a tool that generates live code from prompts, the feedback loop is different. You don’t design a screen and then build it — you refine a screen that already works.

Scope decisions are design decisions

Scope decisions are design decisions

Cutting the cost-splitting feature and the social sharing flow wasn’t just project management — it was choosing which problems the product was actually trying to solve.

The clarifying question pattern is underused

The clarifying question pattern is underused

Every AI travel product I looked at during the competitor audit generates output immediately. The two-step pattern — gather context, then generate — produced significantly more specific itineraries.

Roam is not finished

Roam is not finished

A production version would need a proper backend, user accounts, saved itineraries, real booking integrations, cost splitting for group trips, and proper map routing.

Outcome

Something real, built by one person

This project was never primarily about finishing Roam. It was about testing how fast a concept could move from ideation to something real and published — using the AI tools now available to a designer working solo. The answer, it turns out, is 80 hours. Not a polished product. Not a throwaway prototype. Something in between: a working, AI-powered web app that solves a real problem, built by one person without engineering support.

Trip brief / onboarding

Destination input, traveller count, date range picker, and budget tier selector. Fully interactive.

AI preference chat

Two-turn conversation powered by the Anthropic API before itinerary generation.

Itinerary generation and display

Day-by-day view with activity cards, cost estimates, AI-written reasoning notes, and switchable day tabs.

Accommodation picker

Three AI-suggested options filtered by selected budget tier, with rationale and rate estimates.

Map integration

Day activities plotted on an embedded map; live routing remained out of scope.

Mobile responsive pass

Responsive layout for itinerary tabs, activity cards, and destination planning on mobile.