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, "follow up with Sarah and Mike about the budget" will add Sarah and Mike to Other People if they exist in the Contacts database.
Matching rules are stricter than Owner:
- Exact name match only (case-insensitive)
- Skipped if ambiguous (multiple exact matches)
- Skipped if already in Owner or @mentions
- Task targets are excluded (e.g., "ping Kevin" won't match Kevin since he's the target of a contact action)
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).