For the complete documentation index, see llms.txt. Every documentation page is also served as markdown: append .md to its URL or request it with Accept: text/markdown. A single-file snapshot of all docs is at llms-full.txt.

Alloovium

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.

Alloovium task pane in Excel — Chat tab with greeting, suggestion pills, and recent conversations
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:

TabWhat it does
ChatQ&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.
WorkflowsHub 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.
EditsChat-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

  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 six intents:

IntentBehaviour
planThe 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.
populateAn 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_qaA 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_qaA 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_metaA 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_scopeA 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.

Excel Workflows tab — Fill Template hero card on top, Obligations Register and Variations Register cards below
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

  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-toolWhat it does
LD CalculatorLiquidated 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 CheckerHead-vs-sub gap analysis. Assign Head / Sub / Skip per source document; the backend returns gaps with proposed subcontract wording for each missing obligation.
Milestone DatesEvery 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.
Excel Edits tab — Awaiting me segment showing two pending workbook edits with op-kind chips and Apply / Reject controls
Segmented control at the top — Awaiting me · Submitted · History. A green StatusPill confirms the last apply ("Vault updated · 12 cells synced"). 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.

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.

FunctionWhat 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 from OfficeRuntime.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.