For the curious and the technical
This page contains technical and design detail aimed primarily at developers, designers, and researchers. If you are exploring the platform as a potential participant, the User Journey and Participate pages will be more immediately useful.
The interface should feel calm, exploratory, and collaborative. It communicates shared presence without social pressure. Dyadic controls are small, explicit, and reversible. The main screen is dominated by node browsing — the symbolic field is always the foreground, never the mechanics.
Technical language is avoided throughout. The interaction vocabulary is intentionally simple and non-mechanical:
During the wandering and orbit phases, the interface is organised around three panels:
Reading the diagram element by element:
The Symbolic field occupies the main body of the screen — the browsable surface of the Text-Graph, displayed as a node list, visual graph, or clustered view depending on user preference. This is always the foreground; the dyadic controls sit around its edges.
The Node detail panel opens when a user selects a node. It shows the full text of the fragment, its archetype tags, its provenance (seed source or the dyad session that created it), and its position in the genealogy — which nodes are its parents, and which child nodes it has generated. A user can dwell here, reflect, and decide whether to Offer the node to their partner.
The Near you and Near partner panels show nodes from each user's individual browsing trail — what each person has been drawn to independently. These are visible to both users as gentle orientation signals, not as personal data.
The Between you panel is the gravity well — a live surface of nodes that bridge the two users' browsing trails, updated dynamically as the dyad moves through the graph browsing experience. It is the most actively modulated panel: the AI surfaces nodes here that connect what both users have been exploring.
The Proposal tray runs along the bottom of the screen. Either user may place a node here by pressing Offer. Both users see the tray simultaneously. Locked: — indicates that no parent node has yet been mutually agreed — once a node is accepted by both users it moves from the tray into a locked Parent A or Parent B slot, and the dash is replaced by the node title.
The gravity well scoring function that drives the Between you panel is:
Overlap increases when both users have interacted with a node, or with nearby nodes in the same archetype cluster. Only ephemeral, in-session signals are used — no personal data, no long-term profiling.
Reading the diagram element by element:
The Parent A and Parent B nodes sit at the top of the screen throughout the entire drafting session — always visible, always present as the symbolic anchors from which the child node grows. They cannot be edited at this stage; they are the fixed inheritance.
The shared draft area is a single collaborative text space — not a turn-based chat, not two separate input fields. Both users write into the same text simultaneously, in real time. Either may add, delete, or reshape any part of the draft at any point. This is co-authorship in the most literal sense: the text belongs to neither user individually.
The Approve / Save flow is a two-step gate. Each user has their own Approve button. Once a user presses Approve their confirmation is recorded — but Save only activates when both users have approved the current version simultaneously. If either user edits the draft after approving, all approvals reset. This prevents one user from making a final change after the other has signed off. The child node is published to the Text-Graph only when both users are actively satisfied with the exact text in front of them.
The proposal and agreement process is an explicit handshake. The system never assumes readiness — every stage gate requires active user action.
| Action | Effect |
|---|---|
| Offer(node) | Creates a proposal card visible to both users. Retractable at any time before acceptance. |
| Accept(node) | Locks node as parent if both have accepted. Shows as Parent A or Parent B. |
| Retract(node) | Removes a proposal if not yet locked. |
| Replace(parent) | Unlocks a slot and returns to proposal state. Requires both users to confirm if already locked. |
| Approve(draft) | Records this user's approval of the current draft text. |
| Save(child) | Publishes the child node to the Text-Graph. Requires both approvals active simultaneously. |
Nodes in the Text-Graph are tagged by archetypal family. These tags guide AI recommendations and support navigation through the graph browsing experience without constraining interpretation. The working cluster set is:
Nature archetypes
Water / Reflection Fire / Spark Landscape / Weather Seasons / Cycles Garden / WildHuman experience
Journey / Path Threshold / Crossing Community / Encounter Memory / Time Wound / Healing Love / BondSymbolic imagination
Dream / Vision Word / Silence Paradox Myth / Archetype Light / Dark Descent / Ascent Order / Chaos Self / DoubleButterflyDreaming is intentionally anonymous and does not track user identities. Moderation therefore cannot rely on identity enforcement. Instead it uses layered technical screening, applied at multiple points — during typing, proposing, weaving, and saving.
The goal of moderation is not punitive control but gentle guidance that keeps the environment supportive and safe for vulnerable participants.
Runs directly on the user's device. Includes English dictionary whitelist checks, spell-checking assistance, lightweight toxicity signals, and out-of-vocabulary ratio detection. Provides immediate visual feedback before text is submitted. Detects obfuscation patterns and unusually high proportions of non-English vocabulary.
Applies stronger policy rules once text is submitted. Checks for policy violations, applies rate limits and quarantine for suspicious sessions, and logs minimal decision metadata. The authoritative moderation layer.
Reserved for borderline or high-risk cases — threats, hate speech, sexual content, self-harm indicators. Returns a decision to the server. Used sparingly to preserve privacy and minimise cost.
Moderation pipeline: user text → client spellcheck + whitelist → OOV ratio → server policy filter → optional cloud → allow or request rephrase
Each symbolic text node in the Text-Graph carries the following data. Session data is minimal and ephemeral — no user identity is ever stored.
| Field | Description |
|---|---|
| id | Memgraph node ID (primary key) |
| url | Permanent public URL: domain.org/n/{id} |
| text | The symbolic content |
| source | seed | dyad_child |
| tags | Archetype cluster tags (optional array) |
| lang | Language code (default: en) |
| created_at | Timestamp |
| moderation | Status and flags |
| counters | Views, selects, fusions |
Graph edges in the Text-Graph: PARENT_OF · BRIDGE_TO · CREATED · USED_PARENT · TAGGED_AS
Storage: Memgraph for the node graph and relationships; MongoDB for session state and moderation logs.
In early growth, a few iconic seed nodes can dominate attention through preferential attachment — a small number of well-connected nodes accumulate ever more traffic, while the rest of the Text-Graph is neglected.
The platform mitigates this through: seeding many equal-weight fragments; fragmenting famous lines into smaller atoms; and including a small percentage of quiet nodes — under-visited, older, or isolated cluster nodes — in every graph browsing experience browsing panel. Random pairing itself helps, by mixing interpretive styles and preventing clique formation.
Iterative tuning uses simple behavioural metrics: time-to-first-proposal, acceptance rate, Weave completion rate, cross-cluster fusion rate, and under-visited selection share.
Guest commenting welcome — no account needed. Log in with a Hyvor account to receive reply notifications and maintain a consistent identity.