Skip to content

0xjitsu/sales_ops_command_center

Repository files navigation

Sales Ops Command Center

Open-source field sales toolkit for teams on the ground.

Plan routes on a map. Send email campaigns. Manage your pipeline. All powered by Google Sheets.

License: AGPL v3 Deploy with Vercel Python 3.8+ Google Sheets PRs Welcome Dual License


Quick Start · How-To Guide · Documentation · Deploy


Why This Exists

Most field sales teams are stuck between two extremes: expensive CRMs they barely use, or scattered spreadsheets with no tooling. This project is the middle ground — a lightweight, self-hosted sales ops platform that gives your team real tools without the overhead.

No subscriptions Fork it, deploy it, own it
No vendor lock-in Your data lives in Google Sheets, not someone else's database
No training needed Sales reps get a map and an email tool; managers get a dashboard

Quick Start

# 1. Clone and deploy (takes ~2 minutes)
git clone https://github.com/0xjitsu/gcs.git
cd gcs
npx vercel deploy --prod

# 2. Set up your data backend
cp .env.example .env
# Fill in your Google Sheets IDs → see prompts/00-setup-service-account.md

# 3. Test the connection
pip install -r requirements.txt
python scripts/test-connection.py

Or just open route-planner.html locally — it works standalone with sample data, no setup needed.


What's Inside

+-------------------+     +-------------------+     +-------------------+
|                   |     |                   |     |                   |
|   ROUTE PLANNER   |     |     OUTBOUND      |     |  GOOGLE SHEETS    |
|                   |     |                   |     |  (Your Database)  |
|  Plan field       |     |  Send email       |     |                   |
|  visits on a map  |     |  campaigns to     |     |  Every lead,      |
|  Optimize routes  |     |  new prospects    |     |  every contact,   |
|  Export to        |     |  Preview &        |     |  every follow-up  |
|  Google Maps      |     |  customize each   |     |  — all in one     |
|                   |     |  email            |     |  place             |
+-------------------+     +-------------------+     +-------------------+
        |                         |                         |
        +-----------+-------------+-------------------------+
                    |
              PASSWORD PROTECTED

Route Planner (/)

Plan your day on a map. See all leads as color-coded pins, build a route, and get turn-by-turn directions.

Feature What It Does
Interactive Map All your leads shown on a map — click any pin for details
Route Optimization Add stops, drag to reorder — the system calculates the best driving order
Google Maps Export One click sends your route to Google Maps for navigation
Smart Filters Narrow by state, zone, priority (A/B/C), or visit status
Visit Tracking Mark leads as visited with dates and notes
Save & Load Export your route as JSON to pick up where you left off
WhatsApp Sharing Copy a text summary of your route to share with the team

Outbound Email (/outbound)

Send personalized email campaigns at scale. Pick leads, choose a template, customize the message, preview, and send.

Feature What It Does
Lead Selection Browse your lead list, select who to email with checkboxes
5 Email Sequences Pre-written sequences (intro, follow-up, value props) — auto-fills lead details
Per-Email Customization Each email auto-personalizes; you can edit before sending
Preview Mode See exactly what each email will look like before it goes out
Batch Send Send to multiple leads at once with one click
Warm-Up Protocol Built-in sending limits to protect your sender reputation

Pipeline Database (Google Sheets)

All lead data lives in Google Sheets — your single source of truth. No database to manage.

Sheet What's In It
Master Leads Every lead with full details — 31 columns of contact info, visit history, priority, notes
Email Sequences Email templates for outbound campaigns
Qualification Leads Lead scoring and qualification details
Enrichment Log Records of email/phone lookups (auto-filled by the enrichment tool)
Send Log Every email sent, when, and to whom

Key fields you'll update daily:

Field What to Enter Example
Business Name Company name Sample Cabinet Shop
Priority A = hot, B = warm, C = cold A
Contact Person Who you spoke with Jane
Phone Best number 555-123-4567
Stage Pipeline status New Lead / Qualified / Proposal Sent / Won
Next Follow-Up When to reach out next 2026-03-15
Visit Notes What happened "Interested in hardware samples"

For the full 31-column reference, see docs/column-map.md.


How Data Flows

You (Field Sales)
    |
    v
+-- Route Planner --+    +-- Outbound --+
|  Plan visits      |    |  Send emails |
|  Track visits     |    |  Track sends |
+------|------------+    +------|-------+
       |                        |
       v                        v
+------+------------------------+------+
|         GOOGLE SHEETS                |
|  (Master Leads + Email Sequences)    |
|                                      |
|  - Lead info        - Send logs      |
|  - Visit notes      - Enrichment     |
|  - Pipeline stages  - Templates      |
+--------------------------------------+
       |
       v
  Dashboard (auto-generated)
  Pipeline reports, conversion rates

Google Sheets is your database. Everything the team enters — leads, contacts, visit notes, email logs — lives there. The Route Planner and Outbound tools read from and write to these sheets. The dashboard auto-generates from the same data.


Password Protection

The web app requires a team password to access.

  • Shared password across the team
  • Session-based (closing the tab logs you out)
  • Works on any device — phone, tablet, laptop

Need the password? Ask your team lead.


Project Structure

