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.
Screenshot
Alloovium task pane in Excel
Three tabs in the bottom nav — Chat, Workflows, Edits. Header has the project picker and the overflow menu; ContextBar shows the live sheet read.
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. |
Video · ~3 min
The Excel add-in in three minutes
Open the task pane on a blank workbook, generate an obligations register from the project's parsed contracts, filter by severity and sync it to the sheet, then send one chat-driven edit through the Edits approval queue and watch it apply atomically.
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.
Screenshot
Workflows tab — hub state
Fill Template (orange-bordered hero with AI badge) sits at the top; Obligations Register and Variations Register cards open their sub-views. The context bar at the top of the pane reads the active sheet so the planner can route suggestions correctly.
- 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 project's clause-lookup backend. |
| 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 honestly — "Applied locally — Vault copy unchanged" on apply (the workbook changes; the Vault copy only updates when you sync it), "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.Screenshot
Edits tab — Awaiting me
Segmented control at the top — Awaiting me · Submitted · History. A StatusPill confirms the last apply ("Applied locally — Vault copy unchanged"). Each WorkbookEditCard shows a Pending chip, the title, op-kind chip row (Set / Highlight / Insert row), the first three operations as monospace previews, and a Show-all-N link for the rest.
Plan validation
Every edit plan — whether it came from Chat, Fill Template, or a register sync — is validated before it is allowed anywhere near your workbook. Validation runs at preview time and again at apply time:
- Range bounds — every target must be a well-formed A1 reference inside the sheet's real bounds.
- Size caps — a single edit is capped at 200 operations, each touching at most 10,000 cells; larger plans are rejected outright rather than partially applied.
- Formula safety — proposed formulas run through a denylist of dangerous functions, and formulas that reference external workbooks are rejected.
- Precondition hashes — when a plan is previewed, the add-in fingerprints the cells it is about to touch. At apply time it re-checks those fingerprints inside the
Excel.runtransaction — if the data changed underneath the plan (you kept editing, a colleague saved over it), the apply refuses instead of writing onto stale assumptions.
Refuse, don't guess
A plan that fails validation never half-applies. You'll see which check failed and can regenerate the plan against the current sheet state.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.
- Edit plans capped at 200 operations, 10,000 cells per operation. Break very large writes into smaller plans — the validator rejects oversized plans rather than partially applying them.
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.
- →The Outlook add-in — thread summaries, review-before-send, and email filing.