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 ", 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 } # Held out from every model that writes words. personas: - id: garage-owner need: pre-application-meeting text: We want to put a double garage where the old shed is. Before I pay an architect I'd like to know whether you'll even allow it, because the neighbour says it's too close to the road. - id: shop-to-flats need: pre-application-meeting text: I own the old grocery on Torget and want to make four flats out of it. There are a lot of questions - parking, fire, the facade is listed. Can we sit down with someone? - id: firm-files-extension need: firm-application text: We are the responsible applicant for an extension at Bjorkeveien 14. Drawings, site plan and the neighbour notices are all ready. We file maybe forty of these a year. - id: owner-small-window need: application text: I want to put a dormer window in my roof. The man at the counter said I have to apply even though it's small. - id: missing-drawings need: firm-application text: You wrote that our section drawing is missing and the case is on hold. I've got it here now, where do I send it so the clock starts again? - id: too-close-to-boundary need: exemption text: The garage ends up one and a half metres from the boundary and the plan says four. We are asking you to allow it anyway - the ground falls away steeply everywhere else on the plot. - id: neighbour-view need: objection text: I got a notice about the extension at number 14. It takes the afternoon sun off my entire terrace and I want that on the record before you decide anything. - id: neighbour-parking need: objection text: The flats they want to build in the old grocery have four parking places for four flats and everyone here already parks on the street. I object. - id: road-authority need: hearing-request text: 'Regarding your case 2026/418: the access onto the county road is within the sight line and we cannot accept it as drawn. Our formal reply is attached.' - id: fire-service need: hearing-request text: We have looked at the conversion on Torget. We have no objection provided the stairwell is upgraded. Reference your case 2026/501. - id: refused-applicant need: appeal text: You refused our exemption on the ninth. We don't accept the reasoning - you've allowed the same thing twice in the same street. We're appealing. - id: neighbour-appeals need: appeal text: You approved the extension next door even though I objected. I'm appealing the decision. What do I need to send? - id: board-member need: appeal text: I sit on the appeals board. I need the case, our own decision, and what the neighbours wrote, before Tuesday. - id: inspector-on-roof need: inspection text: I'm up on the scaffold at Bjorkeveien. The fire wall isn't built to the drawing at all. I've got gloves on and it's blowing. I want this logged before I climb down. - id: inspector-all-good need: inspection text: Been out at Torget. Everything is as approved. Nothing to report but I have to record that I was there. - id: firm-wants-certificate need: completion-certificate text: The work at Bjorkeveien 14 is finished and inspected. We're asking for the completion certificate so the owners can get their mortgage released. - id: wants-to-move-in need: temporary-permission text: The house is done apart from the outside steps, which we can't pour until spring. The family has sold their flat. Can we get a temporary permission to move in? - id: something-behind-fence need: illegal-building-report text: There's a large structure going up behind the fence at Solbakken 7. Nobody has had a notice about it and it's been going on for two weeks. - id: owner-explains need: illegal-building-report text: I got your letter about the terrace. I genuinely did not know it needed an application, it's been there since we moved in. What happens now? - id: new-firm need: firm-approval text: We are a three-person architecture firm that has just started. We want to be approved so we can file applications for our clients in your municipality. - id: firm-insurance-lapsed need: firm-approval text: You wrote that our liability insurance certificate has expired. We have renewed it, here it is. - id: counter-phone-call need: log-counter-enquiry text: A woman rang about the case behind her house. Wants to know where it stands. I'm at the counter and there's a queue - I need to write it down and send it to whoever has that case. - id: where-is-my-case need: case-status-enquiry text: I sent in my application five weeks ago and I've heard nothing. Is anyone looking at it? Is it in the six weeks with the neighbours or is it waiting on me?