Skip to content

cyberfabric/insight

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

185 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Insight

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 components
  • docs/ β€” canonical product and technical specifications (specs, designs, ADRs)

What Is Insight

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.


Architecture Overview

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 ...  β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Components

# 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 β†’ Silver β†’ Gold pipeline

  • 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_activity merges Slack + Zulip + M365 Teams).
  • Silver Step 2 β€” Identity resolution: email / login / user_id resolved to canonical person_id via the Identity Manager.
  • Gold β€” Aggregated, business-level metrics (cycle time, throughput, adoption rates, etc.).

Repository Structure

src/

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)

docs/

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

inbox/

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

cypilot/

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.


Connector Coverage

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

Key Concepts

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.


Working with This Repo

  • Browse specs β€” Start at docs/components/connectors/README.md for the connector index, or docs/domain/ for cross-cutting platform concepts (identity resolution, connector framework).
  • Understand a domain β€” Read the relevant docs/domain/{domain}/specs/DESIGN.md first. 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. Use specs/PRD.md for requirements and specs/DESIGN.md for table schemas and pipeline mappings.
  • Add source code β€” Place code under src/{component}/. The structure mirrors docs/components/ β€” src/connectors/, src/backend/, src/frontend/, src/orchestrator/.
  • Cypilot β€” Run cypilot on in 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.

Working with docs/

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).

Document types

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

Contribution workflow

Adding or updating requirements (PRD)

Business requirements, use cases, actor definitions, and functional/non-functional requirements belong in specs/PRD.md of the relevant component or connector.

  1. Create a branch.
  2. Edit specs/PRD.md β€” add or update requirements. Keep it code-agnostic: describe what the system must do, not how.
  3. Open a PR for review. Once approved, merge.

Updating the technical design (DESIGN)

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:

  1. Create a new ADR in specs/ADR/ describing the proposed change (context, options considered, decision, consequences).
  2. Open a PR with the ADR only.
  3. Once the ADR is approved and merged, update specs/DESIGN.md in 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.

ADR naming convention

specs/ADR/NNN-short-description.md

Example: specs/ADR/001-use-email-as-identity-key.md

Summary

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

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages