Metadata-Version: 2.4
Name: heartbeat-cli
Version: 0.1.0
Summary: A terminal heartbeat for founders, PMs, and anyone who needs a 30-minute pulse on what matters.
Author-email: Ashutosh Bansal <ashutoshbansal.206@gmail.com>
License: MIT
Keywords: productivity,cli,digest,founders,terminal
Requires-Python: >=3.10
Description-Content-Type: text/markdown
Requires-Dist: typer>=0.12.0
Requires-Dist: rich>=13.0.0
Requires-Dist: tomli>=2.0.0
Requires-Dist: tomli-w>=1.0.0
Requires-Dist: keyring>=24.0.0
Requires-Dist: google-auth>=2.0.0
Requires-Dist: google-auth-oauthlib>=1.0.0
Requires-Dist: google-api-python-client>=2.0.0
Requires-Dist: slack-sdk>=3.0.0
Requires-Dist: httpx>=0.25.0
Dynamic: requires-python

# heartbeat-cli

> A terminal heartbeat for founders, PMs, and anyone who needs a 30-minute pulse on what actually matters.

```
╭─ heartbeat · pulse @ 14:30 · Tuesday 24 Mar ──────────────────╮
│  ▸ run at 14:30:02  ·  next in 30 min                          │
╰────────────────────────────────────────────────────────────────╯

  🔴 ACTION NEEDED (3)

  ✉  Priya Mehta (Kapoor & Associates)  ·  unanswered 3h 14m
       Re: Q1 Compliance Automation — delivery timeline query

  ⛔  PharmaCo pipeline  ·  document ingestion blocked
       Reported by Rohan · awaiting vendor API credentials

  ⏰  AIC grant report  ·  deadline in 18h
       Assigned to Tanvi · last update 6h ago

  📋 FYI (3)

  ✓  InsureRight portal — v2 search module shipped

  📅  BD call · TechMahindra  ·  starts in 45 min · Google Meet

  💬  #kapoor-proj  ·  4 new messages since last pulse

                       sources: gmail · gcal · slack · notion · 0.8s
```

## Install

```bash
pip install heartbeat-cli
```

## Setup

```bash
pulse setup
```

Walks you through connecting Gmail, Google Calendar, Slack, and Notion.
All tokens are stored in your OS keychain — never in plaintext.

## Usage

```bash
# Run once — get your digest now
pulse

# Run as daemon — fires every 30 min while you're active
pulse --watch

# See what's connected
pulse status

# Show config
pulse config
```

## Connectors

| Connector | What it surfaces |
|---|---|
| Gmail | Unanswered client emails > 2h |
| Google Calendar | Meetings starting < 60 min, deadlines < 24h |
| Slack | Direct mentions, DMs, watched channel activity |
| Notion | Blocked tasks, tasks due soon with no recent update |

## Triage logic

Two tiers only — no LLM on the urgency path:

**🔴 Action needed:** Client email unanswered > 2h · task blocked · deadline < 24h · Slack mention

**📋 FYI:** Completed tasks · upcoming meetings · routine updates

Rule-based deliberately. A digest that fires 48 times a day must be fast, cheap, and produce zero false urgency.

## Requirements

- Python 3.10+
- macOS / Linux

## License

MIT
