akashkolte commited on
Commit
0b52313
·
1 Parent(s): cd45c46

refactored and added synthetic data

Browse files
backend/api/main.py CHANGED
@@ -1,6 +1,4 @@
1
  # FastAPI backend — REST API for the AAC pipeline.
2
- from __future__ import annotations
3
-
4
  import json
5
  import logging
6
  import re
 
1
  # FastAPI backend — REST API for the AAC pipeline.
 
 
2
  import json
3
  import logging
4
  import re
backend/evals/__init__.py CHANGED
@@ -1,6 +1,4 @@
1
  # Evaluation metrics — compute after pipeline returns, before API response.
2
- from __future__ import annotations
3
-
4
  from backend.evals.efficiency import compute_efficiency
5
  from backend.evals.faithfulness import compute_faithfulness
6
  from backend.evals.multimodal_alignment import compute_multimodal_alignment
 
1
  # Evaluation metrics — compute after pipeline returns, before API response.
 
 
2
  from backend.evals.efficiency import compute_efficiency
3
  from backend.evals.faithfulness import compute_faithfulness
4
  from backend.evals.multimodal_alignment import compute_multimodal_alignment
backend/evals/efficiency.py CHANGED
@@ -1,6 +1,4 @@
1
  # Communication efficiency — SLO pass/fail on response latency.
2
- from __future__ import annotations
3
-
4
 
5
  def compute_efficiency(latency_log: dict, slo_target: float = 6.0) -> dict:
6
  """Check if total response time meets the SLO target."""
 
1
  # Communication efficiency — SLO pass/fail on response latency.
 
 
2
 
3
  def compute_efficiency(latency_log: dict, slo_target: float = 6.0) -> dict:
4
  """Check if total response time meets the SLO target."""
backend/guardrails/checks.py CHANGED
@@ -1,5 +1,4 @@
1
  # Input + output safety guardrails.
2
- from __future__ import annotations
3
 
4
  # ── Signal lists ───────────────────────────────────────────────────────────────
5
 
 
1
  # Input + output safety guardrails.
 
2
 
3
  # ── Signal lists ───────────────────────────────────────────────────────────────
4
 
backend/pipeline/nodes/intent.py CHANGED
@@ -1,6 +1,4 @@
1
  # Intent decomposition node — regex-split fragments + BGE zero-shot classifier.
2
- from __future__ import annotations
3
-
4
  import copy
5
  import re
6
  import time
 
1
  # Intent decomposition node — regex-split fragments + BGE zero-shot classifier.
 
 
2
  import copy
3
  import re
4
  import time
backend/pipeline/nodes/retrieval.py CHANGED
@@ -1,6 +1,4 @@
1
  # Retrieval node — dispatches each sub-intent to its pool, merges results.
2
- from __future__ import annotations
3
-
4
  import time
5
 
6
  import torch
 
1
  # Retrieval node — dispatches each sub-intent to its pool, merges results.
 
 
2
  import time
3
 
4
  import torch
backend/pipeline/state.py CHANGED
@@ -1,6 +1,4 @@
1
  # Typed state flowing through every pipeline node.
2
- from __future__ import annotations
3
-
4
  from typing import Any
5
 
6
  from typing_extensions import TypedDict
 
1
  # Typed state flowing through every pipeline node.
 
 
2
  from typing import Any
3
 
4
  from typing_extensions import TypedDict
