AI now extracts names of people mentioned in todo text (not @mentions) and adds them to the Other People relation when configured as a relation type. For example, "Taylor to call Jamie R about the project" will add Jamie Rodriguez to Other People if they exist in the Contacts database.
Matching rules:
- Exact name match first (case-insensitive)
- Falls back to prefix matching: "Jamie R" matches "Jamie Rodriguez" (all words must be prefixes)
- Skipped if ambiguous (multiple matches)
- Skipped if already in Owner or @mentions
- Task targets ARE included (e.g., "call Jamie" will match Jamie)
When a user (not the integration bot) last edited a todo page in the Todos database, sync now skips updating that page to preserve the user's changes. Logs show "Skipping update for block X: page was edited by user (not bot)".
Contextual matching (Strategy 2a/2b/2c) now only applies to the Projects relation. All other relations (Owner, otherPeople, etc.) require explicit @mentions. This prevents source page relations like DRI or Additional Members from polluting the Contacts field.
Only relations with explicit TODOS_PROP_xxx mappings are loaded from Notion. Unmapped relations are discovered but not loaded, reducing API calls and preventing false positive matches.
Owner relation is excluded from contextual matching strategies. Owner resolution uses its dedicated flow: heading match, @mention, or AI extraction.
Removed "contact" as an owner source. Owner now comes from:
- Heading match (with AI disambiguation if multiple)
- @mention (exact match priority)
- AI extraction (validated against owner DB)
Fuzzy matching code was already removed in a prior session. Relation matching now uses only @mentions (Strategy 1a/1b) and contextual matching (Strategy 2a/2b/2c, Projects only).