PortfolioIQ for Excel

Bringing portfolio data into the spreadsheet users already live in — a native Excel add-in that lets fund teams pull live PortfolioIQ metrics and company data straight into their models and reports.

Design
Randheer Kumar
Product
Harsha M
Domain
Fintech / B2B SaaS
Focus
Excel add-in, data & formula UX
Shipped. Live on Microsoft AppSource as "PortfolioIQ for Excel"

01Why Excel, why now

Excel is the tool of record for almost every PortfolioIQ user. Now that portfolio data has been pulled and organised out of company updates, users want PIQ to power their own Excel sheets directly — instead of waiting for that structure to show up as a feature in the customer tool.

TL;DR — We identified two primary jobs users are trying to do in Excel: build a company-level report (financial statements, custom narratives) and build a model (forecasts and budgets that take PIQ metrics as inputs). The add-in is designed around a small formula language — GET_VALUES, GET_METADATA, LIST_COMPANIES — plus a guided UI panel, so both jobs are possible without engineering having to build bespoke report views into the core product.
Use case 1
Reporting

Build a company-level report with key metrics and a narrative — either a standard financial statement or a tailor-made structure. Example anchor: Alphabet's financial statements.

Use case 2
Modeling

Create forecasts and budgets for companies by feeding PIQ metric data in as model inputs. Example anchor: Nvidia's model.

An annual financial data report for Alphabet Inc. with an income statement table built from connected spreadsheet data
Reporting anchor — Alphabet's financial statements
A detailed NVIDIA financial model in a spreadsheet with a revenue build and growth rates across many fiscal years
Modeling anchor — Nvidia's model

02What we heard, what exists already

Two inputs shaped the direction before any design work started: direct customer demand, and a scan of how eight competitors already solve this.

Customer signal

Excel connectivity has been a recurring, unprompted ask across prospect conversations, logged via Productboard. One direct quote from a prospect captures why the ask isn't just "nice to have":

"And frankly, these platforms are quite sticky in part because they have Excel plugins that we then use to run — like our quarterly audit evaluations are run off data that is embedded within formulas that are coming from the Chronograph platform."

Jonah, Generation IM

The implication is direct: an Excel add-in is a retention and stickiness play as much as a feature request. Formulas embedded in a client's live models create switching cost — the same mechanic locking users into Chronograph today.

Competitive scan

We reviewed eight tools already selling into the same PE/VC/portfolio-monitoring audience. The pattern converges hard: almost every one ships an Excel side-panel with a formula builder, and a sync/refresh model to pull fresh data on demand.

iLevel — S&P Capital IQ Pro

"Connect our data with Microsoft Office" — link data and formulas in Excel, integrate across Excel/PowerPoint/Word, pre-built templates plus analyst support for custom models.

Microsoft AppSource ↗
Vestberry

Side-panel "Formula Builder": select fund → metric → as-of-date → preview formula → insert into selected cell. Nearly identical shape to our own R.5.2 spec.

Microsoft AppSource ↗
Dynamo Software

Broader suite — valuations, approval workflows, company portal — with the Excel add-in as one module, pulling data for ad hoc reports and filling third-party forms.

Product page ↗ (no public AppSource listing found)
Cobalt (FactSet)

Formula Builder with Get/Push tabs, entity search, custom-field selection, optional as-of-date — notably supports writing data from Excel back into Cobalt, not just reading.

Microsoft AppSource ↗
Totem VC

Lightweight Excel & Sheets plugin — sync back-office spreadsheets to live data, with an explicit Sync button and a "last synced" timestamp shown in-panel.

Microsoft AppSource ↗
Chronograph

"Flexible Data Querying & Export" — the platform Jonah's quote refers to. Audit workflows run directly off embedded formulas via the xConnect add-in.

Microsoft AppSource ↗
Standard Metrics

Lets customers pull live company data from the platform into Excel for analysis. Standard read-only refresh model.

Microsoft AppSource ↗
Rundit

Two-way sync — upload and download company info, metrics and fund data between Excel and Rundit, with smart pre-filled templates for onboarding.

Microsoft AppSource ↗
Atominvest

Real-time refresh plus formula builder, and the ability to push data into Atominvest from Excel — with enterprise SSO/MFA and permissioning on the plugin itself.

Product page ↗ (no public AppSource listing found)
Research outcome: Tegus' plugin implementation was flagged as the closest fit to our own use cases, and became the reference point for the solution space below. The convergent pattern across competitors — panel-based formula builder plus explicit refresh, rather than silent auto-recalculation — directly informed the toolbar (R.4.1), the formula builder (R.5.2) and formula save behaviour (R.7) further down.

