The Origin & The Problem
As startups, freelance developers, and agencies launch marketing campaigns, leads start flowing in across various unstructured sources: cold emails, website contact forms, Typeforms, and social media DMs. In the chaos of running a business, manual copying and pasting of these inquiries into workspace organizers is slow and highly error-prone.
Existing CRM solutions are often over-engineered, heavy, and expensive for solo builders or small teams who already manage their entire pipeline inside Notion. LeadLooms was built to close this loop: acting as a silent, background listening agent that captures, parses, and populates inbound contacts automatically.
The Solution Architecture: LeadLooms monitors designated inboxes via secure IMAP/OAuth connections. When a potential lead lands in the inbox, an intelligent LLM parsing engine dissects the conversational text—extracting key parameters like name, company, timeline, budget, and project brief—and populates a pre-connected Notion database instantly.
Design Thinking: High-Efficiency UX
As the sole developer, I focused deeply on minimizing onboarding friction:
- No-code Integration: Onboarding takes under 2 minutes. Users simply connect their Notion workspace via official OAuth, choose a database, map standard columns (Client Name, Email, Budget, Brief), and configure forwarding rules.
- Zero Maintenance: The backend uses secure OAuth token refresh loops to listen asynchronously, meaning users set it up once and never have to touch the dashboard again.
- Accurate Extraction: Emails are often messy. Using structured schema extraction (JSON mode with OpenAI's model), the parser handles broken English, colloquial expressions, and complex budget ranges smoothly.
Database Schema & System Flow
Below is a high-level representation of LeadLooms' database structure designed to handle merchant tokens, parse logs, and database mappings securely:
-- Database Schema for LeadLooms
CREATE TABLE user_accounts (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
email VARCHAR(255) NOT NULL UNIQUE,
notion_access_token TEXT,
notion_database_id VARCHAR(255),
created_at TIMESTAMP WITH TIME ZONE DEFAULT now()
);
CREATE TABLE column_mappings (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
user_id UUID REFERENCES user_accounts(id) ON DELETE CASCADE,
client_name_field VARCHAR(100) DEFAULT 'Name',
client_email_field VARCHAR(100) DEFAULT 'Email',
budget_field VARCHAR(100) DEFAULT 'Budget',
brief_field VARCHAR(100) DEFAULT 'Brief',
mapped_at TIMESTAMP WITH TIME ZONE DEFAULT now()
);
CREATE TABLE parse_logs (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
user_id UUID REFERENCES user_accounts(id) ON DELETE CASCADE,
source_email VARCHAR(255) NOT NULL,
extracted_json JSONB NOT NULL,
notion_sync_status VARCHAR(50) DEFAULT 'success', -- 'success' | 'failed'
sync_error_message TEXT,
parsed_at TIMESTAMP WITH TIME ZONE DEFAULT now()
);
CI/CD Pipeline & Security
Because we handle proprietary email access and sensitive lead data, safety and pipeline guardrails are critical:
- Stripe-backed Subscriptions: Built a complete billing system using Stripe, utilizing webhook triggers to securely enable/disable email parser endpoints.
- Data Security: All user-supplied API keys and Notion authentication tokens are fully encrypted at rest using AES-GCM-256 before entering the database.
- Reliable Deployments: Hosted on Vercel with automatic deployments triggered on GitHub main merges. A serverless pipeline monitors email traffic efficiently without the overhead of heavy background VMs.