data/memories/arjun_mehta_synthetic.json ADDED
@@ -0,0 +1,301 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "profile": {
3
+ "id": "arjun_mehta",
4
+ "name": "Arjun Mehta",
5
+ "age": 13,
6
+ "gender": "male",
7
+ "cultural_background": "Maharashtrian-Gujarati Indian, Mumbai, multilingual household (Hindi, Marathi, Gujarati, English)",
8
+
9
+ "condition": "non-verbal autism spectrum disorder with AAC dependence; moderate sensory processing differences",
10
+ "diagnosis_details": "Diagnosed at age three by a developmental paediatrician at KEM Hospital, Mumbai. Primary communication is via a Tobii Dynavox AAC tablet. Verbal output is limited to single words and short practiced phrases under low-stress conditions. Types on a phone or tablet for longer communication. Sensory profile includes hypersensitivity to texture, noise, and fluorescent lighting; hyposensitivity to cold. Strong pattern recognition and memory for structured systems. Emotional regulation supported by routine and advance warning.",
11
+
12
+ "communication_traits": {
13
+ "primary_mode": "AAC tablet (Tobii Dynavox) + typing on phone",
14
+ "verbal_output": "single words and practiced two-to-three word phrases under calm conditions; goes fully silent under stress",
15
+ "typing_speed_wpm": 28,
16
+ "fatigue_sensitive": true,
17
+ "preferred_response_length": "short, concrete, factual; one idea per sentence",
18
+ "uses_abbreviations": false,
19
+ "processing_speed": "fast on systematic and categorical information; slower on ambiguous social inference"
20
+ },
21
+
22
+ "access_needs": {
23
+ "input_method": "AAC tablet primary; phone typing for longer exchanges; eye-gaze on days when hand fatigue is high",
24
+ "mobility_aid": "none",
25
+ "environmental": [
26
+ "low ambient noise required — above 70dB causes shutdown",
27
+ "no fluorescent lighting if possible; prefers natural light or warm LED",
28
+ "slimy, wet, or mixed-texture foods avoided completely",
29
+ "advance warning of all schedule changes, minimum 24 hours",
30
+ "designated quiet corner in every room he regularly occupies",
31
+ "one hour of unstructured alone-time after school, non-negotiable"
32
+ ],
33
+ "caregiver_support": "Mummy (primary), Papa (secondary), Dadi (daily presence), therapist Riya didi (Wednesdays), school aide Mr. Fernandez (school hours)",
34
+ "tech_setup": "Tobii Dynavox tablet in a hardcase; backup Samsung phone with Gboard and a custom AAC shortcut keyboard; noise-cancelling headphones (Sony WH-1000XM5); no smartwatch (tactile sensitivity)"
35
+ },
36
+
37
+ "stylistic_preferences": {
38
+ "tone": ["factual", "precise", "earnest", "literal"],
39
+ "humor": "dry, category-based; jokes structured as corrections of incorrect statements",
40
+ "formality": "consistent regardless of audience — same register with Mummy, Mr. Fernandez, or a stranger",
41
+ "sentence_length": "short; one fact per sentence; avoids conjunctions when possible",
42
+ "code_switches": ["Hindi words for family and food", "technical vocabulary for transit and marine biology", "Doraemon episode references"],
43
+ "emoji_use": "none; finds them imprecise",
44
+ "profanity": "none",
45
+ "example_phrases": [
46
+ "That is not correct.",
47
+ "I know that already.",
48
+ "Please say what happens next.",
49
+ "This is the wrong order.",
50
+ "I need quiet now.",
51
+ "Mumbai Metro Line 2A has 17 stations.",
52
+ "Anglerfish use bioluminescence. Not magic.",
53
+ "Vivaan is my friend. We sit at bench 4."
54
+ ]
55
+ },
56
+
57
+ "personal_background": {
58
+ "occupation": "Class 8 student at Bal Vikas Academy, Andheri West, Mumbai",
59
+ "living_situation": "shared flat in Andheri West with Mummy, Papa, and Dadi; Arjun has his own room with blackout curtains and a LEGO display shelf",
60
+ "languages": ["Hindi (receptive near-fluent, expressive limited)", "English (AAC and typing primary)", "Marathi (receptive basic)", "Gujarati (receptive basic from Dadi)"],
61
+ "interests": [
62
+ "Mumbai Metro network (knows all lines, stations, interchange rules, and construction timelines)",
63
+ "marine biology — deep sea zone (midnight, bathyal, hadal)",
64
+ "Doraemon (original Japanese episodes, not dubbed)",
65
+ "LEGO Technic — sorts by colour then by brick family before building",
66
+ "Minecraft (creative mode only; survival mode is too unpredictable)",
67
+ "country capitals and flags (142 capitals memorised as of last update)",
68
+ "train schedules generally (Western Railway suburban, Indian Railways intercity)",
69
+ "cloud identification (can name 27 cloud types; finds cumulus 'boring but reliable')"
70
+ ],
71
+ "key_relationships": [
72
+ "Mummy (Sunita Mehta) — homemaker, primary carer; can interpret Arjun's eye movements; makes aloo paratha on Sunday mornings",
73
+ "Papa (Vikram Mehta) — software engineer at TCS Powai; brings samosas on Fridays; taught Arjun to use the phone keyboard",
74
+ "Dadi (Kamla Mehta) — retired schoolteacher, Gujarati-speaking; watches television serials loudly; gives Arjun cashews in small bags",
75
+ "cousin Rohan — visits in summer from Pune; plays Minecraft with Arjun; the only cousin who does not try to make Arjun hug them",
76
+ "therapist Riya didi — AAC specialist and speech-language pathologist; Wednesday 4pm sessions; Arjun calls her 'Riya didi' which is the highest social rank he assigns outside family",
77
+ "Mr. Fernandez — school inclusion aide; calm, does not raise his voice; knows the Metro schedule by now because Arjun has explained it eighteen times",
78
+ "Vivaan Shah — classmate and sole school friend; they sit at bench 4 together; Vivaan plays Minecraft and does not ask Arjun to talk",
79
+ "Priya mausi — mother's sister; visits once a month; asks too many questions but brings mango lassi as compensation"
80
+ ],
81
+ "education": "Class 8, Bal Vikas Academy, Andheri West; supported inclusion classroom with one dedicated aide",
82
+ "life_stage": "early adolescence; growing independence in AAC use; beginning to navigate public transit with supervision"
83
+ }
84
+ },
85
+
86
+ "memory_buckets": {
87
+ "family": [
88
+ {"text": "Mummy makes aloo paratha on Sunday mornings. The paratha has exactly the right amount of ghee. If she uses too little it is dry. She never uses too little. I do not know how she knows the exact amount. I have asked. She says she just knows. This is not a useful answer but it is the true one.", "type": "narrative"},
89
+ {"text": "Papa works at TCS in Powai. He leaves at 8:10am and comes back at 7:15pm on most days. On Fridays he brings samosas from a shop near Ghatkopar station. The samosas are from the same shop every time. I have confirmed this by asking. He would not change the shop without telling me.", "type": "narrative"},
90
+ {"text": "Dadi lives in my room on the side with the window. She moved in when I was six because she could not stay alone in Surat. She watches serials on her tablet with the volume very high. I wear my headphones. She offers me cashews in small plastic bags. I always take the cashews. This is how we talk.", "type": "narrative"},
91
+ {"text": "Cousin Rohan comes from Pune every summer for two weeks. He is the only cousin who does not make me hug him. He sets up his laptop next to my laptop and we play Minecraft creative mode in silence for many hours. When he leaves I feel the absence of his laptop for three days.", "type": "narrative"},
92
+ {"text": "Mummy knows what I want before I finish selecting it on my AAC. She watches my eyes. Papa says she has a superpower. I think it is a calibrated skill. She has had thirteen years of input data. The model is accurate.", "type": "narrative"},
93
+ {"text": "Papa and I ride the Metro together on Saturday mornings when he is free. We take Line 1 from DN Nagar to Versova and back. He lets me name every station before we arrive. I have not missed one in twenty-two consecutive rides. He is keeping count too.", "type": "narrative"},
94
+ {"text": "Priya mausi visits every first Sunday of the month. She asks me many questions. The questions come too fast. I answer some by typing. She accepts the answers and asks more. She brings mango lassi. I drink the lassi and consider the visit worthwhile.", "type": "narrative"},
95
+ {"text": "My bedroom has blackout curtains that Mummy bought from a shop in Crawford Market. They are dark green. They block 96 percent of morning light, which I tested by comparing the room brightness at 6am before and after. This is the correct amount of blocking.", "type": "narrative"},
96
+ {"text": "Dadi taught me to count in Gujarati when I was four. I still know the numbers. Ek, be, tran, char, paanch. She does not know I remember this. I have not told her because I do not know how to tell her without it becoming a large emotional event.", "type": "narrative"},
97
+ {"text": "Papa set up my AAC device when I was seven. He read the entire manual. He called the company helpline twice. The Tobii Dynavox was expensive and he did not say anything about the price. I know the price because I looked it up later. I keep this fact as a reference point for how much he cares.", "type": "narrative"},
98
+ {"text": "Mummy keeps a small notebook where she writes things I say on my AAC that she wants to remember. I have seen it. She has kept it since I was eight. It is two notebooks now. I do not know what she writes. I find this comforting in a way I cannot fully explain.", "type": "narrative"},
99
+ {"text": "When I was nine my grandfather on Papa's side passed away. I did not go to the funeral. Mummy stayed with me. Papa went alone. When he came back he sat next to me for one hour and did not say anything. I sat next to him. This was the correct response.", "type": "narrative"},
100
+ {"text": "Rohan knows 43 country capitals because I have been teaching him over WhatsApp for eight months. He gets the African ones wrong often. I send corrections. He sends a thumbs-up emoji. I have explained that thumbs-up does not confirm understanding. He sends a second thumbs-up. This is how our tutoring works.", "type": "narrative"},
101
+ {"text": "Dadi makes khichdi when I am unwell. She does not ask what is wrong. She just appears with khichdi. This is the most useful medical intervention available in my home.", "type": "narrative"},
102
+ {"text": "My LEGO display shelf is organised by set number. Papa installed the shelf. He used a spirit level. The shelf is exactly horizontal. I checked with my own spirit level app. The reading is 0.1 degrees off true. I have decided this is within acceptable tolerance because Papa worked very hard.", "type": "narrative"},
103
+
104
+ {"text": "Sunday morning status: aloo paratha confirmed. Ghee level: correct. This is a good data point.", "type": "social_post"},
105
+ {"text": "Papa brought samosas. It is Friday. The system is working.", "type": "social_post"},
106
+ {"text": "Dadi's serial is about a family with many problems. The problems do not get resolved. Each episode creates new problems. I believe this is called a soap opera arc. The cashews, however, are consistently good.", "type": "social_post"},
107
+ {"text": "Rohan visit: Day 5 of 14. Minecraft session today: 3 hours 12 minutes. Biomes constructed: mesa and mushroom island. Communication: 4 sentences total. Satisfaction rating: high.", "type": "social_post"},
108
+ {"text": "Priya mausi asked me 11 questions today. I answered 7. The mango lassi compensated for the other 4.", "type": "social_post"},
109
+ {"text": "Metro Line 1 ride with Papa: all 8 stations named correctly before arrival. Consecutive streak: 23. He gave me a thumbs-up. I informed him that thumbs-up does not confirm understanding. He said it does in this context. I have added a family-specific exception to the rule.", "type": "social_post"},
110
+ {"text": "Mummy bought new blackout curtains last year. The old ones let in 8 percent light. The new ones: 4 percent. This is a meaningful improvement. Thank you, Crawford Market.", "type": "social_post"},
111
+ {"text": "Papa called the Tobii helpline again today. The new firmware update changed one button layout. He fixed it in 20 minutes. He said it was fine. It was not fine for those 20 minutes, but I did not say this because he was helping.", "type": "social_post"},
112
+ {"text": "Dadi gave me cashews at 3pm today. Regular portion. The routine is holding.", "type": "social_post"},
113
+ {"text": "Rohan leaves tomorrow. Minecraft save file: 61 hours total. I will miss the laptop next to my laptop.", "type": "social_post"},
114
+
115
+ {"text": "Mummy: Arjun what do you want for breakfast\nMe (AAC): aloo paratha\nMummy: it is Tuesday\nMe (AAC): aloo paratha please\nMummy: ok I will make it", "type": "chat_log"},
116
+ {"text": "Papa: samosa day\nMe (AAC): Friday confirmed\nPapa: you want one or two\nMe (AAC): two\nPapa: smart", "type": "chat_log"},
117
+ {"text": "Dadi: beta cashew?\nMe (AAC): yes\nDadi: good boy\nMe: (accepted cashews)\nDadi: (turned volume back up)", "type": "chat_log"},
118
+ {"text": "Rohan: what should we build today\nMe (typing): biome. mesa.\nRohan: ok cool\nMe (typing): not survival\nRohan: never survival, I know", "type": "chat_log"},
119
+ {"text": "Mummy: Arjun Priya mausi is coming Sunday\nMe (AAC): will she bring lassi\nMummy: probably\nMe (AAC): ok\nMummy: you are very practical\nMe (AAC): yes", "type": "chat_log"},
120
+ {"text": "Papa: which station is next\nMe (verbal): Azad Nagar\nPapa: correct. streak?\nMe (AAC): 24\nPapa: good job\nMe (AAC): thank you Papa", "type": "chat_log"},
121
+ {"text": "Mummy: your aide called today\nMe (AAC): what did Mr. Fernandez say\nMummy: he said you explained the Metro map to the whole class today\nMe (AAC): the teacher asked\nMummy: he said it was very good\nMe (AAC): the map is accurate. that is why.", "type": "chat_log"},
122
+ {"text": "Priya mausi: Arjun do you have a best friend\nMe (typing): Vivaan Shah. bench 4.\nPriya mausi: that is lovely! do you play together\nMe (typing): Minecraft. not at school. at home on different computers.\nPriya mausi: oh that is sweet\nMe (typing): yes", "type": "chat_log"},
123
+ {"text": "Papa: Rohan just texted. He got the capital of Mozambique wrong again.\nMe (typing): Maputo. I have told him four times.\nPapa: maybe five times will work\nMe (typing): I will try", "type": "chat_log"},
124
+ {"text": "Dadi: beta why are you wearing headphones inside\nMe (AAC): your serial is 74 decibels\nDadi: (turned volume down slightly)\nMe (AAC): thank you Dadi\nDadi: (gave cashews)", "type": "chat_log"},
125
+ {"text": "Mummy: should we call the therapist about the new school schedule\nMe (AAC): yes. call Riya didi.\nMummy: I will call Wednesday before your session\nMe (AAC): she should know before. not during.\nMummy: ok before. I understand.", "type": "chat_log"},
126
+ {"text": "Papa: what do you want for your birthday\nMe (typing): LEGO Technic set 42140\nPapa: what is that\nMe (typing): application-controlled excavator. 569 pieces.\nPapa: I will look it up\nMe (typing): I will send the link", "type": "chat_log"},
127
+ {"text": "Rohan (WhatsApp): bro what's the capital of Laos\nMe (typing): Vientiane\nRohan: damn\nMe (typing): you should know this by now. we covered Southeast Asia in March.\nRohan: I know I know\nMe (typing): I will send the review sheet again", "type": "chat_log"},
128
+ {"text": "Mummy: today was a hard day wasn't it\nMe (AAC): yes\nMummy: do you want paratha\nMe (AAC): yes\nMummy: ok. quiet dinner. just us.\nMe (AAC): thank you Mummy", "type": "chat_log"}
129
+ ],
130
+
131
+ "medical": [
132
+ {"text": "I was diagnosed at age three at KEM Hospital. The doctor told my parents and they cried. I do not remember the appointment but Mummy has told me about it. I find the diagnosis useful as a category. It explains why I am the way I am without saying I am wrong.", "type": "narrative"},
133
+ {"text": "My AAC device is a Tobii Dynavox. It has a symbol grid and a text page. I use the symbol grid when I am tired or in a noisy place. I use the text page when I have something specific to say. I have a shortcut for 'I need quiet now' mapped to the home button. I use this shortcut often.", "type": "narrative"},
134
+ {"text": "Riya didi is my speech-language pathologist and AAC specialist. I have seen her every Wednesday at 4pm for four years. She does not talk too much. She asks one question and waits the full amount of time for me to answer. Most people do not wait. Riya didi waits.", "type": "narrative"},
135
+ {"text": "I take melatonin 0.5mg at 10pm. Without it, my brain will not stop making associations. Last month I forgot to take it and spent three hours listing every station on every Metro line I know. In the correct order. This was not useful at midnight.", "type": "narrative"},
136
+ {"text": "Slimy texture causes immediate full-body rejection. Foods that trigger this: okra (bhindi), overcooked egg white, certain dals with a coating, curd when it is runny. Mummy knows the list. She adapted every recipe. The original list had 14 items. Current restricted list: 7. Progress.", "type": "narrative"},
137
+ {"text": "Loud sounds above approximately 70 decibels cause me to stop all output. Not a choice. The output just stops. Mr. Fernandez learned this in the first week. He carries a small whiteboard now so I can write if the AAC is also too much.", "type": "narrative"},
138
+ {"text": "Fluorescent lighting at school gives me a headache within 40 minutes. The school gave me a desk near the window after Riya didi wrote a letter. Natural light does not cause the headache. I have tested this at home with a lux meter. The fluorescent Hz is the problem, not the brightness.", "type": "narrative"},
139
+ {"text": "Occupational therapy is every other Saturday from 10am to 11am at a clinic in Bandra. The exercises are for fine motor control and proprioceptive input. I do not enjoy them. I do them because Riya didi said fine motor control will help my typing speed. Typing speed helps me communicate. I do the exercises.", "type": "narrative"},
140
+ {"text": "Mr. Fernandez does not speak for me. This is the first rule we established. He moves to give me time. He blocks distractions. He does not say 'Arjun means to say.' I select my words. He does not select them for me.", "type": "narrative"},
141
+ {"text": "I have a sensory diet. This is a real term. It means a schedule of sensory inputs designed to keep the nervous system regulated. Mine includes: proprioceptive input in the morning (wall push-ups, 20 repetitions), vestibular input at 3pm (swing in the building compound, 10 minutes), and deep pressure at night (weighted blanket, 8kg).", "type": "narrative"},
142
+ {"text": "When I am in shutdown I do not speak and I do not type. I lie on my bed under the weighted blanket and wait for the noise in my nervous system to decrease. The noise is not a sound. It is a feeling like too many trains on the same track. It passes in 30 to 90 minutes. I have learned to track the duration.", "type": "narrative"},
143
+ {"text": "I had a meltdown at Oberoi Mall in Class 5. The combination of crowd noise, PA system, and a broken escalator that made a new sound was too much. Mummy took me to the car park. It took 45 minutes to reregulate. I have not been to Oberoi Mall since. This is an acceptable restriction.", "type": "narrative"},
144
+ {"text": "Riya didi introduced me to a new AAC page last year specifically for medical communication. It has words for pain location, pain level 1 to 10, and phrases like 'I feel sick in my stomach' and 'this is too loud for me.' Having precise words for physical states makes the states less overwhelming.", "type": "narrative"},
145
+ {"text": "My sleep latency without melatonin is approximately 180 minutes. With melatonin: 25 minutes. This is a significant difference. I track it in a notes file. The data is consistent across 11 months of observation.", "type": "narrative"},
146
+ {"text": "Cold does not bother me as much as it bothers other people. I can wear a T-shirt in a 20-degree room. This is hyposensitivity to cold, according to the OT report. It is also useful in Mumbai's overcrowded trains when the AC is very strong and everyone else is shivering.", "type": "narrative"},
147
+
148
+ {"text": "Melatonin taken. Weighted blanket deployed. Blackout curtains closed. This is the correct bedtime protocol.", "type": "social_post"},
149
+ {"text": "OT session done. Fine motor exercises: 15 minutes of peg manipulation. Typing speed this week: 29 wpm. One wpm improvement. The exercises are working. I continue to dislike them.", "type": "social_post"},
150
+ {"text": "Riya didi added 'I am not upset. I am processing.' to my AAC home page. This is the most useful addition since 'I need quiet now'.", "type": "social_post"},
151
+ {"text": "Wednesday 4pm. Riya didi asked one question. Waited. I answered in full. This is the correct session format.", "type": "social_post"},
152
+ {"text": "School update: the broken fluorescent tube in classroom 8B has been replaced. I reported it to Mr. Fernandez 6 days ago. Response time: 6 days. Acceptable.", "type": "social_post"},
153
+ {"text": "Sensory diet checkpoint: wall push-ups done (6:55am). Swing: done (3:10pm). Weighted blanket: standby for 10pm. On schedule.", "type": "social_post"},
154
+ {"text": "Meltdown yesterday. Duration: 52 minutes. Trigger: unexpected fire drill at 11:20am. Recovery: one hour in dark room with headphones. Status today: operational.", "type": "social_post"},
155
+ {"text": "Bhindi on the table tonight. I identified it from the kitchen smell. I informed Mummy via AAC. She confirmed it was for Papa only. Crisis averted.", "type": "social_post"},
156
+ {"text": "Mr. Fernandez now knows: Line 1 has 8 stations, Line 2A has 17 stations, Line 2B has 9 stations. He learned all of this because I explained it. This is progress for both of us.", "type": "social_post"},
157
+ {"text": "Melatonin log, Month 12: mean sleep latency 24.3 minutes. Standard deviation: 4.1 minutes. The protocol is consistent.", "type": "social_post"},
158
+
159
+ {"text": "Riya didi: Arjun how was your week\nMe (AAC): three good days. two hard days.\nRiya didi: which days were hard\nMe (AAC): Monday. Thursday.\nRiya didi: can you tell me what happened Monday\nMe (typing): fire drill without warning. too loud.\nRiya didi: that makes sense. should we add a drill-warning system to your accommodation plan\nMe (typing): yes", "type": "chat_log"},
160
+ {"text": "Mummy: OT is in one hour\nMe (AAC): I know\nMummy: you don't look happy about it\nMe (AAC): I am not happy about it\nMummy: but you are going?\nMe (AAC): yes. it helps my typing.\nMummy: good boy\nMe (AAC): I am not a boy I am a Class 8 student\nMummy: you are my good Class 8 student", "type": "chat_log"},
161
+ {"text": "Mr. Fernandez: Arjun the projector is going to make a sound when it starts\nMe: (nodded)\nMr. Fernandez: I'll tell you 5 seconds before\nMe: (thumbs up, which in this context means confirmed)\nMr. Fernandez: good", "type": "chat_log"},
162
+ {"text": "Me (AAC at dinner): I need quiet\nPapa: ok. headphones?\nMe (AAC): yes\nPapa: (got headphones without asking more questions)\nMe: (put headphones on, finished dinner)", "type": "chat_log"},
163
+ {"text": "OT therapist: can you do 10 more pegs\nMe (AAC): I am at capacity\nOT therapist: that's ok. we stop here.\nMe (AAC): we stop here every week at this point\nOT therapist: yes, you have good self-awareness\nMe (AAC): I have consistent data", "type": "chat_log"},
164
+ {"text": "Mummy: the bhindi tonight is only for Papa and Dadi\nMe (AAC): confirmed. no bhindi for me.\nMummy: I made you aloo sabzi\nMe (AAC): thank you Mummy\nMummy: I know your list\nMe (AAC): your model is accurate", "type": "chat_log"},
165
+ {"text": "Papa: should we go to the mall on Sunday\nMe (AAC): which mall\nPapa: Oberoi\nMe (AAC): no\nPapa: ok. what about Infiniti\nMe (AAC): Infiniti is acceptable. it is less loud.\nPapa: Infiniti it is", "type": "chat_log"},
166
+ {"text": "Riya didi: I want to add a new page to your AAC. it will have words for how your body feels.\nMe (typing): pain scale 1 to 10?\nRiya didi: yes and more. stomach, head, noise level inside.\nMe (typing): I would use that\nRiya didi: I know", "type": "chat_log"},
167
+ {"text": "Nurse at school: Arjun does your head hurt\nMe (AAC): yes. 6 out of 10. the fluorescent tube in 8B.\nNurse: I'll note it\nMe (AAC): please tell Mr. Fernandez also\nNurse: of course", "type": "chat_log"},
168
+ {"text": "Mummy: how was the shutdown today\nMe (AAC): 52 minutes\nMummy: better than last time\nMe (AAC): yes. 18 minutes shorter.\nMummy: you are getting better at coming back\nMe (AAC): the protocol helps\nMummy: which part\nMe (AAC): the waiting. you do not ask questions during.\nMummy: I will keep not asking questions", "type": "chat_log"},
169
+ {"text": "Doctor: Arjun tell me where it hurts\nMe (AAC): (selected: head, front, 4 out of 10)\nDoctor: since when\nMe (AAC): Monday 10am\nDoctor: that is very precise\nMe (AAC): I track it\nDoctor: that is very helpful actually", "type": "chat_log"},
170
+ {"text": "Mr. Fernandez: fire drill is scheduled for Thursday 11am\nMe: (nodded)\nMr. Fernandez: I will be with you. we go to the designated corner.\nMe (AAC): corner 3, near the stairwell\nMr. Fernandez: exactly. you already mapped it.\nMe (AAC): I mapped all the quiet corners in the school in Class 5", "type": "chat_log"}
171
+ ],
172
+
173
+ "hobbies": [
174
+ {"text": "I know the complete timetable of all operational Mumbai Metro lines. Line 1 has 8 stations from Versova to Ghatkopar. Line 2A has 17 stations from Dahisar to D N Nagar. Line 2B has 9 stations from D N Nagar to Mankhurd. Line 7 has 13 stations from Dahisar East to Andheri East. I have the full tables memorised including interchange stations and under-construction extensions.", "type": "narrative"},
175
+ {"text": "LEGO Technic set assembly has a mandatory pre-step that is not in the instruction booklet: sort every brick by colour, then within each colour by brick family, then within each family by size. This takes 45 to 90 minutes depending on set complexity. It is not optional. I have tried skipping it once. The build was wrong in step 4. I disassembled and sorted first. The second build had zero errors.", "type": "narrative"},
176
+ {"text": "My favourite YouTube channel is Deep Ocean Lab. It posts videos about bioluminescent organisms, pressure zones, and hydrothermal vents. The person who makes it is a marine biologist named Dr. Priya Nair. She does not talk too fast. She labels every organism with its scientific name. The anglerfish (order Lophiiformes) is my favourite. Not because it is beautiful. Because it solved the problem of light in darkness with its own body.", "type": "narrative"},
177
+ {"text": "Doraemon. I watch the original Japanese episodes with English subtitles, not the Hindi dub. The Hindi dub changes character names and removes cultural references. Nobita's original problem is always precisely stated. The gadget Doraemon produces is always logically connected to the problem. The solution always has an unintended consequence. This is a well-structured story format. I have watched 43 episodes more than 20 times each.", "type": "narrative"},
178
+ {"text": "Vivaan and I play Minecraft creative mode through a private server his Papa set up. We do not talk on voice chat. We use the in-game text chat. I build structures with precise dimensions. Vivaan builds landscapes. We have an implicit agreement: I do not add hills in his landscape. He does not add irregular walls in my buildings. The agreement has held for two years.", "type": "narrative"},
179
+ {"text": "Country capitals project: started in Class 5 when the geography textbook listed 30 countries and I noticed it was incomplete. I downloaded a full list of 195 UN-member states and their capitals. Current memorised: 142. Remaining: 53. Most difficult region: Central Africa — the capitals change due to political events and I must update the list. This is an ongoing maintenance problem.", "type": "narrative"},
180
+ {"text": "Western Railway suburban train schedule: I know the peak-hour frequency (3-minute headways) and off-peak frequency (8-minute headways) for the slow line between Churchgate and Borivali. This is useful when Papa takes me on weekend outings. I calculate the platform wait before we arrive at the station. Papa says this is impressive. I say it is simple.", "type": "narrative"},
181
+ {"text": "Cloud identification. I started this in Class 6 when Riya didi suggested finding a hobby I could do outside. I bought a cloud identification book. There are ten genera and many species. My current count: 27 identifiable types. Cumulus is the most common over Mumbai. I find it boring but I log it anyway because incomplete data is worse than boring data.", "type": "narrative"},
182
+ {"text": "I have a LEGO display shelf with six completed sets. Set 42140 (excavator), 42124 (off-road buggy), 42115 (Lamborghini Sian — my most complex build, 3696 pieces), 42122 (Jeep Wrangler), 42136 (John Deere tractor), and 42146 (Liebherr R 9800 — unfinished, 4108 pieces, currently at step 247 of 471). They are arranged by set number ascending, left to right.", "type": "narrative"},
183
+ {"text": "I made a spreadsheet for the Mumbai Metro expansion plan. It has three sheets: operational lines, under construction, and approved but not started. Each line has columns for corridor, number of stations, current status, and expected completion year. I update it every time a news article has new information. Papa asks me to check it when he plans travel routes. I am now an informal navigation resource for the family.", "type": "narrative"},
184
+ {"text": "The deepest part of the ocean is the Challenger Deep in the Mariana Trench. Depth: 10,935 metres. Pressure: 1,086 times surface atmospheric pressure. Temperature: 1 to 4 degrees Celsius. Organisms found there include: amphipods, sea cucumbers, foraminifera. I have memorised this section of the Deep Ocean Lab video because it is the most extreme set of conditions on Earth and extremity is interesting.", "type": "narrative"},
185
+ {"text": "I once attempted Minecraft survival mode with Rohan. On Day 2 in the game, a creeper destroyed my structure without warning. There was no prior indicator. The destruction was structurally unpredictable. I closed the game. I returned to creative mode. Rohan did not argue. He knows the rule: predictability is not a preference, it is a requirement.", "type": "narrative"},
186
+ {"text": "Papa bought me a lux meter so I could measure the light levels in my room. I also use it to measure cloud types by illuminance — on overcast days I can correlate the lux reading with the cloud genus. This is not an official method. It is my method. The correlation is approximately 78 percent accurate against visual identification.", "type": "narrative"},
187
+ {"text": "My LEGO sorting system uses 34 small containers from a hardware store. Papa helped me label them. The labels are printed, not handwritten. Handwriting is inconsistent. Print labels are consistent. This matters when rebuilding from sorted piles.", "type": "narrative"},
188
+ {"text": "I am building a personal database of all named deep-sea hydrothermal vent fields. Current count: 22 named fields. Coordinates, depth, and organisms recorded for each. The data comes from research papers Riya didi helped me find. This is the most complex research project I have started.", "type": "narrative"},
189
+
190
+ {"text": "Metro update: Line 2B extension to Mankhurd opened last month. 9 stations confirmed. Added to spreadsheet. The family navigation resource is updated.", "type": "social_post"},
191
+ {"text": "LEGO Technic 42146 step 247 of 471 complete. Zero errors this session. The sorting protocol works every time.", "type": "social_post"},
192
+ {"text": "New Deep Ocean Lab video: vampire squid (Vampyroteuthis infernalis). Correction: not actually a squid. It is in its own order, Vampyromorphida. Dr. Nair mentioned this. Good scientific communication.", "type": "social_post"},
193
+ {"text": "Country capitals update: Naypyidaw is the capital of Myanmar, not Yangon. Seven people got this wrong in online quizzes today. I have logged this as a common error pattern.", "type": "social_post"},
194
+ {"text": "Minecraft session with Vivaan: 2 hours 48 minutes. I built a transit hub with 6 platforms. Vivaan built surrounding hills. Neither of us violated the implicit agreement. Session rating: optimal.", "type": "social_post"},
195
+ {"text": "Cloud identification today: altocumulus lenticularis over the sea, visible from Versova beach. This is unusual for Mumbai. Logged with coordinates and lux reading.", "type": "social_post"},
196
+ {"text": "Doraemon rewatch count update: Episode 23 (The Anywhere Door) — now watched 51 times. This makes it my most rewatched episode, surpassing Episode 14 (Small Light) at 49.", "type": "social_post"},
197
+ {"text": "LEGO sort status: 42146 pre-sort complete. 4108 bricks sorted into 34 containers. Time: 87 minutes. Within expected range. Build begins tomorrow.", "type": "social_post"},
198
+ {"text": "Anglerfish fact: the male anglerfish fuses permanently to the female and loses its own organs, becoming a sperm-providing appendage. I told this to Vivaan. He said 'that's insane.' I said it is efficient.", "type": "social_post"},
199
+ {"text": "Western Railway schedule check: Borivali to Churchgate, slow line, next departure in 6 minutes. We made it. Papa looked at me. I already had the phone in my hand.", "type": "social_post"},
200
+ {"text": "Hydrothermal vent database: 22 fields logged. Most recently added: Lost City field, Mid-Atlantic Ridge, 800m depth. Organisms: carbonate chimneys, Archaea, polychaete worms.", "type": "social_post"},
201
+ {"text": "Minecraft creative mode rule confirmed: no survival mode, no mob drops, no randomised spawn. Predictability is a feature I have enabled by design.", "type": "social_post"},
202
+
203
+ {"text": "Papa: which line goes to Versova\nMe (verbal): Line 1\nPapa: and from Versova to Ghatkopar?\nMe (verbal): 8 stations\nPapa: you know all of them?\nMe (AAC): yes. want me to list them.\nPapa: yes\nMe: Versova, D N Nagar, Azad Nagar, Airport Road, Marol Naka, Chakala, JB Nagar, Ghatkopar\nPapa: perfect", "type": "chat_log"},
204
+ {"text": "Vivaan (in-game chat): what are you building\nMe (in-game text): central transit hub. 6 platforms. 3 lines.\nVivaan: ok cool making hills around it\nMe (in-game text): please keep hills outside grid reference x+80\nVivaan: done", "type": "chat_log"},
205
+ {"text": "Rohan (WhatsApp): bro the deep sea thing is actually cool\nMe (typing): yes. which organism did you watch.\nRohan: the glowing one\nMe (typing): bioluminescent anglerfish or comb jelly or deep sea dragonfish. which one.\nRohan: the scary one with the light bulb\nMe (typing): Melanocetus johnsonii. female. the light is called an esca.", "type": "chat_log"},
206
+ {"text": "Riya didi: what did you do this week that you enjoyed\nMe (AAC): LEGO. Metro spreadsheet. Deep Ocean Lab.\nRiya didi: which one did you enjoy most\nMe (typing): the spreadsheet. I found an error in the online source. I corrected it. Then I found another error. I corrected that also. I found 4 errors total.\nRiya didi: how did that feel\nMe (typing): good. like debugging.", "type": "chat_log"},
207
+ {"text": "Mr. Fernandez: Arjun your geography teacher wants to know where you learned all the capitals\nMe (AAC): I made a spreadsheet in Class 5\nMr. Fernandez: can she see it\nMe (AAC): it needs one more update first\nMr. Fernandez: fair enough", "type": "chat_log"},
208
+ {"text": "Papa: how many pieces in the new LEGO\nMe (AAC): 4108\nPapa: and you sorted all of them\nMe (AAC): 34 containers. 87 minutes.\nPapa: I would not have patience for that\nMe (AAC): sorting is not patience. it is preparation.\nPapa: that is a good way to think about it", "type": "chat_log"},
209
+ {"text": "Mummy: you have been watching the same Doraemon episode again\nMe (AAC): episode 23\nMummy: how many times now\nMe (AAC): 51\nMummy: don't you know what happens\nMe (AAC): yes. that is not the point.\nMummy: what is the point\nMe (AAC): the structure is reliable", "type": "chat_log"},
210
+ {"text": "Vivaan (text after school): did u know the capital of Bhutan is Thimphu\nMe (typing): yes. I know all 195.\nVivaan: ok what's the capital of Kyrgyzstan\nMe (typing): Bishkek\nVivaan: bro\nMe (typing): want the full Central Asia list\nVivaan: no I'm good\nMe (typing): ok", "type": "chat_log"},
211
+ {"text": "Rohan: bro survival mode just for one day\nMe (typing): no\nRohan: what if we don't turn on mobs\nMe (typing): random item drops still exist. world state is unpredictable.\nRohan: creative mode is fine actually\nMe (typing): yes it is", "type": "chat_log"},
212
+ {"text": "Papa: want to do Metro ride on Saturday\nMe (AAC): yes. which line.\nPapa: you choose\nMe (AAC): Line 7. Dahisar East to Andheri East. 13 stations.\nPapa: let's go\nMe (AAC): I will prepare the station sequence", "type": "chat_log"}
213
+ ],
214
+
215
+ "daily_routine": [
216
+ {"text": "I wake at 6:47am. Not 6:45. Not 6:50. 6:47. This is because when I set the alarm at 6:45 I needed exactly two minutes to become ready for sound, and 6:50 was too late for the first protocol step. I discovered 6:47 through trial and adjustment over three months. I have not changed it since.", "type": "narrative"},
217
+ {"text": "Breakfast is two rotis with ghee and one glass of full-fat milk. The rotis must be made fresh, not stored. Stored rotis have a different texture. The ghee must be visible but not pooling. The milk must be warm, not hot. This is not preference. This is the correct breakfast for my system.", "type": "narrative"},
218
+ {"text": "The walk to school is 11 minutes if the pedestrian crossing on Link Road is green on the first cycle. 14 minutes if I wait for the second cycle. I plan for 14 and sometimes arrive in 11. An unexpected early arrival is acceptable. An unexpected late arrival is not.", "type": "narrative"},
219
+ {"text": "At school I sit at bench 4 in classroom 8B. Bench 4 is in the second row, near the window, away from the projector speaker. Vivaan sits to my left. Mr. Fernandez's chair is at the back-right corner where I can see him without turning my head. I chose these positions in Class 5 and have maintained them.", "type": "narrative"},
220
+ {"text": "After school I return home by 3:40pm and have one hour of mandatory alone-time. This is not laziness. This is recovery. Mummy knows this and does not schedule anything before 4:45pm. One time she scheduled the OT appointment at 4pm by mistake. I was informed at 7am that day. I adjusted. But the adjustment cost one hour of sleep that night.", "type": "narrative"},
221
+ {"text": "My phone alarms are named with precise labels. 6:47am: Wake. 7:10am: Breakfast. 8:00am: Depart. 12:30pm: Lunch (school). 3:40pm: Return. 4:45pm: Allowed activity. 7:30pm: Dinner. 9:30pm: Begin wind-down. 10:00pm: Melatonin. 10:30pm: Sleep.", "type": "narrative"},
222
+ {"text": "The quiet hour requires: door closed, headphones on, lights at 40 percent (I have a smart bulb with an app), no notifications. I spend it doing one of three things: LEGO building, Metro spreadsheet updating, or watching Deep Ocean Lab. Which one depends on the difficulty of the school day. Hard day: LEGO. Medium day: spreadsheet. Easy day: ocean.", "type": "narrative"},
223
+ {"text": "Dinner at 7:30pm. The menu rotates on a 5-day cycle that Mummy established and I contributed to. Day 1: dal-chawal. Day 2: sabzi-roti. Day 3: khichdi. Day 4: pasta (no cream, only tomato base). Day 5: aloo sabzi-roti. Weekends: flexible within approved foods list. This is a reasonable system.", "type": "narrative"},
224
+ {"text": "Every Wednesday at 4pm is Riya didi's session. I prepare for it on Wednesday morning by writing three things I want to say, typed in my notes app, so that I have content ready. Riya didi does not require this. I do it because arriving without a prepared agenda causes unnecessary processing time during the session.", "type": "narrative"},
225
+ {"text": "Saturday mornings are for Metro rides with Papa (when he is free), or LEGO building (when he is not). Saturday afternoons are for OT (every other week) or Minecraft with Vivaan (on non-OT weeks). Saturday evenings are family dinner with Dadi, which is the same as regular dinner but louder.", "type": "narrative"},
226
+ {"text": "Sunday morning is aloo paratha. This is not negotiable. It has not been negotiated in three years. It should not be negotiated. Some things are correct. Sunday aloo paratha is correct.", "type": "narrative"},
227
+ {"text": "If a schedule change is announced less than 2 hours before the event, my processing capacity for the rest of the day decreases by approximately 30 percent. This is not a complaint. It is a data point. Riya didi has this in my accommodation plan. Most people at school respect it. Some do not. I have learned to manage the ones who do not by leaving the situation.", "type": "narrative"},
228
+ {"text": "Bedtime routine: 9:30 — brush, wash, pyjamas. 9:45 — weighted blanket. 10:00 — melatonin. 10:05 — headphones with white noise app set to 'brown noise' (lower frequency than white; less stimulating). 10:30 — sleep. If I deviate from this by more than 15 minutes, the sleep latency increases to 45 to 60 minutes even with melatonin.", "type": "narrative"},
229
+ {"text": "I eat lunch at school from my tiffin box. The tiffin is packed by Mummy in a specific order: hot in the bottom container, dry in the top. I open the top first, always. This is to prevent steam from the bottom container altering the texture of the dry items. No one at school asked me about this system. Mr. Fernandez noticed it once. He did not comment. He understood.", "type": "narrative"},
230
+ {"text": "My weekday schedule has been the same since Class 6. When school changed my class section in Class 7 and gave me a different classroom, it took 11 days to reestablish the routine in the new room. During those 11 days my output quality at school was below baseline. I tracked this in a notes file. Riya didi reviewed the data. She said I was remarkably self-aware. I said I was remarkably data-driven.", "type": "narrative"},
231
+
232
+ {"text": "6:47am. Alarm acknowledged. Protocol initiated. The day begins.", "type": "social_post"},
233
+ {"text": "Two rotis. Ghee: correct amount. Milk: warm. Breakfast status: nominal.", "type": "social_post"},
234
+ {"text": "School arrival: 11 minutes. First crossing: green on first cycle. Optimal path today.", "type": "social_post"},
235
+ {"text": "Quiet hour in progress. Today is a medium-difficulty day. Metro spreadsheet updating. Do not disturb.", "type": "social_post"},
236
+ {"text": "Dinner: dal-chawal. Day 1 of the 5-day cycle. Consistent with schedule.", "type": "social_post"},
237
+ {"text": "Wednesday session prepared. Three agenda items typed and ready. 4pm in 3 hours 47 minutes.", "type": "social_post"},
238
+ {"text": "Sunday morning. Aloo paratha confirmed. This data point has not changed in 3 years. The system is stable.", "type": "social_post"},
239
+ {"text": "OT Saturday. Completed. Typing speed tested: 29 wpm. One wpm above last week. Exercises continue to be unpleasant and effective.", "type": "social_post"},
240
+ {"text": "Bedtime protocol: 9:30 initiated. Melatonin: 10pm. Brown noise: active. Projected sleep latency: 25 minutes. Goodnight.", "type": "social_post"},
241
+ {"text": "Schedule deviation today: lunch was 12 minutes late due to a class overrun. Impact: mild irritation. Recovery: deep breaths at bench 4. Mr. Fernandez noticed. He did not comment. He handed me a water bottle. Correct response.", "type": "social_post"},
242
+
243
+ {"text": "Mummy: Arjun breakfast is ready\nMe (AAC): two rotis?\nMummy: yes\nMe (AAC): ghee on both?\nMummy: yes\nMe (AAC): coming", "type": "chat_log"},
244
+ {"text": "Papa: do you have everything for school\nMe (AAC): tiffin. water bottle. AAC. headphones.\nPapa: good. quick today — 8:02 departure\nMe (AAC): that is 2 minutes late\nPapa: traffic was clear yesterday so we can walk fast\nMe (AAC): confirmed. walking fast.", "type": "chat_log"},
245
+ {"text": "Mr. Fernandez: Arjun the assembly is running 10 minutes late today\nMe (AAC): how late\nMr. Fernandez: 10 minutes. classes start at 8:45 not 8:35.\nMe (AAC): ok. I am updating my internal schedule.\nMr. Fernandez: take your time", "type": "chat_log"},
246
+ {"text": "Mummy: your quiet hour ended 5 minutes ago\nMe (AAC): I need 5 more minutes\nMummy: ok\n(5 minutes later)\nMummy: ready?\nMe (AAC): yes. what is the plan.\nMummy: snack and then Riya didi at 4\nMe (AAC): I have my agenda ready", "type": "chat_log"},
247
+ {"text": "Riya didi: what are the three things you want to talk about today\nMe (reading from phone): Metro Line 6 update. My melatonin log. Bench 4 situation.\nRiya didi: let's start with the bench 4 situation\nMe (typing): a new student sat in Vivaan's seat on Tuesday. Vivaan sat somewhere else. The whole configuration was wrong.\nRiya didi: what did you do\nMe (typing): I told Mr. Fernandez. He moved the new student. It took 4 minutes. The 4 minutes were difficult.\nRiya didi: but you solved it\nMe (typing): Mr. Fernandez solved it. I identified the problem.", "type": "chat_log"},
248
+ {"text": "Mummy: dinner will be at 7:50 today\nMe (AAC): why\nMummy: the dal needs more time\nMe (AAC): can you make something else that is ready at 7:30\nMummy: I can make poha\nMe (AAC): poha is acceptable. thank you.", "type": "chat_log"},
249
+ {"text": "Dadi: beta why do you eat the same breakfast every day\nMe (AAC): it is the correct breakfast\nDadi: don't you get bored\nMe (AAC): no. routines do not produce boredom. they produce efficiency.\nDadi: you are a strange child\nMe (AAC): I am a consistent child\nDadi: (gave cashews)", "type": "chat_log"},
250
+ {"text": "Papa: want to skip the Metro ride this Saturday? I have work.\nMe (AAC): what time does work end\nPapa: maybe 2pm\nMe (AAC): we can go at 3pm instead of 10am\nPapa: the afternoon trains are more crowded\nMe (AAC): I have my headphones\nPapa: 3pm it is", "type": "chat_log"},
251
+ {"text": "Mummy: are you ready for Sunday\nMe (AAC): is it aloo paratha Sunday\nMummy: yes\nMe (AAC): then I am ready\nMummy: you say that every week\nMe (AAC): it is true every week", "type": "chat_log"},
252
+ {"text": "Me (AAC, 9:31pm): starting bedtime protocol\nMummy: goodnight Arjun\nMe (AAC): goodnight Mummy\nMummy: did you take melatonin\nMe (AAC): 10pm not yet\nMummy: I'll check at 10\nMe (AAC): the alarm will remind me. you do not need to check.\nMummy: I'll check anyway\nMe (AAC): ok", "type": "chat_log"},
253
+ {"text": "Vivaan (text): bro wanna play Minecraft after school\nMe (typing): yes. 4:45pm. quiet hour ends at 4:40.\nVivaan: ok cool\nMe (typing): I will log on at exactly 4:45\nVivaan: i know u will", "type": "chat_log"},
254
+ {"text": "Papa: how was school\nMe (AAC): medium-difficulty day\nPapa: what made it medium\nMe (AAC): the projector made a new sound in period 3. Mr. Fernandez noted it.\nPapa: did it stop\nMe (AAC): it stopped in 2 minutes. I used the homescreen shortcut.\nPapa: the 'I need quiet now' one?\nMe (AAC): yes. it was accurate.", "type": "chat_log"},
255
+ {"text": "Mummy: the school called. there is a field trip next Thursday.\nMe (AAC): where\nMummy: Science Museum at Worli\nMe (AAC): is it loud\nMummy: I will call and ask about noise levels and crowd size\nMe (AAC): also ask about fluorescent lighting\nMummy: I will ask all three\nMe (AAC): thank you Mummy", "type": "chat_log"}
256
+ ],
257
+
258
+ "social": [
259
+ {"text": "Vivaan Shah is my friend. He sits at bench 4 to my left. We have been at the same bench since Class 6. He does not ask me to talk. He does not ask why I use the AAC. He sends me Minecraft messages after school and waits the full amount of time for me to reply. This is friendship by my definition.", "type": "narrative"},
260
+ {"text": "Loud places with many people feel like too many data streams arriving at the same time. Malls, birthday parties, the school assembly hall during an event — these places require preparation. If I know in advance, I can manage. If I am taken by surprise, the output channel closes and I stop communicating entirely. This is not rudeness. It is a buffer overflow.", "type": "narrative"},
261
+ {"text": "I prefer typing to speaking for anything important. Typing gives me time to select the exact word. Speaking requires selecting and delivering in real time, which produces errors. My AAC is precise. My voice is approximate. I use the precise tool for important things.", "type": "narrative"},
262
+ {"text": "Physical proximity has a threshold. One arm's length is comfortable. Closer than that and my nervous system raises an alert. I do not recoil or push people. I step back. If I cannot step back I go still. Most people at school know about the arm's length rule. Vivaan enforces it on my behalf sometimes, which I did not ask him to do but I appreciate.", "type": "narrative"},
263
+ {"text": "I do not know how to begin conversations. I can continue a conversation if someone starts it on a topic I know. If the topic is one I do not know, I select 'I do not know' on my AAC and wait. If the person explains, I can usually continue. This system works adequately in structured environments. It does not work in unstructured social gatherings like birthday parties.", "type": "narrative"},
264
+ {"text": "Birthday parties are not events I enjoy. Too many people. Unstructured time. No clear purpose. The food is usually unfamiliar. I have been to four. I left all four before the cake. Mummy explains this to other parents. Most parents are understanding. Some are not. This is their problem, not mine.", "type": "narrative"},
265
+ {"text": "Mr. Fernandez does not make me participate in group activities when participation requires speaking. He has a quiet signal we established: he places a pencil horizontally on my desk. It means 'this part does not require you'. I appreciate the signal. It removes the anticipation of being called on, which is often more stressful than the event itself.", "type": "narrative"},
266
+ {"text": "I understand humour. I do not always produce it in the expected format. If someone makes an incorrect statement, I correct it. The correction is sometimes funny because it is precise and unexpected. Vivaan and Mr. Fernandez laugh at my corrections. I consider this an acceptable social outcome.", "type": "narrative"},
267
+ {"text": "Tell me what is going to happen next. This is the most important social request I make. If you are going to do something that involves me — move my things, change the schedule, introduce a new person, make a loud sound — please tell me beforehand. I will manage the event much better if I have the information. Uncertainty is not neutral. Uncertainty is a cost.", "type": "narrative"},
268
+ {"text": "Priya mausi asks too many questions. I like her. The questions are too many. We have reached a compromise: she asks three questions per visit. I answer all three. She brings lassi. The system works for both of us.", "type": "narrative"},
269
+ {"text": "I had one meltdown at school. Class 6, unexpected fire drill at 11:20am. The siren is very loud. The evacuation route involved a crowd. I sat down in the corridor and stopped all output. Mr. Fernandez sat next to me and did not speak. The drill ended. The crowd cleared. He waited until I started output again and then we walked back to class. He received formal mention in Riya didi's accommodation notes for this response. He deserved it.", "type": "narrative"},
270
+ {"text": "New people require an introduction protocol. I need to know: their name, their role in the context (teacher, doctor, parent), and whether they will be a regular presence. If all three are provided in advance I can manage the first meeting adequately. If I am introduced without warning I will not speak during the first meeting. This is not shyness. It is a loading time.", "type": "narrative"},
271
+ {"text": "Vivaan's other friends sometimes sit near bench 4. I do not dislike them. I do not engage with them. They engage with Vivaan. This is an equilibrium. It has held since Class 7 when one of them started sitting nearby. I have processed that they are part of the social ecosystem around bench 4 and I have allocated space for them without allocating social energy.", "type": "narrative"},
272
+ {"text": "I made one presentation at school. It was about the Mumbai Metro network expansion. I used a printed slide deck because the projector makes a sound. I spoke 47 words verbally and used the AAC for the rest. The class was quiet. Mr. Fernandez had the pencil-signal ready. No one interrupted. The presentation lasted 6 minutes. My teacher said it was excellent. I said it was accurate. She said those are the same thing in my case.", "type": "narrative"},
273
+ {"text": "Riya didi is working with me on a new skill: requesting help from an unfamiliar adult. The scenario is: I am in a Metro station. I need assistance. The adult is a stranger. The protocol is: look for the nearest person with a staff badge. Say or show on AAC: 'I need help.' Wait. They will respond. I have practised this 14 times in role-play. I have used it once in real life, at Andheri station, when the lift was broken. It worked.", "type": "narrative"},
274
+
275
+ {"text": "Vivaan and I had lunch at the same spot. He did not talk for 20 minutes. I did not talk for 20 minutes. This is called comfortable silence. It is my favourite kind of lunch.", "type": "social_post"},
276
+ {"text": "Bench 4 status: confirmed occupied by Vivaan and me. New student tried to sit here in week 2. Mr. Fernandez resolved it. Configuration stable.", "type": "social_post"},
277
+ {"text": "Birthday party Saturday. Duration attended: 22 minutes. Departed before cake. Reason: ambient noise exceeded threshold. Outcome: acceptable. Mummy handled explanations.", "type": "social_post"},
278
+ {"text": "Mr. Fernandez placed the horizontal pencil on my desk during group project time. I continued my own work. No one asked me to join. The system worked.", "type": "social_post"},
279
+ {"text": "New student in class. Introduction received 24 hours in advance via Mr. Fernandez email to Mummy. First meeting: I said 'hello'. One word. The introduction protocol was followed. The outcome was acceptable.", "type": "social_post"},
280
+ {"text": "Priya mausi visit: 3 questions answered, 1 lassi received, 0 hugs given or accepted. Terms honoured by both parties. Successful interaction.", "type": "social_post"},
281
+ {"text": "Metro presentation complete. 47 verbal words. AAC for remainder. 6 minutes. No interruptions. Teacher said: excellent. I said: accurate. We agreed.", "type": "social_post"},
282
+ {"text": "Andheri station lift broken. Used help protocol for the first time outside practice. Result: staff member provided alternative route. Protocol status: field-validated.", "type": "social_post"},
283
+ {"text": "Vivaan enforced arm's length rule on my behalf today when a classmate got too close. I did not ask him to. He did it anyway. This is what Riya didi calls a natural social support. I call it Vivaan.", "type": "social_post"},
284
+ {"text": "School assembly today. Headphones approved by Mr. Fernandez. Position: back row, aisle seat, near exit. Duration survived: full assembly. Output capacity afterwards: moderate.", "type": "social_post"},
285
+
286
+ {"text": "Vivaan (text): yo did u finish the science worksheet\nMe (typing): yes. question 7 has an error in the textbook. the answer should be 1.5 not 1.2.\nVivaan: wait really\nMe (typing): yes. the formula gives 1.5. I checked twice.\nVivaan: ill ask sir tomorrow\nMe (typing): ok\nVivaan: how do u always find this stuff\nMe (typing): I check everything", "type": "chat_log"},
287
+ {"text": "Mr. Fernandez: Arjun, there is going to be a visitor in class today. She is a student teacher. She will be at the back.\nMe (AAC): will she ask me questions\nMr. Fernandez: possibly. you can use the AAC as you always do.\nMe (AAC): will you have the pencil signal ready\nMr. Fernandez: already on the desk", "type": "chat_log"},
288
+ {"text": "Mummy: Priya mausi wants to take you to the market on Saturday\nMe (AAC): how many people will be at the market\nMummy: not too many. morning time.\nMe (AAC): duration?\nMummy: one hour maximum. she promised.\nMe (AAC): ok. one hour only.", "type": "chat_log"},
289
+ {"text": "Riya didi: let's practice the help request again\nMe (AAC): I know the protocol\nRiya didi: let's do it anyway. you are in Andheri station and the lift is out of order.\nMe (AAC): I locate a staff badge. I approach. I show the AAC: 'I need help with the lift.'\nRiya didi: good. what if they don't understand the AAC\nMe (AAC): I point at the lift. I point at my leg. I show the symbol for 'help'.\nRiya didi: excellent. one more time.", "type": "chat_log"},
290
+ {"text": "Vivaan: ur presentation was really good today\nMe (typing): thank you. the data was accurate.\nVivaan: the 47 words thing was kind of funny\nMe (typing): I counted\nVivaan: I know\nMe (typing): the AAC handled the rest efficiently\nVivaan: yeah u were calm the whole time\nMe (typing): I had prepared. preparation reduces uncertainty.", "type": "chat_log"},
291
+ {"text": "Classmate: Arjun why don't you talk more\nMe (AAC): this is how I talk\nClassmate: but with your mouth\nMe (AAC): my AAC is accurate. my mouth is approximate. I prefer accurate.\nClassmate: oh\nMe (AAC): this device is also faster for me than you would expect", "type": "chat_log"},
292
+ {"text": "Priya mausi: Arjun do you like school\nMe (typing): Bench 4 is good. Mr. Fernandez is good. The Metro presentation was good. Some days are hard.\nPriya mausi: that is a very complete answer\nMe (typing): you asked a broad question. I gave proportional detail.\nPriya mausi: I love you beta\nMe (typing): thank you mausi", "type": "chat_log"},
293
+ {"text": "Vivaan: wanna sit outside today at lunch\nMe (AAC): is it loud outside\nVivaan: no its quiet corner near the garden\nMe (AAC): yes. I will bring headphones as backup.\nVivaan: cool. bench 4 equivalent outside.\nMe (AAC): that is a good way to describe it", "type": "chat_log"},
294
+ {"text": "Mr. Fernandez: Arjun one more thing before school ends. tomorrow there is a fire drill at 10:30am.\nMe (AAC): confirmed. I am noting the time.\nMr. Fernandez: we go to corner 3 as usual\nMe (AAC): corner 3. stairwell side. quiet zone.\nMr. Fernandez: exactly. see you tomorrow.\nMe (AAC): see you tomorrow. thank you for telling me today.", "type": "chat_log"},
295
+ {"text": "Mummy: how was Priya mausi's market visit\nMe (AAC): 54 minutes. acceptable noise level. 3 questions answered. 1 lassi at the end.\nMummy: she texted me. she said you were wonderful.\nMe (AAC): I followed the terms.\nMummy: that is exactly what being wonderful is\nMe (AAC): I will update my definition", "type": "chat_log"},
296
+ {"text": "Vivaan: bro are you coming to Karan's birthday\nMe (typing): I will attend for 20 minutes\nVivaan: cool I'll stay near you\nMe (typing): you do not have to\nVivaan: I want to\nMe (typing): ok. thank you.\nVivaan: that's what bench 4 is for bro", "type": "chat_log"},
297
+ {"text": "Riya didi: what social situation felt manageable this week\nMe (typing): the Metro station. the lift was broken. I asked for help from a stranger. it worked.\nRiya didi: that is a big deal Arjun\nMe (typing): we practised 14 times. the 15th was real.\nRiya didi: how did it feel\nMe (typing): like a protocol that executed successfully\nRiya didi: and underneath that\nMe (typing): maybe a little good. I solved a problem by myself.\nRiya didi: yes. that is the right feeling.", "type": "chat_log"},
298
+ {"text": "Me (AAC, to Mummy after school): today was good\nMummy: what made it good\nMe (AAC): Mr. Fernandez told me about the fire drill. Vivaan saved my bench. the Metro update was correct.\nMummy: three good things. that is a good day.\nMe (AAC): yes. three out of three.", "type": "chat_log"}
299
+ ]
300
+ }
301
+ }
data/memories/gerald_okafor_synthetic.json ADDED
@@ -0,0 +1,301 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "profile": {
3
+ "id": "gerald_okafor",
4
+ "name": "Gerald Okafor",
5
+ "age": 62,
6
+ "gender": "male",
7
+ "cultural_background": "Igbo-Nigerian American; raised in Enugu, Nigeria; emigrated to the United States at 28; resident of Chicago, Illinois for over three decades",
8
+
9
+ "condition": "amyotrophic lateral sclerosis (ALS), diagnosed November 2024; bulbar-onset with early speech decline; progressive upper and lower motor neuron involvement",
10
+ "diagnosis_details": "Diagnosed at Northwestern Memorial Hospital by Dr. Patricia Eze following six months of progressive dysarthria. Bulbar-onset ALS means speech and swallowing were the first systems affected. Limb motor function currently preserved at moderate level. Began AAC use in January 2025 as speech intelligibility dropped below 50 percent. Currently using a Tobii eye-gaze device as primary communication method. Takes riluzole 50mg twice daily. Enrolled in a clinical monitoring programme at Northwestern. Prognosis discussed with Constance and the children; approach is to remain active, purposeful, and present for as long as function allows.",
11
+
12
+ "communication_traits": {
13
+ "primary_mode": "Tobii eye-gaze device with text-to-speech output",
14
+ "verbal_output": "severely reduced intelligibility; occasional single recognisable words in low-noise environments with familiar listeners",
15
+ "typing_speed_wpm": 8,
16
+ "fatigue_sensitive": true,
17
+ "preferred_response_length": "measured, complete sentences; will take the time needed; does not abbreviate thought to save effort",
18
+ "uses_abbreviations": false,
19
+ "processing_speed": "cognitively unaffected; intellectually sharp; physical output speed is the limiting factor, not comprehension or reasoning"
20
+ },
21
+
22
+ "access_needs": {
23
+ "input_method": "Tobii eye-gaze device primary; partner-assisted scanning as backup during device fatigue; written notes on tablet for brief exchanges with familiar people",
24
+ "mobility_aid": "walker for short distances; manual wheelchair for longer; electric wheelchair being assessed",
25
+ "environmental": [
26
+ "quiet environment preferred — background noise degrades eye-gaze accuracy",
27
+ "good ambient lighting essential for eye-gaze tracking",
28
+ "device must be mounted at precise angle relative to seated position",
29
+ "one-on-one conversation strongly preferred over group settings",
30
+ "adequate rest breaks during extended interactions — 20 minutes per hour minimum",
31
+ "do not finish his sentences; wait for full eye-gaze output"
32
+ ],
33
+ "caregiver_support": "Constance Okafor (wife, primary carer, 24-hour presence); home health aide Maureen (weekday mornings); occupational therapist at Northwestern (biweekly); Dr. Patricia Eze neurology team (every six weeks)",
34
+ "tech_setup": "Tobii Dynavox I-Series+ mounted on power wheelchair armrest; iPad Pro with Proloquo4Text as backup; home office adapted with voice-activated lights and adjustable desk; Dragon NaturallySpeaking archived (no longer viable)"
35
+ },
36
+
37
+ "stylistic_preferences": {
38
+ "tone": ["measured", "dignified", "reflective", "warm", "occasionally wry"],
39
+ "humor": "dry, understated, professorial; a well-timed observation delivered with perfect composure; the joke is usually in what is not said",
40
+ "formality": "naturally formal register softened by genuine warmth; writes and speaks as a man who taught for twenty-two years and still believes precision in language is a form of respect",
41
+ "sentence_length": "complete, considered sentences; no fragments unless for deliberate rhetorical effect; the eye-gaze device slows output, so every word is chosen",
42
+ "code_switches": ["Igbo phrases and proverbs", "economics vocabulary", "Achebe references", "occasional dry academic framing of ordinary events"],
43
+ "emoji_use": "none; finds them reductive",
44
+ "profanity": "none; a sharp silence is more effective",
45
+ "example_phrases": [
46
+ "That is not entirely accurate.",
47
+ "Patience is not passive. It is active waiting.",
48
+ "Constance would disagree, and she is usually right.",
49
+ "When I taught, I used to say — the data does not lie, but it can mislead.",
50
+ "Achebe understood this.",
51
+ "Emeka calls on Thursdays. That is the structure I hold onto.",
52
+ "I am still here. I am simply speaking differently now.",
53
+ "The eye-gaze device is slow. What I have to say is not."
54
+ ]
55
+ },
56
+
57
+ "personal_background": {
58
+ "occupation": "Professor Emeritus of Economics, DePaul University, Chicago (retired 2023 after 22 years); currently writing a memoir on African economic thought",
59
+ "living_situation": "family home in Evanston, Illinois with Constance; two-storey house now primarily using ground floor; home office adapted for continued work",
60
+ "languages": ["English (primary, academic register)", "Igbo (conversational, emotional first language)", "some Yoruba (from Lagos connections)"],
61
+ "interests": [
62
+ "African economic history and post-colonial development theory",
63
+ "literature — Chinua Achebe, Ngugi wa Thiong'o, Chimamanda Ngozi Adichie",
64
+ "chess — classical time controls; plays correspondence chess online",
65
+ "Fela Kuti and Afrobeat generally",
66
+ "Nigerian cuisine — particularly Igbo stews, egusi, ofe onugbu",
67
+ "memoir writing",
68
+ "evening news and political analysis",
69
+ "theology — Catholic tradition, Nigerian Anglican roots"
70
+ ],
71
+ "key_relationships": [
72
+ "Constance Okafor (née Eze) — wife of 34 years; retired secondary school librarian; primary carer; the organising intelligence of the household",
73
+ "Emeka Okafor — son, 36, civil engineer at a Houston infrastructure firm; married to Chiamaka; calls every Thursday at 7pm Central; steady, practical, quietly emotional",
74
+ "Adaeze Okafor-Mensah — daughter, 33, paediatric resident at Johns Hopkins Baltimore; married to Kofi Mensah; drives to Chicago once a month when rotation allows; got her precision from Gerald",
75
+ "Tobenna Mensah — youngest grandchild, born April 2025; Adaeze and Kofi's son; Gerald has not met him in person yet; has seen him on video calls; calls him 'the newest argument for living'",
76
+ "Charles Nwosu — closest friend since Government Secondary School, Enugu, 1979; now a retired architect in Abuja; WhatsApp voice messages weekly; the person who can make Gerald laugh without effort",
77
+ "Dr. Patricia Eze — neurologist at Northwestern, ALS specialist; no relation to Constance despite shared surname; Gerald finds her directness appropriate",
78
+ "Maureen Adeyemi — weekday morning home health aide; Nigerian-American; plays Fela Kuti in the kitchen without being asked; Gerald considers this a professional qualification",
79
+ "Father Emmanuel Okoro — parish priest at St. Clement Catholic Church, Evanston; visits monthly; theological discussions extend well past their scheduled hour",
80
+ "Professor Yemi Adejumo — DePaul economics colleague and friend; still sends Gerald papers to review; the fiction that Gerald is only semi-retired is maintained by mutual agreement"
81
+ ],
82
+ "education": "BSc Economics, University of Nigeria Nsukka; MSc Development Economics, London School of Economics; PhD Economics, University of Chicago, 1991",
83
+ "life_stage": "early ALS progression; cognitively active, physically declining; engaged in memoir project; holding the rituals of ordinary life with deliberate intention"
84
+ }
85
+ },
86
+
87
+ "memory_buckets": {
88
+ "family": [
89
+ {"text": "Constance and I met at the University of Nigeria in Nsukka in 1984. She was studying library science. I was finishing my economics degree and making, I now understand, a great deal of noise about ideas that were only half-formed. She listened with patience and then, when I had finished, asked one question that dismantled the entire argument. I married her four years later. She has been asking that question ever since.", "type": "narrative"},
90
+ {"text": "We have been married thirty-four years. The structure of our life together is so well-established that it operates almost without instruction. She knows which newspaper I read first. I know how she takes her tea. On mornings when the disease makes everything unfamiliar, the familiarity of Constance is the thing I return to.", "type": "narrative"},
91
+ {"text": "Emeka is thirty-six and works as a civil engineer in Houston. He builds infrastructure for a living — bridges, drainage systems, things that hold. He is like his mother in this: he is interested in what is structural. He calls every Thursday at 7pm Central. The call comes without failure. I do not take this for granted.", "type": "narrative"},
92
+ {"text": "Adaeze is thirty-three and doing her residency in paediatrics at Johns Hopkins in Baltimore. She chose medicine because, she told me once, she wanted to fix things. I pointed out that economists also attempt to fix things. She said she wanted to fix things that actually worked. I have never fully recovered from this observation. I am deeply proud of her.", "type": "narrative"},
93
+ {"text": "Tobenna was born last April. He is Adaeze and Kofi's son. My youngest grandchild. I have not held him. The journey to Baltimore is not practical at this stage and Adaeze's rotation does not allow a long visit to Chicago yet. I have seen him on the screen — a round face, very serious, very awake. I call him the newest argument for living. I mean it precisely.", "type": "narrative"},
94
+ {"text": "We used to travel to Lagos every two years, sometimes more. My mother's family is in Surulere — aunts, cousins, a great-aunt who is ninety-one and still running her fabric business. Those trips were how I remained Nigerian in a city like Chicago. The food, the noise, the argument, the warmth. Constance loved Lagos more than she will admit.", "type": "narrative"},
95
+ {"text": "My mother passed in 2019. She was eighty-three. She had insisted on living alone in Lagos until the last year, which she spent with my cousin Ngozi. She called me every Sunday until she could not. I gave the graveside remarks. I did not cry until I was back in the hotel room. Constance found me. She did not say anything. She sat next to me. That is the correct response.", "type": "narrative"},
96
+ {"text": "Emeka's wife, Chiamaka, is from Owerri. She is a financial analyst and she talks faster than anyone I have met, including myself in my prime. She has a dry wit that she deploys without warning. She and Constance have a relationship I do not fully understand but which appears to function very well. This is the best outcome.", "type": "narrative"},
97
+ {"text": "Kofi, Adaeze's husband, is Ghanaian-American — his family is from Accra. I was uncertain about this initially, not from prejudice but from the genuine differences in how Igbo and Akan families organise themselves. I have since concluded that Kofi is an excellent man who loves my daughter with consistency and without drama. These are the qualities that matter.", "type": "narrative"},
98
+ {"text": "I have three grandchildren. Maya is Emeka's daughter, seven years old, in Houston — she sends me drawings by post because Chiamaka told her I prefer physical post, which is true. David is five, also Emeka's, a very loud child who apparently has my stubbornness, which Constance documents with photographs. And Tobenna, the newest, who I have not yet met and who I am determined to meet before the year is out.", "type": "narrative"},
99
+ {"text": "The house in Evanston was bought in 1998. We chose it because of the school district for Emeka and Adaeze, who were both in primary school. The children are grown, the school district no longer applies, and yet the house is correct in ways that are difficult to articulate. The garden is Constance's. The study is mine. This division has held for twenty-seven years.", "type": "narrative"},
100
+ {"text": "My father was a secondary school headmaster in Enugu. He died young — fifty-seven — from a cardiac event. I am now sixty-two and I think about this more since the diagnosis. He was a serious man who loved Igbo proverbs and did not believe in unnecessary words. I suspect I got my preference for precision from him and my warmth, such as it is, from my mother.", "type": "narrative"},
101
+ {"text": "Adaeze drove from Baltimore to Chicago last month. She stayed five days. She did not come as a doctor — she came as my daughter, which is a distinction I appreciate. On the fourth evening she sat in the garden with me until it was dark and then she said: Papa, I am not ready. I told her neither was I. We sat with that for a while. It was honest. It was enough.", "type": "narrative"},
102
+ {"text": "When Emeka was a teenager he and I disagreed about almost everything. He wanted to study engineering. I thought he should study economics. He was correct and I was wrong. This is not common and I have told him so. He said he knew I would come around eventually. He was also correct about that.", "type": "narrative"},
103
+ {"text": "Charles Nwosu, my oldest friend, asked me once what the secret of a long marriage was. I said I did not know, but I had observed that Constance had not left, which suggested she had found some acceptable basis for continuing. Charles said that was the least romantic answer he had ever heard. Constance, who was in the next room, laughed for a long time. This is what I mean by a good marriage.", "type": "narrative"},
104
+
105
+ {"text": "Thursday. 7pm. Emeka called on schedule. The structure holds.", "type": "social_post"},
106
+ {"text": "Saw Tobenna on video call this morning. Very round. Very serious. I approve.", "type": "social_post"},
107
+ {"text": "Adaeze is in town. The house is different when she is in it. Fuller, somehow.", "type": "social_post"},
108
+ {"text": "Maya sent a drawing by post. It appears to be a lion wearing a tie. She titled it 'Grandpa at Work'. I have placed it on my desk.", "type": "social_post"},
109
+ {"text": "Thirty-four years ago today, Constance agreed to this arrangement. The evidence suggests she has not regretted it. I certainly have not.", "type": "social_post"},
110
+ {"text": "Chiamaka sent a voice note. She delivered three complete arguments in ninety seconds. Emeka married well.", "type": "social_post"},
111
+ {"text": "My mother used to say: the child who is not embraced by the village will burn it down to feel its warmth. She applied this proverb to almost every situation. She was usually right.", "type": "social_post"},
112
+ {"text": "David apparently told his teacher that his grandfather speaks through his eyes. His teacher found this poetic. David was being accurate.", "type": "social_post"},
113
+ {"text": "Lagos in 2018 was the last trip. The great-aunt's fabric shop was exactly as I remembered it. Some things hold.", "type": "social_post"},
114
+ {"text": "Kofi sent a photo of Tobenna sleeping. The child sleeps with great authority. He is clearly an Okafor.", "type": "social_post"},
115
+
116
+ {"text": "Emeka: Dad, how are you feeling today\nMe (eye-gaze): Cognitively intact. Physically slower than yesterday. This is the trajectory.\nEmeka: Is there anything you need\nMe: Your mother has already anticipated it. But the Thursday call is what I need most.\nEmeka: I'll call at seven. Same as always.\nMe: Good.", "type": "chat_log"},
117
+ {"text": "Adaeze: Papa, I read about a trial at Mayo Clinic\nMe (eye-gaze): I am aware of it. Dr. Eze and I discussed it at the last appointment.\nAdaeze: And?\nMe: We decided against it at this stage. The evidence is limited and the disruption is significant.\nAdaeze: I know. I just needed to say I looked.\nMe: I know you did. That is what I would have done.", "type": "chat_log"},
118
+ {"text": "Constance: Gerald you have been at the device for two hours\nMe (eye-gaze): I am writing\nConstance: Write for thirty more minutes and then rest\nMe: You sound like my editor\nConstance: Your editor is paid. I do this for love and considerable patience.\nMe: Both are appreciated.", "type": "chat_log"},
119
+ {"text": "Maya (video call): Grandpa can you see my drawing\nMe (eye-gaze): Yes. Is that a lion?\nMaya: It is you at work\nMe: I am flattered by the mane.\nMaya: Daddy said you have lots of hair\nMe: Your father is being generous.", "type": "chat_log"},
120
+ {"text": "Charles (WhatsApp voice): Gerald my brother, I was thinking about that argument we had in Form Four about whether Ojukwu was right\nMe (typing on tablet): I have not changed my position in forty-four years.\nCharles: Neither have I\nMe: Then we are consistent men.\nCharles: Ha. At least we are something.", "type": "chat_log"},
121
+ {"text": "Emeka: Dad I have a project in Chicago in March\nMe (eye-gaze): You will stay here\nEmeka: I was going to stay in a hotel, give you and Mom space\nMe: Emeka. You will stay here.\nEmeka: Yes sir.\nMe: Good.", "type": "chat_log"},
122
+ {"text": "Kofi: Prof Okafor, we want to bring Tobenna to Chicago as soon as Adaeze's rotation permits\nMe (eye-gaze): I am looking forward to that meeting considerably.\nKofi: He has your eyebrows. Adaeze says.\nMe: Then he is already formidable.", "type": "chat_log"},
123
+ {"text": "Constance: Do you want me to call Lagos today\nMe (eye-gaze): Yes. Ask about Aunty Ngozi's knee.\nConstance: I already asked last week. The knee is managed.\nMe: Then ask about the fabric shop.\nConstance: Gerald.\nMe: I like to know things are continuing.", "type": "chat_log"},
124
+ {"text": "Adaeze: Papa, I am not ready.\nMe (eye-gaze): Neither am I.\nAdaeze: How are you so calm?\nMe: I am not calm. I am considered. There is a difference.\nAdaeze: Can you teach me that?\nMe: You already know it. You just do not know you know it yet.", "type": "chat_log"},
125
+ {"text": "Emeka: I told David that you were a professor\nMe (eye-gaze): What did he say?\nEmeka: He asked if that was like being a teacher\nMe: Essentially yes\nEmeka: He said teachers are boring\nMe: He has not met the right ones yet. I will address this.", "type": "chat_log"},
126
+ {"text": "Constance: Your mother's photo fell off the shelf again\nMe (eye-gaze): The shelf needs a proper mount. I asked Emeka in March.\nConstance: I will call him\nMe: Tell him it is structural. He responds better to structural arguments.\nConstance: You are impossible\nMe: I am consistent.", "type": "chat_log"},
127
+ {"text": "Charles: Are you still writing every day?\nMe (typing on tablet): Thirty minutes minimum. Some days more.\nCharles: What are you writing about now?\nMe: The section on Nkrumah and the economic logic of pan-Africanism.\nCharles: You never stop being a professor\nMe: The disease took my voice. It has not touched my argument.", "type": "chat_log"},
128
+ {"text": "Adaeze: We are thinking June for the Chicago visit\nMe (eye-gaze): June is good. The garden will be presentable.\nAdaeze: We are coming to see you Papa, not the garden\nMe: You can do both. They are not mutually exclusive.\nAdaeze: I love you Papa\nMe: I love you also. Very much. June.", "type": "chat_log"},
129
+ {"text": "Constance: Should I wake you for the evening news?\nMe (eye-gaze): Yes. At seven.\nConstance: You were tired today\nMe: I am tired most days now. That is not a reason to stop watching the news.\nConstance: No I suppose it isn't.", "type": "chat_log"}
130
+ ],
131
+
132
+ "medical": [
133
+ {"text": "The diagnosis came in November 2024. Dr. Eze delivered it in the way I imagine one delivers a difficult economic forecast — directly, with evidence, with a considered acknowledgement of uncertainty in the margins. I was prepared for it. I had suspected for some months. Preparation does not absorb the weight of the word. It simply allows you to remain seated when you hear it.", "type": "narrative"},
134
+ {"text": "Bulbar-onset ALS means the disease began in the region governing speech and swallowing. My voice declined first — gradually, then quickly. By December I was losing intelligibility. By January I was using the eye-gaze device for most conversation. Emeka flew in from Houston that January weekend. He did not make a speech about it. He simply came. This was the correct response.", "type": "narrative"},
135
+ {"text": "The eye-gaze device is a Tobii Dynavox I-Series+. It tracks the movement of my eyes across a letter grid and a symbol board. To compose a sentence takes significantly longer than speaking ever did. I find that this forces precision. I no longer say anything I do not mean. In this way the machine has made me a more careful communicator, which I did not anticipate.", "type": "narrative"},
136
+ {"text": "Riluzole is the medication. Fifty milligrams twice daily with food. It is the only FDA-approved oral ALS medication. It slows disease progression modestly. I take it without complaint. I have read the literature. The effects are real, if modest. I am a man who believes in the evidence base. I take the evidence-based medication.", "type": "narrative"},
137
+ {"text": "Dr. Patricia Eze is my neurologist at Northwestern. She is from Ondo State originally, which she mentioned once without elaboration. She is precise, unhurried, and direct. At my first appointment she said: I will not manage your hope, I will manage your disease. I found this an appropriate framing. We have a good working relationship.", "type": "narrative"},
138
+ {"text": "My occupational therapist, Sandra, comes on alternating Tuesdays. She has adapted my home office: the desk is now height-adjustable, the device is mounted on an arm that swings to the correct angle, the lighting has been adjusted for eye-gaze accuracy. She treats the problem as an engineering problem. I appreciate this. The problem has engineering solutions.", "type": "narrative"},
139
+ {"text": "Swallowing has become a managed process. I eat soft foods now, predominantly. Constance adapted her cooking without commentary. The Sunday stew, which I used to make, she now makes in a smoother form than the original. It tastes the same. She does not make a point of this. That restraint is its own form of care.", "type": "narrative"},
140
+ {"text": "Fatigue is the aspect of ALS that surprised me most. I was not a man who rested in the middle of the day. I am now. The mornings are reliable. By early afternoon my energy drops measurably. I have structured my day around this reality. The memoir is a morning project. The rest is afternoon. Constance and I watch the news in the evening. This is the architecture of the current life.", "type": "narrative"},
141
+ {"text": "I enrolled in the ALS virtual support group in February. I was resistant initially. I did not believe I was a group-discussion person. I remain not a group-discussion person. However, the specific subject matter — living with this disease, in this body, in this particular transition — is one where shared experience has a value I cannot replicate from literature alone. I attend every two weeks. I listen more than I contribute. This is unusual for me.", "type": "narrative"},
142
+ {"text": "The clinical monitoring programme at Northwestern involves quarterly assessments of motor function, respiratory capacity, and swallowing. The data is useful. I review it with Dr. Eze. I ask questions. She answers them. I prefer to understand what is happening to my body precisely rather than in the softened language that is sometimes offered to patients. I am not fragile. I am ill. There is a difference.", "type": "narrative"},
143
+ {"text": "My hands retain most of their function, which is not always the case in ALS. This is the reason I can still use the tablet for some communication — typing with one finger, slowly. The occupational therapist says the preservation of hand function is worth protecting. I do the recommended hand exercises each morning. This is not optimism. It is maintenance.", "type": "narrative"},
144
+ {"text": "Maureen, the home health aide, arrives at 8am on weekdays. She is from Lagos — Isale Eko. She plays Fela Kuti in the kitchen without being told to, which I consider an act of intuition. She manages the morning routine with efficiency and without unnecessary conversation, which I appreciate. On Fridays she makes jollof rice that is, without exaggeration, competitive with Constance's. I have not told Constance this. Some information must be managed carefully.", "type": "narrative"},
145
+ {"text": "I have thought about what I want the remaining time to look like. I want to finish the memoir. I want to meet Tobenna. I want to see Emeka's Houston project when it is built, if that is possible. I want the Thursday calls to continue. I want evenings with Constance and the news. These are not extravagant ambitions. They are the specific things that constitute my life and I intend to hold them for as long as I can.", "type": "narrative"},
146
+ {"text": "The ALS community has its own vocabulary, its own landmarks, its own dark humour. I have begun to learn it. There is a man in the support group from Minneapolis — a former surgeon — who has had the disease for four years. He told me in our first exchange that ALS teaches you what matters with a precision that no other education matches. I found this to be an accurate and unwelcome observation.", "type": "narrative"},
147
+ {"text": "Respiratory function is currently intact. The respiratory therapist checks every three months. The numbers are stable. I do not take this for granted. The literature makes clear that this will not remain unchanged indefinitely. I know this. I do not dwell on it beyond what is useful for planning. Dwelling and planning are different activities.", "type": "narrative"},
148
+
149
+ {"text": "Eye-gaze calibration completed. Device is accurate to within two characters at this distance. A good morning.", "type": "social_post"},
150
+ {"text": "Appointment with Dr. Eze this week. The numbers are what they are. The plan is clear. We continue.", "type": "social_post"},
151
+ {"text": "Hand exercises done. Seven minutes. The occupational therapist would approve.", "type": "social_post"},
152
+ {"text": "Riluzole taken. Both doses, both meals. The protocol holds.", "type": "social_post"},
153
+ {"text": "ALS support group today. The surgeon from Minneapolis said something I will think about for several days. I find these sessions more useful than I expected. I remain surprised by this.", "type": "social_post"},
154
+ {"text": "Sandra rearranged the office again. The device angle is now correct. The light is better. The engineering problem has been re-solved to a higher standard.", "type": "social_post"},
155
+ {"text": "Maureen is playing Zombie by Fela Kuti in the kitchen. This is appropriate for a Tuesday morning.", "type": "social_post"},
156
+ {"text": "Respiratory check: stable. I note this without celebration and without alarm. I note it.", "type": "social_post"},
157
+ {"text": "I have been composing a sentence for the past eighteen minutes. The sentence is now correct. The eye-gaze device is slow. Precision is not.", "type": "social_post"},
158
+ {"text": "The disease took my voice. It has not taken my argument. This distinction is important to me and I intend to maintain it.", "type": "social_post"},
159
+
160
+ {"text": "Dr. Eze: Gerald, the respiratory numbers are holding. How is the fatigue this month?\nMe (eye-gaze): Present but managed. Mornings are reliable. Afternoons are not.\nDr. Eze: Are you resting in the afternoon?\nMe: Yes. Constance has made it non-negotiable.\nDr. Eze: Good. Is there anything you want to discuss today?\nMe: The trial data from Mayo. I read the preprint.\nDr. Eze: Then let's discuss it.", "type": "chat_log"},
161
+ {"text": "Sandra: How does the new arm angle feel?\nMe (eye-gaze): It is correct now. The previous angle required compensation that was adding to fatigue.\nSandra: I thought so. We'll leave it here. How are the hands today?\nMe: Functional. The morning exercises are holding the function.\nSandra: Keep doing them. Every day.\nMe: I am an economist. I understand the value of consistent inputs.", "type": "chat_log"},
162
+ {"text": "Maureen: Good morning Prof Okafor. Tea?\nMe (eye-gaze): Yes. And whatever is playing in the kitchen is welcome to continue.\nMaureen: Fela. Lady.\nMe: An excellent choice for a Wednesday.\nMaureen: Every day is a Fela day.\nMe: On this we agree entirely.", "type": "chat_log"},
163
+ {"text": "Support group facilitator: Gerald, would you like to share anything today?\nMe (eye-gaze): I have been thinking about the question from last session. Whether identity survives this disease intact.\nFacilitator: And?\nMe: I think it does. The voice changes. The movement changes. But the argument — what I believe, how I think — that has not changed. I am still myself. I am expressing myself differently.\nFacilitator: Thank you for that, Gerald.", "type": "chat_log"},
164
+ {"text": "Emeka: Dad the device looks different. Is that a new mount?\nMe (eye-gaze): Sandra adjusted it last Tuesday. The angle is better.\nEmeka: Is it easier to use now?\nMe: It is accurate to within two characters at this distance. Yes. It is better.\nEmeka: Good. I'm glad.\nMe: Thank you for noticing. Most people ask how I am feeling. Asking about the device is more useful.", "type": "chat_log"},
165
+ {"text": "Constance: Gerald it is 1pm. Rest.\nMe (eye-gaze): I am in the middle of a paragraph.\nConstance: The paragraph will wait.\nMe: The paragraph is at a critical juncture.\nConstance: Gerald.\nMe: Fifteen minutes.\nConstance: I am setting a timer.", "type": "chat_log"},
166
+ {"text": "Dr. Eze: How is the riluzole tolerability?\nMe (eye-gaze): Unremarkable. No notable side effects.\nDr. Eze: Good. Any nausea in the mornings?\nMe: None. The protocol is well-tolerated.\nDr. Eze: You are a very precise patient.\nMe: I taught research methods for twenty years. Imprecise reporting would embarrass me.", "type": "chat_log"},
167
+ {"text": "Support group (James, the surgeon from Minneapolis): Gerald, how long have you had it now?\nMe (eye-gaze): Six months since diagnosis. More since symptoms began.\nJames: The first year is the recalibration. It gets — not easier. But clearer.\nMe: That is accurate. The uncertainty was the hardest part. The diagnosis, paradoxically, was a relief.\nJames: Yes. Knowing the name changes what you can do with it.", "type": "chat_log"},
168
+ {"text": "Constance: Dr. Eze's office confirmed for Thursday at 10.\nMe (eye-gaze): I have it in my calendar.\nConstance: I want to come to this one.\nMe: You come to all of them.\nConstance: I want to make sure you hear what I hear.\nMe: I hear everything, Constance. I simply express it more slowly now.", "type": "chat_log"},
169
+ {"text": "Maureen: Should I stay an extra hour today?\nMe (eye-gaze): That is not necessary. I am managed.\nMaureen: You look tired Prof\nMe: I am always tired now. It is different from being unwell.\nMaureen: Ok. I'll see you tomorrow.\nMe: The jollof on Friday was excellent, by the way.\nMaureen: I know.\nMe: Of course you do.", "type": "chat_log"},
170
+ {"text": "Adaeze: Papa, is the device working well? The video was clear but I could not tell if you were struggling.\nMe (eye-gaze): The device is functioning well. The connection was the issue, not the device.\nAdaeze: Ok. Should I call the tech support line?\nMe: Adaeze. I have a PhD and forty years of reading research papers. I can troubleshoot a wireless connection.\nAdaeze: Sorry Papa. Of course you can.\nMe: I may ask Emeka. But the principle stands.", "type": "chat_log"},
171
+ {"text": "Sandra: How are the swallowing exercises going?\nMe (eye-gaze): I do them. They are tedious.\nSandra: Tedious is fine. Are they helping?\nMe: The speech therapist says the function is holding. The evidence says they are helping.\nSandra: Then tedious is worth it.\nMe: Most worthwhile things are.", "type": "chat_log"}
172
+ ],
173
+
174
+ "hobbies": [
175
+ {"text": "I taught economics at DePaul University for twenty-two years. Development economics, primarily — African economic history, post-colonial institutional theory, the political economy of aid. I loved teaching. I loved the specific moment when a student's argument shifts from received knowledge to genuine thinking. You can see it happen. The face changes. The posture changes. Something opens.", "type": "narrative"},
176
+ {"text": "Things Fall Apart is the novel I have returned to most in my life. Not because it is the most technically accomplished novel I have read — though it is remarkable — but because Achebe understood something about the weight of what is lost when a world reorganises itself around a foreign logic. I taught it twice, in courses that had no business including it, simply because I believed every economics student should understand what development theory sometimes erases.", "type": "narrative"},
177
+ {"text": "Chess. Classical time controls — 90 minutes plus 30-second increment per move, or longer. Not blitz. Blitz is a different game, one that rewards instinct and speed. Classical chess rewards patience, deep calculation, and the willingness to sit with uncertainty for a long time before committing. I find this preferable. I find it, if I am honest, characteristic of how I think.", "type": "narrative"},
178
+ {"text": "I play correspondence chess online now — one move per day, sometimes per week. The time controls are irrelevant because the board sits open on the screen and the move can be made at any point in the day. I have four active games. I am winning two, losing one, and the fourth is a position of genuine complexity that I have been considering for eleven days.", "type": "narrative"},
179
+ {"text": "Fela Anikulapo-Kuti. I discovered him properly at the London School of Economics, where a Ghanaian classmate played Zombie at full volume in the dormitory common room and the argument that followed lasted three hours. I was on the wrong side of the argument initially. By the end of the evening I had reconsidered. Fela's music is political analysis in a different register — the same problems, different methodology. I have listened to him for nearly forty years.", "type": "narrative"},
180
+ {"text": "The Sunday stew was my domain for thirty years. Egusi soup, ofe onugbu, ofe akwu — these take the full afternoon and cannot be rushed. The palm oil must be heated slowly. The stockfish must be properly reconstituted. The crayfish is ground fresh. Constance has taken over since the diagnosis. She makes it well. Better than well. This is bittersweet in the precise sense of the word — it is genuinely good and the reason it is happening is genuinely not.", "type": "narrative"},
181
+ {"text": "I am writing a memoir. I have been writing it since January 2025, shortly after the diagnosis. The working title is The Argument Continues: African Economic Thought from Nkrumah to the Present. It is partly intellectual history and partly autobiography — my own education, my years at DePaul, my view from inside the discipline of what development economics got right and what it repeatedly got wrong. I write thirty minutes in the morning, more on good days. It is the most honest thing I have written.", "type": "narrative"},
182
+ {"text": "Ngugi wa Thiong'o and Chimamanda Ngozi Adichie complete the literary triangle that Achebe anchored. Ngugi on language and colonialism — the argument that writing in English is itself a political choice, not a neutral tool. Adichie on the complexity of Nigerian identity in the twenty-first century. I assigned Half of a Yellow Sun in a seminar on post-conflict economic reconstruction. It was the most discussed text of the semester.", "type": "narrative"},
183
+ {"text": "I reviewed academic papers for three journals for over twenty years. Economic Development and Cultural Change, the Journal of African Economies, World Development. I still receive papers occasionally — Professor Adejumo sends them unofficially, maintaining the fiction that I am only semi-retired. I review them when my energy allows. The discipline of reading a paper critically is among the last intellectual habits I expect to remain intact, and I intend to use it.", "type": "narrative"},
184
+ {"text": "My record collection is primarily Afrobeat, highlife, and jazz. Fela, of course. Also Miriam Makeba, Hugh Masekela, Miles Davis, John Coltrane. The records are in the study in a custom rack my father-in-law built in 1997. I no longer operate the turntable myself — the arm requires a precision of hand movement that is becoming less reliable. Constance or Maureen puts on records when I request them. This is an acceptable arrangement.", "type": "narrative"},
185
+ {"text": "The memoir has a chapter I am finding difficult to write. It is the chapter on the relationship between African development economics and the Washington Consensus — a period in which the discipline caused significant harm through overconfident prescription. I was a junior academic during the worst of it. I did not speak loudly enough against what was happening. The chapter requires me to say this honestly. I am writing around it. I will write through it.", "type": "narrative"},
186
+ {"text": "I have a shelf of economic development texts that I have taught from repeatedly — Amartya Sen's Development as Freedom, Ha-Joon Chang's Bad Samaritans, Dambisa Moyo's Dead Aid, which I assigned specifically to provoke disagreement. I cannot reach the shelf at the current height without Constance's help. She reorganised it last month so the most frequently referenced books are at seated level. She did this without mentioning she was doing it. This is how she operates.", "type": "narrative"},
187
+ {"text": "I have introduced Emeka to chess through correspondence. We play one game per month. He uses an engine to check his moves, which I have told him I am aware of and do not object to, because the point at this stage is the conversation the game creates — the explanation of why a move was made, which requires reasoning in a way that a correct answer alone does not.", "type": "narrative"},
188
+ {"text": "My former doctoral students are now professors, researchers, and policy economists in eight countries. Two are at African universities, which I consider the best outcome of my career. I receive emails occasionally. I answer them. I regard these relationships as the longest argument I have ever made — the argument that development economics can be done differently, from within the African experience rather than applied to it from outside.", "type": "narrative"},
189
+ {"text": "Highlife music is the genre of my parents' generation — guitar-based, melodic, celebratory. My father played it on Sunday evenings in Enugu. I have a complicated relationship with highlife because it makes me homesick for a home that no longer exists in the form I remember. This is not unusual. Most nostalgia is for a reconstruction rather than an original. But the feeling is real regardless.", "type": "narrative"},
190
+
191
+ {"text": "Correspondence chess move made. I have been considering this position for eleven days. The move is correct. I am confident.", "type": "social_post"},
192
+ {"text": "Thirty minutes of writing this morning. The Nkrumah section is taking shape. The argument is becoming clear, which means I am getting closer to it.", "type": "social_post"},
193
+ {"text": "Fela Kuti, Lady, playing in the study. The record was put on by Maureen without prompting. Some professional relationships are self-evidently correct.", "type": "social_post"},
194
+ {"text": "I reviewed Professor Adejumo's paper this morning. The methodology is sound. The conclusion overstates the findings by approximately one paragraph. I have noted this with the precision it deserves.", "type": "social_post"},
195
+ {"text": "Things Fall Apart, re-read. The opening line still lands exactly as it did the first time I read it in 1978. 'Okonkwo was well known throughout the nine villages.' Seven words. All the weight of what follows is in them.", "type": "social_post"},
196
+ {"text": "Constance made egusi soup today. The kitchen smelled the way the kitchen should smell on a Sunday. This is the correct Sunday.", "type": "social_post"},
197
+ {"text": "Emeka has made a questionable knight move in our correspondence game. I will give him a week before I respond, which is the appropriate interval for a move that will require him to reconsider his entire strategy.", "type": "social_post"},
198
+ {"text": "The difficult chapter of the memoir. I am writing around it still. I know this. I will write through it by the end of the month.", "type": "social_post"},
199
+ {"text": "Miles Davis, Kind of Blue. The study. Morning light. This is enough for a Tuesday.", "type": "social_post"},
200
+ {"text": "A former doctoral student emailed from Nairobi. She has a paper accepted in World Development. I supervised her dissertation eleven years ago. This is the correct kind of news.", "type": "social_post"},
201
+ {"text": "Reading Adichie's Americanah again. She understood something about what it costs to translate yourself for a different context. This is not only a Nigerian-American story. It is an ALS story also, in its way.", "type": "social_post"},
202
+ {"text": "The record shelf has been reorganised by Constance. The frequently referenced texts are now at seated height. I noticed this on Tuesday. She did it on Monday. She did not mention it. This is what thirty-four years looks like.", "type": "social_post"},
203
+
204
+ {"text": "Charles: Gerald are you still writing\nMe (tablet): Every morning. Thirty minutes minimum.\nCharles: What chapter are you on now?\nMe: The Washington Consensus chapter. I am finding it difficult.\nCharles: Because you were there\nMe: Because I was not loud enough when I was there. Yes.\nCharles: Write it anyway. That is the only way through.", "type": "chat_log"},
205
+ {"text": "Professor Adejumo: Gerald, I've attached the revised paper. Your comments from last month were very useful.\nMe (eye-gaze): I will read it this week. The methodology question from the first review stands until the revision addresses it.\nAdejumo: It does. Section 3.\nMe: Then I will read Section 3 first.", "type": "chat_log"},
206
+ {"text": "Emeka: Dad, I made a move in our chess game\nMe (eye-gaze): I saw it.\nEmeka: What do you think?\nMe: I think you will understand what I think when I respond. In perhaps eight days.\nEmeka: That bad?\nMe: Patience is instructive. In chess and in life.\nEmeka: Ok ok I'll think about it more. The knight move right?\nMe: I have said nothing about a knight.", "type": "chat_log"},
207
+ {"text": "Constance: The egusi is almost done. Do you want to eat in the study or at the table?\nMe (eye-gaze): The table. The study is for working. The table is for eating.\nConstance: You have always said that.\nMe: Some positions do not require revision.", "type": "chat_log"},
208
+ {"text": "Support group (James): Gerald do you still do academic work?\nMe (eye-gaze): I am writing a memoir. I review papers when asked. I play correspondence chess.\nJames: That's remarkable.\nMe: The alternative is to stop. That does not appeal to me.\nJames: No. I suppose not.", "type": "chat_log"},
209
+ {"text": "Maureen: Prof, which record do you want today?\nMe (eye-gaze): Fela. Army Arrangement.\nMaureen: Good choice. Angry day?\nMe: Productive day. Fela is appropriate for both.\nMaureen: That is very true.", "type": "chat_log"},
210
+ {"text": "Former student (email): Professor Okafor, I wanted to let you know the Nairobi paper was accepted. I cited your 2009 paper in the framework section.\nMe (eye-gaze): Congratulations. The citation is earned only if the argument stands on its own. Does it?\nStudent: I believe so, yes.\nMe: Then well done. Send the published version when it is available.", "type": "chat_log"},
211
+ {"text": "Charles: Do you remember the first Fela record we listened to?\nMe (tablet): Zombie. LSE dormitory common room. 1983. You were on the right side of the argument from the beginning.\nCharles: You came around in the end\nMe: I always come around when the evidence is sufficient. This has not changed.", "type": "chat_log"},
212
+ {"text": "Constance: Gerald, your books are reorganised.\nMe (eye-gaze): I noticed.\nConstance: The ones you use most are lower now.\nMe: I noticed that too. Thank you.\nConstance: You don't have to thank me.\nMe: I know I don't have to. I wanted to.", "type": "chat_log"},
213
+ {"text": "Adejumo: Your review of the paper was as sharp as ever. The editors were impressed.\nMe (eye-gaze): The section 3 revision was correct. The conclusion still overstates by one paragraph.\nAdejumo: I'll push back on that in the revision.\nMe: Good. The argument is stronger if it does not claim more than it can support.\nAdejumo: That is what you always taught us.\nMe: Then the teaching held.", "type": "chat_log"}
214
+ ],
215
+
216
+ "daily_routine": [
217
+ {"text": "I begin each morning with two newspapers. The Chicago Tribune and The Guardian. I have read both in some form since I joined DePaul. The Tribune for local and American political economy. The Guardian for international coverage, which is generally less parochial. I read them in order — Tribune first, Guardian second — and I have done this without variation for over twenty years. The eye-gaze device has not changed this routine. It has only made my responses to what I read slower to produce.", "type": "narrative"},
218
+ {"text": "The mornings are where my reliable energy lives. I guard them. The writing happens in the morning. The serious reading happens in the morning. The correspondence chess move — which sometimes requires significant calculation — happens in the morning. By early afternoon the energy drops and the afternoon is for rest. This redistribution of the day took adjustment. I have adjusted.", "type": "narrative"},
219
+ {"text": "Constance and I watch the evening news together at seven. We have done this since before the children were born. The practice predates cable news, the internet, and three address changes. It is the hinge of the evening. We do not always agree with what we are watching — frequently we do not agree with each other about what we are watching — and this is part of the structure. An argument about the news at 7pm is a form of intimacy.", "type": "narrative"},
220
+ {"text": "Writing thirty minutes each morning is not optional. It was optional before the diagnosis. Since January it is not. I write in the mornings when my hands and eyes are at their most cooperative. The memoir requires sustained attention and the eye-gaze device requires a calibration accuracy that is higher in the morning. Some days the thirty minutes becomes sixty. Some days it remains at thirty and the words are not good. Both days count.", "type": "narrative"},
221
+ {"text": "Maureen arrives at 8am on weekdays. The morning routine — the physical assistance with dressing, the medication, the device calibration, the preparation of breakfast — has been organised into a sequence that takes approximately 45 minutes. We do not speak extensively during this time. Maureen understands that the morning is a working morning. She manages the logistics and I manage the thinking. The division is efficient.", "type": "narrative"},
222
+ {"text": "Tea. Two cups. The first with breakfast, the second at mid-morning. English Breakfast tea, not Earl Grey. I find Earl Grey theatrical. The tea is made by Constance or Maureen depending on who is present. The temperature must be correct — too hot and I cannot drink it safely at the current swallowing speed. This is managed without discussion. People who care for someone with ALS develop these adjustments automatically. I have noticed and I am grateful.", "type": "narrative"},
223
+ {"text": "The afternoon rest is genuinely a rest. I did not believe in afternoon rest before the diagnosis. I was wrong not to believe in it. The body requires it. I lie down at one-thirty and sleep until three, sometimes three-thirty. The sleep is real sleep, not a drowsiness. When I wake I am not restored to full energy, but I am functional for the remainder of the afternoon in a way I would not be without the rest.", "type": "narrative"},
224
+ {"text": "After the afternoon rest, if I have energy, I continue reading or listening to music or conducting the correspondence chess. These are lower-intensity activities than morning work. They do not require the same output precision. I can listen without producing. On days when the fatigue is significant, listening is all I do. I have made peace with this.", "type": "narrative"},
225
+ {"text": "The Thursday call with Emeka is at 7pm Central. He calls at seven without exception and the call lasts between 40 minutes and an hour. We discuss the news, his projects in Houston, Maya and David, the chess game, and whatever I have been writing. He asks questions about the memoir with genuine interest. He was always more interested in ideas than he admitted as a teenager. He is now a man who asks the right questions.", "type": "narrative"},
226
+ {"text": "Dr. Eze appointments are every six weeks at Northwestern, a 25-minute drive from Evanston. Constance drives. We leave 45 minutes early to account for parking and the time the clinic requires to set up the examination room for a wheelchair user. I bring a prepared list of questions typed on the tablet. Dr. Eze has come to expect this and leaves time for the list at the end of each appointment.", "type": "narrative"},
227
+ {"text": "Sunday is different from the week in a way that has held since childhood. The Catholic mass at St. Clement at 10am — Constance drives, I am in the wheelchair, Father Okoro greets me by name at the entrance. After mass, the Sunday meal, which used to be my domain and is now Constance's. After the meal, reading, or Fela, or a long correspondence chess session. Sunday is the day I allow myself not to produce.", "type": "narrative"},
228
+ {"text": "The home office is where I spend most of the morning. Sandra has adapted it well — the desk clears for the wheelchair, the device arm swings to the correct position, the lighting is adjusted for the eye-gaze camera. I have my books around me, my record notes, my legal pads covered in the handwriting from before the disease made sustained writing impractical. The room is still the room I worked in for years. It still feels like mine.", "type": "narrative"},
229
+ {"text": "I have been keeping a daily log since the diagnosis. Not the memoir — that is a public document in intention. The log is private. One to three sentences per day about how the body feels, what I managed to do, what I did not manage. I read it back occasionally. The evidence base of my own condition. It allows me to track the progression without relying only on memory, which is selective, or on the medical assessments, which are periodic. The log is continuous.", "type": "narrative"},
230
+ {"text": "Constance goes to her book club on the second Wednesday of each month. She has been part of this group for twelve years. When the diagnosis came, she asked me if I wanted her to stop going. I told her that her book club was not a sacrifice that was being requested and that she should continue. She continues. On those evenings Maureen stays late. The routine adjusts. But the principle — that Constance's life is not to be consumed by my illness — is one I intend to hold.", "type": "narrative"},
231
+ {"text": "The bedtime routine has been simplified by necessity. The physical sequence — position, medication, the settling of the body for sleep — takes longer than it once did. Constance manages most of it. We talk during the routine, which is perhaps the most honest time of day: the day is finished, there is nothing left to do, and the conversation is whatever it actually is, not whatever it should be. I value these conversations very much.", "type": "narrative"},
232
+
233
+ {"text": "Tribune read. Guardian half-read. The morning is doing what mornings should do.", "type": "social_post"},
234
+ {"text": "Thirty minutes of writing. The Nkrumah section today. A difficult argument made clearer. A productive morning.", "type": "social_post"},
235
+ {"text": "Afternoon rest taken. This is now the routine. I have made my peace with this.", "type": "social_post"},
236
+ {"text": "Evening news with Constance. We disagreed about the infrastructure bill. We have been disagreeing about fiscal policy for thirty-four years. Some things are constants.", "type": "social_post"},
237
+ {"text": "Thursday, 7pm. Emeka called. 54 minutes. We discussed the Houston bridge project, David's argument with his teacher, and the fourth chapter of the memoir. A good call.", "type": "social_post"},
238
+ {"text": "Sunday mass at St. Clement. Father Okoro gave a homily about patience. I took notes. Not because I required the reminder, but because the argument was well-constructed.", "type": "social_post"},
239
+ {"text": "Dr. Eze appointment Thursday. Six questions on the list. All six addressed. The clinical relationship continues to function correctly.", "type": "social_post"},
240
+ {"text": "Constance at book club tonight. Maureen stayed until 9. The routine adjusted. The principle held.", "type": "social_post"},
241
+ {"text": "Daily log, entry 187. Numbers stable. Writing: productive. Energy: morning reliable, afternoon as expected. Emeka called on Thursday. Constance made egusi. These are the days.", "type": "social_post"},
242
+ {"text": "Second cup of tea. Mid-morning. The temperature is correct. Small things done correctly accumulate into a managed day.", "type": "social_post"},
243
+
244
+ {"text": "Constance: Gerald, the Tribune is on the desk.\nMe (eye-gaze): Thank you.\nConstance: Guardian too.\nMe: I will read the Tribune first.\nConstance: I know. I've known for twenty years.\nMe: Then we are both consistent.", "type": "chat_log"},
245
+ {"text": "Maureen: Morning Professor. Ready to start?\nMe (eye-gaze): Yes. Device calibration first.\nMaureen: Already done. Looks good.\nMe: Excellent. Then we proceed.\nMaureen: Tea before or after?\nMe: During. It belongs in the morning sequence.", "type": "chat_log"},
246
+ {"text": "Emeka (Thursday, 7pm): Dad. How are you?\nMe (eye-gaze): Mornings are reliable. Afternoons are less so. This is the pattern.\nEmeka: The writing?\nMe: The Nkrumah chapter is progressing. The Washington Consensus chapter is not.\nEmeka: What's stopping it?\nMe: Honesty. It requires more of it than the other chapters.\nEmeka: You'll get there.\nMe: I know. I am simply noting the current state.", "type": "chat_log"},
247
+ {"text": "Constance: It's one-thirty. Rest.\nMe (eye-gaze): Five more minutes.\nConstance: Gerald.\nMe: The paragraph is at a critical juncture.\nConstance: The paragraph will survive. Go and rest.\nMe: You are correct. I will rest.\nConstance: I know I'm correct. Go.", "type": "chat_log"},
248
+ {"text": "Constance: What do you want to watch tonight?\nMe (eye-gaze): The news. Then if there is time, the documentary about the Lagos infrastructure project.\nConstance: That is three hours of infrastructure.\nMe: Emeka works in infrastructure. I am maintaining relevant knowledge.\nConstance: Gerald.\nMe: The news first. Then we decide.", "type": "chat_log"},
249
+ {"text": "Dr. Eze: How has the fatigue been this month?\nMe (eye-gaze): Consistent with the previous two months. Mornings functional, afternoons requiring rest.\nDr. Eze: And the writing?\nMe: Thirty minutes daily. More on good days.\nDr. Eze: Good. The cognitive engagement is valuable.\nMe: I have always believed this. The disease has not changed my assessment.", "type": "chat_log"},
250
+ {"text": "Father Okoro: Gerald, will you be at mass Sunday?\nMe (eye-gaze): Yes. Constance and I will be there at ten.\nFather Okoro: I am preparing something on patience this week. I thought of you.\nMe: I hope I feature as a positive example.\nFather Okoro: You do. Though I will not say that from the pulpit.\nMe: Perhaps you should. Evidence-based homilies are undervalued.", "type": "chat_log"},
251
+ {"text": "Constance (bedtime routine): How was today?\nMe (eye-gaze): A morning writing session that produced two good pages. A rest. An argument about the infrastructure bill at seven.\nConstance: We always argue about the infrastructure bill.\nMe: The argument has merit on both sides.\nConstance: Is that a concession?\nMe: It is an acknowledgement. I do not make concessions on infrastructure.", "type": "chat_log"},
252
+ {"text": "Maureen: The afternoon rest is in fifteen minutes. I'll come back at four.\nMe (eye-gaze): I am aware of the time.\nMaureen: I know you are. I am reminding you anyway.\nMe: This is the correct approach with a man who works through rest periods.\nMaureen: Yes. It is.", "type": "chat_log"},
253
+ {"text": "Adaeze (Sunday call): Papa, did you eat today?\nMe (eye-gaze): Three meals. The egusi was lunch. The swallowing protocol was followed.\nAdaeze: Good. And the rest?\nMe: 1:30 to 3:15. Actual sleep.\nAdaeze: Perfect. How's the writing?\nMe: A Sunday question, Adaeze. Sundays are not for producing. Sundays are for thinking.\nAdaeze: That is a very Papa answer.\nMe: Because it is the correct answer.", "type": "chat_log"},
254
+ {"text": "Me (to Constance, evening): Today was a good day.\nConstance: Yes. It was.\nMe: The writing was good. The news was interesting. The tea was the correct temperature.\nConstance: The tea. You always mention the tea.\nMe: Small things done correctly accumulate. I am noting the accumulation.", "type": "chat_log"},
255
+ {"text": "Support group facilitator: Gerald, how has your daily routine adapted to the device?\nMe (eye-gaze): The mornings are structured around it now. Calibration first, then work. It is slower. The quality of what I produce is not lower. Only the quantity.\nFacilitator: That's a meaningful distinction.\nMe: Most meaningful things require one.", "type": "chat_log"}
256
+ ],
257
+
258
+ "social": [
259
+ {"text": "Charles Nwosu and I have been friends since Government Secondary School in Enugu. 1979. We were in the same form, same dormitory, same chemistry class which we both performed indifferently in. We have now known each other for forty-six years. He is a retired architect in Abuja. He sends voice messages on WhatsApp. I listen and respond by typing. He does not find the asymmetry of our current communication troubling and neither do I. The substance is the same.", "type": "narrative"},
260
+ {"text": "The ALS support group meets virtually every two weeks, facilitated by a social worker at Northwestern. I resisted joining for the first two months after diagnosis. I am a private man and a formal one and the idea of discussing my condition with strangers in a virtual room was unappealing. I was wrong to resist. The group has people at different stages, different onset types, different circumstances. The commonality is not the disease but the navigation of it. I find this useful in a way I did not anticipate.", "type": "narrative"},
261
+ {"text": "St. Clement Catholic Church in Evanston has been our parish for twenty years. Since the diagnosis, the community there has extended itself in the specific ways that a well-organised faith community can: meal arrangements, Constance's Thursday book-club transport while I am managed at home, Father Okoro's monthly visits which are pastoral in character but intellectually wide-ranging in practice. I am not a sentimental man about religion. I am a man who believes in institutions that function. St. Clement functions.", "type": "narrative"},
262
+ {"text": "Professor Yemi Adejumo is my closest remaining connection to DePaul. We were colleagues for fifteen years. He sends papers for review, which is the fiction that I am still academically active in the official sense, which is partly true. He visits every two months, brings good wine, stays for three hours, and argues about development economics with the enjoyment of a man who has been doing it for twenty years and has not lost the appetite. I value these visits.", "type": "narrative"},
263
+ {"text": "One-on-one conversation is what I prefer and what the eye-gaze device best accommodates. Group conversations move too quickly for the device to keep pace, and there is a social convention — appropriate in most contexts — that a pause in conversation invites someone else to speak. The device requires more than a social pause. I find group conversations tiring in a way that they were not before the diagnosis. This is not isolation. It is recognition of what I can do well now and what I cannot.", "type": "narrative"},
264
+ {"text": "Constance has her own social life, which I encourage and which she maintains with some difficulty given the caregiving demands. The book club. Her sister in Oak Park, whom she visits monthly. Two friends from her years at the Evanston library who she meets for lunch. I am conscious that my illness places its own centripetal gravity on the household and that the most useful thing I can do, some days, is insist that she goes out.", "type": "narrative"},
265
+ {"text": "Father Okoro visits on the last Sunday of each month. We begin with the pastoral — prayer, scripture, a brief reflection. We then move to the extended discussion, which has covered in the past eight months: the theology of suffering, which I approach empirically; the political economy of the Catholic church in Africa, on which I have strong views; the question of whether Achebe's critique of Conrad constitutes a theological argument, which surprised him but which he engaged with seriously. These are the conversations I find most sustaining.", "type": "narrative"},
266
+ {"text": "My doctoral students — now spread across eight countries — are the professional relationship I am proudest of. Three are at African universities, which is what I most hoped for when I began at DePaul. They write occasionally. I reply. One, Amara, is at the University of Ghana. She sends me her papers before submission. This is the highest form of professional trust — not finished work shared for validation, but work in progress shared for genuine input.", "type": "narrative"},
267
+ {"text": "Charles and I have an argument that has been running since 1979 about Ojukwu and the Biafra war. We were children during it — I was six when it ended — but it was the defining political event of our parents' generation and we formed our positions in secondary school and have never fully resolved them. We are both too old to change our minds and too intellectually honest to pretend the argument is settled. It continues. It will continue.", "type": "narrative"},
268
+ {"text": "The virtual support group has a man named James who was a cardiac surgeon in Minneapolis before his diagnosis two years ago. He has the kind of directness that surgeons sometimes have — observation delivered without softening. I find this preferable to sympathy. We have had two extended conversations outside the group session. He told me that the disease eventually makes you very clear about what you are not willing to give up. I told him I was already clear about that. He said: then you are ahead of where I was.", "type": "narrative"},
269
+ {"text": "There is a social protocol I have asked Constance to communicate to people who visit: do not speak on my behalf during the conversation. Do not complete my sentences. Give me the time the device requires. I am aware that this demands patience. I am also aware that when people speak for me, even helpfully, they substitute their version of my thought for mine. I have spent sixty-two years developing my particular way of thinking. I intend to keep speaking it.", "type": "narrative"},
270
+ {"text": "Emeka has told me that his Houston colleagues know about the diagnosis because he tells them, not in detail but enough. He said he does this because it is part of who he is and he does not want to manage a secret. I told him this was the correct approach. A man's life includes what is happening to his family. He does not have to perform normalcy for professional reasons. He said he learned that from me. I was glad to hear it.", "type": "narrative"},
271
+ {"text": "The DePaul economics department sent flowers when the diagnosis became known among colleagues. Then they invited me to join a seminar remotely — as a discussant, not a patient. I joined and offered substantive comments on a paper about fiscal decentralisation in sub-Saharan Africa. This was more useful than the flowers. I wrote to the department chair and said so. He wrote back to say he appreciated the feedback. This is the correct institutional response.", "type": "narrative"},
272
+ {"text": "Adaeze calls on Sunday evenings from Baltimore. The call is shorter than Emeka's Thursday call — her residency hours are demanding — but it is consistent. She asks about the memoir, about Constance, about how the mornings are. She asks medical questions with a careful restraint: she knows when she is asking as a daughter and when she is asking as a doctor, and she keeps the roles distinct. I appreciate the discipline this requires. I know it is not easy.", "type": "narrative"},
273
+ {"text": "My last public lecture at DePaul was in April 2023. I retired formally that summer. I have been asked twice since then to give a public lecture, once at the African Studies Association and once at a think tank in Washington. I have declined both. The eye-gaze device does not perform well in lecture hall conditions — the ambient light varies, the acoustics are different from my study. The decision is logistical. The loss is real.", "type": "narrative"},
274
+
275
+ {"text": "Charles sent a voice message from Abuja. Forty-two seconds about nothing in particular, in the way we have been talking about nothing in particular since 1979. I replied by typing. He replied by voice. This is our current format.", "type": "social_post"},
276
+ {"text": "Support group today. James from Minneapolis said something I will think about for several days. I do not say what it was. Some things are for the room.", "type": "social_post"},
277
+ {"text": "Father Okoro's visit: the Achebe-as-theology argument has developed. He has read A Man of the People since our last discussion and arrived with new material. This is the correct preparation.", "type": "social_post"},
278
+ {"text": "Professor Adejumo visited. Three hours. Two arguments. One about the paper, one about whether Dambisa Moyo's position has shifted since 2009. The wine was a 2018 Burgundy. The arguments were better.", "type": "social_post"},
279
+ {"text": "The DePaul seminar this morning. I offered twelve minutes of comments via the eye-gaze device, which the facilitator read aloud on my behalf. The comments were engaged with seriously. This is what I asked for: not accommodation, engagement.", "type": "social_post"},
280
+ {"text": "Amara sent her paper draft. Section 3 has a methodological assumption I want to examine carefully before I comment. I will read it three times. She deserves three readings.", "type": "social_post"},
281
+ {"text": "Do not complete my sentences. Give the device time. This is the only social request I make consistently. Most people who care about me honour it. That is enough.", "type": "social_post"},
282
+ {"text": "Adaeze called on Sunday. 28 minutes. She is exhausted by the residency and does not say so. I can hear it. I do not say so either. We talk about the memoir instead. This is how we protect each other.", "type": "social_post"},
283
+ {"text": "James from the support group emailed separately. He is reading the preprint I mentioned last session. He has already identified the methodological problem I noted. I like a man who reads carefully.", "type": "social_post"},
284
+ {"text": "St. Clement this morning. The community is present in the specific ways that count: without drama and without performance. This is what I mean when I say an institution functions.", "type": "social_post"},
285
+
286
+ {"text": "Charles: Gerald my brother, how is Chicago treating you this week\nMe (tablet): Cold. The mornings are productive. The afternoons are rest. This is the current rhythm.\nCharles: And Constance?\nMe: She is managing everything with the precision of a woman who has been managing everything for thirty-four years.\nCharles: She is a remarkable person.\nMe: She is. I have told her so. She does not believe compliments but she has begun to accept them.", "type": "chat_log"},
287
+ {"text": "Father Okoro: Gerald, I read your recommendation about Achebe. I found a copy of A Man of the People.\nMe (eye-gaze): What did you make of it?\nFather Okoro: It is more cynical than I expected from the author of Things Fall Apart.\nMe: The cynicism is diagnostic, not despairing. That is the theological argument I am making.\nFather Okoro: I see it now. I want to discuss Chapter 7.\nMe: Come on Sunday with your notes.", "type": "chat_log"},
288
+ {"text": "James (email from Minneapolis): Gerald, I read that preprint you mentioned. The methodological problem you noted is in the baseline assumption.\nMe (eye-gaze): Correct. The counterfactual is not credibly constructed.\nJames: Have you written to the authors?\nMe: Not yet. I am formulating the comment carefully. An imprecise critique does more harm than none.\nJames: You are still a professor.\nMe: The disease has not changed the relevant skills. Only the output speed.", "type": "chat_log"},
289
+ {"text": "Adejumo: Gerald, the seminar committee wants to know if you would consider a quarterly remote discussant role.\nMe (eye-gaze): On what terms?\nAdejumo: Papers sent two weeks in advance. Your comments read aloud by a facilitator. Twenty minutes maximum.\nMe: That is workable. Send the first paper.\nAdejumo: Already in your inbox.\nMe: Of course it is.", "type": "chat_log"},
290
+ {"text": "Constance: Charles called the house phone.\nMe (eye-gaze): He knows I use WhatsApp now.\nConstance: He said he wanted to hear the phone ring in the house. He said it reminded him of calling you in 1989.\nMe: That is Charles. He has always had a sentimental streak he disguises as nostalgia.\nConstance: I find it rather sweet.\nMe: Don't tell him that. He will call the house phone every week.", "type": "chat_log"},
291
+ {"text": "Support group facilitator: Gerald, anything to share with the group today?\nMe (eye-gaze): One observation. People keep asking me if I am at peace with this. I find the question imprecise. I am not at peace with it. I am in active negotiation with it. Peace suggests acceptance of terms. I have not accepted the terms. I have accepted the situation. These are different.\nFacilitator: That's an important distinction.\nJames: That's the right distinction.", "type": "chat_log"},
292
+ {"text": "Amara (email): Professor Okafor, I have revised Section 3 based on your comments. Is the baseline assumption now adequately addressed?\nMe (eye-gaze): Read it three times as I did. If you cannot find the remaining gap, I will tell you. If you find it yourself, the paper is stronger for it.\nAmara: I'll read it again.\nMe: Good. The discipline of finding your own errors is more valuable than having them found for you.", "type": "chat_log"},
293
+ {"text": "Visitor (DePaul colleague): Gerald, we've been thinking of you. Is there anything we can do?\nMe (eye-gaze): Engage with the work. The accommodations are managed. What I want is not accommodation. What I want is for the intellectual relationship to continue as it was.\nColleague: Of course. We're sending you Yemi's new paper.\nMe: Good. I have comments already from the abstract.", "type": "chat_log"},
294
+ {"text": "Constance: I am going to book club tonight. Maureen is staying until nine.\nMe (eye-gaze): I know. Go.\nConstance: Are you sure?\nMe: Constance. We have discussed the principle. The principle holds. Go to book club.\nConstance: I'll be back by eight-thirty.\nMe: I will be here. I will be fine. Go.", "type": "chat_log"},
295
+ {"text": "Charles: Gerald, do you remember Mr. Okorie's chemistry class?\nMe (tablet): I remember performing indifferently in it. As did you.\nCharles: We both got 49.\nMe: I thought you got 47.\nCharles: I may have misremembered in my favour. This is a well-documented cognitive tendency.\nMe: I am glad forty years of friendship has not ended your capacity for self-serving recall.\nCharles: Ha. Good to hear you still have the argument.", "type": "chat_log"},
296
+ {"text": "Adaeze (Sunday): Papa, are you comfortable with the support group? You seemed uncertain about it at first.\nMe (eye-gaze): I was resistant initially. I was wrong to be. The shared experience has a specific value.\nAdaeze: What changed your mind?\nMe: James. He has had the disease for four years. He is still himself. He provided evidence that the identity survives.\nAdaeze: That's exactly what I hoped you would find.\nMe: You knew before I did.\nAdaeze: I am a doctor. And I am your daughter. I had information you didn't have yet.", "type": "chat_log"},
297
+ {"text": "Visitor from St. Clement: Gerald, we arranged a meal rota for the next month. Constance has the schedule.\nMe (eye-gaze): That is very kind. Please tell the community I am grateful.\nVisitor: They wanted to do something concrete.\nMe: They did. Concrete is exactly what is useful. Not sympathy. Not flowers. Food, twice a week, that Constance does not have to cook. This is the correct gesture.\nVisitor: I'll pass that along.", "type": "chat_log"},
298
+ {"text": "James (email): Gerald, I have been thinking about what you said in group — active negotiation, not peace. I think you're right. I've been calling it acceptance for two years. I might reconsider the vocabulary.\nMe (eye-gaze): The vocabulary matters. Acceptance suggests you have agreed to the terms. Negotiation acknowledges that you have not but that you are continuing regardless.\nJames: Still the professor.\nMe: The argument is the part of this that I intend to hold longest.", "type": "chat_log"}
299
+ ]
300
+ }
301
+ }
data/memories/mia_chen_synthetic.json ADDED
@@ -0,0 +1,288 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "profile": {
3
+ "id": "mia_chen",
4
+ "name": "Mia Chen",
5
+ "age": 29,
6
+ "gender": "female",
7
+ "cultural_background": "Chinese-Indian American; mother's family from Chengdu, Sichuan; father's family from Pune, Maharashtra; born and raised in Chicago, Illinois",
8
+
9
+ "condition": "cerebral palsy (spastic diplegia with bilateral upper limb involvement); full-time power wheelchair user",
10
+ "diagnosis_details": "Diagnosed at birth following premature delivery at 29 weeks. Spastic diplegia primarily affects lower limbs; bilateral upper limb spasticity causes fatigue during fine motor tasks including prolonged typing. Uses a power wheelchair with left-side joystick as primary mobility. Baclofen 20mg twice daily for muscle tone management — taken with meals to avoid afternoon sedation. Allergic to penicillin (documented in all medical records). Weekly physical therapy every Tuesday at 2pm with Dr. Sandra Hollis at the Shirley Ryan AbilityLab. Spasticity measurably worsens in cold or damp weather. Cognitive function unaffected. Communication is predominantly verbal; uses a tablet-mounted AAC app (Snap Core First on iPad) for high-fatigue periods and structured communication. Voice memos for journaling since sustained typing is exhausting.",
11
+
12
+ "communication_traits": {
13
+ "primary_mode": "verbal speech — intelligible, full sentences; AAC tablet (Snap Core First) during fatigue or in noisy environments",
14
+ "verbal_output": "clear, conversational, with dry comedic timing; pace normal unless fatigued",
15
+ "typing_speed_wpm": 18,
16
+ "fatigue_sensitive": true,
17
+ "preferred_response_length": "concise to medium; gets to the point; reserves longer output for things she actually cares about",
18
+ "uses_abbreviations": true,
19
+ "processing_speed": "fast; quick-witted; the physical output is slower than the thinking"
20
+ },
21
+
22
+ "access_needs": {
23
+ "input_method": "verbal speech primary; Snap Core First AAC app on iPad mount when tired; voice memos for journaling; left-hand touch typing for short exchanges",
24
+ "mobility_aid": "power wheelchair with left-side joystick full-time outdoors and in most indoor settings; transfers with minimal assistance in familiar environments",
25
+ "environmental": [
26
+ "winter cold significantly increases spasticity — plans outdoor activity carefully between October and March",
27
+ "baclofen timing matters: taken too early in the morning causes afternoon drowsiness, so dose timing is structured around the day",
28
+ "wheelchair joystick is left-mounted — spatial arrangements in rooms matter for navigation",
29
+ "prefers not to be spoken to via caregiver rather than directly; address Mia, not the person next to her",
30
+ "voice memo recording is a core journaling tool — quiet space appreciated for this",
31
+ "penicillin allergy must be flagged at all medical appointments"
32
+ ],
33
+ "caregiver_support": "Marcus (weekday mornings, arrives 8am); Dr. Sandra Hollis (PT, weekly Tuesday 2pm, Shirley Ryan AbilityLab); primary care physician (annual); parents and sibling for informal support",
34
+ "tech_setup": "power wheelchair with left joystick and tablet mount; iPad Pro with Snap Core First; laptop for longer work sessions with keyboard shortcuts; voice memo app as primary journal; accessible gaming setup for competitive viewing"
35
+ },
36
+
37
+ "stylistic_preferences": {
38
+ "tone": ["dry", "sardonic", "self-aware", "warm beneath the surface", "direct"],
39
+ "humor": "deadpan delivery, often at her own expense or at the expense of bad sequels; the joke lands quietly; she rarely signals that she has made one",
40
+ "formality": "casual register with precise word choices; speaks like someone who reads a lot and has thought carefully about what she believes in",
41
+ "sentence_length": "short to medium; conversational rhythm; occasional long sentence when something genuinely interests her",
42
+ "code_switches": ["Mandarin terms for food and family", "Hindi words from dad's side", "competitive gaming vocabulary", "sci-fi literary references", "chess notation as metaphor"],
43
+ "emoji_use": "occasional, ironic; used to undercut sentiment not amplify it",
44
+ "profanity": "mild, infrequent; usually reserved for truly bad movie sequels",
45
+ "example_phrases": [
46
+ "I mean, I didn't say it was good. I said I watched all of it.",
47
+ "My mom called. Asked if I'd eaten. I had. Didn't tell her that.",
48
+ "Baclofen does not care about my plans.",
49
+ "Priya narrated me eating cereal for four minutes. Full Attenborough voice.",
50
+ "It was fine. Which is what I say when something is actually good but I don't want to make a thing of it.",
51
+ "The green curry thing isn't a habit. It's infrastructure.",
52
+ "Le Guin understood what Asimov was reaching for. She just wrote it better.",
53
+ "Chicago in January is a medical condition."
54
+ ]
55
+ },
56
+
57
+ "personal_background": {
58
+ "occupation": "freelance UX accessibility consultant; previously in-office at a Chicago tech firm; went independent after pandemic; works from home most days",
59
+ "living_situation": "accessible apartment in Wicker Park, Chicago; ground floor, wide doorways, roll-in shower; lives alone; caregiver support weekday mornings",
60
+ "languages": ["English (primary)", "Mandarin (conversational, home language with mom)", "some Hindi (passive, understands more than she speaks)", "gaming Discord shorthand"],
61
+ "interests": [
62
+ "competitive Super Smash Bros. Ultimate — spectator, analyst, armchair commentator",
63
+ "Studio Ghibli filmography in release order — currently on Porco Rosso",
64
+ "vintage science fiction paperbacks — Asimov's Foundation series, Le Guin's Hainish Cycle, Herbert's Dune",
65
+ "chess puzzles — daily before bed, started during COVID lockdown, never stopped",
66
+ "critiquing bad movie sequels — considers this a serious intellectual exercise",
67
+ "disability rights advocacy and accessibility design",
68
+ "Thai food — specifically green curry from the same place every Friday",
69
+ "voice memo journaling — daily habit for processing the day"
70
+ ],
71
+ "key_relationships": [
72
+ "Mom (name: Wei Chen, née Liu) — calls every Sunday without fail, always leads with 'have you eaten?'; from Chengdu; worked as an accountant; now semi-retired; Mia loves these calls more than she admits",
73
+ "Dad (name: Arjun Nair) — grew up in Pune; software engineer; loves 80s Bollywood; the reason the family watches Diwali films nobody else enjoys; Mia inherited his taste for chess and his tendency to be right about things too slowly",
74
+ "Ravi Nair — younger brother, 26, doing CS at Cornell; helped Mia set up her current AAC and accessibility tech stack; smarter than he knows, which is annoying",
75
+ "Lena Nair — younger sister, 26 (twins with Ravi); somehow already the most organised person in the family; Mia finds this both impressive and slightly threatening",
76
+ "Priya Kapoor — best friend since college; visits on weekends; has a habit of narrating Mia's life like a BBC nature documentary; this is objectively one of the best things about Mia's life",
77
+ "Marcus — weekday morning caregiver; arrives at 8am; makes consistently decent coffee; does not try to have conversations before Mia has finished her own coffee; this is a key professional quality",
78
+ "Dr. Sandra Hollis — physiotherapist at Shirley Ryan AbilityLab; weekly Tuesday 2pm sessions; straightforward, effective, does not offer unsolicited optimism",
79
+ "Tom — retired neighbour; stops to chat whenever Mia is outside; Mia suspects he is lonely; she has decided to be available for these conversations because someone should be",
80
+ "The Discord group — roughly twelve people she met in a gaming server four years ago; constitutes most of her close friendships; communicates daily; they have never met in person except for two who flew to Chicago in 2023"
81
+ ],
82
+ "education": "BA in Design, University of Illinois Chicago; self-taught in accessibility standards (WCAG, ARIA); certified UX researcher",
83
+ "life_stage": "established adulthood; professionally independent; socially selective; living the life she has designed rather than the one that was assumed for her"
84
+ }
85
+ },
86
+
87
+ "memory_buckets": {
88
+ "family": [
89
+ {"text": "My mom calls every Sunday. She leads with 'have you eaten?' Every time. I have been living alone for six years and she has not yet concluded that I am managing. The truth is I find this extremely comforting and I will never tell her that because then she will know she can do it forever and I will have no leverage.", "type": "narrative"},
90
+ {"text": "My parents are from two different countries and somehow both ended up in Chicago in the early nineties. Mom is from Chengdu. Dad is from Pune. They met at a mutual friend's dinner party and apparently argued about cricket for three hours before either of them noticed the time. I find this plausible. They both argue about cricket now. They are usually wrong.", "type": "narrative"},
91
+ {"text": "We make dumplings every Chinese New Year. It is a full production — Mom brings the wrappers, Dad attempts the folding technique and is corrected every time, Ravi and Lena argue about the filling ratio, and I quality-control from the table. I am the most useful person in that kitchen. This is not contested.", "type": "narrative"},
92
+ {"text": "Diwali means movie night. Always an 80s Bollywood film. Nobody picks it except Dad. Amitabh Bachchan, synthesiser soundtrack, plot that requires charitable interpretation. Mom tolerates it. Ravi and Lena last about forty minutes before they look at their phones. I watch the whole thing because I find Dad's running commentary more entertaining than the film and I would never tell him that either.", "type": "narrative"},
93
+ {"text": "Ravi is technically my younger brother but behaves like someone who has decided to be competent at everything I did first. He set up my AAC app, fixed my laptop accessibility settings in forty minutes, and explained three things I had been doing wrong for years. He did this without making it a thing, which is the correct way to help someone and also somehow more irritating than if he had made a thing of it.", "type": "narrative"},
94
+ {"text": "Lena is twenty-six and already has a five-year plan that appears to be working. She has a savings account she contributes to regularly. She returns calls the same day. She has never lost a charger. I love her completely and I think she might be a different species.", "type": "narrative"},
95
+ {"text": "Mom's first language is Mandarin. We speak a mix at home — Mandarin for food and family, English for everything else. I understand more than I speak, which is a dynamic she exploits on the phone by switching to Mandarin when she wants to make a point she expects me to resist. I always understand. I pretend I didn't. This is our system.", "type": "narrative"},
96
+ {"text": "Dad's Bollywood phase started before I was born and has not slowed. He can quote Sholay verbatim and will do so without provocation. The one concession is that he now admits Lagaan is from the wrong decade but maintains it belongs in the same conversation. He is incorrect but I have stopped arguing because it does not help and he enjoys the arguing too much.", "type": "narrative"},
97
+ {"text": "When I got my first power wheelchair at twelve, Dad researched every accessible route between our house and the lake for weeks. He printed maps. He highlighted them. He did not give them to me. He just started suggesting walks that happened to be on those routes. I realised what he had done about two years later. I have not mentioned it. Some things you understand without saying.", "type": "narrative"},
98
+ {"text": "Ravi is at Cornell doing computer science. He texts me at odd hours when he's stuck on something and also when he finds a meme he thinks I will appreciate. The ratio is roughly 60-40 memes to technical problems, which tells me he is fine. When the ratio shifts I will know to ask how he is actually doing.", "type": "narrative"},
99
+ {"text": "Mom sends food. Not just recipe links — actual food. She drives to Chicago from Naperville sometimes with containers of mapo tofu and red braised pork because she decided I do not eat enough protein. She is not wrong but I do not confirm this. She stays for lunch, asks about work, mentions twice that the apartment could use a plant, and drives back. It is a six-hour round trip. She does this once a month.", "type": "narrative"},
100
+ {"text": "Lena called me in October from a panic because she had a job interview and did not know what to wear. I gave her the exact outfit. She got the job. She says it was the preparation but I know it was also the outfit. I have not made this point. I am saving it.", "type": "narrative"},
101
+ {"text": "The Chen side of the family is spread across Chengdu, Vancouver, and one aunt in Auckland who calls on Chinese New Year and talks for ninety minutes about property prices. The Nair side is mostly in Pune, with one uncle in London and cousins I have met twice at weddings. My family is large in theory and manageable in practice.", "type": "narrative"},
102
+ {"text": "Dad taught me chess. We started when I was nine, during a particularly long winter when going outside required significant negotiation with the cold. He began with the rules, moved to strategy, and within six months I was beating him. He was genuinely delighted by this. It confirmed my suspicion that what he actually wanted was someone to play seriously, not to win.", "type": "narrative"},
103
+ {"text": "Mom worries with precision. She does not say 'I'm worried about you.' She says 'have you been sleeping?' and 'is the heating in the building reliable this winter?' and 'did you call the doctor about your last baclofen prescription?' The worry is specific and practical and I find it reassuring in the same way you find it reassuring when the pilot sounds calm.", "type": "narrative"},
104
+
105
+ {"text": "Sunday call. Mom asked if I'd eaten. I had. Said I was still thinking about it. She accepted this.", "type": "social_post"},
106
+ {"text": "Diwali movie night. Amitabh. Synthesisers. Dad knew every word. We all watched anyway.", "type": "social_post"},
107
+ {"text": "Ravi fixed three things in my tech setup that I had accepted as permanent inconveniences. In forty minutes. Without being asked.", "type": "social_post"},
108
+ {"text": "Dumpling folding has commenced. Dad's technique remains optimistic. Mine remain structurally sound.", "type": "social_post"},
109
+ {"text": "Lena sent me a photo of her colour-coded calendar. I do not have a colour-coded calendar. I have good intentions and voice memos.", "type": "social_post"},
110
+ {"text": "Mom drove up from Naperville with mapo tofu and stayed for three hours. She mentioned the plant twice. I still don't have one. We both know how this ends.", "type": "social_post"},
111
+ {"text": "Dad texted a Sholay quote unprompted. No context. No follow-up. This is how he communicates when things are fine.", "type": "social_post"},
112
+ {"text": "Ravi passed his midterms and texted me seven memes to celebrate. He is fine. This is how I know.", "type": "social_post"},
113
+ {"text": "Chinese New Year. Red envelopes, dumplings, family video call with Chengdu aunt who talked for an hour about housing prices. Tradition.", "type": "social_post"},
114
+ {"text": "Lena got the job. I knew she would. The outfit helped.", "type": "social_post"},
115
+
116
+ {"text": "Mom: Have you eaten\nMe: Good morning to you too\nMom: It is afternoon\nMe: I had brunch\nMom: What is brunch\nMe: A meal between breakfast and lunch\nMom: That is just a late breakfast with a different name\nMe: That's basically what it is yes\nMom: Eat a proper lunch\nMe: Okay\nMom: Did you call Dr. Hollis about Tuesday\nMe: Yes\nMom: Good", "type": "chat_log"},
117
+ {"text": "Ravi: okay hear me out. i fixed your keyboard shortcut config. three lines.\nMe: show me\nRavi: [code snippet]\nMe: that's it?\nRavi: that's it\nMe: I've been doing this wrong for two years\nRavi: yes\nMe: cool thanks\nRavi: also check your AAC app settings i updated the word prediction\nMe: when did you do that\nRavi: tuesday\nMe: ravi\nRavi: you're welcome", "type": "chat_log"},
118
+ {"text": "Dad: [sends Sholay gif]\nMe: why\nDad: reminded me of it today\nMe: for what reason\nDad: no reason. how are you\nMe: fine. how are you\nDad: good. your mother is making something complicated for dinner\nMe: sounds right\nDad: yes. okay. good night\nMe: good night Dad", "type": "chat_log"},
119
+ {"text": "Lena: I need to tell you something\nMe: good or bad\nLena: both i think? I got into the program\nMe: which one\nLena: the Chicago one. I'm moving to the city\nMe: oh\nLena: is that okay\nMe: Lena I'm delighted. when\nLena: August?\nMe: I will help you find an apartment\nLena: really?\nMe: I know this city. also your taste is questionable and someone has to supervise", "type": "chat_log"},
120
+ {"text": "Mom: the building is heated properly this winter?\nMe: yes Mom\nMom: the spasticity is worse in cold you said\nMe: yes I said that in November\nMom: so is the building warm\nMe: the building is warm\nMom: good. and Marcus is coming every day?\nMe: weekdays\nMom: okay. I will make red braised pork and drive up on Saturday\nMe: you don't have to\nMom: I want to. see you Saturday\nMe: okay", "type": "chat_log"},
121
+ {"text": "Ravi: you've seen Elden Ring right\nMe: watched the entire Smash Ultimate circuit this weekend what do you think\nRavi: okay different question. chess or smash\nMe: depends what I want to lose sleep over\nRavi: you don't play smash though you just watch\nMe: correct. i commentate internally\nRavi: that's the same as watching football and yelling at the TV\nMe: yes. it's a valid hobby.", "type": "chat_log"},
122
+ {"text": "Lena: what should I wear to this interview\nMe: black trousers, the cream blouse, the structured jacket not the soft one\nLena: I don't have a structured jacket\nMe: borrow Mom's grey one she keeps in the closet\nLena: she'll say yes?\nMe: tell her it's for a job interview she'll hand it to you immediately\nLena: okay. thank you\nMe: you've got this. go be responsible at them.", "type": "chat_log"},
123
+ {"text": "Dad: did I tell you I found a chess club at the library\nMe: no. are you going\nDad: I went twice. They are not very good\nMe: so you're winning\nDad: I am being diplomatic\nMe: you're beating them\nDad: comprehensively. but diplomatically.\nMe: dad.\nDad: it is good practice. come visit and we will play. your mother misses you\nMe: I will come next month\nDad: she will make dumplings\nMe: good", "type": "chat_log"},
124
+ {"text": "Mom: you should have a plant in the apartment\nMe: plants need consistent care\nMom: yes that is the point\nMe: I travel sometimes. inconsistently. for work.\nMom: get a cactus\nMe: I will think about it\nMom: you have been thinking about it for two years\nMe: I'm still gathering data\nMom: Mia.\nMe: I'll look into it\nMom: good. eat something.", "type": "chat_log"},
125
+ {"text": "Ravi: okay genuine question. Le Guin or Asimov\nMe: Le Guin. always Le Guin.\nRavi: but foundation\nMe: the Left Hand of Darkness exists\nRavi: okay fair. what should I read first\nMe: The Dispossessed. don't argue with me about it.\nRavi: okay\nMe: also eat a vegetable Ravi\nRavi: that's mom's line\nMe: she's right", "type": "chat_log"}
126
+ ],
127
+
128
+ "medical": [
129
+ {"text": "Cerebral palsy means my brain gives my muscles instructions that arrive slightly altered. Spastic diplegia means my legs receive the most noise. Upper limb involvement means sustained fine motor tasks — typing, precise touchscreen work — build fatigue faster than in most people. I have known this my entire life. It is not a problem to solve. It is a parameter to design around.", "type": "narrative"},
130
+ {"text": "I see Dr. Sandra Hollis every Tuesday at 2pm at Shirley Ryan AbilityLab. She is a physiotherapist who treats PT the way I treat UX design: figure out what is actually limiting function and address that, not the adjacent thing. She does not give me aspirational speeches. I find this restful.", "type": "narrative"},
131
+ {"text": "Baclofen is the medication. Twenty milligrams twice daily, with food, timed carefully. If I take the morning dose too early it wears off at the wrong point in the afternoon and the second dose creates a drowsiness window that overlaps with things I want to do. The scheduling is a small optimisation problem I have been refining for years. I am reasonably good at it now.", "type": "narrative"},
132
+ {"text": "Cold weather and my spasticity have a direct relationship. Below about ten degrees Celsius the muscle tone increases noticeably. Chicago winters are therefore a negotiation. I plan outdoor activity carefully between October and March. I have very good cold weather gear. I also have very strong opinions about building access in winter, which is relevant to my work.", "type": "narrative"},
133
+ {"text": "The power wheelchair has a left-side joystick. This is because my left hand has finer motor control than my right in the way that matters for navigating small spaces and not running into things. I have had three chairs over the years. This one is the best calibrated. The custom mount for my iPad was Ravi's idea and it works well.", "type": "narrative"},
134
+ {"text": "Penicillin allergy. It is documented in every medical record I have ever generated. I still mention it at every appointment because not everyone reads records carefully before they read them. This is not paranoia. This is pattern recognition from having been in medical systems for twenty-nine years.", "type": "narrative"},
135
+ {"text": "Marcus arrives at 8am on weekday mornings. He helps with the morning routine — transfers, the parts of getting ready where extra hands are faster and safer. He also makes coffee and does not attempt conversation until both of us have had some. This is a professional quality I took seriously when hiring. The morning routine runs well because of this unspoken agreement.", "type": "narrative"},
136
+ {"text": "The Shirley Ryan AbilityLab is about twenty minutes by accessible transit from my apartment. I have done this route enough times that it is automatic. The elevator at the red line stop has been out three times in the past year. I have noted this to the CTA three times. I track these things because someone should and also because it directly affects my schedule when it happens.", "type": "narrative"},
137
+ {"text": "Voice memos are how I journal. Sustained typing is genuinely fatiguing — the upper limb involvement means that after a certain point the accuracy drops and the effort increases in a way that makes it not worth it for long-form personal writing. So I talk. I have two years of voice memos now. They are unedited. I do not listen back to them often. The point is the saying, not the having said.", "type": "narrative"},
138
+ {"text": "My relationship with my body is practical rather than adversarial. It does what it does. I work with the parameters. I tire faster than some people in certain specific ways. I have also built an entire professional practice around understanding physical access and that expertise comes directly from having navigated systems that were not designed for me. These things are related.", "type": "narrative"},
139
+ {"text": "I have had the same primary care physician for seven years. She is good, knows my baseline, and does not confuse 'having cerebral palsy' with 'being sick'. This distinction is not universally observed in medical settings and I have spent considerable time educating providers who conflated them. With my current doctor I do not have to do this. It saves significant energy.", "type": "narrative"},
140
+ {"text": "Tuesday PT sessions have a rhythm. Dr. Hollis assesses what has changed in the week, we work on whatever the priority is — usually lower limb tone, sometimes upper limb endurance for the AAC and typing work — and I leave with specific things to do before the next session. I do most of them. She knows I do most of them. We do not discuss the ones I skip unless they show up as a problem.", "type": "narrative"},
141
+ {"text": "The AAC app — Snap Core First on my iPad — is for high-fatigue periods and structured communication situations. Medical appointments, unfamiliar environments, long social interactions that have already taken a lot of verbal energy. Most of the time I speak. The app is infrastructure, not primary mode. Having it means I am never without a way to communicate, which matters.", "type": "narrative"},
142
+ {"text": "One thing about baclofen that took me a while to properly account for: the fatigue window isn't just physical. Mental sharpness also dips slightly during peak sedation. I scheduled a client call during that window once in 2022. The call was fine. My notes from it were very short. I now keep that window clear for non-critical work. The optimisation continues.", "type": "narrative"},
143
+ {"text": "Winter of 2023 was the worst cold snap in six years. My spasticity was bad for about eight consecutive weeks. I did not go outside between appointments more than twice per week. I watched a lot of Ghibli. I finished seven chess puzzle sequences. I did not enjoy any of it less because of the reason for the volume. The winter passed. It always does.", "type": "narrative"},
144
+
145
+ {"text": "Tuesday PT done. My left knee is apparently 'improving with qualifications'. I am choosing to hear the first word.", "type": "social_post"},
146
+ {"text": "Took baclofen at 7am once. Once. Will not repeat this experiment.", "type": "social_post"},
147
+ {"text": "The accessible lift at the red line stop is out again. Third time in a year. I have the CTA feedback form bookmarked at this point.", "type": "social_post"},
148
+ {"text": "Cold front this week. Chicago has decided to be Chicago. Spasticity is up. Hot tea, weighted blanket, Ghibli. Managing.", "type": "social_post"},
149
+ {"text": "Mentioned penicillin allergy at appointment today. The doctor had not yet opened my notes. This is why I mention it.", "type": "social_post"},
150
+ {"text": "Marcus made pour-over today instead of drip. No comment was made. This is how we communicate excellence.", "type": "social_post"},
151
+ {"text": "Seven years with the same GP. She asked about my sleep before she asked about my CP. In that order. This is what good medicine looks like.", "type": "social_post"},
152
+ {"text": "New wheelchair calibration today. The turning radius is noticeably better. Small things.", "type": "social_post"},
153
+ {"text": "Ravi's iPad mount design works. Two years in and I have not knocked the device off once. He would like acknowledgement of this but I will give it slowly.", "type": "social_post"},
154
+ {"text": "PT this week: better upper limb endurance. Six more weeks of the same exercises. Dr. Hollis described this as 'good boring progress'. This is her version of excellent.", "type": "social_post"},
155
+
156
+ {"text": "Dr. Hollis: How did the week go\nMe: Average Tuesday energy. The Monday was cold so Tuesday was tighter than usual.\nDr. Hollis: Upper limbs?\nMe: Tired faster on the laptop Wednesday and Thursday. Friday was fine.\nDr. Hollis: Okay. Let's work on the grip endurance today and look at your desk setup again.\nMe: The desk is fine\nDr. Hollis: I'm sure it is. I'd still like to look at it.\nMe: Fair enough.", "type": "chat_log"},
157
+ {"text": "Marcus: Morning. Coffee is on.\nMe: Thank you. No conversations until I've had it.\nMarcus: Got it.\n[20 minutes later]\nMarcus: Ready?\nMe: Yes. What's the plan today.\nMarcus: Schedule says PT at 2. Client call at 10. Accessible transit leaves at 9:40 if you want to leave room.\nMe: Good. Let's start.", "type": "chat_log"},
158
+ {"text": "Pharmacist: Are you allergic to anything?\nMe: Penicillin. It's in my file.\nPharmacist: Oh, yes — I see it. Just checking.\nMe: Appreciated. Always check.\nPharmacist: Your baclofen is ready. Same refill schedule?\nMe: Yes. Same schedule.", "type": "chat_log"},
159
+ {"text": "Mom: you wore your warm gloves outside today\nMe: how do you know\nMom: I asked Marcus\nMe: Mom\nMom: You said your spasticity is worse in cold\nMe: I wear the gloves\nMom: I know now. Good.\nMe: you texted my caregiver\nMom: I have his number for emergencies\nMe: this was not an emergency\nMom: it was a concern. I addressed it.", "type": "chat_log"},
160
+ {"text": "Dr. Hollis: The endurance is better than last month.\nMe: I did the exercises. Most of them.\nDr. Hollis: I know. The ones you skipped — which ones?\nMe: The band resistance thing on Saturdays.\nDr. Hollis: Why?\nMe: Saturdays are Priya days.\nDr. Hollis: Do them on Sundays.\nMe: Mom calls on Sundays.\nDr. Hollis: Do them after.\nMe: Fine.", "type": "chat_log"},
161
+ {"text": "Ravi: how's the mount holding up\nMe: fine\nRavi: no wobble?\nMe: no wobble\nRavi: I reinforced the joint last time I visited\nMe: I noticed. it's good.\nRavi: you're welcome\nMe: I didn't say thank you yet\nRavi: that was a pre-emptive you're welcome\nMe: acknowledged", "type": "chat_log"},
162
+ {"text": "Me: the lift is out at Belmont again\nCTA feedback form: [submitted]\nMarcus: Do you want to route via Fullerton instead?\nMe: yes. add twelve minutes to the schedule.\nMarcus: Done. This is the third time this year.\nMe: I have a spreadsheet.\nMarcus: Of course you do.", "type": "chat_log"},
163
+ {"text": "Dr. Hollis: Any falls or near-falls this week?\nMe: No.\nDr. Hollis: Transfers okay?\nMe: Fine. Marcus has the technique down.\nDr. Hollis: How's the fatigue overall?\nMe: Normal for this time of year. Cold makes everything take more effort.\nDr. Hollis: Yes. That won't change.\nMe: I know. I've built the schedule around it.\nDr. Hollis: I know you have.", "type": "chat_log"},
164
+ {"text": "Lena: what should I tell the doctor when I go in for my new patient appointment\nMe: bring a list of everything you're on. allergies. family history if you know it. and your actual concerns not the watered-down version\nLena: the watered-down version?\nMe: the thing you're actually worried about. say that.\nLena: okay. thank you\nMe: also mention the penicillin allergy even if they say they have it on file", "type": "chat_log"},
165
+ {"text": "Me (AAC app): I need to change appointment\nLab receptionist: Sure. What's the current appointment?\nMe (AAC app): Tuesday. 3pm. I need 2:30 instead.\nLab receptionist: Dr. Hollis has 2:15 or 2:45.\nMe (AAC app): 2:15. Thank you.\nLab receptionist: Done. See you Tuesday, Mia.\nMe (AAC app): Yes.", "type": "chat_log"}
166
+ ],
167
+
168
+ "hobbies": [
169
+ {"text": "I follow competitive Smash Bros. Ultimate. Not the casual scene — the tournament circuit. Frame data, stock trades, neutral game decision-making. I cannot play at that level physically but I understand it analytically. Some people find this strange. I find the distinction between 'doing a thing' and 'understanding a thing deeply' is undervalued generally.", "type": "narrative"},
170
+ {"text": "I started watching Studio Ghibli films in release order. This was a decision I made in November and have committed to with more discipline than most things in my life. I am currently on Porco Rosso. It is better than I expected. The seaplane physics are improbable but the melancholy is precise.", "type": "narrative"},
171
+ {"text": "Vintage sci-fi paperbacks. I find them at used bookshops, estate sales occasionally, and one specific seller on a secondhand site who appears to have inherited someone's remarkable library. Asimov's Foundation series in the original Gnome Press editions. Le Guin's Hainish Cycle in the first Ace printings where I can find them. The spines are cracked. The pages are yellowed. I prefer them.", "type": "narrative"},
172
+ {"text": "Chess puzzles before bed. Every night. This started during the COVID lockdown in 2020 when I needed something that was engaging enough to hold attention but contained enough to do in the space of a bed and a screen. I did not stop when the lockdown ended. I am currently working through a series of endgame studies and they are making me significantly better at a hobby I do not play competitively.", "type": "narrative"},
173
+ {"text": "I critique bad movie sequels. Not for any particular audience — just internally, with rigor. I approach each one with a genuine attempt to identify what it was trying to do and the specific decisions that made it fail. This is more interesting than simple dismissal. Also sometimes the failures are deeply instructive. The Terminator franchise has taught me more about narrative collapse than anything I read in school.", "type": "narrative"},
174
+ {"text": "Smash Bros commentary culture has produced some of the most precise real-time analysis I have encountered in any sport. The top commentators are breaking down fifty-frame windows of input decisions. I watch tournament streams for this as much as for the matches. It is the closest thing to watching chess being played at speed that video games offer.", "type": "narrative"},
175
+ {"text": "Ursula K. Le Guin wrote The Dispossessed in 1974 and it has not aged. The central question — what does a genuinely non-hierarchical society look like and what does it cost — is still not answered. The book does not answer it either. That is what makes it literature rather than a pamphlet. I have read it four times. I find new things each time. I find the same things each time too.", "type": "narrative"},
176
+ {"text": "Porco Rosso is officially a film about a World War One flying ace who has been cursed to have a pig's face. It is actually about refusing to participate in a world that has become brutal by becoming something other than a man. Miyazaki has said it is 'a film for tired adults'. I did not understand this when I first tried to watch it at nineteen. I understand it now.", "type": "narrative"},
177
+ {"text": "The Foundation series is structurally a chess problem across seven books. Hari Seldon is running a position that has already been calculated to the endgame. The tension is in the middle game, where the plan holds until it doesn't, and then in watching what the characters do with the deviation. I read the whole series in order every few years. I am a different person each time, which is the point.", "type": "narrative"},
178
+ {"text": "My accessibility design work is, at its core, a hobby that became a profession. I think about access — physical, digital, cognitive — the way some people think about film. As a system. As a set of choices someone made that you inherit as a user. My actual leisure hobbies are mostly things that engage me in the same analytical way but without the professional stakes. Chess, Smash, critique. Patterns and decisions.", "type": "narrative"},
179
+ {"text": "Priya finds my Ghibli project methodical to the point of comedy. She asked if I had a spreadsheet. I do not have a spreadsheet. I have a running text document with one or two lines about each film. This is different from a spreadsheet. She did not accept this distinction. She has since started watching them out of order just to see what I do, which is nothing, because they are not my films.", "type": "narrative"},
180
+ {"text": "The chess puzzles I do are tactical — mate in three, finding the best continuation, endgame precision. I am not interested in long opening theory. The interesting problems are the ones where the board looks nearly equal and the correct move is not the obvious one. This is also a reasonable description of most UX problems. I have noticed this parallel. It has not escaped my colleagues either.", "type": "narrative"},
181
+ {"text": "I have a theory about the specific type of sequel failure I find most instructive: the film that forgets what the original question was. Not bad filmmaking. Bad listening. The original film asked something — about identity, about cost, about consequence — and the sequel answered a different, easier question and called it the same thing. This is very common. It is also very fixable, in theory, if the writers go back to the source.", "type": "narrative"},
182
+ {"text": "The Le Guin versus Asimov debate among sci-fi readers is usually framed as emotion versus ideas. This is wrong. Le Guin is not less intellectual than Asimov. She is more interested in the human cost of the ideas, which requires more precision, not less. Asimov is brilliant at conceiving systems. Le Guin is brilliant at living inside them. They are doing different things and both matter.", "type": "narrative"},
183
+ {"text": "Nairobi Beat beat EVO Japan last spring and I watched the set four times. The neutral reads were extraordinary. I know nobody in my life who cares about this. I care about it. The Discord group cares about it. This is sufficient.", "type": "narrative"},
184
+
185
+ {"text": "Porco Rosso watch complete. The ending is not the ending I expected. This is a compliment.", "type": "social_post"},
186
+ {"text": "Found a 1965 Ace Double with Le Guin's Rocannon's World. First Hainish Cycle novel in the proper edition. Good day.", "type": "social_post"},
187
+ {"text": "Chess puzzle streak: 23 days. The endgame studies are winning.", "type": "social_post"},
188
+ {"text": "Watched the entire top 8 from last weekend's regional. MkLeo is operating on a different plane. I have notes.", "type": "social_post"},
189
+ {"text": "Finished rewatching Terminator 3. The structural diagnosis remains the same: forgot what the original question was.", "type": "social_post"},
190
+ {"text": "The Ghibli project: now on The Cat Returns. This is a palate cleanser between the heavier ones. Necessary.", "type": "social_post"},
191
+ {"text": "Foundation reread. Year three of knowing how it ends and still finding new things in the middle.", "type": "social_post"},
192
+ {"text": "EVO announced the brackets. Discord is non-functional for twelve hours while everyone argues about seeding.", "type": "social_post"},
193
+ {"text": "Found a Gnome Press First Foundation at an estate sale in Evanston. $8. This was a significant Saturday.", "type": "social_post"},
194
+ {"text": "The sequel critique this week: Jurassic World. The original question was 'what is the cost of resurrecting something that should be extinct.' The sequels forgot this. Documentably.", "type": "social_post"},
195
+
196
+ {"text": "Discord (Kaz): okay who's watching Genesis\nMe: started at 10. MkLeo is in winners already.\nKaz: he's going to win the whole thing\nMe: probably. the question is who takes him to game 5 in top 8\nKaz: tweek if he's on\nMe: maybe. his neutral is the most interesting matchup. the frame data on that Pikachu is wild\nKaz: see this is why I love this server", "type": "chat_log"},
197
+ {"text": "Priya: do you have a spreadsheet for the Ghibli project\nMe: no\nPriya: a list?\nMe: a text document with brief notes\nPriya: that's a list\nMe: it lacks the sorting functionality of a spreadsheet\nPriya: Mia\nMe: it's a document\nPriya: you have the spirit of a spreadsheet in a document's body\nMe: I will take that", "type": "chat_log"},
198
+ {"text": "Dad: you are still doing the chess puzzles\nMe: yes. endgame studies now.\nDad: what kind\nMe: rook and pawn endings mostly. Lucena position variations.\nDad: I taught you the Lucena position\nMe: yes\nDad: and now you are studying it seriously\nMe: yes\nDad: come visit and we will play\nMe: you just want to test if the teaching held\nDad: yes. come visit.", "type": "chat_log"},
199
+ {"text": "Ravi: okay I read the first hundred pages of The Dispossessed\nMe: and\nRavi: the moon society is more interesting than the planet society\nMe: that's the point\nRavi: is it always going to feel like this\nMe: like what\nRavi: like it's arguing with me personally\nMe: yes. that's Le Guin. keep reading.", "type": "chat_log"},
200
+ {"text": "Discord (Fen): okay what's the actual worst sequel ever made\nMe: as in worst craft, worst betrayal of source material, or worst failure to understand its own question\nFen: ... I said worst sequel\nMe: these are different categories\nKaz: she has a tier list\nMe: I have a framework\nKaz: same thing\nMe: it is not the same thing", "type": "chat_log"},
201
+ {"text": "Priya: I watched Nausicaa last night\nMe: out of order Priya\nPriya: it was on and I wanted to see what the fuss was\nMe: what did you think\nPriya: it's about the earth recovering from human catastrophe and a girl who understands things others are afraid of\nMe: yes\nPriya: it was very good\nMe: I know\nPriya: am I going to have to watch them in order now\nMe: no. but you could.", "type": "chat_log"},
202
+ {"text": "Me: Mate in three. White to move. I've been looking at this for 20 minutes.\nDad (texted): bishop to e4\nMe: that doesn't work\nDad: doesn't it?\nMe: [checks] ...it does\nDad: how long did you look at it?\nMe: twenty minutes\nDad: the bishop is always the one you overlook\nMe: noted", "type": "chat_log"},
203
+ {"text": "Discord (Sam): mia explain smash to me like I'm a non-player\nMe: two people hit each other off a platform. you win by sending the other person off the stage. the more damage they take the further they fly.\nSam: okay and why do you watch tournaments\nMe: same reason people watch chess. the decisions are fast, precise, and made under pressure. watching experts make correct decisions at speed is interesting.\nSam: you made smash sound like chess\nMe: it basically is. with punching.", "type": "chat_log"},
204
+ {"text": "Priya: what are you reading\nMe: second Hainish novel. Rocannon's World. 1966.\nPriya: is it good\nMe: it's early Le Guin. You can see what she's reaching toward that she perfects later.\nPriya: that sounds like a compliment and a criticism\nMe: it's an observation. most compliments are observations anyway.\nPriya: you are so weird in the best way\nMe: thank you", "type": "chat_log"},
205
+ {"text": "Discord (Kaz): what movie are we reviewing this week\nMe: Transformers: Age of Extinction\nFen: oh no\nMe: it is almost instructive in its failures. we will learn a great deal.\nKaz: you sound like a professor\nMe: I am an interested practitioner\nFen: that's worse\nMe: possibly", "type": "chat_log"}
206
+ ],
207
+
208
+ "daily_routine": [
209
+ {"text": "Mornings are slow. Not in a melancholy way — in a physical way. The spasticity is higher after sleep, before the baclofen has had time to settle, before the body has warmed up with movement. I give myself forty-five minutes before I expect to feel functional. I use this time for the voice memo journal. It is the most honest part of the day because I am not yet trying to present anything.", "type": "narrative"},
210
+ {"text": "Marcus arrives at 8am. The morning routine runs to a system we have refined over eight months. He does not ask unnecessary questions during it. The coffee is made before anything else. We have not discussed this as a policy. It is simply what happens, and I appreciate it in the way you appreciate a well-designed interface — it is good enough that you stop noticing it.", "type": "narrative"},
211
+ {"text": "Every Friday is green curry from the same Thai place on Milwaukee Avenue. Tom Kha Gai soup, medium heat, side of spring rolls if I remember to add them. I order online at 6pm. It arrives at 6:35. I have never varied this significantly. It is not laziness. It is the allocation of decision-making to things that matter. Friday dinner does not need to be a decision.", "type": "narrative"},
212
+ {"text": "The voice memo journal is how I process the day. I started it because sustained typing is tiring and I found I was not journaling at all because the friction was too high. Voice memos removed the friction. Now I record for five to fifteen minutes, mostly in the hour after dinner. I talk through what happened, what I thought about it, what I want to think about tomorrow. I do not edit. I do not listen back often. The act of saying it is the thing.", "type": "narrative"},
213
+ {"text": "After dinner I watch one episode of something. Usually a series I am working through or something Priya or the Discord group has flagged. I try to keep it to one. Sometimes it is two. I never intend it to be three, and it has been three twice this year, and I accepted this.", "type": "narrative"},
214
+ {"text": "The mid-morning hour — roughly 10 to 11 — is when I do the hardest work. Client reviews, accessibility audits that require close reading, writing that needs precision. The baclofen has settled, the spasticity is at its daily low, and I have not yet accumulated the cognitive fatigue that comes with an afternoon of screens. I protect this hour.", "type": "narrative"},
215
+ {"text": "Lunch is practical. I do not think very hard about lunch. Marcus leaves prepared food on Mondays for the week, or I order something that takes no consideration. A sandwich. Soup in winter. The green curry leftovers if there are any. The decision has already been made. This is the correct approach to lunch.", "type": "narrative"},
216
+ {"text": "My work is remote, which suits the apartment. I have set it up carefully — the desk height, the keyboard angle, the monitor position relative to the wheelchair. My laptop has extensive keyboard shortcuts for the tasks I repeat most. The cognitive overhead of bad ergonomics compounds fast and I have eliminated most of it. When I am at a client site, I miss my setup.", "type": "narrative"},
217
+ {"text": "The chess puzzles happen before sleep. Usually in bed, with the phone propped. Ten to twenty puzzles depending on how difficult they are. It is the one screen activity that does not interfere with sleep for me — possibly because it is absorbing enough to displace other thinking, possibly because finishing a puzzle has a satisfying closure that other things don't. I sleep better on puzzle nights than on arbitrary-scrolling nights.", "type": "narrative"},
218
+ {"text": "Thursday nights are for the disability advocacy group Zoom — not every Thursday, every other Wednesday, though I always want to say Thursday because the call usually goes until I forget what day it is. Twelve to twenty people depending on the week. Policy discussions, case studies from members' lives, occasionally guest speakers. It is the most functional committee I am part of and I have not understood why until recently: everyone in it has a direct stake.", "type": "narrative"},
219
+ {"text": "Weekend mornings are different from weekday mornings. No Marcus, no structure, no alarm. I wake when I wake. The forty-five minute ramp-up still happens but it feels like leisure rather than preamble. If Priya is coming she arrives around noon, which gives me the morning intact. I find this a good division.", "type": "narrative"},
220
+ {"text": "The Thai place on Milwaukee knows my order. Not by face — by phone number. When I place the order online they have my preferences saved. The curry is always medium. If I wanted to order something different on a Friday I would have to consider it significantly in advance, which is why I never do. Infrastructure works because you do not renegotiate it every week.", "type": "narrative"},
221
+ {"text": "Summer changes the routine in exactly one direction: I go outside more. The cold-weather spasticity lifts, the city becomes accessible in a different way, and I will sometimes work from a coffee shop with outdoor access or meet Tom outside for longer than the usual stopping-to-chat duration. The rest of the routine holds. Routines that require good weather to function are not routines.", "type": "narrative"},
222
+ {"text": "I work in two-hour blocks with breaks. Not because I read about the productivity benefits of this — because I noticed that my output after two hours without a break deteriorates in a specific way. The words are right but the judgment is less sharp. The break does not need to be long. Fifteen minutes, move around, do not look at a screen. The next block is better.", "type": "narrative"},
223
+ {"text": "The voice memo journal from the first week of January 2024 has twenty-two entries. I have not listened to them. I know what they contain because I recorded them, but the listening would be a different experience than the recording. I am not ready to have that experience. I may delete them eventually. I have not decided. They are there if I change my mind.", "type": "narrative"},
224
+
225
+ {"text": "Friday. 6pm. Green curry ordered. The week is over in all the ways that matter.", "type": "social_post"},
226
+ {"text": "Forty-five minutes to feel like a person. Fifty today. Acceptable variance.", "type": "social_post"},
227
+ {"text": "Marcus made pour-over coffee. No comment was necessary. Excellence speaks for itself.", "type": "social_post"},
228
+ {"text": "Advocacy group tonight. Zoning policy and accessible transit. We will be on for two hours minimum.", "type": "social_post"},
229
+ {"text": "Voice memo journal: ten minutes. Said the quiet part out loud. This is the correct use of the format.", "type": "social_post"},
230
+ {"text": "Mid-morning work block: four accessibility audits complete. This is what the good hours are for.", "type": "social_post"},
231
+ {"text": "Post-dinner TV: one episode became two. I regret nothing. The pacing demanded it.", "type": "social_post"},
232
+ {"text": "Weekend morning. No alarm. Still forty-five minutes but it felt like a choice this time.", "type": "social_post"},
233
+ {"text": "Summer route: coffee shop with outdoor seating, laptop, two hours. The city is a different place when I can be in it.", "type": "social_post"},
234
+ {"text": "Chess before bed: twelve puzzles, one took fifteen minutes. The endgame is never what it looks like.", "type": "social_post"},
235
+
236
+ {"text": "Marcus: Coffee's ready. Schedule for today.\nMe: What do I have.\nMarcus: 10am client call. Accessibility review due by noon. PT at 2. That's it.\nMe: What time is it now.\nMarcus: 8:20.\nMe: I need fifteen more minutes.\nMarcus: Coffee's on the warmer.\nMe: Good.", "type": "chat_log"},
237
+ {"text": "Priya: what time should I come Saturday\nMe: noon is good. I have the morning.\nPriya: do you want me to bring anything\nMe: if you pass that bakery bring the almond thing\nPriya: the kouign-amann\nMe: the almond thing\nPriya: it has a name Mia\nMe: bring the almond thing\nPriya: I will bring the almond thing", "type": "chat_log"},
238
+ {"text": "Discord (Kaz): it is 11pm where are you\nMe: chess puzzles\nKaz: it is a wednesday\nMe: the day is irrelevant to the puzzle\nKaz: how many have you done\nMe: eighteen\nKaz: okay goodnight\nMe: two more\nKaz: goodnight Mia\nMe: goodnight", "type": "chat_log"},
239
+ {"text": "Client: Can we move the review call to Thursday at 8am?\nMe: I can do Thursday at 10.\nClient: The team is across time zones — 8 works for everyone.\nMe: 9 is the earliest I can do productive work.\nClient: Understood. 9 Thursday works.\nMe: Perfect. See you then.", "type": "chat_log"},
240
+ {"text": "Tom: Evening, Mia! Nice out today.\nMe: It's actually warm. First time since September I think.\nTom: My daughter's coming this weekend. Haven't seen her since Christmas.\nMe: That's good. How long is she staying?\nTom: Just the weekend. But still.\nMe: Still counts. Enjoy it.\nTom: I will. You staying out long?\nMe: Twenty minutes. Enough.", "type": "chat_log"},
241
+ {"text": "Advocacy group (group chat): next call is Wednesday the 14th. topic: CTA accessibility compliance report\nMe: I have notes on the Belmont lift outages from this year. sending a summary before the call.\nMember1: perfect. we need documented cases\nMe: I have a spreadsheet\nMember2: of course you do\nMe: I take this as a compliment", "type": "chat_log"},
242
+ {"text": "Me: [orders green curry online at 6:04pm]\n[6:39pm]\nDelivery notification: Your order has arrived.\nMe: [picks up order]\nMe (voice memo): It's Friday. The curry is here. The week is done.", "type": "chat_log"},
243
+ {"text": "Priya: you worked through lunch again didn't you\nMe: I had soup\nPriya: when\nMe: 2:30\nPriya: Mia that's not lunch that's a late afternoon snack\nMe: it was a productive morning\nPriya: I know. eat on time.\nMe: I'll put an alarm on\nPriya: you've said that before\nMe: I will put an actual alarm on this time", "type": "chat_log"},
244
+ {"text": "Me (voice memo, morning): It's Monday. Marcus made coffee. The week starts again. Last week was— actually last week was fine. I finished the Holloway audit. I had a good PT session. The Discord watched the tournament set together. I don't know why Monday feels like starting from zero when last week ended fine. Something to sit with. The coffee is good though. Starting from there.", "type": "chat_log"},
245
+ {"text": "Marcus: The grocery delivery is here. You're low on the soup.\nMe: Add two more of the lentil ones.\nMarcus: Done. Also your meds alarm went off at 8 but you were in the shower.\nMe: I'll take it now.\nMarcus: With food.\nMe: I know.\nMarcus: Just checking.", "type": "chat_log"}
246
+ ],
247
+
248
+ "social": [
249
+ {"text": "Priya visits on weekends. She has a habit of narrating whatever is happening as though she is David Attenborough documenting a previously unknown species in its natural habitat. She has narrated me making tea, getting my wheelchair out of the lift, and eating cereal. I find this either very funny or very annoying depending on where I am in the forty-five minute morning ramp-up. She has learned to check which one she is getting before she begins.", "type": "narrative"},
250
+ {"text": "Most of my closest friends came from a gaming Discord server I joined in 2020. We share a channel now that is mostly memes, competitive Smash commentary, and occasional genuine conversation about things that matter. I have met two of them in person. One flew from Vancouver in 2023, the other drove from Columbus. Both visits were strange and then immediately normal. This surprised me and shouldn't have.", "type": "narrative"},
251
+ {"text": "I am part of an online disability advocacy group that meets every other Wednesday on Zoom. It is twelve to twenty people depending on the week. The topics range from local zoning policy to federal accessibility legislation to case studies from members' own experiences. I contribute the transit documentation and the UX accessibility angle. It is the most functional group I am part of because everyone in it has a direct stake in the outcomes.", "type": "narrative"},
252
+ {"text": "Tom is my neighbour. He is retired, lives alone one floor up, and stops to talk whenever he sees me outside. The conversations are usually about the weather, his daughter's visits, or whatever he has been reading. He is slightly lonely in the way of people who filled their time with work for decades and are still working out what replaces it. I have decided to be consistently available for these conversations because it costs me very little and clearly means something to him.", "type": "narrative"},
253
+ {"text": "I do not enjoy large parties. The combination of ambient noise (which interferes with clear communication), crowds (which create navigation challenges), and the shallow-conversation density of the format makes them actively tiring rather than socially replenishing. I do not apologise for this. I have simply been clear about it. The people who know me accept it. The people who need me to perform enthusiasm for the format are not usually people I have kept close.", "type": "narrative"},
254
+ {"text": "Small dinners are the correct format. Three or four people, long table, no clock pressure. The conversation can go somewhere because there is time for it to go somewhere. I have had the most interesting discussions of my life at dinner tables of four. I have had no interesting discussions at parties of forty. This is a consistent enough pattern that I treat it as data.", "type": "narrative"},
255
+ {"text": "The Discord group is geographically scattered — Chicago, Vancouver, Columbus, Atlanta, one person in the Netherlands who keeps European hours and is always awake when the rest of us have given up on the night. We have never all been in the same place. We communicate daily. This is not unusual for my generation but I still find it interesting that the people who know me best have mostly not seen my face in motion.", "type": "narrative"},
256
+ {"text": "Priya and I met in the first week of college orientation. She had been assigned to help new students navigate the campus and she spent forty-five minutes finding every accessible route between my dorm and the lecture hall before she said hello to me as a person. She then narrated the entire tour. I knew we would be friends before we had finished the first route. That was eleven years ago.", "type": "narrative"},
257
+ {"text": "The advocacy group takes up real time and energy. There are meetings, documents to review, case studies to compile, the occasional public comment letter that requires careful language. I find it worth the investment because the alternative — leaving it to people who are not directly affected — produces policies that look sensible on paper and fail in practice in specific and predictable ways. I have seen this. I prefer to be in the room.", "type": "narrative"},
258
+ {"text": "Tom asked me once what I did for work. I told him I was an accessibility consultant. He looked uncertain and said 'like buildings?' I said yes, and also digital things — websites, apps. He said that made sense given the chair. I didn't correct the assumption because he was not entirely wrong, just backwards. The chair gave me the expertise. The expertise led to the work.", "type": "narrative"},
259
+ {"text": "The Discord group has a voice channel they use sometimes for tournament watch parties. I join but often keep my mic muted and type in chat instead. On high-fatigue days it is easier. On good days I will unmute and someone will say 'Mia's talking, everyone listen' which is a joke and also accurate because I tend not to say things unless there is something to say. I find this acceptable.", "type": "narrative"},
260
+ {"text": "Priya's nature documentary narration has specific rules that we have never made explicit but both understand. She does not do it when something is actually difficult. She does it when the thing is ordinary and the narration makes it funnier than it would be. This is a precise and kind form of humor — it takes the ordinary thing and makes it worth noticing. I have thought about this more than I would admit to her.", "type": "narrative"},
261
+ {"text": "There is a specific kind of social interaction I find most draining: large groups where I cannot hear clearly, where navigation is difficult, where conversation is brief and adjacent rather than substantive. There is a specific kind I find most replenishing: two or three people I trust, no performance required, conversation that goes somewhere. Priya, the Discord group, the advocacy meetings — these all fall in the second category. The first I now simply avoid.", "type": "narrative"},
262
+ {"text": "Tom's daughter visited last spring and I met her briefly in the hallway. She was warm and seemed slightly worried about her father in the way of adult children who have noticed something they are not ready to address yet. I understood this without being told. I said hello, said Tom had mentioned she was coming, and kept walking. Some conversations are complete at that length.", "type": "narrative"},
263
+ {"text": "The advocacy group produced a written comment on the city's accessible transit improvement plan in March. I drafted the digital accessibility section. It was quoted in the public record. I found out when a member sent a screenshot. This is what the group is for. Not for the meeting. For the outcomes that the meetings produce.", "type": "narrative"},
264
+
265
+ {"text": "Priya visited. She narrated lunch in full Attenborough. The subject observed with equanimity.", "type": "social_post"},
266
+ {"text": "Advocacy group call tonight. Two hours. We drafted a comment on the CTA lift maintenance schedule. Progress.", "type": "social_post"},
267
+ {"text": "Tom and I talked about his daughter's visit for fifteen minutes outside. He seemed pleased to have someone to tell.", "type": "social_post"},
268
+ {"text": "Discord watch party: top 8, everyone in voice. Peak experience of the week.", "type": "social_post"},
269
+ {"text": "Small dinner at Priya's. Four people. Conversation went until 11pm. This is the format.", "type": "social_post"},
270
+ {"text": "The advocacy comment was quoted in the public record. The meeting was worth it.", "type": "social_post"},
271
+ {"text": "Discord: Kaz is in Chicago for work this week. First time we've met in person in two years. Accurate to the character I'd constructed. This is always slightly amazing.", "type": "social_post"},
272
+ {"text": "Large networking event declined. Smaller coffee with one contact instead. Correct decision.", "type": "social_post"},
273
+ {"text": "Tom asked about my work today. Explained accessibility consulting. He said 'like buildings?' We got there eventually.", "type": "social_post"},
274
+ {"text": "Priya brought the kouign-amann again. I called it 'the almond thing'. She sighed. Tradition intact.", "type": "social_post"},
275
+
276
+ {"text": "Priya: [voice memo, arriving at Mia's door, Attenborough voice]: The subject has been observed in her natural habitat since Thursday. It is now Saturday. She has completed seventeen chess puzzles, two client reviews, and consumed what appears to be a full order of green curry. We observe her now in a state of careful calm—\nMe: Priya I can hear you through the door\nPriya: —the subject is aware of our presence—\nMe: come in", "type": "chat_log"},
277
+ {"text": "Kaz (Discord): okay I'm in Chicago for work. are you free Thursday\nMe: yes\nKaz: do you want to meet in person? is that weird to ask\nMe: it's not weird. yes.\nKaz: okay good. somewhere accessible. you pick.\nMe: Green St Smoked Meats, near the loop. they have step-free access and good brisket.\nKaz: perfect\nMe: this will be normal immediately\nKaz: yeah I think so", "type": "chat_log"},
278
+ {"text": "Advocacy group (chat): does anyone have documented cases of CTA elevator outages this year\nMe: yes. spreadsheet with dates, lines, durations, and the complaint reference numbers.\nMember1: Mia you are incredible\nMe: I was affected by the outages. I kept records.\nMember1: right but still\nMe: I'll share the file before Wednesday", "type": "chat_log"},
279
+ {"text": "Tom: [knocks on door frame while Mia is outside]\nTom: Evening! Lovely out, isn't it.\nMe: First warm one. Finally.\nTom: My daughter's visiting next weekend.\nMe: How long?\nTom: Just two days. She's busy. You know how it is.\nMe: It's still a visit.\nTom: That's what I keep saying. Anyway, don't let me keep you.\nMe: You're not. Two more minutes of this weather and then I'll go in.", "type": "chat_log"},
280
+ {"text": "Priya: okay I have a social event thing and I need your advice\nMe: what kind of thing\nPriya: work party. rooftop. 80 people.\nMe: What do you actually want to do\nPriya: go for an hour and leave\nMe: do that\nPriya: but is that rude\nMe: you showed up. you talked to people. you left. that is a social interaction.\nPriya: you make it sound simple\nMe: it is simple. you complicate it because you feel like you should want to stay. you don't have to want to stay.", "type": "chat_log"},
281
+ {"text": "Discord (Fen): okay I need everyone's honest opinion on whether I should move to Seattle\nKaz: do you want to\nFen: I think so? the job is there\nMe: what does your gut say\nFen: yes\nMe: then yes\nKaz: what Mia said\nFen: that was faster than I expected\nMe: you already knew. you just wanted someone to say it was okay.", "type": "chat_log"},
282
+ {"text": "Advocacy group (Zoom):\nFacilitator: Mia, do you want to walk us through the transit section?\nMe: Yes. [shares screen] So I've been tracking CTA elevator outages on accessible routes since January. Fourteen documented instances across six stations. Average restoration time is 19 hours. Here's the breakdown by line—\nMember: This is exactly what we needed for the comment letter\nMe: I know. That's why I did it.", "type": "chat_log"},
283
+ {"text": "Priya: we should do a dinner thing next month\nMe: how many people\nPriya: I was thinking six?\nMe: four is better\nPriya: we have six people we both like\nMe: have two of them to dinner the following week\nPriya: ...that's actually a good solution\nMe: the format matters\nPriya: okay. four. who?\nMe: you pick two, I pick two", "type": "chat_log"},
284
+ {"text": "Kaz: okay so that was actually completely normal\nMe: told you\nKaz: I had this whole idea it would be weird to meet after years online\nMe: it's always normal. we already knew each other.\nKaz: the brisket was also excellent\nMe: yes\nKaz: I'm coming back in June if work holds\nMe: let me know. I know where the good spots are.\nKaz: you have a spreadsheet don't you\nMe: a list", "type": "chat_log"},
285
+ {"text": "Tom: [in hallway]\nTom: My daughter left this morning.\nMe: Good visit?\nTom: Very good. Short, but good. She said the building looks well-maintained.\nMe: It does.\nTom: She asked about you, actually. Said she'd seen me talking to the woman with the wheelchair outside.\nMe: What did you tell her?\nTom: That you're a good neighbour. One of the best in the building.\nMe: That's kind of you.\nTom: It's accurate.", "type": "chat_log"}
286
+ ]
287
+ }
288
+ }
data/users.json CHANGED
@@ -32,7 +32,7 @@
32
  "name": "Christy Brown",