Competitor descriptions and store links above are drawn from each vendor's own public marketing pages and Microsoft AppSource listings, shown here for competitive-reference purposes only.

03What we're building, and the calls we made

Two formula families

Metric Data

Retrieves a specific metric's value, given:

  • Company name
  • Metric name
  • Time stamp
  • Scenario (actuals / estimates)
Meta-data

Retrieves other company info for report-building:

  • Sector
  • Fund name
  • Fiscal year
  • Founded date
  • HQ location
PIQ.GET_VALUES("Company", "Metric", "Period", ["Actuals/Estimates"], ["Currency"])
=piq.get_values("c_stripe", "g_gross_profit", "FY2022")
"c_stripe" The company, matched slug-first with a normalized name fallback.
"g_gross_profit" The metric, matched by slug only — g_ for global, l_ for a company's local metric.
"FY2022" The period, exact-format only. Scenario and currency trail as optional arguments.

Open caveats we're carrying forward rather than solving on day one: rollups — how metrics aggregate across entities — and currency conversion. Both surface again in the entity-matching section below.

Build vs. wait — the core trade-off

Why build it

Lets users derive value from portfolio data immediately, without waiting on engineering to ship P&L statements or visualizations inside the customer tool. Deepens embedding in the user's daily workflow and drives stickiness — the same mechanic competitors already rely on.

What it costs us

We now own a second client surface to design, build and maintain in lockstep with the core product. It also forces a harder look at what the customer tool's own report and visualization UI is even for, once Excel can do the same job.

04Mapping the journey and the feature-level jobs

Two layers of stories shaped the requirements: the end-to-end adoption journey — discover, install, sign in, use, maintain — and the granular table-building jobs inside a sheet.

Journey stories

When I…I want to…So that I…
Open PIQ / receive comms from PIQKnow the Excel plugin is availableCan use it to build custom sheets
Open AppSource for the add-inUnderstand capabilities, see screenshotsCan decide to install or not
Have installed the add-inKnow the next step and find the right docsCan start using it as learning material
Try to log inSee meaningful success and error statesKnow the right action to take
Successfully log inGet a cheatsheet or tutorialCan learn the ropes faster
Use the add-in regularlyHave my session persisted and see version upgradesDon't have to re-login; can use newer functionality
Decide to log out or switch accountsHave an option to do soCan re-login as needed
Run into problemsFind help or supportCan resolve them and move forward

Feature stories (in-sheet jobs)

When I…I want to…So that I…
Build from a template or scaffoldPopulate values using referencesComplete the report with values
Build from a blank sheetAdd a company, metrics, time stamps, meta-dataBuild a company-specific, time-series, contextual report
Build any tableDefine actuals vs. estimates, currency, rolled-up valuesAddress scenarios, preferred currency, and fill data gaps
Plan to add a company / metric / period / currency / attributeKnow what values exist and how to input themCan eventually populate values with confidence
Insert a formula (valid / incomplete / invalid)Fetch the value, or see informational or error messagingCan use the value, complete it, or fix the error
Fetch a value successfullySee caveats against it, e.g. roll-up methodUnderstand how the value varies from a regular value
Reopen a sheet with formulasNot auto-refetch — but be able to trigger itUpdate my sheet on my terms, without runaway API load
Resize the UI panel or Excel windowSee the layout reflow meaningfullyCan continue using the UI

05From stories to spec

The requirements below translate the research and stories above into concrete toolbar, session, and panel behaviour.

Toolbar R.4.1

Insert Formula
If not signed in, redirect to sign-in. Otherwise opens the UI panel in its last known state.
Refresh All Data
Opens the panel with a confirmation modal; on confirm, re-runs all formulas. The panel locks during refresh and unlocks on completion or failure.
Update Add-in
Shown only if Microsoft doesn't handle updates automatically; surfaces when a newer version is available, with a confirmation dialog before proceeding.
Logout
Disabled — ideally hidden entirely — when not logged in. Otherwise logs out and returns the panel to the sign-in screen.

Session R.4.2

Formulas

GET_VALUES GET_METADATA LIST_COMPANIES

UI panel R.5

Sheet ↔ panel interaction R.6

  1. Inserting a formula from the UI drops it into the active cell and runs it immediately.
  2. Selecting the cell-reference field lets the user click a cell on the sheet to read its value into the formula.
  3. Changing the active cell in the sheet updates the panel to reflect it — for a multi-cell selection, the top-left cell wins.

Formula save behaviour R.7

Saved formulas must not auto-rerun when a sheet is reopened — only an explicit refresh triggers a re-fetch. This is a deliberate trade-off: it protects API load at the cost of users occasionally looking at stale values until they refresh.

APIs R.8

06Entity matching — the hardest UX problem in this feature

