Skip to main content

World's Best Sales CLI


████████╗██╗  ██╗███████╗     ██████╗ ███████╗███████╗██╗ ██████╗███████╗
╚══██╔══╝██║  ██║██╔════╝    ██╔═══██╗██╔════╝██╔════╝██║██╔════╝██╔════╝
   ██║   ███████║█████╗      ██║   ██║█████╗  █████╗  ██║██║     █████╗
   ██║   ██╔══██║██╔══╝      ██║   ██║██╔══╝  ██╔══╝  ██║██║     ██╔══╝
   ██║   ██║  ██║███████╗    ╚██████╔╝██║     ██║     ██║╚██████╗███████╗
   ╚═╝   ╚═╝  ╚═╝╚══════╝     ╚═════╝ ╚═╝     ╚═╝     ╚═╝ ╚═════╝╚══════╝

                         ██████╗██╗     ██╗
                        ██╔════╝██║     ██║
                        ██║     ██║     ██║
                        ██║     ██║     ██║
                        ╚██████╗███████╗██║
                         ╚═════╝╚══════╝╚═╝

[paces at the front of the conference room]

Listen up. I got us a new tool. It's called The Office CLI.

60 sales commands. You can combine them however you want. You can create any sales play.

Runs in your terminal, Claude Code, Claude Cowork, or Codex. Connects to LinkedIn and HubSpot.

The point is: this is how we beat Staples.

[looks directly at camera]

Alright — let me show you how to get it.

Install

For users:

pipx install the-office-cli

For contributors (develop on the latest source):

git clone https://github.com/your-org/the-office-cli.git && cd the-office-cli
python3 -m venv venv && source venv/bin/activate
pip install -e .

Use it where you work

Claude Code — run Claude Code, then:

pipx install the-office-cli

Codex — run Codex, then:

pipx install the-office-cli

Claude Cowork

Claude Cowork → Settings → Connectors → Add custom connector → The Office

Quick start

This is some examples how you can use it:

Understand

the-office tour                         # menu of every command + description
the-office <command> --schema           # full JSON contract + example
the-office <command> --dry-run          # preview

Create an account

the-office create-account \
  --company-name "Dunder Mifflin" \
  --website dundermifflin.com \
  --email michael@dundermifflin.com \
  --password thatsWhatSheSaid2026

Log in

the-office login \
  --email michael@dundermifflin.com \
  --password thatsWhatSheSaid2026

Connect LinkedIn

the-office linkedin connect account

Search for accounts

echo '{
  "keywords": "print shop",
  "industry": "Printing Services",
  "headcount": "51-200",
  "location": "Scranton, PA",
  "limit": 25
}' | the-office linkedin search classic accounts

Search for leads

echo '{
  "job_position": ["Founder", "Co-Founder", "CEO", "CSO", "VP of Sales", "Director of Sales"],
  "current_company": ["Lackawanna Printing", "Electric City Press", "Scranton Print Works", "Keystone Graphics", "Pocono Press", "NEPA Printing Co", "Steamtown Print Shop", "Valley Print & Copy", "Wyoming Avenue Printers", "Dickson City Press"],
  "location": "Scranton, PA",
  "limit": 175
}' | the-office linkedin search classic leads

Create campaign

echo '{
  "name": "Lackawanna County Blitz",
  "note": "Hi {first_name}, Michael Scott from Dunder Mifflin — same-day paper delivery with a dedicated rep. Open to exploring?",
  "follow_up_note": "{first_name}, our clients save 15-20% vs big box suppliers.",
  "follow_up_delay": 3,
  "daily_outreach_limit": 25,
  "filters": {
    "job_position": ["Founder", "Co-Founder", "CEO", "CSO", "VP of Sales", "Director of Sales"],
    "current_company": ["Lackawanna Printing", "Electric City Press", "Scranton Print Works", "Keystone Graphics", "Pocono Press", "NEPA Printing Co", "Steamtown Print Shop", "Valley Print & Copy", "Wyoming Avenue Printers", "Dickson City Press"],
    "location": "Scranton, PA"
  },
  "total_leads_to_source": 175
}' | the-office campaign create custom

Send invite

the-office linkedin send invite \
  --provider-id ACoAABxyz123 \
  --message "Hi Jan, Michael Scott from Dunder Mifflin — same-day paper delivery with a dedicated rep. Open to exploring?"

Combine commands

Combine any command with any other. JSON in, JSON out. Ask an agent. Build the sales plays no other sales tool could.

Find a job posting for an Office Manager and send an invite

echo '{"keywords": "office manager scranton"}' \
  | the-office linkedin search classic jobs \
  | jq -r '.items[0].poster.provider_id' \
  | xargs -I {} the-office linkedin send invite \
      --provider-id {} \
      --message "Saw you'"'"'re hiring an Office Manager — Dunder Mifflin handles the paper, same-day delivery. Happy to get you set up before day one."

