← Work

Mobility / Travel · AI Product · Exploratory build

JourneyPal

People moving countries told me the hard part was that nothing lives in one place. Acting on that meant cutting a two sided platform down to one route, one audience and thirty steps.

Role
Product & build
Origin
Product Management Fundamentals, Colab Cohorts
Stack
Next.js · Supabase · Stripe · Claude API · Vercel
Status
Live, unfinished, no users yet
JourneyPal: What is live. Note what the headline commits to: one destina
What is live. Note what the headline commits to: one destination country, a fixed number of steps, a price. The original pitch had deliberately left all three open.

Where it started

JourneyPal began as a case study pitch for a product management certification, where the brief was to find a real pain point and design a product around it. I picked relocation because I had done it, and because the difficulty was easy to describe and hard to locate.

Visa eligibility, timelines, accommodation and country specific regulation are all documented somewhere. The problem is that no two of them live in the same place.

The hypothesis, and how I tested it

My hypothesis, shaped by having moved, was that relocation stress comes from the lack of centralised, reliable information rather than the process itself being hard.

I ran informal interviews, surveys in Facebook relocation community groups, and focus groups on specific friction points: visas, accommodation timelines, resource fragmentation. The answers kept landing in the same place. Fragmented information, and preparation done by hand.

Nobody said the process was too hard. They said they could never tell when they were done.

JourneyPal: The wireframe from the certification work, and the one idea
The wireframe from the certification work, and the one idea from it that survived unchanged. Splitting a move into before you leave, on the day, and after you arrive gives a person a point where they are done. That was the thing nobody could find on their own.
JourneyPal: plate 1
JourneyPal: plate 2
JourneyPal: plate 3
JourneyPal: plate 4
Segments, MVP definition, roadmap and risk register from the pitch. Together they show the shape of what I originally proposed: two customer types, an open destination pair, and a generated plan document as the deliverable.

A checklist for everywhere is accurate nowhere.

Three cuts, and what each one bought

The proposal served two audiences at once, people relocating and the immigration advisers selling to them, and treated the destination as a variable. That is defensible in a deck and impossible to keep correct in a live product, because the steps that matter are tied to a specific visa in a specific country.

So I cut it in three places. One corridor, New Zealand to Korea, which is the move I have made and can therefore write accurately. One audience, students, whose visa route and timing are consistent enough to write real steps against. One artefact, a thirty item tracker across four phases, instead of a generated document.

Each cut removed something I could not have kept correct, and bought something I could ship. Narrowing is why the thirty steps are right for the people using them instead of roughly right for everyone.

JourneyPal: The narrowing, stated on the page. Each group is named by it
The narrowing, stated on the page. Each group is named by its visa or programme rather than by demographics, because that is the only thing that changes what the checklist has to say. A D-2 student and an exchange student need different steps in a different order.

How I tested the decisions

Working alone means nobody argues back, so I put the big calls through a set of Claude Code subagents: a Product Manager, a Critic, a Devil's Advocate and a Synthesizer. It was most useful for testing whether JourneyPal was worth shipping at all and what business model could hold it up. It was not useful for design direction. The method has its own write up.

Pricing as a product decision

The free tier holds the five essential pre-arrival items. The full thirty steps unlock for a one time nineteen dollars, and an optional community sits at seven dollars a month after a free first month. None of this has been tested against real willingness to pay.

The split follows the shape of the problem. A move ends, so the tracker is bought once rather than rented. Arriving somewhere does not end, so the only recurring charge is attached to the only thing that continues.

JourneyPal: Three tiers, and the middle one carries the product. The fre
Three tiers, and the middle one carries the product. The free items sit before departure, where anxiety is highest and willingness to pay is lowest, so the tracker has to earn the nineteen dollars before it asks for it.

Two things I found late

For students moving to Korea, the institutions already do a lot of this. Universities run their own relocation support and much of it is seamless. That does not remove the problem, but it changes who JourneyPal is actually competing with, and I would rather have known it before choosing students as the audience than after.

The second is how far I looked. I researched the Korea route properly and barely looked past it. Visa rules elsewhere turned out to be restrictive enough that adding a second route costs far more than I had assumed. There was also more scattered information than I expected, which is the hypothesis holding up and the workload being worse than the hypothesis implied.

Where it stands

It is live at journeypal.co, built on Next.js and Supabase with Stripe for payment, hosted on Vercel, and the Claude API behind the product's AI.

It is also unfinished, and nobody has signed up. I have not put it in front of anyone, so the pricing above is a set of decisions rather than a tested model, and the research is a finding rather than a validated market. I would rather say that here than let the live URL imply otherwise.

The other reason I built it

This was my first time building an application with AI coding tools, and I deliberately did not pick one. I ran Codex, Gemini and Claude Code across the same codebase. Slower to build that way, and much faster to learn how each behaves on real work instead of on a demo.

That was as much the point as the product was, and it is the honest reason the product is unfinished. What I came out with was a working method, which is what the next two builds ran on.

What I took into the next one

Research the market before choosing the audience, and narrow when narrowing is the honest answer, not the disappointing one. Both went straight into the NZ Investment Tracker. I checked the segment was real and sized before designing anything, and built the whole product around refusing to state a number it cannot stand behind.