Two needs about the same record wrote the same page, and the last won. The record's page now holds one form per answering need, under words["forms"][need]. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GT37Z1Xtfd9pUuQtMTg6Yt
20 KiB
business: Vestmark kommune - Building and Planning language: en contact: { name: Solveig Hauge, email: byggesak@vestmark.example } about: > We are the building authority for a municipality of twenty-one thousand people. Anyone who wants to build, demolish, divide a property or change what a building is used for has to come to us first. We check the drawings against the zoning map and the building regulations, we let the neighbours and the other authorities have their say, and then we approve or refuse. We also decide exemptions from the zoning rules, we inspect what is actually built, we sign off finished work, and we deal with building that was never applied for. mail: { from: "Vestmark kommune Building and Planning post@vestmark.example", reply_to: byggesak@vestmark.example }
does:
- id: check-and-decide for: application text: > We check your drawings against the zoning map and the building regulations, let the neighbours and the other authorities have their say, and then approve or refuse. Every case is on the list here, so you and your neighbours can follow it the whole way, and object to it or appeal it from its own row.
- id: firms-file-here for: firm-application text: > Approved firms file applications for their clients here, see what is missing and ask for the completion certificate when the work is done.
doors:
- id: build who: You want to build, demolish, divide a property or change what a building is used for
- id: firm who: You are an architect or an engineering firm filing on behalf of owners
invites_by: [head_of_section]
needs:
-
id: pre-application-meeting who: Anyone who wants to sit down with us before they spend money on drawings wants: A meeting with a case officer, and a written note of what we told them door: build lands_in: pre_application_meetings handled_by: case_officers stages: [open, scheduled, met, written_up, cancelled] done_when: [written_up, cancelled] success: [written_up] turned_down_from: [open, scheduled] moves_by: { cancelled: [submitter, case_officers] } watched_by: [front_desk] mails: { open: submitter, scheduled: submitter, written_up: submitter, cancelled: submitter } stages_text: { open: asked for, scheduled: time found, met: meeting held, written_up: written down and sent, cancelled: cancelled } max_fields: 4 collects:
- { name: name }
- { name: email, type: email }
- { name: property_address }
- { name: what_you_plan, type: textarea }
- { name: phone, type: tel, optional: true }
- { name: place, type: location, optional: true }
-
id: application who: A homeowner who wants a garage, an extension, a new window or another change to their property wants: Permission to build, demolish, divide a property or change what a building is used for door: build lands_in: applications handled_by: case_officers stages: [open, papers_missing, papers_received, complete, in_hearing, hearing_over, recommended, approved, approved_with_conditions, refused, withdrawn] done_when: [approved, approved_with_conditions, refused, withdrawn] success: [approved, approved_with_conditions] skippable: [papers_missing, papers_received] reached_from: papers_missing: [open, papers_received, complete, in_hearing] refused: [recommended] moves_by: papers_received: [submitter] approved: [head_of_section] approved_with_conditions: [head_of_section] refused: [head_of_section] withdrawn: [submitter, case_officers] watched_by: [public, front_desk, inspectors] public_states: [open, papers_missing, papers_received, complete, in_hearing, hearing_over, recommended, approved, approved_with_conditions, refused] mails: open: submitter papers_missing: submitter complete: submitter in_hearing: submitter approved: submitter approved_with_conditions: submitter refused: submitter withdrawn: submitter deadlines: { in_hearing: { days: 42, to: hearing_over } } stages_text: open: received papers_missing: papers missing, clock stopped papers_received: missing papers sent in complete: complete, clock running in_hearing: out to neighbours and agencies hearing_over: hearing over recommended: recommendation written approved: approved approved_with_conditions: approved with conditions refused: refused withdrawn: withdrawn max_fields: 5 collects:
- { name: name, private: true }
- { name: email, type: email, private: true }
- { name: property_address }
- { name: kind_of_work, type: select, options: [New building, Extension, Garage or outbuilding, Window or facade change, Demolition, Dividing a property, Change of use] }
- { name: what_you_want_to_do, type: textarea }
- { name: enclosed, type: select, multiple: true, optional: true, options: [Site plan, Floor plans, Elevations, Section drawing, Neighbour notices sent, Statement from the owner] }
- { name: phone, type: tel, optional: true, private: true }
- { name: place, type: location, optional: true }
-
id: firm-application who: An approved architect or engineering firm filing on behalf of an owner wants: To file a building application for a client and see what is missing door: firm enters_as: approved_firms requires: Your firm must be on our list of approved firms before it may file anything. lands_in: applications handled_by: case_officers stages: [open, papers_missing, papers_received, complete, in_hearing, hearing_over, recommended, approved, approved_with_conditions, refused, withdrawn] done_when: [approved, approved_with_conditions, refused, withdrawn] success: [approved, approved_with_conditions] skippable: [papers_missing, papers_received] reached_from: papers_missing: [open, papers_received, complete, in_hearing] refused: [recommended] moves_by: papers_received: [submitter] approved: [head_of_section] approved_with_conditions: [head_of_section] refused: [head_of_section] withdrawn: [submitter, case_officers] watched_by: [public, front_desk, inspectors] public_states: [open, papers_missing, papers_received, complete, in_hearing, hearing_over, recommended, approved, approved_with_conditions, refused] mails: open: submitter papers_missing: submitter complete: submitter in_hearing: submitter approved: submitter approved_with_conditions: submitter refused: submitter withdrawn: submitter deadlines: { in_hearing: { days: 42, to: hearing_over } } stages_text: open: received papers_missing: papers missing, clock stopped papers_received: missing papers sent in complete: complete, clock running in_hearing: out to neighbours and agencies hearing_over: hearing over recommended: recommendation written approved: approved approved_with_conditions: approved with conditions refused: refused withdrawn: withdrawn max_fields: 6 collects:
- { name: name, private: true }
- { name: email, type: email, private: true }
- { name: property_address }
- { name: kind_of_work, type: select, options: [New building, Extension, Garage or outbuilding, Window or facade change, Demolition, Dividing a property, Change of use] }
- { name: what_you_want_to_do, type: textarea }
- { name: enclosed, type: select, multiple: true, options: [Site plan, Floor plans, Elevations, Section drawing, Neighbour notices sent, Statement from the owner] }
- { name: owner_name, optional: true, private: true }
- { name: phone, type: tel, optional: true, private: true }
- { name: place, type: location, optional: true }
-
id: exemption who: An applicant whose plans break the zoning rules wants: An exemption from the zoning rules, decided alongside their application about: application requires: An application with us; the exemption rides along with it and is asked for from its row on the list of cases. lands_in: exemptions handled_by: case_officers stages: [open, county_asked, county_heard, granted, refused] done_when: [granted, refused] success: [granted] moves_by: { granted: [head_of_section], refused: [head_of_section] } watched_by: [front_desk] mails: { open: submitter, county_asked: submitter, granted: submitter, refused: submitter } deadlines: { county_asked: { days: 42, to: county_heard } } stages_text: { open: received, county_asked: county asked, county_heard: county has answered or its deadline has passed, granted: granted, refused: refused } max_fields: 4 collects:
- { name: name }
- { name: email, type: email }
- { name: rule_it_breaks }
- { name: why_it_should_be_allowed, type: textarea }
-
id: objection who: A neighbour who got a notice in the post and does not agree with what is planned next door wants: To object to an application and have the objection answered in the decision about: application requires: The application must still be out for hearing; objections are taken until the six weeks are up. lands_in: objections handled_by: case_officers stages: [open, registered, answered, addressed] done_when: [addressed] success: [addressed] skippable: [answered] moves_by: { registered: [front_desk, case_officers], answered: [approved_firms, case_officers] } watched_by: [front_desk, head_of_section] mails: { open: submitter, registered: owner, addressed: submitter } stages_text: { open: received, registered: registered on the case, answered: answered by the applicant, addressed: addressed in the decision } max_fields: 4 collects:
- { name: name }
- { name: email, type: email }
- { name: your_property }
- { name: objection, type: textarea }
- { name: phone, type: tel, optional: true }
-
id: logged-objection who: The front desk, when an objection comes in on paper or over the counter wants: To put the objection on the right case straight away, instead of stapling it to a folder enters_as: front_desk lands_in: paper_objections handled_by: case_officers stages: [open, registered, answered, addressed] done_when: [addressed] success: [addressed] skippable: [answered] moves_by: { registered: [front_desk, case_officers], answered: [approved_firms, case_officers] } watched_by: [front_desk, head_of_section] stages_text: { open: received, registered: registered on the case, answered: answered by the applicant, addressed: addressed in the decision } max_fields: 5 collects:
- { name: application_reference }
- { name: name }
- { name: objection, type: textarea }
- { name: received_on, type: date }
- { name: your_property, optional: true }
- { name: phone, type: tel, optional: true }
-
id: hearing-request who: A case officer who is obliged to ask another authority about an application wants: To ask the road authority, the fire service, the heritage office or the county, and go on when the deadline has passed enters_as: case_officers lands_in: hearing_answers handled_by: case_officers stages: [open, answered, no_answer] done_when: [answered, no_answer] success: [answered] moves_by: { answered: [agencies, case_officers] } watched_by: [agencies, front_desk] deadlines: { open: { days: 42, to: no_answer } } stages_text: { open: asked, answered: answered, no_answer: deadline passed without an answer } max_fields: 4 collects:
- { name: application_reference }
- { name: agency, type: select, options: [Road authority, Fire service, Heritage office, County] }
- { name: what_we_ask, type: textarea }
- { name: answer_by, type: date, optional: true }
-
id: appeal who: Anyone with an interest in a decision, the applicant or a neighbour wants: To appeal a decision we have made about: application requires: A decision on the application, made no more than three weeks ago. lands_in: appeals handled_by: case_officers stages: [open, under_review, decision_changed, sent_to_board, upheld, overturned, dismissed] done_when: [decision_changed, upheld, overturned, dismissed] success: [decision_changed, upheld, overturned] turned_down_from: [open, under_review] reached_from: { decision_changed: [under_review] } moves_by: { decision_changed: [head_of_section], upheld: [appeals_board], overturned: [appeals_board] } watched_by: [appeals_board, head_of_section, front_desk] mails: { open: submitter, decision_changed: submitter, sent_to_board: submitter, upheld: submitter, overturned: submitter, dismissed: submitter } stages_text: { open: received, under_review: we are going through it ourselves, decision_changed: we changed our own decision, sent_to_board: sent to the appeals board, upheld: decision upheld by the board, overturned: decision overturned by the board, dismissed: dismissed } max_fields: 4 collects:
- { name: name }
- { name: email, type: email }
- { name: your_interest, type: select, options: [I am the applicant, I am a neighbour, Other] }
- { name: grounds, type: textarea }
- { name: phone, type: tel, optional: true }
-
id: illegal-building-report who: Someone who sees something going up behind their fence without permission wants: To tell us, so that we go and look lands_in: illegal_building handled_by: case_officers stages: [open, inspected, owner_written_to, explained, fined, applied_for, taken_down, nothing_illegal] done_when: [applied_for, taken_down, nothing_illegal] success: [applied_for, taken_down] skippable: [fined] turned_down_from: [open, inspected, explained] moves_by: { inspected: [inspectors], fined: [head_of_section] } watched_by: [front_desk, inspectors] stages_text: { open: reported, inspected: we have been and looked, owner_written_to: owner written to, explained: owner has explained, fined: weekly fine running, applied_for: applied for properly, taken_down: taken down, nothing_illegal: nothing illegal found } max_fields: 3 collects:
- { name: where }
- { name: what_is_being_built, type: textarea }
- { name: place, type: location, optional: true }
- { name: name, optional: true, private: true }
- { name: phone, type: tel, optional: true, private: true }
-
id: logged-report who: The front desk, when someone rings or comes in about building without permission wants: To log the report so an inspector goes and looks enters_as: front_desk lands_in: illegal_building handled_by: case_officers stages: [open, inspected, owner_written_to, explained, fined, applied_for, taken_down, nothing_illegal] done_when: [applied_for, taken_down, nothing_illegal] success: [applied_for, taken_down] skippable: [fined] turned_down_from: [open, inspected, explained] moves_by: { inspected: [inspectors], fined: [head_of_section] } watched_by: [front_desk, inspectors] stages_text: { open: reported, inspected: we have been and looked, owner_written_to: owner written to, explained: owner has explained, fined: weekly fine running, applied_for: applied for properly, taken_down: taken down, nothing_illegal: nothing illegal found } max_fields: 3 collects:
- { name: where }
- { name: what_is_being_built, type: textarea }
- { name: place, type: location, optional: true }
- { name: name, optional: true, private: true }
- { name: phone, type: tel, optional: true, private: true }
-
id: inspection who: An inspector on site, writing on a phone in a cold wind wants: To write up what was found on a case and set a date for what must be put right enters_as: inspectors lands_in: inspections handled_by: inspectors stages: [open, to_put_right, as_approved] done_when: [as_approved] success: [as_approved] skippable: [to_put_right] watched_by: [case_officers, head_of_section] stages_text: { open: inspected, to_put_right: to be put right, then we go back, as_approved: as approved } max_fields: 3 collects:
- { name: application_reference }
- { name: finding, type: select, options: [As approved, Something is wrong] }
- { name: what_is_wrong, type: textarea, optional: true }
- { name: put_right_by, type: date, optional: true }
- { name: place, type: location, optional: true }
-
id: completion-certificate who: An approved firm whose work on a case is done wants: A completion certificate for the finished work door: firm enters_as: approved_firms requires: Your firm must be on our list of approved firms, and the application must be approved; have its reference ready. lands_in: completion_certificates handled_by: case_officers stages: [open, checked, issued, refused] done_when: [issued, refused] success: [issued] moves_by: { issued: [head_of_section], refused: [head_of_section] } watched_by: [inspectors, front_desk] mails: { open: submitter, issued: submitter, refused: submitter } stages_text: { open: asked for, checked: inspections and outstanding work checked, issued: certificate signed, refused: refused } max_fields: 5 collects:
- { name: name }
- { name: email, type: email }
- { name: application_reference }
- { name: finished_on, type: date }
- { name: what_was_built, type: textarea, optional: true }
- { name: still_outstanding, type: textarea, optional: true }
-
id: temporary-permission who: An approved firm whose client wants to move in before everything is done wants: A temporary permission to use the building door: firm enters_as: approved_firms requires: Your firm must be on our list of approved firms, and the application must be approved; have its reference ready. lands_in: temporary_permissions handled_by: case_officers stages: [open, checked, issued, refused] done_when: [issued, refused] success: [issued] moves_by: { issued: [head_of_section], refused: [head_of_section] } watched_by: [inspectors, front_desk] mails: { open: submitter, issued: submitter, refused: submitter } stages_text: { open: asked for, checked: inspections and outstanding work checked, issued: temporary permission signed, refused: refused } max_fields: 6 collects:
- { name: name }
- { name: email, type: email }
- { name: application_reference }
- { name: move_in_on, type: date }
- { name: still_outstanding, type: textarea }
- { name: finished_by, type: date, optional: true }
-
id: firm-approval who: An architect or engineering firm that wants to file applications for owners wants: To be approved by us and put on the list of firms that may file door: firm lands_in: approved_firm_requests handled_by: case_officers stages: [open, checked, listed, refused] done_when: [listed, refused] success: [listed] moves_by: { listed: [head_of_section], refused: [head_of_section] } watched_by: [public, front_desk] public_states: [listed] mails: { open: submitter, listed: submitter, refused: submitter } grants: { listed: approved_firms } stages_text: { open: received, checked: registration, insurance and qualifications checked, listed: on the list, refused: refused } max_fields: 6 collects:
- { name: firm }
- { name: name, private: true }
- { name: email, type: email, private: true }
- { name: registration_number }
- { name: insurance, private: true }
- { name: qualified_for, type: select, multiple: true, options: [Applying on behalf of owners, Architectural design, Structural engineering, Fire safety design, Geotechnical engineering, Carrying out the work, Independent control] }
- { name: phone, type: tel, optional: true, private: true }