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
1600 lines
44 KiB
JSON
1600 lines
44 KiB
JSON
{
|
||
"buckets": {
|
||
"applicants": {
|
||
"desks": [
|
||
{
|
||
"group": "project_managers",
|
||
"moves": [
|
||
{
|
||
"from": "interviewing",
|
||
"label": "Offer role",
|
||
"to": "offered"
|
||
},
|
||
{
|
||
"from": "interviewing",
|
||
"label": "Mark declined",
|
||
"to": "declined"
|
||
},
|
||
{
|
||
"from": "offered",
|
||
"label": "Confirm hire",
|
||
"to": "hired"
|
||
},
|
||
{
|
||
"from": "offered",
|
||
"label": "Reject offer",
|
||
"to": "declined"
|
||
},
|
||
{
|
||
"from": "open",
|
||
"label": "Start interview",
|
||
"to": "interviewing"
|
||
},
|
||
{
|
||
"from": "open",
|
||
"label": "Mark declined",
|
||
"to": "declined"
|
||
}
|
||
],
|
||
"page": "/project_managers"
|
||
}
|
||
],
|
||
"initial": "open",
|
||
"self_moves": [],
|
||
"transitions": {
|
||
"interviewing": [
|
||
"offered",
|
||
"declined"
|
||
],
|
||
"offered": [
|
||
"hired",
|
||
"declined"
|
||
],
|
||
"open": [
|
||
"interviewing",
|
||
"declined"
|
||
]
|
||
}
|
||
},
|
||
"bids": {
|
||
"desks": [
|
||
{
|
||
"group": "project_managers",
|
||
"moves": [
|
||
{
|
||
"from": "open",
|
||
"label": "Shortlist bid",
|
||
"to": "shortlisted"
|
||
},
|
||
{
|
||
"from": "open",
|
||
"label": "Accept bid",
|
||
"to": "accepted"
|
||
},
|
||
{
|
||
"from": "open",
|
||
"label": "Reject bid",
|
||
"to": "declined"
|
||
},
|
||
{
|
||
"from": "shortlisted",
|
||
"label": "Accept shortlist",
|
||
"to": "accepted"
|
||
},
|
||
{
|
||
"from": "shortlisted",
|
||
"label": "Reject shortlist",
|
||
"to": "declined"
|
||
}
|
||
],
|
||
"page": "/project_managers"
|
||
},
|
||
{
|
||
"group": "site_managers",
|
||
"moves": [],
|
||
"page": "/site_managers"
|
||
}
|
||
],
|
||
"initial": "open",
|
||
"self_moves": [],
|
||
"transitions": {
|
||
"open": [
|
||
"shortlisted",
|
||
"accepted",
|
||
"declined"
|
||
],
|
||
"shortlisted": [
|
||
"accepted",
|
||
"declined"
|
||
]
|
||
}
|
||
},
|
||
"change_orders": {
|
||
"desks": [
|
||
{
|
||
"group": "project_managers",
|
||
"moves": [
|
||
{
|
||
"from": "approved",
|
||
"label": "Reject change",
|
||
"to": "declined"
|
||
},
|
||
{
|
||
"from": "open",
|
||
"label": "Price the change",
|
||
"to": "priced"
|
||
},
|
||
{
|
||
"from": "open",
|
||
"label": "Reject request",
|
||
"to": "declined"
|
||
},
|
||
{
|
||
"from": "priced",
|
||
"label": "Reject priced change",
|
||
"to": "declined"
|
||
}
|
||
],
|
||
"page": "/project_managers"
|
||
},
|
||
{
|
||
"group": "site_managers",
|
||
"moves": [
|
||
{
|
||
"from": "approved",
|
||
"label": "Mark done",
|
||
"to": "completed"
|
||
}
|
||
],
|
||
"page": "/site_managers"
|
||
}
|
||
],
|
||
"initial": "open",
|
||
"self_moves": [
|
||
"approved",
|
||
"declined"
|
||
],
|
||
"transitions": {
|
||
"approved": [
|
||
"completed",
|
||
"declined"
|
||
],
|
||
"open": [
|
||
"priced",
|
||
"declined"
|
||
],
|
||
"priced": [
|
||
"approved",
|
||
"declined"
|
||
]
|
||
}
|
||
},
|
||
"claims": {
|
||
"desks": [
|
||
{
|
||
"group": "project_managers",
|
||
"moves": [
|
||
{
|
||
"from": "accepted",
|
||
"label": "Reject fix",
|
||
"to": "rejected"
|
||
},
|
||
{
|
||
"from": "inspected",
|
||
"label": "Accept fix",
|
||
"to": "accepted"
|
||
},
|
||
{
|
||
"from": "inspected",
|
||
"label": "Reject fix",
|
||
"to": "rejected"
|
||
},
|
||
{
|
||
"from": "open",
|
||
"label": "Reject claim",
|
||
"to": "rejected"
|
||
}
|
||
],
|
||
"page": "/project_managers"
|
||
},
|
||
{
|
||
"group": "site_managers",
|
||
"moves": [
|
||
{
|
||
"from": "accepted",
|
||
"label": "Mark fixed",
|
||
"to": "fixed"
|
||
},
|
||
{
|
||
"from": "open",
|
||
"label": "Book inspection",
|
||
"to": "inspected"
|
||
}
|
||
],
|
||
"page": "/site_managers"
|
||
}
|
||
],
|
||
"initial": "open",
|
||
"self_moves": [],
|
||
"transitions": {
|
||
"accepted": [
|
||
"fixed",
|
||
"rejected"
|
||
],
|
||
"inspected": [
|
||
"accepted",
|
||
"rejected"
|
||
],
|
||
"open": [
|
||
"inspected",
|
||
"rejected"
|
||
]
|
||
}
|
||
},
|
||
"complaints": {
|
||
"desks": [
|
||
{
|
||
"group": "project_managers",
|
||
"moves": [],
|
||
"page": "/project_managers"
|
||
},
|
||
{
|
||
"group": "site_managers",
|
||
"moves": [
|
||
{
|
||
"from": "open",
|
||
"label": "Mark answered",
|
||
"to": "answered"
|
||
}
|
||
],
|
||
"page": "/site_managers"
|
||
}
|
||
],
|
||
"initial": "open",
|
||
"self_moves": [],
|
||
"transitions": {
|
||
"open": [
|
||
"answered"
|
||
]
|
||
}
|
||
},
|
||
"enquiries": {
|
||
"desks": [
|
||
{
|
||
"group": "project_managers",
|
||
"moves": [
|
||
{
|
||
"from": "open",
|
||
"label": "Book survey",
|
||
"to": "surveyed"
|
||
},
|
||
{
|
||
"from": "open",
|
||
"label": "Mark lost",
|
||
"to": "lost"
|
||
},
|
||
{
|
||
"from": "quoted",
|
||
"label": "Win work",
|
||
"to": "won"
|
||
},
|
||
{
|
||
"from": "quoted",
|
||
"label": "Mark lost",
|
||
"to": "lost"
|
||
},
|
||
{
|
||
"from": "surveyed",
|
||
"label": "Send quote",
|
||
"to": "quoted"
|
||
},
|
||
{
|
||
"from": "surveyed",
|
||
"label": "Mark lost",
|
||
"to": "lost"
|
||
}
|
||
],
|
||
"page": "/project_managers"
|
||
},
|
||
{
|
||
"group": "site_managers",
|
||
"moves": [
|
||
{
|
||
"from": "open",
|
||
"label": "Mark surveyed",
|
||
"to": "surveyed"
|
||
}
|
||
],
|
||
"page": "/site_managers"
|
||
}
|
||
],
|
||
"initial": "open",
|
||
"self_moves": [],
|
||
"transitions": {
|
||
"open": [
|
||
"surveyed",
|
||
"lost"
|
||
],
|
||
"quoted": [
|
||
"won",
|
||
"lost"
|
||
],
|
||
"surveyed": [
|
||
"quoted",
|
||
"lost"
|
||
]
|
||
}
|
||
},
|
||
"job_requests": {
|
||
"desks": [
|
||
{
|
||
"group": "project_managers",
|
||
"moves": [
|
||
{
|
||
"from": "open",
|
||
"label": "Award job",
|
||
"to": "awarded"
|
||
},
|
||
{
|
||
"from": "open",
|
||
"label": "Withdraw job",
|
||
"to": "withdrawn"
|
||
}
|
||
],
|
||
"page": "/project_managers"
|
||
},
|
||
{
|
||
"group": "site_managers",
|
||
"moves": [],
|
||
"page": "/site_managers"
|
||
},
|
||
{
|
||
"group": "subcontractors",
|
||
"moves": [],
|
||
"page": "/subcontractors"
|
||
}
|
||
],
|
||
"initial": "open",
|
||
"self_moves": [],
|
||
"transitions": {
|
||
"open": [
|
||
"awarded",
|
||
"withdrawn"
|
||
]
|
||
}
|
||
},
|
||
"material_orders": {
|
||
"desks": [
|
||
{
|
||
"group": "crew",
|
||
"moves": [
|
||
{
|
||
"from": "ordered",
|
||
"label": "Mark delivered",
|
||
"to": "delivered"
|
||
}
|
||
],
|
||
"page": "/crew"
|
||
},
|
||
{
|
||
"group": "site_managers",
|
||
"moves": [
|
||
{
|
||
"from": "open",
|
||
"label": "Order it",
|
||
"to": "ordered"
|
||
},
|
||
{
|
||
"from": "open",
|
||
"label": "Cancel order",
|
||
"to": "refused"
|
||
},
|
||
{
|
||
"from": "ordered",
|
||
"label": "Mark delivered",
|
||
"to": "delivered"
|
||
},
|
||
{
|
||
"from": "ordered",
|
||
"label": "Cancel delivery",
|
||
"to": "refused"
|
||
}
|
||
],
|
||
"page": "/site_managers"
|
||
}
|
||
],
|
||
"initial": "open",
|
||
"self_moves": [],
|
||
"transitions": {
|
||
"open": [
|
||
"ordered",
|
||
"refused"
|
||
],
|
||
"ordered": [
|
||
"delivered",
|
||
"refused"
|
||
]
|
||
}
|
||
},
|
||
"site_issues": {
|
||
"desks": [
|
||
{
|
||
"group": "project_managers",
|
||
"moves": [],
|
||
"page": "/project_managers"
|
||
},
|
||
{
|
||
"group": "safety_officer",
|
||
"moves": [
|
||
{
|
||
"from": "in_hand",
|
||
"label": "Mark as closed",
|
||
"to": "closed"
|
||
},
|
||
{
|
||
"from": "open",
|
||
"label": "Start reporting",
|
||
"to": "in_hand"
|
||
}
|
||
],
|
||
"page": "/safety_officer"
|
||
},
|
||
{
|
||
"group": "site_managers",
|
||
"moves": [
|
||
{
|
||
"from": "open",
|
||
"label": "Log it",
|
||
"to": "in_hand"
|
||
}
|
||
],
|
||
"page": "/site_managers"
|
||
}
|
||
],
|
||
"initial": "open",
|
||
"self_moves": [],
|
||
"transitions": {
|
||
"in_hand": [
|
||
"closed"
|
||
],
|
||
"open": [
|
||
"in_hand"
|
||
]
|
||
}
|
||
},
|
||
"subcontractors": {
|
||
"desks": [
|
||
{
|
||
"group": "project_managers",
|
||
"moves": [
|
||
{
|
||
"from": "awaiting_papers",
|
||
"label": "Approve firm",
|
||
"to": "approved"
|
||
},
|
||
{
|
||
"from": "awaiting_papers",
|
||
"label": "Decline firm",
|
||
"to": "declined"
|
||
},
|
||
{
|
||
"from": "open",
|
||
"label": "Await papers",
|
||
"to": "awaiting_papers"
|
||
},
|
||
{
|
||
"from": "open",
|
||
"label": "Approve application",
|
||
"to": "approved"
|
||
},
|
||
{
|
||
"from": "open",
|
||
"label": "Decline application",
|
||
"to": "declined"
|
||
}
|
||
],
|
||
"page": "/project_managers"
|
||
},
|
||
{
|
||
"group": "site_managers",
|
||
"moves": [],
|
||
"page": "/site_managers"
|
||
}
|
||
],
|
||
"initial": "open",
|
||
"self_moves": [],
|
||
"transitions": {
|
||
"awaiting_papers": [
|
||
"approved",
|
||
"declined"
|
||
],
|
||
"open": [
|
||
"awaiting_papers",
|
||
"approved",
|
||
"declined"
|
||
]
|
||
}
|
||
}
|
||
},
|
||
"needs": [
|
||
{
|
||
"done_when": [
|
||
"won",
|
||
"lost"
|
||
],
|
||
"enters_as": null,
|
||
"handled_by": "project_managers",
|
||
"id": "survey-enquiry",
|
||
"lands_in": "enquiries",
|
||
"steps": [
|
||
{
|
||
"alternative": "Your building project",
|
||
"expect": [
|
||
"Your building project"
|
||
],
|
||
"fields": [],
|
||
"options": [
|
||
{
|
||
"description": "Report a problem, get a survey, or start a new build project.",
|
||
"name": "Your building project"
|
||
},
|
||
{
|
||
"description": "Apply to work with us as a subcontractor or find a job as a carpenter or apprentice.",
|
||
"name": "Work with Nordvik Bygg"
|
||
},
|
||
{
|
||
"description": "Let us know about noise, dust, or access problems from a building site near you.",
|
||
"name": "Neighbour complaint"
|
||
}
|
||
],
|
||
"page": "/",
|
||
"question": "What brings you to Nordvik Bygg today?"
|
||
},
|
||
{
|
||
"alternative": "Report a building problem",
|
||
"expect": [
|
||
"Report a building problem",
|
||
"Tell us about your building project"
|
||
],
|
||
"fields": [
|
||
{
|
||
"label": "Your name",
|
||
"name": "name",
|
||
"optional": false,
|
||
"options": [],
|
||
"type": "text"
|
||
},
|
||
{
|
||
"label": "Phone number",
|
||
"name": "phone",
|
||
"optional": false,
|
||
"options": [],
|
||
"type": "tel"
|
||
},
|
||
{
|
||
"label": "Building address",
|
||
"name": "address",
|
||
"optional": false,
|
||
"options": [],
|
||
"type": "text"
|
||
},
|
||
{
|
||
"label": "What is the problem?",
|
||
"name": "problem",
|
||
"optional": false,
|
||
"options": [],
|
||
"type": "textarea"
|
||
},
|
||
{
|
||
"label": "How to get to the site",
|
||
"name": "access",
|
||
"optional": true,
|
||
"options": [],
|
||
"type": "text"
|
||
}
|
||
],
|
||
"options": [
|
||
{
|
||
"description": "You have a problem in your building. We’ll send someone qualified to look at it and tell you what it takes to fix it.",
|
||
"name": "Report a building problem"
|
||
},
|
||
{
|
||
"description": "You know what you want changed or built. We’ll draw it, handle the permit, and price it for you.",
|
||
"name": "Tell us about your building project"
|
||
},
|
||
{
|
||
"description": "You found a fault in work we did. We’ll come back, look at it, and put it right.",
|
||
"name": "Report a fault in our work"
|
||
}
|
||
],
|
||
"page": "/your-building",
|
||
"question": "What are you looking for?"
|
||
}
|
||
],
|
||
"success": [
|
||
"won"
|
||
],
|
||
"wants": "someone qualified to come and look at it and say what it takes",
|
||
"who": "a housing board or private owner with a problem in a building"
|
||
},
|
||
{
|
||
"done_when": [
|
||
"won",
|
||
"lost"
|
||
],
|
||
"enters_as": null,
|
||
"handled_by": "project_managers",
|
||
"id": "build-enquiry",
|
||
"lands_in": "enquiries",
|
||
"steps": [
|
||
{
|
||
"alternative": "Your building project",
|
||
"expect": [
|
||
"Your building project"
|
||
],
|
||
"fields": [],
|
||
"options": [
|
||
{
|
||
"description": "Report a problem, get a survey, or start a new build project.",
|
||
"name": "Your building project"
|
||
},
|
||
{
|
||
"description": "Apply to work with us as a subcontractor or find a job as a carpenter or apprentice.",
|
||
"name": "Work with Nordvik Bygg"
|
||
},
|
||
{
|
||
"description": "Let us know about noise, dust, or access problems from a building site near you.",
|
||
"name": "Neighbour complaint"
|
||
}
|
||
],
|
||
"page": "/",
|
||
"question": "What brings you to Nordvik Bygg today?"
|
||
},
|
||
{
|
||
"alternative": "Report a building problem",
|
||
"expect": [
|
||
"Report a building problem",
|
||
"Tell us about your building project"
|
||
],
|
||
"fields": [
|
||
{
|
||
"label": "Your name",
|
||
"name": "name",
|
||
"optional": false,
|
||
"options": [],
|
||
"type": "text"
|
||
},
|
||
{
|
||
"label": "Phone number",
|
||
"name": "phone",
|
||
"optional": false,
|
||
"options": [],
|
||
"type": "tel"
|
||
},
|
||
{
|
||
"label": "Building address",
|
||
"name": "address",
|
||
"optional": false,
|
||
"options": [],
|
||
"type": "text"
|
||
},
|
||
{
|
||
"label": "What is the problem?",
|
||
"name": "problem",
|
||
"optional": false,
|
||
"options": [],
|
||
"type": "textarea"
|
||
},
|
||
{
|
||
"label": "How to get to the site",
|
||
"name": "access",
|
||
"optional": true,
|
||
"options": [],
|
||
"type": "text"
|
||
}
|
||
],
|
||
"options": [
|
||
{
|
||
"description": "You have a problem in your building. We’ll send someone qualified to look at it and tell you what it takes to fix it.",
|
||
"name": "Report a building problem"
|
||
},
|
||
{
|
||
"description": "You know what you want changed or built. We’ll draw it, handle the permit, and price it for you.",
|
||
"name": "Tell us about your building project"
|
||
},
|
||
{
|
||
"description": "You found a fault in work we did. We’ll come back, look at it, and put it right.",
|
||
"name": "Report a fault in our work"
|
||
}
|
||
],
|
||
"page": "/your-building",
|
||
"question": "What are you looking for?"
|
||
}
|
||
],
|
||
"success": [
|
||
"won"
|
||
],
|
||
"wants": "drawings, a permit application and a price",
|
||
"who": "an owner who already knows what they want built or changed"
|
||
},
|
||
{
|
||
"done_when": [
|
||
"fixed",
|
||
"rejected"
|
||
],
|
||
"enters_as": null,
|
||
"handled_by": "project_managers",
|
||
"id": "warranty-claim",
|
||
"lands_in": "claims",
|
||
"steps": [
|
||
{
|
||
"alternative": "Your building project",
|
||
"expect": [
|
||
"Your building project"
|
||
],
|
||
"fields": [],
|
||
"options": [
|
||
{
|
||
"description": "Report a problem, get a survey, or start a new build project.",
|
||
"name": "Your building project"
|
||
},
|
||
{
|
||
"description": "Apply to work with us as a subcontractor or find a job as a carpenter or apprentice.",
|
||
"name": "Work with Nordvik Bygg"
|
||
},
|
||
{
|
||
"description": "Let us know about noise, dust, or access problems from a building site near you.",
|
||
"name": "Neighbour complaint"
|
||
}
|
||
],
|
||
"page": "/",
|
||
"question": "What brings you to Nordvik Bygg today?"
|
||
},
|
||
{
|
||
"alternative": "Report a fault in our work",
|
||
"expect": [
|
||
"Report a fault in our work"
|
||
],
|
||
"fields": [
|
||
{
|
||
"label": "Your name",
|
||
"name": "name",
|
||
"optional": false,
|
||
"options": [],
|
||
"type": "text"
|
||
},
|
||
{
|
||
"label": "Phone number",
|
||
"name": "phone",
|
||
"optional": false,
|
||
"options": [],
|
||
"type": "tel"
|
||
},
|
||
{
|
||
"label": "Building address",
|
||
"name": "address",
|
||
"optional": false,
|
||
"options": [],
|
||
"type": "text"
|
||
},
|
||
{
|
||
"label": "What is the fault?",
|
||
"name": "fault",
|
||
"optional": false,
|
||
"options": [],
|
||
"type": "textarea"
|
||
},
|
||
{
|
||
"label": "When was it handed over?",
|
||
"name": "handed_over",
|
||
"optional": true,
|
||
"options": [],
|
||
"type": "date"
|
||
}
|
||
],
|
||
"options": [
|
||
{
|
||
"description": "You have a problem in your building. We’ll send someone qualified to look at it and tell you what it takes to fix it.",
|
||
"name": "Report a building problem"
|
||
},
|
||
{
|
||
"description": "You know what you want changed or built. We’ll draw it, handle the permit, and price it for you.",
|
||
"name": "Tell us about your building project"
|
||
},
|
||
{
|
||
"description": "You found a fault in work we did. We’ll come back, look at it, and put it right.",
|
||
"name": "Report a fault in our work"
|
||
}
|
||
],
|
||
"page": "/your-building",
|
||
"question": "What are you looking for?"
|
||
}
|
||
],
|
||
"success": [
|
||
"fixed"
|
||
],
|
||
"wants": "us to come back, look at it, and put it right",
|
||
"who": "a past customer who has found a fault in work we handed over"
|
||
},
|
||
{
|
||
"done_when": [
|
||
"answered"
|
||
],
|
||
"enters_as": null,
|
||
"handled_by": "site_managers",
|
||
"id": "neighbour-complaint",
|
||
"lands_in": "complaints",
|
||
"steps": [
|
||
{
|
||
"alternative": "Neighbour complaint",
|
||
"expect": [
|
||
"Neighbour complaint"
|
||
],
|
||
"fields": [
|
||
{
|
||
"label": "Building address",
|
||
"name": "site_address",
|
||
"optional": false,
|
||
"options": [],
|
||
"type": "text"
|
||
},
|
||
{
|
||
"label": "Describe the issue",
|
||
"name": "what_is_wrong",
|
||
"optional": false,
|
||
"options": [],
|
||
"type": "textarea"
|
||
},
|
||
{
|
||
"label": "Contact method",
|
||
"name": "reach_me_on",
|
||
"optional": false,
|
||
"options": [],
|
||
"type": "text"
|
||
}
|
||
],
|
||
"options": [
|
||
{
|
||
"description": "Report a problem, get a survey, or start a new build project.",
|
||
"name": "Your building project"
|
||
},
|
||
{
|
||
"description": "Apply to work with us as a subcontractor or find a job as a carpenter or apprentice.",
|
||
"name": "Work with Nordvik Bygg"
|
||
},
|
||
{
|
||
"description": "Let us know about noise, dust, or access problems from a building site near you.",
|
||
"name": "Neighbour complaint"
|
||
}
|
||
],
|
||
"page": "/",
|
||
"question": "What brings you to Nordvik Bygg today?"
|
||
}
|
||
],
|
||
"success": [
|
||
"answered"
|
||
],
|
||
"wants": "the noise, dust or blocked access dealt with, and an answer",
|
||
"who": "someone living or working next to one of our building sites"
|
||
},
|
||
{
|
||
"done_when": [
|
||
"approved",
|
||
"declined"
|
||
],
|
||
"enters_as": null,
|
||
"handled_by": "project_managers",
|
||
"id": "subcontractor-application",
|
||
"lands_in": "subcontractors",
|
||
"steps": [
|
||
{
|
||
"alternative": "Work with Nordvik Bygg",
|
||
"expect": [
|
||
"Work with Nordvik Bygg"
|
||
],
|
||
"fields": [],
|
||
"options": [
|
||
{
|
||
"description": "Report a problem, get a survey, or start a new build project.",
|
||
"name": "Your building project"
|
||
},
|
||
{
|
||
"description": "Apply to work with us as a subcontractor or find a job as a carpenter or apprentice.",
|
||
"name": "Work with Nordvik Bygg"
|
||
},
|
||
{
|
||
"description": "Let us know about noise, dust, or access problems from a building site near you.",
|
||
"name": "Neighbour complaint"
|
||
}
|
||
],
|
||
"page": "/",
|
||
"question": "What brings you to Nordvik Bygg today?"
|
||
},
|
||
{
|
||
"alternative": "Apply to work with us",
|
||
"expect": [
|
||
"Apply to work with us"
|
||
],
|
||
"fields": [
|
||
{
|
||
"label": "Company name",
|
||
"name": "company",
|
||
"optional": false,
|
||
"options": [],
|
||
"type": "text"
|
||
},
|
||
{
|
||
"label": "Registration number",
|
||
"name": "registration_number",
|
||
"optional": false,
|
||
"options": [],
|
||
"type": "text"
|
||
},
|
||
{
|
||
"label": "Your trade",
|
||
"name": "trade",
|
||
"optional": false,
|
||
"options": [
|
||
"Electrical",
|
||
"Plumbing",
|
||
"Scaffolding",
|
||
"Sheet metal",
|
||
"Other"
|
||
],
|
||
"type": "select"
|
||
},
|
||
{
|
||
"label": "Contact email",
|
||
"name": "contact_email",
|
||
"optional": false,
|
||
"options": [],
|
||
"type": "email"
|
||
},
|
||
{
|
||
"label": "Insurance confirmed",
|
||
"name": "insurance_confirmed",
|
||
"optional": false,
|
||
"options": [
|
||
"Yes",
|
||
"Not yet"
|
||
],
|
||
"type": "select"
|
||
},
|
||
{
|
||
"label": "Trade approval",
|
||
"name": "trade_approval",
|
||
"optional": true,
|
||
"options": [],
|
||
"type": "text"
|
||
}
|
||
],
|
||
"options": [
|
||
{
|
||
"description": "Send us your details so we can check if you are a fit for our projects.",
|
||
"name": "Apply to work with us"
|
||
},
|
||
{
|
||
"description": "Tell us who you are and what you can do. No letter needed.",
|
||
"name": "Find a job with us"
|
||
}
|
||
],
|
||
"page": "/work-with-us",
|
||
"question": "Do you want to work with us, or do you need our help with a building?"
|
||
}
|
||
],
|
||
"success": [
|
||
"approved"
|
||
],
|
||
"wants": "to be approved once, and then be called when a job needs them",
|
||
"who": "a trade firm doing electrical, plumbing or scaffolding work"
|
||
},
|
||
{
|
||
"done_when": [
|
||
"hired",
|
||
"declined"
|
||
],
|
||
"enters_as": null,
|
||
"handled_by": "project_managers",
|
||
"id": "job-application",
|
||
"lands_in": "applicants",
|
||
"steps": [
|
||
{
|
||
"alternative": "Work with Nordvik Bygg",
|
||
"expect": [
|
||
"Work with Nordvik Bygg"
|
||
],
|
||
"fields": [],
|
||
"options": [
|
||
{
|
||
"description": "Report a problem, get a survey, or start a new build project.",
|
||
"name": "Your building project"
|
||
},
|
||
{
|
||
"description": "Apply to work with us as a subcontractor or find a job as a carpenter or apprentice.",
|
||
"name": "Work with Nordvik Bygg"
|
||
},
|
||
{
|
||
"description": "Let us know about noise, dust, or access problems from a building site near you.",
|
||
"name": "Neighbour complaint"
|
||
}
|
||
],
|
||
"page": "/",
|
||
"question": "What brings you to Nordvik Bygg today?"
|
||
},
|
||
{
|
||
"alternative": "Find a job with us",
|
||
"expect": [
|
||
"Find a job with us"
|
||
],
|
||
"fields": [
|
||
{
|
||
"label": "Your name",
|
||
"name": "name",
|
||
"optional": false,
|
||
"options": [],
|
||
"type": "text"
|
||
},
|
||
{
|
||
"label": "Your phone",
|
||
"name": "phone",
|
||
"optional": false,
|
||
"options": [],
|
||
"type": "tel"
|
||
},
|
||
{
|
||
"label": "Your trade",
|
||
"name": "trade",
|
||
"optional": false,
|
||
"options": [
|
||
"Carpenter",
|
||
"Bricklayer",
|
||
"Apprentice",
|
||
"Other"
|
||
],
|
||
"type": "select"
|
||
},
|
||
{
|
||
"label": "Your experience",
|
||
"name": "experience",
|
||
"optional": true,
|
||
"options": [],
|
||
"type": "textarea"
|
||
}
|
||
],
|
||
"options": [
|
||
{
|
||
"description": "Send us your details so we can check if you are a fit for our projects.",
|
||
"name": "Apply to work with us"
|
||
},
|
||
{
|
||
"description": "Tell us who you are and what you can do. No letter needed.",
|
||
"name": "Find a job with us"
|
||
}
|
||
],
|
||
"page": "/work-with-us",
|
||
"question": "Do you want to work with us, or do you need our help with a building?"
|
||
}
|
||
],
|
||
"success": [
|
||
"hired"
|
||
],
|
||
"wants": "to be considered, without writing a letter",
|
||
"who": "a carpenter, bricklayer or apprentice looking for work"
|
||
},
|
||
{
|
||
"done_when": [
|
||
"completed",
|
||
"declined"
|
||
],
|
||
"enters_as": "clients",
|
||
"handled_by": "project_managers",
|
||
"id": "change-request",
|
||
"lands_in": "change_orders",
|
||
"steps": [
|
||
{
|
||
"alternative": "Request a change to your building work",
|
||
"expect": [
|
||
"Request a change to your building work"
|
||
],
|
||
"fields": [
|
||
{
|
||
"label": "Your email",
|
||
"name": "email",
|
||
"optional": false,
|
||
"options": [],
|
||
"type": "email"
|
||
},
|
||
{
|
||
"label": "Building address",
|
||
"name": "job_address",
|
||
"optional": false,
|
||
"options": [],
|
||
"type": "text"
|
||
},
|
||
{
|
||
"label": "What needs to change?",
|
||
"name": "change",
|
||
"optional": false,
|
||
"options": [],
|
||
"type": "textarea"
|
||
},
|
||
{
|
||
"label": "When do you need this?",
|
||
"name": "needed_by",
|
||
"optional": true,
|
||
"options": [],
|
||
"type": "date"
|
||
}
|
||
],
|
||
"options": [
|
||
{
|
||
"description": "Tell us what you want changed so we can price it and get it done.",
|
||
"name": "Request a change to your building work"
|
||
}
|
||
],
|
||
"page": "/clients/change-request",
|
||
"question": "What needs to change in your project?"
|
||
}
|
||
],
|
||
"success": [
|
||
"completed"
|
||
],
|
||
"wants": "a price for the change, and the change done if they accept it",
|
||
"who": "a client whose job is under way and who wants something changed"
|
||
},
|
||
{
|
||
"done_when": [
|
||
"won",
|
||
"lost"
|
||
],
|
||
"enters_as": "project_managers",
|
||
"handled_by": "project_managers",
|
||
"id": "log-phone-enquiry",
|
||
"lands_in": "enquiries",
|
||
"steps": [
|
||
{
|
||
"alternative": "Log a phone enquiry",
|
||
"expect": [
|
||
"Log a phone enquiry"
|
||
],
|
||
"fields": [
|
||
{
|
||
"label": "Your name",
|
||
"name": "caller",
|
||
"optional": false,
|
||
"options": [],
|
||
"type": "text"
|
||
},
|
||
{
|
||
"label": "Phone number",
|
||
"name": "phone",
|
||
"optional": false,
|
||
"options": [],
|
||
"type": "tel"
|
||
},
|
||
{
|
||
"label": "Address or site location",
|
||
"name": "address",
|
||
"optional": false,
|
||
"options": [],
|
||
"type": "text"
|
||
},
|
||
{
|
||
"label": "What was said",
|
||
"name": "problem",
|
||
"optional": false,
|
||
"options": [],
|
||
"type": "textarea"
|
||
}
|
||
],
|
||
"options": [
|
||
{
|
||
"description": "Write down the enquiry so it doesn't get lost. One call, one record.",
|
||
"name": "Log a phone enquiry"
|
||
}
|
||
],
|
||
"page": "/project_managers/log-phone-enquiry",
|
||
"question": "What was said on the call?"
|
||
}
|
||
],
|
||
"success": [
|
||
"won"
|
||
],
|
||
"wants": "the enquiry written down before it gets lost",
|
||
"who": "a project manager who just took a call or a text about a building"
|
||
},
|
||
{
|
||
"done_when": [
|
||
"awarded",
|
||
"withdrawn"
|
||
],
|
||
"enters_as": "project_managers",
|
||
"handled_by": "project_managers",
|
||
"id": "post-job-request",
|
||
"lands_in": "job_requests",
|
||
"steps": [
|
||
{
|
||
"alternative": "Give subcontractors a job to price",
|
||
"expect": [
|
||
"Give subcontractors a job to price"
|
||
],
|
||
"fields": [
|
||
{
|
||
"label": "Site address",
|
||
"name": "site_address",
|
||
"optional": false,
|
||
"options": [],
|
||
"type": "text"
|
||
},
|
||
{
|
||
"label": "Trade needed",
|
||
"name": "trade",
|
||
"optional": false,
|
||
"options": [
|
||
"Electrical",
|
||
"Plumbing",
|
||
"Scaffolding",
|
||
"Sheet metal",
|
||
"Other"
|
||
],
|
||
"type": "select"
|
||
},
|
||
{
|
||
"label": "Work description",
|
||
"name": "work",
|
||
"optional": false,
|
||
"options": [],
|
||
"type": "textarea"
|
||
},
|
||
{
|
||
"label": "When work starts",
|
||
"name": "start",
|
||
"optional": false,
|
||
"options": [],
|
||
"type": "date"
|
||
}
|
||
],
|
||
"options": [
|
||
{
|
||
"description": "Tell us about the job you have ready to hand to a subcontractor.",
|
||
"name": "Give subcontractors a job to price"
|
||
}
|
||
],
|
||
"page": "/project_managers/post-job-request",
|
||
"question": "What job do you have for a subcontractor?"
|
||
}
|
||
],
|
||
"success": [
|
||
"awarded"
|
||
],
|
||
"wants": "approved subcontractors to see the job and answer with a price",
|
||
"who": "a project manager with work to hand to a subcontractor"
|
||
},
|
||
{
|
||
"done_when": [
|
||
"accepted",
|
||
"declined"
|
||
],
|
||
"enters_as": "subcontractors",
|
||
"handled_by": "project_managers",
|
||
"id": "submit-bid",
|
||
"lands_in": "bids",
|
||
"steps": [
|
||
{
|
||
"alternative": "Submit a bid on a job",
|
||
"expect": [
|
||
"Submit a bid on a job"
|
||
],
|
||
"fields": [
|
||
{
|
||
"label": "Job reference",
|
||
"name": "job",
|
||
"optional": false,
|
||
"options": [],
|
||
"type": "text"
|
||
},
|
||
{
|
||
"label": "Your price",
|
||
"name": "price",
|
||
"optional": false,
|
||
"options": [],
|
||
"type": "text"
|
||
},
|
||
{
|
||
"label": "Can start",
|
||
"name": "can_start",
|
||
"optional": false,
|
||
"options": [],
|
||
"type": "date"
|
||
}
|
||
],
|
||
"options": [
|
||
{
|
||
"description": "Tell us your price and when you can start so we can review your offer.",
|
||
"name": "Submit a bid on a job"
|
||
}
|
||
],
|
||
"page": "/subcontractors/submit-bid",
|
||
"question": "Will you submit a bid on this job?"
|
||
}
|
||
],
|
||
"success": [
|
||
"accepted"
|
||
],
|
||
"wants": "to say yes with a price and a start date",
|
||
"who": "an approved subcontractor who has seen a job they can take"
|
||
},
|
||
{
|
||
"done_when": [
|
||
"closed"
|
||
],
|
||
"enters_as": "crew",
|
||
"handled_by": "safety_officer",
|
||
"id": "report-site-issue",
|
||
"lands_in": "site_issues",
|
||
"steps": [
|
||
{
|
||
"alternative": "Report a safety finding on site",
|
||
"expect": [
|
||
"Report a safety finding on site"
|
||
],
|
||
"fields": [
|
||
{
|
||
"label": "What kind of issue",
|
||
"name": "kind",
|
||
"optional": false,
|
||
"options": [
|
||
"Hazard",
|
||
"Near miss",
|
||
"Wrong materials",
|
||
"Other"
|
||
],
|
||
"type": "select"
|
||
},
|
||
{
|
||
"label": "Where on site",
|
||
"name": "where",
|
||
"optional": false,
|
||
"options": [],
|
||
"type": "text"
|
||
},
|
||
{
|
||
"label": "What happened",
|
||
"name": "what_happened",
|
||
"optional": false,
|
||
"options": [],
|
||
"type": "textarea"
|
||
}
|
||
],
|
||
"options": [
|
||
{
|
||
"description": "Write down a hazard, near miss, or wrong materials from the site so the safety officer can fix it.",
|
||
"name": "Report a safety finding on site"
|
||
}
|
||
],
|
||
"page": "/crew/report-site-issue",
|
||
"question": "What safety issue did you find?"
|
||
}
|
||
],
|
||
"success": [
|
||
"closed"
|
||
],
|
||
"wants": "to report a hazard, a near miss or wrong materials before they forget",
|
||
"who": "anyone on site, ours or a subcontractor's, on a phone with gloves on"
|
||
},
|
||
{
|
||
"done_when": [
|
||
"delivered",
|
||
"refused"
|
||
],
|
||
"enters_as": "crew",
|
||
"handled_by": "site_managers",
|
||
"id": "order-materials",
|
||
"lands_in": "material_orders",
|
||
"steps": [
|
||
{
|
||
"alternative": "Order materials for the site",
|
||
"expect": [
|
||
"Order materials for the site"
|
||
],
|
||
"fields": [
|
||
{
|
||
"label": "Site address",
|
||
"name": "site_address",
|
||
"optional": false,
|
||
"options": [],
|
||
"type": "text"
|
||
},
|
||
{
|
||
"label": "What do you need?",
|
||
"name": "what",
|
||
"optional": false,
|
||
"options": [],
|
||
"type": "textarea"
|
||
},
|
||
{
|
||
"label": "Needed by",
|
||
"name": "needed_by",
|
||
"optional": false,
|
||
"options": [],
|
||
"type": "date"
|
||
}
|
||
],
|
||
"options": [
|
||
{
|
||
"description": "Tell us what you need and where the site is so we can get it on its way.",
|
||
"name": "Order materials for the site"
|
||
}
|
||
],
|
||
"page": "/crew/order-materials",
|
||
"question": "What do you need on site?"
|
||
}
|
||
],
|
||
"success": [
|
||
"delivered"
|
||
],
|
||
"wants": "it ordered and on site before work stops",
|
||
"who": "a carpenter or bricklayer who is about to run out of something"
|
||
},
|
||
{
|
||
"done_when": [
|
||
"closed"
|
||
],
|
||
"enters_as": "safety_officer",
|
||
"handled_by": "safety_officer",
|
||
"id": "safety-round-finding",
|
||
"lands_in": "site_issues",
|
||
"steps": [
|
||
{
|
||
"alternative": "Report what you find on site",
|
||
"expect": [
|
||
"Report what you find on site"
|
||
],
|
||
"fields": [
|
||
{
|
||
"label": "Issue kind",
|
||
"name": "kind",
|
||
"optional": false,
|
||
"options": [
|
||
"Hazard",
|
||
"Near miss",
|
||
"Wrong materials",
|
||
"Other"
|
||
],
|
||
"type": "select"
|
||
},
|
||
{
|
||
"label": "Where on site",
|
||
"name": "where",
|
||
"optional": false,
|
||
"options": [],
|
||
"type": "text"
|
||
},
|
||
{
|
||
"label": "What happened",
|
||
"name": "what_happened",
|
||
"optional": false,
|
||
"options": [],
|
||
"type": "textarea"
|
||
}
|
||
],
|
||
"options": [
|
||
{
|
||
"description": "Report a hazard, near miss or wrong materials from the site. This helps keep everyone safe and the job on track.",
|
||
"name": "Report what you find on site"
|
||
}
|
||
],
|
||
"page": "/safety_officer/safety-round-finding",
|
||
"question": "What safety issue did you find?"
|
||
}
|
||
],
|
||
"success": [
|
||
"closed"
|
||
],
|
||
"wants": "each thing found written down where the reported issues already are",
|
||
"who": "the safety officer walking a site on the weekly round"
|
||
}
|
||
],
|
||
"personas": [
|
||
{
|
||
"id": "housing-board-damp",
|
||
"need": "survey-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": "survey-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": "build-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": "build-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": "leaking-bathroom",
|
||
"need": "warranty-claim",
|
||
"text": "You redid our bathroom two years ago. Now water is coming through the ceiling of the flat below. I want you to come and fix it."
|
||
},
|
||
{
|
||
"id": "cracked-render",
|
||
"need": "warranty-claim",
|
||
"text": "The render you put on our gable wall last summer has cracked right across. That can't be right after one winter."
|
||
},
|
||
{
|
||
"id": "noisy-mornings",
|
||
"need": "neighbour-complaint",
|
||
"text": "I live next door to the block you are working on. You start drilling at half past six every morning and I have a baby. Who do I talk to?"
|
||
},
|
||
{
|
||
"id": "blocked-driveway",
|
||
"need": "neighbour-complaint",
|
||
"text": "Your skip and a van have been parked across the entrance to our shop's loading bay for three days. We can't get deliveries."
|
||
},
|
||
{
|
||
"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": "extra-window",
|
||
"need": "change-request",
|
||
"text": "You are in the middle of our attic conversion. We have decided we want a roof window over the stairs as well. What would that cost?"
|
||
},
|
||
{
|
||
"id": "pm-took-a-call",
|
||
"need": "log-phone-enquiry",
|
||
"text": "A woman from a housing board in Storgata just rang about water in their basement. I'm in the van. I need to note it before I forget her number."
|
||
},
|
||
{
|
||
"id": "pm-needs-plumber",
|
||
"need": "post-job-request",
|
||
"text": "The bathroom job in Kirkeveien needs a plumber for two weeks from the first of next month. I want prices from the ones we have approved."
|
||
},
|
||
{
|
||
"id": "plumber-bidding",
|
||
"need": "submit-bid",
|
||
"text": "We are an approved plumbing firm. I saw you need someone in Kirkeveien next month. We can do it, I have a price."
|
||
},
|
||
{
|
||
"id": "loose-railing",
|
||
"need": "report-site-issue",
|
||
"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": "report-site-issue",
|
||
"text": "The bathroom membrane delivered today is not the one in the specification. We stopped work on it."
|
||
},
|
||
{
|
||
"id": "out-of-battens",
|
||
"need": "order-materials",
|
||
"text": "We have enough roof battens for today and maybe half of tomorrow. Need another two hundred metres on site by Thursday."
|
||
},
|
||
{
|
||
"id": "weekly-round",
|
||
"need": "safety-round-finding",
|
||
"text": "On my Friday round I found the first-aid box on level two empty and an extension lead run through a puddle."
|
||
}
|
||
]
|
||
} |