MIRROR — Living Organisational Conscience

MIRROR measures the distance between what an organisation believes and what it repeatedly becomes.


Inspiration

Every organisation tells itself a story. Most of those stories are more flattering than the record.

The idea for MIRROR began with watching different companies, over several years, describe their cultures in ways that bore decreasing resemblance to what their people actually did. The decks said one thing. The decisions said another. The gap between them widened quietly, never named, never measured, until something broke and everyone wrote postmortems in the language of the deck. Nobody had been dishonest. Everyone had simply stopped checking.

There are platforms that measure performance. There are platforms that measure engagement. There is nothing that measures the distance between what a company believes and what it repeatedly becomes. That distance, left unmeasured, becomes the company. I wanted to build the thing that measures it.

MIRROR is not a dashboard. It is an institutional witness. The premise is calm: organisations are owed honest mirrors more than flattering ones, and an honest mirror is something that can be built.


What it does

MIRROR is a living organisational intelligence platform. It ingests an organisation's decisions, beliefs, meeting notes, and operational data, then maps each decision against the beliefs the organisation claims to hold. Every decision receives a resonance score \(r \in [-1, +1]\), and a cumulative drift function is rendered over time as the gap between the stated belief baseline and the actual decision curve.

The system surfaces five categories of institutional integrity failure:

Category Definition
Contradiction Two beliefs that cannot both be true, given the decisions made
Drift A belief that was true and is slowly becoming false
Rationalisation A decision whose justification arrived after the choice was made
Silence Something that mattered, that has gone quiet
Recurrence What the organisation consistently returns to under pressure

Core capabilities

  • The Time Machine. A date slider at the top of the application. Drag it backwards and the entire interface re-renders showing only what MIRROR would have known at that moment. The Drift view shows fewer entries. The Eulogy is shorter. Warnings appear before the events that confirmed them. This is the feature that answers the obvious question: can this only see backwards?

  • Drift Case Files. Every founding belief tracked as an evolving case file: the original statement, every subsequent event that moved its status, current condition (healthy / eroded / contradicted / silent), magnitude reasoning, and any recovery signals.

  • The Eulogy Protocol. A generative narrative of what would be true about the organisation if it ceased to exist today, written from the record in the organisation's voice rather than its marketing voice. Available as on-page text or as a calmly read audio close.

  • Live Decision Ingestion. Log a decision in natural language and receive an immediate structural analysis. MIRROR pulls the relevant founding beliefs, notes any recurrence relationships, and suggests interventions where the decision repeats a known pattern.

  • The Honest Artifact Generator. For any contradiction, MIRROR can produce a corrected version of the document where the contradiction occurred. Same content, same voice, no bifurcation. The value proposition made tangible.

  • The Reveal mechanic. Every MIRROR finding can be exploded into the underlying evidence with line-level highlighting in the source documents. The credibility layer made interactive.

  • The People Page. For every individual in the record, MIRROR extracts seniority, role, decision history, and behavioural patterns evidenced against specific decisions and meetings.

  • The Intervention Mechanism. Every finding supports four actions: Trigger Intervention, Acknowledge, Bypass (reason required), or Revise Flow (MIRROR re-runs analysis on a corrected reading). Each intervention is itself part of the record. A decision about a decision.

  • Voices. Paired entry mode where two participants of the same event log independent accounts. MIRROR surfaces divergences in dimension, severity, and emotional register.

  • The Archive. A complete, searchable, time-filtered history of every decision and its analytical metadata.

For the demo, MIRROR is loaded with eighteen months of fictional history from Vela, a Series A legal-tech company. The seed data spans forty-five logged decisions, two source documents, and a complete supporting cast of seven core stakeholders. By the end of Vela's record, its decisions track approximately \(1.8\sigma\) below the stated belief baseline. The drift is not stylised. It is the kind of drift the system was built to make visible.


How I built it

MIRROR was built on MeDo, a code-free development platform, across roughly thirty iterations from initial concept to the final build.

Layer Stack
Frontend React 19, Vite, TypeScript, Tailwind CSS, shadcn/ui
Persistence Supabase (Postgres + Row Level Security)
AI Supabase Edge Functions → Gemini 2.5 Flash (SSE streaming)
Voice LemonFox text-to-speech (audio Eulogy)
State React Context for temporal state, localStorage for preferences

The visual language is deliberately restrained: a near-black background, Playfair Display for titles, IBM Plex Mono for data and metadata, Lato for body text. No drop shadows. No border radius beyond 2px. Hierarchy comes from whitespace and contrast rather than colour or decoration. The dark palette forced us to think in luminance and opacity rather than hue, which produced a more nuanced result than starting from a light theme would have.

