Inspiration

I keep reopening decisions that do not fit inside a pros-and-cons list.

Stay in the role or take the offer? Keep the smaller apartment in the centre or move somewhere with more room? Both options can sound right in the abstract. What I actually want to understand is the ordinary Tuesday inside each choice, and which assumption is quietly holding the whole decision open.

I built Elsewhere because I did not want another chatbot choosing for me. I wanted somewhere to rehearse the possible lives, find the fragile assumption, and test it before making an expensive commitment. I basically stood before the exact question in the demo, should I live in central Paris or move outside in a bigger apartment? This helped me realise and I'm sticking to the plan!

What it does

Elsewhere is a personal decision lab for consequential career and location choices.

It unfolds two to four options across twelve months using income, tax, housing costs, recurring travel, savings and explicit personal priorities. The one-click demo compares a smaller apartment in Central Paris with twenty-six more square metres in Montreuil.

The user can walk through an ordinary week, a social moment and the year after. Then they change one plausible condition while everything else stays fixed.

In the apartment example, office attendance rises from three days to five. The calculated fit crosses from Montreuil to Central Paris when the commute begins to outweigh the additional space.

Four independent GPT-5.6 calls receive the same immutable future record and read it through different lenses: money, people, freedom and regret. A fifth response synthesizes the disagreement and identifies the uncertainty worth testing.

Elsewhere ends with a reversible fourteen-day experiment. For the apartment decision, that means making the Montreuil commute twice at rush hour, observing energy during the day, and returning with real evidence.

How I built it

The application is built with Next.js, React and TypeScript.

A deterministic engine owns every numeric outcome. It calculates income, France and UK payroll rules, rent, living costs, travel time, savings and user-weighted fit. Inputs outside the supported tax jurisdictions remain visibly user-provided rather than being presented as sourced facts.

The deterministic engine produces an immutable record for every possible future. Four concurrent GPT-5.6 Responses API calls receive that same record, with one protected value changed per call. Zod validates every structured response. A fifth constrained call selects only the uncertainty category for the experiment.

GPT-5.6 cannot edit calculated values, introduce numeric claims or recommend a winner.

The public deployment uses Vercel and an Upstash-backed rate limit. The repository includes regression tests, a thirty-check scenario evaluation, source tracing, production health checks and a verified judge replay.

How I used Codex

Codex was my build partner throughout Build Week.

It accelerated the Next.js implementation, typed data contracts, deterministic simulation, GPT-5.6 integration, adversarial tests, mobile experience, production probes and repeated cold-start reviews of the live product.

I made the product decisions: focus on career and location choices, keep calculations outside the model, preserve disagreement between the lenses, and finish with one physical action. Codex helped turn those decisions into a working, tested release.

The repository includes a decision record that separates the human product choices from Codex-assisted implementation.

Challenges

Came into late to get credits, just spent my final reset, but damn it was a lot of fun!

The first versions worked technically but felt like an analyst dashboard. There were too many tabs, sliders, exports and competing explanations. The largest product change was reducing that surface to one life at a time during setup, one scene at a time in the result, one changed condition, and one GPT lens at a time.

Model latency also exposed a real production bug: replaying the preloaded apartment condition launched an identical second request and pushed the payoff beyond the demo window. The final flow reuses the original live analysis while the deterministic story remains immediately available.

The other hard boundary was keeping the model qualitative. GPT responses are rejected and retried if they introduce numbers, unsupported claims or prescriptive language.

What I learned

The product became useful when I treated it as decision rehearsal. Deterministic code creates the trust boundary. GPT-5.6 makes the consequences legible from several human perspectives. The most useful ending is a cheap experiment that can prove the model wrong.

What is next

The current grounded product covers career and moving decisions. I want to test that loop with real users before adding new decision types. The larger direction is a library of domain-specific decision models, each with its own evidence, assumptions and reversible experiments. I do not want to disguise one generic calculator as universal life advice.

Built With

Share this project:

Updates