You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Evidence-first hooks and follow-up emails from any company URL. A SaaS platform that generates research-backed outbound sales hooks using AI, with CRM integrations, automated follow-up sequences, and per-customer workflow automation.
# Install dependencies
pnpm install
# Copy environment variables
cp deploy/.env.example .env.local
# Fill in your API keys (see Environment Variables below)# Run development server
pnpm dev
Public app URL (e.g. https://www.getsignalhooks.com)
Optional (CRM integrations):
Variable
Description
HUBSPOT_CLIENT_ID
HubSpot OAuth app client ID
HUBSPOT_CLIENT_SECRET
HubSpot OAuth app client secret
SALESFORCE_CLIENT_ID
Salesforce Connected App client ID
SALESFORCE_CLIENT_SECRET
Salesforce Connected App client secret
Optional (VPS/Docker deployment):
Variable
Description
N8N_DOCKER_IMAGE
n8n Docker image (default: n8nio/n8n:latest)
N8N_PORT_START / N8N_PORT_END
Port range for n8n containers
N8N_DOCKER_NETWORK
Docker network name
APP_DOMAIN / N8N_DOMAIN
Domain names for Caddy
CADDY_ADMIN_URL
Caddy admin API URL
Database Migrations
Migrations are in drizzle/. Run them against your Turso database:
# Using Turso CLI
turso db shell <your-db-name>< drizzle/0000_faithful_calypso.sql
turso db shell <your-db-name>< drizzle/0001_add_api_keys.sql
turso db shell <your-db-name>< drizzle/0002_add_users_and_usage.sql
turso db shell <your-db-name>< drizzle/0003_add_stripe_fields.sql
turso db shell <your-db-name>< drizzle/0004_add_user_fields.sql
Or paste each file's contents into the Turso dashboard shell (remove --> statement-breakpoint lines).
This runs the Next.js app + Caddy reverse proxy with automatic SSL.
Stripe Setup
Create 3 products in Stripe Dashboard (Starter £29, Pro £149, Concierge £499) as monthly recurring
Copy Price IDs to STRIPE_PRICE_STARTER, STRIPE_PRICE_PRO, STRIPE_PRICE_CONCIERGE
Create webhook endpoint at https://your-domain.com/api/webhooks/stripe
Subscribe to events: checkout.session.completed, customer.subscription.updated, customer.subscription.deleted
Copy webhook signing secret to STRIPE_WEBHOOK_SECRET
SendGrid Setup
Create SendGrid account and API key
Verify sender domain with DNS records (CNAME + TXT for DKIM/DMARC)
Set SENDGRID_API_KEY and SENDGRID_FROM_EMAIL
Optional (Monitoring & Cron):
Variable
Description
NEXT_PUBLIC_SENTRY_DSN
Sentry DSN for error monitoring
SENTRY_ORG
Sentry organization slug
SENTRY_PROJECT
Sentry project slug
SENTRY_AUTH_TOKEN
Sentry auth token (for source maps)
CRON_SECRET
Secret for authenticating Vercel Cron jobs
Key Features
Evidence-First Hooks: AI generates hooks anchored on real public signals (earnings, hiring, tech changes) with evidence tier classification (A/B/C) and source citations
Multi-Channel Variants: LinkedIn, cold call, video scripts alongside email hooks
Custom Sequences: Multi-step, multi-channel sequence builder with templates
Intent Scoring: Buying signal detection (hiring, funding, tech changes) with lead temperature