Find someone asking about paper suppliers and send an invite

echo '{"keywords": "best paper supplier scranton"}' \
  | the-office linkedin search classic posts \
  | jq -r '.items[0].author.provider_id' \
  | xargs -I {} the-office linkedin send invite \
      --provider-id {} \
      --message "Saw your post asking about paper suppliers — Dunder Mifflin delivers same-day in Lackawanna County. Happy to chat."

Commands

60 commands across 12 groups:

info — 1 command

  • tour

auth — 5 commands

  • login
  • logout
  • whoami
  • create-account
  • fire-drill

campaign — 8 commands

  • list
  • get
  • update
  • delete
  • status
  • create custom
  • create ai
  • create signals

lead — 5 commands

  • list
  • get
  • create
  • update
  • delete

linkedin — 20 commands

  • me
  • connect account
  • reconnect account
  • check connection
  • retrieve profile
  • retrieve company
  • send invite
  • send message
  • start chat
  • list relations
  • list chats
  • list messages
  • list user messages
  • search parameters
  • search classic leads
  • search classic accounts
  • search classic posts
  • search classic jobs
  • search sales navigator leads
  • search sales navigator accounts

account — 6 commands

  • list
  • get
  • create
  • update
  • delete
  • import

report — 1 command

  • report

outreach — 1 command

  • list

user — 5 commands

  • list
  • get
  • create
  • update
  • delete

settings — 2 commands

  • get
  • update

Layout

the-office-cli/
├── pyproject.toml           
├── README.md   
├── CLAUDE.md               
├── src/the_office_cli/
│   ├── main.py             
│   ├── config.py            
│   ├── cli/
│   │   ├── main.py        
│   │   ├── decorators.py   
│   │   └── flags.py         
│   ├── commands/          
│   │   ├── auth.py
│   │   ├── campaign.py
│   │   ├── lead.py
│   │   ├── linkedin.py
│   │   ├── account.py
│   │   ├── report.py
│   │   ├── outreach.py
│   │   ├── user.py
│   │   ├── settings.py
│   │   ├── task.py
│   │   └── info.py
│   ├── network/
│   │   ├── session.py      
│   │   └── errors.py       
│   └── utils/
│       ├── output.py       
│       ├── schema.py        
│       └── registry.py     
└── tests/                 

Tech stack

  • Status: stable (v1.0.16)
  • Language: Python 3.11+
  • CLI: Click 8+
  • HTTP: httpx 0.27+
  • Auth: JWT in ~/.the-office/session.json
  • Config: ~/.the-office/config.json
  • Build: setuptools, entry the-office
  • Tests: pytest

Contributing

PRs welcome. Here's the dev flow:

git clone https://github.com/your-org/the-office-cli.git && cd the-office-cli
python3 -m venv venv && source venv/bin/activate
pip install -e .
pytest

License

MIT

LICENSE

Contact

Email:

hello@the-office.ai

Website:

the-office.ai

Metadata

Release files for the-office-cli 1.0.17

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

Source distribution (sdist)

Source distribution for the-office-cli 1.0.17
File Size Uploaded
the_office_cli-1.0.17.tar.gz 55.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for the-office-cli 1.0.17
File Interpreter ABI Platform
the_office_cli-1.0.17-py3-none-any.whl Python 3 none any Details

Total release size: 112.9 kB

Release files / the_office_cli-1.0.17.tar.gz

Download URL the_office_cli-1.0.17.tar.gz
Size 55.6 kB
Tags Source
SHA-256 checksum
How to use checksums
f10ebff1fd8b7764c686941e104dee6f19bd6778372b4e43d64005c7aa4eb9e4
BLAKE2b-256 checksum
How to use checksums
dbc5cf27959beae52c366809f5cd6abbb645f75be29baf58bca8d87bd43de723
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.11.16

Release files / the_office_cli-1.0.17-py3-none-any.whl

Download URL the_office_cli-1.0.17-py3-none-any.whl
Size 57.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
9f192c7e9671cee6011874753014d7922a8d4b1158afceb00ee054d1582811c6
BLAKE2b-256 checksum
How to use checksums
0f1b7e9f3e497ce36aef038ebf48879353c760788d200f4a5ff568fb08afe515
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.11.16

Release history Release notifications | RSS feed

This release

1.0.17 This release

2 release files

1.0.16

2 release files

1.0.15

2 release files

1.0.14

2 release files

1.0.13

2 release files

1.0.12

2 release files

1.0.11

2 release files

1.0.10

2 release files

1.0.9

2 release files

1.0.8

2 release files

1.0.7

2 release files

1.0.6

2 release files

1.0.5

2 release files

1.0.4

2 release files

1.0.3

2 release files

1.0.2

2 release files

1.0.1

2 release files

1.0.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