Skip to content

noxire-dev/vello

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

8 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Vello Logo

Vello

Automation-First Email Outreach System

Python SQLAlchemy Jinja2 License

Enterprise-grade email outreach automation with intelligent campaign management

Features β€’ Installation β€’ Usage β€’ Documentation β€’ Contributing


πŸš€ Features

Vello is an automation-first email outreach engine designed to handle cold email campaigns programmatically. Built with modern Python best practices, it emphasizes intelligent automation and deliverability safety.

Core Capabilities

Feature Description
πŸ€– Automated Decision-Making Classifies responses, manages inboxes, adjusts sending patterns automatically
πŸ“Š Deliverability-Safe Sending Warmup management, inbox rotation, intelligent pacing controls
πŸ”„ Dynamic Campaign Logic Multi-step campaigns with configurable timing and conditional flows
🧠 Smart Response Handling Intent analysis, automatic unsubscription, response classification
πŸ“§ Multi-Provider Support SMTP, SendGrid, and more (extensible architecture)
🎨 Template System Jinja2-based email templates with HTML and text support

Key Highlights

βœ… Production-Ready - Modular, extensible architecture following SOLID principles βœ… Type-Safe - Comprehensive type hints throughout the codebase βœ… Testable - Protocol-based design enables easy mocking and testing βœ… Scalable - Repository pattern and factory design for easy extension βœ… Maintainable - Clear separation of concerns and consistent patterns


🎯 Key Concepts

Automation-First Architecture

Vello is built around a set of configurable automation behaviors that control how the system:

  • βœ… Classifies and reacts to email responses automatically
  • βœ… Rotates between sending inboxes intelligently
  • βœ… Generates plaintext versions of email bodies
  • βœ… Adjusts sending times and pacing for optimal delivery
  • βœ… Warms up inboxes gradually to maintain deliverability
  • βœ… Cleans or maintains email lists automatically

This approach allows Vello to operate closer to a "programmatic SDR," reducing manual workload and making high-volume outreach safer and more consistent.

Extensible Campaign System

Campaigns consist of a sequence of steps, each with its own timing, subject, and template. Vello is designed to be extended into more advanced workflows, including:

  • Conditional branching based on recipient behavior
  • Nurturing paths for different lead segments
  • Adaptive follow-up logic with machine learning integration

Transparent and Source-Available

The application is source-available for review, auditing, and contribution. Self-hosting for personal or internal use is permitted, while commercial hosting or resale is restricted by the Vello Source-Available License.


πŸ“ Project Structure

This is a monorepo structure separating the Python backend and Next.js frontend:

vello/
β”œβ”€β”€ backend/                    # Python backend
β”‚   β”œβ”€β”€ .env                    # Environment variables
β”‚   β”œβ”€β”€ requirements.txt        # Python dependencies
β”‚   β”œβ”€β”€ setup.py                # Package installation config
β”‚   β”œβ”€β”€ src/
β”‚   β”‚   └── vello/              # Main package
β”‚   β”‚       β”œβ”€β”€ core/           # Database, models, config
β”‚   β”‚       β”œβ”€β”€ services/       # Business logic
β”‚   β”‚       β”œβ”€β”€ utils/          # Utility functions
β”‚   β”‚       β”œβ”€β”€ email/          # Email sending providers
β”‚   β”‚       └── api/            # REST API endpoints
β”‚   β”œβ”€β”€ examples/               # Usage examples
β”‚   β”œβ”€β”€ templates/              # Email templates (Jinja2)
β”‚   └── tests/                  # Test suite
β”‚
└── frontend/                   # Next.js web GUI (planned)
    β”œβ”€β”€ src/
    β”‚   β”œβ”€β”€ app/                # Next.js App Router
    β”‚   β”œβ”€β”€ components/         # React components
    β”‚   β”œβ”€β”€ lib/                # Utilities and API client
    β”‚   └── types/              # TypeScript types
    └── public/                 # Static assets

πŸ› οΈ Installation

Prerequisites

  • Python 3.8 or higher
  • pip (Python package manager)

Quick Start

  1. Clone the repository:

    git clone <your-repo-url>
    cd vello
  2. Navigate to backend and install dependencies:

    cd backend
    pip install -r requirements.txt
  3. Install the package in development mode:

    pip install -e .
  4. Configure environment variables:

    cp .env.example .env
    # Edit .env with your configuration
  5. Initialize the database:

    from vello.core.db import init_db
    init_db()

βš™οΈ Configuration

All configuration is managed through backend/.env.

Vello exposes both standard system settings (database, SMTP configuration, debug mode) and a set of automation flags that control intelligent behavior:

Setting Description
AUTO_CLASSIFY_RESPONSES Automatically classify replies (positive, neutral, negative)
AUTO_UNSUBSCRIBE_ON_REQUEST Unsubscribe leads who request removal
AUTO_ROTATE_INBOXES Rotate sender inboxes automatically
AUTO_ADJUST_SEND_TIMES Adjust send times to recipient local time
AUTO_PAUSE_RISKY_CAMPAIGNS Protect deliverability by pausing risky campaigns
WARMUP_ENABLED Enable inbox warmup with safe volume increases

