# ๏ฟฝ๏ฟฝ Outreach Engine A professional Node.js email outreach system for automated campaigns to law firms with tracking, templates, and comprehensive testing. ## ๐Ÿš€ Quick Start ### Prerequisites - Node.js (v14+) - Gmail account with App Password ### Setup 1. **Install dependencies:** ```bash npm install ``` 2. **Configure environment:** ```bash cp env.development.example .env.development # Edit .env.development with your Gmail credentials ``` 3. **Test configuration:** ```bash npm run test-config ``` ## ๐Ÿ“Š Data Management ### Where to Change Data **Firm Data**: Edit `firm.json` - contains all law firm contacts organized by state: ```json { "State": [ { "firmName": "Example Law Firm", "location": "City", "website": "https://example.com", "contactEmail": "contact@example.com" } ] } ``` **Email Templates**: Edit files in `templates/` directory: - `outreach.html` - Main outreach template - `campaign-1-saas.html` - SaaS campaign - `campaign-2-data-service.html` - Data service campaign - `campaign-3-license.html` - License campaign - `campaign-4-gui.html` - GUI campaign - `general-intro.html` - General introduction - `employment-layer.html` - Employment law focus ## ๐Ÿงช Testing ### Test Mode (SAFE - Never sends to real firms) ```bash # Test single email npm run test-email # Test all campaigns with different recipients npm run test-campaigns # Test with custom limit EMAIL_TEST_LIMIT=5 npm start ``` ### Test Configuration - **Test Mode**: All emails go to `EMAIL_TEST_RECIPIENT` (never to actual firms) - **Multi-recipient**: Use `EMAIL_TEST_RECIPIENTS` for campaign testing - **Auto-generated**: System creates test firms if needed ## ๐ŸŽฏ Available Commands ### Core Operations - `npm start` - Run with default settings - `npm run start:dev` - Development mode - `npm run start:prod` - Production mode ### Testing - `npm test` - Run all tests - `npm run test:watch` - Watch mode for development - `npm run test:coverage` - Generate coverage report - `npm run test-email` - Send single test email - `npm run test-campaigns` - Test all campaigns ### Utilities - `npm run migrate` - Migrate JSON data to database - `npm run validate-json` - Validate firm.json syntax - `npm run test-config` - Check environment configuration ## โš™๏ธ Key Configuration ### Environment Variables (`.env.development`) ```env # Required EMAIL_USER=your-email@gmail.com EMAIL_PASS=your-app-password # Test Mode (SAFE) EMAIL_TEST_MODE=true EMAIL_TEST_RECIPIENT=your-test-email@gmail.com # Rate Limiting DELAY_MINUTES=5 MAX_EMAILS_PER_HOUR=15 # Tracking TRACKING_ENABLED=true TRACKING_PORT=3000 # Debug DEBUG=true LOG_LEVEL=debug ``` ### Rate Limiting - **Default**: 5 minutes between emails - **Hourly limit**: 15 emails/hour - **Pause**: Every 50 emails, pause 30 minutes ## ๐Ÿ“ˆ Email Tracking **Automatic tracking** when `TRACKING_ENABLED=true`: - **Open tracking**: Invisible pixel tracks email opens - **Click tracking**: All links wrapped with tracking URLs - **Analytics**: Database stores all tracking events - **Server**: Runs on port 3000 by default ## ๐Ÿ› ๏ธ Development ### Project Structure ``` outreach-engine/ โ”œโ”€โ”€ index.js # Main application โ”œโ”€โ”€ config/ # Configuration management โ”œโ”€โ”€ lib/ # Core libraries โ”œโ”€โ”€ templates/ # Email templates โ”œโ”€โ”€ tests/ # Test suite โ”œโ”€โ”€ scripts/ # Utility scripts โ”œโ”€โ”€ firm.json # Firm data โ””โ”€โ”€ logs/ # Application logs ``` ### Testing Framework - **Jest**: Unit testing framework - **Coverage**: Code coverage reporting - **Test files**: `tests/lib/*.test.js` - **Setup**: `tests/setup.js` ### Database - **SQLite**: Local database for tracking and campaigns - **Migration**: `npm run migrate` converts JSON to database - **Tables**: `firms`, `email_sends`, `tracking_events` ## ๐Ÿ”’ Security Features ### Test Mode Protection - โœ… **100% Safe**: Test mode NEVER sends to actual firms - โœ… **Fail-safe**: Application stops if test recipient not configured - โœ… **Clear logging**: Every email shows test mode status - โœ… **Validation**: Double-check before sending ### Best Practices - Always test first with your own email - Use Gmail App Passwords (not regular passwords) - Monitor your email account for warnings - Respect rate limits and delays ## ๐Ÿ› Troubleshooting ### Common Issues - **"Invalid login"**: Check Gmail App Password - **"No emails sent"**: Verify `.env` configuration - **"JSON error"**: Run `npm run validate-json` ### Debug Mode ```bash DEBUG=true npm start ``` Shows detailed SMTP, template, and rate limiting information. ## ๐Ÿ“‹ Legal Compliance - Compliant with CAN-SPAM Act - Includes unsubscribe mechanisms - Professional business contact information - Respects opt-out requests --- **Need more details?** See `PROJECT.md` for technical architecture and development information.