Hunt for open tenders
Paste a TenderBoard listing here. Every row is parsed and triaged against your tendering capacity, the closing date, and whether it is guarding work at all. Triage is not an eligibility verdict: a listing line does not carry the tender's stated requirements, so it can only tell you what is worth opening. Use the Eligibility gate once you have the document.
Pipeline
Everything hunted, soonest closing first. Verdicts are triage only.
Eligibility gate
Paste the tender's stated requirements. This screens them against what
COMPANY_STATE actually evidences, and it runs before any costing.
Two of the seven documented losses were never pricing losses.
What you are being screened against
Read live from the ledger, never hardcoded. If a fact is missing it is treated as not held.
Cost the tender
The same engine as v33, extracted and verified against it to the cent across seven scenarios. Check the roster before you trust a price: a headcount that breaches the PRD hours ceiling is not a saving, it is licence exposure.
Security manpower
Contract and statutory
Equipment, annual cost
These start empty deliberately. An unset line exports at $0, which is how mandatory body cams were priced at nothing on Grange Heights. Enter the real figure or tick N/A.
Roster legality
An ordinary month is 44 hours a week, so 190.67 hours. PRD allows a maximum 72 extra hours, giving a hard ceiling of 262.67 hours per officer per month. A 12-hour, 26-day roster is 312 hours and cannot lawfully be delivered. Run this before pricing.
Liquidated damages and the termination trigger
The termination clause is reported separately from margin erosion on purpose. When it fires first, no pricing decision defends the contract and roster discipline is the binding risk.
Client and internal documents
Every figure comes from the costing engine, so an exported document cannot disagree with what is on screen. Layouts are the same as v33, so these look like the documents already sent. The logo is embedded, which fixes the broken image v33 still produces.
Download
The tender assessment and the intro letter are never blocked. The assessment is the bid or no-bid pack, and that decision usually has to be taken before equipment is costed, so instead of refusing it records what was missing on its own last page. The quotation and the internal costing are gated: an unset equipment line would export at $0, and that is how mandatory body cams were priced at nothing on Grange Heights.
Pre-submission Claim Check
Paste the bid's compliance and capability wording. Every rule here traces to a real defect found in a real Stalwart submission. Run it before the document goes out, not after.
What Stalwart can actually evidence
Read from the ledger. Anything not on this list is written as provisional, never as held.
The ledger
Every figure the system is allowed to use, with where it came from, when it was last verified and who confirmed it. Anything past its review date is marked unverified rather than quietly presented as current.
Derived facts
Conclusions, stored with the rule and the inputs that produced them. A conclusion whose inputs have moved marks itself stale instead of staying quietly wrong. This table exists because “Stalwart qualifies for a 3-year GSR registration” survived for months as a bare conclusion.
Who has access
Everyone here signs in with their own email and the shared passphrase. That reliably keeps out anyone not on this list, and every change to the ledger is recorded against a name. It does not prove which of you signed in, because the passphrase is shared. If someone leaves, remove them here and change the passphrase, because they still know it.
Add someone
Access log
Sign-ins, refusals, and every change to this list. Refusals matter: repeated ones from an address you do not recognise are worth knowing about.
Regulatory watch
Five official sources, checked daily at 06:00 Singapore time. The watcher never writes a figure. It raises what moved and links the source; you confirm before anything reaches costing.
Changes awaiting your decision
Confirm means the source really moved and the ledger needs updating. Dismiss means it was noise.