These automation controls allow Vello to function with minimal human intervention while maintaining safe sending practices.

Configuration Files

  • backend/config/automation.json - Automation behavior flags
  • backend/config/warmup.json - Inbox warmup settings
  • backend/.env - Environment-specific settings (not committed)

πŸ’» Usage

Running Example Scripts

From the backend directory:

# Test intent analysis
python examples/test_analysis.py

# Test template loading
python examples/example_template_usage.py

# Test email sending (requires .env configuration)
python examples/example_email_usage.py

# Test campaign usage
python examples/example_campaign_usage.py

Using the Package

from vello.core.db import init_db, get_db
from vello.core.models import Campaign, Recipient
from vello.services import analyze_intent
from vello.utils import get_template_loader
from vello.email import get_email_provider

# Initialize database
init_db()

# Analyze response intent
intent = analyze_intent("Yes, I'm interested!")
print(f"Intent: {intent}")  # ResponseStatus.POSITIVE

# Load and render email templates
loader = get_template_loader()
html, text = loader.render_email(
    "welcome_series/initial_outreach",
    {"name": "John", "company": "Acme Corp"}
)

# Send emails
provider = get_email_provider()
result = provider.send_email(
    to="user@example.com",
    subject="Hello from Vello",
    body_html=html,
    body_text=text
)

if result.success:
    print(f"Email sent! Message ID: {result.message_id}")
else:
    print(f"Error: {result.error}")

Campaign Management

from vello.services.campaign.manager import CampaignManager
from vello.core.db import get_db

# Get database session
db = next(get_db())

# Create campaign manager
manager = CampaignManager(db)

# Create a new campaign
campaign = manager.create_campaign(
    name="Q4 Outreach",
    description="Quarterly outreach campaign"
)

# Add campaign steps
step1 = manager.add_campaign_step(
    campaign_id=campaign.id,
    position=1,
    subject="Initial Outreach",
    template_path="welcome_series/initial_outreach",
    delay_days=0
)

step2 = manager.add_campaign_step(
    campaign_id=campaign.id,
    position=2,
    subject="Follow-up",
    template_path="follow_up/no_response",
    delay_days=3
)

πŸ“š Documentation

For detailed documentation about the codebase architecture, design patterns, and development practices, see the WIKI.md.

Quick Links


πŸ—ΊοΈ Roadmap

Current Status: MVP βœ…

  • βœ… Core email sending infrastructure
  • βœ… Campaign management system
  • βœ… Intent analysis and response classification
  • βœ… Template system with Jinja2
  • βœ… SMTP provider implementation
  • βœ… Database models and migrations

Planned Features

  • πŸ”„ Next.js Web Interface - Visual campaign management for non-technical users
  • πŸ”„ Inbox Rotation Management - UI for managing multiple sending inboxes
  • πŸ”„ Delivery Analytics - Comprehensive reporting and analytics dashboard
  • πŸ”„ Additional Email Providers - Full support for SES, Mailgun, SendGrid
  • πŸ”„ Template Versioning - A/B testing and template versioning
  • πŸ”„ Advanced Campaign Logic - Conditional branching and nurturing paths
  • πŸ”„ Webhooks & Events - Event relay system for integrations
  • πŸ”„ Send-Time Optimization - ML-powered optimal send time prediction
  • πŸ”„ Smart Lead Enrichment - Automatic lead data enrichment
  • πŸ”„ Open-Core Model - Community extensibility and plugins

🀝 Contributing

We welcome contributions! Before contributing:

  1. Review the License - Ensure your use case aligns with permitted usage
  2. Check the Wiki - Familiarize yourself with the architecture and patterns
  3. Follow Code Style - Use type hints, follow existing patterns
  4. Write Tests - Add tests for new features
  5. Update Documentation - Keep the wiki and README up to date

Contribution Guidelines

  • Follow existing code patterns (protocols, factories, type hints)
  • Export new functionality from __init__.py files
  • Add examples to the examples/ directory
  • Update configuration files when adding new settings
  • Document design choices in the wiki

πŸ“„ License

Vello is released under the Vello Source-Available License, allowing:

  • βœ… Personal and internal use
  • βœ… Modification and contribution
  • βœ… Self-hosting for personal or internal use

While prohibiting:

  • ❌ Commercial resale
  • ❌ Offering Vello as a hosted service

See the LICENSE file for full details.


πŸ’¬ Support

For issues, questions, or feature requests:

  • πŸ“§ Open a GitHub Issue - Create an issue
  • πŸ“– Check the Wiki - WIKI.md for detailed documentation
  • πŸ’‘ Review Examples - Check backend/examples/ for usage patterns

🌟 Acknowledgments

Vello was originally developed by Mirako and is currently for private use by NovaLare. It is released as a source-available project to support transparency, community feedback, and future open-core development.


Built with ❀️ by the Vello Development Team

GitHub Documentation

Automation-First Email Outreach β€’ Production-Ready β€’ Type-Safe β€’ Extensible

About

Automation-First Email Outreach System

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages