
The Philosophy (important, because it shapes the system)
You are not automating action.
You are automating attention.
So the system must:
- Remember behavior over time
- Reduce noise aggressively
- Surface why someone matters
- Never decide what to do
If automation sends messages, it’s already broken.
High-Level System Overview
n8n becomes the memory + reasoning layer, not the scraper.
Daily Trigger
→ Collect Engagement Signals
→ Normalize Profiles
→ Update Memory Store
→ Apply Signal Rules
→ Rank & Filter
→ Morning Alert (3–5 profiles)
DATA MODEL (non-negotiable)
Before workflows, define what you store.
Profile Table (core memory)
profile_id
linkedin_url
name
headline
company
industry
role
first_seen
last_seen
engagement_count_7d
engagement_count_30d
last_engagement_type
Engagement Log (event stream)
profile_id
post_url
engagement_type (comment | reaction)
timestamp
post_author
This separation is what allows pattern detection.

WORKFLOW 1: Daily Engagement Collector
Trigger
- Cron → every morning (e.g. 6:30 AM)
Step 1: Scrape Engagement Data
Input:
- List of your own post URLs
- Or last N posts from profile
Collected signals:
- Comments
- Reactions (likes, celebrates, insights)
Each record becomes:
{ profile_url, name, type, post_url, timestamp }
⚠️ Correction:
Tracking reactions is not optional.
High-intent people often react repeatedly before commenting.
Step 2: Normalize Profiles
LinkedIn URLs are messy.
You must:
- Strip tracking params
- Convert /in/xyz/ → canonical ID
- Deduplicate across posts
Result:
canonical_profile_id
This is how memory survives months.
Step 3: Noise Filtering (early, brutal)
Immediately discard:
- Profiles without profile photos
- Obvious engagement pods
- Recruiters (if irrelevant)
- Students (if not target)
Rules example:
headline contains "student" → drop
headline contains "growth hacker" → drop
company = "LinkedIn" → drop
Noise filtered early = cheaper system later.
WORKFLOW 2: Memory Update Engine
This workflow updates behavior over time.
For each engagement event:
If profile exists
- Increment counters
- Update last_seen
- Append engagement log
If new profile
- Enrich once (headline, role, industry)
- Initialize counters
⚠️ Correction:
Do not re-enrich every time.
That’s slow, expensive, and unnecessary.
WORKFLOW 3: Signal Detection Logic (the brain)
This is where “warmth” is defined.
Signal Rules (examples)
Rule 1: Repeat Engagement
engagement_count_7d ≥ 2
→ Flag:
“Commented twice this week”
Rule 2: Cross-Post Interaction
engaged_with ≥ 2 different posts
→ Flag:
“Engaged across multiple posts”
Rule 3: ICP Match
industry IN [past_clients_industries]
role MATCHES [founder, ceo, head of growth]
→ Flag:
“Matches past clients”
Rule 4: Escalating Behavior
reaction → comment progression
→ Flag:
“Engagement intensity increasing”
This is an underrated signal.
WORKFLOW 4: Scoring (but subtle)
No numeric score shown to the user.
Internally:
+2 repeat engagement
+2 ICP match
+1 recent activity
-2 noisy role
Used only for ranking, not decisions.
WORKFLOW 5: Daily Alert Composer
Final filter:
- Top 3–5 profiles only
- Must have at least 1 strong signal
- Must be recent (≤ 7 days)
Alert Format (example)
Today’s profiles worth noticing:
- Name
- Commented twice this week
- Matches past client profile
- Engaged on Post X
- Name
- Reacted to last two posts
- Founder in SaaS
- New but consistent
No CTA.
No suggestion.
No pressure.
DELIVERY (choose one)
- Email (plain text, short)
- Slack DM
- Notion page (daily refresh)
Keep it skimmable in under 2 minutes.
If it takes longer, you failed.
What This System Is (and Isn’t)
This system IS:
- A memory amplifier
- A pattern detector
- A signal filter
This system is NOT:
- A growth hack
- A lead scraper
- An outreach bot

Why This Actually Works
Most people:
- Chase volume
- Forget context
- Burn trust
This system:
- Respects timing
- Surfaces intent
- Preserves human judgment
That’s why it scales without breaking relationships.

