Your CRM that listens.
Sage is a passive sales intelligence layer that sits on top of your existing CRM. It listens to your sales calls, extracts insights using Amazon Nova, proactively surfaces what you're forgetting, and syncs to your existing CRM via MCP.
- Passive Listening — No wake words, no commands. Just have the conversation.
- Auto-Extraction — Contacts, deals, follow-ups, sentiment, buying signals extracted automatically.
- Proactive Insights — "You haven't followed up with Acme in 20 days."
- CRM Sync — One-way sync (Sage → CRM) with Salesforce, HubSpot, Pipedrive via MCP.
- Visual Pipeline — Deal boards, stuck-deal alerts, sentiment trends on Echo Show.
# Clone the repo
git clone https://github.com/DawnofGenX/sage.git
cd sage
# Start with Docker
docker compose up
# Or run locally
cd mcp-server
python3 -m venv .venv
.venv/bin/pip install -r requirements.txt
.venv/bin/pip install -e . # required: installs src/ as a package
.venv/bin/python -m src.data.seed
.venv/bin/python -m uvicorn src.api.rest:app --port 8000
cd web-simulator && npm install && npm run devThe Docker path needs no manual seed — entrypoint.sh seeds on first boot.
cd mcp-server
.venv/bin/python -m pytest tests/ -q # expect: 298 passedThe pip install -e . step is not optional. The suite imports from tools.crud import ..., so src/ must be installed as a package; with dependencies alone
you get collection errors (No module named 'tools') and zero tests run — see
the verified 18-error negative case in docs/test-report.md.
| Tool | Description |
|---|---|
extract_from_call |
Process call transcript → structured CRM data |
get_contact_context |
Full contact history, deals, interactions |
get_pipeline_health |
Deal stages, stuck deals, sentiment trends |
create_contact |
Add new contact |
update_contact |
Update existing contact |
create_deal |
Add new deal |
update_deal_stage |
Move deal to new stage |
schedule_followup |
Create follow-up reminder |
draft_followup_email |
Generate follow-up email draft |
log_call |
Log a call record |
get_deal_insights |
Sentiment, risks, buying signals |
get_daily_briefing |
Morning summary |
get_todays_followups |
Prioritized action items |
get_weekly_review |
Weekly performance summary |
search_contacts |
Fuzzy search |
sync_to_crm |
Sync to external CRM |
get_company_context |
Company-wide contacts, deals, health |
get_activities |
Activity stream for a contact or deal |
get_deal_history |
Stage-change history for a deal |
get_deal_timeline_events |
Merged stage-change + activity stream, oldest first |
get_deals |
Every deal, ready for a pipeline board (with measured stuck status) |
create_task |
Create a task |
enrich_contact |
Enrich a contact with context |
get_forecast |
Weekly/monthly deal forecast |
run_agentic_loop |
Transcript → 5-step chained tool run over SSE |
See docs/architecture.md for the full architecture diagram.
See CONTRIBUTING.md.
MIT
More writing on this stack: https://dev.to/dawnofgenx