Inspiration

Inspiration

Some decisions cannot be undone — resigning, leaving, ending something you built for years. After the choice is made, many people get stuck in a loop: Did I make a mistake? What if I had stayed?

ChatGPT and similar tools amplify that loop. They will debate your decision forever, offer second opinions, and never enforce a boundary. We asked: what if AI existed not to re-open the choice, but to help someone live inside it?

That question became Living With It — a bounded, nine-week reflective instrument for people who already decided and cannot stop re-litigating.

What it does

Living With It is not a chatbot. It is a ritual chamber with four phases:

  1. Void — enter the instrument
  2. Commitment — lock an irreversible, past-tense decision (no hypotheticals)
  3. Chamber — receive weekly letters from your future self across nine temporal vantage points
  4. Terminal — arc complete; export your Living Record; begin again

Before any AI runs, client-side input gates enforce the product's philosophy in code:

  • Commitment Gate — rejects "I'm considering…" (must be already decided)
  • Re-Litigation Gate — rejects "Did I make a mistake?" / "Should I go back?"
  • Anti-Compare Gate — rejects "What if I had stayed?"
  • Depth Gate — rejects shallow one-word prompts

If a gate rejects input, no API call is made. The user rewrites; the instrument does not negotiate.

Each accepted check-in generates a single contemplative letter block — first-person future-self voice, no chat bubbles, no avatars. Every reflection ends with: "One possible internal experience. Not a prediction. Not advice."

Users can export a .md Living Record (decision + all nine weeks + disclaimers) and view completed arcs in a read-only archive.

Live demo: https://living-with-it.vercel.app

How we built it

Frontend: React + Vite + TypeScript, mobile-first dark ritual UI exported from Figma Make. A strict useReducer state machine makes illegal phase transitions impossible — the decision is immutable after Week 1 with no edit UI in the DOM.

The moat — gates in code: Pure functions in gates.ts return { ok } or { ok: false, label, reason, hint }. These run client-side before any network request. This is the differentiator judges cannot get from a generic chat wrapper.

AI layer: Supabase Edge Function relays to Groq Llama 3.3 70B with a strict system prompt enforcing: future-self voice, tone arc by week (disorientation → emerging costs → integration), and absolute bans on advice, predictions, and validation/invalidation. The server stores nothing for reflections — pure ephemeral relay.

Fallback: Local template engine generates tone-arc reflections if the network or API fails, so demos never break silently.

Optional email delivery: Resend API sends sealed weekly letters; subscriber data lives in Supabase KV and is erased after nine weeks.

Deploy: Vercel (frontend) + Supabase (edge functions).

Challenges we ran into

  • Making constraints feel like product, not frustration — gates had to explain why they reject input without breaking the ritual tone
  • Preventing generic AI voice — engineering prompts that echo the user's own words for cost and fear, with concrete sensory details
  • State machine integrity — ensuring the locked decision cannot be edited anywhere in the UI, not merely disabled
  • Demo vs. production — all nine weeks unlock in one session for judges; production would gate one week at a time
  • Email deliverability — Resend test mode limits recipients until a sending domain is verified

Accomplishments that we're proud of

  • Input gates that refuse re-litigation before the model runs — enforced in code, not copy
  • A working live prototype with real AI-generated reflections and template fallback
  • Zero server-side storage for reflection content — aligned with "no cloud profiling" philosophy
  • Mobile-first ritual aesthetic that feels like a chamber, not a chat app
  • Full arc export as a clean markdown Living Record
  • Human-only lock on the irreversible decision — AI never decides whether the choice was right

What we learned

The best AI for high-stakes personal decisions may be one that refuses to decide. Guardrails belong in architecture, not disclaimers. When you name a specific user (post-decision doubters) and a specific constraint (the choice is locked), the design becomes obvious: block re-litigation, narrate one fixed future, end with humility.

We also learned that demo reliability matters — a silent API failure kills trust faster than a template fallback ever could.

What's next for Living With It

  • Production weekly unlock (one week per seven days, not all nine in one session)
  • Deeper archive features while keeping session-scoped privacy defaults
  • User testing with people who recently made irreversible career or relationship decisions

Built With

Share this project:

Updates