Lightweight contact and deal tracker with agent-driven follow-ups and pipeline reviews, built with Upjack.
View on mpak registry | Built by NimbleBrain
- 3 entity types with JSON Schema definitions and
allOfcomposition - 4 custom domain tools for pipeline management and interaction tracking
- 2 bundled skills: follow-up coaching and daily pipeline review
- Hooks: auto-trigger follow-up coach on new interactions and deal stage changes
- Schedules: daily weekday pipeline review at 9 AM
- 3 named views: active pipeline, needs follow-up, recent interactions
- Seed data with realistic contacts, deals, and interactions
- Synapse UI: pipeline + contacts toggle, slide-over detail panel with view/edit/create modes, contact search, mobile-responsive cards
| Entity | Prefix | Schema | Notes |
|---|---|---|---|
| Contact | ct_ |
contact.schema.json | People — the hub entity. Deals and interactions link here. |
| Deal | dl_ |
deal.schema.json | Sales opportunities with stage, value, and close date. |
| Interaction | ix_ |
interaction.schema.json | Activity log: meetings, emails, calls, notes. |
| Tool | Purpose |
|---|---|
move_deal_stage |
Advance/regress a deal with auto close-date and probability |
log_interaction |
Create an interaction with auto-wired contact relationship |
pipeline_summary |
Aggregate metrics by stage: count, value, win rate |
contact_timeline |
Full interaction history for a contact (newest first) |
Ensures every interaction has a concrete next step. Auto-sets follow-up dates based on interaction type (meetings: 2 days, calls: 5 days, emails: 3 days). Triggered on interaction.created and deal.updated (stage change).
Daily health check of the sales pipeline. Identifies stale deals (no interaction in 14+ days), overdue follow-ups, and past-due close dates. Runs weekdays at 9 AM.
synapse-crm/
├── manifest.json
├── context.md
├── pyproject.toml
├── Makefile
├── schemas/
│ ├── contact.schema.json
│ ├── deal.schema.json
│ └── interaction.schema.json
├── skills/
│ ├── follow-up-coach/SKILL.md
│ └── pipeline-reviewer/SKILL.md
├── seed/
│ ├── sample-contacts.json
│ ├── sample-deals.json
│ └── sample-interactions.json
├── src/synapse_crm/
│ ├── __init__.py
│ ├── server.py
│ └── tools/
│ ├── __init__.py
│ ├── move_deal_stage.py
│ ├── log_interaction.py
│ ├── pipeline_summary.py
│ ├── contact_timeline.py
│ ├── find_or_create_contact.py
│ └── link_deals_to_contacts.py
├── ui/ # React + Vite + Synapse SDK
│ ├── package.json
│ ├── vite.config.ts
│ └── src/
│ ├── App.tsx
│ ├── tokens.ts
│ ├── components/ # DetailPanel, DealView, ContactView, DealCard, PipelineSummaryBar
│ ├── views/ # PipelineView, ContactListView
│ └── hooks/ # useDeals, useContacts, usePipelineSummary
└── tests/ # pytest
make run # stdio mode for local MCP host development
make run-http # HTTP mode on port 8001
make dev # vite dev server for the UI
make bundle # refresh deps/ snapshot for platform install