gcs/
├── public/                       # The website (deployed to Vercel)
│   ├── index.html                # Route Planner page
│   ├── outbound.html             # Outbound Email Campaign page
│   └── auth.js                   # Password protection
│
├── gcs-outbound/                 # Backend email tools (Python CLI)
│   ├── gcs_outbound.py           # CLI with 10 commands (enrich, send, verify, etc.)
│   ├── config.py                 # Settings: sheet IDs, sender identity, rate limits
│   ├── sheet_sync.py             # Reads/writes Google Sheets safely (never overwrites)
│   ├── email_scraper.py          # Finds missing emails from business websites
│   ├── email_verifier.py         # 3-tier email verification before sending
│   ├── templates.py              # 5 email sequence templates
│   ├── gmail_sender.py           # Sends emails via Gmail API or SMTP
│   └── README.md                 # Outbound system documentation
│
├── docs/                         # Comprehensive documentation
│   ├── how-to-guide.md           # Start here if you're new
│   ├── USER_GUIDE.md             # Step-by-step guide for sales reps
│   ├── outbound-guide.md         # Guide to the email campaign system
│   ├── data-persistence.md       # How data is stored (Google Sheets setup)
│   ├── architecture.md           # Technical system overview
│   ├── column-map.md             # Full 31-column spreadsheet reference
│   ├── changelog.md              # Version history
│   ├── branch-naming.md          # Branch naming conventions
│   ├── git-workflow.md           # Git workflow (test → staging → main)
│   └── contributing.md           # How to contribute
│
├── scripts/                      # Automation scripts
│   ├── github_ops.py             # GitHub API helper (8 commands)
│   ├── add-leads.py              # Bulk-add leads to spreadsheet
│   ├── weekly-summary.py         # Generate weekly pipeline report
│   ├── test-connection.py        # Test Google Sheets connection
│   └── dashboard.gs              # Pipeline dashboard (Apps Script)
│
├── prompts/                      # AI workflow prompts
│   ├── 00-setup-service-account.md
│   ├── 01-add-omi-leads.md
│   ├── 02-pipeline-dashboard.md
│   └── 03-omi-processor.md
│
├── route-planner.html            # Standalone route planner (no auth, for dev)
├── vercel.json                   # Vercel deployment config
├── requirements.txt              # Python dependencies
└── .env.example                  # Environment variable template

Developer Setup

Click to expand (for developers and IT only)

Prerequisites

  • Python 3.8+
  • Google Cloud service account with Sheets API access
  • Node.js (optional, for Vercel CLI deployment)

Installation

pip install -r requirements.txt

# Copy env template and fill in your IDs
cp .env.example .env

# Set up Google Sheets API access
# Follow: prompts/00-setup-service-account.md

# Test the connection
python scripts/test-connection.py

Outbound CLI

# See all commands
python gcs-outbound/gcs_outbound.py --help

# Check lead coverage (how many have emails, phones, etc.)
python gcs-outbound/gcs_outbound.py enrich-report

# Find missing emails from websites (preview first)
python gcs-outbound/gcs_outbound.py enrich --source master --dry-run

# Verify emails are deliverable
python gcs-outbound/gcs_outbound.py verify-emails --source master --dry-run

# Send a test email
python gcs-outbound/gcs_outbound.py test-send --to your@email.com

Deploy to Vercel

# Option A: One-click deploy (recommended)
# Click the "Deploy with Vercel" button at the top of this README

# Option B: Connect GitHub repo (auto-deploys on push to main)
# Go to vercel.com/new → Import your repo

# Option C: CLI
npx vercel deploy --prod

Environment Variables

Configure in .env (see .env.example for the full template):

Variable Purpose
MASTER_SHEET_ID Google Sheets ID for Master Leads
QUAL_SHEET_ID Google Sheets ID for Qualification Leads
GOOGLE_CREDENTIALS_PATH Path to service account JSON
GITHUB_TOKEN GitHub API access (for scripts)
SMTP_HOST / SMTP_PORT / SMTP_USER / SMTP_PASS Email sending

Changing the Password

The site password is in public/auth.js. To change it:

# Generate a new SHA-256 hash
echo -n 'your-new-password' | sha256sum

# Update the HASH constant in public/auth.js with the new hash

Customizing for Your Team

This project is designed to be forked and customized:

  1. Replace sample leads — Edit the lead arrays in public/index.html and public/outbound.html with your real territory data
  2. Set your zones — Update zone names to match your territory structure
  3. Configure personal stops — Set your home base, office, and regular stops in the route planner settings
  4. Brand it — Change the company name in public/auth.js and nav bar in public/index.html
  5. Connect your sheets — Add your Google Sheets IDs to .env

See the How-To Guide for a detailed customization walkthrough.


Documentation

For Sales Reps

For Developers


Tech Stack

Layer Technology
Frontend Vanilla HTML/CSS/JS, Canvas-based map HTML5 JavaScript
Backend Python CLI tools (gspread, Gmail API) Python
Database Google Sheets (via service account) Google Sheets
Hosting Vercel (static site) Vercel
Auth Client-side SHA-256 password gate Auth
Email Gmail API + SMTP with warm-up protocol Gmail

License

License: AGPL v3 Commercial License

This project is dual-licensed:

  • Open Source — free under AGPL v3. Use, modify, and distribute freely as long as your changes stay open source.
  • Commercial — need to use this in a proprietary product or offer it as a hosted service without sharing source code? Contact us for a commercial license.

Why AGPL? We want this project to stay open and community-driven. AGPL ensures that if someone builds on this code, the community benefits too. Companies that need proprietary use can purchase a commercial license.

For commercial licensing inquiries, open an issue or contact the maintainer.


Built for sales teams who want real tools without the overhead.

Deploy with Vercel

Start Here · Report a Bug · Request a Feature

About

Open-source field sales toolkit — route planning, lead management, email outreach, and pipeline dashboards. Powered by Google Sheets. Deploy to Vercel in 2 minutes. AGPL v3 + commercial license available.

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors