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.
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.
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.
Create forecasts and budgets for companies by feeding PIQ metric data in as model inputs. Example 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 IMThe 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.
"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 ↗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 ↗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)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 ↗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 ↗"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 ↗Lets customers pull live company data from the platform into Excel for analysis. Standard read-only refresh model.
Microsoft AppSource ↗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 ↗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)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
Retrieves a specific metric's value, given:
- Company name
- Metric name
- Time stamp
- Scenario (actuals / estimates)
Retrieves other company info for report-building:
- Sector
- Fund name
- Fiscal year
- Founded date
- HQ location
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
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.
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 PIQ | Know the Excel plugin is available | Can use it to build custom sheets |
| Open AppSource for the add-in | Understand capabilities, see screenshots | Can decide to install or not |
| Have installed the add-in | Know the next step and find the right docs | Can start using it as learning material |
| Try to log in | See meaningful success and error states | Know the right action to take |
| Successfully log in | Get a cheatsheet or tutorial | Can learn the ropes faster |
| Use the add-in regularly | Have my session persisted and see version upgrades | Don't have to re-login; can use newer functionality |
| Decide to log out or switch accounts | Have an option to do so | Can re-login as needed |
| Run into problems | Find help or support | Can resolve them and move forward |
Feature stories (in-sheet jobs)
| When I… | I want to… | So that I… |
|---|---|---|
| Build from a template or scaffold | Populate values using references | Complete the report with values |
| Build from a blank sheet | Add a company, metrics, time stamps, meta-data | Build a company-specific, time-series, contextual report |
| Build any table | Define actuals vs. estimates, currency, rolled-up values | Address scenarios, preferred currency, and fill data gaps |
| Plan to add a company / metric / period / currency / attribute | Know what values exist and how to input them | Can eventually populate values with confidence |
| Insert a formula (valid / incomplete / invalid) | Fetch the value, or see informational or error messaging | Can use the value, complete it, or fix the error |
| Fetch a value successfully | See caveats against it, e.g. roll-up method | Understand how the value varies from a regular value |
| Reopen a sheet with formulas | Not auto-refetch — but be able to trigger it | Update my sheet on my terms, without runaway API load |
| Resize the UI panel or Excel window | See the layout reflow meaningfully | Can 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
Session R.4.2
- Session persists even if Excel is fully closed and reopened.
- Session expiry mirrors PortfolioIQ's own expiry policy.
- Logout clears the session outright.
Formulas
UI panel R.5
- Version label shown on every screen.
- Sign-in supports email/password, magic link, and Google Auth, reusing PIQ's existing error states.
- Formula builder fields: formula-type switcher, company, metric, period, currency, an attribute field for GET_METADATA only, a live formula preview, and a cell-reference selector.
Sheet ↔ panel interaction R.6
- Inserting a formula from the UI drops it into the active cell and runs it immediately.
- Selecting the cell-reference field lets the user click a cell on the sheet to read its value into the formula.
- 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
APIs R.8
- All Excel-facing APIs must be versioned; older versions stay compatible until explicitly deprecated.
- Worst-case response time budget of 5 seconds, with an explicit timeout design state.
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
Based on names, easy to remember and type.
Keeps matching by slug even after the underlying name changes.
Prefixes — C_, G_, L_ — stop names and slugs, or global and local metrics, from colliding.
G_REVENUE instead of G_M90RX. Slugs should be guessable, not opaque IDs.
Renaming "Sales" → "Revenue" keeps both G_SALES and G_REVENUE resolving, forever.
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.
| Input | Match | Why |
|---|---|---|
| Stripe | Stripe | Exact match |
| stripe | Stripe | Case-insensitive |
| o'reilly | O'Reilly | Non-alphanumeric stripped before match |
| C_ABC123 | Stripe | Slug match |
| air bnb | — no match | Spaces 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.
| Input | Company | Match | Remark |
|---|---|---|---|
| G_SALES_PROFIT | — | G_GROSS_PROFIT | Renamed metric, old slug still resolves |
| L_SALES | Flexport | L_REVENUE | Local rename, old slug still resolves |
| L_REVENUE | Stripe | — no match | Stripe has no local metric by that slug |
Time, scenario, currency & attribute matching
- Time: exact-format matching only — FY2021, Q1-2021, Q1-CY2021, Jan-2021, H1-2021. No fuzzy parsing, so jan 2022 with a space does not match. A deliberate trade of natural-language flexibility for predictability.
- Actuals / estimates: optional, defaults to actuals; tolerant of plurals and case.
- Currency: optional 3-letter ISO-style code, case-insensitive, defaults to the metric's reported currency.
- Attribute (for GET_METADATA): exact slug match, case-insensitive — hq → HQ, fiscal_Year → FISCAL_YEAR.
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 formula builder panel
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.
The approach we didn't take
08What's still unresolved
Depends on whether Microsoft AppSource handles add-in updates automatically; if not, we need an in-panel update flow.
No decision yet on how formula states — valid, stale, error — should be colour-coded in-sheet.
Whether we ship pre-built report and model templates alongside the raw formula language.
Also parked, pre-launch
- Marketing collateral and Microsoft AppSource screenshots and description
- Compatibility matrix across Excel desktop versions, and Excel Online parity
- Tutorial videos and knowledge-base resources
- Packaging, publishing, and the ongoing update process