Decision Rationale
Groq for n8n agent nodes, not Gemini Gemini produced "too many requests" and "service unavailable" errors under repeated sequential calls. Groq on llama-3.3-70b-versatile proved reliable under the same load and significantly faster
Allowlist for LinkedIn geography, not blocklist A blocklist requires knowing every non-target country subdomain in advance. An allowlist requires knowing only the five target subdomains — everything else blocked by default
Partial unique index on email, not unique constraint Supabase unique constraint treats two null values as equal — rejecting the second null-email prospect as a duplicate. Partial index enforces uniqueness only when email IS NOT NULL
has_full_name gate before Hunter Email Finder Hunter's Email Finder by Name returns 400 error when first_name equals last_name — which happens when a single-word name is split. The IF gate prevents the API call
Domain-aware email filtering Prospect domain emails always pass through regardless of blocked domain list — prevents legitimate business emails from being filtered
Semi-manual email send Every outreach email is written and sent by Rohit manually. This is a positioning decision, not a limitation. The system does the research. The human does the relationship
Service role key in n8n, anon key in Lovable n8n writes using the service role key (bypasses RLS). Lovable reads using the anon key (subject to RLS). Public dashboard link cannot modify data
Six-API email waterfall No single email finding API has comprehensive coverage. Running Prospeo, Hunter, and Snov in waterfall sequence maximises coverage without significantly increasing cost since each only fires when the previous returned nothing
Dual trigger on W0 Cron handles daily automation. Manual webhook enables ad-hoc sourcing runs. Both paths converge at the same processing logic
SplitInBatches loop output, not done output Done output fires only after all items are exhausted and carries no data. Loop output fires once per item with data. Always connect processing nodes to loop output