Without the preview server, a keyword match stands in for OpenAI and the count lives in this browser. Started with npm run preview, OpenAI answers and the server counts (ADR-0014); the model's key never reaches this page.
How it works
One conversation, every step visible.
Start a conversation, choose apple or orange, and watch the system work. Each step shows its state: pending, processing, completed, failed or retrying.
1
A fruit arrives
A new apple or orange is generated with its seven attributes and its preferences.
2
It describes itself
The fruit says who it is and what it wants, in its own words. Its recorded values sit next to the words.
3
Stored in SurrealDB
Nothing counts as saved until the database confirms it.
4
Scored both ways
Every candidate gets two numbers: the share of each side's preferences that the other satisfies.
5
Explained by an LLM
One message for each side, citing only the checks behind the numbers. If the LLM is unavailable, a labelled rule-based summary appears.
Why you can trust the numbers
Two directions. Real reasons. Honest gaps.
Two directions, never merged
Every pair shows both directions. Fruitful never blends them into one score, so a one-sided match cannot hide.
A01 × O06 · Apple → Orange
100%3 of 3 apple preferences satisfied
A01 × O06 · Orange → Apple
75%3 of 4 orange preferences satisfied
Every number opens its reasons
Open any percentage to see each check: what was wanted, what was there, and the result.
O06's preferences, checked against A01
Attribute
Wants
Has
Result
Size
at least 7 cm
7.2 cm
Satisfied
Weight
at least 180 g
185 g
Satisfied
Leaf
yes
no
Not satisfied
Chemicals
no
no
Satisfied
3 of 4 satisfied: 75%
Unknown stays unknown
A missing value is never guessed. You see the confirmed share and the best case.