Files
portal/runs/contractor-plan-2026-09-22/reply.md
T
Bendik Aagaard LynghaugandClaude Fable 5.1 255aeb4f4b plan: intake to plan by a model; doors, labelled groups, the whole card
Work from another session, committed as found (tests green):

- `plan` reads an intake into a plan.yaml (a model decides needs,
  stages, forms and budgets; a person reads the result before build).
- Plans gain `doors` (a first question before the forms, when a front
  door would carry more than five needs), `groups` with labels that a
  select may draw its options from (`options_from: groups`), `private`
  fields kept off public pages, `multiple` selects, and `max_fields`
  as what the intake said the person will tolerate.
- `card.rs`: an alternative as the visitor meets it, in text, so the
  answering visitor and `rate` read the served card, not the heading.
- `rate` reads followup pages from the repo and reports "what happens
  next" as not measured rather than zero when it cannot.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01L4jrCgLiKKHAEFuZUJjckH
2026-09-23 12:31:51 +02:00

102 lines
3.1 KiB
Markdown

business: Nordvik Bygg
language: en
contact: { name: Ingrid Nordvik, email: ingrid@nordvikbygg.example }
about: >
We are twelve people. 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.
needs:
- id: enquiry
who: housing boards and private owners who have a problem with a building and want someone to look at it
wants: someone to look at the building and send a quote
lands_in: enquiry
handled_by: project_manager
stages: [open, surveyed, quoted, won, lost]
done_when: [won, lost]
success: [won]
skippable: []
moves_by: {}
watched_by: []
max_fields: 4
collects:
- { name: name }
- { name: phone, type: tel }
- { name: problem, type: textarea }
- { name: urgency, type: select, options: [This week, This month, No rush] }
- id: subcontractor_application
who: trade firms who want to be on our list of subcontractors
wants: to be on our list of subcontractors
lands_in: subcontractor
handled_by: project_manager
stages: [open, approved, rejected]
done_when: [approved, rejected]
success: [approved]
skippable: []
moves_by: {}
watched_by: []
max_fields: 5
collects:
- { name: company_name }
- { name: trade_approval }
- { name: insurance }
- { name: phone, type: tel }
- { name: email }
- id: job_application
who: carpenters and apprentices asking if we are hiring
wants: a job
lands_in: job_application
handled_by: project_manager
stages: [open, interviewed, hired, declined]
done_when: [hired, declined]
success: [hired]
skippable: []
moves_by: {}
watched_by: []
max_fields: 6
collects:
- { name: name }
- { name: phone, type: tel }
- { name: experience }
- { name: availability }
- id: site_incident
who: the crew, ours and the subcontractors' people, who report things
wants: for the safety officer to decide what is done about it and close it when it is fixed
lands_in: site_incident
handled_by: safety_officer
stages: [reported, decided, closed]
done_when: [closed]
success: [closed]
skippable: []
moves_by: {}
watched_by: []
max_fields: 3
collects:
- { name: description, type: textarea }
- { name: hazard_type, type: select, options: [Hazard, Near miss, Wrong materials] }
- { name: reported_by, type: text }
- id: permit_application
who: owners who already know what they want built and need drawings, a permit and a price
wants: drawings, a permit and a price
lands_in: permit
handled_by: project_manager
stages: [open, surveyed, quoted, won, lost]
done_when: [won, lost]
success: [won]
skippable: []
moves_by: {}
watched_by: []
max_fields: 5
collects:
- { name: name }
- { name: phone, type: tel }
- { name: problem, type: textarea }
- { name: urgency, type: select, options: [This week, This month, No rush] }
- { name: address }