Skip to main content

Organizational Network Analysis (ONA) Platform

A comprehensive Python application for analyzing organizational networks using machine learning and graph analytics. This platform transforms digital exhaust (emails, Slack messages, calendar data, code commits, etc.) into actionable insights about organizational structure, collaboration patterns, and network dynamics.

Features

  • Multi-source Data Ingestion: Supports email, Slack/Teams, calendar, documents, code repositories, and HRIS systems
  • Graph Construction: Builds weighted, temporal organizational graphs with sophisticated edge weighting
  • Network Metrics: Computes centrality measures (degree, betweenness, eigenvector, closeness), structural holes, and core-periphery analysis
  • Community Detection: Multiple algorithms (Louvain, Infomap, Label Propagation, SBM)
  • Machine Learning: Graph Neural Networks (GCN, GAT), Node2Vec embeddings, link prediction
  • NLP Analysis: Topic modeling (LDA, BERTopic), expertise inference, sentiment analysis
  • Temporal Analysis: Change point detection, onboarding integration tracking, network evolution
  • Multi-modal Fusion: Combines insights from multiple data sources
  • Anomaly Detection: Detects isolation, overload, and temporal anomalies
  • Intervention Framework: FINDING → HYPOTHESIS → INTERVENTION → MEASUREMENT workflow
  • Ego Network Analysis: Personal network analysis for individuals
  • Cross-Modal Validation: Validates insights across different data sources
  • Team Stability Analysis: Time-Size Paradox analysis for team retention and stability
  • Bonding/Bridging Analysis: Analyzes within-group (bonding) vs between-group (bridging) connections
  • Reporting: HTML reports and static or interactive network views (Pyvis, etc.)
  • Privacy-First: Built with privacy and ethics considerations

Installation

Dependencies are declared in pyproject.toml and pinned in uv.lock. Use uv for reproducible installs, or install with pip and extras as usual.

# Option A: uv (recommended — uses uv.lock)
uv sync --all-extras

# Option B: pip editable install with optional stacks
pip install -e ".[all]"

# Download spaCy language model (NLP extra)
python -m spacy download en_core_web_sm

Core-only install: uv sync or pip install -e .. After changing dependencies in pyproject.toml, refresh the lockfile with uv lock and commit uv.lock.

Quick Start

from orgnet.core import OrganizationalNetworkAnalyzer

# Initialize analyzer
analyzer = OrganizationalNetworkAnalyzer(config_path="config.yaml")

# Load data
analyzer.load_data()

# Build graph
graph = analyzer.build_graph()

# Run analysis
results = analyzer.analyze()

# Generate report
analyzer.generate_report(output_path="report.html")

Testing

Run the test suite:

pytest

For coverage report:

pytest --cov=orgnet --cov-report=html

See tests/README.md for more details.

Code Quality

Format code with black:

black orgnet/ tests/ example.py --line-length 100

Check code style with flake8:

flake8 orgnet/ tests/ example.py --max-line-length=100

Or use the Makefile:

make format   # Format code
make lint     # Check style
make test     # Run tests
make check    # Format, lint, and test

Project Structure

ONA/
├── orgnet/
│   ├── __init__.py
│   ├── core.py                 # Main analyzer class
│   ├── config.py               # Configuration management
│   ├── data/
│   │   ├── __init__.py
│   │   ├── ingestion.py        # Data ingestion layer
│   │   ├── models.py           # Data models
│   │   └── processors.py       # Data processing utilities
│   ├── graph/
│   │   ├── __init__.py
│   │   ├── builder.py          # Graph construction
│   │   ├── weights.py          # Edge weight calculations
│   │   └── temporal.py         # Temporal graph handling
│   ├── metrics/
│   │   ├── __init__.py
│   │   ├── centrality.py       # Centrality measures
│   │   ├── structural.py       # Structural holes, core-periphery
│   │   └── community.py        # Community detection
│   ├── ml/
│   │   ├── __init__.py
│   │   ├── gnn.py              # Graph Neural Networks
│   │   ├── embeddings.py       # Node2Vec, etc.
│   │   └── link_prediction.py  # Link prediction models
│   ├── nlp/
│   │   ├── __init__.py
│   │   ├── topics.py           # Topic modeling
│   │   └── expertise.py        # Expertise inference
│   ├── temporal/
│   │   ├── __init__.py
│   │   ├── change_detection.py # Change point detection
│   │   └── onboarding.py      # Onboarding analysis
│   ├── visualization/
│   │   ├── __init__.py
│   │   ├── network.py          # Network visualizations
│   │   └── dashboards.py       # Dashboard components
├── config.yaml                 # Configuration file
├── pyproject.toml              # Package metadata and optional dependency groups
├── uv.lock                     # Resolved dependency lockfile (uv)
└── README.md                   # This file

Configuration

Edit config.yaml to configure:

  • Data source settings
  • Graph construction parameters
  • Analysis preferences
  • Privacy settings

Privacy & Ethics

This tool is designed with privacy in mind:

  • Aggregates data before storage
  • Respects retention policies
  • Focuses on patterns, not individual monitoring
  • Configurable anonymization

Important: Always obtain proper consent and follow organizational policies before deploying.

License

MIT License

Contributing

Contributions welcome! Please read the contributing guidelines first.

Metadata

Release files for orgnet 0.2.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for orgnet 0.2.0
File Size Uploaded Provenance Actions
orgnet-0.2.0.tar.gz 575.5 kB With provenance Details for orgnet-0.2.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for orgnet 0.2.0
File Interpreter ABI Platform Actions
orgnet-0.2.0-py3-none-any.whl Python 3 none any Details for orgnet-0.2.0-py3-none-any.whl

Total release size: 839.9 kB

Release files / orgnet-0.2.0.tar.gz

Download URL orgnet-0.2.0.tar.gz
Size 575.5 kB
Tags Source
SHA-256 checksum
How to use checksums
bc956bf1b237f0b4a35cb61c9be6e0c37f0800cbbe3b01d2b7aeddba43e150e4
BLAKE2b-256 checksum
How to use checksums
1bc19a4e02ad3c449baa102b3d854c6bc713789133e0a6b2b8ec3c8869728995
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Apr 30, 2026.

Transparency log

Release files / orgnet-0.2.0-py3-none-any.whl

Download URL orgnet-0.2.0-py3-none-any.whl
Size 264.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
2718d82cc7e00a91d48fd43b322973e3d4cc392f8333f941758edb7a03365c6a
BLAKE2b-256 checksum
How to use checksums
5d126033e07c2cb7c8805dc9535a2866567e07f388950aa376fb14ec4f5a3adb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Apr 30, 2026.

Transparency log

Security for orgnet 0.2.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for orgnet-0.2.0.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Apr 30, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.2.0 This release

2 release files Full provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page