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. A static role-based authority table decides who can approve a given edit. |
Open the task pane
Install the add-in
Centrally deployed via the M365 admin centre or sideloaded per machine. See the install guide.
Open the workbook
Any .xlsx — on disk, OneDrive, or SharePoint. New blank workbooks work too.
Click "Open Alloovium" in the Home ribbon
The task pane appears on the right.
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 six intents:
| Intent | Behaviour |
|---|---|
plan | The user described a structured change with values they already supplied or that are obvious from the sheet — "highlight row 5", "set B2 to 100", "colour overdue rows red". 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 | An edit whose values must first be retrieved from project documents — "fill column D with milestone dates from the contract". The AI searches the Vault, then proposes cell edits. On empty sheets the planner can skip the approval step and apply directly to fill a blank register. |
workbook_qa | A question about the sheet itself — its data, structure, or totals. No document lookup, no mutations. Also the safe default for greetings and ambiguous input. |
document_qa | A question about the content inside the project's uploaded documents. Retrieves from the Vault; citations come back as source chips under the assistant message. |
project_meta | A question about the document collection itself — counts, inventory, what files exist — rather than what any one document says. "What documents do we have?", "how many files are uploaded?" |
out_of_scope | A substantive off-topic request (a recipe, the weather, a joke). The assistant declines politely. Bare greetings and acknowledgements are never treated as out of scope. |
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
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.
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.
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.
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
Approval authority follows a fixed, role-based table — the Authority Thresholdsdialog shows it read-only: up to $10,000 sits with the Project Manager, $10,000–$100,000 with the Contract Manager, and anything over $100,000 with the Board. It’s a reference table, not a per-user setting.
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, projectId) | A RAG answer grounded in the project Vault documents, or "Not found in documents." when there is no supporting source. |
=ALLOOVIUM.CLAUSE(question, projectId, [documentId]) | The matching clause text from the project's indexed contracts — the same backend that powers the LD Calculator's "Look up" affordance. Pass an optional documentId to limit the search to one file. |
=ALLOOVIUM.DUEDATE(milestone, projectId) | Parsed ISO date (YYYY-MM-DD) for a named milestone (e.g. "Practical Completion", "defects liability end") matched against the project's extracted obligations. |
Asynchronous by design
Custom functions run against the backend asynchronously. They read the Clerk token fromOfficeRuntime.storage— so sign in through the task pane first — and surface a friendly error in the cell if you’re signed out, the session expired, or 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.