Star 历史趋势
数据来源: GitHub API · 生成自 Stargazers.cn
README.md

Customer Insights — Every customer signal, one clear answer

Open Customer Insights

Search calls, support tickets, Slack conversations, and company context from one private intelligence layer.

Customer Insights is an open-source, Clerk-authenticated workspace with a web chat, company and competitor views, semantic search powered by Together AI, scheduled Convex ingestion, and an MCP endpoint for compatible agents.

This repository contains application code and synthetic demo data only. It does not include a hosted deployment, customer data, or credentials.

What you get

  • Grounded chat across call transcripts, support tickets, and Slack
  • Semantic and keyword search with source inspection
  • Company timelines and customer-status views
  • Competitor mention tracking
  • An authenticated MCP server for coding agents and assistants
  • Optional Gong, Pylon, Slack, and company-enrichment integrations
  • A deterministic local seed dataset using reserved .example domains

Architecture

Gong / Pylon / Slack
        |
        | optional Convex ingestion jobs
        v
 conversations + text chunks + company context
        |
        | Together AI embeddings
        v
 Convex hybrid search
        |
        +--> authenticated web chat
        +--> company and competitor views
        +--> authenticated MCP endpoint

Each external integration is optional. Jobs without matching credentials skip safely, so you can begin with synthetic data and add only the sources you use.

Run locally

Prerequisites

1. Install and configure

bun install
cp .env.example .env.local

In Clerk, create a JWT template named convex. Add the Clerk keys, Together AI key, and a random INTERNAL_CONVEX_SECRET to .env.local.

2. Start Convex

In the first terminal:

bun run convex

Follow the Convex setup prompts on the first run. The command keeps the local backend running and updates generated types as Convex files change.

For a one-shot schema/function sync instead:

bun run convex:once

3. Load synthetic demo data

With Convex running:

bun run seed

The seed is deterministic and idempotent. It creates 12 fictional companies, 36 calls, 48 tickets, 84 searchable chunks, 24 Slack mentions, 24 timeline events, and a multi-vendor competitor leaderboard. It refuses to run over non-demo data unless you explicitly pass {"force":true} to the Convex function.

Remove only the synthetic rows with:

bun run seed:clear

4. Start the web app

In a second terminal:

bun run dev

Open http://localhost:3030.

Configuration

Core variables:

VariablePurpose
NEXT_PUBLIC_APP_URLPublic app origin; keep http://localhost:3030 locally
NEXT_PUBLIC_CONVEX_URLConvex deployment URL
NEXT_PUBLIC_CLERK_PUBLISHABLE_KEYClerk browser key
CLERK_SECRET_KEYClerk server key
CLERK_JWT_ISSUER_DOMAINIssuer for the Clerk JWT template named convex
INTERNAL_CONVEX_SECRETHigh-entropy secret for trusted server-to-Convex calls
TOGETHER_API_KEYTogether AI key for chat, embeddings, and classification

Optional integrations:

VariableEnables
GONG_ACCESS_KEY, GONG_ACCESS_KEY_SECRETGong call ingestion
PYLON_API_KEYPylon support-ticket ingestion
SLACK_MCP_XOXB_TOKENSlack search and enrichment
ORGANIZATION_EMAIL_DOMAINSDomains used to identify internal participants
EXA_API_KEYCompany enrichment
SALES_WINS_SLACK_CHANNEL_ID, SALES_WINS_INITIAL_TIMESTAMPOptional closed-won Slack ingestion

See .env.example for the full template.

Load real data

Scheduled jobs live in convex/crons.ts. Historical imports and embedding helpers live in scripts/:

bun run scripts/backfill.ts gong 365
bun run scripts/embed.ts

Imports can contain sensitive customer data. Local databases, exports, transcripts, and tickets are ignored by Git and must never be committed.

MCP server

The authenticated MCP endpoint is:

https://your-deployment.example/api/mcp

It uses Clerk OAuth and exposes tools for hybrid search, full source retrieval, company discovery, and configured Slack context. The signed-in web app shows connection details for supported clients.

Commands

bun run dev          # Next.js on port 3030
bun run convex       # Keep the Convex dev backend running
bun run convex:once  # Sync Convex once and exit
bun run seed         # Add synthetic demo data
bun run seed:clear   # Remove synthetic demo data
bun run test         # Unit tests
bun run typecheck    # TypeScript checks
bun run build        # Production build

The cover image is reproducible from public/cover/preview.html.

关于 About

Open-source customer insights workspace for calls, support, and Slack

语言 Languages

TypeScript98.8%
CSS0.4%
HTML0.4%
JavaScript0.4%

提交活跃度 Commit Activity

代码提交热力图
过去 52 周的开发活跃度
11
Total Commits
峰值: 5次/周
Less
More

核心贡献者 Contributors