From 612745bc661c9eecb1981d8efde45d5e8cbe7047 Mon Sep 17 00:00:00 2001 From: Bendik Aagaard Lynghaug Date: Mon, 21 Sep 2026 19:35:47 +0200 Subject: [PATCH] runs: simulating the generated contractor site, with what held up and what did not Co-Authored-By: Claude Fable 5.1 Claude-Session: https://claude.ai/code/session_01L4jrCgLiKKHAEFuZUJjckH --- .../simulation/README.md | 44 ++ .../simulation/a-open-quoted/cases.jsonl | 30 + .../simulation/a-open-quoted/model.json | 706 +++++++++++++++++ .../simulation/a-open-quoted/score.json | 409 ++++++++++ .../simulation/b-with-surveyed/cases.jsonl | 30 + .../simulation/b-with-surveyed/model.json | 720 ++++++++++++++++++ .../simulation/b-with-surveyed/score.json | 465 +++++++++++ .../score-after-prompt-change.json | 93 +++ .../score-before-prompt-change.json | 98 +++ 9 files changed, 2595 insertions(+) create mode 100644 runs/contractor-2026-09-21/simulation/README.md create mode 100644 runs/contractor-2026-09-21/simulation/a-open-quoted/cases.jsonl create mode 100644 runs/contractor-2026-09-21/simulation/a-open-quoted/model.json create mode 100644 runs/contractor-2026-09-21/simulation/a-open-quoted/score.json create mode 100644 runs/contractor-2026-09-21/simulation/b-with-surveyed/cases.jsonl create mode 100644 runs/contractor-2026-09-21/simulation/b-with-surveyed/model.json create mode 100644 runs/contractor-2026-09-21/simulation/b-with-surveyed/score.json create mode 100644 runs/contractor-2026-09-21/simulation/first-design-qwen3-8b/score-after-prompt-change.json create mode 100644 runs/contractor-2026-09-21/simulation/first-design-qwen3-8b/score-before-prompt-change.json diff --git a/runs/contractor-2026-09-21/simulation/README.md b/runs/contractor-2026-09-21/simulation/README.md new file mode 100644 index 0000000..96495b7 --- /dev/null +++ b/runs/contractor-2026-09-21/simulation/README.md @@ -0,0 +1,44 @@ +# Simulating the generated contractor site, 2026-09-21 + +Ten personas, three runs each, on ergo. Version A is the site as +generated (`enquiries: open -> quoted`). Version B adds the stage the +owner described and the generator dropped (`open -> surveyed -> quoted`). + +## What held up + +- **The simulation found a defect the verifier could not.** Reading + the first run's records next to the intake showed the generated + machine had skipped "we go and look at the building". That became + the `stages` field in needs.yaml, which the lint now enforces, so + the same omission fails deterministically from here on. +- **Routing and form-filling are stable.** 0 misroutes and 0 abandoned + forms in 60 cases, once choices were matched by heading (the first + run's "100% misrouted" was the model answering "Heading: description"). +- **One recurring question is a real gap.** Handlers asked about + arranging a site visit seven times. The enquiry forms collect an + email address and nothing about access or when someone can come, + for a business whose first step is a visit. + +## What did not + +- **Letting a model decide outcomes is worthless.** In the first + design qwen3:8b sent every case to its success state; after one + sentence telling it that losing is normal, every enquiry was "lost" + in one touch (`first-design-qwen3-8b/`). Routes are now scripted and + who wins is left to the live bucket. +- **The ask-back rate does not discriminate yet.** With + nemotron-3.5-lightning:30b-a3b as handler, nearly every button drew + a question (4 of 4), including nonsense (a title deed; an email + address the form already requires). A measure stuck at its maximum + cannot rank version A against version B: the A -> B rise in + ask-backs per case (1.7 -> 2.3) is just B having one more button. + +## What it needs before its numbers mean anything + +A control for the instrument: run the handler on a record that is +deliberately complete and on one deliberately stripped. A usable judge +asks on the stripped record and stays quiet on the complete one. Until +a prompt and model pass that, read the questions, not the rates. + +Speed: nemotron on both sides took about nine minutes per 30 cases; +qwen3:8b about two. diff --git a/runs/contractor-2026-09-21/simulation/a-open-quoted/cases.jsonl b/runs/contractor-2026-09-21/simulation/a-open-quoted/cases.jsonl new file mode 100644 index 0000000..324d082 --- /dev/null +++ b/runs/contractor-2026-09-21/simulation/a-open-quoted/cases.jsonl @@ -0,0 +1,30 @@ +{"persona":"housing-board-cracks","need":"survey-enquiry","run":0,"target":"won","record":{"address":"1200 Maple Avenue, Unit 4B, Springfield","email":"alex.ramirez@email.com","follow_up_1":{"answered":"This is the first time a quote is being requested.","asked":"Has Nordvik Bygg already provided a formal quote for this specific issue, or is this the first time a quote is being requested?"},"follow_up_2":{"answered":"This is the first time a quote is being requested.","asked":"Has Nordvik Bygg already provided a formal quote for this specific issue, or is this the first time a quote is being requested?"},"name":"Alex Ramirez","problem":"There are cracks running up the outside wall of our building. None of us know if it's serious. We just want someone qualified to come look at it and tell us what we're dealing with."},"states":["open","quoted","won"],"pressed":["open -> Quote sent","quoted -> Won"],"touches":4,"ask_backs":[{"state":"open","button":"Quote sent","question":"Has Nordvik Bygg already provided a formal quote for this specific issue, or is this the first time a quote is being requested?","answerable":false},{"state":"quoted","button":"Won","question":"Has Nordvik Bygg already provided a formal quote for this specific issue, or is this the first time a quote is being requested?","answerable":false}],"outcome":{"outcome":"finished","detail":"won"}} +{"persona":"housing-board-cracks","need":"survey-enquiry","run":1,"target":"lost","record":{"address":"Our building, but I don't know the exact address","follow_up_1":{"answered":"I don't have it.","asked":"What is the exact address of the building?"},"name":"Anon","problem":"Cracks running up the outside wall. Don't know if serious."},"states":["open","lost"],"pressed":["open -> Not for us"],"touches":2,"ask_backs":[{"state":"open","button":"Not for us","question":"What is the exact address of the building?","answerable":false}],"outcome":{"outcome":"finished","detail":"lost"}} +{"persona":"housing-board-cracks","need":"survey-enquiry","run":2,"target":"won","record":{"address":"12 Maple Avenue, Apt 3B, Springfield","email":"mia.torres@email.com","follow_up_1":{"answered":"No, I haven't received a quote or price estimate from Nordvik Bygg yet. I'm just hoping someone can come take a look and tell us what's going on first.","asked":"Have you already received a quote or price estimate from Nordvik Bygg for this assessment?"},"follow_up_2":{"answered":"No, we've never had a Nordvik Bygg rep visit. We've been trying to get someone out here to look at the cracks for months.","asked":"Has a Nordvik Bygg representative already visited the site and provided a written assessment and cost estimate?"},"name":"Mia Torres","problem":"There are significant cracks running up the exterior wall of our building. The masonry appears to be deteriorating, and we are unsure if this indicates structural failure or something less serious. We need a qualified professional to assess the cause and provide a report on the severity and necessary repairs."},"states":["open","quoted","won"],"pressed":["open -> Quote sent","quoted -> Won"],"touches":4,"ask_backs":[{"state":"open","button":"Quote sent","question":"Have you already received a quote or price estimate from Nordvik Bygg for this assessment?","answerable":false},{"state":"quoted","button":"Won","question":"Has a Nordvik Bygg representative already visited the site and provided a written assessment and cost estimate?","answerable":true}],"outcome":{"outcome":"finished","detail":"won"}} +{"persona":"homeowner-leaking-roof","need":"survey-enquiry","run":0,"target":"won","record":{"address":"1234 Pine Street, Apartment 5B, Atlanta, GA 30309","email":"spike@southernliving.com","follow_up_1":{"answered":"No, this is the first time anyone has inspected it.","asked":"Has Nordvik Bygg already inspected this property before, or is this the first time?"},"follow_up_2":{"answered":"No, this is the first time anyone has been called out to look at it.","asked":"Can you please confirm if Nordvik Bygg has already inspected this property before, or is this the first time?"},"name":"Water's coming through the ceiling every time it rains. I don't know if it's the roof or something else, I just want someone to come out and have a look before it gets worse.","problem":"Water is leaking through the ceiling every time it rains. I'm not sure if it's the roof or something else. Need someone to inspect it before the damage gets worse."},"states":["open","quoted","won"],"pressed":["open -> Quote sent","quoted -> Won"],"touches":4,"ask_backs":[{"state":"open","button":"Quote sent","question":"Has Nordvik Bygg already inspected this property before, or is this the first time?","answerable":false},{"state":"quoted","button":"Won","question":"Can you please confirm if Nordvik Bygg has already inspected this property before, or is this the first time?","answerable":false}],"outcome":{"outcome":"finished","detail":"won"}} +{"persona":"homeowner-leaking-roof","need":"survey-enquiry","run":1,"target":"lost","record":{"address":"Unknown address","email":"unknown@domain.com","follow_up_1":{"answered":"I don't have that info.","asked":"What is the address of the building?"},"name":"Water's coming through the ceiling every time it rains. I don't know if it's the roof or something else, I just want someone to come out and have a look before it gets worse.","problem":"Water leaking through ceiling during rain. Need inspection to determine if roof or other issue."},"states":["open","lost"],"pressed":["open -> Not for us"],"touches":2,"ask_backs":[{"state":"open","button":"Not for us","question":"What is the address of the building?","answerable":false}],"outcome":{"outcome":"finished","detail":"lost"}} +{"persona":"homeowner-leaking-roof","need":"survey-enquiry","run":2,"target":"won","record":{"address":"37 Orchard Lane, Apartment 4B, Southhill","email":"not_sharing@protonmail.com","follow_up_1":{"answered":"The building is occupied. I live here, so there's always someone around when the rain starts.","asked":"Is the building currently occupied or vacant?"},"follow_up_2":{"answered":"I don't know. I'm not there all the time, and the landlord never told me. I just know the water comes down whenever it rains, and I'm tired of buckets.","asked":"Is the building currently occupied or vacant?"},"name":"Water's coming through the ceiling every time it rains. I don't know if it's the roof or something else, I just want someone to come out and have a look before it gets worse.","problem":"Water's coming through the ceiling every time it rains. I don't know if it's the roof or something else, I just want someone to come out and have a look before it gets worse."},"states":["open","quoted","won"],"pressed":["open -> Quote sent","quoted -> Won"],"touches":4,"ask_backs":[{"state":"open","button":"Quote sent","question":"Is the building currently occupied or vacant?","answerable":true},{"state":"quoted","button":"Won","question":"Is the building currently occupied or vacant?","answerable":false}],"outcome":{"outcome":"finished","detail":"won"}} +{"persona":"homeowner-extension","need":"build-price-enquiry","run":0,"target":"won","record":{"address":"42 Maple Street, Unit 3B, Portland, OR 97201","email":"sarah.chen@email.com","follow_up_1":{"answered":"I don't know if a site visit has been performed, but it's a necessary step to verify existing conditions and structural feasibility before drawing up plans.","asked":"Has a site visit been performed to verify the existing conditions and structural feasibility of the proposed addition?"},"follow_up_2":{"answered":"We require a site visit to verify existing conditions and structural feasibility before any design or cost estimation can proceed.","asked":"Has a site visit been performed to verify the existing conditions and structural feasibility of the proposed addition?"},"name":"Sarah Chen","project":"Addition of a 24' x 16' room above the existing garage. Two-story design with dormer windows. Open floor plan living area with master suite. Budget range: $250,000 - $350,000. Current garage to be converted to workshop/storage.","timeframe":"Within a year"},"states":["open","quoted","won"],"pressed":["open -> Quote sent","quoted -> Won"],"touches":4,"ask_backs":[{"state":"open","button":"Quote sent","question":"Has a site visit been performed to verify the existing conditions and structural feasibility of the proposed addition?","answerable":false},{"state":"quoted","button":"Won","question":"Has a site visit been performed to verify the existing conditions and structural feasibility of the proposed addition?","answerable":false}],"outcome":{"outcome":"finished","detail":"won"}} +{"persona":"homeowner-extension","need":"build-price-enquiry","run":1,"target":"lost","record":{"address":"123 Maple St, Anytown","email":"quickquote@example.com","follow_up_1":{"answered":"Yes, we still want to do it.","asked":"Is this project still a possibility, or have you already decided not to proceed?"},"name":"Quick Quote Bot","project":"Room addition above garage","timeframe":"Just exploring"},"states":["open","lost"],"pressed":["open -> Not for us"],"touches":2,"ask_backs":[{"state":"open","button":"Not for us","question":"Is this project still a possibility, or have you already decided not to proceed?","answerable":true}],"outcome":{"outcome":"finished","detail":"lost"}} +{"persona":"homeowner-extension","need":"build-price-enquiry","run":2,"target":"won","record":{"address":"123 Maple Street, Anytown, State, 12345","email":"jane.smith@email.com","follow_up_1":{"answered":"No, I'm a new client inquiry and haven't received any quote from you yet.","asked":"Can you confirm that the quote has been prepared and sent to Jane Smith?"},"follow_up_2":{"answered":"I don't know. I haven't prepared or sent a quote to Jane Smith, and I have no idea who she is.","asked":"Can you confirm that the quote has been prepared and sent to Jane Smith?"},"name":"Jane Smith","project":"Addition of a 20'x24' room above existing single-car garage. Client has conceptual sketches but requires full architectural drawings, municipal permit set, and cost estimation for structural and MEP integration.","timeframe":"Within a year"},"states":["open","quoted","won"],"pressed":["open -> Quote sent","quoted -> Won"],"touches":4,"ask_backs":[{"state":"open","button":"Quote sent","question":"Can you confirm that the quote has been prepared and sent to Jane Smith?","answerable":false},{"state":"quoted","button":"Won","question":"Can you confirm that the quote has been prepared and sent to Jane Smith?","answerable":true}],"outcome":{"outcome":"finished","detail":"won"}} +{"persona":"owner-basement-conversion","need":"build-price-enquiry","run":0,"target":"won","record":{"address":"123 Maple Street, Apt 4B, Cityville, CA 90210","email":"info@basementflat.arch","follow_up_1":{"answered":"No, I haven't visited the site yet. I'll need to see the space in person before I can give you accurate drawings, permits, or pricing.","asked":"Has a site visit been conducted to verify the current condition of the basement and confirm the proposed layout is feasible?"},"follow_up_2":{"answered":"No site visit has been conducted yet.","asked":"Can you please confirm that a site visit has been conducted to verify the current condition of the basement?"},"name":"I. Architect","project":"Conversion of basement into a residential flat with separate entrance, kitchenette, bathroom, and bedroom. Requires architectural drawings, planning permit application, and detailed cost estimate for client approval prior to commencement.","timeframe":"Within a year"},"states":["open","quoted","won"],"pressed":["open -> Quote sent","quoted -> Won"],"touches":4,"ask_backs":[{"state":"open","button":"Quote sent","question":"Has a site visit been conducted to verify the current condition of the basement and confirm the proposed layout is feasible?","answerable":false},{"state":"quoted","button":"Won","question":"Can you please confirm that a site visit has been conducted to verify the current condition of the basement?","answerable":false}],"outcome":{"outcome":"finished","detail":"won"}} +{"persona":"owner-basement-conversion","need":"build-price-enquiry","run":1,"target":"lost","record":{"address":"123 Basement Lane","email":"me@basement.com","follow_up_1":{"answered":"Still exploring. Let's get the ball rolling.","asked":"Has your project moved forward, or would you still like to explore options?"},"name":"Me","project":"Convert basement into a flat","timeframe":"Just exploring"},"states":["open","lost"],"pressed":["open -> Not for us"],"touches":2,"ask_backs":[{"state":"open","button":"Not for us","question":"Has your project moved forward, or would you still like to explore options?","answerable":true}],"outcome":{"outcome":"finished","detail":"lost"}} +{"persona":"owner-basement-conversion","need":"build-price-enquiry","run":2,"target":"won","record":{"address":"42 Maple Crescent, Basingstoke, RG24 9JX","email":"sarah.jenkins@email.com","follow_up_1":{"answered":"No, I haven't had a site visit yet. I'm waiting to get the project started properly.","asked":"Has a site visit been conducted to verify the existing conditions of the basement and the feasibility of the conversion?"},"follow_up_2":{"answered":"No, I haven't had a site visit yet. The plans I'm working from are based on the original building drawings and a quick look around, but I need someone to actually measure the space, check the ceiling height, and look at the services before I can give you proper drawings or a fixed price.","asked":"Has a site visit been conducted to verify the existing conditions of the basement and the feasibility of the conversion?"},"name":"Sarah Jenkins","project":"Convert existing basement into a one-bedroom flat with kitchenette, bathroom, and living area. Requires full architectural drawings, building regulation approval, and planning permission. Need detailed cost breakdown for structural work, MEP services, and finishes.","timeframe":"Within a year"},"states":["open","quoted","won"],"pressed":["open -> Quote sent","quoted -> Won"],"touches":4,"ask_backs":[{"state":"open","button":"Quote sent","question":"Has a site visit been conducted to verify the existing conditions of the basement and the feasibility of the conversion?","answerable":false},{"state":"quoted","button":"Won","question":"Has a site visit been conducted to verify the existing conditions of the basement and the feasibility of the conversion?","answerable":true}],"outcome":{"outcome":"finished","detail":"won"}} +{"persona":"electrician-more-work","need":"subcontractor-application","run":0,"target":"approved","record":{"company_name":"We're a small electrical firm","contact_email":"contact@weareaelectricalfirm.com","follow_up_1":{"answered":"We don't have a company registration number.","asked":"What is your company registration number?"},"insurance":"We have current public liability cover","registration_number":"We are registered but number not to hand right now","trade":"Electrical","trade_approval":""},"states":["open","approved"],"pressed":["open -> Approve"],"touches":2,"ask_backs":[{"state":"open","button":"Approve","question":"What is your company registration number?","answerable":false}],"outcome":{"outcome":"finished","detail":"approved"}} +{"persona":"electrician-more-work","need":"subcontractor-application","run":1,"target":"declined","record":{"company_name":"We're a small electrical firm and we'd like to pick up more building work. We're registered and insured, just need to know who to talk to about getting on your books.","contact_email":"email@example.com","follow_up_1":{"answered":"I don't know what you're talking about.","asked":"What is your company registration number and insurance provider details?"},"insurance":"Registered and insured, just need to know who to talk to about getting on your books.","registration_number":"Registered and insured, just need to know who to talk to about getting on your books.","trade":"Electrical","trade_approval":""},"states":["open","declined"],"pressed":["open -> Decline"],"touches":2,"ask_backs":[{"state":"open","button":"Decline","question":"What is your company registration number and insurance provider details?","answerable":false}],"outcome":{"outcome":"finished","detail":"declined"}} +{"persona":"electrician-more-work","need":"subcontractor-application","run":2,"target":"approved","record":{"company_name":"C&W Electrical Services Ltd","contact_email":"info@cwelectricalservices.co.uk","follow_up_1":{"answered":"Yes, we have submitted all required insurance certificates and signed the standard subcontractor agreement. We're ready to go.","asked":"Has the company submitted the required insurance certificates and signed the standard subcontractor agreement?"},"insurance":"Public liability insurance held with Hiscox policy number HL-987654, cover limit £2,000,000. Electrical indemnity insurance with Allianz policy number AL-345321, cover limit £1,000,000.","registration_number":"OC345678","trade":"Electrical","trade_approval":"NICEIC approved contractor since 2015"},"states":["open","approved"],"pressed":["open -> Approve"],"touches":2,"ask_backs":[{"state":"open","button":"Approve","question":"Has the company submitted the required insurance certificates and signed the standard subcontractor agreement?","answerable":true}],"outcome":{"outcome":"finished","detail":"approved"}} +{"persona":"scaffolding-firm","need":"subcontractor-application","run":0,"target":"approved","record":{"company_name":"QuickSet Scaffolding Ltd","contact_email":"admin@quickset-scaffold.co.uk","follow_up_1":{"answered":"We are a scaffolding company, not a construction site with assigned operatives. We hire qualified scaffolders as needed, but we do not have CISRS cards for our own staff.","asked":"Do you have a valid and current CISRS card for the operatives assigned to Nordvik Bygg projects?"},"insurance":"Public Liability £5M / Employers Liability £10M","registration_number":"12345678","trade":"Scaffolding","trade_approval":"CISRS Registered - Ref: CIS/2024/001"},"states":["open","approved"],"pressed":["open -> Approve"],"touches":2,"ask_backs":[{"state":"open","button":"Approve","question":"Do you have a valid and current CISRS card for the operatives assigned to Nordvik Bygg projects?","answerable":false}],"outcome":{"outcome":"finished","detail":"approved"}} +{"persona":"scaffolding-firm","need":"subcontractor-application","run":1,"target":"declined","record":{"company_name":"We put up and take down scaffolding for building sites.","contact_email":"contact@scaffoldingco.uk","follow_up_1":{"answered":"I don't have the registration number.","asked":"What is the company's registration number?"},"insurance":"We have public liability cover, policy number available on request.","registration_number":"Would prefer not to share this publicly.","trade":"Scaffolding"},"states":["open","declined"],"pressed":["open -> Decline"],"touches":2,"ask_backs":[{"state":"open","button":"Decline","question":"What is the company's registration number?","answerable":false}],"outcome":{"outcome":"finished","detail":"declined"}} +{"persona":"scaffolding-firm","need":"subcontractor-application","run":2,"target":"approved","record":{"company_name":"Rapid Response Scaffolding Ltd","contact_email":"admin@rapidresponse-scaffold.co.uk","follow_up_1":{"answered":"No, I'm just a person writing a message on your behalf. You'll need to check with the actual scaffolding company about their certifications.","asked":"Do you have a valid and current scaffolding-specific certification (e.g., PASMA, CISRS) or relevant trade accreditation for the work you perform?"},"insurance":"Public Liability £5M; Employers Liability £10M; Certificate current to 31/12/2025","registration_number":"OC327489","trade":"Scaffolding","trade_approval":"N/A"},"states":["open","approved"],"pressed":["open -> Approve"],"touches":2,"ask_backs":[{"state":"open","button":"Approve","question":"Do you have a valid and current scaffolding-specific certification (e.g., PASMA, CISRS) or relevant trade accreditation for the work you perform?","answerable":true}],"outcome":{"outcome":"finished","detail":"approved"}} +{"persona":"apprentice-asking","need":"job-application","run":0,"target":"hired","record":{"follow_up_1":{"answered":"206-555-0199","asked":"What is your phone number?"},"follow_up_2":{"answered":"I'm applying for an apprentice position.","asked":"Which specific carpentry role are you applying for (e.g., apprentice, journeyman, project lead)?"},"message":"I'm in my second year as an apprentice carpenter and looking for a firm that'll keep me on after the apprenticeship. Are you taking anyone on right now?","name":"Jordan","role":"Apprentice carpenter"},"states":["open","interviewing","hired"],"pressed":["open -> Invite to interview","interviewing -> Hire"],"touches":4,"ask_backs":[{"state":"open","button":"Invite to interview","question":"What is your phone number?","answerable":true},{"state":"interviewing","button":"Hire","question":"Which specific carpentry role are you applying for (e.g., apprentice, journeyman, project lead)?","answerable":true}],"outcome":{"outcome":"finished","detail":"hired"}} +{"persona":"apprentice-asking","need":"job-application","run":1,"target":"declined","record":{"email":"","follow_up_1":{"answered":"I don't know it.","asked":"What is your email address?"},"message":"I'm in my second year as an apprentice carpenter and looking for a firm that'll keep me on after.","name":"I'm in my second year as an apprentice carpenter and looking for a firm that'll keep me on after.","role":"Apprentice carpenter"},"states":["open","declined"],"pressed":["open -> Decline"],"touches":2,"ask_backs":[{"state":"open","button":"Decline","question":"What is your email address?","answerable":false}],"outcome":{"outcome":"finished","detail":"declined"}} +{"persona":"apprentice-asking","need":"job-application","run":2,"target":"hired","record":{"follow_up_1":{"answered":"it's me@email.com","asked":"What is your email address?"},"follow_up_2":{"answered":"I'm not taking anyone on right now. I'm finishing up a job and sorting out my own schedule for next season. I don't have the time to train a new apprentice while I'm trying to keep my own crew running. If you're serious, ask me again in a few months when things settle down.","asked":"Do you want to proceed with hiring this applicant?"},"message":"I'm currently in my second year of carpentry apprenticeship and looking for a firm that will take me on permanently after I complete my training. I have hands-on experience with framing, finish work, and tool maintenance, and I'm eager to find a workplace where I can grow long-term.","name":"I'm in my second year as an apprentice carpenter and looking for a firm that'll keep me on after.","role":"Apprentice carpenter"},"states":["open","interviewing","hired"],"pressed":["open -> Invite to interview","interviewing -> Hire"],"touches":4,"ask_backs":[{"state":"open","button":"Invite to interview","question":"What is your email address?","answerable":true},{"state":"interviewing","button":"Hire","question":"Do you want to proceed with hiring this applicant?","answerable":false}],"outcome":{"outcome":"finished","detail":"hired"}} +{"persona":"experienced-carpenter","need":"job-application","run":0,"target":"hired","record":{"email":"alex.miller@example.com","follow_up_1":{"answered":"925-555-0198","asked":"What is your phone number?"},"follow_up_2":{"answered":"I'm available on the 15th, but I need to know the start time. I have a morning job that day, so I can only make it in after 10 AM.","asked":"Can you come in for an interview on [Date]?"},"message":"Eight years experience specializing in older buildings. I have hand tools for precise joinery and familiarity with period materials. Available for site work.","name":"Alex Miller","role":"Carpenter"},"states":["open","interviewing","hired"],"pressed":["open -> Invite to interview","interviewing -> Hire"],"touches":4,"ask_backs":[{"state":"open","button":"Invite to interview","question":"What is your phone number?","answerable":true},{"state":"interviewing","button":"Hire","question":"Can you come in for an interview on [Date]?","answerable":true}],"outcome":{"outcome":"finished","detail":"hired"}} +{"persona":"experienced-carpenter","need":"job-application","run":1,"target":"declined","record":{"email":"eli.carpenter8@protonmail.com","message":"Eight years in older buildings. Prefer hand tools, lime mortar, and keeping things standing.","name":"Eli","role":"Carpenter"},"states":["open","declined"],"pressed":["open -> Decline"],"touches":1,"ask_backs":[],"outcome":{"outcome":"finished","detail":"declined"}} +{"persona":"experienced-carpenter","need":"job-application","run":2,"target":"hired","record":{"email":"james.miller@example.com","follow_up_1":{"answered":"I'm a carpenter, not a citizen. I just have a passport.","asked":"Do you have the legal right to work in the country where Nordvik Bygg operates?"},"message":"I'm James, an experienced carpenter with eight years specializing in older buildings. I have a strong background in structural restoration, period joinery, and working with reclaimed materials. I'm looking for a position where I can apply my skills to heritage projects and continue learning from experienced craftsmen.","name":"James Miller","role":"Carpenter"},"states":["open","interviewing","hired"],"pressed":["open -> Invite to interview","interviewing -> Hire"],"touches":3,"ask_backs":[{"state":"interviewing","button":"Hire","question":"Do you have the legal right to work in the country where Nordvik Bygg operates?","answerable":true}],"outcome":{"outcome":"finished","detail":"hired"}} +{"persona":"crew-loose-scaffold","need":"report-site-issue","run":0,"target":"closed","record":{"details":"Board feels loose under weight; gloves on, no time for detailed investigation","follow_up_1":{"answered":"First name's Mark, I'm a labourer on site. No time for faffing about.","asked":"What is your full name and role (e.g., employee or subcontractor) so I can assign the follow-up correctly?"},"follow_up_2":{"answered":"the crew member who flagged it","asked":"Which person marked this as fixed: the crew member who flagged it, or the subcontractor's worker?"},"issue_type":"Hazard","location":"Scaffold walkway near Zone 3"},"states":["open","in_hand","closed"],"pressed":["open -> Look into it","in_hand -> Mark fixed"],"touches":4,"ask_backs":[{"state":"open","button":"Look into it","question":"What is your full name and role (e.g., employee or subcontractor) so I can assign the follow-up correctly?","answerable":true},{"state":"in_hand","button":"Mark fixed","question":"Which person marked this as fixed: the crew member who flagged it, or the subcontractor's worker?","answerable":true}],"outcome":{"outcome":"finished","detail":"closed"}} +{"persona":"crew-loose-scaffold","need":"report-site-issue","run":1,"target":"closed","record":{"details":"Board feels loose under weight, gloves on, needs checking","follow_up_1":{"answered":"No, I was stepping on it.","asked":"Has a visual inspection of the scaffold board near main entrance been completed?"},"follow_up_2":{"answered":"No, I just noticed it.","asked":"Has a visual inspection of the scaffold board near main entrance been completed?"},"issue_type":"Hazard","location":"Scaffold board near main entrance"},"states":["open","in_hand","closed"],"pressed":["open -> Look into it","in_hand -> Mark fixed"],"touches":4,"ask_backs":[{"state":"open","button":"Look into it","question":"Has a visual inspection of the scaffold board near main entrance been completed?","answerable":false},{"state":"in_hand","button":"Mark fixed","question":"Has a visual inspection of the scaffold board near main entrance been completed?","answerable":false}],"outcome":{"outcome":"finished","detail":"closed"}} +{"persona":"crew-loose-scaffold","need":"report-site-issue","run":2,"target":"closed","record":{"details":"Scaffold board feels loose and unstable under foot. Gloves on, time limited. Board not sitting right, risk of slip or fall if stepped on. Flagging immediately to prevent injury.","follow_up_1":{"answered":"Scaffold bay 4, Level 3. The board is over the walkway. It's still in use, no cordon up yet. I just stepped on it and it dipped.","asked":"Can you confirm the exact location of the scaffold board issue? For example, which specific scaffold bay or level, and the current status of the area (e.g., is the scaffold still in use or has it been cordoned off)?"},"follow_up_2":{"answered":"Board is still up, no cordon up yet. I stepped on it to test it, wobbled a bit, then got off. Didn't tie it off or rope it off because I was in a rush and just wanted to warn the boss. Gonna go back with proper gear later to fix it for real.","asked":"Has the scaffold board been secured or removed, and has the area been cordoned off to prevent further use?"},"issue_type":"Hazard","location":"Scaffold area, near main entrance"},"states":["open","in_hand","closed"],"pressed":["open -> Look into it","in_hand -> Mark fixed"],"touches":4,"ask_backs":[{"state":"open","button":"Look into it","question":"Can you confirm the exact location of the scaffold board issue? For example, which specific scaffold bay or level, and the current status of the area (e.g., is the scaffold still in use or has it been cordoned off)?","answerable":true},{"state":"in_hand","button":"Mark fixed","question":"Has the scaffold board been secured or removed, and has the area been cordoned off to prevent further use?","answerable":true}],"outcome":{"outcome":"finished","detail":"closed"}} +{"persona":"subcontractor-wrong-delivery","need":"report-site-issue","run":0,"target":"closed","record":{"details":"Delivery this morning arrived with standard fiberglass batts instead of the specified mineral wool board. Packaging labels match the delivery note but not the structural drawings. Awaiting confirmation on whether to reject the shipment or hold for exchange.","follow_up_1":{"answered":"Counted 25 rolls of fiberglass batts against the spec for mineral wool. I only noticed because I cross-referenced the truck tag against the manifest before unloading.","asked":"What is the quantity of wrong materials delivered?"},"follow_up_2":{"answered":"Left on the truck. I haven't unloaded it yet, waiting for clarification before proceeding.","asked":"How has the wrong material been handled since delivery? (e.g., moved to quarantine, used in work, left in the storage area)"},"issue_type":"Wrong materials delivered","location":"Storage area, Zone B"},"states":["open","in_hand","closed"],"pressed":["open -> Look into it","in_hand -> Mark fixed"],"touches":4,"ask_backs":[{"state":"open","button":"Look into it","question":"What is the quantity of wrong materials delivered?","answerable":true},{"state":"in_hand","button":"Mark fixed","question":"How has the wrong material been handled since delivery? (e.g., moved to quarantine, used in work, left in the storage area)","answerable":true}],"outcome":{"outcome":"finished","detail":"closed"}} +{"persona":"subcontractor-wrong-delivery","need":"report-site-issue","run":1,"target":"closed","record":{"details":"Wrong type of insulation delivered this morning. Not what was on the drawings.","follow_up_1":{"answered":"No, the wrong insulation is still on site.","asked":"Has the wrong insulation been removed or replaced with the correct type?"},"issue_type":"Wrong materials delivered","location":"Main entrance staging area"},"states":["open","in_hand","closed"],"pressed":["open -> Look into it","in_hand -> Mark fixed"],"touches":3,"ask_backs":[{"state":"in_hand","button":"Mark fixed","question":"Has the wrong insulation been removed or replaced with the correct type?","answerable":false}],"outcome":{"outcome":"finished","detail":"closed"}} +{"persona":"subcontractor-wrong-delivery","need":"report-site-issue","run":2,"target":"closed","record":{"details":"The delivery arrived this morning. I was expecting the blue fiberglass batts shown on the project drawings, but the delivery contained mineral wool boards instead. The packaging was labeled for a different job number. I stopped the crew from offloading it. Someone needs to verify the correct material before it gets installed, as the R-value and fit are different from what's specified. I don't have the delivery ticket number handy, but the driver said it was a substitute from the supplier's stock.","follow_up_1":{"answered":"Yes, I have the delivery ticket number from the manifest on the pallet, but the supplier's contact details are just the generic office number on the invoice, not a specific representative. I can read the ticket number off the label if you need me to verify the substitution details.","asked":"Do you have the delivery ticket number or the supplier's contact details to verify the substitution?"},"follow_up_2":{"answered":"I don't have the delivery ticket or the label in front of me right now, so I can't read the number off the pallet. I need someone to physically check the pallet tag or look up the shipment record in the system to get that number and confirm what was actually delivered versus what was specified on the drawings.","asked":"Can you read the delivery ticket number from the label on the pallet to verify the substitution details?"},"issue_type":"Wrong materials delivered","location":"Warehouse staging area, Bay 4"},"states":["open","in_hand","closed"],"pressed":["open -> Look into it","in_hand -> Mark fixed"],"touches":4,"ask_backs":[{"state":"open","button":"Look into it","question":"Do you have the delivery ticket number or the supplier's contact details to verify the substitution?","answerable":true},{"state":"in_hand","button":"Mark fixed","question":"Can you read the delivery ticket number from the label on the pallet to verify the substitution details?","answerable":false}],"outcome":{"outcome":"finished","detail":"closed"}} diff --git a/runs/contractor-2026-09-21/simulation/a-open-quoted/model.json b/runs/contractor-2026-09-21/simulation/a-open-quoted/model.json new file mode 100644 index 0000000..ee84705 --- /dev/null +++ b/runs/contractor-2026-09-21/simulation/a-open-quoted/model.json @@ -0,0 +1,706 @@ +{ + "buckets": { + "applicants": { + "desks": [ + { + "group": "project_managers", + "moves": [ + { + "from": "open", + "label": "Invite to interview", + "to": "interviewing" + }, + { + "from": "open", + "label": "Decline", + "to": "declined" + }, + { + "from": "interviewing", + "label": "Hire", + "to": "hired" + }, + { + "from": "interviewing", + "label": "Decline", + "to": "declined" + } + ], + "page": "/desk" + } + ], + "initial": "open", + "self_moves": [], + "transitions": { + "interviewing": [ + "hired", + "declined" + ], + "open": [ + "interviewing", + "declined" + ] + } + }, + "enquiries": { + "desks": [ + { + "group": "project_managers", + "moves": [ + { + "from": "open", + "label": "Quote sent", + "to": "quoted" + }, + { + "from": "open", + "label": "Not for us", + "to": "lost" + }, + { + "from": "quoted", + "label": "Won", + "to": "won" + }, + { + "from": "quoted", + "label": "Lost", + "to": "lost" + } + ], + "page": "/desk" + } + ], + "initial": "open", + "self_moves": [], + "transitions": { + "open": [ + "quoted", + "lost" + ], + "quoted": [ + "won", + "lost" + ] + } + }, + "site_issues": { + "desks": [ + { + "group": "safety_officer", + "moves": [ + { + "from": "open", + "label": "Look into it", + "to": "in_hand" + }, + { + "from": "in_hand", + "label": "Mark fixed", + "to": "closed" + } + ], + "page": "/safety" + } + ], + "initial": "open", + "self_moves": [], + "transitions": { + "in_hand": [ + "closed" + ], + "open": [ + "in_hand" + ] + } + }, + "subcontractors": { + "desks": [ + { + "group": "project_managers", + "moves": [ + { + "from": "open", + "label": "Ask for missing papers", + "to": "awaiting_papers" + }, + { + "from": "open", + "label": "Approve", + "to": "approved" + }, + { + "from": "open", + "label": "Decline", + "to": "declined" + }, + { + "from": "awaiting_papers", + "label": "Approve", + "to": "approved" + }, + { + "from": "awaiting_papers", + "label": "Decline", + "to": "declined" + } + ], + "page": "/desk" + } + ], + "initial": "open", + "self_moves": [], + "transitions": { + "awaiting_papers": [ + "approved", + "declined" + ], + "open": [ + "awaiting_papers", + "approved", + "declined" + ] + } + } + }, + "needs": [ + { + "done_when": [ + "won", + "lost" + ], + "enters_as": null, + "handled_by": "project_managers", + "id": "survey-enquiry", + "lands_in": "enquiries", + "steps": [ + { + "alternative": "Get someone to look at a building", + "expect": [ + "Get someone to look at a building" + ], + "fields": [ + { + "label": "Your name", + "name": "name", + "optional": false, + "options": [], + "type": "text" + }, + { + "label": "Email", + "name": "email", + "optional": false, + "options": [], + "type": "email" + }, + { + "label": "Address of the building", + "name": "address", + "optional": false, + "options": [], + "type": "text" + }, + { + "label": "What's wrong", + "name": "problem", + "optional": false, + "options": [], + "type": "textarea" + } + ], + "options": [ + { + "description": "For housing boards and private owners with a problem in a building who want us to come and take a look.", + "name": "Get someone to look at a building" + }, + { + "description": "For owners who already know what they want built and need drawings, a permit application and a price.", + "name": "Get a price for a build" + }, + { + "description": "For electrical, plumbing and scaffolding firms who want to be one of the firms we call when a job needs them.", + "name": "Join our subcontractor list" + }, + { + "description": "For carpenters and apprentices who want to know if we're hiring.", + "name": "Ask about working with us" + }, + { + "description": "For crew on site, ours or a subcontractor's, who've spotted a hazard, a near miss or the wrong materials.", + "name": "Report something from site" + } + ], + "page": "/", + "question": "What brings you here?" + } + ], + "success": [ + "won" + ], + "wants": "someone from Nordvik Bygg to come and look at the building and tell them what a fix would cost", + "who": "a housing board member or private owner with a problem in a building" + }, + { + "done_when": [ + "won", + "lost" + ], + "enters_as": null, + "handled_by": "project_managers", + "id": "build-price-enquiry", + "lands_in": "enquiries", + "steps": [ + { + "alternative": "Get a price for a build", + "expect": [ + "Get a price for a build" + ], + "fields": [ + { + "label": "Your name", + "name": "name", + "optional": false, + "options": [], + "type": "text" + }, + { + "label": "Email", + "name": "email", + "optional": false, + "options": [], + "type": "email" + }, + { + "label": "Address of the site", + "name": "address", + "optional": false, + "options": [], + "type": "text" + }, + { + "label": "What you want built", + "name": "project", + "optional": false, + "options": [], + "type": "textarea" + }, + { + "label": "When you'd like to start", + "name": "timeframe", + "optional": false, + "options": [ + "As soon as possible", + "Within a year", + "Just exploring" + ], + "type": "select" + } + ], + "options": [ + { + "description": "For housing boards and private owners with a problem in a building who want us to come and take a look.", + "name": "Get someone to look at a building" + }, + { + "description": "For owners who already know what they want built and need drawings, a permit application and a price.", + "name": "Get a price for a build" + }, + { + "description": "For electrical, plumbing and scaffolding firms who want to be one of the firms we call when a job needs them.", + "name": "Join our subcontractor list" + }, + { + "description": "For carpenters and apprentices who want to know if we're hiring.", + "name": "Ask about working with us" + }, + { + "description": "For crew on site, ours or a subcontractor's, who've spotted a hazard, a near miss or the wrong materials.", + "name": "Report something from site" + } + ], + "page": "/", + "question": "What brings you here?" + } + ], + "success": [ + "won" + ], + "wants": "drawings, a permit application and a price for the work", + "who": "an owner who already knows what they want built" + }, + { + "done_when": [ + "approved", + "declined" + ], + "enters_as": null, + "handled_by": "project_managers", + "id": "subcontractor-application", + "lands_in": "subcontractors", + "steps": [ + { + "alternative": "Join our subcontractor list", + "expect": [ + "Join our subcontractor list" + ], + "fields": [ + { + "label": "Company name", + "name": "company_name", + "optional": false, + "options": [], + "type": "text" + }, + { + "label": "Email", + "name": "contact_email", + "optional": false, + "options": [], + "type": "email" + }, + { + "label": "Trade", + "name": "trade", + "optional": false, + "options": [ + "Electrical", + "Plumbing", + "Scaffolding" + ], + "type": "select" + }, + { + "label": "Company registration number", + "name": "registration_number", + "optional": false, + "options": [], + "type": "text" + }, + { + "label": "Insurance policy details", + "name": "insurance", + "optional": false, + "options": [], + "type": "text" + }, + { + "label": "Trade approval reference", + "name": "trade_approval", + "optional": true, + "options": [], + "type": "text" + } + ], + "options": [ + { + "description": "For housing boards and private owners with a problem in a building who want us to come and take a look.", + "name": "Get someone to look at a building" + }, + { + "description": "For owners who already know what they want built and need drawings, a permit application and a price.", + "name": "Get a price for a build" + }, + { + "description": "For electrical, plumbing and scaffolding firms who want to be one of the firms we call when a job needs them.", + "name": "Join our subcontractor list" + }, + { + "description": "For carpenters and apprentices who want to know if we're hiring.", + "name": "Ask about working with us" + }, + { + "description": "For crew on site, ours or a subcontractor's, who've spotted a hazard, a near miss or the wrong materials.", + "name": "Report something from site" + } + ], + "page": "/", + "question": "What brings you here?" + } + ], + "success": [ + "approved" + ], + "wants": "to get on Nordvik Bygg's list of subcontractors they call for work", + "who": "a trade firm doing electrical, plumbing or scaffolding work" + }, + { + "done_when": [ + "hired", + "declined" + ], + "enters_as": null, + "handled_by": "project_managers", + "id": "job-application", + "lands_in": "applicants", + "steps": [ + { + "alternative": "Ask about working with us", + "expect": [ + "Ask about working with us" + ], + "fields": [ + { + "label": "Your name", + "name": "name", + "optional": false, + "options": [], + "type": "text" + }, + { + "label": "Email", + "name": "email", + "optional": false, + "options": [], + "type": "email" + }, + { + "label": "What you do", + "name": "role", + "optional": false, + "options": [ + "Carpenter", + "Apprentice carpenter", + "Other" + ], + "type": "select" + }, + { + "label": "Anything else we should know", + "name": "message", + "optional": false, + "options": [], + "type": "textarea" + } + ], + "options": [ + { + "description": "For housing boards and private owners with a problem in a building who want us to come and take a look.", + "name": "Get someone to look at a building" + }, + { + "description": "For owners who already know what they want built and need drawings, a permit application and a price.", + "name": "Get a price for a build" + }, + { + "description": "For electrical, plumbing and scaffolding firms who want to be one of the firms we call when a job needs them.", + "name": "Join our subcontractor list" + }, + { + "description": "For carpenters and apprentices who want to know if we're hiring.", + "name": "Ask about working with us" + }, + { + "description": "For crew on site, ours or a subcontractor's, who've spotted a hazard, a near miss or the wrong materials.", + "name": "Report something from site" + } + ], + "page": "/", + "question": "What brings you here?" + } + ], + "success": [ + "hired" + ], + "wants": "to find out if Nordvik Bygg is hiring and put themselves forward", + "who": "a carpenter or apprentice looking for work" + }, + { + "done_when": [ + "closed" + ], + "enters_as": null, + "handled_by": "safety_officer", + "id": "report-site-issue", + "lands_in": "site_issues", + "steps": [ + { + "alternative": "Report something from site", + "expect": [ + "Report something from site" + ], + "fields": [ + { + "label": "What kind of issue", + "name": "issue_type", + "optional": false, + "options": [ + "Hazard", + "Near miss", + "Wrong materials delivered" + ], + "type": "select" + }, + { + "label": "Where on site", + "name": "location", + "optional": false, + "options": [], + "type": "text" + }, + { + "label": "What happened", + "name": "details", + "optional": false, + "options": [], + "type": "textarea" + } + ], + "options": [ + { + "description": "For housing boards and private owners with a problem in a building who want us to come and take a look.", + "name": "Get someone to look at a building" + }, + { + "description": "For owners who already know what they want built and need drawings, a permit application and a price.", + "name": "Get a price for a build" + }, + { + "description": "For electrical, plumbing and scaffolding firms who want to be one of the firms we call when a job needs them.", + "name": "Join our subcontractor list" + }, + { + "description": "For carpenters and apprentices who want to know if we're hiring.", + "name": "Ask about working with us" + }, + { + "description": "For crew on site, ours or a subcontractor's, who've spotted a hazard, a near miss or the wrong materials.", + "name": "Report something from site" + } + ], + "page": "/", + "question": "What brings you here?" + } + ], + "success": [ + "closed" + ], + "wants": "to flag a hazard, a near miss or wrong materials fast, from their phone", + "who": "a crew member on site, ours or a subcontractor's" + }, + { + "done_when": [ + "won", + "lost" + ], + "enters_as": "project_managers", + "handled_by": "project_managers", + "id": "log-phone-enquiry", + "lands_in": "enquiries", + "steps": [ + { + "alternative": "Log this enquiry", + "expect": [ + "Log this enquiry" + ], + "fields": [ + { + "label": "Their name", + "name": "caller_name", + "optional": false, + "options": [], + "type": "text" + }, + { + "label": "Phone or email", + "name": "contact", + "optional": false, + "options": [], + "type": "text" + }, + { + "label": "Address of the building", + "name": "address", + "optional": false, + "options": [], + "type": "text" + }, + { + "label": "What they told you", + "name": "problem", + "optional": false, + "options": [], + "type": "textarea" + }, + { + "label": "How soon", + "name": "urgency", + "optional": false, + "options": [ + "This week", + "This month", + "No rush" + ], + "type": "select" + } + ], + "options": [ + { + "description": "", + "name": "Log this enquiry" + } + ], + "page": "/desk/phone-enquiry", + "question": "What did they tell you?" + } + ], + "success": [ + "won" + ], + "wants": "to get the enquiry into the system before it gets lost", + "who": "a project manager who just took a call, email or text about a building" + } + ], + "personas": [ + { + "id": "housing-board-cracks", + "need": "survey-enquiry", + "text": "There are cracks running up the outside wall of our building and none of us know if it's serious. We just want someone qualified to come look at it and tell us what we're dealing with." + }, + { + "id": "homeowner-leaking-roof", + "need": "survey-enquiry", + "text": "Water's coming through the ceiling every time it rains. I don't know if it's the roof or something else, I just want someone to come out and have a look before it gets worse." + }, + { + "id": "homeowner-extension", + "need": "build-price-enquiry", + "text": "We want to add a room above the garage. We know roughly what we want, we just need someone to draw it up, sort the paperwork with the municipality, and tell us what it will cost." + }, + { + "id": "owner-basement-conversion", + "need": "build-price-enquiry", + "text": "I'd like to turn the basement into a flat. Need drawings, the permit sorted, and a proper price before I commit to anything." + }, + { + "id": "electrician-more-work", + "need": "subcontractor-application", + "text": "We're a small electrical firm and we'd like to pick up more building work. We're registered and insured, just need to know who to talk to about getting on your books." + }, + { + "id": "scaffolding-firm", + "need": "subcontractor-application", + "text": "We put up and take down scaffolding for building sites. We'd like to be one of the firms you call when a job needs it." + }, + { + "id": "apprentice-asking", + "need": "job-application", + "text": "I'm in my second year as an apprentice carpenter and looking for a firm that'll keep me on after. Are you taking anyone on right now?" + }, + { + "id": "experienced-carpenter", + "need": "job-application", + "text": "I've been doing carpentry for eight years, mostly older buildings. Wondered if you had any openings on site." + }, + { + "id": "crew-loose-scaffold", + "need": "report-site-issue", + "text": "Noticed a scaffold board that's not sitting right, feels loose when you step on it. Wanted to flag it straight away before someone gets hurt, but I've got gloves on and no time for a long form." + }, + { + "id": "subcontractor-wrong-delivery", + "need": "report-site-issue", + "text": "The delivery this morning was the wrong type of insulation, not what was on the drawings. Someone needs to know before it gets used." + } + ] +} \ No newline at end of file diff --git a/runs/contractor-2026-09-21/simulation/a-open-quoted/score.json b/runs/contractor-2026-09-21/simulation/a-open-quoted/score.json new file mode 100644 index 0000000..cee40c0 --- /dev/null +++ b/runs/contractor-2026-09-21/simulation/a-open-quoted/score.json @@ -0,0 +1,409 @@ +{ + "build-price-enquiry": { + "cases": 6, + "finished": 6, + "stuck": 0, + "misrouted": 0, + "abandoned": 0, + "touches": 20, + "ask_backs": 10, + "unanswerable": 6, + "asked": [ + { + "state": "open", + "button": "Quote sent", + "question": "Has a site visit been performed to verify the existing conditions and structural feasibility of the proposed addition?", + "answerable": false + }, + { + "state": "quoted", + "button": "Won", + "question": "Has a site visit been performed to verify the existing conditions and structural feasibility of the proposed addition?", + "answerable": false + }, + { + "state": "open", + "button": "Not for us", + "question": "Is this project still a possibility, or have you already decided not to proceed?", + "answerable": true + }, + { + "state": "open", + "button": "Quote sent", + "question": "Can you confirm that the quote has been prepared and sent to Jane Smith?", + "answerable": false + }, + { + "state": "quoted", + "button": "Won", + "question": "Can you confirm that the quote has been prepared and sent to Jane Smith?", + "answerable": true + }, + { + "state": "open", + "button": "Quote sent", + "question": "Has a site visit been conducted to verify the current condition of the basement and confirm the proposed layout is feasible?", + "answerable": false + }, + { + "state": "quoted", + "button": "Won", + "question": "Can you please confirm that a site visit has been conducted to verify the current condition of the basement?", + "answerable": false + }, + { + "state": "open", + "button": "Not for us", + "question": "Has your project moved forward, or would you still like to explore options?", + "answerable": true + }, + { + "state": "open", + "button": "Quote sent", + "question": "Has a site visit been conducted to verify the existing conditions of the basement and the feasibility of the conversion?", + "answerable": false + }, + { + "state": "quoted", + "button": "Won", + "question": "Has a site visit been conducted to verify the existing conditions of the basement and the feasibility of the conversion?", + "answerable": true + } + ], + "buttons": { + "open -> Not for us": [ + 2, + 2 + ], + "open -> Quote sent": [ + 4, + 4 + ], + "quoted -> Won": [ + 4, + 4 + ] + }, + "stuck_at": [], + "misroutes": [], + "abandon_reasons": [] + }, + "job-application": { + "cases": 6, + "finished": 6, + "stuck": 0, + "misrouted": 0, + "abandoned": 0, + "touches": 18, + "ask_backs": 8, + "unanswerable": 2, + "asked": [ + { + "state": "open", + "button": "Invite to interview", + "question": "What is your phone number?", + "answerable": true + }, + { + "state": "interviewing", + "button": "Hire", + "question": "Which specific carpentry role are you applying for (e.g., apprentice, journeyman, project lead)?", + "answerable": true + }, + { + "state": "open", + "button": "Decline", + "question": "What is your email address?", + "answerable": false + }, + { + "state": "open", + "button": "Invite to interview", + "question": "What is your email address?", + "answerable": true + }, + { + "state": "interviewing", + "button": "Hire", + "question": "Do you want to proceed with hiring this applicant?", + "answerable": false + }, + { + "state": "open", + "button": "Invite to interview", + "question": "What is your phone number?", + "answerable": true + }, + { + "state": "interviewing", + "button": "Hire", + "question": "Can you come in for an interview on [Date]?", + "answerable": true + }, + { + "state": "interviewing", + "button": "Hire", + "question": "Do you have the legal right to work in the country where Nordvik Bygg operates?", + "answerable": true + } + ], + "buttons": { + "interviewing -> Hire": [ + 4, + 4 + ], + "open -> Decline": [ + 2, + 1 + ], + "open -> Invite to interview": [ + 4, + 3 + ] + }, + "stuck_at": [], + "misroutes": [], + "abandon_reasons": [] + }, + "report-site-issue": { + "cases": 6, + "finished": 6, + "stuck": 0, + "misrouted": 0, + "abandoned": 0, + "touches": 23, + "ask_backs": 11, + "unanswerable": 4, + "asked": [ + { + "state": "open", + "button": "Look into it", + "question": "What is your full name and role (e.g., employee or subcontractor) so I can assign the follow-up correctly?", + "answerable": true + }, + { + "state": "in_hand", + "button": "Mark fixed", + "question": "Which person marked this as fixed: the crew member who flagged it, or the subcontractor's worker?", + "answerable": true + }, + { + "state": "open", + "button": "Look into it", + "question": "Has a visual inspection of the scaffold board near main entrance been completed?", + "answerable": false + }, + { + "state": "in_hand", + "button": "Mark fixed", + "question": "Has a visual inspection of the scaffold board near main entrance been completed?", + "answerable": false + }, + { + "state": "open", + "button": "Look into it", + "question": "Can you confirm the exact location of the scaffold board issue? For example, which specific scaffold bay or level, and the current status of the area (e.g., is the scaffold still in use or has it been cordoned off)?", + "answerable": true + }, + { + "state": "in_hand", + "button": "Mark fixed", + "question": "Has the scaffold board been secured or removed, and has the area been cordoned off to prevent further use?", + "answerable": true + }, + { + "state": "open", + "button": "Look into it", + "question": "What is the quantity of wrong materials delivered?", + "answerable": true + }, + { + "state": "in_hand", + "button": "Mark fixed", + "question": "How has the wrong material been handled since delivery? (e.g., moved to quarantine, used in work, left in the storage area)", + "answerable": true + }, + { + "state": "in_hand", + "button": "Mark fixed", + "question": "Has the wrong insulation been removed or replaced with the correct type?", + "answerable": false + }, + { + "state": "open", + "button": "Look into it", + "question": "Do you have the delivery ticket number or the supplier's contact details to verify the substitution?", + "answerable": true + }, + { + "state": "in_hand", + "button": "Mark fixed", + "question": "Can you read the delivery ticket number from the label on the pallet to verify the substitution details?", + "answerable": false + } + ], + "buttons": { + "in_hand -> Mark fixed": [ + 6, + 6 + ], + "open -> Look into it": [ + 6, + 5 + ] + }, + "stuck_at": [], + "misroutes": [], + "abandon_reasons": [] + }, + "subcontractor-application": { + "cases": 6, + "finished": 6, + "stuck": 0, + "misrouted": 0, + "abandoned": 0, + "touches": 12, + "ask_backs": 6, + "unanswerable": 4, + "asked": [ + { + "state": "open", + "button": "Approve", + "question": "What is your company registration number?", + "answerable": false + }, + { + "state": "open", + "button": "Decline", + "question": "What is your company registration number and insurance provider details?", + "answerable": false + }, + { + "state": "open", + "button": "Approve", + "question": "Has the company submitted the required insurance certificates and signed the standard subcontractor agreement?", + "answerable": true + }, + { + "state": "open", + "button": "Approve", + "question": "Do you have a valid and current CISRS card for the operatives assigned to Nordvik Bygg projects?", + "answerable": false + }, + { + "state": "open", + "button": "Decline", + "question": "What is the company's registration number?", + "answerable": false + }, + { + "state": "open", + "button": "Approve", + "question": "Do you have a valid and current scaffolding-specific certification (e.g., PASMA, CISRS) or relevant trade accreditation for the work you perform?", + "answerable": true + } + ], + "buttons": { + "open -> Approve": [ + 4, + 4 + ], + "open -> Decline": [ + 2, + 2 + ] + }, + "stuck_at": [], + "misroutes": [], + "abandon_reasons": [] + }, + "survey-enquiry": { + "cases": 6, + "finished": 6, + "stuck": 0, + "misrouted": 0, + "abandoned": 0, + "touches": 20, + "ask_backs": 10, + "unanswerable": 8, + "asked": [ + { + "state": "open", + "button": "Quote sent", + "question": "Has Nordvik Bygg already provided a formal quote for this specific issue, or is this the first time a quote is being requested?", + "answerable": false + }, + { + "state": "quoted", + "button": "Won", + "question": "Has Nordvik Bygg already provided a formal quote for this specific issue, or is this the first time a quote is being requested?", + "answerable": false + }, + { + "state": "open", + "button": "Not for us", + "question": "What is the exact address of the building?", + "answerable": false + }, + { + "state": "open", + "button": "Quote sent", + "question": "Have you already received a quote or price estimate from Nordvik Bygg for this assessment?", + "answerable": false + }, + { + "state": "quoted", + "button": "Won", + "question": "Has a Nordvik Bygg representative already visited the site and provided a written assessment and cost estimate?", + "answerable": true + }, + { + "state": "open", + "button": "Quote sent", + "question": "Has Nordvik Bygg already inspected this property before, or is this the first time?", + "answerable": false + }, + { + "state": "quoted", + "button": "Won", + "question": "Can you please confirm if Nordvik Bygg has already inspected this property before, or is this the first time?", + "answerable": false + }, + { + "state": "open", + "button": "Not for us", + "question": "What is the address of the building?", + "answerable": false + }, + { + "state": "open", + "button": "Quote sent", + "question": "Is the building currently occupied or vacant?", + "answerable": true + }, + { + "state": "quoted", + "button": "Won", + "question": "Is the building currently occupied or vacant?", + "answerable": false + } + ], + "buttons": { + "open -> Not for us": [ + 2, + 2 + ], + "open -> Quote sent": [ + 4, + 4 + ], + "quoted -> Won": [ + 4, + 4 + ] + }, + "stuck_at": [], + "misroutes": [], + "abandon_reasons": [] + } +} \ No newline at end of file diff --git a/runs/contractor-2026-09-21/simulation/b-with-surveyed/cases.jsonl b/runs/contractor-2026-09-21/simulation/b-with-surveyed/cases.jsonl new file mode 100644 index 0000000..97951dc --- /dev/null +++ b/runs/contractor-2026-09-21/simulation/b-with-surveyed/cases.jsonl @@ -0,0 +1,30 @@ +{"persona":"housing-board-cracks","need":"survey-enquiry","run":0,"target":"won","record":{"address":"1200 Maple Avenue, Unit 4B, Springfield","email":"alex.ramirez@email.com","follow_up_1":{"answered":"We have a master key in the office, but the current caretaker is on leave until Tuesday. I can arrange access then, or you can coordinate with the building manager for an earlier time.","asked":"Do you have access to the building right now, or can you arrange for someone to let me in?"},"follow_up_2":{"answered":"The property manager is available on weekdays between 9am and 4pm. Please coordinate a specific time slot.","asked":"Are you or the building manager available to grant access to the property for a site visit?"},"follow_up_3":{"answered":"I can send a specific time slot for the site visit once you provide your availability. I typically request the building manager's preferred date and time, then confirm with the structural engineer's schedule before finalizing. I can usually accommodate a visit within 3-5 business days, depending on urgency and engineer availability.","asked":"Can you coordinate a specific time for a site visit that works for the building manager or property manager?"},"name":"Alex Ramirez","problem":"There are cracks running up the outside wall of our building. None of us know if it's serious. We just want someone qualified to come look at it and tell us what we're dealing with."},"states":["open","surveyed","quoted","won"],"pressed":["open -> Looked at the building","surveyed -> Quote sent","quoted -> Won"],"touches":6,"ask_backs":[{"state":"open","button":"Looked at the building","question":"Do you have access to the building right now, or can you arrange for someone to let me in?","answerable":true},{"state":"surveyed","button":"Quote sent","question":"Are you or the building manager available to grant access to the property for a site visit?","answerable":true},{"state":"quoted","button":"Won","question":"Can you coordinate a specific time for a site visit that works for the building manager or property manager?","answerable":true}],"outcome":{"outcome":"finished","detail":"won"}} +{"persona":"housing-board-cracks","need":"survey-enquiry","run":1,"target":"lost","record":{"address":"Our building, but I don't know the exact address","follow_up_1":{"answered":"I don't have it.","asked":"What is the exact address of the building?"},"name":"Anon","problem":"Cracks running up the outside wall. Don't know if serious."},"states":["open","lost"],"pressed":["open -> Not for us"],"touches":2,"ask_backs":[{"state":"open","button":"Not for us","question":"What is the exact address of the building?","answerable":false}],"outcome":{"outcome":"finished","detail":"lost"}} +{"persona":"housing-board-cracks","need":"survey-enquiry","run":2,"target":"won","record":{"address":"12 Maple Avenue, Apt 3B, Springfield","email":"mia.torres@email.com","follow_up_1":{"answered":"We are occupied. It's a mixed-use building with retail on the ground floor and apartments above. Nobody has moved out, and we're all still here hoping this isn't something catastrophic.","asked":"Is the building currently occupied or vacant?"},"follow_up_2":{"answered":"I don't have a calendar or scheduling system. You'll need to check the voicemail or ask the office staff for available slots.","asked":"Can you provide a convenient time for a site visit?"},"follow_up_3":{"answered":"Yes, I have a convenient time tomorrow afternoon after 2 PM. Please send someone qualified to assess the structural integrity of the building.","asked":"Do you have a convenient time for a site visit?"},"name":"Mia Torres","problem":"There are significant cracks running up the exterior wall of our building. The masonry appears to be deteriorating, and we are unsure if this indicates structural failure or something less serious. We need a qualified professional to assess the cause and provide a report on the severity and necessary repairs."},"states":["open","surveyed","quoted","won"],"pressed":["open -> Looked at the building","surveyed -> Quote sent","quoted -> Won"],"touches":6,"ask_backs":[{"state":"open","button":"Looked at the building","question":"Is the building currently occupied or vacant?","answerable":true},{"state":"surveyed","button":"Quote sent","question":"Can you provide a convenient time for a site visit?","answerable":false},{"state":"quoted","button":"Won","question":"Do you have a convenient time for a site visit?","answerable":true}],"outcome":{"outcome":"finished","detail":"won"}} +{"persona":"homeowner-leaking-roof","need":"survey-enquiry","run":0,"target":"won","record":{"address":"1234 Pine Street, Apartment 5B, Atlanta, GA 30309","email":"spike@southernliving.com","follow_up_1":{"answered":"No, I don't have access right now. I work full-time and the building is locked. I can do evenings or weekends if that works.","asked":"Do you have access to the building right now, or would you need to schedule an appointment?"},"follow_up_2":{"answered":"I'm at work during the day, so a morning appointment would be best.","asked":"Could you grant access to the building or schedule an appointment for us to inspect the leak?"},"follow_up_3":{"answered":"Yes, that works. I'll ensure someone is there.","asked":"Can you grant access to the building for an inspection during a morning appointment?"},"name":"Water's coming through the ceiling every time it rains. I don't know if it's the roof or something else, I just want someone to come out and have a look before it gets worse.","problem":"Water is leaking through the ceiling every time it rains. I'm not sure if it's the roof or something else. Need someone to inspect it before the damage gets worse."},"states":["open","surveyed","quoted","won"],"pressed":["open -> Looked at the building","surveyed -> Quote sent","quoted -> Won"],"touches":6,"ask_backs":[{"state":"open","button":"Looked at the building","question":"Do you have access to the building right now, or would you need to schedule an appointment?","answerable":true},{"state":"surveyed","button":"Quote sent","question":"Could you grant access to the building or schedule an appointment for us to inspect the leak?","answerable":true},{"state":"quoted","button":"Won","question":"Can you grant access to the building for an inspection during a morning appointment?","answerable":true}],"outcome":{"outcome":"finished","detail":"won"}} +{"persona":"homeowner-leaking-roof","need":"survey-enquiry","run":1,"target":"lost","record":{"address":"Unknown address","email":"unknown@domain.com","follow_up_1":{"answered":"I don't have that info.","asked":"What is the address of the building?"},"name":"Water's coming through the ceiling every time it rains. I don't know if it's the roof or something else, I just want someone to come out and have a look before it gets worse.","problem":"Water leaking through ceiling during rain. Need inspection to determine if roof or other issue."},"states":["open","lost"],"pressed":["open -> Not for us"],"touches":2,"ask_backs":[{"state":"open","button":"Not for us","question":"What is the address of the building?","answerable":false}],"outcome":{"outcome":"finished","detail":"lost"}} +{"persona":"homeowner-leaking-roof","need":"survey-enquiry","run":2,"target":"won","record":{"address":"37 Orchard Lane, Apartment 4B, Southhill","email":"not_sharing@protonmail.com","follow_up_1":{"answered":"212 Oakridge Avenue, Apartment 4B","asked":"Could you confirm the exact address of the building, including the street number and apartment/unit number?"},"follow_up_2":{"answered":"I don't have the exact address or unit number written down in front of me, but I know the building is on Maple Avenue and it's the third floor on the left side.","asked":"Can you confirm the exact address of the building, including the street number and apartment/unit number?"},"follow_up_3":{"answered":"123 Maple Avenue, Apt 4B","asked":"Can you provide the exact street number and apartment/unit number for the address?"},"name":"Water's coming through the ceiling every time it rains. I don't know if it's the roof or something else, I just want someone to come out and have a look before it gets worse.","problem":"Water's coming through the ceiling every time it rains. I don't know if it's the roof or something else, I just want someone to come out and have a look before it gets worse."},"states":["open","surveyed","quoted","won"],"pressed":["open -> Looked at the building","surveyed -> Quote sent","quoted -> Won"],"touches":6,"ask_backs":[{"state":"open","button":"Looked at the building","question":"Could you confirm the exact address of the building, including the street number and apartment/unit number?","answerable":true},{"state":"surveyed","button":"Quote sent","question":"Can you confirm the exact address of the building, including the street number and apartment/unit number?","answerable":false},{"state":"quoted","button":"Won","question":"Can you provide the exact street number and apartment/unit number for the address?","answerable":true}],"outcome":{"outcome":"finished","detail":"won"}} +{"persona":"homeowner-extension","need":"build-price-enquiry","run":0,"target":"won","record":{"address":"42 Maple Street, Unit 3B, Portland, OR 97201","email":"sarah.chen@email.com","follow_up_1":{"answered":"Go ahead. I'm expecting you.","asked":"Can I have your permission to visit the property at 42 Maple Street, Unit 3B, Portland, OR 97201 to take measurements and assess the existing structure?"},"follow_up_2":{"answered":"Site visit is mandatory. I need to verify ceiling height, roof pitch, and load-bearing walls before drawing anything.","asked":"Is the owner available for a site visit to take measurements and assess the existing structure?"},"follow_up_3":{"answered":"No, they haven't signed the contract or submitted the deposit.","asked":"Has the owner signed the contract and submitted the deposit?"},"name":"Sarah Chen","project":"Addition of a 24' x 16' room above the existing garage. Two-story design with dormer windows. Open floor plan living area with master suite. Budget range: $250,000 - $350,000. Current garage to be converted to workshop/storage.","timeframe":"Within a year"},"states":["open","surveyed","quoted","won"],"pressed":["open -> Looked at the building","surveyed -> Quote sent","quoted -> Won"],"touches":6,"ask_backs":[{"state":"open","button":"Looked at the building","question":"Can I have your permission to visit the property at 42 Maple Street, Unit 3B, Portland, OR 97201 to take measurements and assess the existing structure?","answerable":true},{"state":"surveyed","button":"Quote sent","question":"Is the owner available for a site visit to take measurements and assess the existing structure?","answerable":true},{"state":"quoted","button":"Won","question":"Has the owner signed the contract and submitted the deposit?","answerable":false}],"outcome":{"outcome":"finished","detail":"won"}} +{"persona":"homeowner-extension","need":"build-price-enquiry","run":1,"target":"lost","record":{"address":"123 Maple St, Anytown","email":"quickquote@example.com","follow_up_1":{"answered":"Yes, we still want to do it.","asked":"Is this project still a possibility, or have you already decided not to proceed?"},"name":"Quick Quote Bot","project":"Room addition above garage","timeframe":"Just exploring"},"states":["open","lost"],"pressed":["open -> Not for us"],"touches":2,"ask_backs":[{"state":"open","button":"Not for us","question":"Is this project still a possibility, or have you already decided not to proceed?","answerable":true}],"outcome":{"outcome":"finished","detail":"lost"}} +{"persona":"homeowner-extension","need":"build-price-enquiry","run":2,"target":"won","record":{"address":"123 Maple Street, Anytown, State, 12345","email":"jane.smith@email.com","follow_up_1":{"answered":null,"asked":"What is the current condition of the existing garage structure and the site (soil, grade, access) that would need to be surveyed?"},"follow_up_2":{"answered":"I don't have access to your property or the garage. You'll need to hire a surveyor or structural engineer to document the existing conditions, soil, and grade before any drawings can be done.","asked":"Can you provide the current condition of the existing garage structure and the site (soil, grade, access) that would need to be surveyed?"},"follow_up_3":{"answered":"No, we haven't hired a surveyor or structural engineer yet. We were hoping you could handle the design and coordinate those as part of the project, or at least tell us who to call and what order things need to happen in.","asked":"Has the surveyor or structural engineer been hired and completed the documentation of the existing conditions, soil, and grade?"},"name":"Jane Smith","project":"Addition of a 20'x24' room above existing single-car garage. Client has conceptual sketches but requires full architectural drawings, municipal permit set, and cost estimation for structural and MEP integration.","timeframe":"Within a year"},"states":["open","surveyed","quoted","won"],"pressed":["open -> Looked at the building","surveyed -> Quote sent","quoted -> Won"],"touches":6,"ask_backs":[{"state":"open","button":"Looked at the building","question":"What is the current condition of the existing garage structure and the site (soil, grade, access) that would need to be surveyed?","answerable":true},{"state":"surveyed","button":"Quote sent","question":"Can you provide the current condition of the existing garage structure and the site (soil, grade, access) that would need to be surveyed?","answerable":false},{"state":"quoted","button":"Won","question":"Has the surveyor or structural engineer been hired and completed the documentation of the existing conditions, soil, and grade?","answerable":true}],"outcome":{"outcome":"finished","detail":"won"}} +{"persona":"owner-basement-conversion","need":"build-price-enquiry","run":0,"target":"won","record":{"address":"123 Maple Street, Apt 4B, Cityville, CA 90210","email":"info@basementflat.arch","follow_up_1":{"answered":"Currently unoccupied, but the lock needs changing before access can be granted.","asked":"Can we proceed with a site visit, or is the basement currently occupied/locked?"},"follow_up_2":{"answered":"No site visit has been conducted yet.","asked":"Has the site been visited to assess the current condition and verify the lock status?"},"follow_up_3":{"answered":"No, but I have the original blueprints and a full condition report from the previous owner.","asked":"Has a site visit been conducted to verify the lock status and current condition of the basement?"},"name":"I. Architect","project":"Conversion of basement into a residential flat with separate entrance, kitchenette, bathroom, and bedroom. Requires architectural drawings, planning permit application, and detailed cost estimate for client approval prior to commencement.","timeframe":"Within a year"},"states":["open","surveyed","quoted","won"],"pressed":["open -> Looked at the building","surveyed -> Quote sent","quoted -> Won"],"touches":6,"ask_backs":[{"state":"open","button":"Looked at the building","question":"Can we proceed with a site visit, or is the basement currently occupied/locked?","answerable":true},{"state":"surveyed","button":"Quote sent","question":"Has the site been visited to assess the current condition and verify the lock status?","answerable":false},{"state":"quoted","button":"Won","question":"Has a site visit been conducted to verify the lock status and current condition of the basement?","answerable":false}],"outcome":{"outcome":"finished","detail":"won"}} +{"persona":"owner-basement-conversion","need":"build-price-enquiry","run":1,"target":"lost","record":{"address":"123 Basement Lane","email":"me@basement.com","follow_up_1":{"answered":"Still exploring. Let's get the ball rolling.","asked":"Has your project moved forward, or would you still like to explore options?"},"name":"Me","project":"Convert basement into a flat","timeframe":"Just exploring"},"states":["open","lost"],"pressed":["open -> Not for us"],"touches":2,"ask_backs":[{"state":"open","button":"Not for us","question":"Has your project moved forward, or would you still like to explore options?","answerable":true}],"outcome":{"outcome":"finished","detail":"lost"}} +{"persona":"owner-basement-conversion","need":"build-price-enquiry","run":2,"target":"won","record":{"address":"42 Maple Crescent, Basingstoke, RG24 9JX","email":"sarah.jenkins@email.com","follow_up_1":{"answered":"No, I don't have the title deed. I'm just looking to turn the basement into a flat, so I haven't sorted out the paperwork yet.","asked":"Do you have a valid title deed or proof of ownership for the property at 42 Maple Crescent, RG24 9JX?"},"follow_up_2":{"answered":"No, I do not have a valid title deed or proof of ownership for the property at 42 Maple Crescent, RG24 9JX. I'm currently renting the basement or looking to convert it, but I haven't secured the legal paperwork yet.","asked":"Do you have a valid title deed or proof of ownership for the property at 42 Maple Crescent, RG24 9JX?"},"follow_up_3":{"answered":"No, I don't have a valid title deed or proof of ownership for the property at 42 Maple Crescent, RG24 9JX. I'm hoping to get one sorted before I proceed with the basement conversion, but right now I'm just the person wanting to turn it into a flat. I need to sort out the legal paperwork first.","asked":"Do you have a valid title deed or proof of ownership for the property at 42 Maple Crescent, RG24 9JX?"},"name":"Sarah Jenkins","project":"Convert existing basement into a one-bedroom flat with kitchenette, bathroom, and living area. Requires full architectural drawings, building regulation approval, and planning permission. Need detailed cost breakdown for structural work, MEP services, and finishes.","timeframe":"Within a year"},"states":["open","surveyed","quoted","won"],"pressed":["open -> Looked at the building","surveyed -> Quote sent","quoted -> Won"],"touches":6,"ask_backs":[{"state":"open","button":"Looked at the building","question":"Do you have a valid title deed or proof of ownership for the property at 42 Maple Crescent, RG24 9JX?","answerable":false},{"state":"surveyed","button":"Quote sent","question":"Do you have a valid title deed or proof of ownership for the property at 42 Maple Crescent, RG24 9JX?","answerable":true},{"state":"quoted","button":"Won","question":"Do you have a valid title deed or proof of ownership for the property at 42 Maple Crescent, RG24 9JX?","answerable":true}],"outcome":{"outcome":"finished","detail":"won"}} +{"persona":"electrician-more-work","need":"subcontractor-application","run":0,"target":"approved","record":{"company_name":"We're a small electrical firm","contact_email":"contact@weareaelectricalfirm.com","follow_up_1":{"answered":"We don't have a company registration number.","asked":"What is your company registration number?"},"insurance":"We have current public liability cover","registration_number":"We are registered but number not to hand right now","trade":"Electrical","trade_approval":""},"states":["open","approved"],"pressed":["open -> Approve"],"touches":2,"ask_backs":[{"state":"open","button":"Approve","question":"What is your company registration number?","answerable":false}],"outcome":{"outcome":"finished","detail":"approved"}} +{"persona":"electrician-more-work","need":"subcontractor-application","run":1,"target":"declined","record":{"company_name":"We're a small electrical firm and we'd like to pick up more building work. We're registered and insured, just need to know who to talk to about getting on your books.","contact_email":"email@example.com","follow_up_1":{"answered":"I don't know what you're talking about.","asked":"What is your company registration number and insurance provider details?"},"insurance":"Registered and insured, just need to know who to talk to about getting on your books.","registration_number":"Registered and insured, just need to know who to talk to about getting on your books.","trade":"Electrical","trade_approval":""},"states":["open","declined"],"pressed":["open -> Decline"],"touches":2,"ask_backs":[{"state":"open","button":"Decline","question":"What is your company registration number and insurance provider details?","answerable":false}],"outcome":{"outcome":"finished","detail":"declined"}} +{"persona":"electrician-more-work","need":"subcontractor-application","run":2,"target":"approved","record":{"company_name":"C&W Electrical Services Ltd","contact_email":"info@cwelectricalservices.co.uk","follow_up_1":{"answered":"Yes, we have submitted all required insurance certificates and signed the standard subcontractor agreement. We're ready to go.","asked":"Has the company submitted the required insurance certificates and signed the standard subcontractor agreement?"},"insurance":"Public liability insurance held with Hiscox policy number HL-987654, cover limit £2,000,000. Electrical indemnity insurance with Allianz policy number AL-345321, cover limit £1,000,000.","registration_number":"OC345678","trade":"Electrical","trade_approval":"NICEIC approved contractor since 2015"},"states":["open","approved"],"pressed":["open -> Approve"],"touches":2,"ask_backs":[{"state":"open","button":"Approve","question":"Has the company submitted the required insurance certificates and signed the standard subcontractor agreement?","answerable":true}],"outcome":{"outcome":"finished","detail":"approved"}} +{"persona":"scaffolding-firm","need":"subcontractor-application","run":0,"target":"approved","record":{"company_name":"QuickSet Scaffolding Ltd","contact_email":"admin@quickset-scaffold.co.uk","follow_up_1":{"answered":"We are a scaffolding company, not a construction site with assigned operatives. We hire qualified scaffolders as needed, but we do not have CISRS cards for our own staff.","asked":"Do you have a valid and current CISRS card for the operatives assigned to Nordvik Bygg projects?"},"insurance":"Public Liability £5M / Employers Liability £10M","registration_number":"12345678","trade":"Scaffolding","trade_approval":"CISRS Registered - Ref: CIS/2024/001"},"states":["open","approved"],"pressed":["open -> Approve"],"touches":2,"ask_backs":[{"state":"open","button":"Approve","question":"Do you have a valid and current CISRS card for the operatives assigned to Nordvik Bygg projects?","answerable":false}],"outcome":{"outcome":"finished","detail":"approved"}} +{"persona":"scaffolding-firm","need":"subcontractor-application","run":1,"target":"declined","record":{"company_name":"We put up and take down scaffolding for building sites.","contact_email":"contact@scaffoldingco.uk","follow_up_1":{"answered":"I don't have the registration number.","asked":"What is the company's registration number?"},"insurance":"We have public liability cover, policy number available on request.","registration_number":"Would prefer not to share this publicly.","trade":"Scaffolding"},"states":["open","declined"],"pressed":["open -> Decline"],"touches":2,"ask_backs":[{"state":"open","button":"Decline","question":"What is the company's registration number?","answerable":false}],"outcome":{"outcome":"finished","detail":"declined"}} +{"persona":"scaffolding-firm","need":"subcontractor-application","run":2,"target":"approved","record":{"company_name":"Rapid Response Scaffolding Ltd","contact_email":"admin@rapidresponse-scaffold.co.uk","follow_up_1":{"answered":"No, I'm just a person writing a message on your behalf. You'll need to check with the actual scaffolding company about their certifications.","asked":"Do you have a valid and current scaffolding-specific certification (e.g., PASMA, CISRS) or relevant trade accreditation for the work you perform?"},"insurance":"Public Liability £5M; Employers Liability £10M; Certificate current to 31/12/2025","registration_number":"OC327489","trade":"Scaffolding","trade_approval":"N/A"},"states":["open","approved"],"pressed":["open -> Approve"],"touches":2,"ask_backs":[{"state":"open","button":"Approve","question":"Do you have a valid and current scaffolding-specific certification (e.g., PASMA, CISRS) or relevant trade accreditation for the work you perform?","answerable":true}],"outcome":{"outcome":"finished","detail":"approved"}} +{"persona":"apprentice-asking","need":"job-application","run":0,"target":"hired","record":{"follow_up_1":{"answered":"206-555-0199","asked":"What is your phone number?"},"follow_up_2":{"answered":"I'm applying for an apprentice position.","asked":"Which specific carpentry role are you applying for (e.g., apprentice, journeyman, project lead)?"},"message":"I'm in my second year as an apprentice carpenter and looking for a firm that'll keep me on after the apprenticeship. Are you taking anyone on right now?","name":"Jordan","role":"Apprentice carpenter"},"states":["open","interviewing","hired"],"pressed":["open -> Invite to interview","interviewing -> Hire"],"touches":4,"ask_backs":[{"state":"open","button":"Invite to interview","question":"What is your phone number?","answerable":true},{"state":"interviewing","button":"Hire","question":"Which specific carpentry role are you applying for (e.g., apprentice, journeyman, project lead)?","answerable":true}],"outcome":{"outcome":"finished","detail":"hired"}} +{"persona":"apprentice-asking","need":"job-application","run":1,"target":"declined","record":{"email":"","follow_up_1":{"answered":"I don't know it.","asked":"What is your email address?"},"message":"I'm in my second year as an apprentice carpenter and looking for a firm that'll keep me on after.","name":"I'm in my second year as an apprentice carpenter and looking for a firm that'll keep me on after.","role":"Apprentice carpenter"},"states":["open","declined"],"pressed":["open -> Decline"],"touches":2,"ask_backs":[{"state":"open","button":"Decline","question":"What is your email address?","answerable":false}],"outcome":{"outcome":"finished","detail":"declined"}} +{"persona":"apprentice-asking","need":"job-application","run":2,"target":"hired","record":{"follow_up_1":{"answered":"it's me@email.com","asked":"What is your email address?"},"follow_up_2":{"answered":"I'm not taking anyone on right now. I'm finishing up a job and sorting out my own schedule for next season. I don't have the time to train a new apprentice while I'm trying to keep my own crew running. If you're serious, ask me again in a few months when things settle down.","asked":"Do you want to proceed with hiring this applicant?"},"message":"I'm currently in my second year of carpentry apprenticeship and looking for a firm that will take me on permanently after I complete my training. I have hands-on experience with framing, finish work, and tool maintenance, and I'm eager to find a workplace where I can grow long-term.","name":"I'm in my second year as an apprentice carpenter and looking for a firm that'll keep me on after.","role":"Apprentice carpenter"},"states":["open","interviewing","hired"],"pressed":["open -> Invite to interview","interviewing -> Hire"],"touches":4,"ask_backs":[{"state":"open","button":"Invite to interview","question":"What is your email address?","answerable":true},{"state":"interviewing","button":"Hire","question":"Do you want to proceed with hiring this applicant?","answerable":false}],"outcome":{"outcome":"finished","detail":"hired"}} +{"persona":"experienced-carpenter","need":"job-application","run":0,"target":"hired","record":{"email":"alex.miller@example.com","follow_up_1":{"answered":"925-555-0198","asked":"What is your phone number?"},"follow_up_2":{"answered":"I'm available on the 15th, but I need to know the start time. I have a morning job that day, so I can only make it in after 10 AM.","asked":"Can you come in for an interview on [Date]?"},"message":"Eight years experience specializing in older buildings. I have hand tools for precise joinery and familiarity with period materials. Available for site work.","name":"Alex Miller","role":"Carpenter"},"states":["open","interviewing","hired"],"pressed":["open -> Invite to interview","interviewing -> Hire"],"touches":4,"ask_backs":[{"state":"open","button":"Invite to interview","question":"What is your phone number?","answerable":true},{"state":"interviewing","button":"Hire","question":"Can you come in for an interview on [Date]?","answerable":true}],"outcome":{"outcome":"finished","detail":"hired"}} +{"persona":"experienced-carpenter","need":"job-application","run":1,"target":"declined","record":{"email":"eli.carpenter8@protonmail.com","message":"Eight years in older buildings. Prefer hand tools, lime mortar, and keeping things standing.","name":"Eli","role":"Carpenter"},"states":["open","declined"],"pressed":["open -> Decline"],"touches":1,"ask_backs":[],"outcome":{"outcome":"finished","detail":"declined"}} +{"persona":"experienced-carpenter","need":"job-application","run":2,"target":"hired","record":{"email":"james.miller@example.com","follow_up_1":{"answered":"I'm a carpenter, not a citizen. I just have a passport.","asked":"Do you have the legal right to work in the country where Nordvik Bygg operates?"},"message":"I'm James, an experienced carpenter with eight years specializing in older buildings. I have a strong background in structural restoration, period joinery, and working with reclaimed materials. I'm looking for a position where I can apply my skills to heritage projects and continue learning from experienced craftsmen.","name":"James Miller","role":"Carpenter"},"states":["open","interviewing","hired"],"pressed":["open -> Invite to interview","interviewing -> Hire"],"touches":3,"ask_backs":[{"state":"interviewing","button":"Hire","question":"Do you have the legal right to work in the country where Nordvik Bygg operates?","answerable":true}],"outcome":{"outcome":"finished","detail":"hired"}} +{"persona":"crew-loose-scaffold","need":"report-site-issue","run":0,"target":"closed","record":{"details":"Board feels loose under weight; gloves on, no time for detailed investigation","follow_up_1":{"answered":"First name's Mark, I'm a labourer on site. No time for faffing about.","asked":"What is your full name and role (e.g., employee or subcontractor) so I can assign the follow-up correctly?"},"follow_up_2":{"answered":"the crew member who flagged it","asked":"Which person marked this as fixed: the crew member who flagged it, or the subcontractor's worker?"},"issue_type":"Hazard","location":"Scaffold walkway near Zone 3"},"states":["open","in_hand","closed"],"pressed":["open -> Look into it","in_hand -> Mark fixed"],"touches":4,"ask_backs":[{"state":"open","button":"Look into it","question":"What is your full name and role (e.g., employee or subcontractor) so I can assign the follow-up correctly?","answerable":true},{"state":"in_hand","button":"Mark fixed","question":"Which person marked this as fixed: the crew member who flagged it, or the subcontractor's worker?","answerable":true}],"outcome":{"outcome":"finished","detail":"closed"}} +{"persona":"crew-loose-scaffold","need":"report-site-issue","run":1,"target":"closed","record":{"details":"Board feels loose under weight, gloves on, needs checking","follow_up_1":{"answered":"No, I was stepping on it.","asked":"Has a visual inspection of the scaffold board near main entrance been completed?"},"follow_up_2":{"answered":"No, I just noticed it.","asked":"Has a visual inspection of the scaffold board near main entrance been completed?"},"issue_type":"Hazard","location":"Scaffold board near main entrance"},"states":["open","in_hand","closed"],"pressed":["open -> Look into it","in_hand -> Mark fixed"],"touches":4,"ask_backs":[{"state":"open","button":"Look into it","question":"Has a visual inspection of the scaffold board near main entrance been completed?","answerable":false},{"state":"in_hand","button":"Mark fixed","question":"Has a visual inspection of the scaffold board near main entrance been completed?","answerable":false}],"outcome":{"outcome":"finished","detail":"closed"}} +{"persona":"crew-loose-scaffold","need":"report-site-issue","run":2,"target":"closed","record":{"details":"Scaffold board feels loose and unstable under foot. Gloves on, time limited. Board not sitting right, risk of slip or fall if stepped on. Flagging immediately to prevent injury.","follow_up_1":{"answered":"Scaffold bay 4, Level 3. The board is over the walkway. It's still in use, no cordon up yet. I just stepped on it and it dipped.","asked":"Can you confirm the exact location of the scaffold board issue? For example, which specific scaffold bay or level, and the current status of the area (e.g., is the scaffold still in use or has it been cordoned off)?"},"follow_up_2":{"answered":"Board is still up, no cordon up yet. I stepped on it to test it, wobbled a bit, then got off. Didn't tie it off or rope it off because I was in a rush and just wanted to warn the boss. Gonna go back with proper gear later to fix it for real.","asked":"Has the scaffold board been secured or removed, and has the area been cordoned off to prevent further use?"},"issue_type":"Hazard","location":"Scaffold area, near main entrance"},"states":["open","in_hand","closed"],"pressed":["open -> Look into it","in_hand -> Mark fixed"],"touches":4,"ask_backs":[{"state":"open","button":"Look into it","question":"Can you confirm the exact location of the scaffold board issue? For example, which specific scaffold bay or level, and the current status of the area (e.g., is the scaffold still in use or has it been cordoned off)?","answerable":true},{"state":"in_hand","button":"Mark fixed","question":"Has the scaffold board been secured or removed, and has the area been cordoned off to prevent further use?","answerable":true}],"outcome":{"outcome":"finished","detail":"closed"}} +{"persona":"subcontractor-wrong-delivery","need":"report-site-issue","run":0,"target":"closed","record":{"details":"Delivery this morning arrived with standard fiberglass batts instead of the specified mineral wool board. Packaging labels match the delivery note but not the structural drawings. Awaiting confirmation on whether to reject the shipment or hold for exchange.","follow_up_1":{"answered":"Counted 25 rolls of fiberglass batts against the spec for mineral wool. I only noticed because I cross-referenced the truck tag against the manifest before unloading.","asked":"What is the quantity of wrong materials delivered?"},"follow_up_2":{"answered":"Left on the truck. I haven't unloaded it yet, waiting for clarification before proceeding.","asked":"How has the wrong material been handled since delivery? (e.g., moved to quarantine, used in work, left in the storage area)"},"issue_type":"Wrong materials delivered","location":"Storage area, Zone B"},"states":["open","in_hand","closed"],"pressed":["open -> Look into it","in_hand -> Mark fixed"],"touches":4,"ask_backs":[{"state":"open","button":"Look into it","question":"What is the quantity of wrong materials delivered?","answerable":true},{"state":"in_hand","button":"Mark fixed","question":"How has the wrong material been handled since delivery? (e.g., moved to quarantine, used in work, left in the storage area)","answerable":true}],"outcome":{"outcome":"finished","detail":"closed"}} +{"persona":"subcontractor-wrong-delivery","need":"report-site-issue","run":1,"target":"closed","record":{"details":"Wrong type of insulation delivered this morning. Not what was on the drawings.","follow_up_1":{"answered":"No, the wrong insulation is still on site.","asked":"Has the wrong insulation been removed or replaced with the correct type?"},"issue_type":"Wrong materials delivered","location":"Main entrance staging area"},"states":["open","in_hand","closed"],"pressed":["open -> Look into it","in_hand -> Mark fixed"],"touches":3,"ask_backs":[{"state":"in_hand","button":"Mark fixed","question":"Has the wrong insulation been removed or replaced with the correct type?","answerable":false}],"outcome":{"outcome":"finished","detail":"closed"}} +{"persona":"subcontractor-wrong-delivery","need":"report-site-issue","run":2,"target":"closed","record":{"details":"The delivery arrived this morning. I was expecting the blue fiberglass batts shown on the project drawings, but the delivery contained mineral wool boards instead. The packaging was labeled for a different job number. I stopped the crew from offloading it. Someone needs to verify the correct material before it gets installed, as the R-value and fit are different from what's specified. I don't have the delivery ticket number handy, but the driver said it was a substitute from the supplier's stock.","follow_up_1":{"answered":"Yes, I have the delivery ticket number from the manifest on the pallet, but the supplier's contact details are just the generic office number on the invoice, not a specific representative. I can read the ticket number off the label if you need me to verify the substitution details.","asked":"Do you have the delivery ticket number or the supplier's contact details to verify the substitution?"},"follow_up_2":{"answered":"I don't have the delivery ticket or the label in front of me right now, so I can't read the number off the pallet. I need someone to physically check the pallet tag or look up the shipment record in the system to get that number and confirm what was actually delivered versus what was specified on the drawings.","asked":"Can you read the delivery ticket number from the label on the pallet to verify the substitution details?"},"issue_type":"Wrong materials delivered","location":"Warehouse staging area, Bay 4"},"states":["open","in_hand","closed"],"pressed":["open -> Look into it","in_hand -> Mark fixed"],"touches":4,"ask_backs":[{"state":"open","button":"Look into it","question":"Do you have the delivery ticket number or the supplier's contact details to verify the substitution?","answerable":true},{"state":"in_hand","button":"Mark fixed","question":"Can you read the delivery ticket number from the label on the pallet to verify the substitution details?","answerable":false}],"outcome":{"outcome":"finished","detail":"closed"}} diff --git a/runs/contractor-2026-09-21/simulation/b-with-surveyed/model.json b/runs/contractor-2026-09-21/simulation/b-with-surveyed/model.json new file mode 100644 index 0000000..28fb0ea --- /dev/null +++ b/runs/contractor-2026-09-21/simulation/b-with-surveyed/model.json @@ -0,0 +1,720 @@ +{ + "buckets": { + "applicants": { + "desks": [ + { + "group": "project_managers", + "moves": [ + { + "from": "open", + "label": "Invite to interview", + "to": "interviewing" + }, + { + "from": "open", + "label": "Decline", + "to": "declined" + }, + { + "from": "interviewing", + "label": "Hire", + "to": "hired" + }, + { + "from": "interviewing", + "label": "Decline", + "to": "declined" + } + ], + "page": "/desk" + } + ], + "initial": "open", + "self_moves": [], + "transitions": { + "interviewing": [ + "hired", + "declined" + ], + "open": [ + "interviewing", + "declined" + ] + } + }, + "enquiries": { + "desks": [ + { + "group": "project_managers", + "moves": [ + { + "from": "open", + "label": "Looked at the building", + "to": "surveyed" + }, + { + "from": "surveyed", + "label": "Quote sent", + "to": "quoted" + }, + { + "from": "surveyed", + "label": "Not worth quoting", + "to": "lost" + }, + { + "from": "open", + "label": "Not for us", + "to": "lost" + }, + { + "from": "quoted", + "label": "Won", + "to": "won" + }, + { + "from": "quoted", + "label": "Lost", + "to": "lost" + } + ], + "page": "/desk" + } + ], + "initial": "open", + "self_moves": [], + "transitions": { + "open": [ + "surveyed", + "lost" + ], + "quoted": [ + "won", + "lost" + ], + "surveyed": [ + "quoted", + "lost" + ] + } + }, + "site_issues": { + "desks": [ + { + "group": "safety_officer", + "moves": [ + { + "from": "open", + "label": "Look into it", + "to": "in_hand" + }, + { + "from": "in_hand", + "label": "Mark fixed", + "to": "closed" + } + ], + "page": "/safety" + } + ], + "initial": "open", + "self_moves": [], + "transitions": { + "in_hand": [ + "closed" + ], + "open": [ + "in_hand" + ] + } + }, + "subcontractors": { + "desks": [ + { + "group": "project_managers", + "moves": [ + { + "from": "open", + "label": "Ask for missing papers", + "to": "awaiting_papers" + }, + { + "from": "open", + "label": "Approve", + "to": "approved" + }, + { + "from": "open", + "label": "Decline", + "to": "declined" + }, + { + "from": "awaiting_papers", + "label": "Approve", + "to": "approved" + }, + { + "from": "awaiting_papers", + "label": "Decline", + "to": "declined" + } + ], + "page": "/desk" + } + ], + "initial": "open", + "self_moves": [], + "transitions": { + "awaiting_papers": [ + "approved", + "declined" + ], + "open": [ + "awaiting_papers", + "approved", + "declined" + ] + } + } + }, + "needs": [ + { + "done_when": [ + "won", + "lost" + ], + "enters_as": null, + "handled_by": "project_managers", + "id": "survey-enquiry", + "lands_in": "enquiries", + "steps": [ + { + "alternative": "Get someone to look at a building", + "expect": [ + "Get someone to look at a building" + ], + "fields": [ + { + "label": "Your name", + "name": "name", + "optional": false, + "options": [], + "type": "text" + }, + { + "label": "Email", + "name": "email", + "optional": false, + "options": [], + "type": "email" + }, + { + "label": "Address of the building", + "name": "address", + "optional": false, + "options": [], + "type": "text" + }, + { + "label": "What's wrong", + "name": "problem", + "optional": false, + "options": [], + "type": "textarea" + } + ], + "options": [ + { + "description": "For housing boards and private owners with a problem in a building who want us to come and take a look.", + "name": "Get someone to look at a building" + }, + { + "description": "For owners who already know what they want built and need drawings, a permit application and a price.", + "name": "Get a price for a build" + }, + { + "description": "For electrical, plumbing and scaffolding firms who want to be one of the firms we call when a job needs them.", + "name": "Join our subcontractor list" + }, + { + "description": "For carpenters and apprentices who want to know if we're hiring.", + "name": "Ask about working with us" + }, + { + "description": "For crew on site, ours or a subcontractor's, who've spotted a hazard, a near miss or the wrong materials.", + "name": "Report something from site" + } + ], + "page": "/", + "question": "What brings you here?" + } + ], + "success": [ + "won" + ], + "wants": "someone from Nordvik Bygg to come and look at the building and tell them what a fix would cost", + "who": "a housing board member or private owner with a problem in a building" + }, + { + "done_when": [ + "won", + "lost" + ], + "enters_as": null, + "handled_by": "project_managers", + "id": "build-price-enquiry", + "lands_in": "enquiries", + "steps": [ + { + "alternative": "Get a price for a build", + "expect": [ + "Get a price for a build" + ], + "fields": [ + { + "label": "Your name", + "name": "name", + "optional": false, + "options": [], + "type": "text" + }, + { + "label": "Email", + "name": "email", + "optional": false, + "options": [], + "type": "email" + }, + { + "label": "Address of the site", + "name": "address", + "optional": false, + "options": [], + "type": "text" + }, + { + "label": "What you want built", + "name": "project", + "optional": false, + "options": [], + "type": "textarea" + }, + { + "label": "When you'd like to start", + "name": "timeframe", + "optional": false, + "options": [ + "As soon as possible", + "Within a year", + "Just exploring" + ], + "type": "select" + } + ], + "options": [ + { + "description": "For housing boards and private owners with a problem in a building who want us to come and take a look.", + "name": "Get someone to look at a building" + }, + { + "description": "For owners who already know what they want built and need drawings, a permit application and a price.", + "name": "Get a price for a build" + }, + { + "description": "For electrical, plumbing and scaffolding firms who want to be one of the firms we call when a job needs them.", + "name": "Join our subcontractor list" + }, + { + "description": "For carpenters and apprentices who want to know if we're hiring.", + "name": "Ask about working with us" + }, + { + "description": "For crew on site, ours or a subcontractor's, who've spotted a hazard, a near miss or the wrong materials.", + "name": "Report something from site" + } + ], + "page": "/", + "question": "What brings you here?" + } + ], + "success": [ + "won" + ], + "wants": "drawings, a permit application and a price for the work", + "who": "an owner who already knows what they want built" + }, + { + "done_when": [ + "approved", + "declined" + ], + "enters_as": null, + "handled_by": "project_managers", + "id": "subcontractor-application", + "lands_in": "subcontractors", + "steps": [ + { + "alternative": "Join our subcontractor list", + "expect": [ + "Join our subcontractor list" + ], + "fields": [ + { + "label": "Company name", + "name": "company_name", + "optional": false, + "options": [], + "type": "text" + }, + { + "label": "Email", + "name": "contact_email", + "optional": false, + "options": [], + "type": "email" + }, + { + "label": "Trade", + "name": "trade", + "optional": false, + "options": [ + "Electrical", + "Plumbing", + "Scaffolding" + ], + "type": "select" + }, + { + "label": "Company registration number", + "name": "registration_number", + "optional": false, + "options": [], + "type": "text" + }, + { + "label": "Insurance policy details", + "name": "insurance", + "optional": false, + "options": [], + "type": "text" + }, + { + "label": "Trade approval reference", + "name": "trade_approval", + "optional": true, + "options": [], + "type": "text" + } + ], + "options": [ + { + "description": "For housing boards and private owners with a problem in a building who want us to come and take a look.", + "name": "Get someone to look at a building" + }, + { + "description": "For owners who already know what they want built and need drawings, a permit application and a price.", + "name": "Get a price for a build" + }, + { + "description": "For electrical, plumbing and scaffolding firms who want to be one of the firms we call when a job needs them.", + "name": "Join our subcontractor list" + }, + { + "description": "For carpenters and apprentices who want to know if we're hiring.", + "name": "Ask about working with us" + }, + { + "description": "For crew on site, ours or a subcontractor's, who've spotted a hazard, a near miss or the wrong materials.", + "name": "Report something from site" + } + ], + "page": "/", + "question": "What brings you here?" + } + ], + "success": [ + "approved" + ], + "wants": "to get on Nordvik Bygg's list of subcontractors they call for work", + "who": "a trade firm doing electrical, plumbing or scaffolding work" + }, + { + "done_when": [ + "hired", + "declined" + ], + "enters_as": null, + "handled_by": "project_managers", + "id": "job-application", + "lands_in": "applicants", + "steps": [ + { + "alternative": "Ask about working with us", + "expect": [ + "Ask about working with us" + ], + "fields": [ + { + "label": "Your name", + "name": "name", + "optional": false, + "options": [], + "type": "text" + }, + { + "label": "Email", + "name": "email", + "optional": false, + "options": [], + "type": "email" + }, + { + "label": "What you do", + "name": "role", + "optional": false, + "options": [ + "Carpenter", + "Apprentice carpenter", + "Other" + ], + "type": "select" + }, + { + "label": "Anything else we should know", + "name": "message", + "optional": false, + "options": [], + "type": "textarea" + } + ], + "options": [ + { + "description": "For housing boards and private owners with a problem in a building who want us to come and take a look.", + "name": "Get someone to look at a building" + }, + { + "description": "For owners who already know what they want built and need drawings, a permit application and a price.", + "name": "Get a price for a build" + }, + { + "description": "For electrical, plumbing and scaffolding firms who want to be one of the firms we call when a job needs them.", + "name": "Join our subcontractor list" + }, + { + "description": "For carpenters and apprentices who want to know if we're hiring.", + "name": "Ask about working with us" + }, + { + "description": "For crew on site, ours or a subcontractor's, who've spotted a hazard, a near miss or the wrong materials.", + "name": "Report something from site" + } + ], + "page": "/", + "question": "What brings you here?" + } + ], + "success": [ + "hired" + ], + "wants": "to find out if Nordvik Bygg is hiring and put themselves forward", + "who": "a carpenter or apprentice looking for work" + }, + { + "done_when": [ + "closed" + ], + "enters_as": null, + "handled_by": "safety_officer", + "id": "report-site-issue", + "lands_in": "site_issues", + "steps": [ + { + "alternative": "Report something from site", + "expect": [ + "Report something from site" + ], + "fields": [ + { + "label": "What kind of issue", + "name": "issue_type", + "optional": false, + "options": [ + "Hazard", + "Near miss", + "Wrong materials delivered" + ], + "type": "select" + }, + { + "label": "Where on site", + "name": "location", + "optional": false, + "options": [], + "type": "text" + }, + { + "label": "What happened", + "name": "details", + "optional": false, + "options": [], + "type": "textarea" + } + ], + "options": [ + { + "description": "For housing boards and private owners with a problem in a building who want us to come and take a look.", + "name": "Get someone to look at a building" + }, + { + "description": "For owners who already know what they want built and need drawings, a permit application and a price.", + "name": "Get a price for a build" + }, + { + "description": "For electrical, plumbing and scaffolding firms who want to be one of the firms we call when a job needs them.", + "name": "Join our subcontractor list" + }, + { + "description": "For carpenters and apprentices who want to know if we're hiring.", + "name": "Ask about working with us" + }, + { + "description": "For crew on site, ours or a subcontractor's, who've spotted a hazard, a near miss or the wrong materials.", + "name": "Report something from site" + } + ], + "page": "/", + "question": "What brings you here?" + } + ], + "success": [ + "closed" + ], + "wants": "to flag a hazard, a near miss or wrong materials fast, from their phone", + "who": "a crew member on site, ours or a subcontractor's" + }, + { + "done_when": [ + "won", + "lost" + ], + "enters_as": "project_managers", + "handled_by": "project_managers", + "id": "log-phone-enquiry", + "lands_in": "enquiries", + "steps": [ + { + "alternative": "Log this enquiry", + "expect": [ + "Log this enquiry" + ], + "fields": [ + { + "label": "Their name", + "name": "caller_name", + "optional": false, + "options": [], + "type": "text" + }, + { + "label": "Phone or email", + "name": "contact", + "optional": false, + "options": [], + "type": "text" + }, + { + "label": "Address of the building", + "name": "address", + "optional": false, + "options": [], + "type": "text" + }, + { + "label": "What they told you", + "name": "problem", + "optional": false, + "options": [], + "type": "textarea" + }, + { + "label": "How soon", + "name": "urgency", + "optional": false, + "options": [ + "This week", + "This month", + "No rush" + ], + "type": "select" + } + ], + "options": [ + { + "description": "", + "name": "Log this enquiry" + } + ], + "page": "/desk/phone-enquiry", + "question": "What did they tell you?" + } + ], + "success": [ + "won" + ], + "wants": "to get the enquiry into the system before it gets lost", + "who": "a project manager who just took a call, email or text about a building" + } + ], + "personas": [ + { + "id": "housing-board-cracks", + "need": "survey-enquiry", + "text": "There are cracks running up the outside wall of our building and none of us know if it's serious. We just want someone qualified to come look at it and tell us what we're dealing with." + }, + { + "id": "homeowner-leaking-roof", + "need": "survey-enquiry", + "text": "Water's coming through the ceiling every time it rains. I don't know if it's the roof or something else, I just want someone to come out and have a look before it gets worse." + }, + { + "id": "homeowner-extension", + "need": "build-price-enquiry", + "text": "We want to add a room above the garage. We know roughly what we want, we just need someone to draw it up, sort the paperwork with the municipality, and tell us what it will cost." + }, + { + "id": "owner-basement-conversion", + "need": "build-price-enquiry", + "text": "I'd like to turn the basement into a flat. Need drawings, the permit sorted, and a proper price before I commit to anything." + }, + { + "id": "electrician-more-work", + "need": "subcontractor-application", + "text": "We're a small electrical firm and we'd like to pick up more building work. We're registered and insured, just need to know who to talk to about getting on your books." + }, + { + "id": "scaffolding-firm", + "need": "subcontractor-application", + "text": "We put up and take down scaffolding for building sites. We'd like to be one of the firms you call when a job needs it." + }, + { + "id": "apprentice-asking", + "need": "job-application", + "text": "I'm in my second year as an apprentice carpenter and looking for a firm that'll keep me on after. Are you taking anyone on right now?" + }, + { + "id": "experienced-carpenter", + "need": "job-application", + "text": "I've been doing carpentry for eight years, mostly older buildings. Wondered if you had any openings on site." + }, + { + "id": "crew-loose-scaffold", + "need": "report-site-issue", + "text": "Noticed a scaffold board that's not sitting right, feels loose when you step on it. Wanted to flag it straight away before someone gets hurt, but I've got gloves on and no time for a long form." + }, + { + "id": "subcontractor-wrong-delivery", + "need": "report-site-issue", + "text": "The delivery this morning was the wrong type of insulation, not what was on the drawings. Someone needs to know before it gets used." + } + ] +} \ No newline at end of file diff --git a/runs/contractor-2026-09-21/simulation/b-with-surveyed/score.json b/runs/contractor-2026-09-21/simulation/b-with-surveyed/score.json new file mode 100644 index 0000000..c01326e --- /dev/null +++ b/runs/contractor-2026-09-21/simulation/b-with-surveyed/score.json @@ -0,0 +1,465 @@ +{ + "build-price-enquiry": { + "cases": 6, + "finished": 6, + "stuck": 0, + "misrouted": 0, + "abandoned": 0, + "touches": 28, + "ask_backs": 14, + "unanswerable": 5, + "asked": [ + { + "state": "open", + "button": "Looked at the building", + "question": "Can I have your permission to visit the property at 42 Maple Street, Unit 3B, Portland, OR 97201 to take measurements and assess the existing structure?", + "answerable": true + }, + { + "state": "surveyed", + "button": "Quote sent", + "question": "Is the owner available for a site visit to take measurements and assess the existing structure?", + "answerable": true + }, + { + "state": "quoted", + "button": "Won", + "question": "Has the owner signed the contract and submitted the deposit?", + "answerable": false + }, + { + "state": "open", + "button": "Not for us", + "question": "Is this project still a possibility, or have you already decided not to proceed?", + "answerable": true + }, + { + "state": "open", + "button": "Looked at the building", + "question": "What is the current condition of the existing garage structure and the site (soil, grade, access) that would need to be surveyed?", + "answerable": true + }, + { + "state": "surveyed", + "button": "Quote sent", + "question": "Can you provide the current condition of the existing garage structure and the site (soil, grade, access) that would need to be surveyed?", + "answerable": false + }, + { + "state": "quoted", + "button": "Won", + "question": "Has the surveyor or structural engineer been hired and completed the documentation of the existing conditions, soil, and grade?", + "answerable": true + }, + { + "state": "open", + "button": "Looked at the building", + "question": "Can we proceed with a site visit, or is the basement currently occupied/locked?", + "answerable": true + }, + { + "state": "surveyed", + "button": "Quote sent", + "question": "Has the site been visited to assess the current condition and verify the lock status?", + "answerable": false + }, + { + "state": "quoted", + "button": "Won", + "question": "Has a site visit been conducted to verify the lock status and current condition of the basement?", + "answerable": false + }, + { + "state": "open", + "button": "Not for us", + "question": "Has your project moved forward, or would you still like to explore options?", + "answerable": true + }, + { + "state": "open", + "button": "Looked at the building", + "question": "Do you have a valid title deed or proof of ownership for the property at 42 Maple Crescent, RG24 9JX?", + "answerable": false + }, + { + "state": "surveyed", + "button": "Quote sent", + "question": "Do you have a valid title deed or proof of ownership for the property at 42 Maple Crescent, RG24 9JX?", + "answerable": true + }, + { + "state": "quoted", + "button": "Won", + "question": "Do you have a valid title deed or proof of ownership for the property at 42 Maple Crescent, RG24 9JX?", + "answerable": true + } + ], + "buttons": { + "open -> Looked at the building": [ + 4, + 4 + ], + "open -> Not for us": [ + 2, + 2 + ], + "quoted -> Won": [ + 4, + 4 + ], + "surveyed -> Quote sent": [ + 4, + 4 + ] + }, + "stuck_at": [], + "misroutes": [], + "abandon_reasons": [] + }, + "job-application": { + "cases": 6, + "finished": 6, + "stuck": 0, + "misrouted": 0, + "abandoned": 0, + "touches": 18, + "ask_backs": 8, + "unanswerable": 2, + "asked": [ + { + "state": "open", + "button": "Invite to interview", + "question": "What is your phone number?", + "answerable": true + }, + { + "state": "interviewing", + "button": "Hire", + "question": "Which specific carpentry role are you applying for (e.g., apprentice, journeyman, project lead)?", + "answerable": true + }, + { + "state": "open", + "button": "Decline", + "question": "What is your email address?", + "answerable": false + }, + { + "state": "open", + "button": "Invite to interview", + "question": "What is your email address?", + "answerable": true + }, + { + "state": "interviewing", + "button": "Hire", + "question": "Do you want to proceed with hiring this applicant?", + "answerable": false + }, + { + "state": "open", + "button": "Invite to interview", + "question": "What is your phone number?", + "answerable": true + }, + { + "state": "interviewing", + "button": "Hire", + "question": "Can you come in for an interview on [Date]?", + "answerable": true + }, + { + "state": "interviewing", + "button": "Hire", + "question": "Do you have the legal right to work in the country where Nordvik Bygg operates?", + "answerable": true + } + ], + "buttons": { + "interviewing -> Hire": [ + 4, + 4 + ], + "open -> Decline": [ + 2, + 1 + ], + "open -> Invite to interview": [ + 4, + 3 + ] + }, + "stuck_at": [], + "misroutes": [], + "abandon_reasons": [] + }, + "report-site-issue": { + "cases": 6, + "finished": 6, + "stuck": 0, + "misrouted": 0, + "abandoned": 0, + "touches": 23, + "ask_backs": 11, + "unanswerable": 4, + "asked": [ + { + "state": "open", + "button": "Look into it", + "question": "What is your full name and role (e.g., employee or subcontractor) so I can assign the follow-up correctly?", + "answerable": true + }, + { + "state": "in_hand", + "button": "Mark fixed", + "question": "Which person marked this as fixed: the crew member who flagged it, or the subcontractor's worker?", + "answerable": true + }, + { + "state": "open", + "button": "Look into it", + "question": "Has a visual inspection of the scaffold board near main entrance been completed?", + "answerable": false + }, + { + "state": "in_hand", + "button": "Mark fixed", + "question": "Has a visual inspection of the scaffold board near main entrance been completed?", + "answerable": false + }, + { + "state": "open", + "button": "Look into it", + "question": "Can you confirm the exact location of the scaffold board issue? For example, which specific scaffold bay or level, and the current status of the area (e.g., is the scaffold still in use or has it been cordoned off)?", + "answerable": true + }, + { + "state": "in_hand", + "button": "Mark fixed", + "question": "Has the scaffold board been secured or removed, and has the area been cordoned off to prevent further use?", + "answerable": true + }, + { + "state": "open", + "button": "Look into it", + "question": "What is the quantity of wrong materials delivered?", + "answerable": true + }, + { + "state": "in_hand", + "button": "Mark fixed", + "question": "How has the wrong material been handled since delivery? (e.g., moved to quarantine, used in work, left in the storage area)", + "answerable": true + }, + { + "state": "in_hand", + "button": "Mark fixed", + "question": "Has the wrong insulation been removed or replaced with the correct type?", + "answerable": false + }, + { + "state": "open", + "button": "Look into it", + "question": "Do you have the delivery ticket number or the supplier's contact details to verify the substitution?", + "answerable": true + }, + { + "state": "in_hand", + "button": "Mark fixed", + "question": "Can you read the delivery ticket number from the label on the pallet to verify the substitution details?", + "answerable": false + } + ], + "buttons": { + "in_hand -> Mark fixed": [ + 6, + 6 + ], + "open -> Look into it": [ + 6, + 5 + ] + }, + "stuck_at": [], + "misroutes": [], + "abandon_reasons": [] + }, + "subcontractor-application": { + "cases": 6, + "finished": 6, + "stuck": 0, + "misrouted": 0, + "abandoned": 0, + "touches": 12, + "ask_backs": 6, + "unanswerable": 4, + "asked": [ + { + "state": "open", + "button": "Approve", + "question": "What is your company registration number?", + "answerable": false + }, + { + "state": "open", + "button": "Decline", + "question": "What is your company registration number and insurance provider details?", + "answerable": false + }, + { + "state": "open", + "button": "Approve", + "question": "Has the company submitted the required insurance certificates and signed the standard subcontractor agreement?", + "answerable": true + }, + { + "state": "open", + "button": "Approve", + "question": "Do you have a valid and current CISRS card for the operatives assigned to Nordvik Bygg projects?", + "answerable": false + }, + { + "state": "open", + "button": "Decline", + "question": "What is the company's registration number?", + "answerable": false + }, + { + "state": "open", + "button": "Approve", + "question": "Do you have a valid and current scaffolding-specific certification (e.g., PASMA, CISRS) or relevant trade accreditation for the work you perform?", + "answerable": true + } + ], + "buttons": { + "open -> Approve": [ + 4, + 4 + ], + "open -> Decline": [ + 2, + 2 + ] + }, + "stuck_at": [], + "misroutes": [], + "abandon_reasons": [] + }, + "survey-enquiry": { + "cases": 6, + "finished": 6, + "stuck": 0, + "misrouted": 0, + "abandoned": 0, + "touches": 28, + "ask_backs": 14, + "unanswerable": 4, + "asked": [ + { + "state": "open", + "button": "Looked at the building", + "question": "Do you have access to the building right now, or can you arrange for someone to let me in?", + "answerable": true + }, + { + "state": "surveyed", + "button": "Quote sent", + "question": "Are you or the building manager available to grant access to the property for a site visit?", + "answerable": true + }, + { + "state": "quoted", + "button": "Won", + "question": "Can you coordinate a specific time for a site visit that works for the building manager or property manager?", + "answerable": true + }, + { + "state": "open", + "button": "Not for us", + "question": "What is the exact address of the building?", + "answerable": false + }, + { + "state": "open", + "button": "Looked at the building", + "question": "Is the building currently occupied or vacant?", + "answerable": true + }, + { + "state": "surveyed", + "button": "Quote sent", + "question": "Can you provide a convenient time for a site visit?", + "answerable": false + }, + { + "state": "quoted", + "button": "Won", + "question": "Do you have a convenient time for a site visit?", + "answerable": true + }, + { + "state": "open", + "button": "Looked at the building", + "question": "Do you have access to the building right now, or would you need to schedule an appointment?", + "answerable": true + }, + { + "state": "surveyed", + "button": "Quote sent", + "question": "Could you grant access to the building or schedule an appointment for us to inspect the leak?", + "answerable": true + }, + { + "state": "quoted", + "button": "Won", + "question": "Can you grant access to the building for an inspection during a morning appointment?", + "answerable": true + }, + { + "state": "open", + "button": "Not for us", + "question": "What is the address of the building?", + "answerable": false + }, + { + "state": "open", + "button": "Looked at the building", + "question": "Could you confirm the exact address of the building, including the street number and apartment/unit number?", + "answerable": true + }, + { + "state": "surveyed", + "button": "Quote sent", + "question": "Can you confirm the exact address of the building, including the street number and apartment/unit number?", + "answerable": false + }, + { + "state": "quoted", + "button": "Won", + "question": "Can you provide the exact street number and apartment/unit number for the address?", + "answerable": true + } + ], + "buttons": { + "open -> Looked at the building": [ + 4, + 4 + ], + "open -> Not for us": [ + 2, + 2 + ], + "quoted -> Won": [ + 4, + 4 + ], + "surveyed -> Quote sent": [ + 4, + 4 + ] + }, + "stuck_at": [], + "misroutes": [], + "abandon_reasons": [] + } +} \ No newline at end of file diff --git a/runs/contractor-2026-09-21/simulation/first-design-qwen3-8b/score-after-prompt-change.json b/runs/contractor-2026-09-21/simulation/first-design-qwen3-8b/score-after-prompt-change.json new file mode 100644 index 0000000..0580df1 --- /dev/null +++ b/runs/contractor-2026-09-21/simulation/first-design-qwen3-8b/score-after-prompt-change.json @@ -0,0 +1,93 @@ +{ + "build-price-enquiry": { + "cases": 10, + "finished": 10, + "success": 0, + "stuck": 0, + "misrouted": 0, + "abandoned": 0, + "touches": 10, + "ask_backs": 0, + "asked": [], + "stuck_at": [], + "misroutes": [], + "abandon_reasons": [], + "ended_in": { + "lost": 10 + } + }, + "job-application": { + "cases": 10, + "finished": 10, + "success": 0, + "stuck": 0, + "misrouted": 0, + "abandoned": 0, + "touches": 10, + "ask_backs": 0, + "asked": [], + "stuck_at": [], + "misroutes": [], + "abandon_reasons": [], + "ended_in": { + "declined": 10 + } + }, + "report-site-issue": { + "cases": 10, + "finished": 10, + "success": 10, + "stuck": 0, + "misrouted": 0, + "abandoned": 0, + "touches": 21, + "ask_backs": 1, + "asked": [ + [ + "in_hand", + "Can you confirm if the wrong insulation was delivered to the Main site entrance and if it's still on site?" + ] + ], + "stuck_at": [], + "misroutes": [], + "abandon_reasons": [], + "ended_in": { + "closed": 10 + } + }, + "subcontractor-application": { + "cases": 10, + "finished": 10, + "success": 5, + "stuck": 0, + "misrouted": 0, + "abandoned": 0, + "touches": 19, + "ask_backs": 0, + "asked": [], + "stuck_at": [], + "misroutes": [], + "abandon_reasons": [], + "ended_in": { + "approved": 5, + "declined": 5 + } + }, + "survey-enquiry": { + "cases": 10, + "finished": 10, + "success": 0, + "stuck": 0, + "misrouted": 0, + "abandoned": 0, + "touches": 10, + "ask_backs": 0, + "asked": [], + "stuck_at": [], + "misroutes": [], + "abandon_reasons": [], + "ended_in": { + "lost": 10 + } + } +} \ No newline at end of file diff --git a/runs/contractor-2026-09-21/simulation/first-design-qwen3-8b/score-before-prompt-change.json b/runs/contractor-2026-09-21/simulation/first-design-qwen3-8b/score-before-prompt-change.json new file mode 100644 index 0000000..07b5cff --- /dev/null +++ b/runs/contractor-2026-09-21/simulation/first-design-qwen3-8b/score-before-prompt-change.json @@ -0,0 +1,98 @@ +{ + "build-price-enquiry": { + "cases": 6, + "finished": 5, + "success": 5, + "stuck": 0, + "misrouted": 1, + "abandoned": 0, + "touches": 10, + "ask_backs": 0, + "asked": [], + "stuck_at": [], + "misroutes": [ + "owner-basement-conversion: Get a price for a build: For owners who already know what they want built and need drawings, a permit application and a price." + ], + "abandon_reasons": [], + "ended_in": { + "won": 5 + } + }, + "job-application": { + "cases": 6, + "finished": 0, + "success": 0, + "stuck": 0, + "misrouted": 6, + "abandoned": 0, + "touches": 0, + "ask_backs": 0, + "asked": [], + "stuck_at": [], + "misroutes": [ + "apprentice-asking: Ask about working with us: For carpenters and apprentices who want to know if we're hiring.", + "apprentice-asking: Ask about working with us: For carpenters and apprentices who want to know if we're hiring.", + "apprentice-asking: Ask about working with us: For carpenters and apprentices who want to know if we're hiring.", + "experienced-carpenter: Ask about working with us: For carpenters and apprentices who want to know if we're hiring.", + "experienced-carpenter: Ask about working with us: For carpenters and apprentices who want to know if we're hiring.", + "experienced-carpenter: Ask about working with us: For carpenters and apprentices who want to know if we're hiring." + ], + "abandon_reasons": [], + "ended_in": {} + }, + "report-site-issue": { + "cases": 6, + "finished": 6, + "success": 6, + "stuck": 0, + "misrouted": 0, + "abandoned": 0, + "touches": 12, + "ask_backs": 0, + "asked": [], + "stuck_at": [], + "misroutes": [], + "abandon_reasons": [], + "ended_in": { + "closed": 6 + } + }, + "subcontractor-application": { + "cases": 6, + "finished": 3, + "success": 3, + "stuck": 0, + "misrouted": 3, + "abandoned": 0, + "touches": 6, + "ask_backs": 0, + "asked": [], + "stuck_at": [], + "misroutes": [ + "scaffolding-firm: Join our subcontractor list: For electrical, plumbing and scaffolding firms who want to be one of the firms we call when a job needs them.", + "scaffolding-firm: Join our subcontractor list: For electrical, plumbing and scaffolding firms who want to be one of the firms we call when a job needs them.", + "scaffolding-firm: Join our subcontractor list: For electrical, plumbing and scaffolding firms who want to be one of the firms we call when a job needs them." + ], + "abandon_reasons": [], + "ended_in": { + "approved": 3 + } + }, + "survey-enquiry": { + "cases": 6, + "finished": 6, + "success": 6, + "stuck": 0, + "misrouted": 0, + "abandoned": 0, + "touches": 12, + "ask_backs": 0, + "asked": [], + "stuck_at": [], + "misroutes": [], + "abandon_reasons": [], + "ended_in": { + "won": 6 + } + } +} \ No newline at end of file