Replace thread-ID-based conversation matching with email-address-based matching for more reliable conversation continuity. Key changes: - One conversation per email address (simpler model) - No data expiration (conversations persist indefinitely) - Post-completion support (questions and registration updates) - Versioned storage for registration updates (audit trail) - Admin notifications for registration changes This addresses the gap where parents sending new emails (instead of replying) would lose their registration progress. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
57 lines
2.5 KiB
Markdown
57 lines
2.5 KiB
Markdown
## 1. Update Conversation Storage
|
|
|
|
- [ ] 1.1 Modify `ConversationStore` to key conversations by normalized email address
|
|
- [ ] 1.2 Add `normalize_email()` helper function (lowercase, trim)
|
|
- [ ] 1.3 Update `_conversation_path()` to use email-based filename
|
|
- [ ] 1.4 Add `find_by_email()` method to replace thread-ID-based lookup
|
|
|
|
## 2. Update Email Channel
|
|
|
|
- [ ] 2.1 Remove `_resolve_thread_id()` from conversation matching logic
|
|
- [ ] 2.2 Pass sender email to agent instead of thread ID for conversation lookup
|
|
- [ ] 2.3 Keep thread ID handling for outbound reply headers (`In-Reply-To`, `References`)
|
|
- [ ] 2.4 Store most recent inbound message ID for reply threading
|
|
|
|
## 3. Update Agent Core
|
|
|
|
- [ ] 3.1 Modify `process_message()` to lookup conversation by email address
|
|
- [ ] 3.2 Add post-completion intent detection (question vs. update vs. new child)
|
|
- [ ] 3.3 Handle registration updates in completed conversations
|
|
- [ ] 3.4 Update prompts to guide LLM for post-completion states
|
|
|
|
## 4. Implement Versioned Registration Storage
|
|
|
|
- [ ] 4.1 Create versioned storage structure for registrations
|
|
- [ ] 4.2 Implement `save_registration_version()` method
|
|
- [ ] 4.3 Implement `get_registration_history()` method
|
|
- [ ] 4.4 Track change summary (which fields changed) between versions
|
|
- [ ] 4.5 Update `save_registration()` to use versioning for updates
|
|
|
|
## 5. Update Admin Notifications
|
|
|
|
- [ ] 5.1 Add `notify_registration_update()` method to `AdminNotifier`
|
|
- [ ] 5.2 Create email template for update notifications (include diff)
|
|
- [ ] 5.3 Distinguish "New Registration" vs "Registration Updated" subjects
|
|
- [ ] 5.4 Include version number in update notifications
|
|
|
|
## 6. Update Reminders
|
|
|
|
- [ ] 6.1 Remove expiration warnings from reminder templates
|
|
- [ ] 6.2 Update reminder messages to encourage completion without deletion threat
|
|
- [ ] 6.3 Remove any scheduled data cleanup jobs (if present)
|
|
|
|
## 7. Update Specs and Documentation
|
|
|
|
- [ ] 7.1 Update `conversation-flow.md` to remove expiration language
|
|
- [ ] 7.2 Update `channel-config.md` state management section
|
|
- [ ] 7.3 Update sample responses to remove expiration references
|
|
- [ ] 7.4 Update CLAUDE.md with new conversation matching behavior
|
|
|
|
## 8. Testing
|
|
|
|
- [ ] 8.1 Test: New email creates new conversation
|
|
- [ ] 8.2 Test: Follow-up email (same address, different thread) continues conversation
|
|
- [ ] 8.3 Test: Post-completion question is answered correctly
|
|
- [ ] 8.4 Test: Post-completion update creates new version and notifies admin
|
|
- [ ] 8.5 Test: Email address normalization works correctly
|