Several architectural choices proved important.

SSE streaming for AI output. All AI responses stream back via Server-Sent Events, parsed frame by frame. This is partly performance, partly atmosphere. Text appearing character by character reinforces the sense of a system thinking through the record rather than retrieving a cached answer.

Temporal coherence as a global concern. The Time Machine is not a feature; it is a state context every view subscribes to. The same components render as of today and as of October 2025 without conditional logic, because the data layer filters at the source against a single temporal predicate:

$$ D_t = {\, d \in D : \text{date}(d) \leq t \,} $$

The Vela seed data as a literary artefact. A document totalling roughly forty thousand words, written in the tone of internal corporate memory: decision cards, meeting notes, product usage tables, sales pipeline data. The drift in Vela is not random. It is structured to demonstrate every detection type MIRROR can identify, while reading as the genuine record of an eighteen-month period.


Challenges I ran into

The interesting challenges were not the technical ones. The technical ones I solved by iteration:

  • SSE frame parsing for streaming AI responses
  • State-machine reconstruction for the dual-entry Voices flow, where input panels stopped rendering after initialisation
  • A phantom CSS-token problem where semantic class names produced no styles because they were never registered in tailwind.config.js
  • A localStorage version gate that caused new sessions to start with zero interventions because the seed function returned early on a version match

The harder challenges were structural.

  • Building consistency across an evolving codebase With more than ninety source files, design consistency drifted faster than features did. Some page headers were centred, others left-aligned. Some subtitles were monospaced, others were not. Some pages used the time-machine context, others rendered "now" as a constant. I eventually established a strict header pattern and back-ported it across every route. The lesson: consistency is a feature you have to fight for, not a polish step at the end.

  • Tone discipline in AI output MIRROR's voice had to be calm, precise, evidenced, and never accusatory. The temptation when an LLM produces text from a record of organisational drift is to let it become rhetorical. Every system prompt was rewritten multiple times to remove flourish and add specificity. The voice I settled on (state what is observed, attach a date, point to the underlying decision, never moralise) is the voice the entire product depends on. Get it slightly wrong and MIRROR sounds like a prosecutor. Get it right and it sounds like a historian.

  • Building with an AI development partner Working in MeDo meant most code was written by an AI agent operating from prompts. This is faster than typing every line and worse at remembering what was already built. Several iterations resolved the same bug twice. One memorable session reported all five requested features as complete and produced a build in which none of them worked, because the root cause was a single missing Tailwind config entry the agent could not see. The fix in those cases was usually one structural correction that the agent only noticed when a human read the rendered output back to it. AI-assisted development is real. The human still has to be the one watching the screen.


Accomplishments that I'm proud of

  • The Eulogy Protocol. There is no comparable feature in any organisational tool I have seen. A generative AI obituary, written from the organisation's own record, that ends on a question rather than a verdict. The first time the system produced a full paragraph from raw decision data, and the paragraph was both true and quietly devastating, the project felt like a different kind of thing than I had set out to build.

  • The Time Machine. Eighteen months of Vela's history, every view in the application time-filtered, contradictions that emerge before the events that confirm them. This is the feature that transforms MIRROR from a postmortem analyser into a witness with foresight.

  • The Vela seed data. One documents, eighteen months of fictional but structurally honest organisational history, written in the voice of the institution itself. Fifty six decisions, eleven core stakeholders, an arc that includes drift, partial recovery, internal fracture, and an unresolved question. The seed data is not demo filler. It is the strongest piece of writing in the submission.

  • The Honest Artifact Generator. MIRROR does not only analyse. It produces. Click the bifurcated-narrative contradiction and MIRROR drafts the version of the document the leader should have written. The value proposition turned into a button.

  • The Reveal mechanic. Every literary claim in MIRROR's output can be exploded into the source sentences it was synthesised from. Trust infrastructure. The answer to "is the AI just being florid?" is one click away.

  • Zero-dependency drift charts. Raw SVG with hand-calculated coordinate transforms, animated stroke-dashoffset, distinct shapes for accessibility, and tooltip layering that survives every edge case. It looks designed, not configured.

  • Design system discipline. After enough iterations the codebase reads as a single authored document. Every page header, divider, spacing rhythm, and font pairing follows the same rules. The cumulative effect is calm.

  • Temporal coherence. There is no "current view" in MIRROR that pretends history does not exist. The Time Machine affects every screen, and every screen handles missing or partial historical data gracefully. This is harder than it sounds.


Built With

Share this project:

Updates