Re-planning the contractor showed three wasted rounds: `moves_by: {
checking: submitter }` written as a bare word, a group without a
label, and the two featured owner roles left with nothing to play,
which the builder only warned about after the fact. The bare word and
the missing label now parse (a label defaults to the id), and a plan
that parses with spectator roles is sent back once with the finding;
on the contractor, round three fixed both.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
3.8 KiB
3.8 KiB
business: Nordvik Bygg
language: en
contact: { name: Ingrid Nordvik, email: ingrid@nordvikbygg.example }
about: >
We survey old buildings, draw up rehabilitation plans, handle the
permit application, and do the building work with our own carpenters
plus subcontractors for electrical, plumbing and scaffolding.
mail: { from: "Nordvik Bygg <post@nordvikbygg.example>", reply_to: ingrid@nordvikbygg.example }
does:
- id: survey-and-build
for: enquiry
text: We survey old buildings, draw up rehabilitation plans, handle the permit, and build.
- id: subcontractor-network
for: subcontractor-application
text: We work with subcontractors for electrical, plumbing and scaffolding.
doors:
- id: work
who: housing boards and owners with a building problem or a project in mind
- id: join
who: trade firms, carpenters and apprentices who want to work with us
groups:
- { id: project_managers, label: Project managers }
- { id: safety_officer, label: Safety officer }
- { id: crew, label: Crew }
needs:
- id: enquiry
who: a housing board or private owner with a problem with a building
wants: someone to look at the building and quote the work
door: work
lands_in: enquiries
handled_by: project_managers
stages: [open, surveyed, quoted, won, lost]
done_when: [won, lost]
success: [won]
turned_down_from: [open, surveyed]
moves_by: { lost: [submitter, project_managers] }
mails: { open: submitter, won: submitter, lost: submitter }
max_fields: 4
collects:
- { name: name }
- { name: email, type: email }
- { name: phone, type: tel }
- { name: problem, type: textarea }
- id: subcontractor-application
who: a trade firm that wants to be on the subcontractor list
wants: to be approved as a subcontractor for electrical, plumbing or scaffolding work
door: join
lands_in: subcontractor_applications
handled_by: project_managers
stages: [open, checking_papers, approved, turned_down]
done_when: [approved, turned_down]
success: [approved]
skippable: [checking_papers]
turned_down_from: [open, checking_papers]
moves_by: { turned_down: [submitter, project_managers] }
mails: { open: submitter, approved: submitter, turned_down: submitter }
max_fields: 5
collects:
- { name: company_name }
- { name: email, type: email }
- { name: trade, type: select, options: [Electrical, Plumbing, Scaffolding] }
- { name: registration_number }
- { name: insurance_details, type: textarea }
- id: job-application
who: a carpenter or apprentice asking if we are hiring
wants: to be considered for a job and invited to interview
door: join
lands_in: job_applications
handled_by: project_managers
stages: [open, interview, hired, declined]
done_when: [hired, declined]
success: [hired]
skippable: [interview]
turned_down_from: [open, interview]
mails: { open: submitter, interview: submitter, hired: submitter, declined: submitter }
max_fields: 4
collects:
- { name: name }
- { name: email, type: email }
- { name: role, type: select, options: [Carpenter, Apprentice] }
- { name: experience, type: textarea, optional: true }
- id: site-report
who: crew, ours and the subcontractors' people, on site
wants: to report a hazard, near miss or wrong delivery so it gets fixed
enters_as: crew
lands_in: site_reports
handled_by: safety_officer
stages: [open, in_progress, closed]
done_when: [closed]
success: [closed]
mails: { closed: submitter }
max_fields: 3
collects:
- { name: email, type: email }
- { name: issue_type, type: select, options: [Hazard, Near miss, Wrong materials] }
- { name: description, type: textarea }