Version v2026.10.29.0820
Meanwhile, see what's in the latest release: October 11, 2026 (v2026.10.10.0838)
Every update to TriArch. Pick a release to see what changed.
Meanwhile, see what's in the latest release: October 11, 2026 (v2026.10.10.0838)
You now only see the projects and trade scopes your departments allow, with finer-grained Build Room permissions, a new "What I can do" page, and fixes that keep approvals and ITB uploads from getting stuck.
See projects and trade scopes by department
You now see the projects and trade scopes that your departments and permissions allow. A trade scope is visible to members of its department and of every department below it. Other departments' trade scopes inside a project are hidden, and project figures, estimates, quotes, My Work and the Operations dashboard count only what you can see. People with the new "See all projects" right still see every project, and the "Work on trade scopes outside your department" right still opens everything.
New Build Room permissions
Four new rights let you control who does what: View financials (money and margins show as "โ" without it), Decide bid (go / no-go, bid reason and bonding), Assign department (place a trade scope in any department), and Launch the estimation phase. Tenant setup also offers a "Build Room preconstruction roles" pack with ready-made Bid Coordinator, Estimator, Senior Estimator, Operations PM, Principal and Viewer roles.
"What I can do" page
A new "What I can do" item in the profile menu (also linked from My Work) shows, in two simple tick tables, which estimation steps you can work, which screens you can use, and which buttons you can press. It also shows your roles and departments, and explains in plain English why your workspace might look empty, for example if you aren't in a department.
Plan comments cleaned up automatically
When you upload a plan PDF, comments and markup baked into the file are now removed in the background. You can see the preparation progress, retry if it fails, and the launch actions wait until the plan is ready.
Projects start as Opportunities and move to Bidding on their own
New projects, including those created from an ITB, now start as an Opportunity, and the status field is locked on the create screens. The project moves to Bidding automatically when its first trade scope launches estimation. Projects launched before this change now also reach Submitted once every trade scope has submitted.
Quotes list only what the price includes
Quote component tables no longer show parts in categories the bid leaves out (such as parts furnished by others), and no longer print labor that the option doesn't include.
Clearer, more consistent forms in the Catalog
Hint text in the part, cost category, labor category, discount and unit-of-measure panels now sits right under its field with consistent spacing and shorter wording. The vendor prices table scrolls sideways in narrow panels instead of squeezing, and the "use this price" link has its own line. Import History drops its intro line, and the Build Room dashboard KPI tiles scroll in a compact row on phones and tablets.
Department required on trade scopes
A trade scope you add by hand must now name a department, and once set it can be changed but not cleared. The Add trade scope buttons explain why they are disabled if you have no department to pick.
Approval changes show up straight away
Changes to approvers in your organization, such as department membership, roles or the sign permission, now appear on the Approval screen immediately instead of after up to five minutes.
Approvals no longer get stuck when an approver leaves
If an approver left the department after another had signed, the bid could sit at Approval with nobody able to sign. Refreshing approvers now finishes the approval and moves the bid to Submit, and the last real signature does the same. Approvers who leave are shown as withdrawn instead of disappearing, the activity log records the change, and any approver on the bid can refresh. A "Go to Submit" link appears once the bid has moved on.
ITB and plan uploads no longer stall silently
After a messaging outage, uploaded ITBs could stay stuck and block other uploads. Reading now times out from when it actually starts, and a stuck upload is retried a limited number of times. If it still can't start, you see "We couldn't start reading that ITB. Upload it again, or create the project manually." The system also recovers from a lost connection on its own.
Search respects departments
Search used to list every department's projects and trade scopes to anyone who could search. Results, filters, and the material "where used" counts now show only what your departments can see.
Project pages no longer break for people in two units of a department
A user who belonged to two units within the same department could cause an error on pages that look up the department's approvers, including Project Detail's setup notices. Those pages now load normally.
A much richer Projects list, saved pricing options per estimate, guided product tours, automatic drawing analysis for new projects, a redesigned price import, and noticeably faster Build Room pages.
Guided product tours
Short, step-by-step tours now walk you through the Build Room: the main menu, the Projects list, and each stage of creating a project from an invitation to bid. You can replay a tour any time from the tour button in the top bar.
Release notes in the portal
The version number in the footer now opens a Release Notes page listing every production release, grouped by year, with your current version marked. On phones you get a simple release picker.
Pick the pricing option each estimate is bid at
Each estimate now remembers which pricing option it is bid at, and the quote, approval and award all follow that choice. The quote offers only the option you chose, or both options when you mark the other one as "Offered on the quote". Awarding a bid records which option the client accepted.
Down payment on quotes
You can set a down payment on an estimate, and it carries through to the quote and proposal.
Company profile for proposals
A new Company profile page under Administration shows your company name and account, and feeds your proposals.
Proposal wording lives in your document
Proposal wording for each pricing option now comes from your proposal document, with one proposal document per trade and a "Show on proposal" setting for parts.
Automatic drawing analysis after you create a project
Once a project is created, its drawings are analysed in the background and the right departments are assigned for you, so you can start without setting this up by hand.
Assign trades to departments from a department tree
The department panel now shows your departments as a tree, with the number of people in each, so you can see who can sign before you assign.
Start over on a trade with a safe reset
Reset now lives in the trade's settings panel, explains exactly what will be removed, and asks you to type the project number to confirm.
Manage part categories from the price import
A new side panel lets you create and manage part categories while you import prices, and new parts in the review table show their discount rule.
Search the tables in the price import review
The review sections now have search boxes, so you can find a part or row quickly in a long import.
Bulk-delete labor categories
You can select several labor categories and delete them at once. Categories that are in use are protected and a confirmation appears first.
Mail Merge Fields panel for documents
The document editor now has a panel of Build Room merge fields. You can insert a single field or a whole repeating block with one click.
Sort the Projects list and open each bid's details in place
The Projects list has a "Sorted by" menu, and each row expands to show the site, bid terms, dates and contractor contact without opening the project.
State is picked up from the invitation to bid
When you create a project from an invitation to bid, the project's state is now recognised from the document and checked before you continue.
Projects list shows where every bid stands
Each project shows its number, bond and addenda badges, city, state and contractor under the name. Bid due dates read as a countdown ("5 days left", amber at three days or fewer, "Closed 14d ago" in red). Each trade shows its stage, the department that has it, and the bid value and margin. A new card view is available next to the list, and your choice is remembered. The list opens with bids you can still act on first, and a project you have just created is scrolled to and highlighted. Delete is no longer offered on the Projects list.
A "bids due soon" tile on the Projects page
The fifth tile counts bids still being prepared that are due within seven days.
Faster Build Room pages
The Launch Phase stages (Take-Off, BOM review, Estimate, Submit), Parts page, estimating template page, project detail, and every stage change load and respond noticeably faster. In testing the Take-Off page loaded in about half the time and the template page made far fewer requests.
Much faster price import
Resolving all conflicts, discarding and applying a price import now run in a fraction of the time and no longer time out on large files. The pending-conflicts banner on the Parts page loads instantly.
Redesigned price import
The upload and review steps follow a clearer summary-first flow with polished review sections, clearer wording, a confirmation that names the categories that will be created, and skipped rows visible in the review step.
Revisions start at R1 and the first estimate is not a revision
The initial estimate is labelled "Initial" in the activity feed and no longer appears in the Revisions card. R1 appears when a bid is first returned for revision.
Clearer approval banner and bid bond handling
The approval banner names the pricing option being bid, marks the template's default, and lists other offered options separately. On Submit you can view the bid bond on file and replace it until a bid is submitted. Replacing it keeps only one active bond, and once a bid is submitted the bond is locked until the bid is returned for revision.
Left-out cost lines read "by others"
On the Estimate step, cost lines the chosen option leaves out now read "by others", like left-out material and labor. The Lock confirmation quotes the chosen option's material and hours.
Easier "Leaves out" pickers on pricing options
Leaving out parts, labor and other costs now uses a searchable multi-select instead of long lists of tick boxes. The "leave out all labor that comes with the parts" switch now sits in the Labor group.
Overhead basis on estimating templates
Estimating templates can now choose whether overhead includes contingency, and revision pricing in BOM review uses the same basis. Rounding now explains the difference between "Round prices to" and "Round prices on", and Apex starter ranges are preloaded.
Tablet and phone support
Take-Off has a mobile layout with device information and status, and the Projects list, Import History tiles, launch stage ribbon and estimating templates are laid out properly on tablets and phones.
Cleaner, more consistent look
Buttons, tags, pills, labels, side panels, tables and dark mode were refreshed across Build Room and the Catalog. Each screen now has one clear primary button, confirm dialogs show Cancel first, and "New" and "Assembly" pills look the same everywhere. The Fire alarm trade no longer looks selected. Row menus are now a three-dot button, and keyboard focus is clearly visible on status chips and sortable column headings.
Fewer, fuller list columns
General Contractors, Contacts, Estimating Templates, Vendors and Projects lists show more rows per screen, with related details combined into one cell.
Dashboard polish
Operations and My Work tiles have faded icons that match what each figure measures. My Work shows readiness and flow information, and empty dashboards now show helpful empty states instead of blank cards.
Template creation asks first
Creating or copying an estimating template asks for confirmation, and the new draft is created before you land on its settings. A message confirms when a template was copied as a draft.
Bid-deadline filter missed the last day
Filtering the Projects list to a bid deadline of 5 October now includes projects due on the 5th.
"All" chip cleared your search and filters
Selecting "All" now clears only the status filter and keeps your search and Filters-drawer choices.
Searching "Chicago" matched most projects
Search no longer matches time zones. It now finds projects by a trade's name or its department.
Closed bids led the Projects list
Bids that closed this morning no longer sit at the top. Within each phase the soonest deadline comes first, and pages no longer repeat or skip a project.
"New" badge stayed for a week
It now shows for 48 hours after a project is created.
Stat tile labels broke mid-word
Labels such as "Total value" no longer split into "TO TAL VAL UE" on narrower screens.
Access denied from the Trade "Open" link
The link now appears only if you have access to the page it opens.
Trades looked "Not launched" for some readers
Readers who can see trades but not estimates no longer see every trade marked as not launched.
Wrong currency and rounding on the Projects list
Amounts now show in the quote's currency and percentages round the same way as in Project Detail.
Contractor notes only appeared on mouse hover
Notes are now available to keyboard and screen-reader users.
Project edit and trade settings issues
The trade settings panel and project edit behaviour work correctly, and warnings shown when a project is created remain visible after the redirect.
Reset errors and wrong reset wording
Resetting a trade no longer fails with an internal error. The warning now accurately says what will be removed. The "no department" warning badge on a trade no longer flashes.
Missing text for tenants without a root department
These tenants now see a clear message instead of a raw key name.
Quote and estimate pages failing after the pricing update
Pages that failed with a missing-column message for down payment or option settings now load.
Bid bond could be replaced after submitting
The bond can no longer be replaced from another trade or the Documents tab once a bid has been submitted. A refused replace no longer leaves a stray file behind.
Awarding with an older version failed
Awarding a bid from a superseded estimate version no longer fails and now records the accepted option on the current bid.
Price import issues
Part-category creation, categories created by an import being changed afterwards, applying imports with blank spellings, and the layout of the import help and search forms are all fixed. The import page also handles tenants with no categories.
Stale price overflow on parts and assemblies
Large stale prices no longer overflow on the Parts and Assembly screens.
Account menu and BOM review layout glitches
The account pop-up menu and some BOM review elements are displayed correctly.
Contacts could not be saved without email or phone
Email and phone are now optional on contacts.
Date picker and layout issues when creating from an invitation to bid
The date picker works better, and the PDF viewer controls are clearer.
Dark-mode hover and contrast problems
Price-book hover states are visible again in dark mode, and the price import drop zone edge meets contrast requirements in light mode.
Set up a new tenant from one page
Administration now has a single Tenant setup page. It brings together baseline packs, your own data imports and the removable demo set. You can import your parts catalog from an Excel workbook. Choose a file, validate it, review what would change, and then import. Nothing is written if the check finds a problem. You can download a list of issues as a CSV and a blank template to start from. A recent-runs log shows what was validated or imported and when.
Preview a pricing rule before applying it
On a bill of materials, you can pick a pricing rule in the job pricing panel and see the resulting material total first. Your existing lines stay untouched until you apply it.
Starters for each trade
TriArch now provides one ready-made starter template for each trade: fire alarm, sprinkler, low voltage, security, mass notification and fire pump. New templates start in two steps. First choose a TriArch starter or copy an existing template. Then pick which one.
Bring back retired templates
You can reactivate a retired estimating template. If another template of the same trade has taken its name in the meantime, you'll be told.
Multi-trade projects are awarded as one bid
Marking a project awarded or lost now covers every trade with a submitted bid. The awarded value is their sum, and each quote's recipients are told the result. Project Detail shows the combined value of the latest quotes when more than one trade is quoted. Dashboards and the Projects value tile also total the trades.
Bonded bids need a bid bond before submitting
You can't submit a bonded bid until a bid bond is on file. The Submit stage tells you what's missing.
Delete several vendors at once
The vendor list now has checkboxes and bulk delete. It also has a Delete action on each row.
Estimating template page redesigned
The page has a new layout. Estimation rule panels look and behave alike. There's a panel for adding default BOM categories, and price options are set up in a panel for Turnkey or Parts & Smarts. Saving default BOM categories no longer reloads the page. The pricing panel shows its categories as badges, and the rule summary banner is clearer. A new template gets a name suggested for you. Check & publish opens in a side panel instead of a new page and saves your pending edits first. If it can't, it says why.
Stages update in place
Estimate, BOM Review, Approval and Submit now refresh on the same screen after you make a change, instead of reloading the whole page. Your typed edits on Submit are kept. Stage changes such as Lock, Approve BOM, Return and Submit still load the page.
Clearer Submit, Approval and labor pricing
Counts on filter chips stay accurate
Counts on the filter chips refresh after searches, filter changes and deletes, instead of showing stale numbers.
Vendor prices use a proper date picker
The expiry date on vendor prices uses the same calendar as discount rules. Past dates can't be chosen for a new expiry.
Friendlier delete messages for vendors
When a vendor can't be deleted, the message names the vendors involved and says why. Either they have prices on catalog parts or their prices are still used on a bill of materials. The check happens before you confirm.
Take-off, dates and currency
Search
Contacts and bulk-select bars
The Contacts list drops its Actions column, and the selection bar is flatter and easier to read. KPI rows and filters on several pages adapt better to small screens.
Clearer permission names
The starters permission now reads "View starters". The four stage Review permissions now say they only show a Reviewer badge in My Work. Unused permissions no longer appear.
ArchAI Assistant tells you why it can't answer
Instead of a generic error, you now see whether you lack access to the project, the month's allowance is used up, or the assistant isn't set up for that jurisdiction. Questions refused because the assistant isn't set up no longer count against your monthly allowance.
Take-off quantities are kept when you save
Linear rows marked on more than one plan document keep the other documents' lengths. Counts on documents you aren't viewing are no longer overwritten. Generate BOM waits for the save, and stops with the reason if the save was refused. Autosave retries after a temporary conflict. A decimal comma such as "1,5" is no longer saved as 15.
Rounding no longer resets to $1
"Round prices to" shows the value you saved, and saving other settings no longer resets $10, $100 or no-rounding templates to $1. The trade is locked, with a hint, on templates started from a starter or copied from another, and on drafts of published templates. Trade and rounding refusals appear next to the field instead of on an error page.
Adding addenda works
Every attempt to add an addendum answered "no such entity". It now works.
Failed deletes are no longer silent
If deleting a project or bid version fails partway, you're told instead of leaving stray records behind. A drawing extraction whose final save fails is marked Failed instead of polling forever.
Alternate BOM lines no longer inflate the bid
Alternates were priced into the estimate and quote but left out of BOM totals, purchase orders and the price-expiry check. They are now consistently left out of totals everywhere.
Labor gaps check ignores alternate lines
The check no longer flags missing labor rates for alternate lines.
Toasts show in full-screen Take-Off
Notifications now appear in full-screen mode, and the page no longer clips at exactly 992px wide.
Duplicate contact and General Contractor issues from ITB intake
An ITB contact is added once per email and made primary only if the General Contractor has none.
Department access is enforced consistently
Project Detail offers Configure, Change department and Prepare drawings only to people who can work that scope. Others see a disabled control naming the department. Mark awarded and Mark lost are disabled, with the department named, if you can't work every trade with a submitted bid. Opening an estimate checks department access.
Money, search and display polish
Vendor conflicts panel
Batch rows no longer show a stray tooltip.
View BIM models right in your browser
You can now upload an IFC building model and view it directly on the project page โ no separate software needed to open and inspect the 3D model.
Estimation now follows a guided, step-by-step workflow
When enabled, a BuildRoom project's estimation now moves through clear stages โ Take-Off, BOM Review, Estimate, Quote Review, Approval and Submit โ with automatic hand-offs between steps instead of relying on someone to manually advance the project.
Building details are now generated straight from your IFC model
When you confirm a project from an ITB, BuildRoom now creates the building model and floor details directly from the IFC data and links each plan sheet to the right floor automatically.
Estimation work can now be scoped to a department
A trade scope must now be assigned to a department before its estimation can be launched, and each step of the process โ Take-Off, BOM Review, Estimate, Quote Review, Approval and Submit โ is only open to people in that department. Department assignment now happens up front, in the same step where you launch the estimation.
Approval now goes to everyone who can sign in the department, not just one person
Instead of two fixed approver slots, every eligible signer in the assigned department is added to the approval roster automatically, and the roster can be refreshed if the department's members change while an approval is in progress.
Review an ITB side-by-side with its extracted fields
When creating a project from an ITB, you can now see the uploaded PDF next to the extracted fields. Selecting a field jumps straight to where it was found in the document and highlights it, so you can quickly check the extraction was correct.
Get notified about key BuildRoom estimation milestones
You'll now receive notifications when a bid is submitted, a BOM or quote is approved, it's your turn to sign off on an approval, an estimate is locked, a trade scope is assigned to your department, and other key moments in the estimation process.
Overhead percentage is now adjustable within a set range
Overhead was fixed at 12%. With the right permission, you can now set it anywhere from 10% to 12% during the Estimate step, and the change is reflected everywhere the total is used โ the worksheet, the quote document, and Approval.
See a trade scope's full revision history
Opening the version badge now shows a read-only history of every version of a trade scope โ what triggered each new version and the reason an approver gave when returning it for revision.
General Contractors now have their own contacts list
You can view, add and search contacts directly from a General Contractor's page, and mark one contact as primary โ if another contact is already marked primary, you'll be asked to confirm before replacing it.
Assign drawing sheets to building floors
You can now link an uploaded drawing sheet to a specific floor of the building model (and remove that link later), so floor-by-floor take-offs line up with the right sheet.
See at a glance when a bid has expired
A project that's still in bidding now shows a banner on the project and launch pages once its bid deadline has passed, so it's obvious the window has closed without having to check the date yourself.
Units of measure for components, BOM lines, quotes, and estimates
Instead of typing a free-text unit, you now pick from a managed list of units of measure (each with its own precision and conversion rules) when working with components, bill-of-materials lines, quote lines, and estimation lines. This keeps quantities and units consistent across a project.
Project activity log
Every project now has an Activity tab showing a day-by-day history of what's happened on it โ approvals, quote submissions, version seals, take-off confirmations, BOM approvals, and more โ in plain language, with filters for gates, seals and versions, or documents.
My Work: a personalized home base for contractors
Contractor accounts now land on a My Work page instead of a placeholder screen. It shows approvals waiting for your signature and your active trade scopes in one place.
Try the app with realistic sample data
Administrators can now create (and later remove) a full sample scenario from Administration โ Demo Data: a pricing catalog, sample contractors and contacts, and a set of projects covering every stage of the bid pipeline, useful for demos and training.
See the full history of every price import, row by row
A new Import History page under Material Catalog lists every price file you've imported, with counts of rows updated, skipped, or errored. Open any import to see exactly what happened to each row.
New help guides on the Parts & Assemblies and Discount Rules pages
The Parts & Assemblies list and Discount Rules list now include a "what this page is for" help panel that walks through how to browse, add parts or assemblies, import price files, and how discount rules are chosen when more than one could apply.
Set up labor rates and price labor accurately on every bid
Labor used to be priced at a single fixed rate on every bid, regardless of trade, wage tier, or location. You can now set up labor categories and rate cards (wage, burden, and fringe) from a new Labor setup area, and estimates automatically resolve the correct rate โ standard, prevailing wage, or union โ based on the project's trade scope and jurisdiction. Each labor line on an estimate shows exactly which rate was used, you can add labor for work that isn't tied to a specific part, and authorized users can override a resolved rate with a reason on file. Catalog parts can now also be tagged with a labor category.
See what's inside an assembly, right from BOM and Take-Off
You can now open a read-only panel from the BOM and Take-Off pages to see the individual components that make up an assembly without leaving the page.
Point a trade scope at just the pages it needs
When creating a trade scope, you can now choose which drawing set it should read from and even a specific page range within it, instead of always reading the entire project intake document. Extraction runs in the background with a live status indicator, and you can now upload a new drawing directly from the picker instead of leaving to the Documents tab first.
Ask ArchAI questions about jurisdictions, codes, and your projects
A new AI assistant, ArchAI, is available from a chat sidebar on every page. Ask it questions about jurisdiction codes and amendments, service request projects and their submittals, or project drawings and documents, and it answers with citations back to the source material.
Download a report explaining exactly why price import rows failed
When a price file has rows that fail to parse, you can now download a plain-text report listing the line number and reason for each failure, instead of seeing only a total count.
New Operations Dashboard for tracking your pipeline at a glance
BuildRoom now has an Operations Dashboard showing your bid pipeline funnel, items that need attention, win rate by general contractor, and margin trends, all in one place.
Add tax, freight, permits and other costs directly to an estimate
Estimates can now include cost categories such as tax, tariff, freight, permits, mobilization and more, entered as either a percentage of material and labor or a flat amount, with a live preview before you save. The Estimate step is now one combined cost table showing material, labor and these other costs together, with an origin tag and a plain-English basis for each line. A new pricing panel lets you enter either a markup or a margin and see the price both ways, along with your distance from the minimum required margin. Cost categories themselves are managed from a new Setup section, where you can create, edit, search and deactivate them; a category that's still used on an estimate can't be deleted.
New fire alarm device symbols for Take-Off
Take-Off device configuration now offers a library of fire-alarm symbols โ smoke and heat detectors, fire alarm control panels, text signs, wall and ceiling speakers, and wall and ceiling horn/strobes โ in addition to the basic shapes, with a searchable dropdown to find the one you need. Adding a device from the catalog now uses the same picker in both Take-Off and the bill of materials, and the assembly components panel shows material, labor and total price for the assembly.
My Work now shows your activity and an attention queue
The My Work page now shows how much you've completed this week, broken down by trade, plus a queue of approvals that need your attention right away, built from the permanent activity record.
Delete labor rates and rate categories you no longer need
You can now delete a labor category, a part category, or an individual labor rate from their respective lists. A labor category can't be deleted while any rate, crew mix or catalog part still uses it (the message tells you how many); a labor rate can't be deleted if any live estimate on a live project was priced on it (the message names the projects). A closed rate can now be reopened from the list to fix a typo or extend its end date.
Close out a job and record its final margin
You can now close out an awarded or in-construction project from its detail page and record the realized margin for it, with the option to reopen and correct that figure later. The project's header shows its value and where that value came from โ an awarded contract, the latest quote, or not priced yet.
Approval screen tells you exactly what's needed next
The bid approval screen now shows a clear banner explaining where the bid stands: whether your signature is needed, who else still needs to sign, that there's nothing for you to do yet, or that every approval is in and the bid is ready to submit.
Your profile menu now shows your department
Opening your user menu now shows which department or departments you belong to, alongside your company name, so it's clear at a glance which team a person is part of.
Build reusable estimating templates for each trade
You can now set up named estimating templates per trade, each with its own pricing options (such as Turnkey or Parts & Smarts), expected bill-of-materials categories, and default settings. Templates support drafts, publishing, version history, and can be copied, downloaded, or imported as a starting point for a new template โ a project's estimate automatically uses its trade's current default template.
Bulk delete labor rates
You can now select several labor rates in the catalog and delete them in one action. Rates still priced into an existing bid are skipped and named, so you know which ones to retire a different way.
Bulk delete cost categories
You can now select several cost categories in the catalog and delete them at once. Any category still in use by an estimate is automatically skipped rather than blocking the rest of your selection.
Confirmation dialogs show a live summary before you approve or lock
Approving a bill of materials or locking an estimate now shows a summary first โ line count, material and cost figures โ so you know exactly what you're confirming before committing to it.
Take-off locks automatically once its bill of materials is generated
Once a bill of materials has been generated from a take-off, the take-off now becomes view-only โ you can still see the plans and counts, but counting and placement can't be changed, preventing a take-off from drifting out of sync with a bid that's already in progress.
Deferred change-order items are now properly excluded from the bid
Marking a code-required item as deferred to a change order on BOM review used to still get priced into the bid everywhere except that one screen, so approvers and the general contractor saw it included with no mention of a change order. Deferred items are now excluded from the base price on every screen and listed separately in the proposal with their own change-order price.
Track vendor pricing and price bids from your suppliers
Parts can now carry a standing price from each vendor that quotes them, entered on the part or, for a part set to follow a vendor, kept in sync automatically. On the bill of materials, you can price a line from the catalog, a job quote, or a specific vendor price, see what a full job would cost under each pricing rule, and group lines into a purchase-order view by the vendor supplying them.
More flexible cost setup in the catalog
Catalog parts can now carry a waste allowance percentage that's automatically factored into their cost on a bid. Cost categories can also specify what a percentage-based line (like tax or freight) is calculated against, and a markup-based pricing option now prices exactly as typed rather than being converted to an approximate margin.
Estimating templates now set the overhead, contingency, and minimum margin rules
Each estimating template can now define its own allowed overhead and contingency ranges, starting rates, minimum margin for bonded bids, and job-difficulty labor factors, per trade. New estimates start from these template rules automatically instead of a single set of defaults for every trade.
Make a published estimating template the default for its trade
You can now set an already-published estimating template as its trade's default directly from the templates list or from the template itself, without needing to publish a new version just to make that change.
See and manage individual placed marks in the take-off count log
You can now expand a device in the count log to see every mark placed for it, click one to jump straight to it on the plan, and delete a single mark or several at once. New count-log actions let you expand or collapse everything, or delete all devices at once, and hovering a device shows its name, SKU, maker, unit, and price. AI-detected marks are shown with a confidence score and a distinct style from manually placed ones, and double-clicking a mark on the plan opens it in the count log.
Search across your projects, quotes, and other records
A global search is now available for finding projects, quotes, and other records from one place. Results respect your permissions and are filtered using your local time zone, so date-based searches return accurate results.
Jurisdiction is now suggested automatically when creating a project from an ITB
When you create a project from an uploaded Invitation to Bid, the correct jurisdiction is now looked up from the project's address and preselected for you, saving you from picking it manually.
Choose a manufacturer vendor when adding catalog parts
Vendors can now be categorized as Manufacturer, Distributor, or System Integrator. When creating or editing a catalog part, selecting a manufacturer vendor now resolves the part's brand for you automatically.
Price a bid two ways with the Parts & Smarts option
You can now price an estimate under a second pricing option, such as Parts & Smarts, alongside the standard Turnkey price. The Estimate screen shows both side by side, options can leave out specific part categories or installation labor, and the approval and submission steps check and disclose each offered option.
Take-Off now shows an editable Floor Details and Building panel
You can view, add, edit and delete floor and building properties right from the Take-Off screen, and the workspace layout can now be resized and collapsed to give more room to the plan viewer.
Take-Off property editor supports more field types and stays responsive while saving
Custom building and floor properties can now be saved as whole numbers, labels or IDs, not just text and measurements. We also fixed an issue where a property row could stay locked after saving or deleting, blocking further edits.
Sending a bid back for revision now restarts from the bill of materials
Returning a bid for revision used to restart the process at the Estimate step. It now restarts at the BOM step, and the copied bill of materials comes back as a draft with the previous approval cleared, so it goes through review again properly.
Upload supporting documents straight from the Documents tab
A project's Documents tab now has its own upload panel โ drag and drop or browse for a file, choose its document type, and watch the upload progress, without leaving the page.
Upload larger documents and load big plan sets more reliably
The file size limit for document and supporting-document uploads has been raised from 100 MB to 200 MB, and large PDFs in Document Review now stream in more efficiently and are far less likely to time out or appear stuck while loading.
Opening an estimation workspace is now faster
Entering a BuildRoom estimation workspace no longer loads the page's data twice before redirecting you to the right step, so the workspace opens noticeably faster.
The Quote Review PDF loads instantly after the first time
Opening, refreshing, or stepping through Quote Review used to regenerate the quote PDF from scratch every time. It's now cached, so repeat views load immediately instead of waiting for it to be rebuilt.
Faster response when editing BOM lines or opening Approval
Department and approver checks that used to be recalculated on every action are now cached briefly, making BOM line edits and the Approval page noticeably more responsive, especially on larger projects.
Take-Off autosave is lighter, and starting a revision is faster
Take-Off now saves your counts a little less frequently while you're actively working (with a safety cap so nothing sits unsaved for long), and only sends the plan sheets that actually changed. Copying a BOM and estimate when returning a bid for revision is also faster on large projects.
Catalog list pages got a cleaner, more consistent look
Price Book, Category Parts and Discount Structures now use a more consistent table layout with clearer active/inactive labeling, and bulk-delete checkboxes only appear for people who actually have permission to delete.
Contacts now live in your contractor directory, not a single project
A contact is now linked to the general contractor they belong to, so the same person no longer needs to be re-entered per project. You can mark one contact as the primary contact for a contractor instead of typing in a separate company name field.
Clearer errors and offline support for price imports
Price import now shows plain-language error messages instead of a raw failure, and the review/import steps are easier to follow. Uploaded price files are stored locally instead of relying on the internet, so the import works even without a network connection.
A cleaner, more focused Take-Off workspace
The side menu and the right-hand details panel now start collapsed so the plan itself gets more screen space. The device/count log can show totals for every sheet at once or just the sheet you're on. Fullscreen mode now covers the plan and left rail (not the details panel) and hides extra controls for a cleaner view, and the fullscreen button was moved next to the building-floor controls and the other viewer buttons realigned for easier reach.
Better filtering on the Category list
The Category page now has a dedicated Filters panel (name, description, active status) with Apply and Clear buttons, and the parts table styling was cleaned up for easier scanning.
Built-in help and quicker searching on directory pages
Contacts, General Contractors, Catalog Parts, Category, and Discount list pages now have a help panel explaining what the page is for and how to use it. Search now filters as you type instead of waiting for Enter, and a newly created or edited row is highlighted in the list so you can find it right away.
Change a trade scope's department after it's been assigned
Previously a department could only be assigned once. You can now change the department that owns a trade scope, with a picker that shows what changing it means before you confirm.
More reliable loading for large documents and packages
Document Review and Packaging previously relied on caching entire large files in memory, which could slow down or fail to load bigger scanned document sets and packages. They now read large files directly from storage as needed, improving reliability.
More reliable extraction from large bid documents
Automatic field extraction from an uploaded invitation-to-bid PDF now reads the file more reliably for larger documents, with an automatic retry if the faster path doesn't work.
Clearer floor labeling and easier time zone selection
Floor detail text now correctly says sheets are linked to floors rather than storeys. The bid deadline time zone field now shows a placeholder, and creating a project from an invitation to bid now lets you pick from a full list of time zones instead of a limited set.
Better bid-document extraction and a refreshed Take-Off screen
Automatic extraction from invitation-to-bid documents was upgraded to a newer, more accurate model, and the Take-Off stage page received a visual redesign.
Cleaner material catalog imports and pricing screens
Price import files can now include a dedicated part name column, separate from the longer description. The catalog parts table is easier to scan with fixed, non-wrapping columns, and bulk repricing and discount-rule screens now clearly label whether you're entering a percent off or a multiplier.
Faster folder loading in Document Management
Browsing a folder with many files or subfolders previously could take many seconds, and grew slower the more it contained. Folder listings now load in a small, constant number of steps regardless of size, so even large folders open quickly.
Quote review and project detail screens polished
The quote review and project detail pages received visual refinements, and creating a new catalog part or assembly from a filtered category list now pre-fills that category for you.
Bulk delete and UI fixes for units of measure
You can now select and delete multiple units of measure at once, along with several small display corrections on that screen.
Contractor navigation reordered around your day-to-day work
The sidebar for contractor accounts is now ordered around daily work, pricing, directory, and setup, so the tools you use most often no longer sort below Administration. Payment moved under Administration.
Approval screen redesigned around the sign-off decision
The Approval page has been rebuilt so the bid amount, the reason it needs attention, and the sign-off actions are always visible together, with the cost build-up, quoted scope, and site conditions shown alongside them. The roster, documents, and project facts now live in a side panel, and the quote document opens full-size in a new tab instead of a small, hard-to-read embedded viewer.
Take-Off plans open dramatically faster
Opening a Take-Off plan, switching between plans, or moving between stages could take as long as a minute or two because the entire plan set was re-downloaded every time. Plans now stream in and are cached, so repeat opens and stage changes are near-instant. The plan viewer also now opens fit to the page instead of zoomed in to full size.
Search projects as you type, including by contractor name
The Projects list now filters as you type instead of waiting for you to press Apply, and a search now also matches the general contractor's name, not just the project's own details.
Map unmatched categories and units during price import without starting over
When a price file uses a category or unit of measure the catalog doesn't have, you can now map it to an existing one right from the import review screen. Both active and inactive options are shown, with inactive ones clearly labeled and blocked from saving until they're activated. The review list also refreshes in place after you create a new category or unit, so you don't have to restart the import, duplicate category names are now blocked, and error messages for blank or invalid import data are clearer.
Price import review shows units for new parts and lets you choose which spelling to use
New-part candidates in price import review now show their unit of measure, with a warning when it's unrecognized. When a category or unit name has more than one possible spelling, the Create button now opens a picker so you choose which one to use instead of silently creating the first match.
Labor Rates page is easier to use, with better filtering and validation
The Labor Rates screen has clearer labels (such as "Base wage $/h" and "Leave blank = no expiration"), streamlined add and edit forms, and new filters for effective date ranges. The form now also checks that the effective-from date comes before the effective-to date.
Labor categories get a searchable list and unique payroll codes
The Labor Categories setup page now has the same search and toolbar layout used elsewhere in Catalog, making categories easier to find. You can also give a labor category a short payroll code, and the system now rejects a code that's already in use on another category.
Clearer navigation and menu names across the app
The sidebar now groups items under Work, Library, Network, and Setup headings. Several menu items also have clearer names: Catalog is now Material Catalog, Catalog Parts is now Parts & Assemblies, Category Parts is now Part Categories, and Import Price / Import History are now labeled Price Import / Import History. Labor Rates and Labor Categories now sit as their own section next to Material Catalog instead of being nested three levels deep.
Demo data now builds a full sample catalog and protects your real data
Creating demo data for a tenant now builds a complete fire-alarm pricing catalog โ dozens of categories, hundreds of priced parts, kits, labor categories with rates, and a favorites list โ instead of a handful of sample parts, alongside sample contractors, contacts and a full bid pipeline. Creating demo data now checks first for catalog numbers that would collide with your real parts and refuses to run rather than mixing the two, and removing demo data now refuses if any of your real crew mixes, estimates, bills of materials or kits still depend on it, telling you exactly what to fix first.
Collapse the drawing preview while setting up a project from an ITB
When creating a project from an invitation to bid, you can now collapse and expand the PDF preview to make more room for the rest of the form, and table headers on that page use a clearer font.
Resolve multiple pricing conflicts at once, including brand changes
When a price import finds conflicts, you can now resolve several pending conflicts in a single action instead of one at a time, and new filters help you find the ones you want. Conflicts caused by a brand mismatch now show both the current and incoming brand, and resolving them can apply the brand change along with the price.
Labor rate editing tightened up
The labor rate editor has been simplified: the tier and wage-determination fields, and the Union Local and Jurisdiction columns on the rates grid, are temporarily hidden while that work continues, and the Effective From / Effective To dates now stay in sync correctly as you edit them. A rate that was cancelled before it ever took effect can no longer be edited (which used to save with no real effect) โ add a new rate instead.
Large price import re-matching now runs in the background
Re-matching a price import after changing categories or rules used to run inline, which could be slow or time out on a large file. It now runs as a background job, and the review screen polls for progress and tells you if the rematch failed, rather than leaving you waiting on a blocked page.
Every catalog part now carries its own labor category
Catalog parts and assemblies now carry their own labor category instead of relying on one tenant-wide default, so estimate hours are priced against the category that actually matches the part. If a part with labor hours has no category set, the bill of materials and estimate now show a clear "Hours not priced" flag on that specific line โ and the Estimate step totals the hours left out of labor โ rather than stopping the whole estimate with a configuration error. Bill of materials totals, priced hours and line counts are now based on every line rather than just the first page shown, and the table tells you when it's only displaying the first 1,000 lines. Cost line percentages (like an 8.875% tax rate) can now be entered and saved without being rejected for having too many decimal places.
Clearer label for a trade scope's drawing selection
The field for choosing a trade scope's default drawing now reads "Drawing documents" instead of the more ambiguous "Drawings".
Parts & Assemblies gets a new browse-and-filter workspace
The Parts & Assemblies list is redesigned as a single workspace: a category rail on the left (with pinned Favorites, All parts and Assemblies, a filter box to narrow the list as you type, and a collapsible layout that's remembered) alongside the grid on the right, with search and filters now built into the same panel. Catalog numbers are easier to scan, quick actions (Edit, Components, Price history) appear when you hover or focus a row, and selecting multiple rows now shows a contextual action bar instead of a banner above the page.
Part categories, units of measure and discount structures get the new workspace too
The same rail-and-grid workspace introduced for Parts & Assemblies now applies to Part categories, Units of measure and Discount structures: a browse rail on the left, search and status chips built into the panel, and counts shown for each scope. Discount structures also gain a manufacturer search and status chips for expiring and expired rules, and bulk actions show as a contextual bar while rows are selected.
Side panels now open at a consistent size, with a widen option
Slide-out panels throughout the app โ approvals, pricing details, document review, help and more โ used to open at many different widths, and only one of them offered a button to widen it. Every panel now opens at the same width and offers the same widen/narrow toggle beside its close button, and help panels now have the same visual border and shadow as the rest of the app.
Faster zooming and panning on the Take-Off drawing viewer
The Take-Off PDF viewer now supports zooming to your cursor with the mouse wheel, panning by holding the middle mouse button without leaving whatever tool you're using, and fitting the page with a double middle-click. The scrollbar is also easier to see in dark mode, and the Project Details page now points you to the next step right after you create a project.
Notifications and approval emails now include the project number
Emails and in-app notifications for approvals, bills of materials, and estimate versions now consistently include the project number, so it's easier to tell which project a notification is about at a glance. A quote returned for revision now sends its own email with the project number in both the subject and the body.
Bill of materials and estimate sections now remember what you leave open
Line groups on the bill of materials and estimate screens now start collapsed rather than opening automatically, and what you expand is remembered by category so it doesn't shift around after every change.
Clearer bid summary and submission emails
The Submit step now shows a clearer bid summary with properly formatted currency and a localized bid due date, and the email it generates has better-organized subject and body content. The project detail page's audit log now also records bond attestation and addenda acknowledgment, so there's a record of when those were confirmed.
Newly saved catalog entries are easy to find
After you add or edit a cost category, labor category, or labor rate, that row is now highlighted and scrolled into view, and these lists show your most recent entries first instead of alphabetically.
Feedback tickets now say whether it's a bug or a suggestion, and reach the right team
When you send feedback from the quick report panel, you can now flag whether you're reporting a problem or suggesting an improvement. Tickets also route to the correct team more reliably, including when you're on a page that doesn't obviously belong to one product area.
Kits on the bid materials list now show their individual parts
An assembly or kit picked during counting or added from the catalog used to appear as a single rolled-up line on the bill of materials. It now lists the individual parts inside it, each at the right quantity, so the materials list reflects what's actually being installed. Kits no longer need their own labor category, since each part's labor is now priced under its own category.
Starting a new project from an ITB document is now a single step
Creating a project from an Invitation to Bid used to open two separate pop-up panels, one after the other. Uploading and reviewing the extracted document now happens in one panel from start to finish.
Redesigned document editor on the Quote review page
The document editor used when reviewing a quote has a refreshed layout and controls, making it easier to work with your proposal document before sending it.
Consistent progress indicator across the bidding pipeline
The BOM review, Estimate, and Quote review pages now use the same step-by-step progress indicator used elsewhere in the app, instead of each page having its own version, for a more consistent look as you move through a bid.
Faster loading on BOM review, Take-off, and related screens
Several screens that list projects, quotes, and BOM lines now load their counts more efficiently, and Take-off's autosave only writes rows you actually changed, so counting and pricing stay responsive on larger jobs.
Clearer overhead toggle on the Estimate screen
The overhead control on the Estimate screen now uses the same on/off switch style as the contingency control on BOM review, so switching overhead on or off reads the same way everywhere.
Description is now required on labor lines
Adding a labor line now requires a description, so labor entries on an estimate are always identifiable later.
Clear status messages during multi-step actions
Approving a bill of materials, locking an estimate, sending a proposal, signing, returning for revision, and submitting a bid used to just grey out a button with no explanation while the next step loaded, which could look frozen. These actions now show a message describing what's happening until it completes.
BOM generation confirmation shows how many devices you're adding
The confirmation you see before generating a bill of materials from the count log now shows the number of devices involved, not just the number of material types, so it's clearer what you're about to commit to.
Project overview page is easier to follow
On a project's overview tab, the bid-to-award progress is now shown once for the whole project instead of being repeated under every trade scope, and the tab bar now stays visible at the top as you scroll down the page.
Clearer labels for AI-detected vs. manually added symbols
The wording used to describe symbols the AI detected versus ones you added yourself has been clarified throughout Take-off, so it's easier to tell at a glance where a count came from.
Expired pricing now warns instead of blocking your submission
Submitting a bid that relies on an expired vendor price or job quote used to be blocked outright. It now shows a warning that you acknowledge, and that flag travels with the bid, so you can still choose to submit while a fresher price is sourced.
Redesigned catalog toolbar for search and filters
The catalog panel's toolbar has a cleaner layout for search and filter controls, making it easier to narrow down long parts and pricing lists.
Contacts and general contractors now require an email and phone number
Creating a contact or general contractor, either directly or automatically when confirming a project from an ITB document, now requires an email and phone number, so every contact you save can actually be reached.
Contingency now sits next to overhead on the Estimate step
Contingency is now set on the Estimate step alongside overhead, instead of on the BOM review step, so the two related cost adjustments are made in the same place.
Compare pricing options side by side
The pricing options view now prices every option against the same example job, with a hint for each pricing method and live range checking as you type, making it easier to compare what each option would actually charge.
Quote documents now autosave, with a status indicator
The quote review document editor now saves automatically a short moment after you stop typing, and shows a status next to the title โ saving, saved, offline, or a retryable error โ instead of requiring a manual save.
Projects list shows when each project was created
The projects list now includes a Created On column, with the last-updated time shown under the project name.
Take-off plan viewer shows autosave status
The plan viewer now shows the same autosave status indicator used in Quote review โ unsaved, saving, saved, or offline โ and shows a friendly retry message instead of a raw error if a save fails.
Refreshed, more consistent catalog styling
Catalog list pages now use consistent row striping and hover colors that also work correctly in dark mode, the project detail page's launch rows and trade-scope cards share one visual style, and the labor categories page's explanatory note has moved into its help panel to reduce clutter.
Markup that came with a document no longer gets swept into your review
Documents that already contained markup from other software (such as AutoCAD exports or earlier review rounds) were being treated as part of your annotations โ they were being saved, exported, and could even cause a comment export to fail. That existing markup now stays visible on the page but is no longer mixed in with your own comments and stamps.
Comment export now warns you before you hit the limit, not after
Exporting comments from an oversized document used to run for a long time and then fail with a confusing error only after everything had uploaded. You'll now see a clear message up front if your export has too many images, before any time is spent generating it.
People outside a project's department now see the correct read-only view
Team members who weren't part of a project's assigned department were sometimes shown a blank Take-Off canvas or blocked from opening the quote entirely, instead of the intended read-only view. These pages now load normally in read-only mode for non-members.
Assembly costs now correctly account for parts priced per multiple units
If a component's price was based on a quantity greater than one (for example, priced per box of 100), an assembly built from it could show the wrong rolled-up material cost. Assembly pricing now divides by that basis quantity correctly.
Bulk repricing preview now shows the right number of affected items
The preview before a bulk price change could report a different count of parts and assemblies than what the change would actually update. The preview now matches exactly what will be applied.
Page Organizer changes are no longer lost when saving a reviewed document
Rotating or reordering pages with Page Organizer didn't always register as a change, so Save & Next could skip uploading those edits. Any Page Organizer change is now correctly saved.
Estimate totals for large bills of material are now accurate
On a bill of materials with more than 1,000 lines, the total shown on the Estimate step could silently be cut off and disagree with the actual quote. Totals are now calculated correctly regardless of size.
Generating a bill of materials no longer hangs on large take-offs
Creating a BOM from a large take-off count could take a very long time or appear to hang. Part and mapping lookups are now batched together, so BOM generation completes quickly even on large projects.
Turning off the contingency buffer now actually removes it
The contingency toggle in BOM Review looked like it was off but had no effect โ the percentage stayed editable and the buffer was still added when the BOM was approved. Turning it off now removes the buffer for real, and the percentage field is disabled while it's off.
Unit prices in BOM Review now show cents
Unit costs were rounded to whole dollars, which could make a correct line total look like a math error (for example, a $3.94 item showing as "$4"). Unit prices now display with cents while extended totals stay whole-dollar.
Trade scope status now reflects what's actually been completed
A launched trade scope could keep showing as untouched, and a scope sent back for rework could keep showing as ready-to-quote. Status now updates correctly at every stage, including right after launch and after a return for revision.
Overhead and margin controls no longer show stale numbers after a rejected change
If a permission check rejected your change to overhead or margin, the worksheet had already recalculated on screen and kept showing the attempted, invalid numbers. A rejected change now reverts the control and the recalculation back to the last saved value.
Assembly labor hours field now reflects the real total
The labor units field on an assembly could be typed into, but the value was never actually saved or used. It's now a read-only field that always mirrors the labor hours rolled up from the assembly's components.
Payment redirects now return you to the correct page
After completing or cancelling a payment, the return link could point to the wrong address instead of your organization's own page. Payment redirects now correctly return to your organization's URL.
Large packages no longer fail to save
Saving a large finished package (roughly 300 MB or more) used to fail outright after several minutes with no clear reason. Saving now happens in the background and reports real progress, so large packages finish successfully instead of timing out.
Project documents open directly instead of failing to download
Viewing an uploaded project document now opens it right in the browser instead of going through a download step that could fail. If a document can't be opened, you'll see a clear message telling you to try again.
Fixed pages and document viewers failing to load for some tenants
Some project subdomains couldn't load the portal or storefront at all, and documents or packages opened through a secure link sometimes failed to display. Both are now fixed.
Packaging edit screen now displays documents correctly
The document editing step of packaging could fail to show the document at all in some environments. It now uses the same reliable viewer as the rest of Document Review, and the loading indicator no longer disappears early on large files.
Location lookups fixed outside local development
Address/location lookups were only configured to work in local development and silently failed elsewhere. They now work correctly in staging and production as well.
Fixed error when adding a floor with a duplicate name
Adding a building floor with a name that was already in use produced a confusing error. This now behaves correctly.
Manually created projects no longer error out in Take-Off
Opening Take-Off on a project that was created manually (rather than from an uploaded drawing set) used to fail with a server error. It now opens correctly.
Won bids no longer linger in your work queue
A trade scope that had already been awarded could still show up in My Work as if it still needed action. Awarded scopes are now correctly removed from the queue.
Margin-below-floor warning now shows the correct number and direction
When a bonded project's margin fell below the required floor, Approval displayed it as safely above the floor and in green instead of flagging the shortfall. It now shows the correct amount and color. The bonded floor is also no longer shown at all on projects that don't require a bond.
Compliance and exposure figures, and revision messaging, now accurate
The compliance and exposure figures on Approval always read as zero regardless of the actual costs; they now reflect the real numbers. Sending a bid back for revision also used to tell you it would restart at the Estimate stage when it actually restarts earlier, at the cost breakdown โ the message now matches what happens.
Prevailing wage, union, and bond details now carry through correctly
Prevailing wage and union local information captured during intake was previously discarded when the trade scope was created, so it always showed as not required even when the source documents said otherwise. Bond requirements can now also be corrected after intake instead of being locked in from the start. Generated quote documents no longer come out with blank scope and exclusions sections.
Auto-detected Take-Off symbols keep their appearance after reloading a plan
Symbols that Take-Off detects automatically are meant to appear as outline-only markers and count separately from ones you place by hand. After saving and reopening a plan, they used to come back filled in and miscounted as manual marks. They now keep their original look and count correctly.
Deleting a category, unit, or other reference item no longer breaks other lists
Deleting a material category, unit of measure, contractor, fee schedule, or similar reference item that other records still pointed to used to make the dependent list page fail to load for every user. Reference items that are currently in use can no longer be deleted; for records that still reference something removed another way, the missing value now shows as blank instead of causing an error.
Wide list tables no longer hide columns you need
List pages across Material Catalog, BuildRoom, and ControlRoom (Contacts, Fee Schedules, Permit Projects, Request Forms, Service Requests, and others) used to collapse extra columns behind an expand icon, which could hide columns entirely at normal zoom levels. These tables now scroll sideways within their own space instead, so every column stays visible.
Clearer guidance when adding a catalog part or assembly without a unit of measure
Creating or editing a catalog part or assembly now marks unit of measure as required on the form, and an assembly's component list shows a clear message asking you to choose a unit first instead of a blank or broken label.
Support tickets now show up correctly regardless of where you filed them
Submitting a support ticket from BuildRoom, or checking My Tickets afterward, could file it into the wrong queue or fail to find it. Tickets now route to the right queue based on where you filed them, and both My Tickets and ticket detail lookups check every relevant queue so your tickets are found reliably.
Price import catches blank part names and units instead of guessing
A price import file with a blank part name or a blank unit of measure used to fall back to a guess โ the catalog number as the part's name, or an "each" unit that could silently mis-cost a linear-foot item. The importer now requires a Name and a Unit of Measure column, flags any row that's missing either one with the reason shown in the downloadable error list, and refuses to import a file where none of the rows have enough information to create a usable part.
Operations dashboard numbers and signature queue are now accurate
On the operations dashboard, the chart that shows bid trends could show an axis running below zero even for a normal, non-negative series. The period comparisons under win rate and awarded value described the wrong time window, so a bid that arrived over a year ago and was just awarded could look like it belonged in the current period; the wording now matches what's actually being measured. The attention list could also show zero pending signatures for you to sign whenever there were five or more overdue bids, even though signatures were waiting โ both categories now always get their fair share of the list.
Page range selection for drawings no longer accepts pages that don't exist
Selecting a page range for drawing extraction โ both on project intake and for a trade scope โ now checks the range you asked for against the actual length of the PDF, in the browser before you submit and again on the server, instead of accepting a range past the end of the document. Separately, the Launch step no longer falls back to the first trade when the trade scope isn't known, and the Launch link is rebuilt correctly once drawing preparation finishes.
Jurisdiction names on approvals no longer flash a placeholder
The Approval screens could briefly show a placeholder instead of the real jurisdiction name if the lookup wasn't ready yet. They now retry until the name is available, so you see the correct jurisdiction from the start.
Approvals can no longer be edited or re-sent after they're closed
Once every approver on a bid has signed, or the bid has moved past approval, a few paths could still change the roster after the fact โ adding a reviewer, removing a signed approval, or re-sending the quote for approval, which could silently swap in a new document or wipe out recorded signatures. All of these are now refused with a clear explanation, and error messages from a failed action now show the actual reason instead of a generic "request failed."
Device counts are now classified correctly as count or linear
Placed devices are now classified as a count item or a linear (length) item based on the catalog part's actual unit of measure, instead of a rule that could misclassify them. A trade scope's default Take-Off drawing is also identified correctly, where it could previously go unrecognized.
Dashboard tiles now show your real numbers
The Projects dashboard's Total value and Average margin tiles, and the Operations dashboard's Realized margin card, used to display a placeholder instead of live figures. They now show your actual contract value, quoted value, and margin, with a note on how many active projects have a price yet.
Win rate no longer drops when you close out a won job
Closing out a project used to make it disappear from win-rate and hit-rate counts on the Operations dashboard, Quotes page, and My Work, understating how often you actually win. Closed jobs now stay counted as wins everywhere those numbers are shown.
Invitations now send new users to the right company portal
Accepting an invitation could redirect a new user to the wrong environment's login page. Invitation links now resolve to the correct company-specific portal before signing in.
Clearer message when a labor rate can't be deleted
The message shown when you try to delete a labor rate that's still used on a bid now names the specific rate โ its tier, category, wage, and effective dates โ instead of only listing the affected projects.
Discount rules now require a valid date range
A volume discount rule could previously be saved with an end date on or before its start date, which meant it silently never applied. The end date must now be after the start date.
Friendlier error messages when adding a labor line
If the labor rate couldn't be resolved while adding a labor line, the panel used to show a raw technical error message. It now shows a plain, readable message instead.
Area icon in Units of Measure no longer shows blank
The icon for the Area unit type had gone missing from the icon set and displayed as a blank space. It now shows correctly wherever unit types are listed.
Bid totals now match on every screen
The same bid could previously show slightly different totals on the Estimate screen, the stored quote, Submit, the proposal document, and the Approval screen, due to each place rounding and computing the price its own way. Every screen now reads the same, single, precisely rounded figure, and editing a bill of materials in a later revision correctly re-prices the estimate everywhere instead of leaving stale numbers on some screens.
A bid can no longer be approved with unpriced labor
A bill-of-materials line whose part had no labor category assigned had its hours silently priced at zero, understating labor cost without any warning. Approving a bill of materials with any such unpriced hours is now blocked, and the message names exactly which items need a labor category before you can continue.
Proposals now show accurate labor pricing and complete contact details
Generated proposal documents could show a flat placeholder labor rate that didn't match the actual labor total, and could leave the client name, contact, email, or phone blank, or show an unpriced pricing option as "$0.00." Proposals now price each line at the same rate used in the bid, fill in the client's contact details automatically, and leave out any pricing option that hasn't been priced instead of showing it at zero.
Price import files no longer zero out prices, and hand-entered prices are protected
A price file whose price column header didn't exactly match an expected name used to be silently read as all-zero prices and applied to your parts. Such files are now rejected with a clear message instead, and blank, zero, or negative prices in a file are flagged as errors rather than applied. Prices you've entered by hand can no longer be silently overwritten by the next price import.
The minimum required profit margin is now checked precisely
Rounding in the displayed margin percentage meant a bid that was actually a hair under the required minimum margin could pass without the usual override approval, while a bid that genuinely cleared the floor could be asked for one it didn't need. The exact margin now decides in both directions.
Approval screen's cost breakdown now adds up
The direct-cost figures shown to approvers used to leave out certain cost lines, such as tax, so the total didn't match the actual cost basis of the bid. The Approval screen now shows every cost line, grouped clearly, so the numbers reconcile.
BOM lines and volume discounts always use current, correct pricing
Adding a part from the catalog to a bill of materials could apply a price already loaded in your browser rather than the current catalog price. Pricing is now always determined on the server from the current data. Separately, when a part qualified for both a manufacturer-specific and a category-specific discount, whichever rule was edited more recently could win by accident; the more specific rule now always applies as intended.
Take-off symbol styling now persists after reload
Custom appearance settings for take-off symbols used to reset after leaving and returning to the page. They now persist correctly.
Trade scope extraction no longer gets stuck
Extracting scope for a trade could previously hang partway through. This has been fixed.
Cost category codes must now be unique
The catalog previously allowed two cost categories to share the same code. Duplicate codes are no longer allowed, preventing confusion between categories.
PDF viewer scrollbar issue fixed
A scrollbar display issue in the PDF viewer that affected its responsiveness has been fixed.
Comments on quote documents show your real name
Comments left on a quote document used to be attributed to "Guest" instead of the signed-in user. They now show your actual name.
Display issues fixed on Quote review
Several visual issues on the Quote review page are fixed: rail buttons were hard to see in light theme, and the search, comments, and options panels could overlap or clip in a narrow window or in fullscreen.
๐ Auto-detect symbols on takeoff plans
When counting devices on a plan PDF, you can now drag a box around one example symbol and let the system find and place every matching symbol on that page automatically โ instead of clicking each one by hand. You'll see a busy indicator while it searches, a clear message if nothing matches, and a chance to confirm, redraw, or cancel before anything is placed. The device count log now also breaks down totals into how many were placed manually versus auto-detected, so you can see at a glance how much of the count was automated.
๐๏ธ Foundation for full 3D building models
Projects now have the underlying support to store detailed building models โ floors, spaces, and structural elements โ using industry-standard BIM data, with comments that can be attached to specific parts of a building. This lays the groundwork for richer 3D views and floor plans in upcoming releases.
๐ See who submitted a service request
The Service Requests list now shows who submitted each request right under its tracking number, alongside when it was last updated โ no more guessing or opening the request just to check.
๐งพ Payment requests show which service request they belong to
The payment requests table now includes a clickable tracking number linking back to the originating service request, plus a "Purpose" column (intake fee, activity fee, or credit pack) so it's clear what each payment is for at a glance.
๐ซ Deactivated services can no longer receive new requests
Previously, a service request could still be created or submitted against a service that had been deactivated. This is now blocked with a clear message explaining that the service is deactivated, and pointing you to reactivate it in Service Catalog settings or choose a different service instead.
๐ณ Buy, track, and manage service request credits
Agencies can purchase prepaid service request credits directly from Settings, with credits used automatically as reviews are launched and a clear prompt to top up when your balance runs low. A new page shows your full credit purchase history with downloadable invoices.
๐ง Verify your email during sign-up
The registration form now supports entering an emailed verification code, with a "resend code" option.
๐ค Your AI assistant now reads far more document types
AI-powered document workspaces can pull text from PDFs, images (JPG, PNG, TIFF, HEIF), Word, Excel, PowerPoint, and HTML files โ not just plain text โ using a more accurate extraction engine. Uploaded drawings can also have their scale notation (e.g. "1/4" = 1'-0"") automatically detected and read, laying the groundwork for automated drawing review.
๐ฌ Ask the AI assistant about a specific request's own documents
While viewing a service request, the CodeAdvisor assistant can now answer questions using that request's own submittals, corrections, and linked files, while keeping every request's documents fully separate from one another and from general chat.
๐๏ธ Delete notifications and contacts you no longer need
You can delete individual or bulk-selected in-app notifications from a redesigned list with paging and search. You can also delete a contact outright โ if it's still linked to other records, you'll get a clear explanation of what needs to be removed first instead of a failure.
๐ก๏ธ Guardrails that catch setup mistakes before they happen
Only one Project Owner is allowed per project, with a clear message if you try to add a second. When configuring a service definition's review steps, you'll now be warned if the combined step time would exceed the permit's overall validity window.
๐ A more capable host admin dashboard
Platform admins can filter tenant growth and KPI charts by date range, see trend changes on each KPI tile, and check live system health (database, cache, queue, background jobs, email, and file storage) instead of a static list of installed modules.
๐ Richer new-tenant onboarding
Setting up a new agency tenant can now include custom notification email content, and the default emails you receive (request created, fee waived, review launched, etc.) include clearer next-step guidance.
๐งพ Download your payment receipt from a service request
Applicants can now download a receipt for the intake fee or any activity fee directly from the request's Fees section, not just from internal payment history.
๐ฐ Review credits are clearer to buy and use
The credit purchase and launch experience (now labeled "Review credits") has been reworked: you'll see a clear confirmation after buying credits, low/zero-balance messaging, and a "top up" prompt explaining why the Launch Review button is blocked when you're out of credits โ instead of the action just failing. The launch confirmation now also shows the credit cost up front, and credit amounts always display with a proper "$" symbol. Credits are now only checked and used when you actually launch a review, not while you're still drafting a request.
๐งญ More roles see the navigation they're entitled to
Operations Manager, Reviewer, Intake Clerk, and Read-Only roles โ not just Agency Admin โ now correctly see the Contacts, Projects, Documents, and Request Forms links in the sidebar that match their existing access. The Payments menu (plans, payment requests, gateway settings) is now available to contractors too, not just agencies.
โ๏ธ Clearer, more personal notification emails
Every request-related email โ submitted, updated, status changed, fee requested or waived, reviewer assigned or removed, decision made โ now greets you by name and includes the tracking number, date, and a working link, and no longer risks showing the wrong recipient's details. Coordinators who launched a review are now notified of status changes too, and resubmitted corrections get their own distinct notification. Outbound emails now show your agency's real name in the branding instead of generic placeholder text.
๐๏ธ Subscription plans enforce fair usage limits
Tenants are assigned a plan tier based on account type, with AI assistant usage limits enforced (with a clear upgrade message when you hit them). Admin screens hide plan settings that don't apply to your tenant type, and sidebar links to features your plan doesn't include are no longer shown.
โก Bulk reviewer assignment is safer and faster
Assigning reviewers to multiple activities at once now happens as a single all-or-nothing action, so a failure partway through no longer leaves some activities assigned and others not โ and the error message now names the specific activity that failed. Document folder lookups are also faster for tenants with a large number of requests, and coordinators who can launch reviews but don't manage credits can now see the team's review-credit balance.
๐ Downloads have clearer file names
Reports, certificates, and merged document packages now download with descriptive names (including the activity and tracking number) instead of generic names like "package.pdf".
๐ Lists are easier to scan
The Service Requests list now shows the actual project name (with jurisdiction underneath) instead of just an address, and drops a redundant contractor column. Reviewers without full launch access see a count of just their own assigned open requests. The Contacts list now shows a single "Organisation" column instead of separate address/company fields, and the Projects list shows the real jurisdiction name. Projects and Service Requests lists also share a more consistent, polished style.
๐ Operations dashboard is clearer and more accurate
The workflow funnel now shows fewer, clearer stages (Intake, Review, Approved, Closed), the "open requests" count correctly includes incomplete and on-hold requests, the closed-requests metric is labeled "Closed" instead of the confusing "Issued," and daily charts now align to your local timezone instead of drifting a day near midnight.
๐ Consistent password fields and accurate version display
Login and registration password fields now share the same show/hide toggle icon, the registration form no longer flashes a premature "required" error on the verification code field, and the footer shows the actual running app version instead of a hardcoded label.
๐
Spam protection can now be configured properly
The public contact form's spam protection (reCAPTCHA) now uses your real site keys instead of hardcoded test keys, and works correctly across the public site.
๐ฅ๏ธ Full-screen document editing no longer hides dialogs
Opening a toolbar dialog (like Insert Table) after switching to full-screen mode no longer leaves it silently invisible.
๐ต Invoicing bills the right contact, at the right time
Invoices now correctly resolve the designated Project Owner as the billing contact instead of relying on an outdated "primary contact" flag, and a service request must be fully closed before it can be billed โ previously in-progress requests could be invoiced too early. A confusing "A/E only" label under the license number field has also been removed, and an overflowing project/address column on the Service Requests list has been fixed.
๐ณ Payment and credit purchase flows are more reliable
After buying service request credits, you're correctly returned to your settings page with the purchase confirmed. Payment history "download receipt" links now reliably open a working PDF. Intake fee payments are now safely recorded even if something goes wrong immediately after payment completes, and a broken email template for one tenant can no longer stall notifications for every tenant for hours.
โ
Storefront submission confirmation is accurate
If your payment succeeded but your request is still being finalized, the confirmation page now shows "payment received โ finalizing" and updates automatically once your tracking number is ready, instead of implying the submission failed or requiring a manual refresh. Storefront-created timestamps are also now recorded correctly rather than in server-local time.
๐ Access control gaps closed on Control Room pages
Invoices, Invoice Runs, and related Control Room pages now correctly enforce permission checks โ previously some were reachable without the right access, or without being logged in at all. A security gap that could have allowed forged AI-workspace session access has also been closed.
๐ Documents and notifications behave correctly
One failed document during indexing no longer rolls back the rest of the batch โ each document's success or failure is now tracked and reported individually. Document packaging screens now start with the correct file selection state (with an accurate "selected" count) instead of pre-selecting the wrong files. Submitted notifications now show the correct applicant name, and the notification bell dropdown in Control Room no longer fails to open or close properly.
๐จ Display and search fixes
The Active status badge on the Projects list now shows its own correct color instead of matching "Submitted." Date-range searches on service requests now correctly include the full last day of the selected range. Dashboard cards no longer spill outside their borders on narrower screens. The API documentation page works correctly again after a conflicting setting broke part of it.
๐ง Smaller fixes
The Georgia jurisdiction abbreviation now correctly shows "GA" instead of "GE." Creating a contact from the standalone Contacts page no longer requires selecting a Role unless you're adding it within a project.
Browse upcoming events without logging in
The public storefront can now show a list of upcoming events โ sorted by date โ to visitors who haven't signed in. No account is needed to see what's coming up.
Message applicants directly from a service request
Staff reviewing a service request can now click "Message Applicant" to jump straight into a chat with the person who submitted it. This button used to be disabled and marked "Coming Soon" โ it's now fully working.
New Service Catalog and Events Calendar widgets for your public pages
You can now add two new content blocks to any public page: a browsable catalog of your services (grid or carousel view, filterable by category, with a "Start request" button) and an events calendar (weekly, monthly, or list view, filterable by type). Both received a visual refresh shortly after launch for cleaner, more consistent styling.
Self-service Media Library for storefront images
Admins managing the public storefront can now upload images and copy a shareable link to use in blog posts and pages, without needing a developer to place image assets manually. A follow-up update also cleaned up the page's layout and added clearer upload error messages.
Control Room redesign: stickier navigation, side panels, cleaner lists
Across Contacts, Fee Schedules, Request Forms, Permit Projects, Service Definitions, Service Requests, and Invoices, the page header now stays visible while you scroll, a consistent "back" button appears on create and edit screens, several edit forms now open as slide-out panels instead of popups, and list tables show clearer titles alongside an "Updated" date. New filters were added too, including Jurisdiction on Service Requests and Permit Projects.
Faster Service Request and Permit Project lists on the storefront
These lists now load, search, sort, and page without a full page reload, and the page header stays in view while you scroll.
Reworked storefront experience for service requests and permit projects
The Service Request detail page now leads with a simple status tracker and "what's next" guidance instead of a technical status diagram. Status and correction history have moved into a slide-out timeline, and your reports, letters, and certificates are grouped clearly with duplicates no longer showing twice. You'll now see a warning if you try to leave a permit project or application with unsaved changes, and the Permit Project edit page has a working "Back" button. Postal code fields now automatically strip out non-numeric characters as you type.
Document editor gets a full toolbar
The document editor now has a complete, tabbed toolbar (Home, Insert, Layout) instead of a stripped-down single row. Fullscreen mode now properly fills the screen, and dialogs like Rename, Move, Share, and Insert Table/Image no longer disappear while in fullscreen.
See a reviewer's role when assigning them
The reviewer picker now shows each person's role next to their name, making it easier to pick the right person for the job.
Branded, consistent notification emails
Outgoing notification emails now share one consistent layout and style, instead of looking inconsistent from message to message.
Clearer validation when adding or editing contacts
Entering an invalid phone number now shows an inline error message right away instead of a confusing failure. "No" answers on submission checklists are now highlighted so they stand out during review.
Permit projects: safer sharing, clearer status, working invites
You now only ever see your own projects. Inviting a contact to a project by email now actually sends the invite (previously the option didn't do anything). City and state fields now only accept letters. Clicking "Create project" now activates the project right away, while "Save draft" correctly keeps it as a draft โ previously both buttons behaved the same way.
Certificate step limited to certificate-issuing services
The "Issuance" step can no longer be added to a service that isn't set up to produce a certificate, whether you're building the service template or configuring an individual request.
Project document upload limit standardized to 100 MB
Project document uploads are now capped at 100 MB per file (previously up to 200 MB), bringing this upload point in line with the limit used everywhere else in the app.
More reliable request routing during setup
Editing a request's steps before its review formally begins now reliably updates how the request will be routed, fixing a case where an edit at that stage could leave the workflow working from outdated information.
Project address no longer shows blank
The Project Address field on a Service Request's detail page now correctly displays the address from the linked project instead of appearing empty.
Draft applications no longer disappear from "My Requests"
Draft service requests submitted through the storefront now correctly show up in your request list โ a bug had been hiding them.
Certificates: approval no longer closes a request too early
Approving a certificate on a request that still had further steps configured no longer force-closes the whole case โ it now correctly continues on to the remaining steps. The "Download Certificate" link on the public site also now appears only once the request is fully closed.
Fixed a crash when creating certificate-issuing services
Creating or updating a service definition set to produce a certificate no longer fails with an error โ the required certificate step is now added successfully every time.
Account invite and password reset links now work correctly
Invite and password-reset emails for staff accounts previously could contain a broken link. They now correctly point to the right sign-in page.
Fixed the "back to review" link losing track of your file
When stepping through Review โ Report โ Verify and back again, the "back" link now correctly returns to the same document you were working on, instead of jumping to a different, more recently uploaded file.
Reports and certificates no longer appear before a request is finished
Reports, letters, and certificates on the public service request page now only appear once a request reaches a final status (Closed, Rejected, or Correction Required) โ previously they could show up while the request was still under active review.
Fixed a text-configuration issue affecting storefront pages
Resolved an invalid entry in the app's text and label configuration that could have caused some page text to fail to load correctly.
Quick Report โ report issues from inside the app
A new Quick Report button in the application toolbar lets you capture a screenshot and submit a problem report without leaving the app. Feedback lands directly in the team's issue tracker โ no switching to email or a separate tool needed.
Document Editor in the Documents section
You can now open and edit documents directly inside the Documents area. No more downloading a file, editing it externally, and re-uploading โ the entire edit cycle happens in one place.
Packaging Activity โ build your final package without leaving the app
A new Packaging workflow step lets coordinators assemble a finalised submission package from within the platform. Workflow Outputs and Applicant Submittals appear side by side in two independently-scrollable panels. A rich document viewer lets you arrange, review, and finalise pages across a clear three-step flow (Select โ Edit โ Finalize). Conditional reviewer notes are automatically woven into the merged document.
Invoicing: Storefront applicants now included, plus KPI summary and improved filtering
The Invoicing screen now shows a complete picture:
Conditional reviewer notes automatically included in the Final Package
Conditional notes that reviewers add during their review step are now automatically embedded in the final merged document. The right content appears in the output without any manual copy-paste.
Reject handling in reviewer blocking steps
When a reviewer submits a Reject decision at a blocking workflow step, the case now correctly follows the rejection path. Previously, rejections at these steps could stall the workflow or route the case incorrectly.
Reviewers see only their assigned requests in the Service Request list
Staff members without full management access now see only the service requests assigned to them, rather than the full request list. This makes the reviewer queue cleaner and easier to work from.
Service Request list: date filters now clear correctly
Clicking "Clear" on the Submitted Date filter now properly resets the date picker. Previously the picker retained its displayed value even after the filter had been cleared.
Service Request list page enhancements
Additional layout and usability improvements to the Service Request list make it easier to find, sort, and take action on requests.
Packaging work surface redesigned to match Document Review
The Packaging area has been refreshed with a consistent Triarch visual style and the same toolbar conventions as Document Review. The file tray is split into Workflow Outputs (top) and Applicant Submittals (bottom). Navigation uses Save & Next and Next buttons, keeping the primary action in one place across all three steps. Merge failures now surface the actual error message rather than a generic "Merge failed" notice.
Output documents now labeled by their review step
When an applicant downloads output files (review reports, letters, certificates), each file now shows the name of the activity that produced it โ for example, "Plan Review Report" โ so it is clear what each document is without having to open it.
Only completed outputs are shown to applicants
Applicants now only see documents from fully decided review steps. Reports from steps still in progress are no longer exposed before a decision has been reached.
Correction cycles now labeled R1, R2, R3 (Revision)
The correction history drawer and document version badges now use Revision numbering (R1, R2 โฆ) instead of Version (V1, V2 โฆ). The revision badge is also displayed in a more prominent red colour to draw attention to cases currently under revision.
Upload limit raised from 25 MB to 100 MB
Files up to 100 MB can now be uploaded across all upload points: document uploads in forms, supporting documents on the Storefront application, and attachments in the document editor.
Fee Schedule name now shown in the step editor
When editing a workflow step that already has a Fee Schedule linked, the picker now correctly shows the name of the assigned schedule instead of displaying blank. Coordinators can now confirm which fee schedule is attached without reopening the picker.
"Mark All Sections Reviewed" button (renamed from "Clear all reviewed")
The checklist button that marks every section as reviewed has been renamed to "Mark All Sections Reviewed" to describe accurately what it does. The old label "Clear all reviewed" was misleading.
ControlRoom: page help guides and table refresh button
ControlRoom pages now include contextual page help and a one-click table refresh button to reload data without a full page reload. The "Assign to All" activity panel bug has also been fixed, and Submission Guidance documents now automatically use the uploaded file's name as the document title.
Pre-configured roles, forms, checklists, and fee schedules on new environments
New environments now ship with a fuller set of default configuration โ roles, form templates, checklists, and fee schedule definitions โ reducing the time from first login to a working setup.
SLA due dates are now accurate
SLA timers now start when a workflow step is first activated, not when the service request was originally submitted. The timer also pauses while a request is on hold โ for example, while waiting for a fee payment or a correction to be submitted โ and resumes when the hold is lifted, extending the due date by exactly the hold duration. The Operations Dashboard now reflects these corrected timers: untracked steps are excluded from adherence figures, and requests that have resumed from a hold are no longer counted twice.
Storefront applicants can see their submitted requests again
Applicants using the Storefront portal can once again view all their submissions in My Requests. A regression had caused the list to return empty. Additionally, the page shown after completing a payment no longer returns a 404 error.
Service requests no longer close early in multi-step workflows
A service request now only transitions to Closed when there are genuinely no remaining active or pending steps. Previously, if the "final step" marker had become stale โ for example because a coordinator added steps to an already-running request โ the case could close mid-workflow before all work was complete.
Service Request list: Closed requests handled correctly
An issue causing unexpected behaviour on the Service Request list for requests in the Closed status has been resolved.
Invoicing stability fixes
Multiple display and reliability issues in the Invoicing module โ introduced alongside the new Invoicing features in this release โ have been resolved.
Three tracked change requests resolved (CR167, CR98, CR164)
Three change requests logged by the team have been investigated, addressed, and closed.
More reliable production deployments โ We've strengthened the health checks that run every time an update ships to the app. From this release onward, changes are automatically verified to be healthy before traffic switches over, so the risk of disruption during a release is significantly reduced. If something unexpected happens post-deploy, an automatic rollback kicks in to keep the service available.
All services now live on triarch.ai โ Production endpoints across every Triarch service (Auth, API, and the public portal) are now consistently routed through the canonical triarch.ai domain, ensuring a seamless single-origin experience for users and integrations alike.