A modern, multi-platform Excel Add-in that connects to Azure DevOps, delivers beautiful Python-powered analytics, and supports two-way sync — all without a server.
┌─────────────────────────────────────────────────────┐
│ Excel (Host) │
│ ┌───────────────────────────────────────────────┐ │
│ │ Office Web Add-in │ │
│ │ ┌──────────┐ ┌──────────┐ ┌─────────────┐ │ │
│ │ │ MSAL.js │ │ Office.js│ │ Pyodide │ │ │
│ │ │ (Auth) │ │ (Excel) │ │ (Python/ │ │ │
│ │ │ │ │ │ │ WASM) │ │ │
│ │ └────┬─────┘ └──────────┘ └──────┬──────┘ │ │
│ │ │ │ │ │
│ │ │ Azure AD Token │ │ │
│ │ ▼ ▼ │ │
│ │ ┌──────────┐ ┌──────────────┐ │ │
│ │ │ ADO REST │ │ pandas │ │ │
│ │ │ API │───data──────▶│ matplotlib │ │ │
│ │ │ (Direct) │ │ scikit-learn │ │ │
│ │ └──────────┘ └──────────────┘ │ │
│ └───────────────────────────────────────────────┘ │
│ No Server Required │
└─────────────────────────────────────────────────────┘
PivotOps is a free add-in. All features are included:
- One-way sync: Pull work items from ADO into Excel with color-coded rows, dropdowns, and frozen header
- Two-way sync: Push changes back to ADO with dry-run validation
- State Distribution chart (pie + bar)
- Sprint Velocity chart with trend line
- Scope Drift chart — plan vs. actual per sprint with drift % overlay
- Cycle Time Histogram with percentile lines (P50/P85/P95)
- Cumulative Flow Diagram
- Sprint Burndown chart
- Member Velocity chart
- Estimation Accuracy chart
- Predictive Analytics: Sprint velocity forecast using scikit-learn
- Completion Forecast: Monte Carlo simulation for backlog estimation
- Bulk Updater with dry-run validation
- Custom WIQL queries
- PAT authentication (zero setup)
- OAuth/MSAL authentication (optional, auto-refresh tokens)
- Export charts as PNG
- Node.js 18+
- An Azure DevOps organization with Analytics enabled
- A Personal Access Token (PAT) from Azure DevOps
npm install- Go to Azure DevOps → User Settings → Personal Access Tokens
- Click New Token
- Set scopes: Work Items: Read & Write
- Copy the token — you'll paste it into PivotOps Settings
Optional: You can use OAuth instead of PAT. Register an Azure AD app with redirect URI
https://localhost:3000/taskpane.htmland scopeAzure DevOps → user_impersonation, then enter the Client ID in Settings.
npm run dev- Desktop: Use
npm run sideload(requires office-addin-debugging) - Web: Upload
manifest.xmlvia Insert > Office Add-ins > Upload My Add-in
- Click ⚙ Settings in the task pane
- Paste your Personal Access Token
- Enter your Organization and Project
- Click Save Settings, then Connect
src/
├── taskpane/
│ ├── taskpane.html # Main UI
│ ├── taskpane.css # Dark theme styles
│ └── taskpane.ts # UI logic & event wiring
├── commands/
│ ├── commands.html # Ribbon command page
│ └── commands.ts # Ribbon button handlers
├── services/
│ ├── auth.ts # PAT / MSAL.js OAuth auth
│ ├── ado-client.ts # ADO REST API client (direct browser calls)
│ ├── python-engine.ts # Pyodide wrapper (Python in WASM)
│ └── storage.ts # OfficeRuntime.storage abstraction
├── python/
│ └── charts.ts # Python scripts for charts & analytics
index.html # Entry point (redirects to taskpane.html)
privacy.html # GDPR-compliant privacy policy
support.html # Support & FAQ page
manifest.xml # Office Add-in manifest
webpack.config.js # Build config
azure-pipelines.yml # CI/CD pipeline → Azure Static Web Apps
The add-in is entirely static (HTML/JS/CSS). It is hosted on Azure Static Web Apps and deployed automatically via the Azure DevOps pipeline.
# Production build (minified, no obfuscation)
npm run buildThe pipeline (azure-pipelines.yml) replaces localhost:3000 with the production URL, builds, and deploys to Azure Static Web Apps. Trigger it manually from the master branch in Azure DevOps.
| Component | Technology |
|---|---|
| Platform | Office Web Add-in (Office.js) |
| Language | TypeScript |
| Auth | PAT (default) / MSAL.js OAuth (optional) |
| Python | Pyodide (WebAssembly) |
| Charts | matplotlib + seaborn (via Pyodide) |
| ML | scikit-learn (via Pyodide) |
| Build | Webpack + Terser (minification) |
| Hosting | Azure Static Web Apps |
| CI/CD | Azure DevOps Pipelines |
| Distribution | Free — sideload via manifest |