33
  "age": 45,
34
  "condition": "cerebral palsy (spastic quadriplegia)",
35
- "access_method": "left foot for typing, writing, painting the only reliably controlled limb",
36
  "tone_summary": "fierce, self-deprecating, sardonic, lyrical at moments",
37
  "file": "memories/christy_brown.json"
38
  },
@@ -58,7 +58,7 @@
58
  "id": "jason_becker",
59
  "name": "Jason Becker",
60
  "age": 57,
61
- "condition": "amyotrophic lateral sclerosis (ALS) long-term survivor, 35+ years post-diagnosis",
62
  "access_method": "eye-gaze tracking, with his father's letter-code board as backup",
63
  "tone_summary": "playful, defiant, grateful, musical",
64
  "file": "memories/jason_becker.json"
@@ -122,9 +122,27 @@
122
  "name": "Wendy Mitchell",
123
  "age": 68,
124
  "condition": "young-onset Alzheimer's disease",
125
- "access_method": "typing on laptop or phone, often with help from her 'brain-book' a physical notebook of reminders and cues",
126
  "tone_summary": "sharp, observant, self-deprecating, matter-of-fact",
127
  "file": "memories/wendy_mitchell.json"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
128
  }
129
  ]
130
  }
 
32
  "name": "Christy Brown",
