Excel add-in
Alloovium in Microsoft Excel
Turn contracts into auditable spreadsheets. Build registers, fill templates, and apply chat-driven edits through a single approval queue — every value tied to the source clause that produced it.

Overview
The Excel add-in plugs into Microsoft 365 Excel as a task pane. It understands the active sheet's structure, knows the active Alloovium project, and writes back to the workbook only through a single auditable path — every mutation runs inside one Excel.run transaction, so a partially-applied register is impossible.
The pane has three tabs in the bottom nav:
| Tab | What it does |
|---|---|
| Chat | Q&A over the active project with the active workbook as context. Plain-English instructions that the planner turns into a preview-then-apply set of operations. |
| Workflows | Hub of structured workflows — Fill Template at the top, Obligations Register and Variations Register below. Each opens its own sub-view; sub-tools (LD calculator, flow-down checker, milestone dates) live inside the Variations register. |
| Edits | Chat-driven edits awaiting human review. Three segments — Awaiting me, Submitted, History. Authority thresholds per project. |
Open the task pane
- 1
Install the add-in
Centrally deployed via the M365 admin centre or sideloaded per machine. See the install guide.
- 2
Open the workbook
Any .xlsx — on disk, OneDrive, or SharePoint. New blank workbooks work too.
- 3
Click "Open Alloovium" in the Home ribbon
The task pane appears on the right.
- 4
Sign in and pick the project
First-run only. The same project picker as the web app — pick whichever contract or project this workbook is for. If the add-in recognises the workbook (see below), it'll suggest a project for you.
Sheet detection & auto-match
The first thing the add-in does is look at the active sheet. It samples the header row and a handful of sample rows, and asks the backend to classify the sheet — obligation register, variation register, milestone schedule, or something else. The detected sheet type appears in the context bar and tunes the suggested actions.
Separately, when you open a workbook, the add-in tries to recognise it as a project you already have in Alloovium. The match scores filename, sheet names, and header/sample-row content against your accessible projects. A confident match shows a banner suggesting that project; you can accept or dismiss it per-document.
Vault freshness
Once a project is selected, a background poll checks for newer documents every 90 seconds. If anything's changed in the Vault, a StalenessBanner appears with a one-click Refresh.Chat tab
The Chat tab is conversational Q&A over the active project, with the active workbook as live context. Every chat message sends a workbook context block — the header row, up to thirty sample rows, and the current selection — wrapped in XML delimiters that the LLM treats as untrusted data, not instructions.
The intent classifier routes every message to one of four flows:
| Intent | Behaviour |
|---|---|
workbook_qa | Answer the question about the active sheet. No mutations. |
document_qa | Retrieve from the project Vault. Citations come back as source chips under the assistant message. |
plan | The user described a structured change. Backend returns a typed ExcelOperation plan — set_value, set_formula, highlight, insert_row, clear_range. Plan goes to the Edits tab for review; once accepted, ops apply atomically inside one Excel.run. |
populate | On empty sheets, the planner skips the approval step and applies operations directly. Used to fill blank registers from a template. |
Workbook-only toggle
A switch at the top of Chat collapses retrieval toworkbook_qa for focused sessions where you only want answers about the current sheet, not the broader project Vault.Workflows tab
The Workflows tab is a hub. Clicking any card swaps the body to that workflow's sub-view; a back arrow in the sub-view header returns to the hub.

