feat: IMAP mail sync with thread-to-contact matching (PRD §6.1)
Real IMAP connection via imapflow library: - Connects to IMAP server (IMAPFlow, TLS on port 993) - Fetches recent messages (configurable limit, default 20) - Extracts: from, fromEmail, subject, date, snippet (200 chars) - Thread-to-contact matching (PRD §6.1): 1. Match sender email against persons table 2. If no person match, extract domain and match against company.website 3. Returns matchedCompany + matchedPerson for each email - Audit-logged (action: crm.mailsync:imap) - Zod validated (host, port, user, password, folder, limit) - 502 on IMAP connection failure with detail - 400 on validation failure Tested: invalid creds → 502 'IMAP connection failed', missing host → 400
This commit is contained in:
1 parent
7acc0c5451
commit
e45b68bb8b
1089 files changed
+260614
No files matched your search
@@ -0,0 +1,60 @@
|
||||
# Extract Workflow
|
||||
|
||||
Extract dynamic, content-adaptive wisdom from any content source.
|
||||
|
||||
## Input Sources
|
||||
|
||||
| Source | Method |
|
||||
|--------|--------|
|
||||
| YouTube URL | `fabric -y "URL"` to get transcript |
|
||||
| Article URL | WebFetch to get content |
|
||||
| File path | Read the file directly |
|
||||
| Pasted text | Use directly |
|
||||
|
||||
## Execution Steps
|
||||
|
||||
### Step 1: Get the Content
|
||||
|
||||
Obtain the full text/transcript. For YouTube, use `fabric -y "URL"` to extract transcript. Save to a working file if large.
|
||||
|
||||
### Step 2: Deep Read
|
||||
|
||||
Read the entire content. Don't extract yet. Notice:
|
||||
- What domains of wisdom are present?
|
||||
- What made you stop and think?
|
||||
- What's genuinely novel vs. commonly known?
|
||||
- What would {PRINCIPAL.NAME} highlight if he were reading this?
|
||||
- What quotes land perfectly?
|
||||
|
||||
### Step 3: Select Dynamic Sections
|
||||
|
||||
Based on your deep read, pick 5-12 section names. Rules:
|
||||
- Section names must be conversational, not academic
|
||||
- Each must have at least 3 quality bullets
|
||||
- Always include "Quotes That Hit Different" if source has quotable moments
|
||||
- Always include "First-Time Revelations" if genuinely new ideas exist
|
||||
- Be SPECIFIC — "Agentic Engineering Philosophy" not "Technology Insights"
|
||||
|
||||
### Step 4: Extract Per Section
|
||||
|
||||
For each section, extract 3-15 bullets. Apply tone rules from SKILL.md:
|
||||
- 8-20 words, flexible for clarity
|
||||
- Specific details, not vague summaries
|
||||
- Speaker's words when they're good
|
||||
- No hedging language
|
||||
- Every bullet worth telling someone about
|
||||
|
||||
### Step 5: Add Closing Sections
|
||||
|
||||
Always append:
|
||||
1. **One-Sentence Takeaway** (15-20 words)
|
||||
2. **If You Only Have 2 Minutes** (5-7 essential points)
|
||||
3. **References & Rabbit Holes** (people, projects, books, tools mentioned)
|
||||
|
||||
### Step 6: Quality Check
|
||||
|
||||
Run the quality checklist from SKILL.md before delivering.
|
||||
|
||||
### Step 7: Output
|
||||
|
||||
Present the complete extraction in the format specified in SKILL.md.
|
||||
Reference in new issue
Block a user