Drop the tender in
Upload the RFP and EstiWright pins the tender number, page count and source file before anything else happens.
100 demos
Every demo below is a live, looping mock of a real EstiWright screen, built from our own demo tenant — the Marina Tower MEP fit-out, priced at AED 41,037,753. These cover only what ships today. Hover any card to pause it.
Capture the tender
Upload the RFP and EstiWright pins the tender number, page count and source file before anything else happens.
| Ref | Discipline | Text | Page |
|---|---|---|---|
| 3.1 | mechanical | HVAC for all occupied floors per ASHRAE 62.1. | 3 |
| 4.2 | electrical | LV distribution with N+1 redundancy on risers. | 4 |
| 5.4 | elv | Structured cabling Cat6A to every workstation. | 5 |
One pass over the tender produces a structured register — reference, discipline, mandatory flag and source page.
Every requirement carries an explicit mandatory flag, so nothing binding is left to memory.
Requirements are tagged ICT, CCTV, Voice, SCS, ACS, AV, IPTV, GRMS or UPS so each package owner sees only theirs.
gate_open: true
A coverage gauge counts untriaged mandatory requirements and holds the gate closed until it reaches zero.
| Ref | Text | Source | Page |
|---|---|---|---|
| 3.1 | HVAC for all occupied floors… | marina-tower-rfp.pdf | 3 |
| 4.2 | LV distribution with N+1… | marina-tower-rfp.pdf | 4 |
| 5.4 | Structured cabling Cat6A… | marina-tower-rfp.pdf | 5 |
Each requirement keeps its source filename and page number, so a reviewer can jump straight back to the clause.
When a revision lands, the delta shows exactly what was added, removed, modified or left unchanged.
Any requirement or response can be translated — Arabic by default — without leaving the register.
RFP, RFI, costing, compliance, proposal, template and drawing all hang off the same project record.
A 200-requirement tender extracts as a background job. Poll it, close the tab, come back — the work carries on.
| Project | Client | Region | Status |
|---|---|---|---|
| Marina Tower — MEP Fit-out | Emaar | Dubai | active |
| Najm Tower — Security | — | Dubai | won |
| Metro Upgrade | — | Dubai | lost |
Every bid carries a status, so the pipeline reflects reality instead of a spreadsheet nobody updated.
Uploads are stored intact and downloadable. The extracted register never replaces the source document.
Clarify & comply
Clarify ambiguities first, then commit positions.
The rail deliberately puts RFI ahead of Compliance — clarify the ambiguity first, then commit a position you can defend.
| Category | Ref | Question |
|---|---|---|
| Mechanical | 3.1 | Confirm ASHRAE 62.1 revision year applicable to occupied floors. |
| Electrical | 4.2 | Is N+1 required on all risers or only life-safety risers? |
| ELV | 5.4 | Confirm Cat6A required at every workstation or hot-desk ratio. |
Flag an ambiguous requirement and it becomes a numbered clarification question against the right category.
| Clause | Requirement | Status | Source |
|---|---|---|---|
| 3.1 | HVAC per ASHRAE 62.1 | Comply | marina-tower-rfp.pdf |
| 4.2 | LV N+1 on risers | Partial | marina-tower-rfp.pdf |
| 5.4 | Cat6A to workstation | Comply | marina-tower-rfp.pdf |
The AI drafts a clause-by-clause position; an engineer approves each one before it ever reaches the client.
Comply, Partial, Included, Excluded or Not applicable — a fixed vocabulary the whole bid team reads the same way.
A clause that carries commercial risk is flagged to contract with a disposition and a severity, not buried in a comment.
A single percentage tells the bid manager how much of the tender is answered and defensible.
Set the compliance status and whether an RFI is raised in a single action, with a note for the reviewer.
| Ref | Solution | Proposed systems |
|---|---|---|
| 4.2 | Dual-feed LV panels with automatic changeover | ELV-PWR, UPS |
| 5.4 | Cat6A F/UTP horizontal to every outlet | SCS |
| 3.1 | AHU with demand-controlled ventilation | HVAC |
Each requirement carries the proposed solution and the systems behind it, so the technical response writes itself.
RFI drafting runs as its own background job across the whole register, not one clause at a time.
| Ref | Disposition | Severity |
|---|---|---|
| 7.3 · Liquidated damages | escalate | high |
| 4.2 · N+1 redundancy | review | medium |
| 9.1 · Retention 10% | accept | low |
A clause flagged to contract carries a severity as well as a disposition, so legal triages by risk not order of arrival.
When an RFI response settles the ambiguity, the contract flag comes off and the register reflects the resolution.
Take off & price
| Element | Scope | Qty | Unit | Location |
|---|---|---|---|---|
| IP dome camera | CCTV | 180 | EA | L1–L42 |
| Cat6A outlet | SCS | 1,240 | EA | Typical floor |
| Access door controller | ACS | 96 | EA | Core lobbies |
Quantities land against element, scope, unit and location — the spine every price hangs from.
| Element | Sys | Qty | List price | Disc % | Margin % |
|---|---|---|---|---|---|
| IP dome camera | CCTV | 180 | 220.00 | 18 | 22 |
| Cat6A outlet | SCS | 1,240 | 38.00 | 12 | 24 |
| Door controller | ACS | 96 | 910.00 | 15 | 20 |
List price, discount, freight and margin per line — every column that moves the number is visible and editable.
The two diverge fast, and the gap is where bids are quietly lost. Watch a 25% markup land as a 20% margin.
Every line rolls into one submitted figure — on the real Marina Tower workbook, $11,174,337.
Download the import template, fill it from your own estimating sheet, and pull the whole BOQ in at once.
| Element | Sys | Qty | List price |
|---|---|---|---|
| Fibre patch panel 24F | SCS | 18 | 640.00 |
| PoE injector 90W | CCTV | 40 | 310.00 |
Manual material lines sit alongside imported ones, so a late scope addition never lives in someone's inbox.
DRAFT must not price
Band rates carry a DRAFT to APPROVED gate. A draft rate cannot be used to price a live bid — the system refuses.
Lump sum, time & material, cost plus, AMC or managed services — the commercial roll-up follows the nature you pick.
AED, SAR, EURO, GBP and USD per line — because a Gulf tender rarely prices in one currency.
The price does not leave the building without a recorded, attributable engineer sign-off.
Download the band-rate template, fill it from your HR or commercial sheet, and upload — no re-keying.
A per-project labour estimate sits beside the materials, and flags the bands you haven't rated yet.
The commercial summary re-cuts itself for the nature you're bidding — lump sum reads differently to managed services.
Add, edit or delete a BOQ line and the totals re-cost immediately — the model never does the arithmetic.
The full commercial workbook exports to Excel, so review happens in the tool your commercial team already uses.
Deliverables & approvals
Five artifacts, each gated on the last: NDA, technical proposal, commercial BOQ, techno-commercial, draft contract.
A gated rung never just greys out — it states the blocking condition in plain words.
Skipping a rung is not a UI trick to work around — the API refuses with a 409 and names what is missing.
The confidentiality agreement needed to exchange the tender, generated as the first rung of the ladder.
Scope understanding plus a requirement-by-requirement response, built from the register you already triaged.
Technical and commercial merge into a single techno-commercial document, per audience.
Layered terms and qualifications, carrying through every clause you flagged to contract during triage.
Reviews, sign-offs and engineer approvals export as one register — the answer to every audit question.
Pending sign-offs surface on the dashboard, so an approval never stalls a bid without anyone noticing.
Each approval is created, listed and revocable — a real object with an owner and a timestamp behind every gate.
Proposal generation is a background job with a status you can poll — a long document never locks the UI.
The techno-commercial renders to PDF where LibreOffice is available and falls back to DOCX — it degrades, it never fails.
Dashboard & portfolio
Pipeline value, win rate, priced count and median cycle time across every active bid.
Every bid carries a readiness verdict, so the go/no-go conversation starts from evidence.
Upload RFP, Extract, RFI · Compliance · Contract, QTO take-off, Priced BOQ, Commercial ✓, Approve, Export.
Median cycle time per bid, measured not estimated — the number that tells you whether the process is improving.
| Project | Bid value | Margin | Compliance | Readiness |
|---|---|---|---|---|
| Marina Tower — MEP Fit-out | $11,174,337 | 22% | 92% | Ready |
| Najm Tower — Security | $2,289,993 | 17% | 78% | Conditional |
| Metro Upgrade | $6,235,534 | 11% | 54% | Not ready |
Overall margin per project sits next to compliance and readiness, so a thin bid cannot hide behind a good score.
A super-admin switches department and the whole dashboard re-scopes; an engineer simply sees their own.
Credit thresholds, budget alerts and support replies land in one bell, with an unread count that caps at 99+.
One palette across sections, settings and projects — for people who bid all day and never touch a mouse.
A deterministic advisor — not a chatbot guess — tells you what to do next and what is blocking it.
The advisor engine is deterministic, so next steps and blockers still work with the network unplugged.
Mark everything read at once, and the badge — which caps at 99+ — empties to a plain "You're all caught up."
Raise a support request in-product and track it — the reply lands back in the same notification bell.
An onboarding state tells a new tenant exactly which pieces — rates, brand, users, a first project — aren't configured yet.
Credits running low, or spend past the plan — the banner says which, and it is dismissible rather than modal.
Critical risks and warnings appear on the project itself, with a direct route into the commercial view.
AI routing & spend
On the on-prem edition, one switch moves every AI call in-network — no prompt, document or drawing leaves your own infrastructure.
| Task | Model |
|---|---|
| extract_requirements | local · cheap-fast |
| draft_compliance | cloud · premium-reasoning |
| draft_rfi | local · cheap-fast |
| translate | local · cheap-fast |
Send extraction to a local model and only the hardest reasoning to the cloud — per task, not all-or-nothing.
Provider keys are read from your environment or secret store and never written to the application database.
Credits consumed against the included pool, per day, with the cycle end in plain sight.
402 · ai_budget_exceeded
A soft budget warns. A hard budget refuses the call and returns a 402 — spend fails loud instead of arriving by invoice.
Actual cloud cost broken down by department, model and action — so AI cost lands on the budget that caused it.
The whole usage and cost breakdown exports to Excel, so AI spend reconciles like every other line item.
Retrieval quality is a setting, not a black box — and it can stay local along with everything else.
Point EstiWright at the local model your security team approved. On-prem mode uses it for every task.
| Key | Default | Yours |
|---|---|---|
| temperature | 0.2 | 0.1 |
| max_tokens | 4096 | 4096 |
| top_p | 1.0 | 1.0 |
Generation parameters are explicit and per-tenant, with sane defaults — extraction should not be creative.
The advisory layer explains its reasoning where it helps — and it is a setting, so it can simply be turned off.
Access & billing
| User | Role | |
|---|---|---|
| Dana Boss | boss@demo.example | admin |
| Sam Estimator | sam@demo.example | member |
| Ravi QS | ravi@demo.example | member |
| Mona Approver | mona@demo.example | approver |
Viewer, engineer, local admin and super admin — with guardrails that stop a tenant locking itself out.
Paid seats versus seats used, so nobody discovers the cap halfway through a submission week.
Set a monthly ceiling in credits. Past it, the platform stops rather than quietly billing you.
| Plan | Per seat | Credits | Overage |
|---|---|---|---|
| Starter | $29 | 5,000 | hard cap |
| Pro | $99 | 20,000 | $0.0030 / credit |
| Agency | $179 | 45,000 | $0.0025 / credit |
Starter, Pro and Agency — each with its own credit pool, overage rate and white-label depth.
Plan, seats, credit pool, consumption and period end in one summary — no invoice archaeology.
Move plan or add seats through checkout; the subscription is stamped with your tenant so entitlement follows automatically.
Support SLA is configured per tenant, so the target is explicit rather than folded into a contract nobody re-reads.
Each tenant gets a referral code, tracked against sign-ups — growth that doesn't need a spreadsheet.
Isolation & audit
Row-Level Security is FORCED on every tenant table — the rule binds even the table owner, not just application code.
EstiWright connects as a non-owner role with no BYPASSRLS. Even a bug in application code cannot return another tenant's rows.
The active tenant is set inside the transaction, so a pooled connection can never leak one tenant's scope into another's request.
Mint a service key and you see the plaintext exactly once — only a SHA-256 hash is stored. Revocation is immediate.
Projects, requirements, approvals and the audit trail export as one file. No lock-in, and no support ticket to get your data.
Jobs, limits & failure
| Kind | Status |
|---|---|
| extract | done |
| draft-compliance | running |
| draft-rfi | queued |
| proposal | queued |
Extraction, compliance, RFI and proposal generation are queued jobs with their own worker — not a request that times out.
Hard cap, inactive subscription, overage ceiling or an AI budget — each refuses with a named code, never a silent bill.
Past your paid seats the platform refuses rather than quietly adding another line to next month's invoice.
| Tenant | Over | Cost |
|---|---|---|
| Demo Contracting | 1,240 cr | $3.72 |
| Acme Estimating | 0 cr | $0.00 |
| Bravo Estimating | 22 cr | $0.07 |
The overage report shows exactly which tenants went past their pool and what it cost — reconciled, not estimated.
Platform & partners
| Tenant | Plan | Seats | Status |
|---|---|---|---|
| Demo Contracting | agency | 5 | active |
| Acme Estimating | pro | 12 | active |
| Bravo Estimating | starter | 3 | active |
Create, list and inspect licences across the whole platform — plan, seats, status and billing in one place.
Every module can be switched per tenant, so a customer sees the surface they bought and nothing they didn't.
| Group | Starter | Pro | Agency |
|---|---|---|---|
| Bid | ✓ | ✓ | ✓ |
| Insight | — | ✓ | ✓ |
| Governance | — | — | ✓ |
Modules are gated by plan — Starter, Pro or Agency — while Overview, Settings and Inbox are never gateable.
| Tier | Depth |
|---|---|
| Starter | none |
| Pro | lite |
| Agency | full |
Name, logo, primary colour and even the companion's name are per-tenant. Agency tier goes fully white-label.
What each tenant pays against what their AI actually costs — margin per account, not a guess at the end of the quarter.
Tenants, active seats, credits burned and open support — the numbers you actually run the business on.
| Child tenant | Plan | Brand |
|---|---|---|
| Gulf ELV Partners | pro | custom |
| Najm Contracting | starter | inherited |
A reseller creates and brands child licences under their own account, without ever seeing another partner's tenants.
Send us a live RFP and we'll walk your team through extraction, compliance and a priced BOQ on your own data.