Skip to content

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 

Repository files navigation

The Daily Reflection Tree

A deterministic end-of-day reflection agent. No LLM at runtime. Same answers → same path → same reflection. Every time.


Repository Structure

/tree/
  reflection-tree.json     ← Part A: the full tree data
  tree-diagram.md          ← Part A: Mermaid visual diagram

/agent/
  index.html               ← Part B: runnable web agent (single file, no dependencies)

/transcripts/
  persona-1-transcript.md  ← Part B: Victor/Contributing/Altrocentric path
  persona-2-transcript.md  ← Part B: Victim/Entitled/Self-centric path

write-up.md                ← Part A: design rationale (question design, branching, sources)
README.md                  ← this file

Running the Agent

No installation required. The agent is a single self-contained HTML file.

  1. Open /agent/index.html in any modern browser (Chrome, Firefox, Safari, Edge)
  2. That's it. No server, no npm, no API keys.

The tree data is embedded inline in the HTML (equivalent to loading from file). Alternatively, to run with the external JSON file, place reflection-tree.json and index.html in the same directory and add a fetch('reflection-tree.json') call — the tree schema supports this with no code changes.

Keyboard shortcuts: Press 1–4 to select options, Enter to continue.


Reading the Tree Data

The tree is stored in /tree/reflection-tree.json as an array of nodes. Each node has this shape:

{
  "id": "A1_Q1_HIGH",
  "parentId": "A1_D1",
  "type": "question",
  "text": "You said \"{A1_OPEN}\". When something went right — what made it happen?",
  "options": [
    { "label": "I prepared or thought it through beforehand", "value": "prepared", "signal": "axis1:internal" },
    { "label": "The timing was just good — things aligned", "value": "timing", "signal": "axis1:external" }
  ],
  "target": null,
  "signal": null
}

Node Types

Type Behavior User interaction
start Opens session None — click Begin
question Asks with fixed options Employee picks one, clicks Continue
decision Internal routing (invisible) None — auto-advances
reflection Shows insight based on path Employee reads, clicks Continue
bridge Transitions between axes None — auto-advances
summary End-of-session synthesis Employee reads, clicks Close
end Closes session None

Decision Node Routing Rules

Decision nodes use one of three routing patterns in their options array:

// Pattern 1: Route based on the raw answer value from the previous question
{ "match": ["sunny", "unpredictable"], "goto": "A1_Q1_HIGH" }

// Pattern 2: Route based on the signal from the most recent answered question
{ "matchSignal": "axis1:internal", "goto": "A1_Q2_INT" }

// Pattern 3: Route based on the dominant accumulated signal for an axis
{ "matchDominant": "axis1:internal", "goto": "A1_R_INT" }

// Pattern 4: Route based on dominant signals across all 3 axes (summary routing)
{ "matchAllDominant": ["axis1:internal", "axis2:contribution", "axis3:altro"], "goto": "SUMMARY_INT_CONTRIB_ALTRO" }

Signals

Each question option may carry a signal field:

"signal": "axis1:internal"   → state.axis1.internal += 1
"signal": "axis1:external"   → state.axis1.external += 1
"signal": "axis2:contribution" → state.axis2.contribution += 1
"signal": "axis2:entitlement"  → state.axis2.entitlement += 1
"signal": "axis3:altro"       → state.axis3.altro += 1
"signal": "axis3:self"        → state.axis3.self += 1

Text Interpolation

Reflection and summary nodes can reference earlier answers using {NODE_ID} syntax:

"You said \"{A1_OPEN}\" — but you also \"{A2_Q2_CONTRIB}\"."

The engine replaces {A1_OPEN} with the label of the option the employee selected at node A1_OPEN.


Tree Statistics

Metric Count
Total nodes 55
Question nodes 12
Decision nodes 13
Reflection nodes 6
Bridge nodes 2
Summary nodes 8
Start/End nodes 2
Possible conversation paths 8 (2³ axis combinations)
Questions per session 6 (2 per axis)
Options per question 4

The Three Axes

Axis Spectrum Psychology
1 — Locus Victim ↔ Victor Rotter (1954) Locus of Control; Dweck (2006) Growth Mindset
2 — Orientation Entitlement ↔ Contribution Campbell et al. (2004); Organ (1988) OCB
3 — Radius Self-centrism ↔ Altrocentrism Maslow (1969) Self-Transcendence; Batson (2011) Perspective-Taking

Design Principle

The tree is the product. The LLM was the power tool used to build it.

The agent makes zero API calls at runtime. The entire intelligence — every branch, every reflection, every summary — is encoded in the tree structure. A different engine could load reflection-tree.json and produce an identical conversation, in any language or interface.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages