What Got Shipped Today - 18/8/26 - Draft an RFI with KAI, a Notices register that chases, folders push whole to DS Site
18 August 2026 Thirteen changes reached production today. The through-line is follow-up: the Notices register now shows what moved last and lets you chase what has not, KAI drafts the first version of an RFI from documents already sitting in the project, and the Invoice Inbox counts what has not made it to the register yet. Features Draft an RFI with KAI, from the notice type itself As a Contract Administrator, I wrote every RFI from a blank box even though the answer usually sat in drawings and specifications already uploaded to the project, so I can now have KAI draft the first version and edit from there. Before. Draft with KAI existed once, as bespoke code bolted onto the old per-type notice screens. When notices moved to the type registry the capability did not come with them, so the New RFI composer went back to being a blank box. Anyone who had seen the old behaviour asked where it went. After. KAI assist is now a capability of the notice type itself, declared in the type configuration and grounded in the project Document Register. Open the New RFI composer and Draft with KAI is there, drawing on the drawings and specifications already in the project rather than on nothing. Impact. The blank page problem disappears on the notice type that suffers from it most. Because the capability lives in the registry rather than in one screen, the next notice type that needs it is a configuration change, not a rebuild. Known limitations. RFI first. Other notice types pick it up as their configurations are updated. The Notices register shows what moved last, and lets you chase it As a Contract Administrator, the register told me a notice existed but not whether anything had happened to it this week, so I can now read the last activity on every row and chase the ones that have gone quiet. Before. The register carried a column nobody used and no sense of elapsed time. Working out which notices had stalled meant opening them one at a time and reading down the thread. After. Every row carries a Latest activity summary and a proportional time-bar, so a notice untouched for eleven days reads differently to one answered this morning. Chained notices show their edges. A Chase action sits on the row itself, and the dead column is gone. Impact. Contractual clocks run whether or not anyone is watching them. A register that shows elapsed time turns a list of records into a list of things that need doing today. Say how a Provisional Sum adjusts before you draw on it As a Commercial Manager, our contracts differ on whether a Provisional Sum adjustment goes straight to the contract sum or has to travel through a variation, so I can now set that per head contract instead of working around one hard-coded answer. Before. The platform held one opinion about how a Provisional Sum resolves. Contracts that adjust the sum directly and contracts that require a variation were treated identically, and the difference got reconciled by hand in a spreadsheet. After. Provisional Sum adjustment mode is a field on the head contract, Direct or Via Variation. Set a house default at workspace level and let an individual contract override it. The read side holds the invariant, so a Provisional Sum cannot be adjusted two ways at once. Impact. AS4000, ABIC and NZS3910 treat Provisional Sums differently. The platform can now be told which one it is looking at rather than assuming, and this is the ground the staged drawdown ledger is built on. Push a whole folder to DS Site, contents and all As a Document Controller, pushing a folder to DS Site created the folder and left the drawings behind, so I can now push the folder and have everything inside it travel with it. Before. Selecting many files and pushing them together already worked. Folders did not. Pushing one created an empty shell at the far end, and a folder upload ingested the folder without recursing into what it held, so anything nested had to be found and pushed by hand. After. Folder push carries contents recursively, and a folder upload walks the tree and ingests what is inside rather than stopping at the top level. Impact. Document control stops being an exercise in remembering which level of the tree you are standing on. Improvements Record an invoice inclusive or exclusive of GST As a Contract Administrator, our suppliers send invoices on both bases and the register only understood one, so I can now say which basis an invoice is on when I record it. Before. The Invoice Register assumed a single GST treatment. Anything arriving on the other basis had to be converted before entry, and that conversion happened in a phone calculator. After. An include or exclude GST option on the register, applied at entry. Impact. The number in the register is the number on the invoice. The Invoice Inbox counts what has not reached the register As a Contract Administrator, I had to open the Invoice Inbox to find out whether anything was waiting in it, so I can now see the count from the sidebar. Before. The sidebar entry was static. The only way to know whether invoices were sitting unrouted was to go and look. After. A live badge on the Invoice Inbox menu item counting invoice emails that are neither routed to the register nor archived, matching the inbox default view. It reads a counts-only endpoint rather than pulling the documents, so the badge costs almost nothing. Impact. The same pattern the rest of the sidebar uses. Work finds you instead of waiting to be discovered. The PO Register remembers your column layout As a Contract Administrator, the PO Register pushed the amount columns off screen and I rebuilt the same view every time I opened it, so I can now size and order the columns once and have them stay. Before. Fixed columns, a table wider than the screen, and horizontal scrolling that barely worked. After. Drag to resize and drag to reorder, persisted per user per workspace. It is the same machinery the Budget Register already uses. Impact. Two registers now behave the same way, and the layout survives a refresh. Retention on the subcontractor claim itself As a Contract Administrator, I worked out retention on a claim by opening the subcontract in another tab, so I can now read it on the claim. Before. Retention was held against the subcontract and shown there. The claim view left you to connect the two. After. Retention columns on the subcontract claims view. Impact. One fewer tab between reading a claim and certifying it. Each Schedule of Values line as a percentage of the contract As a Quantity Surveyor, I could see what a line was worth this claim but not what it represented against the whole contract, so I can now read both at once. Before. Head contract progress claims showed the value claimed against a Schedule of Values line and nothing about proportion. After. The selected claim item shows its percentage of the total contract alongside the value. Impact. Progress reads as progress rather than as dollars alone. Fixes Subbie Admins can reach Team and Access again Before. A portal user on a Subbie Admin role saw the sidebar Admin entry with a padlock and the message that they did not have permission to access the section. Team and Access sat behind it, unreachable, even though the role was created to hold them. After. Team and Access are flattened out of the injected Admin dropdown and sit directly in the sidebar, where the role permissions apply to them properly. Impact. This follows the Subbie Admin role that shipped last week. The role now reaches what it was created to reach. Approval routes stop printing raw identifiers Before. Deleting a role and recreating it left the dead identifier inside any approval step that referenced it, most often through the workspace admin fallback pool. The route readout printed a raw identifier, because the roles list no longer held anything to resolve it against. After. Deleted roles are excluded from the fallback pool, and the readout resolves to names. Impact. An approval route you cannot read is an approval route you cannot trust. Delegated authority set against a project role now resolves to people Before. Creating a threshold never carried the role source, so every row defaulted to a workspace role. A threshold set against a site manager or a project manager resolved to nobody, and an empty approver pool was skipped without saying so. After. Role source is carried through on create, a guard blocks reverse-scope assignments, and an empty pool falls back to Highest Authority instead of disappearing. Impact. Raised by Fidem. A delegation that resolves to nobody is worse than no delegation, because nothing tells you it happened. Six endpoints stop handing out dead database connections Before. Six endpoints cached their database connections with no health check and no eviction. Once the database closed the socket, the cache kept handing the dead connection back and those calls failed until something restarted. After. Connections are checked on the way out of the pool. Impact. Fewer of the intermittent failures that clear on a retry and leave nothing behind to chase. Something here you would do differently, or something missing? Tell us through the feedback portal in the platform. We read every one, and a good share of what shipped today started there.
How do you feel about this update?
