Skip to main content

MailPilot

Agent-operated CRM with Gmail as the communication layer.

See it in action

Overview

MailPilot manages contacts, companies, and communication workflows through Gmail API. It is designed to be operated by AI agents -- Claude Code as the strategic orchestrator and an internal Pydantic AI agent for real-time reactive work.

Two-Layer Intelligence

  1. Claude Code -- strategic orchestrator. Creates workflows, assigns contacts, reviews outcomes, generates reports. Operates the system via CLI.
  2. Internal Pydantic AI agent -- subordinate tactical executor. Handles inbound email classification, auto-replies, and follow-up scheduling within workflows.

Key Capabilities

  • Contact and company management -- track relationships, tag for segmentation, annotate with notes
  • Activity timeline -- unified chronological log of all interactions per contact
  • Email workflows -- inbound auto-reply and outbound campaigns via Gmail API with service account delegation
  • Task scheduling -- deferred agent work with scheduled execution for long-running processes
  • Reporting -- Claude Code queries the database and generates activity summaries, relationship health, and campaign effectiveness reports

Install

MailPilot ships on PyPI as mailpilot-crm. The package installs the mailpilot command. Python 3.14 or later is required.

Install with uv:

uv tool install mailpilot-crm

Or install with pip:

pip install mailpilot-crm

Verify the install:

mailpilot --version

Quick Start

MailPilot needs PostgreSQL 18 and a Google service account with domain-wide delegation for the Gmail API.

Create the database. MailPilot provisions the schema on first connection:

createdb mailpilot

Point MailPilot at the database:

mailpilot config set database_url postgresql://localhost/mailpilot

Set the Google service account credentials:

mailpilot config set google_application_credentials /path/to/service-account.json

Set the Anthropic API key:

mailpilot config set anthropic_api_key sk-ant-...

Create the Gmail account MailPilot operates:

mailpilot account create --email user@example.com --display-name "User Name"

Sync the inbox:

mailpilot account sync

Start the event-driven sync loop:

mailpilot run

License

Copyright 2026 Konstantin Borovik.

Licensed under the Apache License, Version 2.0. See LICENSE for the full text.

Release files for mailpilot-crm 0.18.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for mailpilot-crm 0.18.2
File Size Uploaded
mailpilot_crm-0.18.2.tar.gz 177.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for mailpilot-crm 0.18.2
File Interpreter ABI Platform
mailpilot_crm-0.18.2-py3-none-any.whl Python 3 none any Details

Total release size: 372.7 kB

Release files / mailpilot_crm-0.18.2.tar.gz

Download URL mailpilot_crm-0.18.2.tar.gz
Size 177.2 kB
Tags Source
SHA-256 checksum
How to use checksums
d158a432cf9d20b04ba5bc206de8562a9b3a0e0ce76afbbfa625c45be579f05e
BLAKE2b-256 checksum
How to use checksums
c3eabc6220e574355f3f5461afd9938f85117996040f6cc85d1ff9c569bacc14
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 20, 2026.

Transparency log

Release files / mailpilot_crm-0.18.2-py3-none-any.whl

Download URL mailpilot_crm-0.18.2-py3-none-any.whl
Size 195.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
0aa1f28eb7a8c6bc4eaf93b099cc6927c0bbe16be945fa84532656e45a417b8f
BLAKE2b-256 checksum
How to use checksums
50f30b3ad27a7ce6b42328f9ed4838d03efce71d0f2097962353864639b6a1ce
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 20, 2026.

Transparency log

Release history Release notifications | RSS feed

0.35.0

2 release files

0.34.2

2 release files

0.34.1

2 release files

0.34.0

2 release files

0.33.0

2 release files

0.32.0

2 release files

0.31.0

2 release files

0.30.1

2 release files

0.30.0

2 release files

0.29.0

2 release files

0.28.0

2 release files

0.27.0

2 release files

0.26.0

2 release files

0.25.1

2 release files

0.25.0

2 release files

0.24.0

2 release files

0.23.1

2 release files

0.23.0

2 release files

0.22.5

2 release files

0.22.4

2 release files

0.22.3

2 release files

0.22.2

2 release files

0.22.1

2 release files

0.22.0

2 release files

0.21.0

2 release files

0.20.2

2 release files

0.20.1

2 release files

0.19.1

2 release files

0.18.3

2 release files

This release

0.18.2 This release

2 release files

0.18.1

2 release files

0.18.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page