SolidACE Project Control
Proposed System Prototype

Every peso traces back to the approved BOQ.

Requests, purchase orders, deliveries, payments and reports all carry the same BOQ reference, so the cost you see on the dashboard is the cost that happened on site.

No credentials needed. You choose a demo role after entering.
Proposed interface. Final fields, permissions, and workflows will be confirmed during discovery.
Three projects loaded
{{ projectName }}
{{ projectLoc }} · Contract {{ projectContract }}
{{ r.name }}
{{ r.does }}
Seven roles, fixed in version one. An eighth user type is a priced change request.
Waiting on you
{{ userName }}, {{ role }}
Nothing is waiting on you
Approvals, budget requests and queries appear here for the role that has to act on them.
{{ userInitials }}
{{ userName }}
{{ role }}
{{ projectName }} {{ section }}

{{ section }}

Step {{ demoNo }} of {{ demoTotal }}
{{ demoChapter }}
{{ demoTitle }}
{{ demoCue }}
Do this. {{ demoAct }}
Why it matters. {{ demoWhy }}
{{ readOnlyNote }}
{{ section }} is not available to {{ role }}
The server refused this screen for your role and recorded the attempt. Hiding a button is not security, so the record itself is refused even by direct link.
What {{ role }} sees first
Every role lands on its own screen
Planned versus actual progress
Cumulative S curve, weighted by BOQ value
Planned Actual
100 50 0 {{ l.m }}
Planned
{{ plannedPct }}
Actual
{{ actualPct }}
Slippage
{{ slipPct }}
Delayed activities
{{ delayedCount }}
Budget against commitment
Committed, received and paid never share one number
{{ p.name }} {{ p.committed }} / {{ p.budget }}
Committed Received Uncommitted
Needs management attention
Each row opens the record it refers to
Recent activity
Same events that appear in Audit History
{{ r.when }}
{{ r.action }}
{{ r.who }} · {{ r.no }}
Baseline approved 02 Jul 2026 · locked
Item
UoM
Budget qty
Reserved
Delivered
Available
Budget
Committed
Received
Paid
{{ r.budget }}
{{ r.committed }}
{{ r.received }}
{{ r.paid }}
{{ r.name }}
{{ r.code }} {{ r.tag }}
{{ r.uom }}
{{ r.qty }}
{{ r.reserved }}
{{ r.delivered }}
{{ r.available }}
{{ r.budget }}
{{ r.committed }}
{{ r.received }}
{{ r.paid }}
No BOQ items match this filter
Clear the search or choose a different phase.
Baseline plus approved variations
{{ varItem.name }} · {{ varItem.code }}
{{ varItem.equation }}
{{ p.label }}
{{ p.value }}
{{ p.note }}
{{ varItem.held }} held by approved requests {{ varItem.avail }} still available to request
Cancel an approved request and the held quantity returns to available. The approved baseline is never overwritten — the variation is a separate approved record, and the sum works the same way on every screen and every report.
Revision and variation history
An approved baseline is never silently overwritten. Changes are new revisions with an approver.
{{ v.rev }}
{{ v.what }}
{{ v.when }} · {{ v.who }}
{{ v.status }}
Cement demonstration item
The line every step of the walkthrough traces back to
{{ c.label }}
{{ c.value }}
Projects
{{ projectName }}
{{ projectLoc }}
{{ f.label }}
{{ f.value }}
Project team
{{ t.ini }}
{{ t.name }}
{{ t.role }}
Number
Item and BOQ reference
Requested
Approved
Status
No material requests yet
Site requests raised against this project’s BOQ will appear here.
{{ reqDetail.no }}
Raised {{ reqDetail.date }} by {{ reqDetail.requester }}
{{ reqDetail.status }}
{{ f.label }}
{{ f.value }}
Site notes. {{ reqDetail.notes }}
{{ reqDetail.attach }} Attached on site
{{ reqDetail.hint }}
Select a request
Pick a row on the left to see its BOQ reference, site notes and approval history.
Approved requests ready for sourcing
Quantity here is the approved quantity, not what the site asked for
{{ a.item }}
{{ a.no }} · {{ a.code }} · required {{ a.required }}
{{ a.qty }}
approved
{{ a.budgetValue }}
at BOQ rate
No approved requests waiting
Approve a material request first and it will appear here with its BOQ reference.
{{ f.no }}
{{ f.sub }}
{{ f.status }}
Supplier
Unit price
Order value
Delivery
Terms and stock
{{ q.supplier }}
{{ q.flag }}
{{ q.price }}
{{ q.total }}
{{ q.delivery }}
{{ q.terms }}
{{ q.avail }}
Selected: {{ f.selected }}
{{ f.reason }}
No RFQs yet
Create one from an approved request on the previous tab.
PO
Item and references
Supplier
Qty
Committed
Received
Status
{{ p.date }}
{{ p.item }}
{{ p.refs }}
{{ p.supplier }}
{{ p.terms }}
{{ p.qty }}
{{ p.committed }}
{{ p.received }}
{{ p.status }}
Purchase orders awaiting delivery
A delivery can never exceed the outstanding purchase order quantity
{{ p.item }}
{{ p.refs }} · {{ p.supplier }}
{{ p.delivered }} of {{ p.qty }} {{ p.outstanding }} outstanding
{{ p.received }}
of {{ p.committed }} committed
{{ p.status }}
No purchase orders issued yet
Orders appear here once procurement issues them against an approved request.
Delivery receipts recorded
A receipt signed on the phone carries that signature, the signer and the time here, unaltered
{{ h.dr }}
{{ h.po }}
{{ h.notes }}
{{ h.qty }}
{{ h.sigBy }}
{{ h.sigAt }}
{{ h.sigNone }}
{{ h.kind }}
No delivery receipts recorded
Receiving records each delivery against its purchase order.
Payable against received quantity
Accounting pays what was received, never what was ordered
{{ p.item }}
{{ p.refs }}
{{ p.committed }}
committed
{{ p.received }}
received
{{ p.paid }}
paid
{{ p.payable }}
payable
Nothing payable yet
A payable line appears once a delivery has been received against a purchase order.
Payment history
{{ h.date }}
{{ h.po }}
{{ h.method }} · {{ h.ref }}
{{ h.amount }}
{{ h.kind }}
No payments recorded
Accounting records payments against received quantities only.
A payment is voided, never deleted. Voiding reverses the total and leaves the original record visible.
Direct expenses outside a purchase order
Posted once only, with category, document, date and reference. A delivery already received cannot be double-counted here.
Posted / paid
{{ expTotal }} / {{ expPaid }}
Document
Category
What it was for
Amount
Date and reference
Status
Action
{{ x.doc }}
{{ x.category }}
{{ x.phase }}
{{ x.desc }}
{{ x.amount }}
{{ x.date }}
{{ x.ref }}
{{ x.status }}
No direct expenses posted
Use Post direct expense for a project cost that never passed through a purchase order.
{{ sub.name }}
{{ sub.scope }} package · linked to {{ sub.phase }}
{{ t.label }}
{{ t.value }}
Progress {{ sub.progress }} Target {{ sub.target }}
{{ m.no }} {{ m.status }}
{{ m.label }}
{{ m.amount }}
{{ m.ref }}
No subcontract packages yet
Award a work package and its milestones will be tracked against the linked BOQ scope.
Programme, planned against actual
Apr to Dec 2026 · grey bar planned, amber bar actual
Today 22 Aug 2026
Activity
{{ m }}
{{ g.name }}
{{ g.owner }} · {{ g.pct }} · {{ g.status }}
behind
{{ c.name }}
{{ c.count }}
{{ t.name }}
{{ t.owner }} · due {{ t.due }}
{{ t.priority }}
Nothing here
Cost variance by phase
Click any phase to drill down to the BOQ item and the source documents
Phase
Budget
Committed
Received
Variance
Project total
{{ totBudget }}
{{ totCommitted }}
{{ totReceived }}
{{ totVariance }}
Standard reports
{{ r.name }}
Cement line reconciliation
{{ c.label }} {{ c.value }}
Date and time
User and role
Action
Record
Change
Reason
{{ a.ts }}
{{ a.user }}
{{ a.role }}
{{ a.action }}
{{ a.no }}
{{ a.type }}
{{ a.from }} to {{ a.to }}
{{ a.reason }}
User
Role
Assigned projects
Status
Last access
Invitation
{{ u.ini }}
{{ u.name }}
{{ u.status }}
{{ u.last }}
{{ u.invite }}
Role and project assignment changes here are simulated for the demonstration. Real authentication and permissions are configured during implementation.
Presenter script, one transaction end to end
Forty-four steps in eight chapters. Fifteen bags of cement, from the site request to the audit trail and the signed delivery. Click any step to jump the prototype there.
{{ c.name }} {{ c.count }}
What is simulated in this prototype
{{ s }}
Rules the system enforces
{{ r }}
If this goes ahead
What happens next
Ten weeks from the discovery session to handover. No pricing or commercial terms on this screen.
{{ x.n }} {{ x.what }} {{ x.when }} {{ x.detail }}
What we need to start
Twenty-two items in four groups. Each one names its owner, its format and why it is needed. Marking an item ready is written to the audit trail with your name and the time.
Ready
{{ startDone }} of {{ startTotal }}
{{ g.letter }} {{ g.group }} {{ g.count }} items
{{ i.n }}
{{ i.item }}
{{ i.owner }} · {{ i.format }}
{{ i.why }}
{{ c.label }}
{{ c.value }}
Conversations on this project
{{ threadScopeNote }}
No conversations on this project
One is created the moment a request exceeds the BOQ, or when anybody raises a query from a record.
{{ thr.no }} · {{ thr.kind }}
{{ thr.subject }}
{{ f.label }}
{{ f.value }}
{{ thr.why }}
The conversation
{{ m.ini }} {{ m.who }} {{ m.role }} {{ m.when }} {{ m.text }} {{ m.decision }}
{{ thr.waitingNote }}
{{ thr.outcome }}
Where a conversation comes from
Each one starts on a record, not in an inbox
{{ e.kind }} {{ e.route }}
{{ e.when }}
The rules
{{ r }}
Who can do what
Seven roles, fixed in version one. The column for your current role is highlighted.
Action
{{ c.label }}
{{ r.name }}
{{ c.v }}
Hiding a button is not security. Every one of these rules is checked on the server, and the denial of each is tested, including a user who edits the address bar to reach another project's record.
What each role sees first
Switching role here signs you in on that role's own first screen
Seven roles cover the process in the agreed decks. An eighth user type is priced separately rather than quietly absorbed. Project context stays visible in the header at all times, and no operational record can be created without it.
08:42
{{ phTitle }}
{{ phSub }}
{{ t.label }}
{{ t.value }}
{{ phLockedNote }}
{{ t.label }}
{{ t.value }}
{{ phLockedNote }}
Nothing to receive
A delivery can only be recorded against an open purchase order.
Recorded so far
{{ phTaskPct }}
{{ phLockedNote }}
{{ r.label }} {{ r.value }}
{{ sigHint }}
{{ phLockedNote }}
{{ sigNote }}
{{ k.label }}
{{ k.kind }} · {{ k.when }}
{{ k.state }}
Nothing waiting on this phone
Everything written here has been sent.
{{ phLockedNote }}
{{ b.name }}
{{ b.code }} {{ b.available }}
{{ ph.doneTitle }}
{{ ph.doneBody }}
Local drafts on this device
Written on the phone beside this, sent once when signal returns
{{ k.label }}
{{ k.kind }} · {{ k.when }}
{{ k.state }}
No local drafts on this project
Drafts appear here when the field team writes a record without signal.
{{ x.label }}
Works offline
{{ o }}
Online only
{{ o }}
What the phone app will not do
{{ l }}
Proposed interface. Final fields, permissions, and workflows will be confirmed during discovery.
{{ modalTitle }}
{{ modalSub }}
{{ s.label }}
{{ s.value }}
{{ s.label }}
{{ s.value }}
After this approval. {{ approvePreview }}
{{ s.label }}
{{ s.value }}
{{ s.label }}
{{ s.value }}
Construction and Design Build
Dumaguete City, Negros Oriental, Philippines
Purchase order
{{ poDoc.no }}
{{ m.label }}
{{ m.value }}
Description
UoM
Qty
Unit price
Amount
{{ poDoc.item }}
BOQ {{ poDoc.code }} · {{ poDoc.mrf }}
{{ poDoc.uom }}
{{ poDoc.qty }}
{{ poDoc.price }}
{{ poDoc.total }}
Total {{ poDoc.total }}
Prepared by
{{ poDoc.prepared }}, Procurement Officer
Approved by
{{ poDoc.approved }}, Project Manager
{{ s.label }}
Map the workbook columns to system fields. The mapping is remembered for the next import.
{{ m.col }}
{{ m.field }}
{{ v.label }}
{{ v.value }}
{{ i.tag }} {{ i.text }} {{ i.row }}
19 rows ready to import as BOQ Rev 3
The approved Rev 1 baseline stays untouched. Rev 3 is created as a pending revision and needs owner approval before any request or purchase order can use it. One row was skipped and two warnings were accepted.
This action is blocked by a budget rule
{{ form.blocked }}. As administrator or management you may override, and the reason is written to the audit trail with your name.
What happens when you create it
{{ n }}
This will be numbered {{ form.doc }} in sequence. A reference already used by a delivery, an order or another payment is refused, so a direct expense cannot double-count a delivery already received against an order.
{{ e.label }}
{{ e.value }}
The definition of every metric on this file
{{ m.label }}
{{ m.def }}
The filters, the as-of time and these definitions are printed on the exported file, so two people reading the same file cannot disagree about what it means.
{{ t.label }}
{{ t.value }}
BOQ items in {{ drillPhase }}
Item
Budget
Committed
Received
Paid
{{ i.name }}
{{ i.code }} · {{ i.qty }}
{{ i.budget }}
{{ i.committed }}
{{ i.received }}
{{ i.paid }}
The records that produced these totals
{{ dd.no }}
{{ dd.type }}
{{ dd.what }}
{{ dd.amount }}
{{ dd.status }}
Every figure above can be traced back to the person and the document that created it, and the audit trail keeps the actor, the time, the reason, and the values before and after.
The BOQ does not have this quantity
You are short {{ escShort }} on this item. You cannot override it yourself, and you should not have to ring somebody to get it done. Send it to management here and it stays on the record.
Management gets this in their notifications. If they approve, the extra quantity becomes a numbered variation on the BOQ and your request is raised for you. If they decline, the reason comes back here. Nothing is ordered either way.
This goes to {{ threadNeeds }}, and only that role can close it. {{ threadKindWhy }}
Everything recorded during this session, including requests, purchase orders, deliveries, payments and audit entries, is removed and the original seeded project is restored. This cannot be undone.
{{ toast }}