Inspiration

We were inspired by the gap between how people actually make important decisions and how most AI products respond to them. Career changes, education choices, business expansion, relocation, and personal commitments are not questions with one universally correct answer. Yet many AI experiences are structured around giving a recommendation as quickly as possible. We wanted to build something more responsible and more useful: a workspace that helps people think better, not an assistant that thinks for them.

What it does

A user can begin with a real-world decision card or enter their own decision. Facet then selects a deterministic set of context-aware Thinking Lenses. For example: Education decisions explore Career Growth, Financial Impact, Opportunity Cost, Personal Fulfillment, Family Considerations, and Uncertainty. Career decisions explore Learning Potential, Financial Security, Lifestyle, Long-term Growth, Professional Network, and Risk. Business decisions explore Market Opportunity, Team Capacity, Financial Risk, Customer Impact, Operations, and Compliance. Users can select and compare lenses in the animated constellation, inspect agreements and tensions, capture discoveries in a living Thinking Record, and use interactive prompts to challenge their own reasoning. Optional GPT-5.6 reflection adds structured hidden assumptions, evidence gaps, alternative viewpoints, reflective questions, and possible blind spots. It is explicitly constrained to never recommend, rank, choose, or provide confidence scores.

How we built it

Facet is built with Next.js App Router, TypeScript, Tailwind CSS, Framer Motion, and Lucide icons. The interface is intentionally deterministic-first: Structured sample data generates reliable Thinking Lenses for major decision categories. The client maintains the constellation state, comparison state, interactive thinking actions, and Thinking Record. A server-side /api/reflect route optionally calls the OpenAI Responses API with GPT-5.6 Terra. The API route validates requests and responses, uses strict JSON-schema output, handles malformed responses and timeouts, and keeps API keys entirely server-side. This makes the core experience useful even when AI reflection is unavailable.

Challenges we ran into

The hardest challenge was balancing intelligence with restraint. We needed GPT-5.6 to produce insightful reflections while preventing it from slipping into recommendation language. We addressed this through tightly scoped system instructions, structured JSON output, response validation, and a deterministic foundation that remains available without the API. We also focused on making the Perspective Constellation feel alive without becoming distracting. Framer Motion was used for subtle springs, node selection, comparison connections, hover states, staggered entrances, Thinking Record insertion, and reduced-motion support.

What we learned

We learned that the most important design choice was not which answer an AI should give, but which questions it should help a person notice. We also learned that trustworthy AI UX requires clear boundaries. Structured output, deterministic lens selection, explicit prompt constraints, graceful failure states, and an interface that never imitates a chat feed all reinforce the same principle: AI can strengthen human judgment without replacing it.

Built With

Share this project:

Updates