Skip to content
← Back

The Veil · El Velo

A playable Rawls experiment: write six social policies, then live through the outcomes they create.

Private build ReactTypeScriptZustandCapacitor
The Veil · El Velo: A playable Rawls experiment: write six social policies, then live through the outcomes they create.

Private, playable prototype. The portfolio does not present a public deployment.

The idea

The Veil asks players to set the rules of a society before they know who they will become inside it. They choose six policy levers, then experience a series of lives shaped by those choices.

What I built

The core is a pure TypeScript model that runs without the interface. It derives social conditions from six levers, generates seeded citizens and lives, and scores the resulting distribution. A headless harness searches the model’s lever space, and the test suite checks that selected balanced rulesets outperform the project’s equality and laissez-faire extremes. This validates the behavior of this designed model, not a general philosophical claim.

React and Zustand present the model through a Spanish-first legislative interface, a veil-lift sequence, life reels, and a shareable constitution card. The product includes a deterministic Daily mode, streaks, local persistence, reduced-motion support, an error boundary, and Capacitor configuration for native sharing and haptics.

The hard parts

01

Giving fairness a model

Terms such as fairness, opportunity, and protection become meaningful only when they change outcomes. Each lever needed a visible cost, benefit, and relationship to the lives it affects.

02

Testing the premise before polishing it

The interface could not rescue a model whose incentives contradicted its idea. Headless checks make the intended tradeoffs explicit and expose when a modeled extreme wins unexpectedly.

03

Letting outcomes make the argument

The design does not label a player’s choices as morally correct. It shows the distribution of lives they created, then gives them room to reflect on the result.

What’s next

Secure a distinct public domain and verify a production web deployment before release.