Who works at Palmquay
Palmquay Properties, a fictional property management company based in Sarasota, Florida. Manages 14 commercial and apartment buildings in Sarasota and Manatee counties. These five people do the work in this demo; each one keeps working in their own tools, and this board shows what is waiting on whom. Each person keeps the same color everywhere on the page.
Waiting on people
Every decision the AI stopped for, oldest first. The AI suggests; the named person decides. Rules for what counts: dashboard/README.md. Onboarding runs as of the demo date 2026-11-05; the furnishing project's scripted events run to 2026-11-12.
| Since | Who decides | Decision | Options | AI suggests | Record |
|---|---|---|---|---|---|
| 2026-11-03 | Priya Natarajan, Legal | Review Kestrelbay Air & Heat LLC's conflict-of-interest disclosure: Ray Reyes, Brother of Dana Reyes, Facilities Manager, Owns 10% of the firm. | Clear it with the recusal · Require changes · End the onboarding | Clear it only with the recusal in place. | vendors/kestrelbay-air-heat/screen.json |
| 2026-11-05 | Lena Ortiz, Property Manager | What is bedroom wall B? It was left blank. The approved order has a queen bed, which needs 108 in on the shortest wall; wall A is 120 in. | Measure and reply | Measure before the bed frame arrives (now due 2026-11-25). | projects/unit-4b/out/brief.md |
| 2026-11-05 | Priya Natarajan, Legal | Gulfpine Pest Control Inc.'s paperwork names Gulfpine Pest Solutions LLC, excluded until 2029-03-15. Its follow-up draft is on hold. | End the onboarding · Ask the vendor to explain | Don't send the follow-up as written; decide first whether to end the onboarding. | vendors/gulfpine-pest/screen.json |
| 2026-11-05 | Dana Reyes, Facilities Manager | Send the follow-up to Bayvane Plumbing Inc.? It asks them to fix: license about to expire: on hold until renewed. Reply due 2026-11-12. | Send as written · Edit, then send · Hold | Send as written: the checker's review of the drafts found no findings on real files. | vendors/bayvane-plumbing/drafts/2026-11-05-follow-up.md |
| 2026-11-05 | Dana Reyes, Facilities Manager | Send the follow-up to Brightcurrent Electric Inc.? It asks them to fix: liability coverage below the company minimum. Reply due 2026-11-12. | Send as written · Edit, then send · Hold | Send as written: the checker's review of the drafts found no findings on real files. | vendors/brightcurrent-electric/drafts/2026-11-05-follow-up.md |
| 2026-11-05 | Dana Reyes, Facilities Manager | Send the follow-up to Clearsail Janitorial Services LLC? It asks them to fix: palmquay not named on the insurance. Reply due 2026-11-12. | Send as written · Edit, then send · Hold | Send as written: the checker's review of the drafts found no findings on real files. | vendors/clearsail-janitorial/drafts/2026-11-05-follow-up.md |
| 2026-11-05 | Dana Reyes, Facilities Manager | Send the follow-up to Fernhollow Grounds LLC? It asks them to fix: tax form missing. Reply due 2026-11-12. | Send as written · Edit, then send · Hold | Send as written: the checker's review of the drafts found no findings on real files. | vendors/fernhollow-grounds/drafts/2026-11-05-follow-up.md |
| 2026-11-05 | Dana Reyes, Facilities Manager | Send the follow-up to Saltmarsh Roofing Co.? It asks them to fix: insurance certificate has expired. Reply due 2026-11-12. | Send as written · Edit, then send · Hold | Send as written: the checker's review of the drafts found no findings on real files. | vendors/saltmarsh-roofing/drafts/2026-11-05-follow-up.md |
| 2026-11-05 | Marcus Hale, Procurement Lead | Sign the approval packet for Kestrelbay Air & Heat LLC ($8,500, 1 sign-off in order, you first)? Dana Reyes, Facilities Manager is recused: a disclosed relative owns part of the firm. Sign after Legal clears the disclosure. | Approve · Reject · Ask a question | Approve after Legal clears the disclosure. | vendors/kestrelbay-air-heat/packet.md |
| 2026-11-06 | Dana Reyes, Facilities Manager | Sign the certification on the approval request for order PQ-1042 (standard purchase, $4,898, budget line FAC-TURN-2026)? | Sign after the justifications · Hold | Sign once both justifications are written. | projects/unit-4b/controls/approval-request.md |
| 2026-11-06 | Dana Reyes, Facilities Manager | Write the single-source justification for GW-BED-Q (bed frame, queen, $690): only Gulfweave Furnishings offers one that meets the plan. | Write it · Find a second source | Write it: the catalogs show no second in-spec source. | projects/unit-4b/controls/approval-request.md |
| 2026-11-06 | Dana Reyes, Facilities Manager | Write the single-source justification for MH-DR-60 (dresser, $640): only Mangrove Home Supply offers one that meets the plan. | Write it · Find a second source | Write it: the catalogs show no second in-spec source. | projects/unit-4b/controls/approval-request.md |
| 2026-11-07 | Dana Reyes, Facilities Manager | Approve change request CR-001? The approved sofa is backordered to 2026-12-01. The substitute arrives 2026-11-09 for +$410, a total of $5,308. | Approve the substitute · Reject and wait · Ask for another option | Approve: waiting misses the install date by 11 days; the cost is $108 over budget. | projects/unit-4b/out/change-request-CR-001.md |
| 2026-11-10 | Dana Reyes, Facilities Manager | Sign version 2 of the approval packet for Skyquay Lift & Fire Inc. ($120,000, 4 sign-offs in order, you first again)? Priya Natarajan, Legal asked for a change after 2 people signed version 1: Add a one-year warranty on parts and labor to the contract terms before I sign. | Void the old version, send the new one, and sign it first · Ask Legal a question first | Send the new version: a change to the contract terms means the earlier signatures don't carry over. | vendors/skyquay-lift-fire/packet-v2.md |
| 2026-11-12 | Tom Becker, Finance | Approve payment of invoice INV-GW-5521 ($535)? It matches the order and the receipt. | Approve payment · Hold | Approve payment. | projects/unit-4b/out/match.md |
| 2026-11-12 | Tom Becker, Finance | Invoice INV-KC-3307 bills $872; the order and the receipt support $713. Pay as billed, or ask for a corrected invoice? | Pay as billed · Ask for a corrected invoice | Ask for a corrected invoice: it bills $159 too much. | projects/unit-4b/out/match.md |
| 2026-11-12 | Dana Reyes, Facilities Manager | Send the shipping-credit request to Gulfweave Furnishings? Its queen bed frame GW-BED-Q is now 7 days past its promised date; the draft asks for $92.50, half of its $185 freight. | Send as written · Change the amount, then send · Don't ask | Send it: it's a polite ask, and the supplier can say no. | projects/unit-4b/exceptions/credit-request-gulfweave-2026-11-12.md |
| 2026-11-12 | Dana Reyes, Facilities Manager | Send the reply refusing Gulfweave Furnishings's completion notice? GW-BED-Q and GW-CT-48 aren't on the receipt. | Send as written · Edit, then send | Send as written. | projects/unit-4b/controls/drafts/reply-gulfweave-2026-11-12.md |
| 2026-11-12 | Dana Reyes, Facilities Manager | Send the delivery update to Lena Ortiz? The bed frame is 5 days late and the dresser is addressed to the wrong unit. | Send as written · Edit, then send | Send as written. | projects/unit-4b/out/drafts/update-2026-11-12.md |
| 2026-11-12 | Dana Reyes, Facilities Manager | Task T1: get a firm new date for the bed frame GW-BED-Q from Gulfweave Furnishings. Due 2026-11-13. | Done · Escalate | Call the supplier today. | projects/unit-4b/out/tasks.md |
| 2026-11-12 | Dana Reyes, Facilities Manager | Task T2: correct the dresser's ship-to address with Mangrove Home Supply (Unit 4D to Unit 4B). Due 2026-11-13. | Done · Escalate | Call the supplier today. | projects/unit-4b/out/tasks.md |
Problems caught, by cause
Each one was planted in the sample data on purpose, written into a locked answer key first, and caught by the step named here.
| Half | Code | What it means | Caught by | Where | Count |
|---|---|---|---|---|---|
| Onboarding | LICENSE_EXPIRING_30D | License about to expire: on hold until renewed | /intake |
Bayvane Plumbing Inc. | 1 |
| Onboarding | GL_BELOW_MIN | Liability coverage below the company minimum | /intake |
Brightcurrent Electric Inc. | 1 |
| Onboarding | NO_ADDITIONAL_INSURED | Palmquay not named on the insurance | /intake |
Clearsail Janitorial Services LLC | 1 |
| Onboarding | MISSING_W9 | Tax form missing | /intake |
Fernhollow Grounds LLC | 1 |
| Onboarding | NAME_MISMATCH | Company name differs between documents | /intake |
Gulfpine Pest Control Inc. | 1 |
| Onboarding | COI_EXPIRED | Insurance certificate has expired | /intake |
Saltmarsh Roofing Co. | 1 |
| Buying | MISSING_MEASUREMENT | A wall length was left blank | /scope |
Bedroom | 1 |
| Buying | SCOPE_CONFLICT | The requested bed doesn't fit the room | /scope |
Bedroom | 1 |
| Buying | LATE_ITEM | Would arrive after the install date | /source |
GW-SOF-210 | 1 |
| Buying | HIDDEN_FREIGHT | Delivery charge only in a footnote | /quote |
Q-GW-1 | 1 |
| Buying | QUOTE_EXPIRED | Quote past its valid-until date | /quote |
Q-MH-1 | 1 |
| Buying | TOO_WIDE | Wider than the plan allows | /approve |
Area rug KC-RUG-810 | 1 |
| Buying | FINISH_MISMATCH | Wrong finish for the plan | /approve |
Floor lamp KC-LMP-14 | 1 |
| Buying | NEEDS_PERSON | Unclear, so sent to a person instead of guessed | /approve |
Accent chair MH-CHR-32 | 1 |
| Buying | OVER_BUDGET | The change puts the project over budget | /change |
CR-001 | 1 |
| Buying | DELIVERY_LATE | Delivery after the install date | /deliver |
GW-BED-Q | 1 |
| Buying | ADDRESS_MISMATCH | Shipping to the wrong unit | /deliver |
MH-DR-60 | 1 |
| Buying | PRICE_MISMATCH | Billed a higher price than ordered | /match |
INV-KC-3307 | 1 |
| Buying | QTY_MISMATCH | Billed more than was ordered and received | /match |
INV-KC-3307 | 1 |
| Controls | EXCLUDED | A company on the exclusion list | /screen |
Gulfpine Pest Control Inc. | 1 |
| Controls | CONFLICT_DISCLOSED | A relative of an approver owns part of the vendor | /screen |
Kestrelbay Air & Heat LLC | 1 |
| Controls | LOWEST_NOT_SELECTED | The lowest in-spec price wasn't picked | /request |
MH-SOF-118 | 1 |
| Controls | SINGLE_SOURCE | Only one supplier offers it | /request |
GW-BED-Q, MH-DR-60 | 2 |
| Controls | CLAIM_CONTRADICTED | A supplier said all delivered; the receipt disagrees | /closeout |
Gulfweave Furnishings | 1 |
Vendors
Status as of the demo date 2026-11-05, from each vendor's intake record. Days waiting count from the day the vendor submitted. A person approves every vendor; the AI builds the packet.
| Vendor | Contract | Status | Blocker | Issues | Next step | Screen | Approvers | Days waiting |
|---|---|---|---|---|---|---|---|---|
| Bayvane Plumbing Inc. plumbing
|
$19,750 | ❚❚HOLD | LICENSE_EXPIRING_30D | 1 | Follow-up drafted; Dana Reyes, Facilities Manager reviews and sends | ✓clear | 2 | 2 |
| Brightcurrent Electric Inc. electrical
|
$27,500 | ✕BLOCKED | GL_BELOW_MIN | 1 | Follow-up drafted; Dana Reyes, Facilities Manager reviews and sends | ✓clear | 2 | 2 |
| Clearsail Janitorial Services LLC janitorial
|
$9,800 | ✕BLOCKED | NO_ADDITIONAL_INSURED | 1 | Follow-up drafted; Dana Reyes, Facilities Manager reviews and sends | ✓clear | 1 | 2 |
| Fernhollow Grounds LLC landscaping
|
$14,200 | ✕BLOCKED | MISSING_W9 | 1 | Follow-up drafted; Dana Reyes, Facilities Manager reviews and sends | ✓clear | 2 | 2 |
| Gulfpine Pest Control Inc. pest control
|
$6,400 | ✕BLOCKED | NAME_MISMATCH | 1 | Excluded company in its paperwork: Legal reviews; follow-up on hold | ✕excluded | 1 | 2 |
| Kestrelbay Air & Heat LLC HVAC
|
$8,500 | ✓READY | none | 0 | Packet on hold: Legal reviews a disclosure; Marcus Hale, Procurement Lead signs (Facilities Manager recused) | ?Legal reviews | 1 | 2 |
| Saltmarsh Roofing Co. roofing
|
$42,000 | ✕BLOCKED | COI_EXPIRED | 1 | Follow-up drafted; Dana Reyes, Facilities Manager reviews and sends | ✓clear | 2 | 2 |
| Skyquay Lift & Fire Inc. elevator and fire
|
$120,000 | ✓READY | none | 0 | Change asked during sign-off: version 2 built; signing restarts with Dana Reyes, Facilities Manager | ✓clear | 4 | 2 |
Insurance and licenses: ended or ending soon
Read from the documents themselves; anything ending within the window in dashboard/README.md is listed.
| Vendor | Document | End date | When | Vendor status |
|---|---|---|---|---|
| Bayvane Plumbing Inc. | state license | 2026-11-28 | ends 23 days after the demo date | ❚❚HOLD |
| Saltmarsh Roofing Co. | insurance certificate | 2026-09-30 | ended 36 days before the demo date | ✕BLOCKED |
Screening: conflict-of-interest disclosures and the exclusion list
Copied from a real public-agency procurement packet (structure only; every record here is a fictional sample). Every contractor signs a disclosure, and every name in its paperwork is checked against a fictional exclusion list. Legal decides; the AI only flags.
| Vendor | Disclosure signed | Disclosed relationships | Exclusion matches | Screen | Who reviews |
|---|---|---|---|---|---|
| Bayvane Plumbing Inc. | Grant Holloway, 2026-11-03 | none | none | ✓clear | nobody |
| Brightcurrent Electric Inc. | Lydia Chen, 2026-11-03 | none | none | ✓clear | nobody |
| Clearsail Janitorial Services LLC | Nina Patel, 2026-11-03 | none | none | ✓clear | nobody |
| Fernhollow Grounds LLC | Marco Delgado, 2026-11-03 | none | none | ✓clear | nobody |
| Gulfpine Pest Control Inc. | Derek Mills, 2026-11-03 | none | Gulfpine Pest Solutions LLC | ✕excluded EXCLUDED | Legal |
| Kestrelbay Air & Heat LLC | Tomas Ferreira, 2026-11-03 | Ray Reyes: Brother of Dana Reyes, Facilities Manager | none | ?Legal reviews CONFLICT_DISCLOSED | Legal |
| Saltmarsh Roofing Co. | Owen Pratt, 2026-11-03 | none | none | ✓clear | nobody |
| Skyquay Lift & Fire Inc. | Alicia Romero, 2026-11-03 | none | none | ✓clear | nobody |
| Contractors clear / for review / excluded | 6 / 1 / 1 |
| Approved furniture suppliers checked against the list / excluded | 3 / 0 |
A change during sign-off
A signer can catch something after others have signed. A change to the scope, price, dates, contract terms, or insurance means a new version: the old signatures don't carry over, and signing starts again from the first approver. The AI builds the new version and marks what changed; a person voids the old one and sends the new one. The e-signature export runs to 2026-11-10.
| Vendor | Change asked | Asked by | Had signed the old version | New version | Next |
|---|---|---|---|---|---|
| Skyquay Lift & Fire Inc. | Add a one-year warranty on parts and labor to the contract terms before I sign. | Priya Natarajan, Legal, 2026-11-10 | Dana Reyes (2026-11-06), Marcus Hale (2026-11-09) | version 2: 4 sign-offs, blank, in order | Dana Reyes, Facilities Manager voids version 1 and sends the new one; Dana Reyes, Facilities Manager signs first again |
The record behind each vendor
❚❚HOLD Bayvane Plumbing Inc. what intake checked, the follow-up draft
What /intake checked, quoted from vendors/bayvane-plumbing/intake.json.
| Check | Found | Rule | Result |
|---|---|---|---|
| W-9 on file | present | required from every vendor | ✓ok |
| certificate of insurance on file | present | required from every vendor | ✓ok |
| work request on file | present | required from every vendor | ✓ok |
| state license on file | present | required for licensed trades (plumbing) | ✓ok |
| insurance end date | 2027-03-01 (116 days from 2026-11-05) | not before 2026-11-05; 30 days or fewer out = hold | ✓ok |
| general liability | $1,000,000 / $2,000,000 | at least $1,000,000 per occurrence / $2,000,000 aggregate | ✓ok |
| auto liability | $1,000,000 | at least $1,000,000 | ✓ok |
| umbrella | None | not required for plumbing | n/a |
| workers' comp | Statutory | Statutory or a valid exemption certificate | ✓ok |
| additional insured | Palmquay Properties | must name Palmquay Properties | ✓ok |
| license end date | 2026-11-28 (23 days from 2026-11-05) | not before 2026-11-05; 30 days or fewer out = hold | LICENSE_EXPIRING_30D |
| legal name matches everywhere | vendor.md: Bayvane Plumbing Inc.; w9.md: Bayvane Plumbing Inc.; coi.md: Bayvane Plumbing Inc.; license.md: Bayvane Plumbing Inc. | same legal name on the vendor record, W-9, certificate and license | ✓ok |
Follow-up draft (not sent): vendors/bayvane-plumbing/drafts/2026-11-05-follow-up.md
# Draft follow-up email: Bayvane Plumbing Inc. *Fake data for a demo. DRAFT ONLY: the assistant never sends email. Dana Reyes (Facilities Manager) reviews and sends it.* | Field | Value | |---|---| | Status | DRAFT, not sent | | To | office@bayvane-plumbing.example | | From | dana.reyes@palmquay.example | | Reviewer and sender | Dana Reyes, Facilities Manager | | Subject | Proof of license renewal needed by 2026-11-12 | | Issue codes | LICENSE_EXPIRING_30D | | Deadline | 2026-11-12 | | Drafted | 2026-11-05 by onboarding-assistant from vendors/bayvane-plumbing/intake.json | ## Message Hello Bayvane Plumbing Inc. team, Thank you for sending your paperwork for the water heater replacements in units 2A-2D at Harbor Walk Lofts. Everything else is in order; we need one item before we can move ahead. ## What we need 1. **Proof that your state plumbing license has been renewed.** The license on file expires on 2026-11-28, which is within 30 days. **Why we need it:** A license that ends within 30 days puts the file on hold until we have proof of renewal. ## Deadline and how to send it Please send it by **2026-11-12** (one week from today). Reply to this email with the renewed license attached (a PDF is fine), or send it to dana.reyes@palmquay.example. Your file is on hold, not closed: once the renewal arrives, we can move it forward. If anything here looks wrong, just reply and we'll sort it out. Thank you, Dana Reyes Facilities Manager, Palmquay Properties dana.reyes@palmquay.example
✕BLOCKED Brightcurrent Electric Inc. what intake checked, the follow-up draft
What /intake checked, quoted from vendors/brightcurrent-electric/intake.json.
| Check | Found | Rule | Result |
|---|---|---|---|
| W-9 on file | present | required from every vendor | ✓ok |
| certificate of insurance on file | present | required from every vendor | ✓ok |
| work request on file | present | required from every vendor | ✓ok |
| state license on file | present | required for licensed trades (electrical) | ✓ok |
| insurance end date | 2027-03-01 (116 days from 2026-11-05) | not before 2026-11-05; 30 days or fewer out = hold | ✓ok |
| general liability | $500,000 / $1,000,000 | at least $1,000,000 per occurrence / $2,000,000 aggregate | GL_BELOW_MIN |
| auto liability | $1,000,000 | at least $1,000,000 | ✓ok |
| umbrella | None | not required for electrical | n/a |
| workers' comp | Statutory | Statutory or a valid exemption certificate | ✓ok |
| additional insured | Palmquay Properties | must name Palmquay Properties | ✓ok |
| license end date | 2027-08-31 (299 days from 2026-11-05) | not before 2026-11-05; 30 days or fewer out = hold | ✓ok |
| legal name matches everywhere | vendor.md: Brightcurrent Electric Inc.; w9.md: Brightcurrent Electric Inc.; coi.md: Brightcurrent Electric Inc.; license.md: Brightcurrent Electric Inc. | same legal name on the vendor record, W-9, certificate and license | ✓ok |
Follow-up draft (not sent): vendors/brightcurrent-electric/drafts/2026-11-05-follow-up.md
# Draft follow-up email: Brightcurrent Electric Inc. *Fake data for a demo. DRAFT ONLY: the assistant never sends email. Dana Reyes (Facilities Manager) reviews and sends it.* | Field | Value | |---|---| | Status | DRAFT, not sent | | To | office@brightcurrent-electric.example | | From | dana.reyes@palmquay.example | | Reviewer and sender | Dana Reyes, Facilities Manager | | Subject | Updated insurance certificate (general liability limits) needed by 2026-11-12 | | Issue codes | GL_BELOW_MIN | | Deadline | 2026-11-12 | | Drafted | 2026-11-05 by onboarding-assistant from vendors/brightcurrent-electric/intake.json | ## Message Hello Brightcurrent Electric Inc. team, Thank you for sending your paperwork for the panel upgrade and exit-light replacement at Seminole Point Offices. Everything else is in order; we need one item before we can move ahead. ## What we need 1. **A certificate of insurance showing higher general liability limits.** The certificate on file shows general liability of $500,000 per occurrence and $1,000,000 aggregate. **Why we need it:** Our minimum for every vendor is $1,000,000 per occurrence and $2,000,000 aggregate. ## Deadline and how to send it Please send it by **2026-11-12** (one week from today). Reply to this email with the updated certificate attached (a PDF is fine), or send it to dana.reyes@palmquay.example. If anything here looks wrong, just reply and we'll sort it out. Thank you, Dana Reyes Facilities Manager, Palmquay Properties dana.reyes@palmquay.example
✕BLOCKED Clearsail Janitorial Services LLC what intake checked, the follow-up draft
What /intake checked, quoted from vendors/clearsail-janitorial/intake.json.
| Check | Found | Rule | Result |
|---|---|---|---|
| W-9 on file | present | required from every vendor | ✓ok |
| certificate of insurance on file | present | required from every vendor | ✓ok |
| work request on file | present | required from every vendor | ✓ok |
| state license on file | janitorial | not required for this trade under company policy | n/a |
| insurance end date | 2027-03-01 (116 days from 2026-11-05) | not before 2026-11-05; 30 days or fewer out = hold | ✓ok |
| general liability | $1,000,000 / $2,000,000 | at least $1,000,000 per occurrence / $2,000,000 aggregate | ✓ok |
| auto liability | $1,000,000 | at least $1,000,000 | ✓ok |
| umbrella | None | not required for janitorial | n/a |
| workers' comp | Statutory | Statutory or a valid exemption certificate | ✓ok |
| additional insured | None listed | must name Palmquay Properties | NO_ADDITIONAL_INSURED |
| legal name matches everywhere | vendor.md: Clearsail Janitorial Services LLC; w9.md: Clearsail Janitorial Services LLC; coi.md: Clearsail Janitorial Services LLC | same legal name on the vendor record, W-9, certificate and license | ✓ok |
Follow-up draft (not sent): vendors/clearsail-janitorial/drafts/2026-11-05-follow-up.md
# Draft follow-up email: Clearsail Janitorial Services LLC *Fake data for a demo. DRAFT ONLY: the assistant never sends email. Dana Reyes (Facilities Manager) reviews and sends it.* | Field | Value | |---|---| | Status | DRAFT, not sent | | To | office@clearsail-janitorial.example | | From | dana.reyes@palmquay.example | | Reviewer and sender | Dana Reyes, Facilities Manager | | Subject | Insurance certificate naming Palmquay Properties needed by 2026-11-12 | | Issue codes | NO_ADDITIONAL_INSURED | | Deadline | 2026-11-12 | | Drafted | 2026-11-05 by onboarding-assistant from vendors/clearsail-janitorial/intake.json | ## Message Hello Clearsail Janitorial Services LLC team, Thank you for sending your paperwork for the nightly common-area cleaning at Seminole Point Offices. Everything else is in order; we need one item before we can move ahead. ## What we need 1. **An updated certificate of insurance that names Palmquay Properties as an additional insured.** The certificate on file lists the additional insured as "None listed." **Why we need it:** Our policy requires Palmquay Properties to be named as an additional insured on every vendor's certificate. ## Deadline and how to send it Please send it by **2026-11-12** (one week from today). Reply to this email with the updated certificate attached (a PDF is fine), or send it to dana.reyes@palmquay.example. If anything here looks wrong, just reply and we'll sort it out. Thank you, Dana Reyes Facilities Manager, Palmquay Properties dana.reyes@palmquay.example
✕BLOCKED Fernhollow Grounds LLC what intake checked, the follow-up draft
What /intake checked, quoted from vendors/fernhollow-grounds/intake.json.
| Check | Found | Rule | Result |
|---|---|---|---|
| W-9 on file | missing | required from every vendor | MISSING_W9 |
| certificate of insurance on file | present | required from every vendor | ✓ok |
| work request on file | present | required from every vendor | ✓ok |
| state license on file | landscaping | not required for this trade under company policy | n/a |
| insurance end date | 2027-03-01 (116 days from 2026-11-05) | not before 2026-11-05; 30 days or fewer out = hold | ✓ok |
| general liability | $1,000,000 / $2,000,000 | at least $1,000,000 per occurrence / $2,000,000 aggregate | ✓ok |
| auto liability | $1,000,000 | at least $1,000,000 | ✓ok |
| umbrella | None | not required for landscaping | n/a |
| workers' comp | Statutory | Statutory or a valid exemption certificate | ✓ok |
| additional insured | Palmquay Properties | must name Palmquay Properties | ✓ok |
| legal name matches everywhere | vendor.md: Fernhollow Grounds LLC; coi.md: Fernhollow Grounds LLC | same legal name on the vendor record, W-9, certificate and license | ✓ok |
Follow-up draft (not sent): vendors/fernhollow-grounds/drafts/2026-11-05-follow-up.md
# Draft follow-up email: Fernhollow Grounds LLC *Fake data for a demo. DRAFT ONLY: the assistant never sends email. Dana Reyes (Facilities Manager) reviews and sends it.* | Field | Value | |---|---| | Status | DRAFT, not sent | | To | office@fernhollow-grounds.example | | From | dana.reyes@palmquay.example | | Reviewer and sender | Dana Reyes, Facilities Manager | | Subject | Signed W-9 needed by 2026-11-12 | | Issue codes | MISSING_W9 | | Deadline | 2026-11-12 | | Drafted | 2026-11-05 by onboarding-assistant from vendors/fernhollow-grounds/intake.json | ## Message Hello Fernhollow Grounds LLC team, Thank you for sending your paperwork for the 12-month grounds care contract at Palm Row Apartments. Everything else is in order; we need one item before we can move ahead. ## What we need 1. **A signed W-9.** We don't have a W-9 from Fernhollow Grounds LLC on file yet. **Why we need it:** Palmquay Properties requires a W-9 from every vendor; it confirms the legal name and taxpayer ID on file. ## Deadline and how to send it Please send it by **2026-11-12** (one week from today). Reply to this email with the signed W-9 attached (a PDF is fine), or send it to dana.reyes@palmquay.example. If anything here looks wrong, just reply and we'll sort it out. Thank you, Dana Reyes Facilities Manager, Palmquay Properties dana.reyes@palmquay.example
✕BLOCKED Gulfpine Pest Control Inc. what intake checked, the follow-up draft
What /intake checked, quoted from vendors/gulfpine-pest/intake.json.
| Check | Found | Rule | Result |
|---|---|---|---|
| W-9 on file | present | required from every vendor | ✓ok |
| certificate of insurance on file | present | required from every vendor | ✓ok |
| work request on file | present | required from every vendor | ✓ok |
| state license on file | present | required for licensed trades (pest_control) | ✓ok |
| insurance end date | 2027-03-01 (116 days from 2026-11-05) | not before 2026-11-05; 30 days or fewer out = hold | ✓ok |
| general liability | $1,000,000 / $2,000,000 | at least $1,000,000 per occurrence / $2,000,000 aggregate | ✓ok |
| auto liability | $1,000,000 | at least $1,000,000 | ✓ok |
| umbrella | None | not required for pest_control | n/a |
| workers' comp | Statutory | Statutory or a valid exemption certificate | ✓ok |
| additional insured | Palmquay Properties | must name Palmquay Properties | ✓ok |
| license end date | 2027-08-31 (299 days from 2026-11-05) | not before 2026-11-05; 30 days or fewer out = hold | ✓ok |
| legal name matches everywhere | vendor.md: Gulfpine Pest Control Inc.; w9.md: Gulfpine Pest Control Inc.; coi.md: Gulfpine Pest Solutions LLC; license.md: Gulfpine Pest Control Inc. | same legal name on the vendor record, W-9, certificate and license | NAME_MISMATCH |
Follow-up draft (not sent): vendors/gulfpine-pest/drafts/2026-11-05-follow-up.md
# Draft follow-up email: Gulfpine Pest Control Inc. *Fake data for a demo. DRAFT ONLY: the assistant never sends email. Dana Reyes (Facilities Manager) reviews and sends it.* | Field | Value | |---|---| | Status | DRAFT, not sent | | To | office@gulfpine-pest.example | | From | dana.reyes@palmquay.example | | Reviewer and sender | Dana Reyes, Facilities Manager | | Subject | Insurance certificate in your legal name needed by 2026-11-12 | | Issue codes | NAME_MISMATCH | | Deadline | 2026-11-12 | | Drafted | 2026-11-05 by onboarding-assistant from vendors/gulfpine-pest/intake.json | ## Message Hello Gulfpine Pest Control Inc. team, Thank you for sending your paperwork for the quarterly pest treatment at Palm Row Apartments. Everything else is in order; we need one item before we can move ahead. ## What we need 1. **A certificate of insurance that names the same company as your W-9 and license.** The certificate lists the insured as Gulfpine Pest Solutions LLC, but your W-9 and state license both say Gulfpine Pest Control Inc. If the name on the certificate is the right one, just reply and tell us so we can sort out the other documents. **Why we need it:** The legal name must match on the W-9, the certificate's Insured line and the license, so we know all three cover the same company. ## Deadline and how to send it Please send it by **2026-11-12** (one week from today). Reply to this email with the corrected certificate attached (a PDF is fine), or send it to dana.reyes@palmquay.example. If anything here looks wrong, just reply and we'll sort it out. Thank you, Dana Reyes Facilities Manager, Palmquay Properties dana.reyes@palmquay.example
✓READY Kestrelbay Air & Heat LLC what intake checked, the approval packet
What /intake checked, quoted from vendors/kestrelbay-air-heat/intake.json.
| Check | Found | Rule | Result |
|---|---|---|---|
| W-9 on file | present | required from every vendor | ✓ok |
| certificate of insurance on file | present | required from every vendor | ✓ok |
| work request on file | present | required from every vendor | ✓ok |
| state license on file | present | required for licensed trades (hvac) | ✓ok |
| insurance end date | 2027-03-01 (116 days from 2026-11-05) | not before 2026-11-05; 30 days or fewer out = hold | ✓ok |
| general liability | $1,000,000 / $2,000,000 | at least $1,000,000 per occurrence / $2,000,000 aggregate | ✓ok |
| auto liability | $1,000,000 | at least $1,000,000 | ✓ok |
| umbrella | None | not required for hvac | n/a |
| workers' comp | Statutory | Statutory or a valid exemption certificate | ✓ok |
| additional insured | Palmquay Properties | must name Palmquay Properties | ✓ok |
| license end date | 2027-08-31 (299 days from 2026-11-05) | not before 2026-11-05; 30 days or fewer out = hold | ✓ok |
| legal name matches everywhere | vendor.md: Kestrelbay Air & Heat LLC; w9.md: Kestrelbay Air & Heat LLC; coi.md: Kestrelbay Air & Heat LLC; license.md: Kestrelbay Air & Heat LLC | same legal name on the vendor record, W-9, certificate and license | ✓ok |
Approval packet (sign-offs blank on purpose): vendors/kestrelbay-air-heat/packet.md
This packet was built before the screening step. The screen recused Dana Reyes, Facilities Manager (a disclosed relative owns part of the firm), so Marcus Hale, Procurement Lead signs instead, after Legal reviews. The packet record itself is left as it was.
# Approval packet: Kestrelbay Air & Heat LLC *Fake data for a demo. Built by the onboarding assistant from the vendor's documents and company/rules.json. Nothing is approved until the people below sign. The assistant never approves, signs, or pays.* | Field | Value | |---|---| | Vendor | Kestrelbay Air & Heat LLC | | Trade | hvac | | Building | Harbor Walk Lofts | | Scope | Replace 2 rooftop condenser fan motors | | Contract amount | $8,500 | | Requested by | Dana Reyes | | Target start | 2026-12-01 | | Intake status | READY (0 issues), checked against company/rules.json for 2026-11-05 | | Approval tier | Up to $10,000: 1 sign-off, in order | | Built | 2026-11-05T11:31:17 by onboarding-assistant | ## What intake checked | Check | Source | Found | Rule | Result | |---|---|---|---|---| | W-9 on file | documents/w9.md | present | required from every vendor | ok | | certificate of insurance on file | documents/coi.md | present | required from every vendor | ok | | work request on file | documents/request.md | present | required from every vendor | ok | | state license on file | documents/license.md | present | required for licensed trades (hvac) | ok | | insurance end date | documents/coi.md: Policy end | 2027-03-01 (116 days from 2026-11-05) | not before 2026-11-05; 30 days or fewer out = hold | ok | | general liability | documents/coi.md | $1,000,000 / $2,000,000 | at least $1,000,000 per occurrence / $2,000,000 aggregate | ok | | auto liability | documents/coi.md | $1,000,000 | at least $1,000,000 | ok | | umbrella | documents/coi.md | None | not required for hvac | n/a | | workers' comp | documents/coi.md | Statutory | Statutory or a valid exemption certificate | ok | | additional insured | documents/coi.md | Palmquay Properties | must name Palmquay Properties | ok | | license end date | documents/license.md: Expires | 2027-08-31 (299 days from 2026-11-05) | not before 2026-11-05; 30 days or fewer out = hold | ok | | legal name matches everywhere | vendor.md, w9.md, coi.md, license.md | vendor.md: Kestrelbay Air & Heat LLC; w9.md: Kestrelbay Air & Heat LLC; coi.md: Kestrelbay Air & Heat LLC; license.md: Kestrelbay Air & Heat LLC | same legal name on the vendor record, W-9, certificate and license | ok | ## Sign-offs (in this order; each person signs after the one above) | # | Role | Name | Email | Decision | Date | Signature | |---|---|---|---|---|---|---| | 1 | Facilities Manager | Dana Reyes | dana.reyes@palmquay.example | | | | Decision, Date and Signature are left blank on purpose: a person fills them in. The next approver is notified by a person, not by the assistant.
✕BLOCKED Saltmarsh Roofing Co. what intake checked, the follow-up draft
What /intake checked, quoted from vendors/saltmarsh-roofing/intake.json.
| Check | Found | Rule | Result |
|---|---|---|---|
| W-9 on file | present | required from every vendor | ✓ok |
| certificate of insurance on file | present | required from every vendor | ✓ok |
| work request on file | present | required from every vendor | ✓ok |
| state license on file | present | required for licensed trades (roofing) | ✓ok |
| insurance end date | 2026-09-30 (36 days ago) | not before 2026-11-05; 30 days or fewer out = hold | COI_EXPIRED |
| general liability | $1,000,000 / $2,000,000 | at least $1,000,000 per occurrence / $2,000,000 aggregate | ✓ok |
| auto liability | $1,000,000 | at least $1,000,000 | ✓ok |
| umbrella | $5,000,000 | at least $5,000,000 for roofing (high-risk trade) | ✓ok |
| workers' comp | Statutory | Statutory or a valid exemption certificate | ✓ok |
| additional insured | Palmquay Properties | must name Palmquay Properties | ✓ok |
| license end date | 2027-08-31 (299 days from 2026-11-05) | not before 2026-11-05; 30 days or fewer out = hold | ✓ok |
| legal name matches everywhere | vendor.md: Saltmarsh Roofing Co.; w9.md: Saltmarsh Roofing Co.; coi.md: Saltmarsh Roofing Co.; license.md: Saltmarsh Roofing Co. | same legal name on the vendor record, W-9, certificate and license | ✓ok |
Follow-up draft (not sent): vendors/saltmarsh-roofing/drafts/2026-11-05-follow-up.md
# Draft follow-up email: Saltmarsh Roofing Co. *Fake data for a demo. DRAFT ONLY: the assistant never sends email. Dana Reyes (Facilities Manager) reviews and sends it.* | Field | Value | |---|---| | Status | DRAFT, not sent | | To | office@saltmarsh-roofing.example | | From | dana.reyes@palmquay.example | | Reviewer and sender | Dana Reyes, Facilities Manager | | Subject | Current certificate of insurance needed by 2026-11-12 | | Issue codes | COI_EXPIRED | | Deadline | 2026-11-12 | | Drafted | 2026-11-05 by onboarding-assistant from vendors/saltmarsh-roofing/intake.json | ## Message Hello Saltmarsh Roofing Co. team, Thank you for sending your paperwork for the flat-roof re-coat at Bayfront Commons. Everything else is in order; we need one item before we can move ahead. ## What we need 1. **A current certificate of insurance.** The certificate we have on file ended on 2026-09-30. **Why we need it:** Our policy requires current insurance on file for every vendor, and an expired certificate stops the approval. ## Deadline and how to send it Please send it by **2026-11-12** (one week from today). Reply to this email with the certificate attached (a PDF is fine), or send it to dana.reyes@palmquay.example. If anything here looks wrong, just reply and we'll sort it out. Thank you, Dana Reyes Facilities Manager, Palmquay Properties dana.reyes@palmquay.example
✓READY Skyquay Lift & Fire Inc. what intake checked, the approval packet, the change during sign-off
What /intake checked, quoted from vendors/skyquay-lift-fire/intake.json.
| Check | Found | Rule | Result |
|---|---|---|---|
| W-9 on file | present | required from every vendor | ✓ok |
| certificate of insurance on file | present | required from every vendor | ✓ok |
| work request on file | present | required from every vendor | ✓ok |
| state license on file | present | required for licensed trades (elevator_fire) | ✓ok |
| insurance end date | 2027-03-01 (116 days from 2026-11-05) | not before 2026-11-05; 30 days or fewer out = hold | ✓ok |
| general liability | $1,000,000 / $2,000,000 | at least $1,000,000 per occurrence / $2,000,000 aggregate | ✓ok |
| auto liability | $1,000,000 | at least $1,000,000 | ✓ok |
| umbrella | $5,000,000 | at least $5,000,000 for elevator_fire (high-risk trade) | ✓ok |
| workers' comp | Statutory | Statutory or a valid exemption certificate | ✓ok |
| additional insured | Palmquay Properties | must name Palmquay Properties | ✓ok |
| license end date | 2027-08-31 (299 days from 2026-11-05) | not before 2026-11-05; 30 days or fewer out = hold | ✓ok |
| legal name matches everywhere | vendor.md: Skyquay Lift & Fire Inc.; w9.md: Skyquay Lift & Fire Inc.; coi.md: Skyquay Lift & Fire Inc.; license.md: Skyquay Lift & Fire Inc. | same legal name on the vendor record, W-9, certificate and license | ✓ok |
Approval packet (sign-offs blank on purpose): vendors/skyquay-lift-fire/packet.md
# Approval packet: Skyquay Lift & Fire Inc. *Fake data for a demo. Built by the onboarding assistant from the vendor's documents and company/rules.json. Nothing is approved until the people below sign. The assistant never approves, signs, or pays.* | Field | Value | |---|---| | Vendor | Skyquay Lift & Fire Inc. | | Trade | elevator_fire | | Building | Bayfront Commons | | Scope | Modernize 2 passenger elevators + fire-alarm tie-in | | Contract amount | $120,000 | | Requested by | Dana Reyes | | Target start | 2026-12-01 | | Intake status | READY (0 issues), checked against company/rules.json for 2026-11-05 | | Approval tier | Over $50,000: 4 sign-offs, in order | | Built | 2026-11-05T11:31:17 by onboarding-assistant | ## What intake checked | Check | Source | Found | Rule | Result | |---|---|---|---|---| | W-9 on file | documents/w9.md | present | required from every vendor | ok | | certificate of insurance on file | documents/coi.md | present | required from every vendor | ok | | work request on file | documents/request.md | present | required from every vendor | ok | | state license on file | documents/license.md | present | required for licensed trades (elevator_fire) | ok | | insurance end date | documents/coi.md: Policy end | 2027-03-01 (116 days from 2026-11-05) | not before 2026-11-05; 30 days or fewer out = hold | ok | | general liability | documents/coi.md | $1,000,000 / $2,000,000 | at least $1,000,000 per occurrence / $2,000,000 aggregate | ok | | auto liability | documents/coi.md | $1,000,000 | at least $1,000,000 | ok | | umbrella | documents/coi.md | $5,000,000 | at least $5,000,000 for elevator_fire (high-risk trade) | ok | | workers' comp | documents/coi.md | Statutory | Statutory or a valid exemption certificate | ok | | additional insured | documents/coi.md | Palmquay Properties | must name Palmquay Properties | ok | | license end date | documents/license.md: Expires | 2027-08-31 (299 days from 2026-11-05) | not before 2026-11-05; 30 days or fewer out = hold | ok | | legal name matches everywhere | vendor.md, w9.md, coi.md, license.md | vendor.md: Skyquay Lift & Fire Inc.; w9.md: Skyquay Lift & Fire Inc.; coi.md: Skyquay Lift & Fire Inc.; license.md: Skyquay Lift & Fire Inc. | same legal name on the vendor record, W-9, certificate and license | ok | ## Sign-offs (in this order; each person signs after the one above) | # | Role | Name | Email | Decision | Date | Signature | |---|---|---|---|---|---|---| | 1 | Facilities Manager | Dana Reyes | dana.reyes@palmquay.example | | | | | 2 | Procurement Lead | Marcus Hale | marcus.hale@palmquay.example | | | | | 3 | Legal | Priya Natarajan | priya.natarajan@palmquay.example | | | | | 4 | Finance | Tom Becker | tom.becker@palmquay.example | | | | Decision, Date and Signature are left blank on purpose: a person fills them in. The next approver is notified by a person, not by the assistant.
E-signature export (a person exported it): vendors/skyquay-lift-fire/esign-status-2026-11-10.md
# E-signature status: Skyquay Lift & Fire Inc. approval packet (fictional) *Fake document made for a demo. A person exported this from the e-signature tool; the assistant never sends or signs. Every name here is fictional.* | Field | Value | |---|---| | Packet | vendors/skyquay-lift-fire/packet.md | | Version | 1 | | Sent for signature by | Dana Reyes, Facilities Manager | | Exported | 2026-11-10 | | # | Role | Name | Status | Date | Note | |---|---|---|---|---|---| | 1 | Facilities Manager | Dana Reyes | signed | 2026-11-06 | | | 2 | Procurement Lead | Marcus Hale | signed | 2026-11-09 | | | 3 | Legal | Priya Natarajan | change requested | 2026-11-10 | Add a one-year warranty on parts and labor to the contract terms before I sign. | | 4 | Finance | Tom Becker | not reached | | | Change type: contract terms
Approval packet, newest version (sign-offs blank on purpose): vendors/skyquay-lift-fire/packet-v2.md
# Approval packet, version 2: Skyquay Lift & Fire Inc. *Sample data for a demo (fictional company). Built by the onboarding assistant from version 1 (`vendors/skyquay-lift-fire/packet.md`), the e-signature export (`vendors/skyquay-lift-fire/esign-status-2026-11-10.md`), and company/rules.json. Nothing is approved until the people below sign. The assistant never voids, sends, signs, approves, or pays.* | Field | Value | |---|---| | Vendor | Skyquay Lift & Fire Inc. | | Version | 2 (replaces version 1) | | Building | Bayfront Commons | | Scope | Modernize 2 passenger elevators + fire-alarm tie-in | | Contract amount | $120,000 | | Approval tier | Over $50,000: 4 sign-offs, in order | | Status | RESTART: signing starts again with the first approver | | Built | 2026-11-08T17:24:04 by onboarding-assistant | ## What changed | What | Version 1 | Version 2 | Asked for by | |---|---|---|---| | contract terms | as in version 1 | Add a one-year warranty on parts and labor to the contract terms before I sign. | Priya Natarajan, Legal, 2026-11-10 | A change to the contract terms is a material change under company/rules.json, so version 1's signatures don't carry over: version 1 becomes void once a person voids it in the e-signature tool, and signing restarts with the first approver. ## Version 1: where signing stood on 2026-11-10 | # | Role | Name | Version 1 | Now | |---|---|---|---|---| | 1 | Facilities Manager | Dana Reyes | signed 2026-11-06 | needs to sign again on version 2 | | 2 | Procurement Lead | Marcus Hale | signed 2026-11-09 | needs to sign again on version 2 | | 3 | Legal | Priya Natarajan | change requested | signs version 2 in order | | 4 | Finance | Tom Becker | not reached | signs version 2 in order | ## Sign-offs (version 2, in this order; each person signs after the one above) | # | Role | Name | Email | Decision | Date | Signature | |---|---|---|---|---|---|---| | 1 | Facilities Manager | Dana Reyes | dana.reyes@palmquay.example | | | | | 2 | Procurement Lead | Marcus Hale | marcus.hale@palmquay.example | | | | | 3 | Legal | Priya Natarajan | priya.natarajan@palmquay.example | | | | | 4 | Finance | Tom Becker | tom.becker@palmquay.example | | | | Decision, Date and Signature are left blank on purpose: a person fills them in. ## What a person does next 1. Dana Reyes, Facilities Manager, voids version 1 in the e-signature tool and sends version 2. 2. Signing starts again in order: Dana Reyes, Marcus Hale, Priya Natarajan, then Tom Becker.
Bayfront Commons, Unit 4B: furnishing project
Requested by Lena Ortiz, Property Manager, on 2026-11-05; install by 2026-11-20. A design partner wrote the furnishing plan; Palmquay buys. Scripted events in this sample project run to 2026-11-12.
The seven buying steps
Each ran once, in order, and caught the problem planted for it. Quotes are word for word from the step's output file.
| Step | Ran | Caught | Flags | Detail | Who decides |
|---|---|---|---|---|---|
/scopeRequirements and scope
|
✓ran | MISSING_MEASUREMENT SCOPE_CONFLICT | 2 | A king needs 124 in; the wall is 120 in. Before we order, please send: Bedroom wall B; and confirm a queen bed instead of a king. | Lena Ortiz answers (wall B still not recorded) |
/sourceSupplier lead times
|
✓ran | LATE_ITEM | 1 | Sofa GW-SOF-210 would arrive 27 days late, so the step named the cheapest sofa that meets the plan and arrives in time: MH-SOF-118. | A person picks late-but-preferred or on time |
/quoteQuotes and purchase request
|
✓ran | HIDDEN_FREIGHT QUOTE_EXPIRED | 2 | A $185 delivery charge found only in a footnote. Before ordering, fix the flags: Q-GW-1 HIDDEN_FREIGHT; Q-MH-1 QUOTE_EXPIRED | Dana Reyes, Facilities Manager approves the purchase request |
/approveProduct approval
|
✓ran | TOO_WIDE FINISH_MISMATCH NEEDS_PERSON | 3 | 98 in wide vs 96 in max · chrome vs brushed nickel · the listing doesn't state the fabric; the plan needs pet-friendly performance | A person decides the unclear chair |
/changeBudget and change control
|
✓ran | OVER_BUDGET | 1 | +$410 for the substitute; total $5,308, $108 over. MH-SOF-118 backordered; new ship date 2026-12-01 | Dana Reyes, Facilities Manager approves or rejects (waiting) |
/deliverDeliveries and exceptions
|
✓ran | DELIVERY_LATE ADDRESS_MISMATCH | 2 | Bed frame 5 days late; the dresser is shipping to Unit 4D, not Unit 4B. 2 exceptions, 2 tasks opened. | Dana Reyes, Facilities Manager sends the update (waiting) |
/matchInvoice three-way match
|
✓ran | PRICE_MISMATCH QTY_MISMATCH | 2 | Billed $872, should be $713: $159 held for Finance. Lamps billed 3 x $139, ordered 2 x $129. | Tom Becker, Finance approves payment (waiting) |
Deliveries as of 2026-11-12
| Item | Supplier | Status | ETA | Ship to | Exception |
|---|---|---|---|---|---|
| KC-RUG-96 | Keystone Coast Furniture | delivered | 2026-11-11 | matches the order | none |
| KC-LMP-14N | Keystone Coast Furniture | delivered | 2026-11-10 | matches the order | none |
| GW-CT-48 | Gulfweave Furnishings | in transit | 2026-11-16 | matches the order | none |
| GW-BED-Q | Gulfweave Furnishings | delayed | 2026-11-25 | matches the order | DELIVERY_LATE |
| GW-NS-22 | Gulfweave Furnishings | delivered | 2026-11-12 | matches the order | none |
| MH-SOF-118 | Mangrove Home Supply | on hold (change request) | none | matches the order | on hold for change request CR-001 |
| MH-CHR-32 | Mangrove Home Supply | in transit | 2026-11-13 | matches the order | none |
| MH-DR-60 | Mangrove Home Supply | in transit | 2026-11-15 | different unit from the order | ADDRESS_MISMATCH |
Shipping credit for a late delivery
When tracking shows an item 7 days or more past the date the order promised, the AI drafts a polite request asking that supplier to credit 50% of its freight on the order. It's an opening ask, and the supplier can say no; Dana Reyes, Facilities Manager, may change the amount before sending it.
| Item | Supplier | Promised | ETA | Days past promised | Supplier's freight | Credit asked | Status |
|---|---|---|---|---|---|---|---|
| GW-BED-Q queen bed frame | Gulfweave Furnishings | 2026-11-18 | 2026-11-25 | 7 | $185 | $92.50 | …drafted, not sent Dana Reyes, Facilities Manager reviews and sends |
Invoices: three-way match
Invoice vs. the approved order vs. what arrived. The AI flags differences and never marks anything paid. On hold for Finance: 1.
| Invoice | Supplier | Result | Billed | Should be | Difference | Payment |
|---|---|---|---|---|---|---|
| INV-GW-5521 | Gulfweave Furnishings | ✓MATCH | $535 | same | none | unpaid; Tom Becker, Finance decides |
| INV-KC-3307 | Keystone Coast Furniture | ❚❚HOLD PRICE_MISMATCH QTY_MISMATCH | $872 | $713 | $159 | unpaid; Tom Becker, Finance decides |
Already decided by people (recorded)
- Approved by: Dana Reyes, Facilities Manager (fictional), Approved on: 2026-11-06: purchase order PQ-1042, the approved baseline.
- a person made the calls the assistant routed to them. The accent chair's fabric was confirmed as performance fabric by Dana Reyes on 2026-11-06. The rug and lamps were replaced with in-spec items. Mangrove refreshed its expired quote on 2026-11-06 at the same prices.
Controls from a real procurement packet
The approval request, running totals, and close-out copy the structure of a real public-agency packet; every record here is a fictional sample. Order PQ-1042 was approved before this checklist was added, so the request records what the checklist finds, for the file.
| Procurement type | Standard purchase |
| Order total | $4,898 |
| Budget line, available, left | FAC-TURN-2026: $5,200 available, $302 left |
| Status | ?needs justification; certification blank for Dana Reyes, Facilities Manager |
| Line | Item | Line total | Suppliers in spec | Lowest in-spec | Selected price | Flag | Justification |
|---|---|---|---|---|---|---|---|
| MH-SOF-118 | Sofa | $1,520 | 2 | GW-SOF-210 $1,450 | $1,520 | LOWEST_NOT_SELECTED | On record: GW-SOF-210 ($1,450) would arrive 2026-12-17, 27 days after the install date (out/source.json). The Facilities Manager confirms by signing. |
| GW-BED-Q | Bed frame, queen | $690 | 1 | GW-BED-Q $690 | $690 | SINGLE_SOURCE | Only Gulfweave Furnishings offers an in-spec bed frame, queen. The Facilities Manager writes why one source is acceptable. |
| MH-DR-60 | Dresser | $640 | 1 | MH-DR-60 $640 | $640 | SINGLE_SOURCE | Only Mangrove Home Supply offers an in-spec dresser. The Facilities Manager writes why one source is acceptable. |
Running totals for order PQ-1042
| Original | Approved changes | Current | Invoiced | Approved to pay | Paid | Held | Remaining |
|---|---|---|---|---|---|---|---|
| $4,898 | $0 | $4,898 | $1,407 | $0 | $0 | $872 | $3,491 |
| Lines received in full | 3 of 8 |
| Open lines | GW-BED-Q GW-CT-48 MH-CHR-32 MH-DR-60 MH-SOF-118 |
| Held invoices, pending changes, open tasks | INV-KC-3307 CR-001 T1 T2 |
| Gulfweave Furnishings says all delivered | CLAIM_CONTRADICTED not on the receipt: GW-BED-Q GW-CT-48 |
| Close-out | NOT_READY; completion certificate: both signatures blank |
controls/screen.md
# Screening results (fictional) *Fake data for a demo. Built by the assistant from the records named below. Nothing is approved, signed, sent, or paid by the assistant.* Disclosures from `vendors/*/disclosures/conflict-of-interest.md`; names checked against `company/exclusion-list.md` (as of 2026-11-05). | Vendor | Result | Codes | What a person does | |---|---|---|---| | bayvane-plumbing | CLEAR | none | nothing | | brightcurrent-electric | CLEAR | none | nothing | | clearsail-janitorial | CLEAR | none | nothing | | fernhollow-grounds | CLEAR | none | nothing | | gulfpine-pest | EXCLUDED | EXCLUDED | Legal reviews; don't award; hold the follow-up draft | | kestrelbay-air-heat | REVIEW | CONFLICT_DISCLOSED | Legal reviews the disclosure; Facilities Manager recused, Procurement Lead signs instead | | saltmarsh-roofing | CLEAR | none | nothing | | skyquay-lift-fire | CLEAR | none | nothing | | Supplier | Result | |---|---| | Gulfweave Furnishings | CLEAR | | Mangrove Home Supply | CLEAR | | Keystone Coast Furniture | CLEAR |
projects/unit-4b/controls/approval-request.md
# Procurement approval request: order PQ-1042, unit-4b (fictional) *Fake data for a demo. Built by the assistant from the records named below. Nothing is approved, signed, sent, or paid by the assistant.* Order PQ-1042 was approved on 2026-11-06, before this checklist was added. This form records what the checklist finds, for the file. | Field | Value | |---|---| | Project | Bayfront Commons (fictional), Unit 4B | | Order total | $4,898 | | Procurement type | Standard purchase: every order line over $500 needs in-spec prices from at least 2 approved suppliers (written quotes or catalog prices) | | Status | NEEDS_JUSTIFICATION | ## Purpose Furnish the living room and bedroom by 2026-11-20, as requested by Lena Ortiz, Property Manager (fictional) on 2026-11-05. Must have: pet-friendly performance fabric on upholstered pieces. ## Funding | Budget line | Approved | Committed before this order | Available | This order | Left | |---|---|---|---|---|---| | FAC-TURN-2026 | $5,200 | $0 | $5,200 | $4,898 | $302 | ## Competition (lines over $500) | SKU | Item | Line total | Suppliers with an in-spec price | Lowest in-spec | Selected | Flag | Justification | |---|---|---|---|---|---|---|---| | MH-SOF-118 | Sofa | $1,520 | Gulfweave Furnishings, Mangrove Home Supply | GW-SOF-210 $1,450 | $1,520 | LOWEST_NOT_SELECTED | On record: GW-SOF-210 ($1,450) would arrive 2026-12-17, 27 days after the install date (out/source.json). The Facilities Manager confirms by signing. | | GW-BED-Q | Bed frame, queen | $690 | Gulfweave Furnishings | GW-BED-Q $690 | $690 | SINGLE_SOURCE | Only Gulfweave Furnishings offers an in-spec bed frame, queen. The Facilities Manager writes why one source is acceptable. | | MH-DR-60 | Dresser | $640 | Mangrove Home Supply | MH-DR-60 $640 | $640 | SINGLE_SOURCE | Only Mangrove Home Supply offers an in-spec dresser. The Facilities Manager writes why one source is acceptable. | Still needs a person's written justification: GW-BED-Q, MH-DR-60. ## Certification The approver certifies that the information above and attached is true and complete, and that the suppliers were selected and prices set under Palmquay's purchasing rules. Prepared by: procurement assistant (AI), from the records named above Approvers (in order): Dana Reyes, Facilities Manager Approved by: ____________________ Date: __________
projects/unit-4b/controls/contract-summary.md
# Running totals and close-out: order PQ-1042, unit-4b (fictional) *Fake data for a demo. Built by the assistant from the records named below. Nothing is approved, signed, sent, or paid by the assistant.* | Original order | Approved changes | Current order | Invoiced to date | Approved for payment | Paid | Held | Remaining | |---|---|---|---|---|---|---|---| | $4,898 | $0 | $4,898 | $1,407 | $0 | $0 | $872 | $3,491 | Lines received in full: 3 of 8. Open lines: GW-BED-Q, GW-CT-48, MH-CHR-32, MH-DR-60, MH-SOF-118. Held invoices: INV-KC-3307. Pending changes: CR-001. Open tasks: T1, T2. Supplier completion notice: Gulfweave Furnishings: CLAIM_CONTRADICTED; not delivered: GW-BED-Q, GW-CT-48. Draft reply: `projects/unit-4b/controls/drafts/reply-gulfweave-2026-11-12.md` (not sent). Close-out status: NOT_READY.
projects/unit-4b/controls/completion-certificate.md
# Completion certificate: order PQ-1042, unit-4b (fictional) *Fake data for a demo. Built by the assistant from the records named below. Nothing is approved, signed, sent, or paid by the assistant.* Status: NOT READY to sign: 5 order lines open, 1 invoice held, 1 change request pending, 2 tasks open. Nobody signs until every item is received and checked. ## 1. The supplier certifies Every item on the order from this supplier has been delivered and installed, and the work area is clean. Signature: ____________________ Name: ____________________ Date: __________ ## 2. The Facilities Manager verifies I checked the items against the order, the tracking, and the receipt, and the supplier's certification above is true. Signature: ____________________ Name: ____________________ Date: __________
projects/unit-4b/controls/drafts/reply-gulfweave-2026-11-12.md
# Draft reply to Gulfweave Furnishings (fictional): not sent Draft only. The Facilities Manager reviews and sends it; the assistant does not send email. Hello Gulfweave Furnishings team, Thank you for your completion notice of 2026-11-12 for order PQ-1042. We can't sign off on completion yet. Our records show these items haven't arrived: - GW-BED-Q: delayed, ETA 2026-11-25; not on the receipt of 2026-11-12 - GW-CT-48: in transit, ETA 2026-11-16; not on the receipt of 2026-11-12 Please send updated delivery dates. We'll sign the completion certificate once everything is received and checked. Thank you, Facilities Manager (Dana Reyes)
The records
projects/unit-4b/request.md
# Furnishing request (fictional) Project: unit-4b Building: Bayfront Commons (fictional) Unit: 4B Requested by: Lena Ortiz, Property Manager (fictional) Contact: lena.ortiz@palmquay.example Request date: 2026-11-05 Rooms: living room, bedroom Budget: $5,200 Install by: 2026-11-20 Must have: pet-friendly performance fabric on upholstered pieces Living room wall A: 14 ft Living room wall B: 12 ft Bedroom wall A: 10 ft Bedroom wall B: Bed size: king Delivery address: Bayfront Commons, Unit 4B, 400 Palm Quay Way, Sarasota FL (fictional)
projects/unit-4b/out/brief.md
# Project brief: unit-4b (fictional) Status: **NEEDS_INFO** | Field | From the request | Note | |---|---|---| | Project | unit-4b | | | Building | Bayfront Commons (fictional) | | | Unit | 4B | | | Requested by | Lena Ortiz, Property Manager (fictional) | | | Contact | lena.ortiz@palmquay.example | | | Request date | 2026-11-05 | | | Rooms | living room, bedroom | | | Budget | $5,200 | | | Install by | 2026-11-20 | | | Must have | pet-friendly performance fabric on upholstered pieces | | | Living room wall A | 14 ft | | | Living room wall B | 12 ft | | | Bedroom wall A | 10 ft | | | Bedroom wall B | (blank) | MISSING: ask once | | Bed size | king | SCOPE_CONFLICT: a king needs 124 in (76 in + 24 in each side); the shortest bedroom wall known is 120 in; the largest bed that fits is a queen | | Delivery address | Bayfront Commons, Unit 4B, 400 Palm Quay Way, Sarasota FL (fictional) | | ## One question for the requester (draft; a person sends it) Before we order, please send: Bedroom wall B; and confirm a queen bed instead of a king. Nothing is ordered until a person approves this brief.
projects/unit-4b/out/source.md
# Lead times vs. the install date (2026-11-20), fictional | Line | SKU | Item | Supplier | Lead (days) | Arrives | Result | |---|---|---|---|---|---|---| | 1 | GW-SOF-210 | Sofa | Gulfweave Furnishings | 42 | 2026-12-17 | LATE_ITEM: 27 days late; in time: MH-SOF-118 | | 2 | KC-RUG-810 | Area rug | Keystone Coast Furniture | 5 | 2026-11-10 | on time | | 3 | GW-CT-48 | Coffee table | Gulfweave Furnishings | 10 | 2026-11-15 | on time | | 4 | KC-LMP-14 | Floor lamp | Keystone Coast Furniture | 4 | 2026-11-09 | on time | | 5 | MH-CHR-32 | Accent chair | Mangrove Home Supply | 7 | 2026-11-12 | on time | | 6 | GW-BED-Q | Bed frame, queen | Gulfweave Furnishings | 12 | 2026-11-17 | on time | | 7 | GW-NS-22 | Nightstand | Gulfweave Furnishings | 12 | 2026-11-17 | on time | | 8 | MH-DR-60 | Dresser | Mangrove Home Supply | 9 | 2026-11-14 | on time | Rule: the cheapest catalog item with the same item name that meets the plan line's spec and arrives by the install date. A person picks between late-but-preferred and on-time.
projects/unit-4b/out/quotes.md
# Quote comparison (fictional) | Quote | Supplier | Subtotal | Freight | Total | Valid until | Flags | |---|---|---|---|---|---|---| | Q-GW-1 | Gulfweave Furnishings | $1,380 | $185 | $1,565 | 2026-11-30 | HIDDEN_FREIGHT | | Q-KC-1 | Keystone Coast Furniture | $653 | $60 | $713 | 2026-11-20 | none | | Q-MH-1 | Mangrove Home Supply | $2,620 | $0 | $2,620 | 2026-11-01 | QUOTE_EXPIRED | Grand total: **$4,898** (before tax; tax is handled by Finance)
projects/unit-4b/out/purchase-request-draft.md
# Purchase request DRAFT (fictional): not an order This is a draft for review. Nothing has been ordered. A person approves it and places the order. | Quote | SKU | Item | Qty | Unit price | Line total | Supplier | |---|---|---|---|---|---|---| | Q-GW-1 | GW-CT-48 | Coffee table | 1 | $340 | $340 | Gulfweave Furnishings | | Q-GW-1 | GW-BED-Q | Bed frame, queen | 1 | $690 | $690 | Gulfweave Furnishings | | Q-GW-1 | GW-NS-22 | Nightstand | 2 | $175 | $350 | Gulfweave Furnishings | | Q-KC-1 | KC-RUG-96 | Area rug | 1 | $395 | $395 | Keystone Coast Furniture | | Q-KC-1 | KC-LMP-14N | Floor lamp | 2 | $129 | $258 | Keystone Coast Furniture | | Q-MH-1 | MH-SOF-118 | Sofa | 1 | $1,520 | $1,520 | Mangrove Home Supply | | Q-MH-1 | MH-CHR-32 | Accent chair | 1 | $460 | $460 | Mangrove Home Supply | | Q-MH-1 | MH-DR-60 | Dresser | 1 | $640 | $640 | Mangrove Home Supply | | Quote | Freight | |---|---| | Q-GW-1 | $185 | | Q-KC-1 | $60 | | Q-MH-1 | $0 | Total: **$4,898** Before ordering, fix the flags: Q-GW-1 HIDDEN_FREIGHT; Q-MH-1 QUOTE_EXPIRED Approvers (in order): Facilities Manager (Dana Reyes) Approved by: ____________________ Date: __________
projects/unit-4b/out/approval.md
# Product approval against the design plan (fictional) | Line | Item | SKU | Size (W x D in) | Finish | Fabric | Verdict | Why | |---|---|---|---|---|---|---|---| | 1 | Sofa | GW-SOF-210 | 82 x 37 | n/a | pet-friendly performance | PASS | meets the plan | | 2 | Area rug | KC-RUG-810 | 98 x 120 | n/a | n/a | FAIL | 98 in wide vs 96 in max | | 3 | Coffee table | GW-CT-48 | 48 x 24 | oak | n/a | PASS | meets the plan | | 4 | Floor lamp | KC-LMP-14 | 14 x 14 | chrome | n/a | FAIL | chrome vs brushed nickel | | 5 | Accent chair | MH-CHR-32 | 32 x 33 | n/a | not stated | NEEDS_PERSON | the listing doesn't state the fabric; the plan needs pet-friendly performance | | 6 | Bed frame, queen | GW-BED-Q | 64 x 86 | oak | n/a | PASS | meets the plan | | 7 | Nightstand | GW-NS-22 | 22 x 18 | oak | n/a | PASS | meets the plan | | 8 | Dresser | MH-DR-60 | 60 x 20 | oak | n/a | PASS | meets the plan | NEEDS_PERSON items wait for a named person's decision, saved with their name. The assistant never passes an unclear item.
projects/unit-4b/approved/po-PQ-1042.md
# Purchase order PQ-1042 (fictional): the approved baseline Project: unit-4b Approved by: Dana Reyes, Facilities Manager (fictional) Approved on: 2026-11-06 Budget: $5,200 Ship to: Bayfront Commons, Unit 4B, 400 Palm Quay Way, Sarasota FL (fictional) | SKU | Item | Supplier | Qty | Unit price | Promised delivery | |---|---|---|---|---|---| | MH-SOF-118 | Sofa | Mangrove Home Supply | 1 | $1,520 | 2026-11-13 | | KC-RUG-96 | Area rug | Keystone Coast Furniture | 1 | $395 | 2026-11-11 | | GW-CT-48 | Coffee table | Gulfweave Furnishings | 1 | $340 | 2026-11-16 | | KC-LMP-14N | Floor lamp | Keystone Coast Furniture | 2 | $129 | 2026-11-10 | | MH-CHR-32 | Accent chair | Mangrove Home Supply | 1 | $460 | 2026-11-13 | | GW-BED-Q | Bed frame, queen | Gulfweave Furnishings | 1 | $690 | 2026-11-18 | | GW-NS-22 | Nightstand | Gulfweave Furnishings | 2 | $175 | 2026-11-18 | | MH-DR-60 | Dresser | Mangrove Home Supply | 1 | $640 | 2026-11-15 | Freight Gulfweave Furnishings: $185 Freight Keystone Coast Furniture: $60 Freight Mangrove Home Supply: $0 Total: $4,898 Notes: a person made the calls the assistant routed to them. The accent chair's fabric was confirmed as performance fabric by Dana Reyes on 2026-11-06. The rug and lamps were replaced with in-spec items. Mangrove refreshed its expired quote on 2026-11-06 at the same prices.
projects/unit-4b/events/2026-11-07-backorder.md
# Supplier notice (fictional) Date: 2026-11-07 Supplier: Mangrove Home Supply SKU: MH-SOF-118 Notice: backordered; new ship date 2026-12-01 Proposed substitute: GW-SOF-205 from Gulfweave Furnishings
projects/unit-4b/out/change-request-CR-001.md
# Change request CR-001 (fictional): awaiting approval Trigger: Mangrove Home Supply notice of 2026-11-07: MH-SOF-118 backordered; new ship date 2026-12-01. | | Approved baseline (PQ-1042) | Proposed change | |---|---|---| | Item | Sofa MH-SOF-118 at $1,520 | Sofa GW-SOF-205 at $1,930 | | Delivery | 2026-11-13 | 2026-11-09 | | Project total | $4,898 | $5,308 (+$410) | | Budget | $5,200 | $5,200 | **OVER_BUDGET:** the change puts the project $108 over budget. The substitute meets the plan's spec: yes. Status: awaiting approval by Facilities Manager (Dana Reyes). The approved baseline (approved/po-PQ-1042.md) stays exactly as it is until that approval is recorded. Baseline SHA-256 before and after this request: 0b86e8390c2b5faf... = 0b86e8390c2b5faf... Approved by: ____________________ Date: __________
projects/unit-4b/out/tasks.md
# Follow-up tasks (fictional) | Task | SKU | Supplier | Exception | Detail | Owner | Due | |---|---|---|---|---|---|---| | T1 | GW-BED-Q | Gulfweave Furnishings | DELIVERY_LATE | ETA 2026-11-25, 5 days after the install date 2026-11-20 | Facilities Manager (Dana Reyes) | 2026-11-13 | | T2 | MH-DR-60 | Mangrove Home Supply | ADDRESS_MISMATCH | shipping to 'Bayfront Commons, Unit 4D, 400 Palm Quay Way, Sarasota FL (fictional)', the order says 'Bayfront Commons, Unit 4B, 400 Palm Quay Way, Sarasota FL (fictional)' | Facilities Manager (Dana Reyes) | 2026-11-13 | Covered by an open change request (not an exception here): MH-SOF-118
projects/unit-4b/out/drafts/update-2026-11-12.md
# Draft update to Lena Ortiz, Property Manager (fictional) (lena.ortiz@palmquay.example): not sent Draft only. Facilities Manager (Dana Reyes) reviews and sends it; the assistant does not send email. Hi Lena, A quick update on Unit 4B. As of 2026-11-12, most pieces are on track for 2026-11-20. Two need attention: - GW-BED-Q: ETA 2026-11-25, 5 days after the install date 2026-11-20. - MH-DR-60: shipping to 'Bayfront Commons, Unit 4D, 400 Palm Quay Way, Sarasota FL (fictional)', the order says 'Bayfront Commons, Unit 4B, 400 Palm Quay Way, Sarasota FL (fictional)'. We're following up with both suppliers today and will confirm new dates by tomorrow. Thanks, Facilities Manager (Dana Reyes)
projects/unit-4b/exceptions/credit-request-gulfweave-2026-11-12.md
# Draft to Gulfweave Furnishings (fictional): shipping credit request, not sent Draft only. Dana Reyes, Facilities Manager, reviews it, may change the amount, and sends it; the assistant does not send email. Sample data for a demo. | Field | Value | |---|---| | To | orders@gulfweave.example | | Order | PQ-1042 | | Late item | GW-BED-Q, Bed frame, queen | | Promised delivery | 2026-11-18 | | Current ETA | 2026-11-25 (tracking as of 2026-11-12) | | Days past the promised date | 7 | | Freight on this order | $185 | | Credit requested | $92.50 (50% of the freight) | Subject: Order PQ-1042: delivery delay and a shipping credit Hello Gulfweave Furnishings team, Our order PQ-1042 promised the queen bed frame (GW-BED-Q) for 2026-11-18. Tracking now shows 2026-11-25, 7 days after that date, and after our install date of 2026-11-20. Because of the delay, we'd like to ask for a credit of $92.50, which is 50% of the $185 freight on this order. Could you confirm the new delivery date, and let us know whether you can apply the credit to your invoice for this order? Thank you, Dana Reyes, Facilities Manager Palmquay Properties (fictional)
projects/unit-4b/out/match.md
# Three-way match: invoice vs. order PQ-1042 vs. receipt (fictional) | Invoice | SKU | Billed | Ordered | Received | Flags | |---|---|---|---|---|---| | INV-GW-5521 | GW-NS-22 | 2 x $175 | 2 x $175 | 2 | ok | | INV-GW-5521 | freight | $185 | $185 | | ok | | INV-KC-3307 | KC-RUG-96 | 1 x $395 | 1 x $395 | 1 | ok | | INV-KC-3307 | KC-LMP-14N | 3 x $139 | 2 x $129 | 2 | PRICE_MISMATCH, QTY_MISMATCH | | INV-KC-3307 | freight | $60 | $60 | | ok | | Invoice | Result | Billed | Should be | Difference | |---|---|---|---|---| | INV-GW-5521 | MATCH | as ordered | | | | INV-KC-3307 | HOLD | $872 | $713 | $159 | Payment is approved by Finance (?). The assistant flags differences and never marks an invoice paid.
Acceptance checks, run when this page was built
Each check was written before the work it tests, recomputes every result its own way, and prints what it counted. A check that can't fail proves nothing, so each check script also has a self-test that plants breaks in a throwaway copy.
| Phase | What it checks | Result |
|---|---|---|
| Phase 1 | The fictional company, its rules, the vendors' planted problems, and the locked answer key | 8 of 8 ✓PASS |
| Phase 2 | Onboarding: intake, follow-up drafts, approval packets, the checker, the audit log | 8 of 8 ✓PASS |
| Phase 3a | Buying: all seven steps against their locked answer key, the procurement log, the checker | 14 of 14 ✓PASS |
| Phase 3c | Controls from the real packet against their locked answer key (its check of the older phases runs separately) | 11 of 11 ✓PASS |
| Phase 3d | Real-world exceptions (a change during sign-off, a shipping credit) against their locked answer key (its check of the older phases runs separately) | 12 of 12 ✓PASS |
Phase 1: every line it printed (0.2 s)
PASS - C1 outside the vault, no CLAUDE.md above it - root <demo folder>; inside vault False (vault path from the private file); CLAUDE.md in parents []
PASS - C2 CLAUDE.md states every rule and matches rules.json - 34 of 34 found; missing []
PASS - C3 8 vendors, each with its record and exactly the key's documents - 8 folders, 8 records, 8 of 8 document sets match
PASS - C4 recomputed from the documents = answer key - 8 of 8 match; mismatches {}
PASS - C4b the key covers every planted problem + a clean small and a clean large job - 6 of 6 problem types; clean small ['kestrelbay-air-heat']; clean large ['skyquay-lift-fire']
PASS - C5 answer key unchanged since it was locked - lock 973099662faf..., now 973099662faf...
PASS - C6 no personal words; every ID is visibly fake - 222 files scanned for 11 words: 0 hits []; 21 IDs, 0 not marked fake
PASS - C7 README maps each piece (industry term + resume line) - 48 filled 5-column rows in the mapping table (want 8+): ['`CLAUDE.md`', '`company/rules.json`', '`company/people.md`', '`vendors/<name>/`', '`tools/make_vendors.py`', '`tests/answer-key.json` + `LOCK.txt`', '`tests/check_phase1.py`', '`--selftest`', '`audit/audit-log.csv` + `audit-log.chain.txt`', '`/intake` skill', '`/chase` skill', '`/route` skill', '`/status` skill', '`.claude/agents/compliance-checker.md`', '`tests/checker-copies/` + `reviews/`', '`tools/onboard.py`', '`tests/check_phase2.py`', '`projects/unit-4b/`', '`tools/make_project.py`', '`tools/project.py`', '`tests/check_phase3a.py`', '`audit/procurement-log.csv`', '`/scope` skill', '`/source` skill', '`/quote` skill', '`/approve` skill', '`/change` skill', '`/deliver` skill', '`/match` skill', '`dashboard/build.py` + `dashboard/index.html`', '`docs/diagram.png` + `docs/diagram.pdf`', '`docs/video-script.md`', '`docs/explainer.md` + `docs/explainer.pdf`', '`tools/render.py`', '`tests/check_phase3b.py`', '`tools/make_controls.py`', '`tools/controls.py`', '`tests/check_phase3c.py`', '`audit/controls-log.csv`', '`company/exclusion-list.md`', '`/screen` skill', '`/request` skill', '`/closeout` skill', '`tools/exceptions.py`', '`tests/check_phase3d.py`', '`audit/exceptions-log.csv`', '`/revise` skill', '`/credit` skill']Phase 2: every line it printed (4.3 s)
PASS - P1 /intake results = locked answer key (issues, status, approvers) + Stage filled - 8 of 8 intake.json match; 8 of 8 Stage lines start with the status; mismatches {}
PASS - P1b /status prints one correct line per vendor - exit 0; 8 lines; 8 of 8 right (stage, status, blocker, days waiting); problems {}
PASS - P2 /chase: 1 good draft per BLOCKED/HOLD vendor, 0 sends - 6 of 6 drafts pass (vendor, item, why, deadline 2026-11-12, how to send, .example contact, no threats, no unsupported facts); 0 drafts for READY vendors []; sends 0 (audit rows marked sent 0, network imports []); problems {}
PASS - P3 /route: packet for each READY vendor, approvers in order, sign-offs blank - 2 of 2 packets pass; packets for vendors not READY []; approvers {'kestrelbay-air-heat': ['Facilities Manager'], 'skyquay-lift-fire': ['Facilities Manager', 'Procurement Lead', 'Legal', 'Finance']}; problems {}
PASS - P4 read-only compliance-checker reviewed everything and caught both plants - agent tools ['Glob', 'Grep', 'Read']; latest review reviews/2026-11-05-02-all-vendors.md: 18 files, 18 unchanged since review; 16 of 16 real files marked OK by the checker; planted wrong deadline caught True; planted missed name mismatch caught True; problems []
PASS - P5 audit log: 1 row per action, append-only (hash chain) - 18 rows; 18 actions taken (8 intake + 6 chase drafts + 2 route packets + 2 checker reviews); chain 18 of 18 rows verify; problems []
PASS - P6 Phase 1 still 8 of 8; 0 personal words; 0 web addresses but .example - Phase 1: RESULT: 8 of 8 checks PASS, 4 of 4 self-test breaks caught, exit 0; 222 files scanned for 11 words: 0 hits []; non-.example addresses 0 []
PASS - P7 README status + mapping cover the Phase 2 pieces, no overclaims - 7 of 7 new pieces mapped (term + resume line) []; resume lines not 'designed/directed' []; overclaims []; 48 mapping rows; problems []Phase 3a: every line it printed (4.6 s)
PASS - Q0 answer key unchanged since it was locked - lock 6af3d376441e..., now 6af3d376441e...
PASS - Q0b recomputed from the inputs = answer key (the data really has the planted problems) - 7 activities recomputed; differ from key []; PO total recomputed 4898 vs stated 4898; error none
PASS - Q1 /scope: brief = key; every request field in brief.md; nothing invented - projects/unit-4b/out/brief.json: = key; 16 of 16 request fields in brief.md; invented measurement False
PASS - Q2 /source: late items and the in-time alternative = key - projects/unit-4b/out/source.json: = key
PASS - Q3 /quote: comparison = key; purchase request is a draft for a person - projects/unit-4b/out/quotes.json: = key; draft has DRAFT / not an order / $4,898 / approver / blank sign-off: True
PASS - Q4 /approve: verdicts = key; unclear items go to a person; 0 clean items failed - projects/unit-4b/out/approval.json: = key; unclear passed []; clean failed []
PASS - Q5 /change: change request = key; baseline unchanged; no approval taken by the AI - projects/unit-4b/out/change-request-CR-001.json: = key; baseline hash = lock True; approval rows 0; request says awaiting approval True
PASS - Q6 /deliver: exceptions = key; tasks have an owner and a date; update drafted, 0 sent - projects/unit-4b/out/deliveries.json: = key; 2 task rows ok True; 1 draft(s) marked not sent True; sent rows 0
PASS - Q7 /match: three-way match = key; 0 invoices marked paid by the AI - projects/unit-4b/out/match.json: = key; payment status {'INV-GW-5521.md': 'unpaid', 'INV-KC-3307.md': 'unpaid'}; paid rows 0
PASS - Q8 procurement log: 1 row per action, right actors, hash chain verifies - 9 rows; actions {'scope_brief': 1, 'source_check': 1, 'quote_compare': 1, 'product_approval': 1, 'change_request': 1, 'delivery_exceptions': 1, 'invoice_match': 1, 'checker_review': 2}; missing []; repeated []; network imports []; problems []
PASS - Q9 7 skills with front matter; CLAUDE.md section 10 states every Phase 3a rule - 7 of 7 skills ok []; 28 of 28 rules found; missing []
PASS - Q10 Phases 1 and 2 still pass (Phase 2's P6 reruns Phase 1 + its privacy scan) - check_phase2: RESULT: 8 of 8 checks PASS, exit 0
PASS - Q11 blind checker review caught the planted miss and passed the real outputs - latest review 2026-11-05-02-unit-4b.md; planted KC-as-MATCH caught True; 7 of 7 real outputs OK; stale []; problems []
PASS - Q12 README: Phase 3a status, every new piece mapped, partner label, no overclaims - 12 of 12 pieces mapped; status row True; label True; overclaims []Phase 3c: every line it printed (0.1 s)
PASS - R0 answer key and frozen-record list unchanged since locked - key 87cfc76396f4 vs lock 87cfc76396f4; frozen list eb44aab504ef vs lock eb44aab504ef (94 records); older keys still match their locks: True
PASS - R0b the check's own recount from the raw inputs equals the hand-written key - 0 differences []
PASS - R1 /screen: 8 vendors + 3 suppliers = key; 0 Phase 1-3a records changed - 8 vendors + 3 suppliers compared, problems []; frozen records 94, changed 0 []
PASS - R2 /request = key: type, funding, per-line competition, justifications, blank certification - 3 lines flagged; problems []
PASS - R3 /closeout = key: running totals, open items, the false claim refused, certificate unsigned - 5 open lines; 1 draft replies; problems []
PASS - R4 controls log: 1 row per action, right actors, chain verifies, 0 people-only actions - 4 rows; actions {'screen': 1, 'approval_request': 1, 'closeout': 1, 'checker_review': 1}; not exactly once []; people-only results 0; problems []
PASS - R5 3 skills with front matter; CLAUDE.md section 11 states every Phase 3c rule - 3 of 3 skills ok []; 24 of 24 rules found; missing []
PASS - R6 Phases 1, 2, 3a, 3b still pass (skipped by --skip-old-phases in self-test copies) - skipped
PASS - R7 blind review: planted error caught, real outputs PASS, nothing changed since - 1 reviews; latest 2026-11-06-01-controls.md; problems []
PASS - R8 README: 3c built, every new piece mapped with a 'Designed and directed' line - 3c row: '| 3c | Controls copied from a real public-agency procurement packet: c'; 8 of 8 pieces mapped; missing []
PASS - R9 every new input file is marked fake - 11 files; unmarked []Phase 3d: every line it printed (0.1 s)
PASS - D0 answer key and frozen-record list unchanged since locked - key 9f2beb763128 vs lock 9f2beb763128; frozen list a9aedeb40b20 vs lock a9aedeb40b20 (154 records); older keys match: True
PASS - D0b the check's own recount from the raw records equals the hand-written key - 0 differences []
PASS - D1 /revise = key: version 2 with the change word for word, earlier signers sign again, route restarts, sign-offs blank - 0 key differences; problems []
PASS - D2 /credit = key: one polite draft per supplier with the order, item, dates, freight, and ask; not sent - 1 drafts; problems []; harsh words []
PASS - D3 exceptions log: 1 row per action, right actors, chain verifies, 0 people-only results - 3 rows; actions {'packet_revision': 1, 'freight_credit': 1, 'checker_review': 1}; not exactly once []; people-only results 0; problems []
PASS - D4 0 earlier records changed; the only new record files are the expected outputs - 154 frozen, changed 0 []; new 6, unexpected [], expected but missing []
PASS - D5 2 skills with front matter; CLAUDE.md section 12 states every Phase 3d rule - 2 of 2 skills ok []; 13 of 13 rules found; missing []
PASS - D6 the dashboard shows both: waiting rows, quotes from the new records, the replay - 21 waiting rows; 3 exceptions events in the replay; problems []
PASS - D7 Phases 1, 2, 3a, 3b, 3c and the org-chart check still pass (skipped by --skip-old-phases) - skipped
PASS - D8 blind review: planted error caught, real outputs PASS, nothing changed since - 1 reviews; latest 2026-11-08-01-exceptions.md; problems []
PASS - D9 README: 3d built, every new piece mapped with a 'Designed and directed' line - 3d row: '| 3d | Real-world exceptions a firm will ask about: a signer asks for '; 5 of 5 pieces mapped; missing []
PASS - D10 every new input file is marked as a made-up sample - 1 files; unmarked []Run them yourself (self-tests take longer)
python -I -X utf8 tests/check_phase1.py python -I -X utf8 tests/check_phase1.py --selftest python -I -X utf8 tests/check_phase2.py python -I -X utf8 tests/check_phase2.py --selftest python -I -X utf8 tests/check_phase3a.py python -I -X utf8 tests/check_phase3a.py --selftest python -I -X utf8 tests/check_phase3c.py python -I -X utf8 tests/check_phase3c.py --selftest python -I -X utf8 tests/check_phase3d.py python -I -X utf8 tests/check_phase3d.py --selftest
The checker: a second AI, set up to only read
It reviews the first AI's work blind, against the rules. Its definition gives it read and search tools only. In the Phase 1-3a reviews that limit was an instruction, not enforced; the Phase 3c review ran as a separate agent with no write tools. Each review records how it ran. The first buying review also found one real gap: a rule's wording didn't cover a substitute's order date (the answers were right); the rule was clarified and the second review ran on the same files. Each review mixed in a copy with a planted mistake to prove it was really reading. Reviews logged: 6.
| When | Subject | What it reviewed | Result |
|---|---|---|---|
| 2026-11-05 11:30:11 | saltmarsh-roofing | reviews/2026-11-05-01-saltmarsh.md; 3 files reviewed; 2 OK; 1 findings (1 on planted copies, 0 on real files); recorded by onboarding-assistant | no findings on real files |
| 2026-11-05 11:33:37 | all | reviews/2026-11-05-02-all-vendors.md; 18 files reviewed; 16 OK; 3 findings (3 on planted copies, 0 on real files); recorded by onboarding-assistant | no findings on real files |
| 2026-11-05 22:37:33 | unit-4b | reviews/procurement/2026-11-05-01-unit-4b.md; 6 OK, 3 findings; recorded by procurement-assistant | 3 findings |
| 2026-11-05 22:39:00 | unit-4b | reviews/procurement/2026-11-05-02-unit-4b.md; 7 OK, 2 findings; recorded by procurement-assistant | 2 findings |
| 2026-11-06 10:23:33 | unit-4b + vendors | reviews/controls/2026-11-06-01-controls.md; recorded by procurement-assistant | overall PASS |
| 2026-11-08 17:39:25 | skyquay-lift-fire + unit-4b | reviews/exceptions/2026-11-08-01-exceptions.md; recorded by onboarding-assistant | overall PASS |
Guardrails, counted
| Log rows where the AI sent, signed, approved, ordered, or paid | 0 |
| Drafts written and marked not sent (a person sends) | 9 |
| Packet sign-off lines left blank for a person | 9 |
| Approval lines left blank on the purchase request and change request | 2 |
Replay the run
The page rebuilds the board from the audit log, one row at a time. Press play, or drag. The log is append-only by rule and hash-chained: editing any past row breaks every link after it.
Vendors
Buying steps, controls, and exceptions
Hash chains
| Onboarding log | 18 rows | 18 links verify |
| Procurement log | 9 rows | 9 links verify |
| Controls log | 4 rows | 4 links verify |
| Exceptions log | 3 rows | 3 links verify |
✓All four chains verify
Every row
| Time | Actor | Subject | Action | Result | Detail |
|---|---|---|---|---|---|
| 2026-11-05T11:28:45 | onboarding-assistant | saltmarsh-roofing | intake | BLOCKED | vendors/saltmarsh-roofing/intake.json; status BLOCKED; issues COI_EXPIRED; approvers Facilities Manager > Procurement Lead |
| 2026-11-05T11:28:58 | onboarding-assistant | saltmarsh-roofing | chase_draft | drafted, not sent | vendors/saltmarsh-roofing/drafts/2026-11-05-follow-up.md; to office@saltmarsh-roofing.example; items COI_EXPIRED; deadline 2026-11-12; reviewer and sender Dana Reyes |
| 2026-11-05T11:30:11 | compliance-checker | saltmarsh-roofing | checker_review | no findings on real files | reviews/2026-11-05-01-saltmarsh.md; 3 files reviewed; 2 OK; 1 findings (1 on planted copies, 0 on real files); recorded by onboarding-assistant |
| 2026-11-05T11:30:22 | onboarding-assistant | kestrelbay-air-heat | intake | READY | vendors/kestrelbay-air-heat/intake.json; status READY; issues none; approvers Facilities Manager |
| 2026-11-05T11:30:22 | onboarding-assistant | brightcurrent-electric | intake | BLOCKED | vendors/brightcurrent-electric/intake.json; status BLOCKED; issues GL_BELOW_MIN; approvers Facilities Manager > Procurement Lead |
| 2026-11-05T11:30:22 | onboarding-assistant | fernhollow-grounds | intake | BLOCKED | vendors/fernhollow-grounds/intake.json; status BLOCKED; issues MISSING_W9; approvers Facilities Manager > Procurement Lead |
| 2026-11-05T11:30:22 | onboarding-assistant | clearsail-janitorial | intake | BLOCKED | vendors/clearsail-janitorial/intake.json; status BLOCKED; issues NO_ADDITIONAL_INSURED; approvers Facilities Manager |
| 2026-11-05T11:30:22 | onboarding-assistant | bayvane-plumbing | intake | HOLD | vendors/bayvane-plumbing/intake.json; status HOLD; issues LICENSE_EXPIRING_30D; approvers Facilities Manager > Procurement Lead |
| 2026-11-05T11:30:22 | onboarding-assistant | gulfpine-pest | intake | BLOCKED | vendors/gulfpine-pest/intake.json; status BLOCKED; issues NAME_MISMATCH; approvers Facilities Manager |
| 2026-11-05T11:30:22 | onboarding-assistant | skyquay-lift-fire | intake | READY | vendors/skyquay-lift-fire/intake.json; status READY; issues none; approvers Facilities Manager > Procurement Lead > Legal > Finance |
| 2026-11-05T11:31:16 | onboarding-assistant | brightcurrent-electric | chase_draft | drafted, not sent | vendors/brightcurrent-electric/drafts/2026-11-05-follow-up.md; to office@brightcurrent-electric.example; items GL_BELOW_MIN; deadline 2026-11-12; reviewer and sender Dana Reyes |
| 2026-11-05T11:31:16 | onboarding-assistant | fernhollow-grounds | chase_draft | drafted, not sent | vendors/fernhollow-grounds/drafts/2026-11-05-follow-up.md; to office@fernhollow-grounds.example; items MISSING_W9; deadline 2026-11-12; reviewer and sender Dana Reyes |
| 2026-11-05T11:31:16 | onboarding-assistant | clearsail-janitorial | chase_draft | drafted, not sent | vendors/clearsail-janitorial/drafts/2026-11-05-follow-up.md; to office@clearsail-janitorial.example; items NO_ADDITIONAL_INSURED; deadline 2026-11-12; reviewer and sender Dana Reyes |
| 2026-11-05T11:31:16 | onboarding-assistant | bayvane-plumbing | chase_draft | drafted, not sent | vendors/bayvane-plumbing/drafts/2026-11-05-follow-up.md; to office@bayvane-plumbing.example; items LICENSE_EXPIRING_30D; deadline 2026-11-12; reviewer and sender Dana Reyes |
| 2026-11-05T11:31:16 | onboarding-assistant | gulfpine-pest | chase_draft | drafted, not sent | vendors/gulfpine-pest/drafts/2026-11-05-follow-up.md; to office@gulfpine-pest.example; items NAME_MISMATCH; deadline 2026-11-12; reviewer and sender Dana Reyes |
| 2026-11-05T11:31:17 | onboarding-assistant | kestrelbay-air-heat | route_packet | packet built, awaiting sign-off | vendors/kestrelbay-air-heat/packet.md; 1 approver: Facilities Manager; amount $8,500 |
| 2026-11-05T11:31:17 | onboarding-assistant | skyquay-lift-fire | route_packet | packet built, awaiting sign-off | vendors/skyquay-lift-fire/packet.md; 4 approvers: Facilities Manager > Procurement Lead > Legal > Finance; amount $120,000 |
| 2026-11-05T11:33:37 | compliance-checker | all | checker_review | no findings on real files | reviews/2026-11-05-02-all-vendors.md; 18 files reviewed; 16 OK; 3 findings (3 on planted copies, 0 on real files); recorded by onboarding-assistant |
| 2026-11-05T22:35:49 | procurement-assistant | unit-4b | scope_brief | NEEDS_INFO | projects/unit-4b/out/brief.json; projects/unit-4b/out/brief.md; codes MISSING_MEASUREMENT,SCOPE_CONFLICT; missing Bedroom wall B |
| 2026-11-05T22:35:50 | procurement-assistant | unit-4b | source_check | 1 late | projects/unit-4b/out/source.json; projects/unit-4b/out/source.md; 8 items; late GW-SOF-210 |
| 2026-11-05T22:35:50 | procurement-assistant | unit-4b | quote_compare | draft for review, not ordered | projects/unit-4b/out/quotes.json; projects/unit-4b/out/quotes.md; projects/unit-4b/out/purchase-request-draft.md; total $4,898; approvers Facilities Manager |
| 2026-11-05T22:35:50 | procurement-assistant | unit-4b | product_approval | 2 fail, 1 to a person | projects/unit-4b/out/approval.json; projects/unit-4b/out/approval.md; pass 5, fail 2, to a person 1 |
| 2026-11-05T22:35:50 | procurement-assistant | unit-4b | change_request | awaiting approval | projects/unit-4b/out/change-request-CR-001.json; projects/unit-4b/out/change-request-CR-001.md; MH-SOF-118 -> GW-SOF-205; +$410; total $5,308 vs budget $5,200; baseline unchanged |
| 2026-11-05T22:35:50 | procurement-assistant | unit-4b | delivery_exceptions | 2 tasks; update drafted, not sent | projects/unit-4b/out/deliveries.json; projects/unit-4b/out/tasks.md; projects/unit-4b/out/drafts/update-2026-11-12.md; exceptions GW-BED-Q DELIVERY_LATE, MH-DR-60 ADDRESS_MISMATCH |
| 2026-11-05T22:35:50 | procurement-assistant | unit-4b | invoice_match | flagged for Finance; payment status untouched | projects/unit-4b/out/match.json; projects/unit-4b/out/match.md; INV-GW-5521 MATCH; INV-KC-3307 HOLD PRICE_MISMATCH,QTY_MISMATCH |
| 2026-11-05T22:37:33 | compliance-checker | unit-4b | checker_review | 3 findings | reviews/procurement/2026-11-05-01-unit-4b.md; 6 OK, 3 findings; recorded by procurement-assistant |
| 2026-11-05T22:39:00 | compliance-checker | unit-4b | checker_review | 2 findings | reviews/procurement/2026-11-05-02-unit-4b.md; 7 OK, 2 findings; recorded by procurement-assistant |
| 2026-11-06T10:19:04 | onboarding-assistant | all | screen | 6 CLEAR, 1 REVIEW, 1 EXCLUDED | vendors/*/screen.json; controls/supplier-screen.json; controls/screen.md; 8 contractors, 3 suppliers; gulfpine-pest EXCLUDED EXCLUDED; kestrelbay-air-heat REVIEW CONFLICT_DISCLOSED |
| 2026-11-06T10:19:04 | procurement-assistant | unit-4b | approval_request | NEEDS_JUSTIFICATION; certification blank | projects/unit-4b/controls/approval-request.json; projects/unit-4b/controls/approval-request.md; Standard purchase $4,898; budget line FAC-TURN-2026, left $302; flags MH-SOF-118 LOWEST_NOT_SELECTED, GW-BED-Q SINGLE_SOURCE, MH-DR-60 SINGLE_SOURCE |
| 2026-11-06T10:19:04 | procurement-assistant | unit-4b | closeout | NOT_READY; certificate unsigned; reply drafted, not sent | projects/unit-4b/controls/contract-summary.json; projects/unit-4b/controls/contract-summary.md; projects/unit-4b/controls/completion-certificate.md; projects/unit-4b/controls/drafts/reply-gulfweave-2026-11-12.md; invoiced $1,407 of $4,898, remaining $3,491; Gulfweave Furnishings CLAIM_CONTRADICTED GW-BED-Q,GW-CT-48 |
| 2026-11-06T10:23:33 | compliance-checker | unit-4b + vendors | checker_review | overall PASS | reviews/controls/2026-11-06-01-controls.md; recorded by procurement-assistant |
| 2026-11-08T17:24:04 | onboarding-assistant | skyquay-lift-fire | packet_revision | RESTART; version 2 built, 4 sign-offs blank, not sent | vendors/skyquay-lift-fire/revision.json; vendors/skyquay-lift-fire/packet-v2.md; version 1 -> 2: contract terms change asked by Legal on 2026-11-10; 2 earlier signatures don't carry over; route restarts with Facilities Manager |
| 2026-11-08T17:24:04 | procurement-assistant | unit-4b | freight_credit | DRAFTED; 1 credit request drafted, not sent | projects/unit-4b/exceptions/freight-credit.json; GW-BED-Q ETA 2026-11-25, 7 days past promised 2026-11-18; Gulfweave Furnishings freight $185, ask 50% = $92.50; draft projects/unit-4b/exceptions/credit-request-gulfweave-2026-11-12.md |
| 2026-11-08T17:39:25 | compliance-checker | skyquay-lift-fire + unit-4b | checker_review | overall PASS | reviews/exceptions/2026-11-08-01-exceptions.md; recorded by onboarding-assistant |
An AI operations system for a property company
From a new contractor's paperwork to a matched furniture invoice. The AI reads, checks, drafts, and builds. People approve, send, sign, and pay.