Decision Intelligence Platform
Insight is an extensible platform that collects operational data from across an organisation's toolchain, resolves all activity to unified person identities, and delivers actionable analytics for productivity improvement, bottleneck detection, process performance tracking, and team health reviews.
This repository is the monorepo for the Insight product. It contains:
src/β source code for all platform componentsdocs/β canonical product and technical specifications (specs, designs, ADRs)
- What Is Insight
- Architecture Overview
- Repository Structure
- Connector Coverage
- Key Concepts
- Working with This Repo
- Working with
docs/
Insight collects events and metrics from the tools teams already use β version control, task trackers, communication platforms, AI coding assistants, HR systems, and more β and unifies them into a single, identity-resolved data model.
Primary use cases:
| Use Case | Description |
|---|---|
| Process performance | Cycle time, PR throughput, deployment frequency, task flow |
| Productivity analytics | Developer output, AI tool adoption, collaboration patterns |
| Bottleneck detection | Where work gets stuck across the delivery pipeline |
| Team health | Meeting load, async/sync balance, focus time |
| Performance review | Individual and team contribution signals across tools |
| AI adoption tracking | Usage, model distribution, and ROI across AI tools |
Insight is not a replacement for source systems β it reads from them, resolves identities, and provides a governed analytics layer on top.
The solution consists of five main components:
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Frontend (SPA) β
β Dashboards Β· Analytics Β· AI adoption Β· PR metrics Β· Team healt β
ββββββββββββββββββββββββββββββ¬ββββββββββββββββββββββββββββββββββββββ
β REST API (auth + data)
ββββββββββββββββββββββββββββββΌββββββββββββββββββββββββββββββββββββββ
β Backend (REST API Server) β
β Authentication Β· Authorization Β· User Management β
β Data Proxy to Database β
ββββββββββββββββββββββββββββββ¬ββββββββββββββββββββββββββββββββββββββ
β query
ββββββββββββββββββββββββββββββΌββββββββββββββββββββββββββββββββββββββ
β Database (Analytics Store) β
β Bronze β Silver β Gold (identity-resolved) β
ββββββββββββββββββββββββββββββ²ββββββββββββββββββββββββββββββββββββββ
β write
ββββββββββββββββββββββββββββββ΄ββββββββββββββββββββββββββββββββββββββ
β Connector Orchestration Layer β
β Scheduling Β· Retry Β· State management Β· Monitorin β
ββββββββββββββββββββββββββββββ²ββββββββββββββββββββββββββββββββββββββ
β collect
ββββββββββββββββββββββββββββββ΄ββββββββββββββββββββββββββββββββββββββ
β Connectors β
β Git Β· Task Tracking Β· Collaboration Β· AI Tools Β· HR Β· CRM ... β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
| # | Component | Description |
|---|---|---|
| 1 | Connectors | Source-specific integrations that pull raw data from external tools (git, task trackers, AI tools, HR systems, etc.) and write it to Bronze tables in the analytics database. |
| 2 | Connector Orchestration | Scheduling, retry, state management, and monitoring layer that coordinates connector runs and ensures reliable data ingestion. |
| 3 | Database | Analytics store holding the Bronze β Silver β Gold pipeline. Bronze is raw source data; Silver unifies schemas and resolves identities; Gold contains aggregated business metrics. |
| 4 | Backend | REST API server providing authentication, authorization, user management, and data proxy services. Serves as the central authentication gateway and data access layer, integrating with enterprise SSO systems. |
| 5 | Frontend | Single-page application (SPA) providing engineering managers, team leads, and developers with analytics and visualizations of git activity, AI tool adoption, pull request metrics, and team productivity. |
- Bronze β Raw, source-faithful tables. Field names and types preserved from the API. One table per entity type per source.
- Silver Step 1 β Source tables unified into common schemas (e.g.
collab_chat_activitymerges Slack + Zulip + M365 Teams). - Silver Step 2 β Identity resolution:
email/login/user_idresolved to canonicalperson_idvia the Identity Manager. - Gold β Aggregated, business-level metrics (cycle time, throughput, adoption rates, etc.).
Source code for all platform components. Mirrors the component structure in docs/components/.
src/
βββ connectors/ β connector implementations (one directory per source)
βββ orchestrator/ β connector orchestration service
βββ backend/ β REST API server (Django)
βββ frontend/ β SPA (React + TypeScript)
Canonical product, domain, and component specifications. The single source of truth for everything architectural and technical.
docs/
βββ components/ β per-component specifications
β βββ connectors/ β per-source connector specs (PRD + DESIGN + ADR)
β β βββ README.md β connector index + unified streams table
β β βββ git/ β GitHub, Bitbucket Server, GitLab
β β βββ task-tracking/ β YouTrack, Jira
β β βββ collaboration/ β Microsoft 365, Slack, Zoom, Zulip
β β βββ wiki/ β Confluence, Outline
β β βββ support/ β Zendesk, Jira Service Management
β β βββ ai-dev/ β Cursor, Windsurf, GitHub Copilot, JetBrains
β β βββ ai/ β Claude API, Claude Team, OpenAI API, ChatGPT Team
β β βββ hr-directory/ β BambooHR, Workday, LDAP / Active Directory
β β βββ crm/ β HubSpot, Salesforce
β β βββ ui-design/ β Figma
β β βββ testing/ β Allure TestOps
β β
β βββ orchestrator/ β connector orchestration layer specs
β βββ backend/ β REST API server specs
β βββ frontend/ β SPA specs
β
βββ domain/ β cross-cutting domain designs
β βββ connector/ β Connector Framework: generic architecture, automation
β β βββ specs/DESIGN.md β boundary, BaseConnector, Unifier, onboarding
β β β (per-source details stay in components/connectors/)
β βββ identity-resolution/ β Identity Resolution Service: person registry,
β βββ specs/DESIGN.md β alias store, Bootstrap Job, Golden Record,
β β match rules, org hierarchy, GDPR erasure
β
βββ shared/ β shared API guidelines, status codes, versioning
βββ api-guideline/
docs/domain/ vs docs/components/:
| Folder | Contains | When to look here |
|---|---|---|
docs/domain/ |
Cross-cutting platform domains: concepts, algorithms, data models, and contracts that span multiple components | Understanding how identity resolution works, what the connector framework contract is, why the Medallion boundary is where it is |
docs/components/ |
Per-component and per-connector specs: PRD (requirements), DESIGN (schemas, APIs, implementation details), ADR | Building, extending, or reviewing a specific connector, the backend, or the frontend |
Incoming documents pending triage and integration into docs/. Not yet canonical.
| Folder | Status | Intended destination |
|---|---|---|
architecture/CONNECTORS_ARCHITECTURE.md + CONNECTOR_AUTOMATION.md |
Synthesized β docs/domain/connector/specs/DESIGN.md |
Complete |
architecture/IDENTITY_RESOLUTION_V*.md + IDENTITY_RESOLUTION.md |
Synthesized β docs/domain/identity-resolution/specs/DESIGN.md |
Complete |
architecture/PRODUCT_SPECIFICATION.md |
Draft | docs/domain/ or root product spec |
architecture/permissions/ |
Draft ADRs | docs/components/backend/specs/ADR/ |
airbyte-declarative-standalone/ |
Migrated | docs/components/connectors/collaboration/m365/ |
stats/backend/ |
Draft ADRs | docs/components/backend/specs/ADR/ |
stats/frontend/ |
Draft | docs/components/frontend/specs/ |
streams/ |
Draft schemas | docs/components/connectors/ β per-source stream definitions |
This repo uses Cypilot β an AI agent framework for spec authoring, validation, and traceability. The cypilot/ directory contains the project-specific configuration (artifact registry, rules, kit bindings). The engine itself lives in the upstream repo.
| Domain | Sources | Silver Stream |
|---|---|---|
| Version Control | GitHub, Bitbucket Server, GitLab | class_commits, class_pr_activity |
| Task Tracking | YouTrack, Jira | class_task_tracker |
| Collaboration | M365, Slack, Zoom, Zulip | class_communication_metrics, class_document_metrics |
| Wiki | Confluence, Outline | class_wiki_pages, class_wiki_activity |
| Support | Zendesk, JSM | class_support_activity |
| AI Dev Tools | Cursor, Windsurf, Copilot, JetBrains | class_ai_dev_usage |
| AI Tools | Claude API/Team, OpenAI API, ChatGPT Team | class_ai_api_usage, class_ai_tool_usage |
| HR / Directory | BambooHR, Workday, LDAP | class_people, class_org_units |
| CRM | HubSpot, Salesforce | TBD |
| Design Tools | Figma | class_design_activity |
| Quality / Testing | Allure TestOps | TBD |
Identity Resolution β Every Bronze table carries a source-native user identifier (email, login, uuid, etc.). The Identity Manager resolves these to a stable person_id in Silver Step 2, enabling cross-source analytics (e.g. joining a developer's git activity with their task tracker throughput and AI tool usage).
Connector spec β Each connector defines its Bronze table schemas, identity fields, Silver/Gold target streams, and open questions. The {source}.md file is the full technical spec; specs/PRD.md captures the code-agnostic requirements.
Extendability β Adding a new data source means: (1) defining Bronze tables, (2) mapping identity fields, (3) routing to an existing or new Silver stream. The architecture is designed to accommodate new connectors without changes to existing pipelines.
- Browse specs β Start at
docs/components/connectors/README.mdfor the connector index, ordocs/domain/for cross-cutting platform concepts (identity resolution, connector framework). - Understand a domain β Read the relevant
docs/domain/{domain}/specs/DESIGN.mdfirst. These documents describe the platform's core algorithms, data contracts, and architectural decisions that span multiple components. - Add a connector β Follow the layout in any existing
docs/components/connectors/{domain}/{source}/directory. Usespecs/PRD.mdfor requirements andspecs/DESIGN.mdfor table schemas and pipeline mappings. - Add source code β Place code under
src/{component}/. The structure mirrorsdocs/components/βsrc/connectors/,src/backend/,src/frontend/,src/orchestrator/. - Cypilot β Run
cypilot onin a supported AI agent to activate assisted spec authoring, validation, and traceability. Cypilot is sourced from github.com/cyberfabric/cyber-pilot. - Inbox β Documents in
inbox/are drafts awaiting review. Do not reference them as canonical sources.
The docs/ folder is the single source of truth for all product specifications, architectural decisions, and technical designs. Every document here is considered canonical and must go through a review process before being merged.
docs/ describes the architecture and intent of the platform. The corresponding implementation lives in src/. When adding or changing source code, the relevant spec in docs/components/{component}/specs/DESIGN.md should be updated in the same PR (or a follow-up ADR opened if it's a significant design change).
Each component or connector has a specs/ subdirectory with three document types:
| File | Purpose | Who writes it |
|---|---|---|
specs/PRD.md |
Business and product requirements β actors, use cases, functional requirements, NFRs. Code-agnostic: no schemas, no implementation details. | Product / domain owners |
specs/DESIGN.md |
Technical design β Bronze table schemas, identity resolution mechanics, Silver/Gold pipeline mappings, data flow. | Engineering |
specs/ADR/ |
Architecture Decision Records β individual decisions that affect the design. | Engineering |
Business requirements, use cases, actor definitions, and functional/non-functional requirements belong in specs/PRD.md of the relevant component or connector.
- Create a branch.
- Edit
specs/PRD.mdβ add or update requirements. Keep it code-agnostic: describe what the system must do, not how. - Open a PR for review. Once approved, merge.
specs/DESIGN.md is the authoritative technical specification for a component. It must reflect the current agreed-upon design at all times.
Minor changes (style fixes, formatting, clarifications, small field additions) can be committed directly to specs/DESIGN.md via a standard PR.
Major changes (data schema changes, new pipeline stages, significant architectural decisions, breaking changes to existing models) require an ADR first:
- Create a new ADR in
specs/ADR/describing the proposed change (context, options considered, decision, consequences). - Open a PR with the ADR only.
- Once the ADR is approved and merged, update
specs/DESIGN.mdin a follow-up commit or PR to reflect the accepted decision.
This ensures every significant design change has a traceable decision record before the canonical design document is updated.
specs/ADR/NNN-short-description.md
Example: specs/ADR/001-use-email-as-identity-key.md
Propose requirement change β edit PRD.md β PR β merge
Propose minor design change β edit DESIGN.md β PR β merge
Propose major design change β new ADR β PR β merge β update DESIGN.md