Skip to content

NimbleBrainInc/synapse-crm

Repository files navigation

CRM — Upjack Demo App

mpak NimbleBrain Discord License: MIT

Lightweight contact and deal tracker with agent-driven follow-ups and pipeline reviews, built with Upjack.

View on mpak registry | Built by NimbleBrain

What This Demonstrates

  • 3 entity types with JSON Schema definitions and allOf composition
  • 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 Types

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.

Custom Tools

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)

Skills

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.

File Structure

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

Running

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

About

Lightweight CRM with contact management, deal pipeline, and agent-driven follow-ups — Synapse app for NimbleBrain

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Packages

 
 
 

Contributors