Feature: Emergent observation of shared passions and interests — Phase 2: What feeds it #34

Closed
opened 2026-05-28 00:42:10 +00:00 by Mark · 3 comments
Owner

Phase 2: What feeds it

  • Gift history: you've given Alice two sci-fi books and a Star Wars poster -> shared interest in sci-fi
  • Interaction notes: free-text mentions of media ("talked about Dune sequel", "watched the new Nolan film")
  • Shared media logging: if users opt to tag an interaction with "watched X" or "read Y", that feeds in too — lightweight, inline, not a separate form
  • Date events: "Movie night with Bob" logged on the Dates page
  • Recurring patterns: you and Claire always go to the same type of event (concerts, conventions, hiking)

Decomposed from kimi_agent_kin_app_sync#32

## Phase 2: What feeds it - **Gift history**: you've given Alice two sci-fi books and a Star Wars poster -> shared interest in sci-fi - **Interaction notes**: free-text mentions of media ("talked about Dune sequel", "watched the new Nolan film") - **Shared media logging**: if users opt to tag an interaction with "watched X" or "read Y", that feeds in too — lightweight, inline, not a separate form - **Date events**: "Movie night with Bob" logged on the Dates page - **Recurring patterns**: you and Claire always go to the same type of event (concerts, conventions, hiking) --- _Decomposed from [kimi_agent_kin_app_sync#32](https://forgejo.tail018ac4.ts.net/Mark/kimi_agent_kin_app_sync/issues/32)_
Author
Owner

⏸ Needs Decision

Blocking factors:

  • Didn't meet auto-approve criteria — scope=medium, risk=low, spec=aligned

Scope: medium Risk: low Spec: aligned Type: feature
Summary: Phase 2 of emergent shared passions detection — defining and plumbing the data sources (gift descriptions, interaction notes/mediaMentioned, date event labels, and recurring patterns) into an analysis that surfaces shared interests per person.
Suggestion: Implement a derived-data hook (useEmergentInterests) that queries existing gifts.interactions.notes/mediaMentioned, dateEvents.labels per person, then groups keywords into interest themes. No new DB tables needed — all data already exists in the schema. Display results as a new 'Shared Interests' card on PersonDetail overview tab, with an inline media prompt enhancement on LogInteraction step 3. Pattern detection (recurring event types) can be added as a second pass once the core extraction is live.
Rationale: Scope is medium because it spans a new analysis module, PersonDetail UI changes, and LogInteraction UX polish (~6–8 files), but no new DB tables, migrations, or breaking changes. Risk is low because all additions are read-only queries over existing data. Aligned with the project's PRM philosophy of emergent, label-free relationship insights. The existing mediaMentioned field on Interaction already partially supports this — the issue wants to formalize the extraction and display.

Action: Review each blocking factor above. Remove blocked:needs-decision label to route back to triage.

## ⏸ Needs Decision **Blocking factors:** - **Didn't meet auto-approve criteria** — scope=medium, risk=low, spec=aligned --- **Scope:** medium **Risk:** low **Spec:** aligned **Type:** feature **Summary:** Phase 2 of emergent shared passions detection — defining and plumbing the data sources (gift descriptions, interaction notes/mediaMentioned, date event labels, and recurring patterns) into an analysis that surfaces shared interests per person. **Suggestion:** Implement a derived-data hook (useEmergentInterests) that queries existing gifts.interactions.notes/mediaMentioned, dateEvents.labels per person, then groups keywords into interest themes. No new DB tables needed — all data already exists in the schema. Display results as a new 'Shared Interests' card on PersonDetail overview tab, with an inline media prompt enhancement on LogInteraction step 3. Pattern detection (recurring event types) can be added as a second pass once the core extraction is live. **Rationale:** Scope is medium because it spans a new analysis module, PersonDetail UI changes, and LogInteraction UX polish (~6–8 files), but no new DB tables, migrations, or breaking changes. Risk is low because all additions are read-only queries over existing data. Aligned with the project's PRM philosophy of emergent, label-free relationship insights. The existing mediaMentioned field on Interaction already partially supports this — the issue wants to formalize the extraction and display. **Action:** Review each blocking factor above. Remove `blocked:needs-decision` label to route back to triage.
Author
Owner

GSD RESEARCH: API call failed.
]11;?\API call failed after 3 retries: HTTP 429: Error code: 429 - {'status': 429, 'title': 'Too Many Requests'}

GSD RESEARCH: API call failed. ]11;?\API call failed after 3 retries: HTTP 429: Error code: 429 - {'status': 429, 'title': 'Too Many Requests'}
Author
Owner

Implementation Summary

Phase 2: What feeds it - Source tracking for passion observations

Changes

  1. Type extensions (types.ts):

    • Added sourceInteractionIds, sourceGiftIds, sourceDateEventIds, and sourceNotes fields to EmergentObservation and DashboardObservation
  2. Observation engine (utils.ts):

    • findPersonObservations: Now tracks which interactions, gifts, and date events contributed to each keyword observation
    • extractSnippet: New helper to extract contextual note snippets around keywords
    • computeDashboardObservations: Now tracks source interaction and gift IDs
  3. UI updates:

    • Home.tsx: Shows interaction/gift counts and mention counts in emergent observations
    • PersonDetail.tsx: Displays detailed source breakdown with "What feeds this" section showing note snippets

Features

  • Each passion observation now shows exactly which interactions, gifts, or date events mention the keyword
  • Note snippets (up to 3) are extracted showing context around keyword mentions
  • Source tracking enables future features like "jump to source" or deeper insight exploration
## Implementation Summary **Phase 2: What feeds it - Source tracking for passion observations** ### Changes 1. **Type extensions** (`types.ts`): - Added `sourceInteractionIds`, `sourceGiftIds`, `sourceDateEventIds`, and `sourceNotes` fields to `EmergentObservation` and `DashboardObservation` 2. **Observation engine** (`utils.ts`): - `findPersonObservations`: Now tracks which interactions, gifts, and date events contributed to each keyword observation - `extractSnippet`: New helper to extract contextual note snippets around keywords - `computeDashboardObservations`: Now tracks source interaction and gift IDs 3. **UI updates**: - `Home.tsx`: Shows interaction/gift counts and mention counts in emergent observations - `PersonDetail.tsx`: Displays detailed source breakdown with "What feeds this" section showing note snippets ### Features - Each passion observation now shows exactly which interactions, gifts, or date events mention the keyword - Note snippets (up to 3) are extracted showing context around keyword mentions - Source tracking enables future features like "jump to source" or deeper insight exploration
Mark closed this issue 2026-05-30 22:46:58 +00:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
Mark/kimi_agent_kin_app_sync#34
No description provided.