AI-Powered Cold Email Generator for Job Seekers, Freelancers, and Startups
PitchSnag is a sophisticated Next.js application that leverages AI to help professionals craft personalized cold emails and LinkedIn messages. Whether you're seeking internships, full-time roles, freelance gigs, or startup funding, PitchSnag analyzes your profile and generates tailored outreach content that opens doors.
- AI-Powered Email Generation: Uses Google Gemini AI to create personalized cold emails and LinkedIn messages
- Multi-Template Support: Job search, freelance pitching, and startup funding templates
- Lead Analysis: Intelligent analysis of potential contacts from CSV/Excel files
- Profile Building: Automatic extraction and enhancement of user profiles from resumes/pitch decks
- Workflow Management: Step-by-step guided process for creating outreach campaigns
- Job Seekers: Perfect for landing internships, research roles, or full-time positions
- Freelancers: Tailored for client acquisition and project pitching
- Startup Founders: Optimized for investor outreach and funding campaigns
- Content Analysis: PDF parsing for resumes, pitch decks, and business plans
- Lead Qualification: Automatic lead scoring and relevance analysis
- Email Editor: Rich text editor with formatting and attachment support
- Preview & Edit: Full editing capabilities before sending
- Export Options: Download emails as text files or copy to clipboard
- Next.js 15 - React framework with App Router
- TypeScript - Type-safe development
- Tailwind CSS - Utility-first styling
- Radix UI - Accessible component primitives
- TipTap - Rich text editor for email composition
- Clerk - Authentication and user management
- tRPC - End-to-end typesafe APIs
- Prisma - Database ORM with PostgreSQL
- Aurinko - Email service integration
- AI SDK - Google Gemini AI integration
- Google Gemini - Primary AI model for content generation
- OpenRouter - Alternative AI provider
- PDF Parser - Resume and document analysis
- CSV/Excel Parser - Lead data processing
- Node.js 18+
- PostgreSQL database
- Google Generative AI API key
- Clerk account for authentication
- Aurinko account for email integration
Create a .env.local
file in the root directory:
# Database
DATABASE_URL="postgresql://username:password@localhost:5432/pitchsnag"
# Authentication (Clerk)
NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY="your_clerk_publishable_key"
CLERK_SECRET_KEY="your_clerk_secret_key"
NEXT_PUBLIC_CLERK_SIGN_IN_URL="/sign-in"
NEXT_PUBLIC_CLERK_SIGN_UP_URL="/sign-up"
# AI Services
GOOGLE_GENERATIVE_AI_API_KEY="your_gemini_api_key"
OPENROUTER_API_KEY="your_openrouter_api_key"
# Email Service (Aurinko)
AURINKO_CLIENT_ID="your_aurinko_client_id"
AURINKO_CLIENT_SECRET="your_aurinko_client_secret"
# App URL
NEXT_PUBLIC_APP_URL="http://localhost:3000"
- Clone the repository
git clone https://github.com/your-username/pitchsnag.git
cd pitchsnag
- Install dependencies
npm install
- Set up the database
npx prisma generate
npx prisma db push
- Start the development server
npm run dev
- Open the application
Navigate to
http://localhost:3000
in your browser.
- Sign Up/Sign In: Create an account using Clerk authentication
- Go to Workflows: Click "Go to Workflows" from the dashboard
- Select Template: Choose from Job Search, Freelance, or Funding
- Upload Files:
- Resume/Pitch Deck: PDF document containing your profile
- Leads File: CSV/Excel file with contact information
- Enter Prompt: Describe your goals and preferences
- Generate Content: Let AI create personalized emails and LinkedIn messages
- Enhanced Intent: AI analyzes and enhances your initial prompt
- Profile Analysis: Extracts and structures information from your documents
- Lead Analysis: Processes and qualifies leads from your uploaded file
- Content Generation: Creates personalized emails and LinkedIn messages for each lead
- Rich Text Editing: Format emails with bold, italic, lists, and more
- Attachments: Add files to your emails
- Preview Mode: Review content before sending
- Copy/Download: Export emails for use in other platforms
- Send Integration: Direct sending through connected email accounts
src/
βββ app/ # Next.js App Router pages
β βββ api/ # API routes
β βββ mail/ # Email client interface
β βββ workflows/ # Workflow management
β βββ page.tsx # Landing page
βββ components/ # Reusable UI components
β βββ ui/ # Base UI components
β βββ workflow-*.tsx # Workflow-specific components
βββ lib/ # Utility libraries
βββ mail-agent/ # AI processing core
β βββ buildProfile.ts # Profile analysis
β βββ leadAnalysis.ts # Lead processing
β βββ mailWriter.ts # Email generation
β βββ intentAgent.ts # Intent enhancement
βββ server/ # tRPC server setup
βββ hooks/ # React hooks
βββ types/ # TypeScript type definitions
- User Input β Intent Agent (AI enhancement)
- Documents β Content Analyzer (PDF parsing)
- Enhanced Intent + Content β Profile Builder
- Leads File β Lead Analyzer
- Profile + Leads β Email/LinkedIn Writer
- Generated Content β Workflow Editor
The application supports multiple AI providers:
- Google Gemini (Primary):
gemini-2.0-flash
- OpenRouter (Alternative): Various models available
- Aurinko: Handles email sending and account management
- OAuth: Secure email account connection
- SMTP: Alternative email sending method
Key entities:
- Users: Clerk-managed user accounts
- Workflows: Saved workflow configurations
- Accounts: Connected email accounts
- Emails/Threads: Email management
- Recent graduates seeking entry-level positions
- Experienced professionals changing careers
- Students looking for internships
- Researchers seeking academic positions
- Consultants acquiring new clients
- Designers pitching creative projects
- Developers seeking contract work
- Writers building client relationships
- Seed-stage companies seeking initial funding
- Series A/B companies approaching VCs
- Bootstrapped startups looking for angel investors
- Corporate partnerships and collaborations
- Data Encryption: All data encrypted in transit and at rest
- Secure Authentication: Clerk-powered authentication with MFA support
- API Security: Rate limiting and request validation
- GDPR Compliant: User data rights and privacy controls
# Install Vercel CLI
npm i -g vercel
# Deploy
vercel --prod
# Use the Dockerfile in the root directory
docker build -t pitchsnag .
docker run -p 3000:3000 pitchsnag
Ensure all environment variables are configured in your deployment platform.
- Response Times: < 2s for AI-generated content
- Scalability: Supports concurrent users with optimized database queries
- Caching: Redis caching for frequently accessed data
- CDN: Static assets served via CDN
We welcome contributions! Please follow these steps:
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature
) - Commit your changes (
git commit -m 'Add amazing feature'
) - Push to the branch (
git push origin feature/amazing-feature
) - Open a Pull Request
- Follow TypeScript best practices
- Use Prettier for code formatting
- Write tests for new features
- Update documentation as needed
POST /api/workflow
- Create new workflowPOST /api/workflow/step
- Process workflow stepPOST /api/workflow/update
- Update workflow content
account.*
- Email account managementworkflow.*
- Workflow operationsemail.*
- Email sending and management
AI Generation Failures
- Check API key configuration
- Verify rate limits haven't been exceeded
- Ensure proper file formats (PDF for documents, CSV/XLSX for leads)
Email Integration Issues
- Verify Aurinko credentials
- Check OAuth callback URLs
- Ensure email permissions are granted
Database Connection
- Verify PostgreSQL connection string
- Run
npx prisma db push
to sync schema - Check database user permissions
This project is licensed under the MIT License. See the LICENSE file for details.
- Google Gemini for AI capabilities
- Clerk for authentication services
- Aurinko for email integration
- Vercel for deployment platform
- Radix UI for accessible components
- Documentation: docs.pitchsnag.com
- Issues: GitHub Issues
- Discord: Community Chat
- Email: support@pitchsnag.com
Built with β€οΈ for professionals who want to make meaningful connections
PitchSnag - Turn cold outreach into warm conversations