- Fill Template — the hero card. Mirrors the Word add-in's Document Fill: point it at a template-shaped sheet, pick a Vault, and the planner drafts a value for each blank with a source citation, then writes the full batch into the workbook in one atomic transaction.
- Obligations Register — opens the obligations sub-view (see below). Build the register from the project's parsed contracts, filter, and sync into the sheet.
- Variations Register — opens the variations sub-view (see below). Houses the change-order register plus three sub-tools: LD Calculator, Flow-Down Checker, Milestone Dates.
Obligations register
The Obligations Register sub-view builds an auditable obligation register from the project's parsed contracts. Point it at a project Vault and it produces one row per obligation with party, action, due date, cadence, severity, clause reference, and the verbatim source text.
Building the register
- 1
Open a blank or partially-filled register sheet
The add-in detects existing register layouts and switches the CTA from "Import" to "Update register" — it appends rows without disturbing what's there.
- 2
Click "Generate from vault"
Extraction kicks off across every processed document in the project. Production runs through a Celery queue; the pane subscribes to progress updates and lists obligations as they arrive.
- 3
Filter and review
Filter by severity or obligation type; bulk-select up to 500 rows; deep-link from a clause chip back into Chat to ask about it.
- 4
Sync to sheet
Writes the register into the workbook in a single atomic transaction. Citations live in a hidden column you can show on demand.
Contradiction flags
The Obligations view has a Contradictions toggle that surfaces flags from the LLM contradiction checker — places where two obligations on the same project disagree on party, value, or date. Each flag links back to both source clauses.Variations & calculators
The Variations Register sub-view covers change-order workflows. Extract variations from notices, RFIs, and instructions into a structured register; or build a fresh variation log from scratch. Each row shows VO number, status pill, cost impact, time impact, source clause, approver, and submitted date.
- Send for approval — kick a variation into the project approval workflow without leaving Excel.
- Sync to sheet — write the full register into
A1:H{N+1}with a dark header row.
The same sub-view exposes three calculators, opened in an overlay:
| Sub-tool | What it does |
|---|---|
| LD Calculator | Liquidated damages — rate × delay, with daily and weekly caps. "Look up" pre-fills daily rate and cap from the contract's LD clause via the same custom-function backend used by =ALLOOVIUM.CLAUSE. |
| Flow-Down Checker | Head-vs-sub gap analysis. Assign Head / Sub / Skip per source document; the backend returns gaps with proposed subcontract wording for each missing obligation. |
| Milestone Dates | Every dated obligation bucketed into Overdue / Due soon (≤14 days) / Upcoming / No specific date. |
Edits tab
Anything Chat is about to write to the sheet — register rows, formula changes, formatting — passes through the Edits tab first. It's the approvals queue: three segments at the top of the tab.
- Awaiting me — edits assigned to you for review, with an op-kind chip summary, the first three operations, and a "Show all N operations" toggle for the rest.
- Submitted — edits you've sent to someone else for review.
- History — applied and rejected edits, filterable and exportable to CSV.
Accepting an edit runs the operations inside one Excel.run transaction. A StatusPill at the top surfaces the outcome — "Vault updated · N cells synced" on apply, "Edit rejected · Vault unchanged" on reject.
Authority thresholds
Each project has per-user dollar and time-impact limits set in the Authority Thresholds dialog. Edits that exceed your limit can only be approved by someone with higher authority.
Custom functions
The add-in registers a custom-function namespace in Excel under =ALLOOVIUM.*. Use them like any built-in formula — they call the Alloovium backend asynchronously and return live values, reading the Clerk token from OfficeRuntime.storage set by the task pane on sign-in.
| Function | What it returns |
|---|---|
=ALLOOVIUM.ASK(question) | A short factual answer from the active project Vault, with the citation in the cell comment. |
=ALLOOVIUM.CLAUSE(clause_ref) | Verbatim text of the named clause from a project document — the same backend that powers LDCalculator's "Look up" affordance. |
=ALLOOVIUM.DATE(milestone) | Parsed date for a named milestone (e.g. "PC", "defects liability end") from the project's dated obligations. |
In-flight returns #BUSY!
Custom functions are asynchronous. They return#BUSY! while the request is in flight and a friendly error if the backend is unreachable.Known limits
- Offline runs queue. Online status is surfaced in the header. When offline, chat plan and populate calls go onto a durable queue (cap 50, 24 h TTL) and replay when you reconnect. Reads serve from React Query's cache where available.
- Sheet detection is heuristic. Unusual layouts may misclassify — re-detect manually if the suggested actions don't fit.
- Sheet size matters. Very large sheets (tens of thousands of rows) sample slowly. Filter or work on a smaller range when possible.
- Bulk delete capped at 500 rows. The Obligations bulk-delete action processes up to 500 obligation IDs per request — paginate larger removals.
Next steps
- →Install the add-in on your machine or push it to your team via the M365 admin centre.
- →The Word add-in — same patterns, applied to documents instead of registers.