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>
147 lines
5.5 KiB
YAML
147 lines
5.5 KiB
YAML
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 }
|
|
|
|
# Held out from every model that writes words.
|
|
personas:
|
|
- id: housing-board-damp
|
|
need: enquiry
|
|
text: |
|
|
I chair the board of a housing cooperative from the seventies. Two ground-floor flats have damp in the walls and we don't know if it's drainage or the facade. We need someone to tell us.
|
|
- id: buyer-before-purchase
|
|
need: enquiry
|
|
text: |
|
|
We are about to buy an old timber house. Before we sign we want a professional to go through it and tell us what is wrong with it.
|
|
- id: attic-conversion
|
|
need: enquiry
|
|
text: |
|
|
We want to turn our attic into two bedrooms and a bathroom. We need drawings and someone who handles the application to the municipality.
|
|
- id: shop-to-flat
|
|
need: enquiry
|
|
text: |
|
|
I own a former shop on the ground floor and want to make it a flat. I have no idea what is allowed. Can you sort that out and give me a price?
|
|
- id: electrician-firm
|
|
need: subcontractor-application
|
|
text: |
|
|
We are a four-person electrical firm, fully certified. We would like to get on your list so you call us when you need electricians.
|
|
- id: scaffolder
|
|
need: subcontractor-application
|
|
text: |
|
|
I run a scaffolding company. How do I get to do jobs for you?
|
|
- id: carpenter-jobseeker
|
|
need: job-application
|
|
text: |
|
|
I'm a certified carpenter with eight years on rehabilitation jobs. Are you hiring?
|
|
- id: apprentice
|
|
need: job-application
|
|
text: |
|
|
I finish vocational school this spring and need an apprenticeship as a bricklayer.
|
|
- id: loose-railing
|
|
need: site-report
|
|
text: |
|
|
The railing on the third level of the scaffold on the north side is loose. Nobody got hurt but someone will.
|
|
- id: wrong-membrane
|
|
need: site-report
|
|
text: |
|
|
The bathroom membrane delivered today is not the one in the specification. We stopped work on it.
|