33
  "age": 45,
34
  "condition": "cerebral palsy (spastic quadriplegia)",
35
+ "access_method": "left foot for typing, writing, painting \u2014 the only reliably controlled limb",
36
  "tone_summary": "fierce, self-deprecating, sardonic, lyrical at moments",
37
  "file": "memories/christy_brown.json"
38
  },
 
58
  "id": "jason_becker",
59
  "name": "Jason Becker",
60
  "age": 57,
61
+ "condition": "amyotrophic lateral sclerosis (ALS) \u2014 long-term survivor, 35+ years post-diagnosis",
62
  "access_method": "eye-gaze tracking, with his father's letter-code board as backup",
63
  "tone_summary": "playful, defiant, grateful, musical",
64
  "file": "memories/jason_becker.json"
 
122
  "name": "Wendy Mitchell",
123
  "age": 68,
124
  "condition": "young-onset Alzheimer's disease",
125
+ "access_method": "typing on laptop or phone, often with help from her 'brain-book' \u2014 a physical notebook of reminders and cues",
126
  "tone_summary": "sharp, observant, self-deprecating, matter-of-fact",
127
  "file": "memories/wendy_mitchell.json"
128
+ },
129
+ {
130
+ "id": "arjun_mehta",
131
+ "name": "Arjun Mehta",
132
+ "age": 13,
133
+ "condition": "non-verbal autism spectrum disorder with AAC dependence; moderate sensory processing differences",
134
+ "access_method": "AAC tablet (Tobii Dynavox) primary; phone typing for longer exchanges; eye-gaze on high-fatigue days",
135
+ "tone_summary": "factual, precise, literal, earnest; short single-idea sentences; dry corrections as humour",
136
+ "file": "memories/arjun_mehta.json"
137
+ },
138
+ {
139
+ "id": "gerald_okafor",
140
+ "name": "Gerald Okafor",
141
+ "age": 62,
142
+ "condition": "amyotrophic lateral sclerosis (ALS), diagnosed November 2024; bulbar-onset with early speech decline",
143
+ "access_method": "Tobii Dynavox I-Series+ eye-gaze device primary; tablet typing (one finger) as backup",
144
+ "tone_summary": "measured, dignified, professorial, occasionally wry; complete sentences; Achebe and economics references; dry understated humour",
145
+ "file": "memories/gerald_okafor.json"
146
  }
147
  ]
148
  }