Formulas are only as trustworthy as the values they resolve to. If "Airbnb" silently stops matching after a rename, or a metric renamed from "Sales" to "Revenue" breaks every existing model, we've broken the exact stickiness this feature is meant to create. This is where most of the real design decisions live.

Design principles behind every slug

Simple

Based on names, easy to remember and type.

Resilient

Keeps matching by slug even after the underlying name changes.

Disambiguated

Prefixes — C_, G_, L_ — stop names and slugs, or global and local metrics, from colliding.

Readable

G_REVENUE instead of G_M90RX. Slugs should be guessable, not opaque IDs.

Linked to history

Renaming "Sales" → "Revenue" keeps both G_SALES and G_REVENUE resolving, forever.

Not reusable

A deleted slug can never be reissued — protects against a formula silently pointing at the wrong thing later.

Company matching

Matching is slug-first, using the C_ prefix, falling back to a normalized exact-name match — trimmed, lowercased, non-alphanumeric stripped.

InputMatchWhy
StripeStripeExact match
stripeStripeCase-insensitive
o'reillyO'ReillyNon-alphanumeric stripped before match
C_ABC123StripeSlug match
air bnb— no matchSpaces are not ignored, by design

Metric matching

Global metrics (G_) and local, company-specific metrics (L_) are matched separately, by slug only and never by free-text name, because names are far more likely to collide or drift.

InputCompanyMatchRemark
G_SALES_PROFITG_GROSS_PROFITRenamed metric, old slug still resolves
L_SALESFlexportL_REVENUELocal rename, old slug still resolves
L_REVENUEStripe— no matchStripe has no local metric by that slug

Time, scenario, currency & attribute matching

The trade-off in one line: strict, prefix-based slug matching is less forgiving to type than a free-text search box would be — but it's the only way to guarantee that a formula written today still resolves correctly a year from now, after companies and metrics get renamed. We chose long-term formula stability over short-term typing convenience.

07Screens & flows

Sign-in and the browser hand-off, the formula builder panel, and the formula-first behaviour in the sheet itself.

Sign-in, and the constraint that reshaped it

The first design put a full sign-in inside the task pane — email and password, magic link, Google and Okta. Office add-ins can't complete authentication in-pane at all; it has to hand off to an external browser window and come back. Rather than shrink the flow, those screens were repurposed to carry the value proposition, so the add-in explains itself before asking for anything.

The abandoned PortfolioIQ add-in sign-in screen with email and password fields, a magic link option, and Google and Okta sign-in buttons
Designed, then ruled out by the platform
The welcome screen reading Welcome to PortfolioIQ Excel Add-in with three value propositions, a Sign in button, and a note that you authenticate through your browser
What the space became instead
The add-in waiting state reading Go to browser to complete Sign in, with a Not seeing the browser tab? Try again link below it
The hand-off state — says where you are, and offers a way out if the tab never appeared

The formula builder panel

The two task pane tabs side by side: Metrics with company, metric, time period and currency fields, and Metadata with company and attribute fields, each showing the formula it will insert above Clear All Fields and Insert Formula buttons
Both formula families, each with a live preview and the target cell shown before you commit

Formula-first in the sheet

The panel is the on-ramp, not the destination. Typing =piq surfaces the three functions through Excel's own autocomplete, and argument hints name each slot as you go — so people graduate off the panel instead of returning to it for every cell.

Excel with a PortfolioIQ ribbon tab showing the user-defined function autocomplete listing PIQ.GET_VALUES, PIQ.GET_METADATA and PIQ.LIST_COMPANIES, with the task pane docked at the right
The PortfolioIQ ribbon and function autocomplete — insert formula, refresh all formulas, logout, update add-in
Excel showing a typed piq.get_values formula with the inline argument hint listing Company, Metric, Period, Actuals/Estimates and Currency
Argument hints on GET_VALUES
Excel showing a typed piq.get_metadata formula with the argument hint listing Company and Attribute, and the metadata tab open in the task pane
The same, on GET_METADATA

The approach we didn't take

The PortfolioIQ all-companies screener with an arrow pointing at the download icon in the top toolbar
A CSV download on the portfolio screener — one click, all the data, and no way to sync it afterwards
Live
PortfolioIQ for Excel on Microsoft AppSource
appsource.microsoft.com/…/WA200007217

08What's still unresolved

How updates work

Depends on whether Microsoft AppSource handles add-in updates automatically; if not, we need an in-panel update flow.

Colour convention

No decision yet on how formula states — valid, stale, error — should be colour-coded in-sheet.

Template support

Whether we ship pre-built report and model templates alongside the raw formula language.

Also parked, pre-launch

This project is protected