Add chat preference extraction on shared ingest

This commit is contained in:
Rijad Zuzo
2026-02-22 23:22:46 +01:00
parent 8c79ba1345
commit 5ffe970179
5 changed files with 494 additions and 12 deletions
+33
View File
@@ -7,6 +7,39 @@ Updated: 2026-02-22
- After every sensible code/documentation change set, create a git commit as
the last step so the next agent session can pick up from clean checkpoints.
## Latest Milestone (2026-02-22): MVP Chat Preference Extractor + Ingest Enrichment
Implemented the first local semantic-enrichment pass so shared chat messages can
start building inferred person preferences automatically.
- `lib/features/local/chat_preference_extractor.dart` (new)
- added a pure Dart, local-first rule-based extractor
- extracts evidence-backed preference candidates from message text:
- `prefer X over Y` (creates like/dislike pair)
- `favorite ... is ...`
- `I love/like/enjoy ...`
- `I hate/dislike/dont like ...`
- `allergic to ...`
- adds category heuristics (e.g. drink/food/hobby/environment/health)
- returns confidence-scored candidates with evidence snippets
- `lib/features/local/local_repository.dart`
- integrated extractor into resolved shared-message ingest flow
- when a chat share is imported and linked to a profile:
- store raw shared message + capture moment (existing behavior)
- extract preference candidates from message text
- upsert local inferred preference signals with evidence + source metadata
- Tests
- `test/features/local/chat_preference_extractor_test.dart` (new)
- extractor unit coverage for positive/negative/comparative/allergy patterns
- `test/features/local/local_repository_test.dart`
- added ingest test proving shared chat import creates inferred signals
- Validation
- `flutter analyze` -> pass
- `flutter test` -> pass
## Latest Milestone (2026-02-22): Local Preference Signal Scaffolding (Inferred/Confirmed)
Added a local-first data model and repository APIs for chat-derived preference