Feature: Emergent observation of shared passions and interests — Phase 2: What feeds it #34
Labels
No labels
blocked:depends-p1
blocked:gate-research
blocked:lint-failed
blocked:needs-decision
blocked:needs-human
blocked:verify-failed
bug
data-loss
documentation
enhancement
feature-request
in-progress
needs-decompose
needs-triage
pwa
quickfix
security
security/high
security/medium
test
test-coverage
triage-approved
vault
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
Mark/kimi_agent_kin_app_sync#34
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Phase 2: What feeds it
Decomposed from kimi_agent_kin_app_sync#32
⏸ Needs Decision
Blocking factors:
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-decisionlabel to route back to triage.GSD RESEARCH: API call failed.
]11;?\API call failed after 3 retries: HTTP 429: Error code: 429 - {'status': 429, 'title': 'Too Many Requests'}
Implementation Summary
Phase 2: What feeds it - Source tracking for passion observations
Changes
Type extensions (
types.ts):sourceInteractionIds,sourceGiftIds,sourceDateEventIds, andsourceNotesfields toEmergentObservationandDashboardObservationObservation engine (
utils.ts):findPersonObservations: Now tracks which interactions, gifts, and date events contributed to each keyword observationextractSnippet: New helper to extract contextual note snippets around keywordscomputeDashboardObservations: Now tracks source interaction and gift IDsUI updates:
Home.tsx: Shows interaction/gift counts and mention counts in emergent observationsPersonDetail.tsx: Displays detailed source breakdown with "What feeds this" section showing note snippetsFeatures