digital-brain 0.1.3 → 1.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +38 -7
- package/bin/digital-brain.js +275 -38
- package/docs/AUTOMATIONS.md +13 -4
- package/docs/INTEGRATIONS.md +72 -0
- package/docs/PRIVACY.md +3 -1
- package/docs/SETUP.md +78 -0
- package/examples/sample-vault/{04 People/Interpreted Relationships/Close Friend.md → 06 AI Memory/Generated Relationship Drafts/Close Friend (WhatsApp).md } +4 -3
- package/examples/sample-vault/{04 People/Interpreted Relationships/Mom.md → 06 AI Memory/Generated Relationship Drafts/Mom (WhatsApp).md } +4 -3
- package/examples/sample-vault/{08 Sources/WhatsApp/Analysis/Interpreted/Project Team.md → 06 AI Memory/Generated Relationship Drafts/Project Team (WhatsApp).md } +4 -3
- package/examples/sample-vault/06 AI Memory/Interpreted Relationship Memory.md +3 -3
- package/examples/sample-vault/06 AI Memory/Person Context Index.md +26 -0
- package/examples/sample-vault/06 AI Memory/Person Reply Context.md +26 -0
- package/examples/sample-vault/08 Sources/{WhatsApp/Analysis/Interpreted/Close Friend.md → Analysis/Interpreted/Close Friend (WhatsApp).md } +4 -3
- package/examples/sample-vault/08 Sources/{WhatsApp/Analysis/Interpreted/Mom.md → Analysis/Interpreted/Mom (WhatsApp).md } +4 -3
- package/examples/sample-vault/{04 People/Interpreted Relationships/Project Team.md → 08 Sources/Analysis/Interpreted/Project Team (WhatsApp).md } +4 -3
- package/examples/sample-vault/08 Sources/Analysis/Relationship Map.md +38 -0
- package/examples/sample-vault/08 Sources/Analysis/interpreted_relationship_models.json +175 -0
- package/examples/sample-vault/08 Sources/Analysis/person_identity_map.json +78 -0
- package/examples/sample-vault/08 Sources/Analysis/relationship_profiles.json +122 -0
- package/examples/sample-vault/08 Sources/WhatsApp/Analysis/Interpreted/Close Friend (WhatsApp).md +44 -0
- package/examples/sample-vault/08 Sources/WhatsApp/Analysis/Interpreted/Mom (WhatsApp).md +45 -0
- package/examples/sample-vault/08 Sources/WhatsApp/Analysis/Interpreted/Project Team (WhatsApp).md +45 -0
- package/examples/sample-vault/08 Sources/WhatsApp/Analysis/Relationship Map.md +9 -3
- package/examples/sample-vault/08 Sources/WhatsApp/Analysis/interpreted_relationship_models.json +18 -0
- package/examples/sample-vault/08 Sources/WhatsApp/Analysis/person_identity_map.json +78 -0
- package/examples/sample-vault/08 Sources/WhatsApp/Analysis/relationship_profiles.json +18 -0
- package/examples/sample-vault/08 Sources/WhatsApp/Raw/2026-01-01.jsonl +6 -6
- package/lib/fs.js +33 -0
- package/package.json +2 -1
- package/scripts/digital_brain_imessage_sync.py +175 -0
- package/scripts/digital_brain_linkedin_export_import.py +214 -0
- package/scripts/digital_brain_relationship_extractor.py +189 -12
- package/scripts/digital_brain_relationship_interpreter.py +104 -15
- package/scripts/digital_brain_slack_export_import.py +181 -0
- package/scripts/digital_brain_whatsapp_mac_sync.py +37 -8
- package/templates/vault/00 Home/How AI Should Use This Vault.md +1 -1
- package/templates/vault/00 Home/Start Here.md +2 -1
- package/templates/vault/04 People/Relationship Overrides.md +2 -1
- package/templates/vault/06 AI Memory/Generated Relationship Drafts/README.md +5 -0
- package/templates/vault/06 AI Memory/Interpreted Relationship Memory.md +1 -2
- package/templates/vault/06 AI Memory/Person Context Index.md +4 -0
- package/templates/vault/06 AI Memory/Person Reply Context.md +4 -0
- package/templates/vault/08 Sources/README.md +5 -0
- package/templates/vault/08 Sources/WhatsApp/Outbound/README.md +2 -2
- package/templates/vault/AGENTS.md +5 -1
- package/templates/vault/CLAUDE.md +3 -0
- package/templates/vault/GEMINI.md +4 -0
- package/whatsapp-web/send.mjs +32 -5
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
# Integrations
|
|
2
|
+
|
|
3
|
+
Digital Brain prefers official exports and local files over scraping.
|
|
4
|
+
|
|
5
|
+
## WhatsApp
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
digital-brain run
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
WhatsApp support reads the local macOS WhatsApp database when available.
|
|
12
|
+
|
|
13
|
+
Dependency selected in setup:
|
|
14
|
+
|
|
15
|
+
- Install/open WhatsApp for Mac and log in: https://faq.whatsapp.com/686469079565350
|
|
16
|
+
- If macOS blocks access, grant Full Disk Access to the terminal app running Digital Brain.
|
|
17
|
+
- If WhatsApp is selected and the database is missing, `digital-brain run` exits with an error.
|
|
18
|
+
|
|
19
|
+
## Apple iMessage
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
digital-brain sync-imessage --days 30
|
|
23
|
+
digital-brain extract
|
|
24
|
+
digital-brain interpret
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
iMessage support reads the local macOS Messages database at `~/Library/Messages/chat.db`.
|
|
28
|
+
|
|
29
|
+
Dependency selected in setup:
|
|
30
|
+
|
|
31
|
+
- Open Messages on macOS at least once: https://support.apple.com/guide/messages/welcome/mac
|
|
32
|
+
- If macOS blocks access, grant Full Disk Access to the terminal app running Digital Brain.
|
|
33
|
+
- If iMessage is selected and the database is missing, `digital-brain run` exits with an error.
|
|
34
|
+
|
|
35
|
+
## Slack
|
|
36
|
+
|
|
37
|
+
Use Slack's official workspace export ZIP or extracted export folder.
|
|
38
|
+
|
|
39
|
+
```bash
|
|
40
|
+
digital-brain import-slack --input ./slack-export.zip
|
|
41
|
+
digital-brain extract
|
|
42
|
+
digital-brain interpret
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
Slack export access depends on workspace permissions and plan. Public-channel exports are common; private channels and DMs may require elevated workspace export permissions.
|
|
46
|
+
|
|
47
|
+
Export guide: https://slack.com/help/articles/201658943-Export-your-workspace-data
|
|
48
|
+
|
|
49
|
+
## LinkedIn
|
|
50
|
+
|
|
51
|
+
Use LinkedIn's official data archive ZIP or extracted archive folder.
|
|
52
|
+
|
|
53
|
+
```bash
|
|
54
|
+
digital-brain import-linkedin --input ./linkedin-archive.zip
|
|
55
|
+
digital-brain extract
|
|
56
|
+
digital-brain interpret
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
Digital Brain does not scrape LinkedIn or automate the LinkedIn app. LinkedIn controls what appears in the archive, so connections/messages may vary by account and export type.
|
|
60
|
+
|
|
61
|
+
Data archive guide: https://www.linkedin.com/help/linkedin/answer/a566336
|
|
62
|
+
|
|
63
|
+
## Useful Next Sources
|
|
64
|
+
|
|
65
|
+
- Calendar: recurring people, meetings, and relationship cadence.
|
|
66
|
+
- Email export: long-form relationship and work context, but privacy risk is high.
|
|
67
|
+
- GitHub: collaborators, repos, review style, and work graph.
|
|
68
|
+
- Linear/Jira: active projects and operating context.
|
|
69
|
+
- Contacts: canonical names, phones, companies, and relationship labels.
|
|
70
|
+
- Browser bookmarks/read-later: interests and research areas.
|
|
71
|
+
|
|
72
|
+
The right rule: add sources that improve memory without turning Digital Brain into spyware. Prefer explicit exports, clear consent, and source-specific privacy controls.
|
package/docs/PRIVACY.md
CHANGED
|
@@ -7,13 +7,15 @@ Digital Brain is designed for local use.
|
|
|
7
7
|
- No cloud API is called by default.
|
|
8
8
|
- Ollama interpretation is local when enabled.
|
|
9
9
|
- WhatsApp sending uses a local WhatsApp Web session.
|
|
10
|
+
- Raw source data stays under `08 Sources/`; normal AI context should use `06 AI Memory/` and human notes under `04 People/`.
|
|
11
|
+
- Same-person matching across sources is provisional and file-based; keep source evidence visible when using merged person context.
|
|
10
12
|
|
|
11
13
|
Things to be careful about:
|
|
12
14
|
|
|
13
15
|
- Do not commit a generated vault.
|
|
14
16
|
- Do not paste private message exports into GitHub issues.
|
|
15
17
|
- Do not enable outbound sending without understanding the risk.
|
|
16
|
-
- Treat WhatsApp database access and WhatsApp Web automation as
|
|
18
|
+
- Treat WhatsApp database access, iMessage database access, and WhatsApp Web automation as local, permission-sensitive integrations that can change.
|
|
17
19
|
- Always-on mode runs on your machine and inherits your local permissions.
|
|
18
20
|
- You are responsible for consent, privacy, message content, and sends made from your machine.
|
|
19
21
|
- Treat relationship labels as editable working notes, not truth.
|
package/docs/SETUP.md
ADDED
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
# Setup
|
|
2
|
+
|
|
3
|
+
Digital Brain is designed to install with one npm command:
|
|
4
|
+
|
|
5
|
+
```bash
|
|
6
|
+
npx digital-brain init
|
|
7
|
+
```
|
|
8
|
+
|
|
9
|
+
npm installs the Node dependencies. No pip install is needed; the Python scripts only use the standard library.
|
|
10
|
+
|
|
11
|
+
## What Init Checks
|
|
12
|
+
|
|
13
|
+
After the quiz, `init` runs a setup check for:
|
|
14
|
+
|
|
15
|
+
- Node 20+
|
|
16
|
+
- npm package dependencies
|
|
17
|
+
- Python 3
|
|
18
|
+
- Python sqlite3 support
|
|
19
|
+
- selected live source access:
|
|
20
|
+
- WhatsApp for Mac local database access
|
|
21
|
+
- Apple Messages local database access
|
|
22
|
+
- selected import source instructions:
|
|
23
|
+
- Slack export link
|
|
24
|
+
- LinkedIn archive link
|
|
25
|
+
- optional Ollama
|
|
26
|
+
|
|
27
|
+
Run the check again anytime:
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
digital-brain doctor
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
For a short usage guide:
|
|
34
|
+
|
|
35
|
+
```bash
|
|
36
|
+
digital-brain tutorial
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
## What Cannot Be Silently Installed
|
|
40
|
+
|
|
41
|
+
Digital Brain does not silently install or configure system apps.
|
|
42
|
+
|
|
43
|
+
- WhatsApp for Mac must be installed and logged in by the user.
|
|
44
|
+
- Apple Messages must be opened by the user before iMessage sync can read `~/Library/Messages/chat.db`.
|
|
45
|
+
- macOS may require Full Disk Access for the terminal app.
|
|
46
|
+
- Ollama is optional and only needed for local LLM workflows.
|
|
47
|
+
|
|
48
|
+
Useful links:
|
|
49
|
+
|
|
50
|
+
- Node: https://nodejs.org
|
|
51
|
+
- WhatsApp for Mac: https://faq.whatsapp.com/686469079565350
|
|
52
|
+
- Apple Messages: https://support.apple.com/guide/messages/welcome/mac
|
|
53
|
+
- Slack exports: https://slack.com/help/articles/201658943-Export-your-workspace-data
|
|
54
|
+
- LinkedIn data archive: https://www.linkedin.com/help/linkedin/answer/a566336
|
|
55
|
+
|
|
56
|
+
Once setup passes, normal use is:
|
|
57
|
+
|
|
58
|
+
```bash
|
|
59
|
+
digital-brain run
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
`run` executes the live local sources selected during setup. If a selected live source does not exist or cannot be opened, the command fails with a setup error.
|
|
63
|
+
|
|
64
|
+
Optional imports:
|
|
65
|
+
|
|
66
|
+
```bash
|
|
67
|
+
digital-brain import-slack --input ./slack-export.zip
|
|
68
|
+
digital-brain import-linkedin --input ./linkedin-archive.zip
|
|
69
|
+
digital-brain extract
|
|
70
|
+
digital-brain interpret
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
Useful direct sync commands:
|
|
74
|
+
|
|
75
|
+
```bash
|
|
76
|
+
digital-brain sync-whatsapp --days 30
|
|
77
|
+
digital-brain sync-imessage --days 30
|
|
78
|
+
```
|
|
@@ -1,13 +1,14 @@
|
|
|
1
|
-
# Close Friend
|
|
1
|
+
# Close Friend (WhatsApp)
|
|
2
2
|
|
|
3
|
-
Generated: 2026-06-
|
|
3
|
+
Generated: 2026-06-09T23:15:09.589124+00:00
|
|
4
|
+
Source: WhatsApp
|
|
4
5
|
Role: operational contact
|
|
5
6
|
Role confidence: low
|
|
6
7
|
Closeness: medium
|
|
7
8
|
Conversation difficulty: low
|
|
8
9
|
Typing style: short
|
|
9
10
|
|
|
10
|
-
These are private working notes. Edit them where wrong.
|
|
11
|
+
Generated draft, not truth. These are private working notes. Edit them where wrong.
|
|
11
12
|
|
|
12
13
|
## Role / Relationship Label
|
|
13
14
|
- operational contact (low confidence).
|
|
@@ -1,13 +1,14 @@
|
|
|
1
|
-
# Mom
|
|
1
|
+
# Mom (WhatsApp)
|
|
2
2
|
|
|
3
|
-
Generated: 2026-06-
|
|
3
|
+
Generated: 2026-06-09T23:15:09.587707+00:00
|
|
4
|
+
Source: WhatsApp
|
|
4
5
|
Role: mother
|
|
5
6
|
Role confidence: high
|
|
6
7
|
Closeness: medium
|
|
7
8
|
Conversation difficulty: low
|
|
8
9
|
Typing style: very short
|
|
9
10
|
|
|
10
|
-
These are private working notes. Edit them where wrong.
|
|
11
|
+
Generated draft, not truth. These are private working notes. Edit them where wrong.
|
|
11
12
|
|
|
12
13
|
## Role / Relationship Label
|
|
13
14
|
- mother (high confidence).
|
|
@@ -1,13 +1,14 @@
|
|
|
1
|
-
# Project Team
|
|
1
|
+
# Project Team (WhatsApp)
|
|
2
2
|
|
|
3
|
-
Generated: 2026-06-
|
|
3
|
+
Generated: 2026-06-09T23:15:09.588601+00:00
|
|
4
|
+
Source: WhatsApp
|
|
4
5
|
Role: work collaborator
|
|
5
6
|
Role confidence: medium
|
|
6
7
|
Closeness: low/unclear
|
|
7
8
|
Conversation difficulty: practical/low-emotional
|
|
8
9
|
Typing style: short
|
|
9
10
|
|
|
10
|
-
These are private working notes. Edit them where wrong.
|
|
11
|
+
Generated draft, not truth. These are private working notes. Edit them where wrong.
|
|
11
12
|
|
|
12
13
|
## Role / Relationship Label
|
|
13
14
|
- work collaborator (medium confidence).
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
|
|
3
3
|
Generated working notes. Treat as editable, not truth.
|
|
4
4
|
|
|
5
|
-
- [[Mom]]: mother (high), closeness medium, difficulty low, style very short
|
|
6
|
-
- [[Project Team]]: work collaborator (medium), closeness low/unclear, difficulty practical/low-emotional, style short
|
|
7
|
-
- [[Close Friend]]: operational contact (low), closeness medium, difficulty low, style short
|
|
5
|
+
- [[Mom (WhatsApp)]]: mother (high), closeness medium, difficulty low, style very short
|
|
6
|
+
- [[Project Team (WhatsApp)]]: work collaborator (medium), closeness low/unclear, difficulty practical/low-emotional, style short
|
|
7
|
+
- [[Close Friend (WhatsApp)]]: operational contact (low), closeness medium, difficulty low, style short
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# Person Context Index
|
|
2
|
+
|
|
3
|
+
Window: last 365 days
|
|
4
|
+
|
|
5
|
+
Canonical people matched across sources. Treat matches as provisional unless manually confirmed.
|
|
6
|
+
|
|
7
|
+
## Mom
|
|
8
|
+
|
|
9
|
+
- Canonical key: `person::mom`
|
|
10
|
+
- Aliases: Mom
|
|
11
|
+
- Sources: WhatsApp
|
|
12
|
+
- Messages: 2
|
|
13
|
+
- Dates: 2026-01-01 to 2026-01-01
|
|
14
|
+
- Source-specific context:
|
|
15
|
+
- WhatsApp / Mom: warm personal relationship; 2 messages; style very short; avg 4.0 words; lowercase 0.0; emoji 0.0; slang none
|
|
16
|
+
|
|
17
|
+
## Close Friend
|
|
18
|
+
|
|
19
|
+
- Canonical key: `person::close friend`
|
|
20
|
+
- Aliases: Close Friend
|
|
21
|
+
- Sources: WhatsApp
|
|
22
|
+
- Messages: 2
|
|
23
|
+
- Dates: 2026-01-01 to 2026-01-01
|
|
24
|
+
- Source-specific context:
|
|
25
|
+
- WhatsApp / Close Friend: warm personal relationship; 2 messages; style short; avg 5.0 words; lowercase 0.0; emoji 0.0; slang none
|
|
26
|
+
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# Person Reply Context
|
|
2
|
+
|
|
3
|
+
Use this first when responding to a specific person. It merges confirmed-looking matches across sources while keeping each source visible.
|
|
4
|
+
|
|
5
|
+
## Mom
|
|
6
|
+
|
|
7
|
+
- Canonical key: `person::mom`
|
|
8
|
+
- Aliases: Mom
|
|
9
|
+
- Sources: WhatsApp
|
|
10
|
+
- Total messages: 2
|
|
11
|
+
- Source-specific guidance:
|
|
12
|
+
- WhatsApp / Mom: mother (high), closeness medium, difficulty low.
|
|
13
|
+
Style: very short.
|
|
14
|
+
Reply: Keep replies very short unless context demands detail. Match style without exaggerating or parodying the person.
|
|
15
|
+
|
|
16
|
+
## Close Friend
|
|
17
|
+
|
|
18
|
+
- Canonical key: `person::close friend`
|
|
19
|
+
- Aliases: Close Friend
|
|
20
|
+
- Sources: WhatsApp
|
|
21
|
+
- Total messages: 2
|
|
22
|
+
- Source-specific guidance:
|
|
23
|
+
- WhatsApp / Close Friend: operational contact (low), closeness medium, difficulty low.
|
|
24
|
+
Style: short.
|
|
25
|
+
Reply: Keep replies very short unless context demands detail. Match style without exaggerating or parodying the person.
|
|
26
|
+
|
|
@@ -1,13 +1,14 @@
|
|
|
1
|
-
# Close Friend
|
|
1
|
+
# Close Friend (WhatsApp)
|
|
2
2
|
|
|
3
|
-
Generated: 2026-06-
|
|
3
|
+
Generated: 2026-06-09T23:15:09.589124+00:00
|
|
4
|
+
Source: WhatsApp
|
|
4
5
|
Role: operational contact
|
|
5
6
|
Role confidence: low
|
|
6
7
|
Closeness: medium
|
|
7
8
|
Conversation difficulty: low
|
|
8
9
|
Typing style: short
|
|
9
10
|
|
|
10
|
-
These are private working notes. Edit them where wrong.
|
|
11
|
+
Generated draft, not truth. These are private working notes. Edit them where wrong.
|
|
11
12
|
|
|
12
13
|
## Role / Relationship Label
|
|
13
14
|
- operational contact (low confidence).
|
|
@@ -1,13 +1,14 @@
|
|
|
1
|
-
# Mom
|
|
1
|
+
# Mom (WhatsApp)
|
|
2
2
|
|
|
3
|
-
Generated: 2026-06-
|
|
3
|
+
Generated: 2026-06-09T23:15:09.587707+00:00
|
|
4
|
+
Source: WhatsApp
|
|
4
5
|
Role: mother
|
|
5
6
|
Role confidence: high
|
|
6
7
|
Closeness: medium
|
|
7
8
|
Conversation difficulty: low
|
|
8
9
|
Typing style: very short
|
|
9
10
|
|
|
10
|
-
These are private working notes. Edit them where wrong.
|
|
11
|
+
Generated draft, not truth. These are private working notes. Edit them where wrong.
|
|
11
12
|
|
|
12
13
|
## Role / Relationship Label
|
|
13
14
|
- mother (high confidence).
|
|
@@ -1,13 +1,14 @@
|
|
|
1
|
-
# Project Team
|
|
1
|
+
# Project Team (WhatsApp)
|
|
2
2
|
|
|
3
|
-
Generated: 2026-06-
|
|
3
|
+
Generated: 2026-06-09T23:15:09.588601+00:00
|
|
4
|
+
Source: WhatsApp
|
|
4
5
|
Role: work collaborator
|
|
5
6
|
Role confidence: medium
|
|
6
7
|
Closeness: low/unclear
|
|
7
8
|
Conversation difficulty: practical/low-emotional
|
|
8
9
|
Typing style: short
|
|
9
10
|
|
|
10
|
-
These are private working notes. Edit them where wrong.
|
|
11
|
+
Generated draft, not truth. These are private working notes. Edit them where wrong.
|
|
11
12
|
|
|
12
13
|
## Role / Relationship Label
|
|
13
14
|
- work collaborator (medium confidence).
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# Relationship Map
|
|
2
|
+
|
|
3
|
+
Window: last 365 days
|
|
4
|
+
|
|
5
|
+
Generated signals. Treat as editable working notes.
|
|
6
|
+
|
|
7
|
+
## Mom (WhatsApp)
|
|
8
|
+
|
|
9
|
+
- Source: WhatsApp
|
|
10
|
+
- Canonical person: Mom (person::mom)
|
|
11
|
+
- Guess: warm personal relationship
|
|
12
|
+
- Messages: 2 (1 inbound, 1 outbound)
|
|
13
|
+
- Dates: 2026-01-01 to 2026-01-01
|
|
14
|
+
- Scores: sentiment 0.159, warmth 0.5, friction 0.0, operational 1.5
|
|
15
|
+
- Tags: direct-chat, light, warm, logistics-heavy
|
|
16
|
+
- Typing style: very short; avg 4.0 words; lowercase 0.0; emoji 0.0; slang none
|
|
17
|
+
|
|
18
|
+
## Project Team (WhatsApp)
|
|
19
|
+
|
|
20
|
+
- Source: WhatsApp
|
|
21
|
+
- Canonical person: Project Team (group::whatsapp::project team)
|
|
22
|
+
- Guess: group, likely social or mixed context
|
|
23
|
+
- Messages: 2 (1 inbound, 1 outbound)
|
|
24
|
+
- Dates: 2026-01-01 to 2026-01-01
|
|
25
|
+
- Scores: sentiment 0, warmth 0.0, friction 0.0, operational 3.0
|
|
26
|
+
- Tags: group-chat, light, logistics-heavy, question-heavy
|
|
27
|
+
- Typing style: short; avg 6.0 words; lowercase 0.0; emoji 0.0; slang none
|
|
28
|
+
|
|
29
|
+
## Close Friend (WhatsApp)
|
|
30
|
+
|
|
31
|
+
- Source: WhatsApp
|
|
32
|
+
- Canonical person: Close Friend (person::close friend)
|
|
33
|
+
- Guess: warm personal relationship
|
|
34
|
+
- Messages: 2 (1 inbound, 1 outbound)
|
|
35
|
+
- Dates: 2026-01-01 to 2026-01-01
|
|
36
|
+
- Scores: sentiment 0.159, warmth 1.0, friction 0.0, operational 0.5
|
|
37
|
+
- Tags: direct-chat, light, warm, logistics-heavy
|
|
38
|
+
- Typing style: short; avg 5.0 words; lowercase 0.0; emoji 0.0; slang none
|
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
[
|
|
2
|
+
{
|
|
3
|
+
"chatName": "Mom",
|
|
4
|
+
"sourceSystem": "WhatsApp",
|
|
5
|
+
"displayName": "Mom (WhatsApp)",
|
|
6
|
+
"identityName": "Mom",
|
|
7
|
+
"canonicalPersonKey": "person::mom",
|
|
8
|
+
"identityConfidence": "medium",
|
|
9
|
+
"identityEvidence": "WhatsApp direct chat identity",
|
|
10
|
+
"messageCount": 2,
|
|
11
|
+
"inbound": 1,
|
|
12
|
+
"outbound": 1,
|
|
13
|
+
"outboundShare": 0.5,
|
|
14
|
+
"firstSeen": "2026-01-01",
|
|
15
|
+
"lastSeen": "2026-01-01",
|
|
16
|
+
"isGroup": false,
|
|
17
|
+
"sentimentScore": 0.159,
|
|
18
|
+
"warmthScore": 0.5,
|
|
19
|
+
"frictionScore": 0.0,
|
|
20
|
+
"operationalScore": 1.5,
|
|
21
|
+
"questionCount": 0,
|
|
22
|
+
"relationshipGuess": "warm personal relationship",
|
|
23
|
+
"tags": [
|
|
24
|
+
"direct-chat",
|
|
25
|
+
"light",
|
|
26
|
+
"warm",
|
|
27
|
+
"logistics-heavy"
|
|
28
|
+
],
|
|
29
|
+
"typingStyle": {
|
|
30
|
+
"sampleSize": 1,
|
|
31
|
+
"avgChars": 24.0,
|
|
32
|
+
"avgWords": 4.0,
|
|
33
|
+
"lowercaseShare": 0.0,
|
|
34
|
+
"uppercaseShare": 0.0,
|
|
35
|
+
"questionShare": 0.0,
|
|
36
|
+
"exclamationShare": 0.0,
|
|
37
|
+
"emojiShare": 0.0,
|
|
38
|
+
"slang": [],
|
|
39
|
+
"signature": "very short"
|
|
40
|
+
},
|
|
41
|
+
"role": "mother",
|
|
42
|
+
"roleConfidence": "high",
|
|
43
|
+
"roleReason": "manual override",
|
|
44
|
+
"closeness": "medium",
|
|
45
|
+
"conversationDifficulty": "low",
|
|
46
|
+
"reciprocity": "balanced",
|
|
47
|
+
"howToContinue": [
|
|
48
|
+
"Use warmer language than a work chat.",
|
|
49
|
+
"Do not make the interaction purely transactional.",
|
|
50
|
+
"Track open loops, plans, dates, and commitments."
|
|
51
|
+
],
|
|
52
|
+
"boundaries": [
|
|
53
|
+
"Do not expose private summaries unless asked."
|
|
54
|
+
],
|
|
55
|
+
"replyStyle": [
|
|
56
|
+
"Keep replies very short unless context demands detail.",
|
|
57
|
+
"Match style without exaggerating or parodying the person."
|
|
58
|
+
]
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
"chatName": "Project Team",
|
|
62
|
+
"sourceSystem": "WhatsApp",
|
|
63
|
+
"displayName": "Project Team (WhatsApp)",
|
|
64
|
+
"identityName": "Project Team",
|
|
65
|
+
"canonicalPersonKey": "group::whatsapp::project team",
|
|
66
|
+
"identityConfidence": "medium",
|
|
67
|
+
"identityEvidence": "group chat kept source-specific",
|
|
68
|
+
"messageCount": 2,
|
|
69
|
+
"inbound": 1,
|
|
70
|
+
"outbound": 1,
|
|
71
|
+
"outboundShare": 0.5,
|
|
72
|
+
"firstSeen": "2026-01-01",
|
|
73
|
+
"lastSeen": "2026-01-01",
|
|
74
|
+
"isGroup": true,
|
|
75
|
+
"sentimentScore": 0,
|
|
76
|
+
"warmthScore": 0.0,
|
|
77
|
+
"frictionScore": 0.0,
|
|
78
|
+
"operationalScore": 3.0,
|
|
79
|
+
"questionCount": 1,
|
|
80
|
+
"relationshipGuess": "group, likely social or mixed context",
|
|
81
|
+
"tags": [
|
|
82
|
+
"group-chat",
|
|
83
|
+
"light",
|
|
84
|
+
"logistics-heavy",
|
|
85
|
+
"question-heavy"
|
|
86
|
+
],
|
|
87
|
+
"typingStyle": {
|
|
88
|
+
"sampleSize": 1,
|
|
89
|
+
"avgChars": 33.0,
|
|
90
|
+
"avgWords": 6.0,
|
|
91
|
+
"lowercaseShare": 0.0,
|
|
92
|
+
"uppercaseShare": 0.0,
|
|
93
|
+
"questionShare": 0.0,
|
|
94
|
+
"exclamationShare": 0.0,
|
|
95
|
+
"emojiShare": 0.0,
|
|
96
|
+
"slang": [],
|
|
97
|
+
"signature": "short"
|
|
98
|
+
},
|
|
99
|
+
"role": "work collaborator",
|
|
100
|
+
"roleConfidence": "medium",
|
|
101
|
+
"roleReason": "matched chat name",
|
|
102
|
+
"closeness": "low/unclear",
|
|
103
|
+
"conversationDifficulty": "practical/low-emotional",
|
|
104
|
+
"reciprocity": "balanced",
|
|
105
|
+
"howToContinue": [
|
|
106
|
+
"Lead with context, next steps, and clear asks.",
|
|
107
|
+
"Keep emotional interpretation light.",
|
|
108
|
+
"Track open loops, plans, dates, and commitments."
|
|
109
|
+
],
|
|
110
|
+
"boundaries": [
|
|
111
|
+
"Do not expose private summaries unless asked."
|
|
112
|
+
],
|
|
113
|
+
"replyStyle": [
|
|
114
|
+
"Use concise replies with one clear point.",
|
|
115
|
+
"Match style without exaggerating or parodying the person."
|
|
116
|
+
]
|
|
117
|
+
},
|
|
118
|
+
{
|
|
119
|
+
"chatName": "Close Friend",
|
|
120
|
+
"sourceSystem": "WhatsApp",
|
|
121
|
+
"displayName": "Close Friend (WhatsApp)",
|
|
122
|
+
"identityName": "Close Friend",
|
|
123
|
+
"canonicalPersonKey": "person::close friend",
|
|
124
|
+
"identityConfidence": "medium",
|
|
125
|
+
"identityEvidence": "WhatsApp direct chat identity",
|
|
126
|
+
"messageCount": 2,
|
|
127
|
+
"inbound": 1,
|
|
128
|
+
"outbound": 1,
|
|
129
|
+
"outboundShare": 0.5,
|
|
130
|
+
"firstSeen": "2026-01-01",
|
|
131
|
+
"lastSeen": "2026-01-01",
|
|
132
|
+
"isGroup": false,
|
|
133
|
+
"sentimentScore": 0.159,
|
|
134
|
+
"warmthScore": 1.0,
|
|
135
|
+
"frictionScore": 0.0,
|
|
136
|
+
"operationalScore": 0.5,
|
|
137
|
+
"questionCount": 0,
|
|
138
|
+
"relationshipGuess": "warm personal relationship",
|
|
139
|
+
"tags": [
|
|
140
|
+
"direct-chat",
|
|
141
|
+
"light",
|
|
142
|
+
"warm",
|
|
143
|
+
"logistics-heavy"
|
|
144
|
+
],
|
|
145
|
+
"typingStyle": {
|
|
146
|
+
"sampleSize": 1,
|
|
147
|
+
"avgChars": 30.0,
|
|
148
|
+
"avgWords": 5.0,
|
|
149
|
+
"lowercaseShare": 0.0,
|
|
150
|
+
"uppercaseShare": 0.0,
|
|
151
|
+
"questionShare": 0.0,
|
|
152
|
+
"exclamationShare": 0.0,
|
|
153
|
+
"emojiShare": 0.0,
|
|
154
|
+
"slang": [],
|
|
155
|
+
"signature": "short"
|
|
156
|
+
},
|
|
157
|
+
"role": "operational contact",
|
|
158
|
+
"roleConfidence": "low",
|
|
159
|
+
"roleReason": "logistics-heavy communication",
|
|
160
|
+
"closeness": "medium",
|
|
161
|
+
"conversationDifficulty": "low",
|
|
162
|
+
"reciprocity": "balanced",
|
|
163
|
+
"howToContinue": [
|
|
164
|
+
"Keep tone neutral until the user labels this relationship.",
|
|
165
|
+
"Track open loops, plans, dates, and commitments."
|
|
166
|
+
],
|
|
167
|
+
"boundaries": [
|
|
168
|
+
"Do not expose private summaries unless asked."
|
|
169
|
+
],
|
|
170
|
+
"replyStyle": [
|
|
171
|
+
"Keep replies very short unless context demands detail.",
|
|
172
|
+
"Match style without exaggerating or parodying the person."
|
|
173
|
+
]
|
|
174
|
+
}
|
|
175
|
+
]
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
[
|
|
2
|
+
{
|
|
3
|
+
"canonicalPersonKey": "person::mom",
|
|
4
|
+
"displayName": "Mom",
|
|
5
|
+
"aliases": [
|
|
6
|
+
"Mom"
|
|
7
|
+
],
|
|
8
|
+
"sources": [
|
|
9
|
+
"WhatsApp"
|
|
10
|
+
],
|
|
11
|
+
"sourceProfiles": [
|
|
12
|
+
{
|
|
13
|
+
"sourceSystem": "WhatsApp",
|
|
14
|
+
"chatName": "Mom",
|
|
15
|
+
"displayName": "Mom (WhatsApp)",
|
|
16
|
+
"messageCount": 2,
|
|
17
|
+
"firstSeen": "2026-01-01",
|
|
18
|
+
"lastSeen": "2026-01-01",
|
|
19
|
+
"relationshipGuess": "warm personal relationship",
|
|
20
|
+
"typingStyle": {
|
|
21
|
+
"sampleSize": 1,
|
|
22
|
+
"avgChars": 24.0,
|
|
23
|
+
"avgWords": 4.0,
|
|
24
|
+
"lowercaseShare": 0.0,
|
|
25
|
+
"uppercaseShare": 0.0,
|
|
26
|
+
"questionShare": 0.0,
|
|
27
|
+
"exclamationShare": 0.0,
|
|
28
|
+
"emojiShare": 0.0,
|
|
29
|
+
"slang": [],
|
|
30
|
+
"signature": "very short"
|
|
31
|
+
},
|
|
32
|
+
"identityConfidence": "medium",
|
|
33
|
+
"identityEvidence": "WhatsApp direct chat identity"
|
|
34
|
+
}
|
|
35
|
+
],
|
|
36
|
+
"totalMessages": 2,
|
|
37
|
+
"firstSeen": "2026-01-01",
|
|
38
|
+
"lastSeen": "2026-01-01"
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
"canonicalPersonKey": "person::close friend",
|
|
42
|
+
"displayName": "Close Friend",
|
|
43
|
+
"aliases": [
|
|
44
|
+
"Close Friend"
|
|
45
|
+
],
|
|
46
|
+
"sources": [
|
|
47
|
+
"WhatsApp"
|
|
48
|
+
],
|
|
49
|
+
"sourceProfiles": [
|
|
50
|
+
{
|
|
51
|
+
"sourceSystem": "WhatsApp",
|
|
52
|
+
"chatName": "Close Friend",
|
|
53
|
+
"displayName": "Close Friend (WhatsApp)",
|
|
54
|
+
"messageCount": 2,
|
|
55
|
+
"firstSeen": "2026-01-01",
|
|
56
|
+
"lastSeen": "2026-01-01",
|
|
57
|
+
"relationshipGuess": "warm personal relationship",
|
|
58
|
+
"typingStyle": {
|
|
59
|
+
"sampleSize": 1,
|
|
60
|
+
"avgChars": 30.0,
|
|
61
|
+
"avgWords": 5.0,
|
|
62
|
+
"lowercaseShare": 0.0,
|
|
63
|
+
"uppercaseShare": 0.0,
|
|
64
|
+
"questionShare": 0.0,
|
|
65
|
+
"exclamationShare": 0.0,
|
|
66
|
+
"emojiShare": 0.0,
|
|
67
|
+
"slang": [],
|
|
68
|
+
"signature": "short"
|
|
69
|
+
},
|
|
70
|
+
"identityConfidence": "medium",
|
|
71
|
+
"identityEvidence": "WhatsApp direct chat identity"
|
|
72
|
+
}
|
|
73
|
+
],
|
|
74
|
+
"totalMessages": 2,
|
|
75
|
+
"firstSeen": "2026-01-01",
|
|
76
|
+
"lastSeen": "2026-01-01"
|
|
77
|
+
}
|
|
78
|
+
]
|