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
This commit is contained in:
Bendik Aagaard Lynghaug
2026-09-23 12:31:51 +02:00
co-authored by Claude Fable 5.1
parent baf36319b7
commit 255aeb4f4b
570 changed files with 40795 additions and 181 deletions
+181 -12
View File
@@ -15,13 +15,18 @@ portal-trainer build --plan plans/contractor.yaml --out out/nordvik \
--lint question_lint --llm "MODEL=nemotron-3.5-lightning:30b-a3b engines/ollama.sh"
```
A `plan.yaml` is a needs spec that also says what each form collects.
Everything structural is derived from it with no model involved: the
state machines (read off `stages`: walk the line, be turned down at
any point, succeed only from the end, pass over `skippable` stages),
the front door, a followup page per need, a gated directory per group
with its desk and the pages only that group may open, and every button
the machine allows. The verifier accepts the result by construction.
A `plan.yaml` is a needs spec that also says what each form collects
and, per need, `max_fields`: how many required fields that person
will tolerate, taken from what the business said about them, never
from the form. `build` refuses a form over its budget, and hands the
budget to the verifier, so the check still means something after
handover. Everything structural is derived from the plan with no
model involved: the state machines (read off `stages`: walk the line,
be turned down at any point, succeed only from the end, pass over
`skippable` stages), the front door, a followup page per need, a gated
directory per group with its desk and the pages only that group may
open, and every button the machine allows. The verifier accepts the
result by construction; what it still checks is the budget.
The model writes words only, one page at a time, into a JSON object
whose shape is fixed. Its strings are merged over built-in fallbacks
@@ -31,14 +36,89 @@ key by key, so a bad reply costs wording, never a working site.
|---|---|---|
| A site the verifier accepts | never, in 6 rounds and 16 min | first try, 130 s |
| Held-out personas, with descriptions | - | 8 of 8 |
| Held-out personas, headings only | - | 8 of 8 |
| Held-out personas, headings only | - | 7 of 8 |
The wording numbers are from the re-score of 2026-09-22, one task per
call (`runs/contractor-build-2026-09-21/rescore-2026-09-22/`). The
first score, all tasks in one prompt, said 8 of 8 on headings only;
the apprentice picking the building survey over "Join our carpentry
team" only showed once no other visitor was in the prompt.
For comparison, a Sonnet-class model writing everything free-form
scored 8 of 10 on headings only and silently dropped a stage the owner
had described. `build` cannot drop a stage: it never decides one.
had described. `build` cannot drop a stage: it never decides one. The
denominators differ: the `build` site gives the two crew personas a
one-option page, so they generate no task, and 8 of 8 is eight public
personas where the `generate` number is ten. Held out means held out
from the model: the plan's `who` and `wants` lines and the personas
were written by the same person about the same needs, and the fallback
heading is the need's `wants`, so the two are cousins.
`generate` (below) remains for turning a plain-words intake into a
first plan; what it should hand over is the plan, not the pages.
### Doors: a first question before the forms
Five or six needs on one page is more than a visitor sorts through
(the full contractor plan had six). A plan can put public needs
behind `doors`: each door is one alternative on the front door
leading to a page of its own, where the needs that name it sit.
```yaml
doors:
- id: patients
who: someone with pain or an injury, or a patient who already has a time here
needs:
- id: new-patient
door: patients
...
```
The door's page is a nav page, public, holding the forms. The spec
gives such a need `max_steps: 2` and pins `via` to the door's heading,
so the verifier walks both pages. A door nobody is behind, a door on
an internal need, or a door named like a group is refused, and a
front door over five alternatives is warned about. The visitor is
scored on both pages: a persona who picks the wrong door is a
misroute on `/`, one who picks the wrong form is a misroute on the
door's page.
Cases with doors: `plans/physio.yaml` (a physiotherapy clinic,
patients and referrers), `plans/fotballklubb.yaml` (a football club,
in Norwegian, parents and helpers), `plans/hire.yaml` (a machine hire
yard, hiring and firms), and `plans/contractor-full.yaml` (three
doors over six public needs). Each has an intake under `intakes/` in
the business's own words and held-out personas.
### What a plan can say about a form and its readers
- `multiple: true` on a `select`: pick any number (portal renders
toggles). What a volunteer can do, which events, which committees.
- `groups:` at the top, a list of `{ id, label }`: the groups with a
name the public knows, such as a vel's committees. A select with
`options_from: groups` offers exactly those labels, so the
application form and the desks cannot drift apart.
- `watched_by: [public]`: an ungated read-only page of the bucket at
`/status/<bucket>`, linked from the followup page. Everyone sees
what was sent in and where it stands. `email` and `tel` fields, and
any field marked `private: true`, are projected away before it is
shown.
## Plan: the intake, read by a model, checked by a person
```
portal-trainer plan --intake intakes/contractor.yaml --out out/nordvik \
--personas sectors/construction/needs.yaml \
--llm "MODEL=nemotron-3.5-lightning:30b-a3b engines/ollama.sh"
```
This is the one step where a model decides structure: which needs the
intake implies, the stages, who handles what, the form, the budget.
Its YAML is parsed and validated exactly as `build` will, the errors go
back to it, and what passes is written verbatim for a person to read
before building from it. Personas are never asked of this model; they
are attached from a file, and where their `need:` names an id the plan
does not have, `plan` says so and leaves the mapping to the reader.
`generate` (below) is the older path, a model writing pages free-form
against the lint. It is kept for the record of what it measured.
## How it works
@@ -79,6 +159,12 @@ portal-trainer generate --intake intakes/contractor.yaml --out out/nordvik \
portal-trainer answer --tasks tasks.jsonl --llm engines/ollama.sh > answers.jsonl
```
`answer` puts one task per call to the visitor model, with the options
shuffled per task and the call seeded from the task id: no visitor
sees another visitor's situation, a heading's place on the page cannot
carry the answer, and a rerun on the same site is the same experiment.
The earlier runs under `runs/` answered all tasks in one prompt.
The verifier is portal's `question_lint`, not code in this repo: it
reads portal's own content types and ships in every portal release, so
a generated repo's CI keeps enforcing its needs after handover.
@@ -90,7 +176,8 @@ A backend is any command that takes a prompt on stdin and prints text.
| Backend | Use |
|---|---|
| `engines/ollama.sh` | Local Ollama. `MODEL=qwen3:8b` answers a task in about two seconds on ergo's GPU and is the default visitor. Generation wants a larger model (`MODEL=qwen3.6:27b`), which runs mostly on CPU there. |
| `engines/anthropic.sh` | The Anthropic API, given a working `ANTHROPIC_API_KEY`. |
| `engines/claude.sh` | Claude through Claude Code's own login (a Max or Pro subscription), no API key. `MODEL=sonnet` or `opus`, `EFFORT=low` by default. It drops any `ANTHROPIC_API_KEY` from the environment, because a key outranks the login and a stale one fails every call. Log in once with `claude auth login`. |
| `engines/anthropic.sh` | The Anthropic API, given a working `ANTHROPIC_API_KEY` from the Console. That is separate, prepaid billing; a subscription does not cover it. |
| `engines/mailbox.sh` | Writes each prompt to a directory and waits for a reply file: drive the generator from an agent session, or by hand. |
The visitor and the generator should be different models. A model
@@ -107,6 +194,51 @@ every field the generator reads, so the step that remains is a
listener on `portal.answers.submitted` that runs it and pushes the
draft to a new repo. It passes its own `needs.yaml`.
## The whole card, not the heading
A visitor never sees a bare heading and description. Portal renders a
card: a button, an encouragement, one or more sections each with an
icon, a title and a line of guidance, and the fields with their
labels and placeholders. Since 2026-09-23 the builder fills all of it
and the scorers read all of it.
- **Slots.** Beside the heading and description, each form alternative
gets a button, an encouragement, an icon, a form title and guidance
line, and a placeholder per field. A door gets an icon and a "for
whom" line. Icons are picked from a fixed list of Iconify lucide
names; anything else is dropped.
- **Context from the plan.** Every form alternative also carries two
sections built from what the plan already knows, before the form:
what happens next (the stages, in order, as one sentence) and who
reads it (the handling group and the contact). Their fallbacks are
true before a model has written a word; the model rewords them.
- **Scoring.** `answer --repo <content dir>` shows the visitor each
option as its whole card (headings-only tasks stay headings only).
`rate --repo` does the same and asks a fourth question, "where": do
you know where you are, who this is for, and what the button does.
All four are controlled against the gutted twin.
## Rating wording
```
question_lint --path out/nordvik/questions --needs-sim model.json
portal-trainer rate --model model.json --out out/rated --repo out/nordvik \
--llm "MODEL=qwen3:8b engines/ollama.sh"
```
Four yes-or-no questions per persona (which option is mine, where am
I and what does the button do, what will I be asked, what happens
after I send it), each also put to a gutted
twin of the page with headings, descriptions, the form and the
followup removed. A question the twin still gets a yes on is not
measuring the page, and `rate` says which. The followup page is read
from the repo (`--repo`); without it "what happens next" is reported
as not measured rather than as zero. LIX is over the prose only
(question, descriptions, followup): headings and labels are not
sentences and would pull every page down to "very easy". The
`rate.json` in `runs/contractor-build-2026-09-21/` predates this and
its `asked` and `next` columns are the old, pinned ones.
## Measured so far
**Generated: a building contractor** (`runs/contractor-2026-09-21/`),
@@ -133,6 +265,43 @@ from `intakes/contractor.yaml`, a Sonnet-class model generating.
chose "Get someone to look at a building". The generator has since
been changed to hide personas from the page-writing phase.
**Built: the same contractor from a plan** (`runs/contractor-build-2026-09-21/`),
nemotron writing words only, and re-scored one task per call the day
after (`rescore-2026-09-22/` in it): 8 of 8 with descriptions, 7 of 8
on headings alone, the miss being an apprentice bricklayer reading
"Join our carpentry team" as not for them. `rate` on the same site,
with the followup shown and every question controlled, passes its
controls and puts the pages at LIX 18 to 35.
**Built behind doors, 2026-09-22.** Five plans with a first question
before the forms, each built and then scored by qwen3:8b one task per
call, against held-out personas. Behind a door a persona is asked
twice, on the front door and on the door's page.
| Case | Words by | With descriptions | Headings only | Notes |
|---|---|---|---|---|
| Machine hire (`hire`) | nemotron | 10 of 10 | 10 of 10 | doors that ask a question the visitor already knows the answer to |
| Physio clinic (`physio`) | nemotron | 8 of 10 | 9 of 10 | "Book your first appointment" fails a daughter booking for her mother |
| Football club, Norwegian (`fotballklubb`) | nemotron | 14 of 16 | 11 of 16 | three parents walk past "Er det på tide å melde inn?" |
| Football club, Norwegian | Claude Sonnet | 13 of 16 | 12 of 16 | better sentences, same driver/sponsor blur |
| Whole contractor (`contractor-full`) | nemotron | 18 of 22 | 15 of 22 | "Apply to work with us" and "Find a job with us" cross over for all four |
| Tomter Vel, Norwegian (`tomtervel`), first plan | Claude Sonnet | 25 of 30 | 22 of 30 | "utstyr" for a swing, hearing input behind the wrong door |
| Tomter Vel, plan revised 2026-09-23, whole card | Claude Sonnet | 31 of 38 | 30 of 38 | committees as groups, public lists, hearing input on the front door |
Each run's README names the misroutes and what in the plan or the
heading caused them. A stronger word model did not route better on
the one plan built with both: routing is decided by which distinctions
sit on one page, and the visitor grades that the same whoever wrote
the words.
**Planned: the contractor intake read by a local model**
(`runs/contractor-plan-2026-09-22/`), nemotron, one round, 41 s. The
plan passed every check `build` makes and a reader finds three
structural misses in it the checks cannot: the crew's report made
public, the "papers missing" stage dropped, and no need for the
project manager logging a call. The person reading the plan is not
optional.
**Existing site: uhhm.no** (`runs/uhhm-2026-09-21/`), eight tasks.
| Visitor model | With descriptions | Headings only |
+22
View File
@@ -0,0 +1,22 @@
#!/bin/sh
# LLM backend for portal-trainer on Claude Code's own login (a Max or
# Pro subscription): prompt on stdin, text on stdout. No API key
# needed: an ANTHROPIC_API_KEY in the environment would outrank the
# login, so it is dropped here. Log the CLI in once with
# `claude auth login`; `claude auth status` shows what it uses.
# MODEL is an alias or id (sonnet, opus, claude-sonnet-5); EFFORT is
# low, medium or high. Not --bare: that mode skips the stored login.
#
# The generator's SEED and TEMPERATURE hints cannot be honoured;
# FORMAT=json is turned into an instruction.
set -eu
unset ANTHROPIC_API_KEY ANTHROPIC_AUTH_TOKEN CLAUDECODE CLAUDE_CODE_ENTRYPOINT
prompt=$(cat)
if [ "${FORMAT:-}" = json ]; then
prompt="$prompt
Reply with the JSON object only, no prose, no code fences."
fi
printf '%s' "$prompt" | claude -p --model "${MODEL:-sonnet}" --effort "${EFFORT:-low}" \
--output-format text --permission-mode dontAsk --no-session-persistence \
--tools ""
+38
View File
@@ -0,0 +1,38 @@
# Slik lederen i en fotballgruppe ville fylt det ut.
business: Lia IL Fotball
contact: { name: Kari Lien, email: kari@liail.example }
language: no
what_we_do: >
Fotballgruppa i et idrettslag på bygda. Rundt hundre og tjue unger
fra seks til sekstenår, fordelt på lag etter årskull. Alt drives av
foreldre på fritida: trenere, lagledere, en kasserer og et styre.
who_comes_to_us: >
Foreldre som vil ha ungen med på et lag. Foreldre som sliter med
treningsavgiften og vil dele den opp eller slippe. Folk som vil
hjelpe til, som trener, lagleder, sjåfør eller på dugnad. Bedrifter
i bygda som vil sponse.
what_we_keep_track_of: >
Innmeldinger: en forelder melder inn, treneren på årskullet
godkjenner at det er plass, kassereren ser at avgiften er betalt.
Noen trekker seg underveis.
Avgiftssaker: noen ber om å dele opp eller slippe avgiften; styret
vurderer og sier ja eller nei.
Frivillige: noen tilbyr seg, styret tar kontakt og plasserer dem der
det trengs, eller takker nei.
Sponsorer: en bedrift melder interesse, vi tar en prat, og det blir
en avtale eller ikke.
Ting på banen: lys som ikke virker, mål som er ødelagt, drakter som
mangler. Trenerne melder fra, styret tar tak i det og ordner det.
who_is_involved: >
Trenerne godkjenner innmeldinger på sitt årskull og melder fra om
banen. Kassereren følger opp betaling. Styret tar frivillige,
sponsorer, avgiftssaker og alt som gjelder anlegget.
what_slows_us_down: >
Alt går i en gruppechat og et regneark. Trenerne vet ikke hvem som
har betalt, kassereren vet ikke hvem som er godkjent, og en som
tilbød seg å kjøre i høst fikk aldri svar.
+38
View File
@@ -0,0 +1,38 @@
# An intake as the owner of a machine hire yard would fill it in.
business: Fjellstad Hire
contact: { name: Ola Fjellstad, email: ola@fjellstadhire.example }
language: en
what_we_do: >
We hire out machines: mini diggers, lifts, compactors, generators,
that kind of thing. A counter with two people, a yard with three who
deliver, collect and fix, and me in the office doing accounts and
the business customers.
who_comes_to_us: >
Private people who need a machine for a weekend and have often never
driven one. Building and landscaping firms who need something on a
site from a date for a period. Anyone whose hired machine has
stopped working while they have it. Firms who hire often and want
an account so they can send anyone to collect and get one invoice a
month.
what_we_keep_track_of: >
Hires: someone asks, the counter reserves it, the yard hands it out
or delivers it, and the yard takes it back. Some are cancelled
before they go out.
Breakdowns: a machine stops during a hire; the yard takes it on and
either fixes it on site or swaps it.
Account applications: a firm applies, I check the company and its
credit, and it is approved or turned down.
Damage on return: the yard finds damage when a machine comes back; I
either invoice the customer or write it off.
who_is_involved: >
The counter handles hires. The yard handles breakdowns and the
handing out and taking back. The office does accounts and damage.
what_slows_us_down: >
The yard finds out about breakdowns from whoever picks up the phone.
Damage found on return is written on a whiteboard and half of it is
never invoiced.
+42
View File
@@ -0,0 +1,42 @@
# An intake as the manager of a physiotherapy clinic would fill it in.
business: Bakken Fysioterapi
contact: { name: Marit Bakken, email: marit@bakkenfysio.example }
language: en
what_we_do: >
Six physiotherapists and a receptionist. People come to us with
pain, injuries and after operations; we assess them and treat them
over a course of sessions. Some come on their own, some are sent by
a GP or a hospital, and some have insurance that pays if the insurer
approves the course first.
who_comes_to_us: >
People with something that hurts who want to see the right
therapist. Patients who already have a time and need to move or
drop it. GPs and hospital wards sending us someone, who want to
hear how it went. Insurers, through us, when a course has to be
approved before it starts.
what_we_keep_track_of: >
Requests for a first appointment: they come in, we offer a time with
a therapist who suits, and it is either booked or they go elsewhere.
Cancellations: someone can't come; we either find them a new time or
give the slot to someone waiting.
Referrals: a doctor sends someone, we accept it, book them in, treat
them, and send the doctor a report at the end. Sometimes we send it
back because it isn't something we treat.
Insurance approvals: for some patients we have to ask the insurer
before we start; we send the request and it comes back approved or
refused.
No-shows: someone doesn't turn up and doesn't call. The receptionist
rings them and either rebooks or, after a couple of times, closes it.
who_is_involved: >
The receptionist handles every request, cancellation, referral and
approval. The therapists treat and write the report back to the
doctor, and they are the ones who notice a no-show.
what_slows_us_down: >
Referrals, cancellations and insurance approvals all go through one
inbox that only the receptionist understands. Therapists tell her
about no-shows in the corridor and they get forgotten.
+62
View File
@@ -0,0 +1,62 @@
# Tomter Vel, slik en i styret ville fylt det ut. Det som står om
# velet er hentet fra tomtervel.no (komiteer, kontingent, medlemstall,
# arrangementer); det som står om deling av utstyr er et forslag til
# en ny tjeneste.
business: Tomter Vel
contact: { name: Styret i Tomter Vel, email: post@tomtervel.no }
language: no
what_we_do: >
Velforeningen for Tomter, stiftet i 1947. Vi er et styre på sju og
sju komiteer som alle drives av folk på fritida: arrangementer
(17. mai-frokost, juletregranstenning, skøytedag), elvestien langs
Hobølelva, to lekeplasser vi holder i stand og får kontrollert hvert
år, høringssvar til kommunen, miljøgata i sentrum, pendlerforhold
mot Ruter, og trafikkforhold. 157 husstander betaler kontingent på
250 kroner i året.
who_comes_to_us: >
Husstander som vil bli medlem, eller som har flyttet eller byttet
e-post og vil at vi skal ha det riktig. Folk som har sett noe i
nabolaget som ikke er som det skal: en farlig sving, en huske som
henger i én kjetting, en råtten planke på stien. Beboere som vil
si sin mening om en sak kommunen har på høring. Folk som vil hjelpe
til på et arrangement eller en dugnad, eller sitte i en komité.
Og naboer som har en tilhenger, en stige eller en hekksaks som står
ubrukt, og naboer som trenger å låne en. Eldre og nyopererte som
trenger en hånd med snømåking, handling eller en skyss, og naboer
som gjerne stiller opp hvis noen spør.
what_we_keep_track_of: >
Medlemskap: en husstand melder seg inn, kassereren ser at
kontingenten er betalt, og noen melder seg ut når de flytter.
Meldinger om trafikk: noen melder fra, trafikkomiteen tar det opp
med kommunen eller veieier, og det blir ordnet eller avvist.
Feil på lekeplass og sti: noen melder fra, komiteen tar tak i det
og utbedrer det.
Høringsinnspill: en beboer sender inn, styret tar det med i svaret
eller lar være.
Frivillige: noen tilbyr seg, arrangementskomiteen tar kontakt og
setter dem opp, eller takker nei.
Komitésøknader: noen vil være med, styret plasserer dem eller sier
nei.
Utlegg: en i en komité har lagt ut for noe, kassereren godkjenner og
betaler ut, eller avviser.
Nabohjelp: noen ber om en hånd, nabohjelpsgruppa finner en som kan,
og den som fikk hjelp sier fra når det er ordnet. Naboer som vil
hjelpe melder seg, og kan trekke seg igjen.
Deling av utstyr: en nabo melder at de har noe å låne ut, eller
trenger å låne noe; styret legger det ut på oppslagstavla og tar
det ned når det er gjort.
who_is_involved: >
Kassereren har medlemskap og utlegg. Trafikkomiteen har
trafikkmeldinger, lekeplasskomiteen har feil på anlegg,
arrangementskomiteen har frivillige. Styret har høringsinnspill,
komitésøknader og oppslagstavla. Nabohjelpsgruppa kobler dem som
trenger hjelp med dem som kan. Komiteene leverer utlegg.
what_slows_us_down: >
Medlemslista er en bankutskrift og et regneark. Ting som meldes på
Facebook eller i butikken blir husket av den som hørte det. Folk
som tilbyr seg å hjelpe får svar sent eller aldri.
+28 -1
View File
@@ -1,6 +1,6 @@
# A contractor's whole operation, to stress the builder and the
# harness: 13 needs, 6 roles, 9 buckets, needs sharing a bucket,
# skippable stages, and a front door carrying more than a page should.
# skippable stages, and a front door that had to be tiered.
business: Nordvik Bygg
language: en
contact: { name: Ingrid Nordvik, email: ingrid@nordvikbygg.example }
@@ -12,9 +12,19 @@ about: >
each building site day to day, and one safety officer owns everything
reported from site.
# Six public needs is one over what a front door carries, so the
# public comes through three doors: a building of theirs, work with
# us, and a site of ours next to them (that one is a need on its own).
doors:
- id: your-building
who: an owner, a housing board or a past customer with a building
- id: work-with-us
who: a trade firm, a carpenter or an apprentice who wants work from us
needs:
# --- the public ---------------------------------------------------
- id: survey-enquiry
door: your-building
who: a housing board or private owner with a problem in a building
wants: someone qualified to come and look at it and say what it takes
lands_in: enquiries
@@ -26,6 +36,7 @@ needs:
# see what is coming their way.
moves_by: { surveyed: [project_managers, site_managers] }
watched_by: [site_managers]
max_fields: 4
collects:
- { name: name }
- { name: phone, type: tel }
@@ -34,6 +45,7 @@ needs:
- { name: access, optional: true }
- id: build-enquiry
door: your-building
who: an owner who already knows what they want built or changed
wants: drawings, a permit application and a price
lands_in: enquiries
@@ -45,6 +57,7 @@ needs:
# see what is coming their way.
moves_by: { surveyed: [project_managers, site_managers] }
watched_by: [site_managers]
max_fields: 5
collects:
- { name: name }
- { name: phone, type: tel }
@@ -53,6 +66,7 @@ needs:
- { name: timeframe, type: select, options: [This year, Next year, No fixed date] }
- id: warranty-claim
door: your-building
who: a past customer who has found a fault in work we handed over
wants: us to come back, look at it, and put it right
lands_in: claims
@@ -63,6 +77,7 @@ needs:
# The site manager inspects and puts it right; whether it is ours
# to fix is the project manager's call.
moves_by: { inspected: [site_managers], fixed: [site_managers] }
max_fields: 4
collects:
- { name: name }
- { name: phone, type: tel }
@@ -79,12 +94,14 @@ needs:
done_when: [answered]
success: [answered]
watched_by: [project_managers]
max_fields: 3
collects:
- { name: site_address }
- { name: what_is_wrong, type: textarea }
- { name: reach_me_on }
- id: subcontractor-application
door: work-with-us
who: a trade firm doing electrical, plumbing or scaffolding work
wants: to be approved once, and then be called when a job needs them
lands_in: subcontractors
@@ -94,6 +111,7 @@ needs:
success: [approved]
watched_by: [site_managers]
skippable: [awaiting_papers]
max_fields: 5
collects:
- { name: company }
- { name: registration_number }
@@ -103,6 +121,7 @@ needs:
- { name: trade_approval, optional: true }
- id: job-application
door: work-with-us
who: a carpenter, bricklayer or apprentice looking for work
wants: to be considered, without writing a letter
lands_in: applicants
@@ -110,6 +129,7 @@ needs:
stages: [open, interviewing, offered, hired, declined]
done_when: [hired, declined]
success: [hired]
max_fields: 3
collects:
- { name: name }
- { name: phone, type: tel }
@@ -130,6 +150,7 @@ needs:
# their own link, the site manager does the work.
moves_by: { approved: [submitter], declined: [submitter, project_managers], completed: [site_managers] }
watched_by: [site_managers]
max_fields: 3
collects:
- { name: email, type: email }
- { name: job_address }
@@ -150,6 +171,7 @@ needs:
# see what is coming their way.
moves_by: { surveyed: [project_managers, site_managers] }
watched_by: [site_managers]
max_fields: 4
collects:
- { name: caller }
- { name: phone, type: tel }
@@ -167,6 +189,7 @@ needs:
success: [awarded]
# This is how subcontractors see what there is to bid on.
watched_by: [subcontractors, site_managers]
max_fields: 4
collects:
- { name: site_address }
- { name: trade, type: select, options: [Electrical, Plumbing, Scaffolding, Sheet metal, Other] }
@@ -185,6 +208,7 @@ needs:
success: [accepted]
watched_by: [site_managers]
skippable: [shortlisted]
max_fields: 3
collects:
- { name: job }
- { name: price }
@@ -204,6 +228,7 @@ needs:
# safety officer closes it.
moves_by: { in_hand: [safety_officer, site_managers] }
watched_by: [project_managers]
max_fields: 3
collects:
- { name: kind, type: select, options: [Hazard, Near miss, Wrong materials, Other] }
- { name: where }
@@ -220,6 +245,7 @@ needs:
success: [delivered]
# The crew confirms it arrived.
moves_by: { delivered: [crew, site_managers] }
max_fields: 3
collects:
- { name: site_address }
- { name: what, type: textarea }
@@ -238,6 +264,7 @@ needs:
# safety officer closes it.
moves_by: { in_hand: [safety_officer, site_managers] }
watched_by: [project_managers]
max_fields: 3
collects:
- { name: kind, type: select, options: [Hazard, Near miss, Wrong materials, Other] }
- { name: where }
+6
View File
@@ -19,6 +19,7 @@ needs:
stages: [open, surveyed, quoted, won, lost]
done_when: [won, lost]
success: [won]
max_fields: 4
collects:
- { name: name }
- { name: phone, type: tel }
@@ -34,6 +35,7 @@ needs:
stages: [open, surveyed, quoted, won, lost]
done_when: [won, lost]
success: [won]
max_fields: 5
collects:
- { name: name }
- { name: phone, type: tel }
@@ -50,6 +52,7 @@ needs:
stages: [open, surveyed, quoted, won, lost]
done_when: [won, lost]
success: [won]
max_fields: 4
collects:
- { name: caller }
- { name: phone, type: tel }
@@ -65,6 +68,7 @@ needs:
done_when: [approved, declined]
success: [approved]
skippable: [awaiting_papers]
max_fields: 5
collects:
- { name: company }
- { name: registration_number }
@@ -81,6 +85,7 @@ needs:
stages: [open, interviewing, hired, declined]
done_when: [hired, declined]
success: [hired]
max_fields: 3
collects:
- { name: name }
- { name: phone, type: tel }
@@ -96,6 +101,7 @@ needs:
stages: [open, in_hand, closed]
done_when: [closed]
success: [closed]
max_fields: 3
collects:
- { name: kind, type: select, options: [Hazard, Near miss, Wrong materials, Other] }
- { name: where }
+112
View File
@@ -0,0 +1,112 @@
# Fotballgruppa i et idrettslag, på norsk: to dører på forsiden
# (foresatte, og de som vil bidra), roller som overlapper på én
# innmelding (treneren godkjenner, kassereren ser betalingen), og en
# intern melding fra trenerne til styret.
business: Lia IL Fotball
language: no
contact: { name: Kari Lien, email: kari@liail.example }
about: >
Fotballgruppa i et idrettslag på bygda. Rundt hundre og tjue unger
fra seks til seksten år, fordelt på lag etter årskull, drevet av
foreldre på fritida.
doors:
- id: foresatte
who: en forelder eller foresatt til et barn som vil spille, eller allerede spiller
- id: bidra
who: noen som vil hjelpe til i klubben, eller en bedrift som vil støtte den
needs:
- id: innmelding
who: en forelder som vil ha ungen med på et lag
wants: at barnet får plass på laget for sitt årskull
door: foresatte
lands_in: innmeldinger
handled_by: trenere
stages: [open, godkjent, betalt, trukket]
done_when: [betalt, trukket]
success: [betalt]
# Treneren godkjenner plassen, kassereren ser at det er betalt.
moves_by: { betalt: [kasserer] }
watched_by: [kasserer]
max_fields: 5
collects:
- { name: barnets_navn }
- { name: fodselsar, type: select, options: ["2010", "2011", "2012", "2013", "2014", "2015", "2016", "2017", "2018", "2019", "2020"] }
- { name: foresatt }
- { name: telefon, type: tel }
- { name: epost, type: email }
- { name: spilt_for, optional: true }
- id: avgiftssak
who: en forelder som sliter med treningsavgiften
wants: å dele den opp, eller slippe den
door: foresatte
lands_in: avgiftssaker
handled_by: styret
stages: [open, vurdert, innvilget, avslatt]
done_when: [innvilget, avslatt]
success: [innvilget]
max_fields: 3
collects:
- { name: barnets_navn }
- { name: foresatt }
- { name: hva_gjelder_det, type: textarea }
- { name: telefon, type: tel, optional: true }
- id: frivillig
who: en som vil hjelpe til, som trener, lagleder, sjåfør eller på dugnad
wants: å bli brukt der det trengs
door: bidra
lands_in: frivillige
handled_by: styret
stages: [open, kontaktet, plassert, avslatt]
done_when: [plassert, avslatt]
success: [plassert]
max_fields: 3
collects:
- { name: navn }
- { name: telefon, type: tel }
- { name: hva_kan_du, type: select, options: [Trene et lag, Være lagleder, Kjøre til kamper, Dugnad, Annet] }
- id: sponsor
who: en bedrift i bygda som vil støtte klubben
wants: en prat om hva de kan bidra med, og en avtale
door: bidra
lands_in: sponsorer
handled_by: styret
stages: [open, i_dialog, avtalt, avslatt]
done_when: [avtalt, avslatt]
success: [avtalt]
max_fields: 3
collects:
- { name: bedrift }
- { name: kontaktperson }
- { name: telefon, type: tel }
- { name: hva_tenker_dere, type: textarea, optional: true }
- id: baneproblem
who: en trener som ser at noe på anlegget ikke er i orden
wants: at styret får vite det og ordner det
enters_as: trenere
lands_in: baneproblemer
handled_by: styret
stages: [open, tatt_tak_i, ordnet]
done_when: [ordnet]
success: [ordnet]
max_fields: 2
collects:
- { name: hvor }
- { name: hva, type: textarea }
# Holdt unna alle modeller som skriver ord.
personas:
- { id: ny-i-bygda, need: innmelding, text: "Vi flyttet hit i sommer og sønnen vår på ni har spilt fotball før. Hvordan får vi ham med på et lag her?" }
- { id: tvillinger, need: innmelding, text: "Jeg har tvillingjenter på sju som maser om å begynne. Er det plass, og hva koster det?" }
- { id: alenefar, need: avgiftssak, text: "Jeg er alene med tre unger og treningsavgiften for alle tre blir for mye på en gang. Går det an å dele den opp?" }
- { id: permittert, need: avgiftssak, text: "Jeg ble permittert i vinter. Kan dattera mi fortsette å spille selv om vi ikke klarer avgiften akkurat nå?" }
- { id: pensjonist, need: frivillig, text: "Jeg er pensjonert og spilte selv i mange år. Har dere bruk for en som kan ta de minste et par kvelder i uka?" }
- { id: stor-bil, need: frivillig, text: "Jeg kan ikke trene noen, men jeg har stor bil og kan kjøre til bortekamper." }
- { id: rorlegger, need: sponsor, text: "Jeg driver rørleggerfirma her i bygda og vil gjerne ha logoen vår på draktene til et lag. Hvem snakker jeg med?" }
- { id: kafeen, need: sponsor, text: "Vi har kafé i sentrum og kan bidra med noe til cupen i mai, kanskje vafler eller litt penger." }
- { id: lyset-slukker, need: baneproblem, text: "Lyset på kunstgresset slår seg av halv åtte og vi trener til åtte. Ungene løper i mørket." }
+94
View File
@@ -0,0 +1,94 @@
# A machine hire yard: two doors (hiring, and an account for firms),
# one aggregate walked by two roles (the counter reserves, the yard
# hands out and takes back), and the yard's own damage report.
business: Fjellstad Hire
language: en
contact: { name: Ola Fjellstad, email: ola@fjellstadhire.example }
about: >
Machine hire: mini diggers, lifts, compactors, generators. A counter,
a yard that delivers, collects and fixes, and an office.
doors:
- id: hiring
who: someone who needs a machine, or has one of ours that has stopped
- id: firms
who: a firm that hires often and wants an account with us
needs:
- id: hire-request
who: a private person or a firm who needs a machine for a while
wants: the right machine, from a date, for as long as they need it
door: hiring
lands_in: hires
handled_by: counter
stages: [open, reserved, out, returned, cancelled]
done_when: [returned, cancelled]
success: [returned]
# The counter reserves; the yard hands it out and takes it back.
moves_by: { out: [yard], returned: [yard] }
max_fields: 5
collects:
- { name: name }
- { name: phone, type: tel }
- { name: what, type: textarea }
- { name: from, type: date }
- { name: until, type: date }
- { name: deliver_to, optional: true }
- id: breakdown
who: someone whose hired machine has stopped working
wants: it running again, or swapped, today
door: hiring
lands_in: breakdowns
handled_by: yard
stages: [open, in_hand, resolved]
done_when: [resolved]
success: [resolved]
max_fields: 3
collects:
- { name: phone, type: tel }
- { name: machine }
- { name: what_happened, type: textarea }
- { name: where, optional: true }
- id: account-request
who: a firm that hires often
wants: to send anyone to collect, and get one invoice a month
door: firms
lands_in: accounts
handled_by: office
stages: [open, checked, approved, declined]
done_when: [approved, declined]
success: [approved]
max_fields: 4
collects:
- { name: company }
- { name: registration_number }
- { name: contact }
- { name: phone, type: tel }
- { name: invoice_email, type: email, optional: true }
- id: damage-on-return
who: someone in the yard who finds damage when a machine comes back
wants: it written down before the customer has left
enters_as: yard
lands_in: damage_reports
handled_by: office
stages: [open, invoiced, written_off]
done_when: [invoiced, written_off]
success: [invoiced]
max_fields: 3
collects:
- { name: machine }
- { name: hire_or_customer }
- { name: damage, type: textarea }
# Held out from every model that writes words.
personas:
- { id: garden-wall, need: hire-request, text: "I'm building a stone wall in the garden and need a small digger for a weekend. I've never driven one." }
- { id: roofer-lift, need: hire-request, text: "We're a roofing crew and need a scissor lift on site in Dalen from Monday for about two weeks." }
- { id: stuck-compactor, need: breakdown, text: "The plate compactor I picked up this morning won't start. I've got a crew standing around." }
- { id: lift-error, need: breakdown, text: "The lift you delivered keeps showing an error and stops halfway up. It's on our site at the school." }
- { id: landscaper-account, need: account-request, text: "We're a landscaping firm hiring from you almost every month and I'm tired of paying by card each time. Can we get invoiced monthly?" }
- { id: builder-account, need: account-request, text: "Small building firm, six people. We'd like to be able to send whoever is nearest to pick things up and have it on our account." }
- { id: yard-window, need: damage-on-return, text: "The mini digger from the Berg job came back with a smashed rear window and hydraulic oil everywhere." }
+113
View File
@@ -0,0 +1,113 @@
# A physiotherapy clinic: two doors on the front, patients and the
# people who send them; the reception handles everything, therapists
# write the report back and notice who did not turn up.
business: Bakken Fysioterapi
language: en
contact: { name: Marit Bakken, email: marit@bakkenfysio.example }
about: >
Six physiotherapists and a receptionist. People come with pain,
injuries and after operations, on their own or sent by a doctor,
and we treat them over a course of sessions.
doors:
- id: patients
who: someone with pain or an injury, or a patient who already has a time here
- id: referrers
who: a doctor, a hospital ward or an insurer sending someone to us
needs:
- id: new-patient
who: someone with something that hurts
wants: a first appointment with a therapist who suits them
door: patients
lands_in: requests
handled_by: reception
stages: [open, offered, booked, declined]
done_when: [booked, declined]
success: [booked]
max_fields: 4
collects:
- { name: name }
- { name: phone, type: tel }
- { name: what_hurts, type: textarea }
- { name: when, type: select, options: [Mornings, Afternoons, Any time] }
- { name: sent_by_doctor, type: select, options: ["Yes", "No"], optional: true }
- id: move-or-cancel
who: a patient who already has a time and cannot come
wants: the time moved, or the slot freed
door: patients
lands_in: cancellations
handled_by: reception
stages: [open, rebooked, released]
done_when: [rebooked, released]
success: [rebooked]
max_fields: 3
collects:
- { name: name }
- { name: phone, type: tel }
- { name: appointment_day, type: date }
- { name: new_time_wish, optional: true }
- id: referral
who: a GP or a hospital ward sending a patient
wants: the patient seen, and a report back when the course ends
door: referrers
lands_in: referrals
handled_by: reception
stages: [open, accepted, booked, reported, returned]
done_when: [reported, returned]
success: [reported]
# The therapist who treated them writes the report; they see the
# referral from the start.
moves_by: { reported: [therapists] }
watched_by: [therapists]
max_fields: 5
collects:
- { name: patient_name }
- { name: patient_phone, type: tel }
- { name: referrer }
- { name: what_for, type: textarea }
- { name: urgency, type: select, options: [This week, Within a month, Routine] }
- id: insurance-approval
who: the receptionist, before a course that an insurer has to approve
wants: the request sent and its answer kept where the patient's case is
enters_as: reception
lands_in: approvals
handled_by: reception
stages: [open, sent, approved, refused]
done_when: [approved, refused]
success: [approved]
max_fields: 3
collects:
- { name: patient_name }
- { name: insurer }
- { name: sessions }
- { name: case_number, optional: true }
- id: no-show
who: a therapist whose patient did not turn up and did not call
wants: the reception to ring them and get them back in
enters_as: therapists
lands_in: no_shows
handled_by: reception
stages: [open, contacted, rebooked, closed]
done_when: [rebooked, closed]
success: [rebooked]
max_fields: 2
collects:
- { name: patient_name }
- { name: appointment_day, type: date }
- { name: note, optional: true }
# Held out from every model that writes words.
personas:
- { id: runner-knee, need: new-patient, text: "I've been running for years and the outside of my right knee has started hurting after about five kilometres. I'd like someone to have a look, preferably in the mornings." }
- { id: post-surgery-mother, need: new-patient, text: "My mother had a hip replacement three weeks ago and the hospital said she needs training. She can't do much on her own and I'll drive her." }
- { id: sick-child, need: move-or-cancel, text: "I have a session on Thursday at ten but my daughter has a fever and I can't come. Can I move it?" }
- { id: sent-abroad, need: move-or-cancel, text: "Work is sending me abroad next week so my appointment on the 3rd is off. Just free the slot, I'll be in touch when I'm back." }
- { id: gp-shoulder, need: referral, text: "I'm a GP. A patient of mine has a frozen shoulder that isn't improving with what I can offer. I'd like her to start with you and hear how it goes." }
- { id: hospital-discharge, need: referral, text: "Orthopaedic ward here. We're discharging a man after an ankle fracture on Friday and need follow-up rehab arranged near where he lives. He'll need a report for his sick leave." }
- { id: reception-approval, need: insurance-approval, text: "The patient in room two has a policy that covers twelve sessions if the insurer signs off first. I need to send that off and keep track of the answer." }
- { id: therapist-no-show, need: no-show, text: "My two o'clock didn't turn up and didn't call. Second time. Someone needs to ring him." }
+243
View File
@@ -0,0 +1,243 @@
# Tomter Vel, en velforening: fire dører på forsiden (medlemskap,
# melde fra, bidra, naboer imellom) og høringsinnspill rett på
# forsiden, siden den som har en mening om en sak ikke ser seg selv
# som frivillig. Komiteene er gruppene: en søknad om plass i en
# komité velger blant de samme sju som har hver sin pult. Trafikk,
# anlegg og oppslagstavla kan alle lese; kontaktopplysninger vises
# ikke der. Nabohjelp begge veier, og oppslagstavla for deling av
# utstyr holdes lite: én melding, styret legger den ut og tar den ned.
business: Tomter Vel
language: no
contact: { name: Styret i Tomter Vel, email: post@tomtervel.no }
about: >
Velforeningen for Tomter, stiftet i 1947. Sju komiteer drevet på
fritida: arrangementer, elvestien, lekeplassene, høringssvar,
miljøgata, pendlerforhold og trafikk. 157 husstander er medlemmer.
# Komiteene, som gruppene heter, med navnet folk kjenner dem under.
groups:
- { id: arrangementer, label: Arrangementer }
- { id: elvesti, label: Elvesti }
- { id: horingsinstans, label: Høringsinstans }
- { id: lekeplasser, label: Leke- og møteplasser }
- { id: miljogate, label: Miljøgate }
- { id: pendlerforhold, label: Pendlerforhold }
- { id: trafikk, label: Trafikkforhold }
doors:
- id: medlem
who: en husstand i Tomter som vil bli medlem, betale kontingent, eller melde flytting, ny e-post eller utmelding
- id: melde-fra
who: noen som har sett noe farlig i trafikken, eller noe ødelagt på lekeplassen eller stien
- id: bidra
who: noen som vil stille opp på 17. mai, dugnad eller et arrangement, eller sitte i en komité
- id: naboer
who: en nabo som trenger en hånd med snømåking, handling eller skyss, kan gi en, eller har noe å låne ut
needs:
- id: bli-medlem
who: en husstand i Tomter
wants: å bli medlem og få betalt kontingenten
door: medlem
lands_in: husstander
handled_by: kasserer
stages: [open, betalt, utmeldt]
done_when: [betalt, utmeldt]
success: [betalt]
max_fields: 3
collects:
- { name: navn }
- { name: adresse }
- { name: epost, type: email }
- { name: telefon, type: tel, optional: true }
- id: endre-medlemskap
who: et medlem som har flyttet, byttet e-post eller vil melde seg ut
wants: at velet har riktige opplysninger om dem
door: medlem
lands_in: medlemsendringer
handled_by: kasserer
stages: [open, oppdatert]
done_when: [oppdatert]
success: [oppdatert]
max_fields: 3
collects:
- { name: navn }
- { name: adresse }
- { name: hva_er_nytt, type: textarea }
- id: trafikkfare
who: en som har sett et farlig sted i trafikken
wants: at velet tar det opp med kommunen eller den som eier veien
door: melde-fra
lands_in: trafikkmeldinger
handled_by: trafikk
stages: [open, tatt_opp, ordnet, avvist]
done_when: [ordnet, avvist]
success: [ordnet]
# Alle kan se hva som er meldt og hvor det står; e-posten vises ikke.
watched_by: [styret, public]
max_fields: 2
collects:
- { name: hvor }
- { name: hva, type: textarea }
- { name: epost, type: email, optional: true }
- id: anleggsfeil
who: en som ser at noe på lekeplassen eller stien er ødelagt
wants: at det blir fikset før noen skader seg
door: melde-fra
lands_in: anleggsfeil
handled_by: lekeplasser
stages: [open, tatt_tak_i, utbedret]
done_when: [utbedret]
success: [utbedret]
watched_by: [public]
max_fields: 2
collects:
- { name: hvor, type: select, options: [Lekeplassen, Elvestien, Skøytebanen, Et annet sted] }
- { name: hva, type: textarea }
# Rett på forsiden: den som har en mening om en sak er ikke frivillig.
- id: horingsinnspill
who: en beboer som har en mening om en sak kommunen har på høring
wants: at velet tar det med i sitt svar
lands_in: innspill
handled_by: horingsinstans
watched_by: [styret]
stages: [open, tatt_med, ikke_tatt_med]
done_when: [tatt_med, ikke_tatt_med]
success: [tatt_med]
max_fields: 3
collects:
- { name: navn }
- { name: sak }
- { name: innspill, type: textarea }
- id: hjelpe-til
who: en som vil hjelpe til på et arrangement eller en dugnad
wants: å bli satt opp på noe som passer dem
door: bidra
lands_in: frivillige
handled_by: arrangementer
stages: [open, kontaktet, satt_opp, takket_nei]
done_when: [satt_opp, takket_nei]
success: [satt_opp]
max_fields: 3
collects:
- { name: navn }
- { name: telefon, type: tel }
- { name: hva, type: select, multiple: true, options: [17. mai, Juletregranstenning, Skøytedag, Dugnad på elvestien, Det som trengs] }
- id: komite
who: en som vil sitte i en komité
wants: en plass i den komiteen som driver med det de bryr seg om
door: bidra
lands_in: komitesoknader
handled_by: styret
stages: [open, plassert, avslatt]
done_when: [plassert, avslatt]
success: [plassert]
max_fields: 3
collects:
- { name: navn }
- { name: epost, type: email }
- { name: komite, type: select, multiple: true, options_from: groups }
# Nabohjelp: den som trenger en hånd, og den som kan gi en. En
# nabohjelpsgruppe kobler dem; den som fikk hjelp sier fra selv at
# det er ordnet.
- id: trenger-hjelp
who: en beboer som ikke får til noe selv for tiden, som snømåking, handling eller en skyss
wants: at en nabo stiller opp
door: naboer
lands_in: hjelpebehov
handled_by: nabohjelp
stages: [open, formidlet, ordnet, ikke_lost]
done_when: [ordnet, ikke_lost]
success: [ordnet]
moves_by: { ordnet: [submitter, nabohjelp] }
max_fields: 4
collects:
- { name: navn }
- { name: email, type: email }
- { name: adresse }
- { name: hva, type: textarea }
- { name: telefon, type: tel, optional: true }
- id: kan-hjelpe
who: en nabo som kan stille opp når noen trenger det
wants: å bli spurt når det passer
door: naboer
lands_in: hjelpere
handled_by: nabohjelp
stages: [open, registrert, trukket]
done_when: [registrert, trukket]
success: [registrert]
moves_by: { trukket: [submitter, nabohjelp] }
max_fields: 4
collects:
- { name: navn }
- { name: email, type: email }
- { name: telefon, type: tel }
- { name: kan, type: select, multiple: true, options: [Snømåking, Handling, Kjøring, Småfiks i huset, En prat og litt selskap, Det som trengs] }
# Oppslagstavla, holdt lite: én melding.
- id: dele-utstyr
who: en nabo som har noe å låne ut, eller trenger å låne noe
wants: et oppslag som naboene ser
door: naboer
lands_in: oppslag
handled_by: styret
stages: [open, lagt_ut, tatt_ned]
done_when: [lagt_ut, tatt_ned]
success: [lagt_ut]
# Den som la det ut kan ta det ned selv. Tavla er offentlig: det er
# den naboene leser; navn og e-post vises ikke der.
moves_by: { tatt_ned: [submitter, styret] }
watched_by: [public]
max_fields: 4
collects:
- { name: navn, private: true }
- { name: email, type: email }
- { name: har_eller_trenger, type: select, options: [Jeg har noe å låne ut, Jeg trenger å låne noe] }
- { name: hva, type: textarea }
- id: utlegg
who: en i en komité som har lagt ut for noe
wants: pengene tilbake
enters_as: komiteer
lands_in: utlegg
handled_by: kasserer
stages: [open, godkjent, utbetalt, avvist]
done_when: [utbetalt, avvist]
success: [utbetalt]
max_fields: 3
collects:
- { name: navn }
- { name: belop }
- { name: hva, type: textarea }
# Holdt unna alle modeller som skriver ord.
personas:
- { id: nyinnflyttet, need: bli-medlem, text: "Vi flyttet til Tomter i mars og har hørt at det finnes et vel. Hvordan blir vi med, og hva koster det?" }
- { id: glemte-a-betale, need: bli-medlem, text: "Jeg har vært medlem før men fikk ikke betalt i fjor. Kan jeg bare vippse, og til hvem?" }
- { id: ny-epost, need: endre-medlemskap, text: "Vi har byttet e-postadresse og får ikke lenger noe fra dere." }
- { id: flytter, need: endre-medlemskap, text: "Vi selger huset og flytter til Ski i august, så vi må ut av medlemslista." }
- { id: skolevei, need: trafikkfare, text: "Bilene kjører altfor fort i svingen ved skolen om morgenen, og det er ikke fortau der ungene går." }
- { id: busslomme, need: trafikkfare, text: "Det er umulig å se om det kommer noen når man skal ut fra busslomma ved butikken, hekken har blitt kjempehøy." }
- { id: huske, need: anleggsfeil, text: "Huska på lekeplassen henger i én kjetting. Sønnen min dro i den i går og den holdt så vidt." }
- { id: bru, need: anleggsfeil, text: "Planken på den lille brua på stien langs elva er råtten, jeg gikk nesten gjennom." }
- { id: blokker, need: horingsinnspill, text: "Kommunen skal bygge blokker på jordet bak stasjonen, og jeg synes det er alt for høyt. Kan velet si ifra?" }
- { id: togtider, need: horingsinnspill, text: "Ruter vil kutte det tidlige toget. Jeg pendler til Oslo hver dag og vil at velet skriver til dem om det." }
- { id: vafler, need: hjelpe-til, text: "Jeg kan steke vafler på 17. mai-frokosten hvis dere trenger folk." }
- { id: motorsag, need: hjelpe-til, text: "Har motorsag og ledig helg, kan ta trær langs elvestien hvis det er en dugnad." }
- { id: pendler, need: komite, text: "Jeg pendler og er lei av at ingen snakker med Ruter. Jeg vil gjerne være med i gjengen som jobber med det." }
- { id: planlegger, need: komite, text: "Jeg er arealplanlegger av yrke og kunne bidratt når kommunen sender saker på høring." }
- { id: tilhenger, need: dele-utstyr, text: "Jeg har en tilhenger som står ubrukt mesteparten av året, naboer kan gjerne låne den for en hundrelapp." }
- { id: stige, need: dele-utstyr, text: "Trenger en lang stige en dag i helga for å rense takrenna, er det noen i nærheten som har?" }
- { id: snomaking, need: trenger-hjelp, text: "Jeg er 84 og klarer ikke å måke innkjørselen lenger. Er det noen som kan hjelpe meg når det snør?" }
- { id: nyoperert, need: trenger-hjelp, text: "Jeg er nyoperert i hofta og kommer meg ikke til butikken på noen uker. Kunne noen handlet for meg?" }
- { id: hjemmekontor, need: kan-hjelpe, text: "Jeg jobber hjemmefra og kan godt måke eller handle for noen som ikke får det til selv." }
- { id: pensjonert-elektriker, need: kan-hjelpe, text: "Pensjonert elektriker, har bil og god tid. Si fra om noen trenger skyss eller en hånd med småting." }
- { id: kvittering, need: utlegg, text: "Jeg kjøpte pølser og kakao til skøytedagen for 1 840 kroner, her er kvitteringa, vil ha det igjen." }
@@ -0,0 +1,45 @@
# The same site, re-scored with the per-task answerer
The site is the one in the directory above, built 2026-09-21 and
untouched. Visitor: qwen3:8b on ergo's Ollama, one call per task,
options shuffled per task, seeded from the task id. question_lint
from portal at d7f60ea.
| Visitor could read | 2026-09-21, all tasks in one prompt | 2026-09-22, one task per call |
|---|---|---|
| Headings and descriptions | 8 of 8 | 8 of 8 |
| Headings only | 8 of 8 | 7 of 8 |
The one misroute: the apprentice ("I finish vocational school this
spring and need an apprenticeship as a bricklayer") reads the four
headings alone and picks "Get a professional building survey" at
0.85, over "Join our carpentry team". Read as a bricklayer would, the
heading names a trade that is not theirs, and nothing on the page
says the team hires bricklayers or apprentices. That is a heading
defect the batched answerer did not find, because with all eight
personas in one prompt the model had two obvious jobseekers and one
obvious jobs heading.
`rate`, on the same site, with the followup page shown and every
question controlled against the gutted twin:
| need | LIX | which | asked | next | twin says |
|---|---|---|---|---|---|
| survey-enquiry | 25 | 2/2 | 2/2 | 2/2 | 0/0/0 |
| build-enquiry | 26 | 2/2 | 2/2 | 2/2 | 0/0/0 |
| subcontractor-application | 35 | 2/2 | 2/2 | 2/2 | 0/0/0 |
| job-application | 27 | 1/2 | 2/2 | 2/2 | 0/0/0 |
| report-site-issue | 18 | 2/2 | 2/2 | 2/2 | 0/0/0 |
- "next" was 0 of 2 everywhere on 2026-09-21 because the front door
was rated without its followup page. With the followup read from
the repo it is 2 of 2, and 0 on the twin: the followup pages do say
what happens.
- "asked" was 2 of 2 on the twin as well, at first, when the twin
listed "Field 1, Field 2, Field 3": the count alone got a yes. The
twin now has no form line, and the control passes.
- LIX rose from 16-29 to 18-35 once headings and labels were left out
of the count; the subcontractor page is the one that reads "easy"
rather than "very easy".
- The 1 of 2 on job-application is the apprentice, the same persona
the answerer misroutes on headings alone.
@@ -0,0 +1,8 @@
{"choice":"Get a professional building survey","confidence":0.95,"id":"housing-board-damp@/"}
{"choice":"Get a professional building survey","confidence":0.95,"id":"buyer-before-purchase@/"}
{"choice":"Plan your building project with us","confidence":0.95,"id":"attic-conversion@/"}
{"choice":"Plan your building project with us","confidence":0.95,"id":"shop-to-flat@/"}
{"choice":"Become a trusted subcontractor","confidence":0.95,"id":"electrician-firm@/"}
{"choice":"Become a trusted subcontractor","confidence":0.95,"id":"scaffolder@/"}
{"choice":"Join our carpentry team","confidence":0.95,"id":"carpenter-jobseeker@/"}
{"choice":"Join our carpentry team","confidence":0.95,"id":"apprentice@/"}
@@ -0,0 +1,8 @@
{"choice":"Get a professional building survey","confidence":0.95,"id":"housing-board-damp@/"}
{"choice":"Get a professional building survey","confidence":0.95,"id":"buyer-before-purchase@/"}
{"choice":"Plan your building project with us","confidence":0.95,"id":"attic-conversion@/"}
{"choice":"Plan your building project with us","confidence":0.95,"id":"shop-to-flat@/"}
{"choice":"Become a trusted subcontractor","confidence":0.95,"id":"electrician-firm@/"}
{"choice":"Become a trusted subcontractor","confidence":0.95,"id":"scaffolder@/"}
{"choice":"Join our carpentry team","confidence":0.95,"id":"carpenter-jobseeker@/"}
{"choice":"Get a professional building survey","confidence":0.85,"id":"apprentice@/"}
@@ -0,0 +1,102 @@
{
"build-enquiry": {
"control": {
"asked": 0,
"next": 0,
"which": 0
},
"control_ok": true,
"followup_shown": true,
"lix": 26.25,
"options": 4,
"overloaded": false,
"personas": 2,
"required_fields": 5,
"steps": 1,
"understanding": {
"asked": 2,
"next": 2,
"which": 2
}
},
"job-application": {
"control": {
"asked": 0,
"next": 0,
"which": 0
},
"control_ok": true,
"followup_shown": true,
"lix": 26.952380952380956,
"options": 4,
"overloaded": false,
"personas": 2,
"required_fields": 3,
"steps": 1,
"understanding": {
"asked": 2,
"next": 2,
"which": 1
}
},
"report-site-issue": {
"control": {
"asked": 0,
"next": 0,
"which": 0
},
"control_ok": true,
"followup_shown": true,
"lix": 17.933333333333334,
"options": 1,
"overloaded": false,
"personas": 2,
"required_fields": 3,
"steps": 1,
"understanding": {
"asked": 2,
"next": 2,
"which": 2
}
},
"subcontractor-application": {
"control": {
"asked": 0,
"next": 0,
"which": 0
},
"control_ok": true,
"followup_shown": true,
"lix": 34.61904761904762,
"options": 4,
"overloaded": false,
"personas": 2,
"required_fields": 5,
"steps": 1,
"understanding": {
"asked": 2,
"next": 2,
"which": 2
}
},
"survey-enquiry": {
"control": {
"asked": 0,
"next": 0,
"which": 0
},
"control_ok": true,
"followup_shown": true,
"lix": 24.785714285714285,
"options": 4,
"overloaded": false,
"personas": 2,
"required_fields": 4,
"steps": 1,
"understanding": {
"asked": 2,
"next": 2,
"which": 2
}
}
}
+43
View File
@@ -0,0 +1,43 @@
# The whole contractor, tiered behind three doors, worded and scored
`plans/contractor-full.yaml` as restructured on 2026-09-22: the six
public needs behind `your-building` (survey, build, warranty claim)
and `work-with-us` (subcontractor, job), with the neighbour's
complaint straight on the front door. Thirteen needs, six roles,
thirty pages. Built with nemotron-3.5-lightning:30b-a3b writing the
words, all pages worded, verifier green by construction (the earlier
dry build of the same plan, before doors, is in
`../contractor-full-2026-09-21/`). Visitor: qwen3:8b, one task per
call. Twenty held-out personas, twenty-two tasks.
| Visitor could read | Routed right |
|---|---|
| Headings and descriptions | 18 of 22 |
| Headings only | 15 of 22 |
- **One page, two headings that mean the same thing.** Behind
`work-with-us` nemotron wrote "Apply to work with us" for the
subcontractor form and "Find a job with us" for the job form. All
four personas crossed over on headings alone: both firms chose
"Find a job", both jobseekers chose "Apply to work with us". Two of
the four still crossed with descriptions. This is the clearest case
of the copy rule in the whole set: two alternatives separable only by
a distinction the business makes (a firm on a contract, a person on
the payroll) and the visitor does not. The heading has to say
"firm" and "carpenter", not "apply" and "job".
- **"Your building project" does not cover a problem.** On headings
alone, the housing board with damp and the customer with a leaking
bathroom both chose "Neighbour complaint" over "Your building
project": neither has a project, both have a complaint about a
building. The door's description rescues them; the heading fails.
- **The electrical firm chose the building door** both times, from
"Your building project" reading as the general door.
- **A warranty claim and a building problem** are one thing to the
customer with cracked render, and the page offers both.
The two doors did their job: nobody was lost on the front door for
lack of a door. What went wrong is the wording on the pages behind
them, and the plan's own split of warranty from survey, which the
customer does not make.
`rate.txt` is the page-by-page rate; see `rate.json`.
@@ -0,0 +1,186 @@
aggregates:
- bucket: applicants
initial: open
states:
declined:
event: declined
hired:
event: hired
interviewing:
event: interviewing
offered:
event: offered
open:
event: received
transitions:
interviewing:
- offered
- declined
offered:
- hired
- declined
open:
- interviewing
- declined
- bucket: bids
initial: open
states:
accepted:
event: accepted
declined:
event: declined
open:
event: received
shortlisted:
event: shortlisted
transitions:
open:
- shortlisted
- accepted
- declined
shortlisted:
- accepted
- declined
- bucket: change_orders
initial: open
states:
approved:
event: approved
completed:
event: completed
declined:
event: declined
open:
event: received
priced:
event: priced
transitions:
approved:
- completed
- declined
open:
- priced
- declined
priced:
- approved
- declined
- bucket: claims
initial: open
states:
accepted:
event: accepted
fixed:
event: fixed
inspected:
event: inspected
open:
event: received
rejected:
event: rejected
transitions:
accepted:
- fixed
- rejected
inspected:
- accepted
- rejected
open:
- inspected
- rejected
- bucket: complaints
initial: open
states:
answered:
event: answered
open:
event: received
transitions:
open:
- answered
- bucket: enquiries
initial: open
states:
lost:
event: lost
open:
event: received
quoted:
event: quoted
surveyed:
event: surveyed
won:
event: won
transitions:
open:
- surveyed
- lost
quoted:
- won
- lost
surveyed:
- quoted
- lost
- bucket: job_requests
initial: open
states:
awarded:
event: awarded
open:
event: received
withdrawn:
event: withdrawn
transitions:
open:
- awarded
- withdrawn
- bucket: material_orders
initial: open
states:
delivered:
event: delivered
open:
event: received
ordered:
event: ordered
refused:
event: refused
transitions:
open:
- ordered
- refused
ordered:
- delivered
- refused
- bucket: site_issues
initial: open
states:
closed:
event: closed
in_hand:
event: in_hand
open:
event: received
transitions:
in_hand:
- closed
open:
- in_hand
- bucket: subcontractors
initial: open
states:
approved:
event: approved
awaiting_papers:
event: awaiting_papers
declined:
event: declined
open:
event: received
transitions:
awaiting_papers:
- approved
- declined
open:
- awaiting_papers
- approved
- declined
@@ -0,0 +1,22 @@
{"choice":"Your building project","confidence":0.95,"id":"housing-board-damp@/"}
{"choice":"Report a building problem","confidence":0.95,"id":"housing-board-damp@/your-building"}
{"choice":"Your building project","confidence":0.95,"id":"buyer-before-purchase@/"}
{"choice":"Report a building problem","confidence":0.95,"id":"buyer-before-purchase@/your-building"}
{"choice":"Your building project","confidence":0.95,"id":"attic-conversion@/"}
{"choice":"Tell us about your building project","confidence":0.95,"id":"attic-conversion@/your-building"}
{"choice":"Your building project","confidence":0.95,"id":"shop-to-flat@/"}
{"choice":"Tell us about your building project","confidence":0.95,"id":"shop-to-flat@/your-building"}
{"choice":"Your building project","confidence":0.95,"id":"leaking-bathroom@/"}
{"choice":"Report a fault in our work","confidence":0.95,"id":"leaking-bathroom@/your-building"}
{"choice":"Your building project","confidence":0.95,"id":"cracked-render@/"}
{"choice":"Report a building problem","confidence":0.95,"id":"cracked-render@/your-building"}
{"choice":"Neighbour complaint","confidence":0.95,"id":"noisy-mornings@/"}
{"choice":"Neighbour complaint","confidence":0.95,"id":"blocked-driveway@/"}
{"choice":"Your building project","confidence":0.95,"id":"electrician-firm@/"}
{"choice":"Find a job with us","confidence":0.95,"id":"electrician-firm@/work-with-us"}
{"choice":"Work with Nordvik Bygg","confidence":0.95,"id":"scaffolder@/"}
{"choice":"Find a job with us","confidence":0.95,"id":"scaffolder@/work-with-us"}
{"choice":"Work with Nordvik Bygg","confidence":0.95,"id":"carpenter-jobseeker@/"}
{"choice":"Find a job with us","confidence":0.95,"id":"carpenter-jobseeker@/work-with-us"}
{"choice":"Work with Nordvik Bygg","confidence":0.95,"id":"apprentice@/"}
{"choice":"Find a job with us","confidence":0.95,"id":"apprentice@/work-with-us"}
@@ -0,0 +1,22 @@
{"choice":"Neighbour complaint","confidence":0.95,"id":"housing-board-damp@/"}
{"choice":"Report a building problem","confidence":0.95,"id":"housing-board-damp@/your-building"}
{"choice":"Your building project","confidence":0.95,"id":"buyer-before-purchase@/"}
{"choice":"Report a building problem","confidence":0.95,"id":"buyer-before-purchase@/your-building"}
{"choice":"Your building project","confidence":0.95,"id":"attic-conversion@/"}
{"choice":"Tell us about your building project","confidence":0.95,"id":"attic-conversion@/your-building"}
{"choice":"Your building project","confidence":0.95,"id":"shop-to-flat@/"}
{"choice":"Tell us about your building project","confidence":0.95,"id":"shop-to-flat@/your-building"}
{"choice":"Neighbour complaint","confidence":0.95,"id":"leaking-bathroom@/"}
{"choice":"Report a fault in our work","confidence":0.95,"id":"leaking-bathroom@/your-building"}
{"choice":"Your building project","confidence":0.95,"id":"cracked-render@/"}
{"choice":"Report a fault in our work","confidence":0.95,"id":"cracked-render@/your-building"}
{"choice":"Neighbour complaint","confidence":0.95,"id":"noisy-mornings@/"}
{"choice":"Neighbour complaint","confidence":0.95,"id":"blocked-driveway@/"}
{"choice":"Your building project","confidence":0.95,"id":"electrician-firm@/"}
{"choice":"Find a job with us","confidence":0.95,"id":"electrician-firm@/work-with-us"}
{"choice":"Work with Nordvik Bygg","confidence":0.95,"id":"scaffolder@/"}
{"choice":"Find a job with us","confidence":0.95,"id":"scaffolder@/work-with-us"}
{"choice":"Work with Nordvik Bygg","confidence":0.95,"id":"carpenter-jobseeker@/"}
{"choice":"Apply to work with us","confidence":0.95,"id":"carpenter-jobseeker@/work-with-us"}
{"choice":"Work with Nordvik Bygg","confidence":0.95,"id":"apprentice@/"}
{"choice":"Apply to work with us","confidence":0.95,"id":"apprentice@/work-with-us"}
+46
View File
@@ -0,0 +1,46 @@
words: questions/clients/change-request-sent.yaml
words: questions/clients/change-request.yaml
words: questions/clients/index.yaml
words: questions/crew/index.yaml
words: questions/crew/order-materials-sent.yaml
words: questions/crew/order-materials.yaml
words: questions/crew/report-site-issue-sent.yaml
words: questions/crew/report-site-issue.yaml
words: questions/decide/change-request.yaml
words: questions/index.yaml
words: questions/project_managers/index.yaml
words: questions/project_managers/log-phone-enquiry-sent.yaml
words: questions/project_managers/log-phone-enquiry.yaml
words: questions/project_managers/post-job-request-sent.yaml
words: questions/project_managers/post-job-request.yaml
words: questions/received/build-enquiry.yaml
words: questions/received/job-application.yaml
words: questions/received/neighbour-complaint.yaml
words: questions/received/subcontractor-application.yaml
words: questions/received/survey-enquiry.yaml
words: questions/received/warranty-claim.yaml
words: questions/safety_officer/index.yaml
words: questions/safety_officer/safety-round-finding-sent.yaml
words: questions/safety_officer/safety-round-finding.yaml
words: questions/site_managers/index.yaml
words: questions/subcontractors/index.yaml
words: questions/subcontractors/submit-bid-sent.yaml
words: questions/subcontractors/submit-bid.yaml
words: questions/work-with-us/index.yaml
words: questions/your-building/index.yaml
content repo written to runs/contractor-full-2026-09-22
OK: 30 question(s), 11 aggregate(s) valid
need "survey-enquiry": / [Your building project] -> /your-building [Report a building problem] -> "enquiries"
need "build-enquiry": / [Your building project] -> /your-building [Report a building problem] -> "enquiries"
need "warranty-claim": / [Your building project] -> /your-building [Report a fault in our work] -> "claims"
need "neighbour-complaint": / [Neighbour complaint] -> "complaints"
need "subcontractor-application": / [Work with Nordvik Bygg] -> /work-with-us [Apply to work with us] -> "subcontractors"
need "job-application": / [Work with Nordvik Bygg] -> /work-with-us [Find a job with us] -> "applicants"
need "change-request": /clients/change-request [Request a change to your building work] -> "change_orders"
need "log-phone-enquiry": /project_managers/log-phone-enquiry [Log a phone enquiry] -> "enquiries"
need "post-job-request": /project_managers/post-job-request [Give subcontractors a job to price] -> "job_requests"
need "submit-bid": /subcontractors/submit-bid [Submit a bid on a job] -> "bids"
need "report-site-issue": /crew/report-site-issue [Report a safety finding on site] -> "site_issues"
need "order-materials": /crew/order-materials [Order materials for the site] -> "material_orders"
need "safety-round-finding": /safety_officer/safety-round-finding [Report what you find on site] -> "site_issues"
OK: 13 need(s) structurally met, 0 planned, 20 persona(s)
@@ -0,0 +1,54 @@
You write the words for one page of a website for this business.
Business: Nordvik Bygg
About: Twelve people who survey old buildings, draw up rehabilitation plans, handle the permit application, and do the building work with their own carpenters plus subcontractors for electrical, plumbing and scaffolding. Project managers win and run the jobs, site managers run each building site day to day, and one safety officer owns everything reported from site.
Contact: Ingrid Nordvik <ingrid@nordvikbygg.example>
Language to write in: en
Everyone the site serves:
- door your-building: for an owner, a housing board or a past customer with a building; behind it: survey-enquiry, build-enquiry, warranty-claim
- door work-with-us: for a trade firm, a carpenter or an apprentice who wants work from us; behind it: subcontractor-application, job-application
- survey-enquiry: a housing board or private owner with a problem in a building - wants: someone qualified to come and look at it and say what it takes. Handled by project_managers. Stages: open -> surveyed -> quoted -> won -> lost.
- build-enquiry: an owner who already knows what they want built or changed - wants: drawings, a permit application and a price. Handled by project_managers. Stages: open -> surveyed -> quoted -> won -> lost.
- warranty-claim: a past customer who has found a fault in work we handed over - wants: us to come back, look at it, and put it right. Handled by project_managers. Stages: open -> inspected -> accepted -> fixed -> rejected.
- neighbour-complaint: someone living or working next to one of our building sites - wants: the noise, dust or blocked access dealt with, and an answer. Handled by site_managers. Stages: open -> answered.
- subcontractor-application: a trade firm doing electrical, plumbing or scaffolding work - wants: to be approved once, and then be called when a job needs them. Handled by project_managers. Stages: open -> awaiting_papers -> approved -> declined.
- job-application: a carpenter, bricklayer or apprentice looking for work - wants: to be considered, without writing a letter. Handled by project_managers. Stages: open -> interviewing -> offered -> hired -> declined.
- change-request: a client whose job is under way and who wants something changed - wants: a price for the change, and the change done if they accept it. Handled by project_managers. Stages: open -> priced -> approved -> completed -> declined.
- log-phone-enquiry: a project manager who just took a call or a text about a building - wants: the enquiry written down before it gets lost. Handled by project_managers. Stages: open -> surveyed -> quoted -> won -> lost.
- post-job-request: a project manager with work to hand to a subcontractor - wants: approved subcontractors to see the job and answer with a price. Handled by project_managers. Stages: open -> awarded -> withdrawn.
- submit-bid: an approved subcontractor who has seen a job they can take - wants: to say yes with a price and a start date. Handled by project_managers. Stages: open -> shortlisted -> accepted -> declined.
- report-site-issue: anyone on site, ours or a subcontractor's, on a phone with gloves on - wants: to report a hazard, a near miss or wrong materials before they forget. Handled by safety_officer. Stages: open -> in_hand -> closed.
- order-materials: a carpenter or bricklayer who is about to run out of something - wants: it ordered and on site before work stops. Handled by site_managers. Stages: open -> ordered -> delivered -> refused.
- safety-round-finding: the safety officer walking a site on the weekly round - wants: each thing found written down where the reported issues already are. Handled by safety_officer. Stages: open -> in_hand -> closed.
The page: questions/clients/change-request-sent.yaml
It is a page shown right after someone has sent a form. Say who reads it, when they answer, and what happens next.
Below is the page as JSON. Every value is a slot that says what to write there. Return the same JSON with every slot replaced by your words. Keep every key exactly as it is. A slot left as it is counts as no answer.
Rules for the words:
- `question` is a question the reader could ask themselves.
- A heading says what the reader gets, in the reader's own words, and must work without its description.
- Lead with what a thing enables. No negations in headings. No trade jargon the reader would not use.
- Descriptions are one or two short sentences. Labels and buttons are a few words.
- Write the way people in this trade and country actually speak.
{
"back": "<WRITE: a button, one to three words>",
"description": "<WRITE: one or two short sentences>",
"next_description": "<WRITE: one or two short sentences>",
"next_heading": "<WRITE: a heading, at most eight words, saying what the reader gets>",
"question": "<WRITE: the one question this page asks its reader>"
}
Reply with the JSON object only.
=== REPLY ===
{
"back": "Back to form",
"description": "We have received your change request. A project manager will review it shortly.",
"next_description": "We will get back to you with a price and next steps within 2 business days.",
"next_heading": "What happens next?",
"question": "What happens after I submit?"
}
@@ -0,0 +1,68 @@
You write the words for one page of a website for this business.
Business: Nordvik Bygg
About: Twelve people who survey old buildings, draw up rehabilitation plans, handle the permit application, and do the building work with their own carpenters plus subcontractors for electrical, plumbing and scaffolding. Project managers win and run the jobs, site managers run each building site day to day, and one safety officer owns everything reported from site.
Contact: Ingrid Nordvik <ingrid@nordvikbygg.example>
Language to write in: en
Everyone the site serves:
- door your-building: for an owner, a housing board or a past customer with a building; behind it: survey-enquiry, build-enquiry, warranty-claim
- door work-with-us: for a trade firm, a carpenter or an apprentice who wants work from us; behind it: subcontractor-application, job-application
- survey-enquiry: a housing board or private owner with a problem in a building - wants: someone qualified to come and look at it and say what it takes. Handled by project_managers. Stages: open -> surveyed -> quoted -> won -> lost.
- build-enquiry: an owner who already knows what they want built or changed - wants: drawings, a permit application and a price. Handled by project_managers. Stages: open -> surveyed -> quoted -> won -> lost.
- warranty-claim: a past customer who has found a fault in work we handed over - wants: us to come back, look at it, and put it right. Handled by project_managers. Stages: open -> inspected -> accepted -> fixed -> rejected.
- neighbour-complaint: someone living or working next to one of our building sites - wants: the noise, dust or blocked access dealt with, and an answer. Handled by site_managers. Stages: open -> answered.
- subcontractor-application: a trade firm doing electrical, plumbing or scaffolding work - wants: to be approved once, and then be called when a job needs them. Handled by project_managers. Stages: open -> awaiting_papers -> approved -> declined.
- job-application: a carpenter, bricklayer or apprentice looking for work - wants: to be considered, without writing a letter. Handled by project_managers. Stages: open -> interviewing -> offered -> hired -> declined.
- change-request: a client whose job is under way and who wants something changed - wants: a price for the change, and the change done if they accept it. Handled by project_managers. Stages: open -> priced -> approved -> completed -> declined.
- log-phone-enquiry: a project manager who just took a call or a text about a building - wants: the enquiry written down before it gets lost. Handled by project_managers. Stages: open -> surveyed -> quoted -> won -> lost.
- post-job-request: a project manager with work to hand to a subcontractor - wants: approved subcontractors to see the job and answer with a price. Handled by project_managers. Stages: open -> awarded -> withdrawn.
- submit-bid: an approved subcontractor who has seen a job they can take - wants: to say yes with a price and a start date. Handled by project_managers. Stages: open -> shortlisted -> accepted -> declined.
- report-site-issue: anyone on site, ours or a subcontractor's, on a phone with gloves on - wants: to report a hazard, a near miss or wrong materials before they forget. Handled by safety_officer. Stages: open -> in_hand -> closed.
- order-materials: a carpenter or bricklayer who is about to run out of something - wants: it ordered and on site before work stops. Handled by site_managers. Stages: open -> ordered -> delivered -> refused.
- safety-round-finding: the safety officer walking a site on the weekly round - wants: each thing found written down where the reported issues already are. Handled by safety_officer. Stages: open -> in_hand -> closed.
The page: questions/clients/change-request.yaml
It is a page only one role inside the business can open, holding one form.
Below is the page as JSON. Every value is a slot that says what to write there. Return the same JSON with every slot replaced by your words. Keep every key exactly as it is. A slot left as it is counts as no answer.
Rules for the words:
- `question` is a question the reader could ask themselves.
- A heading says what the reader gets, in the reader's own words, and must work without its description.
- Lead with what a thing enables. No negations in headings. No trade jargon the reader would not use.
- Descriptions are one or two short sentences. Labels and buttons are a few words.
- Write the way people in this trade and country actually speak.
{
"button": "<WRITE: a button, one to three words>",
"description": "<WRITE: one or two short sentences>",
"form_title": "<WRITE: a title for the form, two to four words>",
"heading": "<WRITE: a heading, at most eight words, saying what the reader gets>",
"labels": {
"change": "<WRITE: a form label for the field `change`>",
"email": "<WRITE: a form label for the field `email`>",
"job_address": "<WRITE: a form label for the field `job_address`>",
"needed_by": "<WRITE: a form label for the field `needed_by`>"
},
"page_description": "<WRITE: one or two short sentences>",
"question": "<WRITE: the one question this page asks its reader>"
}
Reply with the JSON object only.
=== REPLY ===
{
"button": "Submit change",
"description": "Tell us what you want changed so we can price it and get it done.",
"form_title": "Change request",
"heading": "Request a change to your building work",
"labels": {
"change": "What needs to change?",
"email": "Your email",
"job_address": "Building address",
"needed_by": "When do you need this?"
},
"page_description": "A client can ask for a change to an ongoing job. We price it and do it if you accept.",
"question": "What needs to change in your project?"
}
@@ -0,0 +1,205 @@
You write the words for one page of a website for this business.
Business: Nordvik Bygg
About: Twelve people who survey old buildings, draw up rehabilitation plans, handle the permit application, and do the building work with their own carpenters plus subcontractors for electrical, plumbing and scaffolding. Project managers win and run the jobs, site managers run each building site day to day, and one safety officer owns everything reported from site.
Contact: Ingrid Nordvik <ingrid@nordvikbygg.example>
Language to write in: en
Everyone the site serves:
- door your-building: for an owner, a housing board or a past customer with a building; behind it: survey-enquiry, build-enquiry, warranty-claim
- door work-with-us: for a trade firm, a carpenter or an apprentice who wants work from us; behind it: subcontractor-application, job-application
- survey-enquiry: a housing board or private owner with a problem in a building - wants: someone qualified to come and look at it and say what it takes. Handled by project_managers. Stages: open -> surveyed -> quoted -> won -> lost.
- build-enquiry: an owner who already knows what they want built or changed - wants: drawings, a permit application and a price. Handled by project_managers. Stages: open -> surveyed -> quoted -> won -> lost.
- warranty-claim: a past customer who has found a fault in work we handed over - wants: us to come back, look at it, and put it right. Handled by project_managers. Stages: open -> inspected -> accepted -> fixed -> rejected.
- neighbour-complaint: someone living or working next to one of our building sites - wants: the noise, dust or blocked access dealt with, and an answer. Handled by site_managers. Stages: open -> answered.
- subcontractor-application: a trade firm doing electrical, plumbing or scaffolding work - wants: to be approved once, and then be called when a job needs them. Handled by project_managers. Stages: open -> awaiting_papers -> approved -> declined.
- job-application: a carpenter, bricklayer or apprentice looking for work - wants: to be considered, without writing a letter. Handled by project_managers. Stages: open -> interviewing -> offered -> hired -> declined.
- change-request: a client whose job is under way and who wants something changed - wants: a price for the change, and the change done if they accept it. Handled by project_managers. Stages: open -> priced -> approved -> completed -> declined.
- log-phone-enquiry: a project manager who just took a call or a text about a building - wants: the enquiry written down before it gets lost. Handled by project_managers. Stages: open -> surveyed -> quoted -> won -> lost.
- post-job-request: a project manager with work to hand to a subcontractor - wants: approved subcontractors to see the job and answer with a price. Handled by project_managers. Stages: open -> awarded -> withdrawn.
- submit-bid: an approved subcontractor who has seen a job they can take - wants: to say yes with a price and a start date. Handled by project_managers. Stages: open -> shortlisted -> accepted -> declined.
- report-site-issue: anyone on site, ours or a subcontractor's, on a phone with gloves on - wants: to report a hazard, a near miss or wrong materials before they forget. Handled by safety_officer. Stages: open -> in_hand -> closed.
- order-materials: a carpenter or bricklayer who is about to run out of something - wants: it ordered and on site before work stops. Handled by site_managers. Stages: open -> ordered -> delivered -> refused.
- safety-round-finding: the safety officer walking a site on the weekly round - wants: each thing found written down where the reported issues already are. Handled by safety_officer. Stages: open -> in_hand -> closed.
The page: questions/clients/index.yaml
It is a desk: the page one role inside the business works from. Under `buckets`, each entry is a list of cases; `moves` are the buttons that move a case from one stage to the next (key `from->to`), so label each with what the person has just done. Under `links` are pages this role can open.
Below is the page as JSON. Every value is a slot that says what to write there. Return the same JSON with every slot replaced by your words. Keep every key exactly as it is. A slot left as it is counts as no answer.
Rules for the words:
- `question` is a question the reader could ask themselves.
- A heading says what the reader gets, in the reader's own words, and must work without its description.
- Lead with what a thing enables. No negations in headings. No trade jargon the reader would not use.
- Descriptions are one or two short sentences. Labels and buttons are a few words.
- Write the way people in this trade and country actually speak.
{
"buckets": {},
"confirm": "<WRITE: a button, one to three words>",
"description": "<WRITE: one or two short sentences>",
"links": {
"change-request": {
"button": "<WRITE: a button, one to three words>",
"description": "<WRITE: one or two short sentences>",
"heading": "<WRITE: a heading, at most eight words, saying what the reader gets>"
}
},
"question": "<WRITE: the one question this page asks its reader>"
}
Reply with the JSON object only.
=== REPLY ===
{
"buckets": {
"door your-building": [
{
"heading": "Survey enquiry",
"description": "A housing board or private owner with a problem in a building wants someone qualified to come and look at it and say what it takes.",
"moves": {
"open->surveyed": "Surveyed",
"surveyed->quoted": "Quoted",
"quoted->won": "Won",
"quoted->lost": "Lost"
}
},
{
"heading": "Build enquiry",
"description": "An owner who already knows what they want built or changed wants drawings, a permit application and a price.",
"moves": {
"open->surveyed": "Surveyed",
"surveyed->quoted": "Quoted",
"quoted->won": "Won",
"quoted->lost": "Lost"
}
},
{
"heading": "Warranty claim",
"description": "A past customer who has found a fault in work we handed over wants us to come back, look at it, and put it right.",
"moves": {
"open->inspected": "Inspected",
"inspected->accepted": "Accepted",
"accepted->fixed": "Fixed",
"accepted->rejected": "Rejected"
}
}
],
"door work-with-us": [
{
"heading": "Subcontractor application",
"description": "A trade firm doing electrical, plumbing or scaffolding work wants to be approved once, and then be called when a job needs them.",
"moves": {
"open->awaiting_papers": "Awaiting papers",
"awaiting_papers->approved": "Approved",
"approved->declined": "Declined"
}
},
{
"heading": "Job application",
"description": "A carpenter, bricklayer or apprentice looking for work wants to be considered, without writing a letter.",
"moves": {
"open->interviewing": "Interviewing",
"interviewing->offered": "Offered",
"offered->hired": "Hired",
"offered->declined": "Declined"
}
}
],
"log-phone-enquiry": [
{
"heading": "Phone enquiry",
"description": "A project manager who just took a call or a text about a building wants the enquiry written down before it gets lost.",
"moves": {
"open->surveyed": "Surveyed",
"surveyed->quoted": "Quoted",
"quoted->won": "Won",
"quoted->lost": "Lost"
}
}
],
"post-job-request": [
{
"heading": "Post job to subcontractor",
"description": "A project manager with work to hand to a subcontractor wants approved subcontractors to see the job and answer with a price.",
"moves": {
"open->awarded": "Awarded",
"awarded->withdrawn": "Withdrawn"
}
}
],
"submit-bid": [
{
"heading": "Submit bid",
"description": "An approved subcontractor who has seen a job they can take wants to say yes with a price and a start date.",
"moves": {
"open->shortlisted": "Shortlisted",
"shortlisted->accepted": "Accepted",
"shortlisted->declined": "Declined"
}
}
],
"change-request": [
{
"heading": "Change request",
"description": "A client whose job is under way and who wants something changed wants a price for the change, and the change done if they accept it.",
"moves": {
"open->priced": "Priced",
"priced->approved": "Approved",
"approved->completed": "Completed",
"approved->declined": "Declined"
}
}
],
"neighbour-complaint": [
{
"heading": "Neighbour complaint",
"description": "Someone living or working next to one of our building sites wants the noise, dust or blocked access dealt with, and an answer.",
"moves": {
"open->answered": "Answered"
}
}
],
"order-materials": [
{
"heading": "Order materials",
"description": "A carpenter or bricklayer who is about to run out of something wants it ordered and on site before work stops.",
"moves": {
"open->ordered": "Ordered",
"ordered->delivered": "Delivered",
"delivered->refused": "Refused"
}
}
],
"report-site-issue": [
{
"heading": "Report site issue",
"description": "Anyone on site, ours or a subcontractor's, on a phone with gloves on wants to report a hazard, a near miss or wrong materials before they forget.",
"moves": {
"open->in_hand": "In hand",
"in_hand->closed": "Closed"
}
}
],
"safety-round-finding": [
{
"heading": "Safety round finding",
"description": "The safety officer walking a site on the weekly round wants each thing found written down where the reported issues already are.",
"moves": {
"open->in_hand": "In hand",
"in_hand->closed": "Closed"
}
}
]
},
"confirm": "Continue",
"description": "Manage your cases and move them through their stages.",
"links": {
"change-request": {
"button": "Change request",
"description": "A client whose job is under way and who wants something changed wants a price for the change, and the change done if they accept it.",
"heading": "Change request"
}
},
"question": "What do you need to do today?"
}
@@ -0,0 +1,92 @@
You write the words for one page of a website for this business.
Business: Nordvik Bygg
About: Twelve people who survey old buildings, draw up rehabilitation plans, handle the permit application, and do the building work with their own carpenters plus subcontractors for electrical, plumbing and scaffolding. Project managers win and run the jobs, site managers run each building site day to day, and one safety officer owns everything reported from site.
Contact: Ingrid Nordvik <ingrid@nordvikbygg.example>
Language to write in: en
Everyone the site serves:
- door your-building: for an owner, a housing board or a past customer with a building; behind it: survey-enquiry, build-enquiry, warranty-claim
- door work-with-us: for a trade firm, a carpenter or an apprentice who wants work from us; behind it: subcontractor-application, job-application
- survey-enquiry: a housing board or private owner with a problem in a building - wants: someone qualified to come and look at it and say what it takes. Handled by project_managers. Stages: open -> surveyed -> quoted -> won -> lost.
- build-enquiry: an owner who already knows what they want built or changed - wants: drawings, a permit application and a price. Handled by project_managers. Stages: open -> surveyed -> quoted -> won -> lost.
- warranty-claim: a past customer who has found a fault in work we handed over - wants: us to come back, look at it, and put it right. Handled by project_managers. Stages: open -> inspected -> accepted -> fixed -> rejected.
- neighbour-complaint: someone living or working next to one of our building sites - wants: the noise, dust or blocked access dealt with, and an answer. Handled by site_managers. Stages: open -> answered.
- subcontractor-application: a trade firm doing electrical, plumbing or scaffolding work - wants: to be approved once, and then be called when a job needs them. Handled by project_managers. Stages: open -> awaiting_papers -> approved -> declined.
- job-application: a carpenter, bricklayer or apprentice looking for work - wants: to be considered, without writing a letter. Handled by project_managers. Stages: open -> interviewing -> offered -> hired -> declined.
- change-request: a client whose job is under way and who wants something changed - wants: a price for the change, and the change done if they accept it. Handled by project_managers. Stages: open -> priced -> approved -> completed -> declined.
- log-phone-enquiry: a project manager who just took a call or a text about a building - wants: the enquiry written down before it gets lost. Handled by project_managers. Stages: open -> surveyed -> quoted -> won -> lost.
- post-job-request: a project manager with work to hand to a subcontractor - wants: approved subcontractors to see the job and answer with a price. Handled by project_managers. Stages: open -> awarded -> withdrawn.
- submit-bid: an approved subcontractor who has seen a job they can take - wants: to say yes with a price and a start date. Handled by project_managers. Stages: open -> shortlisted -> accepted -> declined.
- report-site-issue: anyone on site, ours or a subcontractor's, on a phone with gloves on - wants: to report a hazard, a near miss or wrong materials before they forget. Handled by safety_officer. Stages: open -> in_hand -> closed.
- order-materials: a carpenter or bricklayer who is about to run out of something - wants: it ordered and on site before work stops. Handled by site_managers. Stages: open -> ordered -> delivered -> refused.
- safety-round-finding: the safety officer walking a site on the weekly round - wants: each thing found written down where the reported issues already are. Handled by safety_officer. Stages: open -> in_hand -> closed.
The page: questions/crew/index.yaml
It is a desk: the page one role inside the business works from. Under `buckets`, each entry is a list of cases; `moves` are the buttons that move a case from one stage to the next (key `from->to`), so label each with what the person has just done. Under `links` are pages this role can open.
Below is the page as JSON. Every value is a slot that says what to write there. Return the same JSON with every slot replaced by your words. Keep every key exactly as it is. A slot left as it is counts as no answer.
Rules for the words:
- `question` is a question the reader could ask themselves.
- A heading says what the reader gets, in the reader's own words, and must work without its description.
- Lead with what a thing enables. No negations in headings. No trade jargon the reader would not use.
- Descriptions are one or two short sentences. Labels and buttons are a few words.
- Write the way people in this trade and country actually speak.
{
"buckets": {
"material_orders": {
"description": "<WRITE: one or two short sentences>",
"heading": "<WRITE: a heading, at most eight words, saying what the reader gets>",
"moves": {
"ordered->delivered": "<WRITE: a button, two to four words, for a case going ordered->delivered>"
}
}
},
"confirm": "<WRITE: a button, one to three words>",
"description": "<WRITE: one or two short sentences>",
"links": {
"order-materials": {
"button": "<WRITE: a button, one to three words>",
"description": "<WRITE: one or two short sentences>",
"heading": "<WRITE: a heading, at most eight words, saying what the reader gets>"
},
"report-site-issue": {
"button": "<WRITE: a button, one to three words>",
"description": "<WRITE: one or two short sentences>",
"heading": "<WRITE: a heading, at most eight words, saying what the reader gets>"
}
},
"question": "<WRITE: the one question this page asks its reader>"
}
Reply with the JSON object only.
=== REPLY ===
{
"buckets": {
"material_orders": {
"description": "Order materials for a job in progress. See what's on its way and what arrived.",
"heading": "Order materials for building",
"moves": {
"ordered->delivered": "Mark delivered"
}
}
},
"confirm": "Confirm",
"description": "Manage the flow of cases from enquiry to completion. See what stage each case is at and move it forward.",
"links": {
"order-materials": {
"button": "Order materials",
"description": "Order materials for the job you are working on. Track what has been delivered.",
"heading": "Order materials for building"
},
"report-site-issue": {
"button": "Report issue",
"description": "Log a hazard, near miss or wrong materials found on site. Keep the weekly safety round up to date.",
"heading": "Report a site issue"
}
},
"question": "What case do you need to move forward?"
}
@@ -0,0 +1,54 @@
You write the words for one page of a website for this business.
Business: Nordvik Bygg
About: Twelve people who survey old buildings, draw up rehabilitation plans, handle the permit application, and do the building work with their own carpenters plus subcontractors for electrical, plumbing and scaffolding. Project managers win and run the jobs, site managers run each building site day to day, and one safety officer owns everything reported from site.
Contact: Ingrid Nordvik <ingrid@nordvikbygg.example>
Language to write in: en
Everyone the site serves:
- door your-building: for an owner, a housing board or a past customer with a building; behind it: survey-enquiry, build-enquiry, warranty-claim
- door work-with-us: for a trade firm, a carpenter or an apprentice who wants work from us; behind it: subcontractor-application, job-application
- survey-enquiry: a housing board or private owner with a problem in a building - wants: someone qualified to come and look at it and say what it takes. Handled by project_managers. Stages: open -> surveyed -> quoted -> won -> lost.
- build-enquiry: an owner who already knows what they want built or changed - wants: drawings, a permit application and a price. Handled by project_managers. Stages: open -> surveyed -> quoted -> won -> lost.
- warranty-claim: a past customer who has found a fault in work we handed over - wants: us to come back, look at it, and put it right. Handled by project_managers. Stages: open -> inspected -> accepted -> fixed -> rejected.
- neighbour-complaint: someone living or working next to one of our building sites - wants: the noise, dust or blocked access dealt with, and an answer. Handled by site_managers. Stages: open -> answered.
- subcontractor-application: a trade firm doing electrical, plumbing or scaffolding work - wants: to be approved once, and then be called when a job needs them. Handled by project_managers. Stages: open -> awaiting_papers -> approved -> declined.
- job-application: a carpenter, bricklayer or apprentice looking for work - wants: to be considered, without writing a letter. Handled by project_managers. Stages: open -> interviewing -> offered -> hired -> declined.
- change-request: a client whose job is under way and who wants something changed - wants: a price for the change, and the change done if they accept it. Handled by project_managers. Stages: open -> priced -> approved -> completed -> declined.
- log-phone-enquiry: a project manager who just took a call or a text about a building - wants: the enquiry written down before it gets lost. Handled by project_managers. Stages: open -> surveyed -> quoted -> won -> lost.
- post-job-request: a project manager with work to hand to a subcontractor - wants: approved subcontractors to see the job and answer with a price. Handled by project_managers. Stages: open -> awarded -> withdrawn.
- submit-bid: an approved subcontractor who has seen a job they can take - wants: to say yes with a price and a start date. Handled by project_managers. Stages: open -> shortlisted -> accepted -> declined.
- report-site-issue: anyone on site, ours or a subcontractor's, on a phone with gloves on - wants: to report a hazard, a near miss or wrong materials before they forget. Handled by safety_officer. Stages: open -> in_hand -> closed.
- order-materials: a carpenter or bricklayer who is about to run out of something - wants: it ordered and on site before work stops. Handled by site_managers. Stages: open -> ordered -> delivered -> refused.
- safety-round-finding: the safety officer walking a site on the weekly round - wants: each thing found written down where the reported issues already are. Handled by safety_officer. Stages: open -> in_hand -> closed.
The page: questions/crew/order-materials-sent.yaml
It is a page shown right after someone has sent a form. Say who reads it, when they answer, and what happens next.
Below is the page as JSON. Every value is a slot that says what to write there. Return the same JSON with every slot replaced by your words. Keep every key exactly as it is. A slot left as it is counts as no answer.
Rules for the words:
- `question` is a question the reader could ask themselves.
- A heading says what the reader gets, in the reader's own words, and must work without its description.
- Lead with what a thing enables. No negations in headings. No trade jargon the reader would not use.
- Descriptions are one or two short sentences. Labels and buttons are a few words.
- Write the way people in this trade and country actually speak.
{
"back": "<WRITE: a button, one to three words>",
"description": "<WRITE: one or two short sentences>",
"next_description": "<WRITE: one or two short sentences>",
"next_heading": "<WRITE: a heading, at most eight words, saying what the reader gets>",
"question": "<WRITE: the one question this page asks its reader>"
}
Reply with the JSON object only.
=== REPLY ===
{
"back": "Back to order-materials",
"description": "We have received your request. The site manager will process it shortly.",
"next_description": "You will receive a confirmation once the materials are on site.",
"next_heading": "Materials ordered",
"question": "Will the materials arrive on time?"
}
@@ -0,0 +1,66 @@
You write the words for one page of a website for this business.
Business: Nordvik Bygg
About: Twelve people who survey old buildings, draw up rehabilitation plans, handle the permit application, and do the building work with their own carpenters plus subcontractors for electrical, plumbing and scaffolding. Project managers win and run the jobs, site managers run each building site day to day, and one safety officer owns everything reported from site.
Contact: Ingrid Nordvik <ingrid@nordvikbygg.example>
Language to write in: en
Everyone the site serves:
- door your-building: for an owner, a housing board or a past customer with a building; behind it: survey-enquiry, build-enquiry, warranty-claim
- door work-with-us: for a trade firm, a carpenter or an apprentice who wants work from us; behind it: subcontractor-application, job-application
- survey-enquiry: a housing board or private owner with a problem in a building - wants: someone qualified to come and look at it and say what it takes. Handled by project_managers. Stages: open -> surveyed -> quoted -> won -> lost.
- build-enquiry: an owner who already knows what they want built or changed - wants: drawings, a permit application and a price. Handled by project_managers. Stages: open -> surveyed -> quoted -> won -> lost.
- warranty-claim: a past customer who has found a fault in work we handed over - wants: us to come back, look at it, and put it right. Handled by project_managers. Stages: open -> inspected -> accepted -> fixed -> rejected.
- neighbour-complaint: someone living or working next to one of our building sites - wants: the noise, dust or blocked access dealt with, and an answer. Handled by site_managers. Stages: open -> answered.
- subcontractor-application: a trade firm doing electrical, plumbing or scaffolding work - wants: to be approved once, and then be called when a job needs them. Handled by project_managers. Stages: open -> awaiting_papers -> approved -> declined.
- job-application: a carpenter, bricklayer or apprentice looking for work - wants: to be considered, without writing a letter. Handled by project_managers. Stages: open -> interviewing -> offered -> hired -> declined.
- change-request: a client whose job is under way and who wants something changed - wants: a price for the change, and the change done if they accept it. Handled by project_managers. Stages: open -> priced -> approved -> completed -> declined.
- log-phone-enquiry: a project manager who just took a call or a text about a building - wants: the enquiry written down before it gets lost. Handled by project_managers. Stages: open -> surveyed -> quoted -> won -> lost.
- post-job-request: a project manager with work to hand to a subcontractor - wants: approved subcontractors to see the job and answer with a price. Handled by project_managers. Stages: open -> awarded -> withdrawn.
- submit-bid: an approved subcontractor who has seen a job they can take - wants: to say yes with a price and a start date. Handled by project_managers. Stages: open -> shortlisted -> accepted -> declined.
- report-site-issue: anyone on site, ours or a subcontractor's, on a phone with gloves on - wants: to report a hazard, a near miss or wrong materials before they forget. Handled by safety_officer. Stages: open -> in_hand -> closed.
- order-materials: a carpenter or bricklayer who is about to run out of something - wants: it ordered and on site before work stops. Handled by site_managers. Stages: open -> ordered -> delivered -> refused.
- safety-round-finding: the safety officer walking a site on the weekly round - wants: each thing found written down where the reported issues already are. Handled by safety_officer. Stages: open -> in_hand -> closed.
The page: questions/crew/order-materials.yaml
It is a page only one role inside the business can open, holding one form.
Below is the page as JSON. Every value is a slot that says what to write there. Return the same JSON with every slot replaced by your words. Keep every key exactly as it is. A slot left as it is counts as no answer.
Rules for the words:
- `question` is a question the reader could ask themselves.
- A heading says what the reader gets, in the reader's own words, and must work without its description.
- Lead with what a thing enables. No negations in headings. No trade jargon the reader would not use.
- Descriptions are one or two short sentences. Labels and buttons are a few words.
- Write the way people in this trade and country actually speak.
{
"button": "<WRITE: a button, one to three words>",
"description": "<WRITE: one or two short sentences>",
"form_title": "<WRITE: a title for the form, two to four words>",
"heading": "<WRITE: a heading, at most eight words, saying what the reader gets>",
"labels": {
"needed_by": "<WRITE: a form label for the field `needed_by`>",
"site_address": "<WRITE: a form label for the field `site_address`>",
"what": "<WRITE: a form label for the field `what`>"
},
"page_description": "<WRITE: one or two short sentences>",
"question": "<WRITE: the one question this page asks its reader>"
}
Reply with the JSON object only.
=== REPLY ===
{
"button": "Order now",
"description": "Tell us what you need and where the site is so we can get it on its way.",
"form_title": "Order materials",
"heading": "Order materials for the site",
"labels": {
"needed_by": "Needed by",
"site_address": "Site address",
"what": "What do you need?"
},
"page_description": "Order materials before the site runs out.",
"question": "What do you need on site?"
}
@@ -0,0 +1,54 @@
You write the words for one page of a website for this business.
Business: Nordvik Bygg
About: Twelve people who survey old buildings, draw up rehabilitation plans, handle the permit application, and do the building work with their own carpenters plus subcontractors for electrical, plumbing and scaffolding. Project managers win and run the jobs, site managers run each building site day to day, and one safety officer owns everything reported from site.
Contact: Ingrid Nordvik <ingrid@nordvikbygg.example>
Language to write in: en
Everyone the site serves:
- door your-building: for an owner, a housing board or a past customer with a building; behind it: survey-enquiry, build-enquiry, warranty-claim
- door work-with-us: for a trade firm, a carpenter or an apprentice who wants work from us; behind it: subcontractor-application, job-application
- survey-enquiry: a housing board or private owner with a problem in a building - wants: someone qualified to come and look at it and say what it takes. Handled by project_managers. Stages: open -> surveyed -> quoted -> won -> lost.
- build-enquiry: an owner who already knows what they want built or changed - wants: drawings, a permit application and a price. Handled by project_managers. Stages: open -> surveyed -> quoted -> won -> lost.
- warranty-claim: a past customer who has found a fault in work we handed over - wants: us to come back, look at it, and put it right. Handled by project_managers. Stages: open -> inspected -> accepted -> fixed -> rejected.
- neighbour-complaint: someone living or working next to one of our building sites - wants: the noise, dust or blocked access dealt with, and an answer. Handled by site_managers. Stages: open -> answered.
- subcontractor-application: a trade firm doing electrical, plumbing or scaffolding work - wants: to be approved once, and then be called when a job needs them. Handled by project_managers. Stages: open -> awaiting_papers -> approved -> declined.
- job-application: a carpenter, bricklayer or apprentice looking for work - wants: to be considered, without writing a letter. Handled by project_managers. Stages: open -> interviewing -> offered -> hired -> declined.
- change-request: a client whose job is under way and who wants something changed - wants: a price for the change, and the change done if they accept it. Handled by project_managers. Stages: open -> priced -> approved -> completed -> declined.
- log-phone-enquiry: a project manager who just took a call or a text about a building - wants: the enquiry written down before it gets lost. Handled by project_managers. Stages: open -> surveyed -> quoted -> won -> lost.
- post-job-request: a project manager with work to hand to a subcontractor - wants: approved subcontractors to see the job and answer with a price. Handled by project_managers. Stages: open -> awarded -> withdrawn.
- submit-bid: an approved subcontractor who has seen a job they can take - wants: to say yes with a price and a start date. Handled by project_managers. Stages: open -> shortlisted -> accepted -> declined.
- report-site-issue: anyone on site, ours or a subcontractor's, on a phone with gloves on - wants: to report a hazard, a near miss or wrong materials before they forget. Handled by safety_officer. Stages: open -> in_hand -> closed.
- order-materials: a carpenter or bricklayer who is about to run out of something - wants: it ordered and on site before work stops. Handled by site_managers. Stages: open -> ordered -> delivered -> refused.
- safety-round-finding: the safety officer walking a site on the weekly round - wants: each thing found written down where the reported issues already are. Handled by safety_officer. Stages: open -> in_hand -> closed.
The page: questions/crew/report-site-issue-sent.yaml
It is a page shown right after someone has sent a form. Say who reads it, when they answer, and what happens next.
Below is the page as JSON. Every value is a slot that says what to write there. Return the same JSON with every slot replaced by your words. Keep every key exactly as it is. A slot left as it is counts as no answer.
Rules for the words:
- `question` is a question the reader could ask themselves.
- A heading says what the reader gets, in the reader's own words, and must work without its description.
- Lead with what a thing enables. No negations in headings. No trade jargon the reader would not use.
- Descriptions are one or two short sentences. Labels and buttons are a few words.
- Write the way people in this trade and country actually speak.
{
"back": "<WRITE: a button, one to three words>",
"description": "<WRITE: one or two short sentences>",
"next_description": "<WRITE: one or two short sentences>",
"next_heading": "<WRITE: a heading, at most eight words, saying what the reader gets>",
"question": "<WRITE: the one question this page asks its reader>"
}
Reply with the JSON object only.
=== REPLY ===
{
"back": "Back to form",
"description": "Your report has been sent to our safety officer. They will review the issue and get back to you.",
"next_description": "We will review the reported issue and update its status. You will be notified when it is resolved.",
"next_heading": "What happens next",
"question": "What happens after I submit?"
}
@@ -0,0 +1,66 @@
You write the words for one page of a website for this business.
Business: Nordvik Bygg
About: Twelve people who survey old buildings, draw up rehabilitation plans, handle the permit application, and do the building work with their own carpenters plus subcontractors for electrical, plumbing and scaffolding. Project managers win and run the jobs, site managers run each building site day to day, and one safety officer owns everything reported from site.
Contact: Ingrid Nordvik <ingrid@nordvikbygg.example>
Language to write in: en
Everyone the site serves:
- door your-building: for an owner, a housing board or a past customer with a building; behind it: survey-enquiry, build-enquiry, warranty-claim
- door work-with-us: for a trade firm, a carpenter or an apprentice who wants work from us; behind it: subcontractor-application, job-application
- survey-enquiry: a housing board or private owner with a problem in a building - wants: someone qualified to come and look at it and say what it takes. Handled by project_managers. Stages: open -> surveyed -> quoted -> won -> lost.
- build-enquiry: an owner who already knows what they want built or changed - wants: drawings, a permit application and a price. Handled by project_managers. Stages: open -> surveyed -> quoted -> won -> lost.
- warranty-claim: a past customer who has found a fault in work we handed over - wants: us to come back, look at it, and put it right. Handled by project_managers. Stages: open -> inspected -> accepted -> fixed -> rejected.
- neighbour-complaint: someone living or working next to one of our building sites - wants: the noise, dust or blocked access dealt with, and an answer. Handled by site_managers. Stages: open -> answered.
- subcontractor-application: a trade firm doing electrical, plumbing or scaffolding work - wants: to be approved once, and then be called when a job needs them. Handled by project_managers. Stages: open -> awaiting_papers -> approved -> declined.
- job-application: a carpenter, bricklayer or apprentice looking for work - wants: to be considered, without writing a letter. Handled by project_managers. Stages: open -> interviewing -> offered -> hired -> declined.
- change-request: a client whose job is under way and who wants something changed - wants: a price for the change, and the change done if they accept it. Handled by project_managers. Stages: open -> priced -> approved -> completed -> declined.
- log-phone-enquiry: a project manager who just took a call or a text about a building - wants: the enquiry written down before it gets lost. Handled by project_managers. Stages: open -> surveyed -> quoted -> won -> lost.
- post-job-request: a project manager with work to hand to a subcontractor - wants: approved subcontractors to see the job and answer with a price. Handled by project_managers. Stages: open -> awarded -> withdrawn.
- submit-bid: an approved subcontractor who has seen a job they can take - wants: to say yes with a price and a start date. Handled by project_managers. Stages: open -> shortlisted -> accepted -> declined.
- report-site-issue: anyone on site, ours or a subcontractor's, on a phone with gloves on - wants: to report a hazard, a near miss or wrong materials before they forget. Handled by safety_officer. Stages: open -> in_hand -> closed.
- order-materials: a carpenter or bricklayer who is about to run out of something - wants: it ordered and on site before work stops. Handled by site_managers. Stages: open -> ordered -> delivered -> refused.
- safety-round-finding: the safety officer walking a site on the weekly round - wants: each thing found written down where the reported issues already are. Handled by safety_officer. Stages: open -> in_hand -> closed.
The page: questions/crew/report-site-issue.yaml
It is a page only one role inside the business can open, holding one form.
Below is the page as JSON. Every value is a slot that says what to write there. Return the same JSON with every slot replaced by your words. Keep every key exactly as it is. A slot left as it is counts as no answer.
Rules for the words:
- `question` is a question the reader could ask themselves.
- A heading says what the reader gets, in the reader's own words, and must work without its description.
- Lead with what a thing enables. No negations in headings. No trade jargon the reader would not use.
- Descriptions are one or two short sentences. Labels and buttons are a few words.
- Write the way people in this trade and country actually speak.
{
"button": "<WRITE: a button, one to three words>",
"description": "<WRITE: one or two short sentences>",
"form_title": "<WRITE: a title for the form, two to four words>",
"heading": "<WRITE: a heading, at most eight words, saying what the reader gets>",
"labels": {
"kind": "<WRITE: a form label for the field `kind`>",
"what_happened": "<WRITE: a form label for the field `what_happened`>",
"where": "<WRITE: a form label for the field `where`>"
},
"page_description": "<WRITE: one or two short sentences>",
"question": "<WRITE: the one question this page asks its reader>"
}
Reply with the JSON object only.
=== REPLY ===
{
"button": "Report issue",
"description": "Write down a hazard, near miss, or wrong materials from the site so the safety officer can fix it.",
"form_title": "Report a site issue",
"heading": "Report a safety finding on site",
"labels": {
"kind": "What kind of issue",
"what_happened": "What happened",
"where": "Where on site"
},
"page_description": "Report a hazard, near miss, or wrong materials found during a site visit.",
"question": "What safety issue did you find?"
}
@@ -0,0 +1,72 @@
You write the words for one page of a website for this business.
Business: Nordvik Bygg
About: Twelve people who survey old buildings, draw up rehabilitation plans, handle the permit application, and do the building work with their own carpenters plus subcontractors for electrical, plumbing and scaffolding. Project managers win and run the jobs, site managers run each building site day to day, and one safety officer owns everything reported from site.
Contact: Ingrid Nordvik <ingrid@nordvikbygg.example>
Language to write in: en
Everyone the site serves:
- door your-building: for an owner, a housing board or a past customer with a building; behind it: survey-enquiry, build-enquiry, warranty-claim
- door work-with-us: for a trade firm, a carpenter or an apprentice who wants work from us; behind it: subcontractor-application, job-application
- survey-enquiry: a housing board or private owner with a problem in a building - wants: someone qualified to come and look at it and say what it takes. Handled by project_managers. Stages: open -> surveyed -> quoted -> won -> lost.
- build-enquiry: an owner who already knows what they want built or changed - wants: drawings, a permit application and a price. Handled by project_managers. Stages: open -> surveyed -> quoted -> won -> lost.
- warranty-claim: a past customer who has found a fault in work we handed over - wants: us to come back, look at it, and put it right. Handled by project_managers. Stages: open -> inspected -> accepted -> fixed -> rejected.
- neighbour-complaint: someone living or working next to one of our building sites - wants: the noise, dust or blocked access dealt with, and an answer. Handled by site_managers. Stages: open -> answered.
- subcontractor-application: a trade firm doing electrical, plumbing or scaffolding work - wants: to be approved once, and then be called when a job needs them. Handled by project_managers. Stages: open -> awaiting_papers -> approved -> declined.
- job-application: a carpenter, bricklayer or apprentice looking for work - wants: to be considered, without writing a letter. Handled by project_managers. Stages: open -> interviewing -> offered -> hired -> declined.
- change-request: a client whose job is under way and who wants something changed - wants: a price for the change, and the change done if they accept it. Handled by project_managers. Stages: open -> priced -> approved -> completed -> declined.
- log-phone-enquiry: a project manager who just took a call or a text about a building - wants: the enquiry written down before it gets lost. Handled by project_managers. Stages: open -> surveyed -> quoted -> won -> lost.
- post-job-request: a project manager with work to hand to a subcontractor - wants: approved subcontractors to see the job and answer with a price. Handled by project_managers. Stages: open -> awarded -> withdrawn.
- submit-bid: an approved subcontractor who has seen a job they can take - wants: to say yes with a price and a start date. Handled by project_managers. Stages: open -> shortlisted -> accepted -> declined.
- report-site-issue: anyone on site, ours or a subcontractor's, on a phone with gloves on - wants: to report a hazard, a near miss or wrong materials before they forget. Handled by safety_officer. Stages: open -> in_hand -> closed.
- order-materials: a carpenter or bricklayer who is about to run out of something - wants: it ordered and on site before work stops. Handled by site_managers. Stages: open -> ordered -> delivered -> refused.
- safety-round-finding: the safety officer walking a site on the weekly round - wants: each thing found written down where the reported issues already are. Handled by safety_officer. Stages: open -> in_hand -> closed.
The page: questions/decide/change-request.yaml
It is a page the person who sent a form reaches later, through a private link, to make a decision that is theirs: under `moves`, each entry is one thing they can decide.
Below is the page as JSON. Every value is a slot that says what to write there. Return the same JSON with every slot replaced by your words. Keep every key exactly as it is. A slot left as it is counts as no answer.
Rules for the words:
- `question` is a question the reader could ask themselves.
- A heading says what the reader gets, in the reader's own words, and must work without its description.
- Lead with what a thing enables. No negations in headings. No trade jargon the reader would not use.
- Descriptions are one or two short sentences. Labels and buttons are a few words.
- Write the way people in this trade and country actually speak.
{
"description": "<WRITE: one or two short sentences>",
"moves": {
"approved": {
"button": "<WRITE: a button, one to three words>",
"description": "<WRITE: one or two short sentences>",
"heading": "<WRITE: a heading, at most eight words, saying what the reader gets>"
},
"declined": {
"button": "<WRITE: a button, one to three words>",
"description": "<WRITE: one or two short sentences>",
"heading": "<WRITE: a heading, at most eight words, saying what the reader gets>"
}
},
"question": "<WRITE: the one question this page asks its reader>"
}
Reply with the JSON object only.
=== REPLY ===
{
"description": "You have submitted a change request for your ongoing project. Use this page to make your decision.",
"moves": {
"approved": {
"button": "Accept change",
"description": "The change will be added to the project scope and price. Work will proceed according to the new agreement.",
"heading": "Approve the change request"
},
"declined": {
"button": "Reject change",
"description": "The change will not be added to the project. The original scope and price remain unchanged.",
"heading": "Decline the change request"
}
},
"question": "What is your decision on this change request?"
}
@@ -0,0 +1,98 @@
You write the words for one page of a website for this business.
Business: Nordvik Bygg
About: Twelve people who survey old buildings, draw up rehabilitation plans, handle the permit application, and do the building work with their own carpenters plus subcontractors for electrical, plumbing and scaffolding. Project managers win and run the jobs, site managers run each building site day to day, and one safety officer owns everything reported from site.
Contact: Ingrid Nordvik <ingrid@nordvikbygg.example>
Language to write in: en
Everyone the site serves:
- door your-building: for an owner, a housing board or a past customer with a building; behind it: survey-enquiry, build-enquiry, warranty-claim
- door work-with-us: for a trade firm, a carpenter or an apprentice who wants work from us; behind it: subcontractor-application, job-application
- survey-enquiry: a housing board or private owner with a problem in a building - wants: someone qualified to come and look at it and say what it takes. Handled by project_managers. Stages: open -> surveyed -> quoted -> won -> lost.
- build-enquiry: an owner who already knows what they want built or changed - wants: drawings, a permit application and a price. Handled by project_managers. Stages: open -> surveyed -> quoted -> won -> lost.
- warranty-claim: a past customer who has found a fault in work we handed over - wants: us to come back, look at it, and put it right. Handled by project_managers. Stages: open -> inspected -> accepted -> fixed -> rejected.
- neighbour-complaint: someone living or working next to one of our building sites - wants: the noise, dust or blocked access dealt with, and an answer. Handled by site_managers. Stages: open -> answered.
- subcontractor-application: a trade firm doing electrical, plumbing or scaffolding work - wants: to be approved once, and then be called when a job needs them. Handled by project_managers. Stages: open -> awaiting_papers -> approved -> declined.
- job-application: a carpenter, bricklayer or apprentice looking for work - wants: to be considered, without writing a letter. Handled by project_managers. Stages: open -> interviewing -> offered -> hired -> declined.
- change-request: a client whose job is under way and who wants something changed - wants: a price for the change, and the change done if they accept it. Handled by project_managers. Stages: open -> priced -> approved -> completed -> declined.
- log-phone-enquiry: a project manager who just took a call or a text about a building - wants: the enquiry written down before it gets lost. Handled by project_managers. Stages: open -> surveyed -> quoted -> won -> lost.
- post-job-request: a project manager with work to hand to a subcontractor - wants: approved subcontractors to see the job and answer with a price. Handled by project_managers. Stages: open -> awarded -> withdrawn.
- submit-bid: an approved subcontractor who has seen a job they can take - wants: to say yes with a price and a start date. Handled by project_managers. Stages: open -> shortlisted -> accepted -> declined.
- report-site-issue: anyone on site, ours or a subcontractor's, on a phone with gloves on - wants: to report a hazard, a near miss or wrong materials before they forget. Handled by safety_officer. Stages: open -> in_hand -> closed.
- order-materials: a carpenter or bricklayer who is about to run out of something - wants: it ordered and on site before work stops. Handled by site_managers. Stages: open -> ordered -> delivered -> refused.
- safety-round-finding: the safety officer walking a site on the weekly round - wants: each thing found written down where the reported issues already are. Handled by safety_officer. Stages: open -> in_hand -> closed.
The page: questions/index.yaml
It is the front door: the first page any visitor sees. `question` is the page's one question. Under `doors`, each entry is one alternative that leads to a page of its own for one kind of visitor: its heading must let that visitor recognise themselves from the heading alone. Under `needs`, each entry is one alternative with a form behind it.
Below is the page as JSON. Every value is a slot that says what to write there. Return the same JSON with every slot replaced by your words. Keep every key exactly as it is. A slot left as it is counts as no answer.
Rules for the words:
- `question` is a question the reader could ask themselves.
- A heading says what the reader gets, in the reader's own words, and must work without its description.
- Lead with what a thing enables. No negations in headings. No trade jargon the reader would not use.
- Descriptions are one or two short sentences. Labels and buttons are a few words.
- Write the way people in this trade and country actually speak.
{
"description": "<WRITE: one or two short sentences>",
"doors": {
"work-with-us": {
"button": "<WRITE: a button, one to three words>",
"description": "<WRITE: one or two short sentences>",
"heading": "<WRITE: a heading, at most eight words, saying what the reader gets>"
},
"your-building": {
"button": "<WRITE: a button, one to three words>",
"description": "<WRITE: one or two short sentences>",
"heading": "<WRITE: a heading, at most eight words, saying what the reader gets>"
}
},
"needs": {
"neighbour-complaint": {
"button": "<WRITE: a button, one to three words>",
"description": "<WRITE: one or two short sentences>",
"form_title": "<WRITE: a title for the form, two to four words>",
"heading": "<WRITE: a heading, at most eight words, saying what the reader gets>",
"labels": {
"reach_me_on": "<WRITE: a form label for the field `reach_me_on`>",
"site_address": "<WRITE: a form label for the field `site_address`>",
"what_is_wrong": "<WRITE: a form label for the field `what_is_wrong`>"
}
}
},
"question": "<WRITE: the one question this page asks its reader>"
}
Reply with the JSON object only.
=== REPLY ===
{
"description": "Find the right path for your building or your career with Nordvik Bygg.",
"doors": {
"work-with-us": {
"button": "Join us",
"description": "Apply to work with us as a subcontractor or find a job as a carpenter or apprentice.",
"heading": "Work with Nordvik Bygg"
},
"your-building": {
"button": "Start here",
"description": "Report a problem, get a survey, or start a new build project.",
"heading": "Your building project"
}
},
"needs": {
"neighbour-complaint": {
"button": "Report issue",
"description": "Let us know about noise, dust, or access problems from a building site near you.",
"form_title": "Contact details",
"heading": "Neighbour complaint",
"labels": {
"reach_me_on": "Contact method",
"site_address": "Building address",
"what_is_wrong": "Describe the issue"
}
}
},
"question": "What brings you to Nordvik Bygg today?"
}
@@ -0,0 +1,246 @@
You write the words for one page of a website for this business.
Business: Nordvik Bygg
About: Twelve people who survey old buildings, draw up rehabilitation plans, handle the permit application, and do the building work with their own carpenters plus subcontractors for electrical, plumbing and scaffolding. Project managers win and run the jobs, site managers run each building site day to day, and one safety officer owns everything reported from site.
Contact: Ingrid Nordvik <ingrid@nordvikbygg.example>
Language to write in: en
Everyone the site serves:
- door your-building: for an owner, a housing board or a past customer with a building; behind it: survey-enquiry, build-enquiry, warranty-claim
- door work-with-us: for a trade firm, a carpenter or an apprentice who wants work from us; behind it: subcontractor-application, job-application
- survey-enquiry: a housing board or private owner with a problem in a building - wants: someone qualified to come and look at it and say what it takes. Handled by project_managers. Stages: open -> surveyed -> quoted -> won -> lost.
- build-enquiry: an owner who already knows what they want built or changed - wants: drawings, a permit application and a price. Handled by project_managers. Stages: open -> surveyed -> quoted -> won -> lost.
- warranty-claim: a past customer who has found a fault in work we handed over - wants: us to come back, look at it, and put it right. Handled by project_managers. Stages: open -> inspected -> accepted -> fixed -> rejected.
- neighbour-complaint: someone living or working next to one of our building sites - wants: the noise, dust or blocked access dealt with, and an answer. Handled by site_managers. Stages: open -> answered.
- subcontractor-application: a trade firm doing electrical, plumbing or scaffolding work - wants: to be approved once, and then be called when a job needs them. Handled by project_managers. Stages: open -> awaiting_papers -> approved -> declined.
- job-application: a carpenter, bricklayer or apprentice looking for work - wants: to be considered, without writing a letter. Handled by project_managers. Stages: open -> interviewing -> offered -> hired -> declined.
- change-request: a client whose job is under way and who wants something changed - wants: a price for the change, and the change done if they accept it. Handled by project_managers. Stages: open -> priced -> approved -> completed -> declined.
- log-phone-enquiry: a project manager who just took a call or a text about a building - wants: the enquiry written down before it gets lost. Handled by project_managers. Stages: open -> surveyed -> quoted -> won -> lost.
- post-job-request: a project manager with work to hand to a subcontractor - wants: approved subcontractors to see the job and answer with a price. Handled by project_managers. Stages: open -> awarded -> withdrawn.
- submit-bid: an approved subcontractor who has seen a job they can take - wants: to say yes with a price and a start date. Handled by project_managers. Stages: open -> shortlisted -> accepted -> declined.
- report-site-issue: anyone on site, ours or a subcontractor's, on a phone with gloves on - wants: to report a hazard, a near miss or wrong materials before they forget. Handled by safety_officer. Stages: open -> in_hand -> closed.
- order-materials: a carpenter or bricklayer who is about to run out of something - wants: it ordered and on site before work stops. Handled by site_managers. Stages: open -> ordered -> delivered -> refused.
- safety-round-finding: the safety officer walking a site on the weekly round - wants: each thing found written down where the reported issues already are. Handled by safety_officer. Stages: open -> in_hand -> closed.
The page: questions/project_managers/index.yaml
It is a desk: the page one role inside the business works from. Under `buckets`, each entry is a list of cases; `moves` are the buttons that move a case from one stage to the next (key `from->to`), so label each with what the person has just done. Under `links` are pages this role can open.
Below is the page as JSON. Every value is a slot that says what to write there. Return the same JSON with every slot replaced by your words. Keep every key exactly as it is. A slot left as it is counts as no answer.
Rules for the words:
- `question` is a question the reader could ask themselves.
- A heading says what the reader gets, in the reader's own words, and must work without its description.
- Lead with what a thing enables. No negations in headings. No trade jargon the reader would not use.
- Descriptions are one or two short sentences. Labels and buttons are a few words.
- Write the way people in this trade and country actually speak.
{
"buckets": {
"applicants": {
"description": "<WRITE: one or two short sentences>",
"heading": "<WRITE: a heading, at most eight words, saying what the reader gets>",
"moves": {
"interviewing->declined": "<WRITE: a button, two to four words, for a case going interviewing->declined>",
"interviewing->offered": "<WRITE: a button, two to four words, for a case going interviewing->offered>",
"offered->declined": "<WRITE: a button, two to four words, for a case going offered->declined>",
"offered->hired": "<WRITE: a button, two to four words, for a case going offered->hired>",
"open->declined": "<WRITE: a button, two to four words, for a case going open->declined>",
"open->interviewing": "<WRITE: a button, two to four words, for a case going open->interviewing>"
}
},
"bids": {
"description": "<WRITE: one or two short sentences>",
"heading": "<WRITE: a heading, at most eight words, saying what the reader gets>",
"moves": {
"open->accepted": "<WRITE: a button, two to four words, for a case going open->accepted>",
"open->declined": "<WRITE: a button, two to four words, for a case going open->declined>",
"open->shortlisted": "<WRITE: a button, two to four words, for a case going open->shortlisted>",
"shortlisted->accepted": "<WRITE: a button, two to four words, for a case going shortlisted->accepted>",
"shortlisted->declined": "<WRITE: a button, two to four words, for a case going shortlisted->declined>"
}
},
"change_orders": {
"description": "<WRITE: one or two short sentences>",
"heading": "<WRITE: a heading, at most eight words, saying what the reader gets>",
"moves": {
"approved->declined": "<WRITE: a button, two to four words, for a case going approved->declined>",
"open->declined": "<WRITE: a button, two to four words, for a case going open->declined>",
"open->priced": "<WRITE: a button, two to four words, for a case going open->priced>",
"priced->declined": "<WRITE: a button, two to four words, for a case going priced->declined>"
}
},
"claims": {
"description": "<WRITE: one or two short sentences>",
"heading": "<WRITE: a heading, at most eight words, saying what the reader gets>",
"moves": {
"accepted->rejected": "<WRITE: a button, two to four words, for a case going accepted->rejected>",
"inspected->accepted": "<WRITE: a button, two to four words, for a case going inspected->accepted>",
"inspected->rejected": "<WRITE: a button, two to four words, for a case going inspected->rejected>",
"open->rejected": "<WRITE: a button, two to four words, for a case going open->rejected>"
}
},
"complaints": {
"description": "<WRITE: one or two short sentences>",
"heading": "<WRITE: a heading, at most eight words, saying what the reader gets>",
"moves": {}
},
"enquiries": {
"description": "<WRITE: one or two short sentences>",
"heading": "<WRITE: a heading, at most eight words, saying what the reader gets>",
"moves": {
"open->lost": "<WRITE: a button, two to four words, for a case going open->lost>",
"open->surveyed": "<WRITE: a button, two to four words, for a case going open->surveyed>",
"quoted->lost": "<WRITE: a button, two to four words, for a case going quoted->lost>",
"quoted->won": "<WRITE: a button, two to four words, for a case going quoted->won>",
"surveyed->lost": "<WRITE: a button, two to four words, for a case going surveyed->lost>",
"surveyed->quoted": "<WRITE: a button, two to four words, for a case going surveyed->quoted>"
}
},
"job_requests": {
"description": "<WRITE: one or two short sentences>",
"heading": "<WRITE: a heading, at most eight words, saying what the reader gets>",
"moves": {
"open->awarded": "<WRITE: a button, two to four words, for a case going open->awarded>",
"open->withdrawn": "<WRITE: a button, two to four words, for a case going open->withdrawn>"
}
},
"site_issues": {
"description": "<WRITE: one or two short sentences>",
"heading": "<WRITE: a heading, at most eight words, saying what the reader gets>",
"moves": {}
},
"subcontractors": {
"description": "<WRITE: one or two short sentences>",
"heading": "<WRITE: a heading, at most eight words, saying what the reader gets>",
"moves": {
"awaiting_papers->approved": "<WRITE: a button, two to four words, for a case going awaiting_papers->approved>",
"awaiting_papers->declined": "<WRITE: a button, two to four words, for a case going awaiting_papers->declined>",
"open->approved": "<WRITE: a button, two to four words, for a case going open->approved>",
"open->awaiting_papers": "<WRITE: a button, two to four words, for a case going open->awaiting_papers>",
"open->declined": "<WRITE: a button, two to four words, for a case going open->declined>"
}
}
},
"confirm": "<WRITE: a button, one to three words>",
"description": "<WRITE: one or two short sentences>",
"links": {
"log-phone-enquiry": {
"button": "<WRITE: a button, one to three words>",
"description": "<WRITE: one or two short sentences>",
"heading": "<WRITE: a heading, at most eight words, saying what the reader gets>"
},
"post-job-request": {
"button": "<WRITE: a button, one to three words>",
"description": "<WRITE: one or two short sentences>",
"heading": "<WRITE: a heading, at most eight words, saying what the reader gets>"
}
},
"question": "<WRITE: the one question this page asks its reader>"
}
Reply with the JSON object only.
=== REPLY ===
{
"buckets": {
"applicants": {
"description": "Track carpenter and apprentice applications from open to hired, with interview steps in between.",
"heading": "Applicant cases",
"moves": {
"interviewing->declined": "Mark declined",
"interviewing->offered": "Offer role",
"offered->declined": "Reject offer",
"offered->hired": "Confirm hire",
"open->declined": "Mark declined",
"open->interviewing": "Start interview"
}
},
"bids": {
"description": "Handle subcontractor bids from open submission to accepted or declined.",
"heading": "Bid management",
"moves": {
"open->accepted": "Accept bid",
"open->declined": "Reject bid",
"open->shortlisted": "Shortlist bid",
"shortlisted->accepted": "Accept shortlist",
"shortlisted->declined": "Reject shortlist"
}
},
"change_orders": {
"description": "Track client change requests from open inquiry through pricing and completion.",
"heading": "Change order cases",
"moves": {
"approved->declined": "Reject change",
"open->declined": "Reject request",
"open->priced": "Price the change",
"priced->declined": "Reject priced change"
}
},
"claims": {
"description": "Handle warranty claims from inspection through to acceptance or rejection of the fix.",
"heading": "Warranty claim cases",
"moves": {
"accepted->rejected": "Reject fix",
"inspected->accepted": "Accept fix",
"inspected->rejected": "Reject fix",
"open->rejected": "Reject claim"
}
},
"complaints": {
"description": "Record and resolve neighbour complaints about site noise, dust or access.",
"heading": "Neighbour complaints",
"moves": {}
},
"enquiries": {
"description": "Track building enquiries from initial contact through survey, quote and win/lose outcome.",
"heading": "Building enquiries",
"moves": {
"open->lost": "Mark lost",
"open->surveyed": "Book survey",
"quoted->lost": "Mark lost",
"quoted->won": "Win work",
"surveyed->lost": "Mark lost",
"surveyed->quoted": "Send quote"
}
},
"job_requests": {
"description": "Manage internal job assignments for subcontractors from open through to awarded or withdrawn.",
"heading": "Job requests",
"moves": {
"open->awarded": "Award job",
"open->withdrawn": "Withdraw job"
}
},
"site_issues": {
"description": "Log safety and quality issues reported from site, through to closure.",
"heading": "Site issue log",
"moves": {}
},
"subcontractors": {
"description": "Track trade firm applications from open through paper review to approved or declined status.",
"heading": "Subcontractor cases",
"moves": {
"awaiting_papers->approved": "Approve firm",
"awaiting_papers->declined": "Decline firm",
"open->approved": "Approve application",
"open->awaiting_papers": "Await papers",
"open->declined": "Decline application"
}
}
},
"confirm": "Confirm",
"description": "Manage and track all project enquiries, applications and site issues from one desk.",
"links": {
"log-phone-enquiry": {
"button": "Log call",
"description": "Record a new building enquiry or client call before details are lost.",
"heading": "Log phone enquiry"
},
"post-job-request": {
"button": "Post job",
"description": "Send an approved job to subcontractors for bidding.",
"heading": "Post job request"
}
},
"question": "What case do you want to work on?"
}
@@ -0,0 +1,54 @@
You write the words for one page of a website for this business.
Business: Nordvik Bygg
About: Twelve people who survey old buildings, draw up rehabilitation plans, handle the permit application, and do the building work with their own carpenters plus subcontractors for electrical, plumbing and scaffolding. Project managers win and run the jobs, site managers run each building site day to day, and one safety officer owns everything reported from site.
Contact: Ingrid Nordvik <ingrid@nordvikbygg.example>
Language to write in: en
Everyone the site serves:
- door your-building: for an owner, a housing board or a past customer with a building; behind it: survey-enquiry, build-enquiry, warranty-claim
- door work-with-us: for a trade firm, a carpenter or an apprentice who wants work from us; behind it: subcontractor-application, job-application
- survey-enquiry: a housing board or private owner with a problem in a building - wants: someone qualified to come and look at it and say what it takes. Handled by project_managers. Stages: open -> surveyed -> quoted -> won -> lost.
- build-enquiry: an owner who already knows what they want built or changed - wants: drawings, a permit application and a price. Handled by project_managers. Stages: open -> surveyed -> quoted -> won -> lost.
- warranty-claim: a past customer who has found a fault in work we handed over - wants: us to come back, look at it, and put it right. Handled by project_managers. Stages: open -> inspected -> accepted -> fixed -> rejected.
- neighbour-complaint: someone living or working next to one of our building sites - wants: the noise, dust or blocked access dealt with, and an answer. Handled by site_managers. Stages: open -> answered.
- subcontractor-application: a trade firm doing electrical, plumbing or scaffolding work - wants: to be approved once, and then be called when a job needs them. Handled by project_managers. Stages: open -> awaiting_papers -> approved -> declined.
- job-application: a carpenter, bricklayer or apprentice looking for work - wants: to be considered, without writing a letter. Handled by project_managers. Stages: open -> interviewing -> offered -> hired -> declined.
- change-request: a client whose job is under way and who wants something changed - wants: a price for the change, and the change done if they accept it. Handled by project_managers. Stages: open -> priced -> approved -> completed -> declined.
- log-phone-enquiry: a project manager who just took a call or a text about a building - wants: the enquiry written down before it gets lost. Handled by project_managers. Stages: open -> surveyed -> quoted -> won -> lost.
- post-job-request: a project manager with work to hand to a subcontractor - wants: approved subcontractors to see the job and answer with a price. Handled by project_managers. Stages: open -> awarded -> withdrawn.
- submit-bid: an approved subcontractor who has seen a job they can take - wants: to say yes with a price and a start date. Handled by project_managers. Stages: open -> shortlisted -> accepted -> declined.
- report-site-issue: anyone on site, ours or a subcontractor's, on a phone with gloves on - wants: to report a hazard, a near miss or wrong materials before they forget. Handled by safety_officer. Stages: open -> in_hand -> closed.
- order-materials: a carpenter or bricklayer who is about to run out of something - wants: it ordered and on site before work stops. Handled by site_managers. Stages: open -> ordered -> delivered -> refused.
- safety-round-finding: the safety officer walking a site on the weekly round - wants: each thing found written down where the reported issues already are. Handled by safety_officer. Stages: open -> in_hand -> closed.
The page: questions/project_managers/log-phone-enquiry-sent.yaml
It is a page shown right after someone has sent a form. Say who reads it, when they answer, and what happens next.
Below is the page as JSON. Every value is a slot that says what to write there. Return the same JSON with every slot replaced by your words. Keep every key exactly as it is. A slot left as it is counts as no answer.
Rules for the words:
- `question` is a question the reader could ask themselves.
- A heading says what the reader gets, in the reader's own words, and must work without its description.
- Lead with what a thing enables. No negations in headings. No trade jargon the reader would not use.
- Descriptions are one or two short sentences. Labels and buttons are a few words.
- Write the way people in this trade and country actually speak.
{
"back": "<WRITE: a button, one to three words>",
"description": "<WRITE: one or two short sentences>",
"next_description": "<WRITE: one or two short sentences>",
"next_heading": "<WRITE: a heading, at most eight words, saying what the reader gets>",
"question": "<WRITE: the one question this page asks its reader>"
}
Reply with the JSON object only.
=== REPLY ===
{
"back": "Back to enquiry",
"description": "Your phone call has been recorded. We will review it and get back to you.",
"next_description": "We will call you to discuss the issue and decide on the next steps.",
"next_heading": "What happens next?",
"question": "Did we capture everything you needed?"
}
@@ -0,0 +1,68 @@
You write the words for one page of a website for this business.
Business: Nordvik Bygg
About: Twelve people who survey old buildings, draw up rehabilitation plans, handle the permit application, and do the building work with their own carpenters plus subcontractors for electrical, plumbing and scaffolding. Project managers win and run the jobs, site managers run each building site day to day, and one safety officer owns everything reported from site.
Contact: Ingrid Nordvik <ingrid@nordvikbygg.example>
Language to write in: en
Everyone the site serves:
- door your-building: for an owner, a housing board or a past customer with a building; behind it: survey-enquiry, build-enquiry, warranty-claim
- door work-with-us: for a trade firm, a carpenter or an apprentice who wants work from us; behind it: subcontractor-application, job-application
- survey-enquiry: a housing board or private owner with a problem in a building - wants: someone qualified to come and look at it and say what it takes. Handled by project_managers. Stages: open -> surveyed -> quoted -> won -> lost.
- build-enquiry: an owner who already knows what they want built or changed - wants: drawings, a permit application and a price. Handled by project_managers. Stages: open -> surveyed -> quoted -> won -> lost.
- warranty-claim: a past customer who has found a fault in work we handed over - wants: us to come back, look at it, and put it right. Handled by project_managers. Stages: open -> inspected -> accepted -> fixed -> rejected.
- neighbour-complaint: someone living or working next to one of our building sites - wants: the noise, dust or blocked access dealt with, and an answer. Handled by site_managers. Stages: open -> answered.
- subcontractor-application: a trade firm doing electrical, plumbing or scaffolding work - wants: to be approved once, and then be called when a job needs them. Handled by project_managers. Stages: open -> awaiting_papers -> approved -> declined.
- job-application: a carpenter, bricklayer or apprentice looking for work - wants: to be considered, without writing a letter. Handled by project_managers. Stages: open -> interviewing -> offered -> hired -> declined.
- change-request: a client whose job is under way and who wants something changed - wants: a price for the change, and the change done if they accept it. Handled by project_managers. Stages: open -> priced -> approved -> completed -> declined.
- log-phone-enquiry: a project manager who just took a call or a text about a building - wants: the enquiry written down before it gets lost. Handled by project_managers. Stages: open -> surveyed -> quoted -> won -> lost.
- post-job-request: a project manager with work to hand to a subcontractor - wants: approved subcontractors to see the job and answer with a price. Handled by project_managers. Stages: open -> awarded -> withdrawn.
- submit-bid: an approved subcontractor who has seen a job they can take - wants: to say yes with a price and a start date. Handled by project_managers. Stages: open -> shortlisted -> accepted -> declined.
- report-site-issue: anyone on site, ours or a subcontractor's, on a phone with gloves on - wants: to report a hazard, a near miss or wrong materials before they forget. Handled by safety_officer. Stages: open -> in_hand -> closed.
- order-materials: a carpenter or bricklayer who is about to run out of something - wants: it ordered and on site before work stops. Handled by site_managers. Stages: open -> ordered -> delivered -> refused.
- safety-round-finding: the safety officer walking a site on the weekly round - wants: each thing found written down where the reported issues already are. Handled by safety_officer. Stages: open -> in_hand -> closed.
The page: questions/project_managers/log-phone-enquiry.yaml
It is a page only one role inside the business can open, holding one form.
Below is the page as JSON. Every value is a slot that says what to write there. Return the same JSON with every slot replaced by your words. Keep every key exactly as it is. A slot left as it is counts as no answer.
Rules for the words:
- `question` is a question the reader could ask themselves.
- A heading says what the reader gets, in the reader's own words, and must work without its description.
- Lead with what a thing enables. No negations in headings. No trade jargon the reader would not use.
- Descriptions are one or two short sentences. Labels and buttons are a few words.
- Write the way people in this trade and country actually speak.
{
"button": "<WRITE: a button, one to three words>",
"description": "<WRITE: one or two short sentences>",
"form_title": "<WRITE: a title for the form, two to four words>",
"heading": "<WRITE: a heading, at most eight words, saying what the reader gets>",
"labels": {
"address": "<WRITE: a form label for the field `address`>",
"caller": "<WRITE: a form label for the field `caller`>",
"phone": "<WRITE: a form label for the field `phone`>",
"problem": "<WRITE: a form label for the field `problem`>"
},
"page_description": "<WRITE: one or two short sentences>",
"question": "<WRITE: the one question this page asks its reader>"
}
Reply with the JSON object only.
=== REPLY ===
{
"button": "Log call",
"description": "Write down the enquiry so it doesn't get lost. One call, one record.",
"form_title": "Phone enquiry log",
"heading": "Log a phone enquiry",
"labels": {
"address": "Address or site location",
"caller": "Your name",
"phone": "Phone number",
"problem": "What was said"
},
"page_description": "Record a building enquiry taken over the phone.",
"question": "What was said on the call?"
}
@@ -0,0 +1,54 @@
You write the words for one page of a website for this business.
Business: Nordvik Bygg
About: Twelve people who survey old buildings, draw up rehabilitation plans, handle the permit application, and do the building work with their own carpenters plus subcontractors for electrical, plumbing and scaffolding. Project managers win and run the jobs, site managers run each building site day to day, and one safety officer owns everything reported from site.
Contact: Ingrid Nordvik <ingrid@nordvikbygg.example>
Language to write in: en
Everyone the site serves:
- door your-building: for an owner, a housing board or a past customer with a building; behind it: survey-enquiry, build-enquiry, warranty-claim
- door work-with-us: for a trade firm, a carpenter or an apprentice who wants work from us; behind it: subcontractor-application, job-application
- survey-enquiry: a housing board or private owner with a problem in a building - wants: someone qualified to come and look at it and say what it takes. Handled by project_managers. Stages: open -> surveyed -> quoted -> won -> lost.
- build-enquiry: an owner who already knows what they want built or changed - wants: drawings, a permit application and a price. Handled by project_managers. Stages: open -> surveyed -> quoted -> won -> lost.
- warranty-claim: a past customer who has found a fault in work we handed over - wants: us to come back, look at it, and put it right. Handled by project_managers. Stages: open -> inspected -> accepted -> fixed -> rejected.
- neighbour-complaint: someone living or working next to one of our building sites - wants: the noise, dust or blocked access dealt with, and an answer. Handled by site_managers. Stages: open -> answered.
- subcontractor-application: a trade firm doing electrical, plumbing or scaffolding work - wants: to be approved once, and then be called when a job needs them. Handled by project_managers. Stages: open -> awaiting_papers -> approved -> declined.
- job-application: a carpenter, bricklayer or apprentice looking for work - wants: to be considered, without writing a letter. Handled by project_managers. Stages: open -> interviewing -> offered -> hired -> declined.
- change-request: a client whose job is under way and who wants something changed - wants: a price for the change, and the change done if they accept it. Handled by project_managers. Stages: open -> priced -> approved -> completed -> declined.
- log-phone-enquiry: a project manager who just took a call or a text about a building - wants: the enquiry written down before it gets lost. Handled by project_managers. Stages: open -> surveyed -> quoted -> won -> lost.
- post-job-request: a project manager with work to hand to a subcontractor - wants: approved subcontractors to see the job and answer with a price. Handled by project_managers. Stages: open -> awarded -> withdrawn.
- submit-bid: an approved subcontractor who has seen a job they can take - wants: to say yes with a price and a start date. Handled by project_managers. Stages: open -> shortlisted -> accepted -> declined.
- report-site-issue: anyone on site, ours or a subcontractor's, on a phone with gloves on - wants: to report a hazard, a near miss or wrong materials before they forget. Handled by safety_officer. Stages: open -> in_hand -> closed.
- order-materials: a carpenter or bricklayer who is about to run out of something - wants: it ordered and on site before work stops. Handled by site_managers. Stages: open -> ordered -> delivered -> refused.
- safety-round-finding: the safety officer walking a site on the weekly round - wants: each thing found written down where the reported issues already are. Handled by safety_officer. Stages: open -> in_hand -> closed.
The page: questions/project_managers/post-job-request-sent.yaml
It is a page shown right after someone has sent a form. Say who reads it, when they answer, and what happens next.
Below is the page as JSON. Every value is a slot that says what to write there. Return the same JSON with every slot replaced by your words. Keep every key exactly as it is. A slot left as it is counts as no answer.
Rules for the words:
- `question` is a question the reader could ask themselves.
- A heading says what the reader gets, in the reader's own words, and must work without its description.
- Lead with what a thing enables. No negations in headings. No trade jargon the reader would not use.
- Descriptions are one or two short sentences. Labels and buttons are a few words.
- Write the way people in this trade and country actually speak.
{
"back": "<WRITE: a button, one to three words>",
"description": "<WRITE: one or two short sentences>",
"next_description": "<WRITE: one or two short sentences>",
"next_heading": "<WRITE: a heading, at most eight words, saying what the reader gets>",
"question": "<WRITE: the one question this page asks its reader>"
}
Reply with the JSON object only.
=== REPLY ===
{
"back": "Back to list",
"description": "Your post-job request has been sent to our project managers. They will review the details and reach out to approved subcontractors.",
"next_description": "Once a subcontractor accepts the job, the status will update and you’ll be able to track the progress.",
"next_heading": "Awaiting subcontractor response",
"question": "Who will take on this job?"
}
@@ -0,0 +1,68 @@
You write the words for one page of a website for this business.
Business: Nordvik Bygg
About: Twelve people who survey old buildings, draw up rehabilitation plans, handle the permit application, and do the building work with their own carpenters plus subcontractors for electrical, plumbing and scaffolding. Project managers win and run the jobs, site managers run each building site day to day, and one safety officer owns everything reported from site.
Contact: Ingrid Nordvik <ingrid@nordvikbygg.example>
Language to write in: en
Everyone the site serves:
- door your-building: for an owner, a housing board or a past customer with a building; behind it: survey-enquiry, build-enquiry, warranty-claim
- door work-with-us: for a trade firm, a carpenter or an apprentice who wants work from us; behind it: subcontractor-application, job-application
- survey-enquiry: a housing board or private owner with a problem in a building - wants: someone qualified to come and look at it and say what it takes. Handled by project_managers. Stages: open -> surveyed -> quoted -> won -> lost.
- build-enquiry: an owner who already knows what they want built or changed - wants: drawings, a permit application and a price. Handled by project_managers. Stages: open -> surveyed -> quoted -> won -> lost.
- warranty-claim: a past customer who has found a fault in work we handed over - wants: us to come back, look at it, and put it right. Handled by project_managers. Stages: open -> inspected -> accepted -> fixed -> rejected.
- neighbour-complaint: someone living or working next to one of our building sites - wants: the noise, dust or blocked access dealt with, and an answer. Handled by site_managers. Stages: open -> answered.
- subcontractor-application: a trade firm doing electrical, plumbing or scaffolding work - wants: to be approved once, and then be called when a job needs them. Handled by project_managers. Stages: open -> awaiting_papers -> approved -> declined.
- job-application: a carpenter, bricklayer or apprentice looking for work - wants: to be considered, without writing a letter. Handled by project_managers. Stages: open -> interviewing -> offered -> hired -> declined.
- change-request: a client whose job is under way and who wants something changed - wants: a price for the change, and the change done if they accept it. Handled by project_managers. Stages: open -> priced -> approved -> completed -> declined.
- log-phone-enquiry: a project manager who just took a call or a text about a building - wants: the enquiry written down before it gets lost. Handled by project_managers. Stages: open -> surveyed -> quoted -> won -> lost.
- post-job-request: a project manager with work to hand to a subcontractor - wants: approved subcontractors to see the job and answer with a price. Handled by project_managers. Stages: open -> awarded -> withdrawn.
- submit-bid: an approved subcontractor who has seen a job they can take - wants: to say yes with a price and a start date. Handled by project_managers. Stages: open -> shortlisted -> accepted -> declined.
- report-site-issue: anyone on site, ours or a subcontractor's, on a phone with gloves on - wants: to report a hazard, a near miss or wrong materials before they forget. Handled by safety_officer. Stages: open -> in_hand -> closed.
- order-materials: a carpenter or bricklayer who is about to run out of something - wants: it ordered and on site before work stops. Handled by site_managers. Stages: open -> ordered -> delivered -> refused.
- safety-round-finding: the safety officer walking a site on the weekly round - wants: each thing found written down where the reported issues already are. Handled by safety_officer. Stages: open -> in_hand -> closed.
The page: questions/project_managers/post-job-request.yaml
It is a page only one role inside the business can open, holding one form.
Below is the page as JSON. Every value is a slot that says what to write there. Return the same JSON with every slot replaced by your words. Keep every key exactly as it is. A slot left as it is counts as no answer.
Rules for the words:
- `question` is a question the reader could ask themselves.
- A heading says what the reader gets, in the reader's own words, and must work without its description.
- Lead with what a thing enables. No negations in headings. No trade jargon the reader would not use.
- Descriptions are one or two short sentences. Labels and buttons are a few words.
- Write the way people in this trade and country actually speak.
{
"button": "<WRITE: a button, one to three words>",
"description": "<WRITE: one or two short sentences>",
"form_title": "<WRITE: a title for the form, two to four words>",
"heading": "<WRITE: a heading, at most eight words, saying what the reader gets>",
"labels": {
"site_address": "<WRITE: a form label for the field `site_address`>",
"start": "<WRITE: a form label for the field `start`>",
"trade": "<WRITE: a form label for the field `trade`>",
"work": "<WRITE: a form label for the field `work`>"
},
"page_description": "<WRITE: one or two short sentences>",
"question": "<WRITE: the one question this page asks its reader>"
}
Reply with the JSON object only.
=== REPLY ===
{
"button": "Submit request",
"description": "Tell us about the job you have ready to hand to a subcontractor.",
"form_title": "Post a job for subcontractors",
"heading": "Give subcontractors a job to price",
"labels": {
"site_address": "Site address",
"start": "When work starts",
"trade": "Trade needed",
"work": "Work description"
},
"page_description": "Post a job so approved subcontractors can price it.",
"question": "What job do you have for a subcontractor?"
}
@@ -0,0 +1,54 @@
You write the words for one page of a website for this business.
Business: Nordvik Bygg
About: Twelve people who survey old buildings, draw up rehabilitation plans, handle the permit application, and do the building work with their own carpenters plus subcontractors for electrical, plumbing and scaffolding. Project managers win and run the jobs, site managers run each building site day to day, and one safety officer owns everything reported from site.
Contact: Ingrid Nordvik <ingrid@nordvikbygg.example>
Language to write in: en
Everyone the site serves:
- door your-building: for an owner, a housing board or a past customer with a building; behind it: survey-enquiry, build-enquiry, warranty-claim
- door work-with-us: for a trade firm, a carpenter or an apprentice who wants work from us; behind it: subcontractor-application, job-application
- survey-enquiry: a housing board or private owner with a problem in a building - wants: someone qualified to come and look at it and say what it takes. Handled by project_managers. Stages: open -> surveyed -> quoted -> won -> lost.
- build-enquiry: an owner who already knows what they want built or changed - wants: drawings, a permit application and a price. Handled by project_managers. Stages: open -> surveyed -> quoted -> won -> lost.
- warranty-claim: a past customer who has found a fault in work we handed over - wants: us to come back, look at it, and put it right. Handled by project_managers. Stages: open -> inspected -> accepted -> fixed -> rejected.
- neighbour-complaint: someone living or working next to one of our building sites - wants: the noise, dust or blocked access dealt with, and an answer. Handled by site_managers. Stages: open -> answered.
- subcontractor-application: a trade firm doing electrical, plumbing or scaffolding work - wants: to be approved once, and then be called when a job needs them. Handled by project_managers. Stages: open -> awaiting_papers -> approved -> declined.
- job-application: a carpenter, bricklayer or apprentice looking for work - wants: to be considered, without writing a letter. Handled by project_managers. Stages: open -> interviewing -> offered -> hired -> declined.
- change-request: a client whose job is under way and who wants something changed - wants: a price for the change, and the change done if they accept it. Handled by project_managers. Stages: open -> priced -> approved -> completed -> declined.
- log-phone-enquiry: a project manager who just took a call or a text about a building - wants: the enquiry written down before it gets lost. Handled by project_managers. Stages: open -> surveyed -> quoted -> won -> lost.
- post-job-request: a project manager with work to hand to a subcontractor - wants: approved subcontractors to see the job and answer with a price. Handled by project_managers. Stages: open -> awarded -> withdrawn.
- submit-bid: an approved subcontractor who has seen a job they can take - wants: to say yes with a price and a start date. Handled by project_managers. Stages: open -> shortlisted -> accepted -> declined.
- report-site-issue: anyone on site, ours or a subcontractor's, on a phone with gloves on - wants: to report a hazard, a near miss or wrong materials before they forget. Handled by safety_officer. Stages: open -> in_hand -> closed.
- order-materials: a carpenter or bricklayer who is about to run out of something - wants: it ordered and on site before work stops. Handled by site_managers. Stages: open -> ordered -> delivered -> refused.
- safety-round-finding: the safety officer walking a site on the weekly round - wants: each thing found written down where the reported issues already are. Handled by safety_officer. Stages: open -> in_hand -> closed.
The page: questions/received/build-enquiry.yaml
It is a page shown right after someone has sent a form. Say who reads it, when they answer, and what happens next.
Below is the page as JSON. Every value is a slot that says what to write there. Return the same JSON with every slot replaced by your words. Keep every key exactly as it is. A slot left as it is counts as no answer.
Rules for the words:
- `question` is a question the reader could ask themselves.
- A heading says what the reader gets, in the reader's own words, and must work without its description.
- Lead with what a thing enables. No negations in headings. No trade jargon the reader would not use.
- Descriptions are one or two short sentences. Labels and buttons are a few words.
- Write the way people in this trade and country actually speak.
{
"back": "<WRITE: a button, one to three words>",
"description": "<WRITE: one or two short sentences>",
"next_description": "<WRITE: one or two short sentences>",
"next_heading": "<WRITE: a heading, at most eight words, saying what the reader gets>",
"question": "<WRITE: the one question this page asks its reader>"
}
Reply with the JSON object only.
=== REPLY ===
{
"back": "Back to form",
"description": "Your build-enquiry has been received. We will review the details and get back to you.",
"next_description": "A project manager will contact you to discuss the scope and arrange a site survey.",
"next_heading": "Next steps: survey and quote",
"question": "What happens after I submit?"
}
@@ -0,0 +1,54 @@
You write the words for one page of a website for this business.
Business: Nordvik Bygg
About: Twelve people who survey old buildings, draw up rehabilitation plans, handle the permit application, and do the building work with their own carpenters plus subcontractors for electrical, plumbing and scaffolding. Project managers win and run the jobs, site managers run each building site day to day, and one safety officer owns everything reported from site.
Contact: Ingrid Nordvik <ingrid@nordvikbygg.example>
Language to write in: en
Everyone the site serves:
- door your-building: for an owner, a housing board or a past customer with a building; behind it: survey-enquiry, build-enquiry, warranty-claim
- door work-with-us: for a trade firm, a carpenter or an apprentice who wants work from us; behind it: subcontractor-application, job-application
- survey-enquiry: a housing board or private owner with a problem in a building - wants: someone qualified to come and look at it and say what it takes. Handled by project_managers. Stages: open -> surveyed -> quoted -> won -> lost.
- build-enquiry: an owner who already knows what they want built or changed - wants: drawings, a permit application and a price. Handled by project_managers. Stages: open -> surveyed -> quoted -> won -> lost.
- warranty-claim: a past customer who has found a fault in work we handed over - wants: us to come back, look at it, and put it right. Handled by project_managers. Stages: open -> inspected -> accepted -> fixed -> rejected.
- neighbour-complaint: someone living or working next to one of our building sites - wants: the noise, dust or blocked access dealt with, and an answer. Handled by site_managers. Stages: open -> answered.
- subcontractor-application: a trade firm doing electrical, plumbing or scaffolding work - wants: to be approved once, and then be called when a job needs them. Handled by project_managers. Stages: open -> awaiting_papers -> approved -> declined.
- job-application: a carpenter, bricklayer or apprentice looking for work - wants: to be considered, without writing a letter. Handled by project_managers. Stages: open -> interviewing -> offered -> hired -> declined.
- change-request: a client whose job is under way and who wants something changed - wants: a price for the change, and the change done if they accept it. Handled by project_managers. Stages: open -> priced -> approved -> completed -> declined.
- log-phone-enquiry: a project manager who just took a call or a text about a building - wants: the enquiry written down before it gets lost. Handled by project_managers. Stages: open -> surveyed -> quoted -> won -> lost.
- post-job-request: a project manager with work to hand to a subcontractor - wants: approved subcontractors to see the job and answer with a price. Handled by project_managers. Stages: open -> awarded -> withdrawn.
- submit-bid: an approved subcontractor who has seen a job they can take - wants: to say yes with a price and a start date. Handled by project_managers. Stages: open -> shortlisted -> accepted -> declined.
- report-site-issue: anyone on site, ours or a subcontractor's, on a phone with gloves on - wants: to report a hazard, a near miss or wrong materials before they forget. Handled by safety_officer. Stages: open -> in_hand -> closed.
- order-materials: a carpenter or bricklayer who is about to run out of something - wants: it ordered and on site before work stops. Handled by site_managers. Stages: open -> ordered -> delivered -> refused.
- safety-round-finding: the safety officer walking a site on the weekly round - wants: each thing found written down where the reported issues already are. Handled by safety_officer. Stages: open -> in_hand -> closed.
The page: questions/received/job-application.yaml
It is a page shown right after someone has sent a form. Say who reads it, when they answer, and what happens next.
Below is the page as JSON. Every value is a slot that says what to write there. Return the same JSON with every slot replaced by your words. Keep every key exactly as it is. A slot left as it is counts as no answer.
Rules for the words:
- `question` is a question the reader could ask themselves.
- A heading says what the reader gets, in the reader's own words, and must work without its description.
- Lead with what a thing enables. No negations in headings. No trade jargon the reader would not use.
- Descriptions are one or two short sentences. Labels and buttons are a few words.
- Write the way people in this trade and country actually speak.
{
"back": "<WRITE: a button, one to three words>",
"description": "<WRITE: one or two short sentences>",
"next_description": "<WRITE: one or two short sentences>",
"next_heading": "<WRITE: a heading, at most eight words, saying what the reader gets>",
"question": "<WRITE: the one question this page asks its reader>"
}
Reply with the JSON object only.
=== REPLY ===
{
"back": "Back to applications",
"description": "Your application has been received. We review carpenter and apprentice requests weekly.",
"next_description": "We will contact you if your profile matches an open position. No need to send a separate cover letter.",
"next_heading": "What happens next",
"question": "What happens after I apply?"
}
@@ -0,0 +1,54 @@
You write the words for one page of a website for this business.
Business: Nordvik Bygg
About: Twelve people who survey old buildings, draw up rehabilitation plans, handle the permit application, and do the building work with their own carpenters plus subcontractors for electrical, plumbing and scaffolding. Project managers win and run the jobs, site managers run each building site day to day, and one safety officer owns everything reported from site.
Contact: Ingrid Nordvik <ingrid@nordvikbygg.example>
Language to write in: en
Everyone the site serves:
- door your-building: for an owner, a housing board or a past customer with a building; behind it: survey-enquiry, build-enquiry, warranty-claim
- door work-with-us: for a trade firm, a carpenter or an apprentice who wants work from us; behind it: subcontractor-application, job-application
- survey-enquiry: a housing board or private owner with a problem in a building - wants: someone qualified to come and look at it and say what it takes. Handled by project_managers. Stages: open -> surveyed -> quoted -> won -> lost.
- build-enquiry: an owner who already knows what they want built or changed - wants: drawings, a permit application and a price. Handled by project_managers. Stages: open -> surveyed -> quoted -> won -> lost.
- warranty-claim: a past customer who has found a fault in work we handed over - wants: us to come back, look at it, and put it right. Handled by project_managers. Stages: open -> inspected -> accepted -> fixed -> rejected.
- neighbour-complaint: someone living or working next to one of our building sites - wants: the noise, dust or blocked access dealt with, and an answer. Handled by site_managers. Stages: open -> answered.
- subcontractor-application: a trade firm doing electrical, plumbing or scaffolding work - wants: to be approved once, and then be called when a job needs them. Handled by project_managers. Stages: open -> awaiting_papers -> approved -> declined.
- job-application: a carpenter, bricklayer or apprentice looking for work - wants: to be considered, without writing a letter. Handled by project_managers. Stages: open -> interviewing -> offered -> hired -> declined.
- change-request: a client whose job is under way and who wants something changed - wants: a price for the change, and the change done if they accept it. Handled by project_managers. Stages: open -> priced -> approved -> completed -> declined.
- log-phone-enquiry: a project manager who just took a call or a text about a building - wants: the enquiry written down before it gets lost. Handled by project_managers. Stages: open -> surveyed -> quoted -> won -> lost.
- post-job-request: a project manager with work to hand to a subcontractor - wants: approved subcontractors to see the job and answer with a price. Handled by project_managers. Stages: open -> awarded -> withdrawn.
- submit-bid: an approved subcontractor who has seen a job they can take - wants: to say yes with a price and a start date. Handled by project_managers. Stages: open -> shortlisted -> accepted -> declined.
- report-site-issue: anyone on site, ours or a subcontractor's, on a phone with gloves on - wants: to report a hazard, a near miss or wrong materials before they forget. Handled by safety_officer. Stages: open -> in_hand -> closed.
- order-materials: a carpenter or bricklayer who is about to run out of something - wants: it ordered and on site before work stops. Handled by site_managers. Stages: open -> ordered -> delivered -> refused.
- safety-round-finding: the safety officer walking a site on the weekly round - wants: each thing found written down where the reported issues already are. Handled by safety_officer. Stages: open -> in_hand -> closed.
The page: questions/received/neighbour-complaint.yaml
It is a page shown right after someone has sent a form. Say who reads it, when they answer, and what happens next.
Below is the page as JSON. Every value is a slot that says what to write there. Return the same JSON with every slot replaced by your words. Keep every key exactly as it is. A slot left as it is counts as no answer.
Rules for the words:
- `question` is a question the reader could ask themselves.
- A heading says what the reader gets, in the reader's own words, and must work without its description.
- Lead with what a thing enables. No negations in headings. No trade jargon the reader would not use.
- Descriptions are one or two short sentences. Labels and buttons are a few words.
- Write the way people in this trade and country actually speak.
{
"back": "<WRITE: a button, one to three words>",
"description": "<WRITE: one or two short sentences>",
"next_description": "<WRITE: one or two short sentences>",
"next_heading": "<WRITE: a heading, at most eight words, saying what the reader gets>",
"question": "<WRITE: the one question this page asks its reader>"
}
Reply with the JSON object only.
=== REPLY ===
{
"back": "Back to site",
"description": "Your neighbour complaint has been received. We will look into it and get back to you.",
"next_description": "A site manager will review your report and find a solution.",
"next_heading": "What happens next?",
"question": "What issue are you reporting?"
}
@@ -0,0 +1,54 @@
You write the words for one page of a website for this business.
Business: Nordvik Bygg
About: Twelve people who survey old buildings, draw up rehabilitation plans, handle the permit application, and do the building work with their own carpenters plus subcontractors for electrical, plumbing and scaffolding. Project managers win and run the jobs, site managers run each building site day to day, and one safety officer owns everything reported from site.
Contact: Ingrid Nordvik <ingrid@nordvikbygg.example>
Language to write in: en
Everyone the site serves:
- door your-building: for an owner, a housing board or a past customer with a building; behind it: survey-enquiry, build-enquiry, warranty-claim
- door work-with-us: for a trade firm, a carpenter or an apprentice who wants work from us; behind it: subcontractor-application, job-application
- survey-enquiry: a housing board or private owner with a problem in a building - wants: someone qualified to come and look at it and say what it takes. Handled by project_managers. Stages: open -> surveyed -> quoted -> won -> lost.
- build-enquiry: an owner who already knows what they want built or changed - wants: drawings, a permit application and a price. Handled by project_managers. Stages: open -> surveyed -> quoted -> won -> lost.
- warranty-claim: a past customer who has found a fault in work we handed over - wants: us to come back, look at it, and put it right. Handled by project_managers. Stages: open -> inspected -> accepted -> fixed -> rejected.
- neighbour-complaint: someone living or working next to one of our building sites - wants: the noise, dust or blocked access dealt with, and an answer. Handled by site_managers. Stages: open -> answered.
- subcontractor-application: a trade firm doing electrical, plumbing or scaffolding work - wants: to be approved once, and then be called when a job needs them. Handled by project_managers. Stages: open -> awaiting_papers -> approved -> declined.
- job-application: a carpenter, bricklayer or apprentice looking for work - wants: to be considered, without writing a letter. Handled by project_managers. Stages: open -> interviewing -> offered -> hired -> declined.
- change-request: a client whose job is under way and who wants something changed - wants: a price for the change, and the change done if they accept it. Handled by project_managers. Stages: open -> priced -> approved -> completed -> declined.
- log-phone-enquiry: a project manager who just took a call or a text about a building - wants: the enquiry written down before it gets lost. Handled by project_managers. Stages: open -> surveyed -> quoted -> won -> lost.
- post-job-request: a project manager with work to hand to a subcontractor - wants: approved subcontractors to see the job and answer with a price. Handled by project_managers. Stages: open -> awarded -> withdrawn.
- submit-bid: an approved subcontractor who has seen a job they can take - wants: to say yes with a price and a start date. Handled by project_managers. Stages: open -> shortlisted -> accepted -> declined.
- report-site-issue: anyone on site, ours or a subcontractor's, on a phone with gloves on - wants: to report a hazard, a near miss or wrong materials before they forget. Handled by safety_officer. Stages: open -> in_hand -> closed.
- order-materials: a carpenter or bricklayer who is about to run out of something - wants: it ordered and on site before work stops. Handled by site_managers. Stages: open -> ordered -> delivered -> refused.
- safety-round-finding: the safety officer walking a site on the weekly round - wants: each thing found written down where the reported issues already are. Handled by safety_officer. Stages: open -> in_hand -> closed.
The page: questions/received/subcontractor-application.yaml
It is a page shown right after someone has sent a form. Say who reads it, when they answer, and what happens next.
Below is the page as JSON. Every value is a slot that says what to write there. Return the same JSON with every slot replaced by your words. Keep every key exactly as it is. A slot left as it is counts as no answer.
Rules for the words:
- `question` is a question the reader could ask themselves.
- A heading says what the reader gets, in the reader's own words, and must work without its description.
- Lead with what a thing enables. No negations in headings. No trade jargon the reader would not use.
- Descriptions are one or two short sentences. Labels and buttons are a few words.
- Write the way people in this trade and country actually speak.
{
"back": "<WRITE: a button, one to three words>",
"description": "<WRITE: one or two short sentences>",
"next_description": "<WRITE: one or two short sentences>",
"next_heading": "<WRITE: a heading, at most eight words, saying what the reader gets>",
"question": "<WRITE: the one question this page asks its reader>"
}
Reply with the JSON object only.
=== REPLY ===
{
"back": "Back to form",
"description": "Your subcontractor application has been received. We will review it and contact you if we need more information.",
"next_description": "Project managers check approved subcontractors for new jobs. Once approved, you will receive job invitations with prices and start dates.",
"next_heading": "What happens next",
"question": "What happens after I submit?"
}
@@ -0,0 +1,54 @@
You write the words for one page of a website for this business.
Business: Nordvik Bygg
About: Twelve people who survey old buildings, draw up rehabilitation plans, handle the permit application, and do the building work with their own carpenters plus subcontractors for electrical, plumbing and scaffolding. Project managers win and run the jobs, site managers run each building site day to day, and one safety officer owns everything reported from site.
Contact: Ingrid Nordvik <ingrid@nordvikbygg.example>
Language to write in: en
Everyone the site serves:
- door your-building: for an owner, a housing board or a past customer with a building; behind it: survey-enquiry, build-enquiry, warranty-claim
- door work-with-us: for a trade firm, a carpenter or an apprentice who wants work from us; behind it: subcontractor-application, job-application
- survey-enquiry: a housing board or private owner with a problem in a building - wants: someone qualified to come and look at it and say what it takes. Handled by project_managers. Stages: open -> surveyed -> quoted -> won -> lost.
- build-enquiry: an owner who already knows what they want built or changed - wants: drawings, a permit application and a price. Handled by project_managers. Stages: open -> surveyed -> quoted -> won -> lost.
- warranty-claim: a past customer who has found a fault in work we handed over - wants: us to come back, look at it, and put it right. Handled by project_managers. Stages: open -> inspected -> accepted -> fixed -> rejected.
- neighbour-complaint: someone living or working next to one of our building sites - wants: the noise, dust or blocked access dealt with, and an answer. Handled by site_managers. Stages: open -> answered.
- subcontractor-application: a trade firm doing electrical, plumbing or scaffolding work - wants: to be approved once, and then be called when a job needs them. Handled by project_managers. Stages: open -> awaiting_papers -> approved -> declined.
- job-application: a carpenter, bricklayer or apprentice looking for work - wants: to be considered, without writing a letter. Handled by project_managers. Stages: open -> interviewing -> offered -> hired -> declined.
- change-request: a client whose job is under way and who wants something changed - wants: a price for the change, and the change done if they accept it. Handled by project_managers. Stages: open -> priced -> approved -> completed -> declined.
- log-phone-enquiry: a project manager who just took a call or a text about a building - wants: the enquiry written down before it gets lost. Handled by project_managers. Stages: open -> surveyed -> quoted -> won -> lost.
- post-job-request: a project manager with work to hand to a subcontractor - wants: approved subcontractors to see the job and answer with a price. Handled by project_managers. Stages: open -> awarded -> withdrawn.
- submit-bid: an approved subcontractor who has seen a job they can take - wants: to say yes with a price and a start date. Handled by project_managers. Stages: open -> shortlisted -> accepted -> declined.
- report-site-issue: anyone on site, ours or a subcontractor's, on a phone with gloves on - wants: to report a hazard, a near miss or wrong materials before they forget. Handled by safety_officer. Stages: open -> in_hand -> closed.
- order-materials: a carpenter or bricklayer who is about to run out of something - wants: it ordered and on site before work stops. Handled by site_managers. Stages: open -> ordered -> delivered -> refused.
- safety-round-finding: the safety officer walking a site on the weekly round - wants: each thing found written down where the reported issues already are. Handled by safety_officer. Stages: open -> in_hand -> closed.
The page: questions/received/survey-enquiry.yaml
It is a page shown right after someone has sent a form. Say who reads it, when they answer, and what happens next.
Below is the page as JSON. Every value is a slot that says what to write there. Return the same JSON with every slot replaced by your words. Keep every key exactly as it is. A slot left as it is counts as no answer.
Rules for the words:
- `question` is a question the reader could ask themselves.
- A heading says what the reader gets, in the reader's own words, and must work without its description.
- Lead with what a thing enables. No negations in headings. No trade jargon the reader would not use.
- Descriptions are one or two short sentences. Labels and buttons are a few words.
- Write the way people in this trade and country actually speak.
{
"back": "<WRITE: a button, one to three words>",
"description": "<WRITE: one or two short sentences>",
"next_description": "<WRITE: one or two short sentences>",
"next_heading": "<WRITE: a heading, at most eight words, saying what the reader gets>",
"question": "<WRITE: the one question this page asks its reader>"
}
Reply with the JSON object only.
=== REPLY ===
{
"back": "Back to form",
"description": "Your survey request has been received. We will review the details and assign a project manager to assess the building.",
"next_description": "A project manager will contact you within 2 business days to schedule a site visit and provide a quotation.",
"next_heading": "Next steps: Survey and quote",
"question": "What happens after I submit?"
}
@@ -0,0 +1,54 @@
You write the words for one page of a website for this business.
Business: Nordvik Bygg
About: Twelve people who survey old buildings, draw up rehabilitation plans, handle the permit application, and do the building work with their own carpenters plus subcontractors for electrical, plumbing and scaffolding. Project managers win and run the jobs, site managers run each building site day to day, and one safety officer owns everything reported from site.
Contact: Ingrid Nordvik <ingrid@nordvikbygg.example>
Language to write in: en
Everyone the site serves:
- door your-building: for an owner, a housing board or a past customer with a building; behind it: survey-enquiry, build-enquiry, warranty-claim
- door work-with-us: for a trade firm, a carpenter or an apprentice who wants work from us; behind it: subcontractor-application, job-application
- survey-enquiry: a housing board or private owner with a problem in a building - wants: someone qualified to come and look at it and say what it takes. Handled by project_managers. Stages: open -> surveyed -> quoted -> won -> lost.
- build-enquiry: an owner who already knows what they want built or changed - wants: drawings, a permit application and a price. Handled by project_managers. Stages: open -> surveyed -> quoted -> won -> lost.
- warranty-claim: a past customer who has found a fault in work we handed over - wants: us to come back, look at it, and put it right. Handled by project_managers. Stages: open -> inspected -> accepted -> fixed -> rejected.
- neighbour-complaint: someone living or working next to one of our building sites - wants: the noise, dust or blocked access dealt with, and an answer. Handled by site_managers. Stages: open -> answered.
- subcontractor-application: a trade firm doing electrical, plumbing or scaffolding work - wants: to be approved once, and then be called when a job needs them. Handled by project_managers. Stages: open -> awaiting_papers -> approved -> declined.
- job-application: a carpenter, bricklayer or apprentice looking for work - wants: to be considered, without writing a letter. Handled by project_managers. Stages: open -> interviewing -> offered -> hired -> declined.
- change-request: a client whose job is under way and who wants something changed - wants: a price for the change, and the change done if they accept it. Handled by project_managers. Stages: open -> priced -> approved -> completed -> declined.
- log-phone-enquiry: a project manager who just took a call or a text about a building - wants: the enquiry written down before it gets lost. Handled by project_managers. Stages: open -> surveyed -> quoted -> won -> lost.
- post-job-request: a project manager with work to hand to a subcontractor - wants: approved subcontractors to see the job and answer with a price. Handled by project_managers. Stages: open -> awarded -> withdrawn.
- submit-bid: an approved subcontractor who has seen a job they can take - wants: to say yes with a price and a start date. Handled by project_managers. Stages: open -> shortlisted -> accepted -> declined.
- report-site-issue: anyone on site, ours or a subcontractor's, on a phone with gloves on - wants: to report a hazard, a near miss or wrong materials before they forget. Handled by safety_officer. Stages: open -> in_hand -> closed.
- order-materials: a carpenter or bricklayer who is about to run out of something - wants: it ordered and on site before work stops. Handled by site_managers. Stages: open -> ordered -> delivered -> refused.
- safety-round-finding: the safety officer walking a site on the weekly round - wants: each thing found written down where the reported issues already are. Handled by safety_officer. Stages: open -> in_hand -> closed.
The page: questions/received/warranty-claim.yaml
It is a page shown right after someone has sent a form. Say who reads it, when they answer, and what happens next.
Below is the page as JSON. Every value is a slot that says what to write there. Return the same JSON with every slot replaced by your words. Keep every key exactly as it is. A slot left as it is counts as no answer.
Rules for the words:
- `question` is a question the reader could ask themselves.
- A heading says what the reader gets, in the reader's own words, and must work without its description.
- Lead with what a thing enables. No negations in headings. No trade jargon the reader would not use.
- Descriptions are one or two short sentences. Labels and buttons are a few words.
- Write the way people in this trade and country actually speak.
{
"back": "<WRITE: a button, one to three words>",
"description": "<WRITE: one or two short sentences>",
"next_description": "<WRITE: one or two short sentences>",
"next_heading": "<WRITE: a heading, at most eight words, saying what the reader gets>",
"question": "<WRITE: the one question this page asks its reader>"
}
Reply with the JSON object only.
=== REPLY ===
{
"back": "Back to enquiries",
"description": "Your warranty claim has been received. We will review the details and get back to you.",
"next_description": "A project manager will inspect the issue and decide on the next steps.",
"next_heading": "What happens next",
"question": "What seems to be the problem?"
}
@@ -0,0 +1,84 @@
You write the words for one page of a website for this business.
Business: Nordvik Bygg
About: Twelve people who survey old buildings, draw up rehabilitation plans, handle the permit application, and do the building work with their own carpenters plus subcontractors for electrical, plumbing and scaffolding. Project managers win and run the jobs, site managers run each building site day to day, and one safety officer owns everything reported from site.
Contact: Ingrid Nordvik <ingrid@nordvikbygg.example>
Language to write in: en
Everyone the site serves:
- door your-building: for an owner, a housing board or a past customer with a building; behind it: survey-enquiry, build-enquiry, warranty-claim
- door work-with-us: for a trade firm, a carpenter or an apprentice who wants work from us; behind it: subcontractor-application, job-application
- survey-enquiry: a housing board or private owner with a problem in a building - wants: someone qualified to come and look at it and say what it takes. Handled by project_managers. Stages: open -> surveyed -> quoted -> won -> lost.
- build-enquiry: an owner who already knows what they want built or changed - wants: drawings, a permit application and a price. Handled by project_managers. Stages: open -> surveyed -> quoted -> won -> lost.
- warranty-claim: a past customer who has found a fault in work we handed over - wants: us to come back, look at it, and put it right. Handled by project_managers. Stages: open -> inspected -> accepted -> fixed -> rejected.
- neighbour-complaint: someone living or working next to one of our building sites - wants: the noise, dust or blocked access dealt with, and an answer. Handled by site_managers. Stages: open -> answered.
- subcontractor-application: a trade firm doing electrical, plumbing or scaffolding work - wants: to be approved once, and then be called when a job needs them. Handled by project_managers. Stages: open -> awaiting_papers -> approved -> declined.
- job-application: a carpenter, bricklayer or apprentice looking for work - wants: to be considered, without writing a letter. Handled by project_managers. Stages: open -> interviewing -> offered -> hired -> declined.
- change-request: a client whose job is under way and who wants something changed - wants: a price for the change, and the change done if they accept it. Handled by project_managers. Stages: open -> priced -> approved -> completed -> declined.
- log-phone-enquiry: a project manager who just took a call or a text about a building - wants: the enquiry written down before it gets lost. Handled by project_managers. Stages: open -> surveyed -> quoted -> won -> lost.
- post-job-request: a project manager with work to hand to a subcontractor - wants: approved subcontractors to see the job and answer with a price. Handled by project_managers. Stages: open -> awarded -> withdrawn.
- submit-bid: an approved subcontractor who has seen a job they can take - wants: to say yes with a price and a start date. Handled by project_managers. Stages: open -> shortlisted -> accepted -> declined.
- report-site-issue: anyone on site, ours or a subcontractor's, on a phone with gloves on - wants: to report a hazard, a near miss or wrong materials before they forget. Handled by safety_officer. Stages: open -> in_hand -> closed.
- order-materials: a carpenter or bricklayer who is about to run out of something - wants: it ordered and on site before work stops. Handled by site_managers. Stages: open -> ordered -> delivered -> refused.
- safety-round-finding: the safety officer walking a site on the weekly round - wants: each thing found written down where the reported issues already are. Handled by safety_officer. Stages: open -> in_hand -> closed.
The page: questions/safety_officer/index.yaml
It is a desk: the page one role inside the business works from. Under `buckets`, each entry is a list of cases; `moves` are the buttons that move a case from one stage to the next (key `from->to`), so label each with what the person has just done. Under `links` are pages this role can open.
Below is the page as JSON. Every value is a slot that says what to write there. Return the same JSON with every slot replaced by your words. Keep every key exactly as it is. A slot left as it is counts as no answer.
Rules for the words:
- `question` is a question the reader could ask themselves.
- A heading says what the reader gets, in the reader's own words, and must work without its description.
- Lead with what a thing enables. No negations in headings. No trade jargon the reader would not use.
- Descriptions are one or two short sentences. Labels and buttons are a few words.
- Write the way people in this trade and country actually speak.
{
"buckets": {
"site_issues": {
"description": "<WRITE: one or two short sentences>",
"heading": "<WRITE: a heading, at most eight words, saying what the reader gets>",
"moves": {
"in_hand->closed": "<WRITE: a button, two to four words, for a case going in_hand->closed>",
"open->in_hand": "<WRITE: a button, two to four words, for a case going open->in_hand>"
}
}
},
"confirm": "<WRITE: a button, one to three words>",
"description": "<WRITE: one or two short sentences>",
"links": {
"safety-round-finding": {
"button": "<WRITE: a button, one to three words>",
"description": "<WRITE: one or two short sentences>",
"heading": "<WRITE: a heading, at most eight words, saying what the reader gets>"
}
},
"question": "<WRITE: the one question this page asks its reader>"
}
Reply with the JSON object only.
=== REPLY ===
{
"buckets": {
"site_issues": {
"description": "Report and resolve safety issues, near misses, or material problems found during daily work.",
"heading": "Report site safety issues",
"moves": {
"in_hand->closed": "Mark as closed",
"open->in_hand": "Start reporting"
}
}
},
"confirm": "Continue",
"description": "A desk for the safety officer to track and resolve reported issues from building sites.",
"links": {
"safety-round-finding": {
"button": "View weekly round",
"description": "See all issues found during the site safety walkround.",
"heading": "Safety walkround findings"
}
},
"question": "What safety issues need reporting or closing today?"
}
@@ -0,0 +1,54 @@
You write the words for one page of a website for this business.
Business: Nordvik Bygg
About: Twelve people who survey old buildings, draw up rehabilitation plans, handle the permit application, and do the building work with their own carpenters plus subcontractors for electrical, plumbing and scaffolding. Project managers win and run the jobs, site managers run each building site day to day, and one safety officer owns everything reported from site.
Contact: Ingrid Nordvik <ingrid@nordvikbygg.example>
Language to write in: en
Everyone the site serves:
- door your-building: for an owner, a housing board or a past customer with a building; behind it: survey-enquiry, build-enquiry, warranty-claim
- door work-with-us: for a trade firm, a carpenter or an apprentice who wants work from us; behind it: subcontractor-application, job-application
- survey-enquiry: a housing board or private owner with a problem in a building - wants: someone qualified to come and look at it and say what it takes. Handled by project_managers. Stages: open -> surveyed -> quoted -> won -> lost.
- build-enquiry: an owner who already knows what they want built or changed - wants: drawings, a permit application and a price. Handled by project_managers. Stages: open -> surveyed -> quoted -> won -> lost.
- warranty-claim: a past customer who has found a fault in work we handed over - wants: us to come back, look at it, and put it right. Handled by project_managers. Stages: open -> inspected -> accepted -> fixed -> rejected.
- neighbour-complaint: someone living or working next to one of our building sites - wants: the noise, dust or blocked access dealt with, and an answer. Handled by site_managers. Stages: open -> answered.
- subcontractor-application: a trade firm doing electrical, plumbing or scaffolding work - wants: to be approved once, and then be called when a job needs them. Handled by project_managers. Stages: open -> awaiting_papers -> approved -> declined.
- job-application: a carpenter, bricklayer or apprentice looking for work - wants: to be considered, without writing a letter. Handled by project_managers. Stages: open -> interviewing -> offered -> hired -> declined.
- change-request: a client whose job is under way and who wants something changed - wants: a price for the change, and the change done if they accept it. Handled by project_managers. Stages: open -> priced -> approved -> completed -> declined.
- log-phone-enquiry: a project manager who just took a call or a text about a building - wants: the enquiry written down before it gets lost. Handled by project_managers. Stages: open -> surveyed -> quoted -> won -> lost.
- post-job-request: a project manager with work to hand to a subcontractor - wants: approved subcontractors to see the job and answer with a price. Handled by project_managers. Stages: open -> awarded -> withdrawn.
- submit-bid: an approved subcontractor who has seen a job they can take - wants: to say yes with a price and a start date. Handled by project_managers. Stages: open -> shortlisted -> accepted -> declined.
- report-site-issue: anyone on site, ours or a subcontractor's, on a phone with gloves on - wants: to report a hazard, a near miss or wrong materials before they forget. Handled by safety_officer. Stages: open -> in_hand -> closed.
- order-materials: a carpenter or bricklayer who is about to run out of something - wants: it ordered and on site before work stops. Handled by site_managers. Stages: open -> ordered -> delivered -> refused.
- safety-round-finding: the safety officer walking a site on the weekly round - wants: each thing found written down where the reported issues already are. Handled by safety_officer. Stages: open -> in_hand -> closed.
The page: questions/safety_officer/safety-round-finding-sent.yaml
It is a page shown right after someone has sent a form. Say who reads it, when they answer, and what happens next.
Below is the page as JSON. Every value is a slot that says what to write there. Return the same JSON with every slot replaced by your words. Keep every key exactly as it is. A slot left as it is counts as no answer.
Rules for the words:
- `question` is a question the reader could ask themselves.
- A heading says what the reader gets, in the reader's own words, and must work without its description.
- Lead with what a thing enables. No negations in headings. No trade jargon the reader would not use.
- Descriptions are one or two short sentences. Labels and buttons are a few words.
- Write the way people in this trade and country actually speak.
{
"back": "<WRITE: a button, one to three words>",
"description": "<WRITE: one or two short sentences>",
"next_description": "<WRITE: one or two short sentences>",
"next_heading": "<WRITE: a heading, at most eight words, saying what the reader gets>",
"question": "<WRITE: the one question this page asks its reader>"
}
Reply with the JSON object only.
=== REPLY ===
{
"back": "Back to form",
"description": "The safety officer has received your report. They will review the issue during their next site walk.",
"next_description": "The issue will be marked as closed once the officer has verified the fix or the hazard has been removed.",
"next_heading": "Issue recorded and reviewed",
"question": "What happens after I submit a safety report?"
}
@@ -0,0 +1,66 @@
You write the words for one page of a website for this business.
Business: Nordvik Bygg
About: Twelve people who survey old buildings, draw up rehabilitation plans, handle the permit application, and do the building work with their own carpenters plus subcontractors for electrical, plumbing and scaffolding. Project managers win and run the jobs, site managers run each building site day to day, and one safety officer owns everything reported from site.
Contact: Ingrid Nordvik <ingrid@nordvikbygg.example>
Language to write in: en
Everyone the site serves:
- door your-building: for an owner, a housing board or a past customer with a building; behind it: survey-enquiry, build-enquiry, warranty-claim
- door work-with-us: for a trade firm, a carpenter or an apprentice who wants work from us; behind it: subcontractor-application, job-application
- survey-enquiry: a housing board or private owner with a problem in a building - wants: someone qualified to come and look at it and say what it takes. Handled by project_managers. Stages: open -> surveyed -> quoted -> won -> lost.
- build-enquiry: an owner who already knows what they want built or changed - wants: drawings, a permit application and a price. Handled by project_managers. Stages: open -> surveyed -> quoted -> won -> lost.
- warranty-claim: a past customer who has found a fault in work we handed over - wants: us to come back, look at it, and put it right. Handled by project_managers. Stages: open -> inspected -> accepted -> fixed -> rejected.
- neighbour-complaint: someone living or working next to one of our building sites - wants: the noise, dust or blocked access dealt with, and an answer. Handled by site_managers. Stages: open -> answered.
- subcontractor-application: a trade firm doing electrical, plumbing or scaffolding work - wants: to be approved once, and then be called when a job needs them. Handled by project_managers. Stages: open -> awaiting_papers -> approved -> declined.
- job-application: a carpenter, bricklayer or apprentice looking for work - wants: to be considered, without writing a letter. Handled by project_managers. Stages: open -> interviewing -> offered -> hired -> declined.
- change-request: a client whose job is under way and who wants something changed - wants: a price for the change, and the change done if they accept it. Handled by project_managers. Stages: open -> priced -> approved -> completed -> declined.
- log-phone-enquiry: a project manager who just took a call or a text about a building - wants: the enquiry written down before it gets lost. Handled by project_managers. Stages: open -> surveyed -> quoted -> won -> lost.
- post-job-request: a project manager with work to hand to a subcontractor - wants: approved subcontractors to see the job and answer with a price. Handled by project_managers. Stages: open -> awarded -> withdrawn.
- submit-bid: an approved subcontractor who has seen a job they can take - wants: to say yes with a price and a start date. Handled by project_managers. Stages: open -> shortlisted -> accepted -> declined.
- report-site-issue: anyone on site, ours or a subcontractor's, on a phone with gloves on - wants: to report a hazard, a near miss or wrong materials before they forget. Handled by safety_officer. Stages: open -> in_hand -> closed.
- order-materials: a carpenter or bricklayer who is about to run out of something - wants: it ordered and on site before work stops. Handled by site_managers. Stages: open -> ordered -> delivered -> refused.
- safety-round-finding: the safety officer walking a site on the weekly round - wants: each thing found written down where the reported issues already are. Handled by safety_officer. Stages: open -> in_hand -> closed.
The page: questions/safety_officer/safety-round-finding.yaml
It is a page only one role inside the business can open, holding one form.
Below is the page as JSON. Every value is a slot that says what to write there. Return the same JSON with every slot replaced by your words. Keep every key exactly as it is. A slot left as it is counts as no answer.
Rules for the words:
- `question` is a question the reader could ask themselves.
- A heading says what the reader gets, in the reader's own words, and must work without its description.
- Lead with what a thing enables. No negations in headings. No trade jargon the reader would not use.
- Descriptions are one or two short sentences. Labels and buttons are a few words.
- Write the way people in this trade and country actually speak.
{
"button": "<WRITE: a button, one to three words>",
"description": "<WRITE: one or two short sentences>",
"form_title": "<WRITE: a title for the form, two to four words>",
"heading": "<WRITE: a heading, at most eight words, saying what the reader gets>",
"labels": {
"kind": "<WRITE: a form label for the field `kind`>",
"what_happened": "<WRITE: a form label for the field `what_happened`>",
"where": "<WRITE: a form label for the field `where`>"
},
"page_description": "<WRITE: one or two short sentences>",
"question": "<WRITE: the one question this page asks its reader>"
}
Reply with the JSON object only.
=== REPLY ===
{
"button": "Log finding",
"description": "Report a hazard, near miss or wrong materials from the site. This helps keep everyone safe and the job on track.",
"form_title": "Safety round finding",
"heading": "Report what you find on site",
"labels": {
"kind": "Issue kind",
"what_happened": "What happened",
"where": "Where on site"
},
"page_description": "Use this form to record safety issues found during the weekly site round.",
"question": "What safety issue did you find?"
}
@@ -0,0 +1,181 @@
You write the words for one page of a website for this business.
Business: Nordvik Bygg
About: Twelve people who survey old buildings, draw up rehabilitation plans, handle the permit application, and do the building work with their own carpenters plus subcontractors for electrical, plumbing and scaffolding. Project managers win and run the jobs, site managers run each building site day to day, and one safety officer owns everything reported from site.
Contact: Ingrid Nordvik <ingrid@nordvikbygg.example>
Language to write in: en
Everyone the site serves:
- door your-building: for an owner, a housing board or a past customer with a building; behind it: survey-enquiry, build-enquiry, warranty-claim
- door work-with-us: for a trade firm, a carpenter or an apprentice who wants work from us; behind it: subcontractor-application, job-application
- survey-enquiry: a housing board or private owner with a problem in a building - wants: someone qualified to come and look at it and say what it takes. Handled by project_managers. Stages: open -> surveyed -> quoted -> won -> lost.
- build-enquiry: an owner who already knows what they want built or changed - wants: drawings, a permit application and a price. Handled by project_managers. Stages: open -> surveyed -> quoted -> won -> lost.
- warranty-claim: a past customer who has found a fault in work we handed over - wants: us to come back, look at it, and put it right. Handled by project_managers. Stages: open -> inspected -> accepted -> fixed -> rejected.
- neighbour-complaint: someone living or working next to one of our building sites - wants: the noise, dust or blocked access dealt with, and an answer. Handled by site_managers. Stages: open -> answered.
- subcontractor-application: a trade firm doing electrical, plumbing or scaffolding work - wants: to be approved once, and then be called when a job needs them. Handled by project_managers. Stages: open -> awaiting_papers -> approved -> declined.
- job-application: a carpenter, bricklayer or apprentice looking for work - wants: to be considered, without writing a letter. Handled by project_managers. Stages: open -> interviewing -> offered -> hired -> declined.
- change-request: a client whose job is under way and who wants something changed - wants: a price for the change, and the change done if they accept it. Handled by project_managers. Stages: open -> priced -> approved -> completed -> declined.
- log-phone-enquiry: a project manager who just took a call or a text about a building - wants: the enquiry written down before it gets lost. Handled by project_managers. Stages: open -> surveyed -> quoted -> won -> lost.
- post-job-request: a project manager with work to hand to a subcontractor - wants: approved subcontractors to see the job and answer with a price. Handled by project_managers. Stages: open -> awarded -> withdrawn.
- submit-bid: an approved subcontractor who has seen a job they can take - wants: to say yes with a price and a start date. Handled by project_managers. Stages: open -> shortlisted -> accepted -> declined.
- report-site-issue: anyone on site, ours or a subcontractor's, on a phone with gloves on - wants: to report a hazard, a near miss or wrong materials before they forget. Handled by safety_officer. Stages: open -> in_hand -> closed.
- order-materials: a carpenter or bricklayer who is about to run out of something - wants: it ordered and on site before work stops. Handled by site_managers. Stages: open -> ordered -> delivered -> refused.
- safety-round-finding: the safety officer walking a site on the weekly round - wants: each thing found written down where the reported issues already are. Handled by safety_officer. Stages: open -> in_hand -> closed.
The page: questions/site_managers/index.yaml
It is a desk: the page one role inside the business works from. Under `buckets`, each entry is a list of cases; `moves` are the buttons that move a case from one stage to the next (key `from->to`), so label each with what the person has just done. Under `links` are pages this role can open.
Below is the page as JSON. Every value is a slot that says what to write there. Return the same JSON with every slot replaced by your words. Keep every key exactly as it is. A slot left as it is counts as no answer.
Rules for the words:
- `question` is a question the reader could ask themselves.
- A heading says what the reader gets, in the reader's own words, and must work without its description.
- Lead with what a thing enables. No negations in headings. No trade jargon the reader would not use.
- Descriptions are one or two short sentences. Labels and buttons are a few words.
- Write the way people in this trade and country actually speak.
{
"buckets": {
"bids": {
"description": "<WRITE: one or two short sentences>",
"heading": "<WRITE: a heading, at most eight words, saying what the reader gets>",
"moves": {}
},
"change_orders": {
"description": "<WRITE: one or two short sentences>",
"heading": "<WRITE: a heading, at most eight words, saying what the reader gets>",
"moves": {
"approved->completed": "<WRITE: a button, two to four words, for a case going approved->completed>"
}
},
"claims": {
"description": "<WRITE: one or two short sentences>",
"heading": "<WRITE: a heading, at most eight words, saying what the reader gets>",
"moves": {
"accepted->fixed": "<WRITE: a button, two to four words, for a case going accepted->fixed>",
"open->inspected": "<WRITE: a button, two to four words, for a case going open->inspected>"
}
},
"complaints": {
"description": "<WRITE: one or two short sentences>",
"heading": "<WRITE: a heading, at most eight words, saying what the reader gets>",
"moves": {
"open->answered": "<WRITE: a button, two to four words, for a case going open->answered>"
}
},
"enquiries": {
"description": "<WRITE: one or two short sentences>",
"heading": "<WRITE: a heading, at most eight words, saying what the reader gets>",
"moves": {
"open->surveyed": "<WRITE: a button, two to four words, for a case going open->surveyed>"
}
},
"job_requests": {
"description": "<WRITE: one or two short sentences>",
"heading": "<WRITE: a heading, at most eight words, saying what the reader gets>",
"moves": {}
},
"material_orders": {
"description": "<WRITE: one or two short sentences>",
"heading": "<WRITE: a heading, at most eight words, saying what the reader gets>",
"moves": {
"open->ordered": "<WRITE: a button, two to four words, for a case going open->ordered>",
"open->refused": "<WRITE: a button, two to four words, for a case going open->refused>",
"ordered->delivered": "<WRITE: a button, two to four words, for a case going ordered->delivered>",
"ordered->refused": "<WRITE: a button, two to four words, for a case going ordered->refused>"
}
},
"site_issues": {
"description": "<WRITE: one or two short sentences>",
"heading": "<WRITE: a heading, at most eight words, saying what the reader gets>",
"moves": {
"open->in_hand": "<WRITE: a button, two to four words, for a case going open->in_hand>"
}
},
"subcontractors": {
"description": "<WRITE: one or two short sentences>",
"heading": "<WRITE: a heading, at most eight words, saying what the reader gets>",
"moves": {}
}
},
"confirm": "<WRITE: a button, one to three words>",
"description": "<WRITE: one or two short sentences>",
"links": {},
"question": "<WRITE: the one question this page asks its reader>"
}
Reply with the JSON object only.
=== REPLY ===
{
"buckets": {
"bids": {
"description": "Approved subcontractors review jobs and submit prices. Submit-bid stage moves to shortlisted or declined.",
"heading": "Subcontractor bids",
"moves": {}
},
"change_orders": {
"description": "Clients request changes to ongoing jobs. Prices are set and changes are completed or declined.",
"heading": "Change requests",
"moves": {
"approved->completed": "Mark done"
}
},
"claims": {
"description": "Past customers report faults. Issues are inspected and fixed or rejected.",
"heading": "Warranty claims",
"moves": {
"accepted->fixed": "Mark fixed",
"open->inspected": "Book inspection"
}
},
"complaints": {
"description": "Neighbour issues on site are logged and answered.",
"heading": "Neighbour complaints",
"moves": {
"open->answered": "Mark answered"
}
},
"enquiries": {
"description": "New building or survey requests are logged and moved through stages to a decision.",
"heading": "New enquiries",
"moves": {
"open->surveyed": "Mark surveyed"
}
},
"job_requests": {
"description": "Carpenters and apprentices apply for work. Stages track from interview to hire.",
"heading": "Job applications",
"moves": {}
},
"material_orders": {
"description": "Carpenters order materials to keep work running. Orders are tracked from request to delivery.",
"heading": "Material orders",
"moves": {
"open->ordered": "Order it",
"open->refused": "Cancel order",
"ordered->delivered": "Mark delivered",
"ordered->refused": "Cancel delivery"
}
},
"site_issues": {
"description": "Hazards and near misses are reported and closed off the weekly safety round.",
"heading": "Site safety issues",
"moves": {
"open->in_hand": "Log it"
}
},
"subcontractors": {
"description": "Approved trade firms are listed and jobs are awarded to them.",
"heading": "Approved subcontractors",
"moves": {}
}
},
"confirm": "Save changes",
"description": "Manage the cases assigned to the site manager role.",
"links": {
"project_managers": "Project managers",
"safety_officer": "Safety officer"
},
"question": "What case needs updating?"
}
@@ -0,0 +1,86 @@
You write the words for one page of a website for this business.
Business: Nordvik Bygg
About: Twelve people who survey old buildings, draw up rehabilitation plans, handle the permit application, and do the building work with their own carpenters plus subcontractors for electrical, plumbing and scaffolding. Project managers win and run the jobs, site managers run each building site day to day, and one safety officer owns everything reported from site.
Contact: Ingrid Nordvik <ingrid@nordvikbygg.example>
Language to write in: en
Everyone the site serves:
- door your-building: for an owner, a housing board or a past customer with a building; behind it: survey-enquiry, build-enquiry, warranty-claim
- door work-with-us: for a trade firm, a carpenter or an apprentice who wants work from us; behind it: subcontractor-application, job-application
- survey-enquiry: a housing board or private owner with a problem in a building - wants: someone qualified to come and look at it and say what it takes. Handled by project_managers. Stages: open -> surveyed -> quoted -> won -> lost.
- build-enquiry: an owner who already knows what they want built or changed - wants: drawings, a permit application and a price. Handled by project_managers. Stages: open -> surveyed -> quoted -> won -> lost.
- warranty-claim: a past customer who has found a fault in work we handed over - wants: us to come back, look at it, and put it right. Handled by project_managers. Stages: open -> inspected -> accepted -> fixed -> rejected.
- neighbour-complaint: someone living or working next to one of our building sites - wants: the noise, dust or blocked access dealt with, and an answer. Handled by site_managers. Stages: open -> answered.
- subcontractor-application: a trade firm doing electrical, plumbing or scaffolding work - wants: to be approved once, and then be called when a job needs them. Handled by project_managers. Stages: open -> awaiting_papers -> approved -> declined.
- job-application: a carpenter, bricklayer or apprentice looking for work - wants: to be considered, without writing a letter. Handled by project_managers. Stages: open -> interviewing -> offered -> hired -> declined.
- change-request: a client whose job is under way and who wants something changed - wants: a price for the change, and the change done if they accept it. Handled by project_managers. Stages: open -> priced -> approved -> completed -> declined.
- log-phone-enquiry: a project manager who just took a call or a text about a building - wants: the enquiry written down before it gets lost. Handled by project_managers. Stages: open -> surveyed -> quoted -> won -> lost.
- post-job-request: a project manager with work to hand to a subcontractor - wants: approved subcontractors to see the job and answer with a price. Handled by project_managers. Stages: open -> awarded -> withdrawn.
- submit-bid: an approved subcontractor who has seen a job they can take - wants: to say yes with a price and a start date. Handled by project_managers. Stages: open -> shortlisted -> accepted -> declined.
- report-site-issue: anyone on site, ours or a subcontractor's, on a phone with gloves on - wants: to report a hazard, a near miss or wrong materials before they forget. Handled by safety_officer. Stages: open -> in_hand -> closed.
- order-materials: a carpenter or bricklayer who is about to run out of something - wants: it ordered and on site before work stops. Handled by site_managers. Stages: open -> ordered -> delivered -> refused.
- safety-round-finding: the safety officer walking a site on the weekly round - wants: each thing found written down where the reported issues already are. Handled by safety_officer. Stages: open -> in_hand -> closed.
The page: questions/subcontractors/index.yaml
It is a desk: the page one role inside the business works from. Under `buckets`, each entry is a list of cases; `moves` are the buttons that move a case from one stage to the next (key `from->to`), so label each with what the person has just done. Under `links` are pages this role can open.
Below is the page as JSON. Every value is a slot that says what to write there. Return the same JSON with every slot replaced by your words. Keep every key exactly as it is. A slot left as it is counts as no answer.
Rules for the words:
- `question` is a question the reader could ask themselves.
- A heading says what the reader gets, in the reader's own words, and must work without its description.
- Lead with what a thing enables. No negations in headings. No trade jargon the reader would not use.
- Descriptions are one or two short sentences. Labels and buttons are a few words.
- Write the way people in this trade and country actually speak.
{
"buckets": {
"job_requests": {
"description": "<WRITE: one or two short sentences>",
"heading": "<WRITE: a heading, at most eight words, saying what the reader gets>",
"moves": {}
}
},
"confirm": "<WRITE: a button, one to three words>",
"description": "<WRITE: one or two short sentences>",
"links": {
"submit-bid": {
"button": "<WRITE: a button, one to three words>",
"description": "<WRITE: one or two short sentences>",
"heading": "<WRITE: a heading, at most eight words, saying what the reader gets>"
}
},
"question": "<WRITE: the one question this page asks its reader>"
}
Reply with the JSON object only.
=== REPLY ===
{
"buckets": {
"job_requests": {
"description": "Cases from trade firms and carpenters looking for work or to become approved subcontractors.",
"heading": "Work with us",
"moves": {
"open->interviewing": "Invite to interview",
"interviewing->offered": "Offer job",
"offered->hired": "Hire",
"offered->declined": "Decline",
"open->awaiting_papers": "Await papers",
"awaiting_papers->approved": "Approve",
"awaiting_papers->declined": "Decline"
}
}
},
"confirm": "Save",
"description": "Manage enquiries from trade firms and job applicants. Move cases through stages to hire carpenters or approve subcontractors.",
"links": {
"submit-bid": {
"button": "Submit bid",
"description": "Approve subcontractors can see the job and reply with a price and start date.",
"heading": "Submit a bid"
}
},
"question": "What enquiry do you want to handle?"
}
@@ -0,0 +1,54 @@
You write the words for one page of a website for this business.
Business: Nordvik Bygg
About: Twelve people who survey old buildings, draw up rehabilitation plans, handle the permit application, and do the building work with their own carpenters plus subcontractors for electrical, plumbing and scaffolding. Project managers win and run the jobs, site managers run each building site day to day, and one safety officer owns everything reported from site.
Contact: Ingrid Nordvik <ingrid@nordvikbygg.example>
Language to write in: en
Everyone the site serves:
- door your-building: for an owner, a housing board or a past customer with a building; behind it: survey-enquiry, build-enquiry, warranty-claim
- door work-with-us: for a trade firm, a carpenter or an apprentice who wants work from us; behind it: subcontractor-application, job-application
- survey-enquiry: a housing board or private owner with a problem in a building - wants: someone qualified to come and look at it and say what it takes. Handled by project_managers. Stages: open -> surveyed -> quoted -> won -> lost.
- build-enquiry: an owner who already knows what they want built or changed - wants: drawings, a permit application and a price. Handled by project_managers. Stages: open -> surveyed -> quoted -> won -> lost.
- warranty-claim: a past customer who has found a fault in work we handed over - wants: us to come back, look at it, and put it right. Handled by project_managers. Stages: open -> inspected -> accepted -> fixed -> rejected.
- neighbour-complaint: someone living or working next to one of our building sites - wants: the noise, dust or blocked access dealt with, and an answer. Handled by site_managers. Stages: open -> answered.
- subcontractor-application: a trade firm doing electrical, plumbing or scaffolding work - wants: to be approved once, and then be called when a job needs them. Handled by project_managers. Stages: open -> awaiting_papers -> approved -> declined.
- job-application: a carpenter, bricklayer or apprentice looking for work - wants: to be considered, without writing a letter. Handled by project_managers. Stages: open -> interviewing -> offered -> hired -> declined.
- change-request: a client whose job is under way and who wants something changed - wants: a price for the change, and the change done if they accept it. Handled by project_managers. Stages: open -> priced -> approved -> completed -> declined.
- log-phone-enquiry: a project manager who just took a call or a text about a building - wants: the enquiry written down before it gets lost. Handled by project_managers. Stages: open -> surveyed -> quoted -> won -> lost.
- post-job-request: a project manager with work to hand to a subcontractor - wants: approved subcontractors to see the job and answer with a price. Handled by project_managers. Stages: open -> awarded -> withdrawn.
- submit-bid: an approved subcontractor who has seen a job they can take - wants: to say yes with a price and a start date. Handled by project_managers. Stages: open -> shortlisted -> accepted -> declined.
- report-site-issue: anyone on site, ours or a subcontractor's, on a phone with gloves on - wants: to report a hazard, a near miss or wrong materials before they forget. Handled by safety_officer. Stages: open -> in_hand -> closed.
- order-materials: a carpenter or bricklayer who is about to run out of something - wants: it ordered and on site before work stops. Handled by site_managers. Stages: open -> ordered -> delivered -> refused.
- safety-round-finding: the safety officer walking a site on the weekly round - wants: each thing found written down where the reported issues already are. Handled by safety_officer. Stages: open -> in_hand -> closed.
The page: questions/subcontractors/submit-bid-sent.yaml
It is a page shown right after someone has sent a form. Say who reads it, when they answer, and what happens next.
Below is the page as JSON. Every value is a slot that says what to write there. Return the same JSON with every slot replaced by your words. Keep every key exactly as it is. A slot left as it is counts as no answer.
Rules for the words:
- `question` is a question the reader could ask themselves.
- A heading says what the reader gets, in the reader's own words, and must work without its description.
- Lead with what a thing enables. No negations in headings. No trade jargon the reader would not use.
- Descriptions are one or two short sentences. Labels and buttons are a few words.
- Write the way people in this trade and country actually speak.
{
"back": "<WRITE: a button, one to three words>",
"description": "<WRITE: one or two short sentences>",
"next_description": "<WRITE: one or two short sentences>",
"next_heading": "<WRITE: a heading, at most eight words, saying what the reader gets>",
"question": "<WRITE: the one question this page asks its reader>"
}
Reply with the JSON object only.
=== REPLY ===
{
"back": "Back to form",
"description": "Your bid has been submitted. Awaiting review by our project managers.",
"next_description": "We will review your submission and get back to you within 3 business days.",
"next_heading": "What happens next?",
"question": "What happens after I submit?"
}
@@ -0,0 +1,66 @@
You write the words for one page of a website for this business.
Business: Nordvik Bygg
About: Twelve people who survey old buildings, draw up rehabilitation plans, handle the permit application, and do the building work with their own carpenters plus subcontractors for electrical, plumbing and scaffolding. Project managers win and run the jobs, site managers run each building site day to day, and one safety officer owns everything reported from site.
Contact: Ingrid Nordvik <ingrid@nordvikbygg.example>
Language to write in: en
Everyone the site serves:
- door your-building: for an owner, a housing board or a past customer with a building; behind it: survey-enquiry, build-enquiry, warranty-claim
- door work-with-us: for a trade firm, a carpenter or an apprentice who wants work from us; behind it: subcontractor-application, job-application
- survey-enquiry: a housing board or private owner with a problem in a building - wants: someone qualified to come and look at it and say what it takes. Handled by project_managers. Stages: open -> surveyed -> quoted -> won -> lost.
- build-enquiry: an owner who already knows what they want built or changed - wants: drawings, a permit application and a price. Handled by project_managers. Stages: open -> surveyed -> quoted -> won -> lost.
- warranty-claim: a past customer who has found a fault in work we handed over - wants: us to come back, look at it, and put it right. Handled by project_managers. Stages: open -> inspected -> accepted -> fixed -> rejected.
- neighbour-complaint: someone living or working next to one of our building sites - wants: the noise, dust or blocked access dealt with, and an answer. Handled by site_managers. Stages: open -> answered.
- subcontractor-application: a trade firm doing electrical, plumbing or scaffolding work - wants: to be approved once, and then be called when a job needs them. Handled by project_managers. Stages: open -> awaiting_papers -> approved -> declined.
- job-application: a carpenter, bricklayer or apprentice looking for work - wants: to be considered, without writing a letter. Handled by project_managers. Stages: open -> interviewing -> offered -> hired -> declined.
- change-request: a client whose job is under way and who wants something changed - wants: a price for the change, and the change done if they accept it. Handled by project_managers. Stages: open -> priced -> approved -> completed -> declined.
- log-phone-enquiry: a project manager who just took a call or a text about a building - wants: the enquiry written down before it gets lost. Handled by project_managers. Stages: open -> surveyed -> quoted -> won -> lost.
- post-job-request: a project manager with work to hand to a subcontractor - wants: approved subcontractors to see the job and answer with a price. Handled by project_managers. Stages: open -> awarded -> withdrawn.
- submit-bid: an approved subcontractor who has seen a job they can take - wants: to say yes with a price and a start date. Handled by project_managers. Stages: open -> shortlisted -> accepted -> declined.
- report-site-issue: anyone on site, ours or a subcontractor's, on a phone with gloves on - wants: to report a hazard, a near miss or wrong materials before they forget. Handled by safety_officer. Stages: open -> in_hand -> closed.
- order-materials: a carpenter or bricklayer who is about to run out of something - wants: it ordered and on site before work stops. Handled by site_managers. Stages: open -> ordered -> delivered -> refused.
- safety-round-finding: the safety officer walking a site on the weekly round - wants: each thing found written down where the reported issues already are. Handled by safety_officer. Stages: open -> in_hand -> closed.
The page: questions/subcontractors/submit-bid.yaml
It is a page only one role inside the business can open, holding one form.
Below is the page as JSON. Every value is a slot that says what to write there. Return the same JSON with every slot replaced by your words. Keep every key exactly as it is. A slot left as it is counts as no answer.
Rules for the words:
- `question` is a question the reader could ask themselves.
- A heading says what the reader gets, in the reader's own words, and must work without its description.
- Lead with what a thing enables. No negations in headings. No trade jargon the reader would not use.
- Descriptions are one or two short sentences. Labels and buttons are a few words.
- Write the way people in this trade and country actually speak.
{
"button": "<WRITE: a button, one to three words>",
"description": "<WRITE: one or two short sentences>",
"form_title": "<WRITE: a title for the form, two to four words>",
"heading": "<WRITE: a heading, at most eight words, saying what the reader gets>",
"labels": {
"can_start": "<WRITE: a form label for the field `can_start`>",
"job": "<WRITE: a form label for the field `job`>",
"price": "<WRITE: a form label for the field `price`>"
},
"page_description": "<WRITE: one or two short sentences>",
"question": "<WRITE: the one question this page asks its reader>"
}
Reply with the JSON object only.
=== REPLY ===
{
"button": "Submit bid",
"description": "Tell us your price and when you can start so we can review your offer.",
"form_title": "Submit a bid",
"heading": "Submit a bid on a job",
"labels": {
"can_start": "Can start",
"job": "Job reference",
"price": "Your price"
},
"page_description": "Approved subcontractors use this form to place a bid on an open job.",
"question": "Will you submit a bid on this job?"
}
@@ -0,0 +1,104 @@
You write the words for one page of a website for this business.
Business: Nordvik Bygg
About: Twelve people who survey old buildings, draw up rehabilitation plans, handle the permit application, and do the building work with their own carpenters plus subcontractors for electrical, plumbing and scaffolding. Project managers win and run the jobs, site managers run each building site day to day, and one safety officer owns everything reported from site.
Contact: Ingrid Nordvik <ingrid@nordvikbygg.example>
Language to write in: en
Everyone the site serves:
- door your-building: for an owner, a housing board or a past customer with a building; behind it: survey-enquiry, build-enquiry, warranty-claim
- door work-with-us: for a trade firm, a carpenter or an apprentice who wants work from us; behind it: subcontractor-application, job-application
- survey-enquiry: a housing board or private owner with a problem in a building - wants: someone qualified to come and look at it and say what it takes. Handled by project_managers. Stages: open -> surveyed -> quoted -> won -> lost.
- build-enquiry: an owner who already knows what they want built or changed - wants: drawings, a permit application and a price. Handled by project_managers. Stages: open -> surveyed -> quoted -> won -> lost.
- warranty-claim: a past customer who has found a fault in work we handed over - wants: us to come back, look at it, and put it right. Handled by project_managers. Stages: open -> inspected -> accepted -> fixed -> rejected.
- neighbour-complaint: someone living or working next to one of our building sites - wants: the noise, dust or blocked access dealt with, and an answer. Handled by site_managers. Stages: open -> answered.
- subcontractor-application: a trade firm doing electrical, plumbing or scaffolding work - wants: to be approved once, and then be called when a job needs them. Handled by project_managers. Stages: open -> awaiting_papers -> approved -> declined.
- job-application: a carpenter, bricklayer or apprentice looking for work - wants: to be considered, without writing a letter. Handled by project_managers. Stages: open -> interviewing -> offered -> hired -> declined.
- change-request: a client whose job is under way and who wants something changed - wants: a price for the change, and the change done if they accept it. Handled by project_managers. Stages: open -> priced -> approved -> completed -> declined.
- log-phone-enquiry: a project manager who just took a call or a text about a building - wants: the enquiry written down before it gets lost. Handled by project_managers. Stages: open -> surveyed -> quoted -> won -> lost.
- post-job-request: a project manager with work to hand to a subcontractor - wants: approved subcontractors to see the job and answer with a price. Handled by project_managers. Stages: open -> awarded -> withdrawn.
- submit-bid: an approved subcontractor who has seen a job they can take - wants: to say yes with a price and a start date. Handled by project_managers. Stages: open -> shortlisted -> accepted -> declined.
- report-site-issue: anyone on site, ours or a subcontractor's, on a phone with gloves on - wants: to report a hazard, a near miss or wrong materials before they forget. Handled by safety_officer. Stages: open -> in_hand -> closed.
- order-materials: a carpenter or bricklayer who is about to run out of something - wants: it ordered and on site before work stops. Handled by site_managers. Stages: open -> ordered -> delivered -> refused.
- safety-round-finding: the safety officer walking a site on the weekly round - wants: each thing found written down where the reported issues already are. Handled by safety_officer. Stages: open -> in_hand -> closed.
The page: questions/work-with-us/index.yaml
It is a page one kind of visitor reaches from the front door. `question` is what this page asks them; under `needs`, each entry is one alternative they can pick, with the form behind it.
Below is the page as JSON. Every value is a slot that says what to write there. Return the same JSON with every slot replaced by your words. Keep every key exactly as it is. A slot left as it is counts as no answer.
Rules for the words:
- `question` is a question the reader could ask themselves.
- A heading says what the reader gets, in the reader's own words, and must work without its description.
- Lead with what a thing enables. No negations in headings. No trade jargon the reader would not use.
- Descriptions are one or two short sentences. Labels and buttons are a few words.
- Write the way people in this trade and country actually speak.
{
"description": "<WRITE: one or two short sentences>",
"needs": {
"job-application": {
"button": "<WRITE: a button, one to three words>",
"description": "<WRITE: one or two short sentences>",
"form_title": "<WRITE: a title for the form, two to four words>",
"heading": "<WRITE: a heading, at most eight words, saying what the reader gets>",
"labels": {
"experience": "<WRITE: a form label for the field `experience`>",
"name": "<WRITE: a form label for the field `name`>",
"phone": "<WRITE: a form label for the field `phone`>",
"trade": "<WRITE: a form label for the field `trade`>"
}
},
"subcontractor-application": {
"button": "<WRITE: a button, one to three words>",
"description": "<WRITE: one or two short sentences>",
"form_title": "<WRITE: a title for the form, two to four words>",
"heading": "<WRITE: a heading, at most eight words, saying what the reader gets>",
"labels": {
"company": "<WRITE: a form label for the field `company`>",
"contact_email": "<WRITE: a form label for the field `contact_email`>",
"insurance_confirmed": "<WRITE: a form label for the field `insurance_confirmed`>",
"registration_number": "<WRITE: a form label for the field `registration_number`>",
"trade": "<WRITE: a form label for the field `trade`>",
"trade_approval": "<WRITE: a form label for the field `trade_approval`>"
}
}
},
"question": "<WRITE: the one question this page asks its reader>"
}
Reply with the JSON object only.
=== REPLY ===
{
"description": "We are a small team running rehabilitation and construction projects. We are looking for people who want to join us, or who need our help with a building.",
"needs": {
"job-application": {
"button": "Apply now",
"description": "Tell us who you are and what you can do. No letter needed.",
"form_title": "Job application",
"heading": "Find a job with us",
"labels": {
"experience": "Your experience",
"name": "Your name",
"phone": "Your phone",
"trade": "Your trade"
}
},
"subcontractor-application": {
"button": "Apply now",
"description": "Send us your details so we can check if you are a fit for our projects.",
"form_title": "Subcontractor application",
"heading": "Apply to work with us",
"labels": {
"company": "Company name",
"contact_email": "Contact email",
"insurance_confirmed": "Insurance confirmed",
"registration_number": "Registration number",
"trade": "Your trade",
"trade_approval": "Trade approval"
}
}
},
"question": "Do you want to work with us, or do you need our help with a building?"
}
@@ -0,0 +1,130 @@
You write the words for one page of a website for this business.
Business: Nordvik Bygg
About: Twelve people who survey old buildings, draw up rehabilitation plans, handle the permit application, and do the building work with their own carpenters plus subcontractors for electrical, plumbing and scaffolding. Project managers win and run the jobs, site managers run each building site day to day, and one safety officer owns everything reported from site.
Contact: Ingrid Nordvik <ingrid@nordvikbygg.example>
Language to write in: en
Everyone the site serves:
- door your-building: for an owner, a housing board or a past customer with a building; behind it: survey-enquiry, build-enquiry, warranty-claim
- door work-with-us: for a trade firm, a carpenter or an apprentice who wants work from us; behind it: subcontractor-application, job-application
- survey-enquiry: a housing board or private owner with a problem in a building - wants: someone qualified to come and look at it and say what it takes. Handled by project_managers. Stages: open -> surveyed -> quoted -> won -> lost.
- build-enquiry: an owner who already knows what they want built or changed - wants: drawings, a permit application and a price. Handled by project_managers. Stages: open -> surveyed -> quoted -> won -> lost.
- warranty-claim: a past customer who has found a fault in work we handed over - wants: us to come back, look at it, and put it right. Handled by project_managers. Stages: open -> inspected -> accepted -> fixed -> rejected.
- neighbour-complaint: someone living or working next to one of our building sites - wants: the noise, dust or blocked access dealt with, and an answer. Handled by site_managers. Stages: open -> answered.
- subcontractor-application: a trade firm doing electrical, plumbing or scaffolding work - wants: to be approved once, and then be called when a job needs them. Handled by project_managers. Stages: open -> awaiting_papers -> approved -> declined.
- job-application: a carpenter, bricklayer or apprentice looking for work - wants: to be considered, without writing a letter. Handled by project_managers. Stages: open -> interviewing -> offered -> hired -> declined.
- change-request: a client whose job is under way and who wants something changed - wants: a price for the change, and the change done if they accept it. Handled by project_managers. Stages: open -> priced -> approved -> completed -> declined.
- log-phone-enquiry: a project manager who just took a call or a text about a building - wants: the enquiry written down before it gets lost. Handled by project_managers. Stages: open -> surveyed -> quoted -> won -> lost.
- post-job-request: a project manager with work to hand to a subcontractor - wants: approved subcontractors to see the job and answer with a price. Handled by project_managers. Stages: open -> awarded -> withdrawn.
- submit-bid: an approved subcontractor who has seen a job they can take - wants: to say yes with a price and a start date. Handled by project_managers. Stages: open -> shortlisted -> accepted -> declined.
- report-site-issue: anyone on site, ours or a subcontractor's, on a phone with gloves on - wants: to report a hazard, a near miss or wrong materials before they forget. Handled by safety_officer. Stages: open -> in_hand -> closed.
- order-materials: a carpenter or bricklayer who is about to run out of something - wants: it ordered and on site before work stops. Handled by site_managers. Stages: open -> ordered -> delivered -> refused.
- safety-round-finding: the safety officer walking a site on the weekly round - wants: each thing found written down where the reported issues already are. Handled by safety_officer. Stages: open -> in_hand -> closed.
The page: questions/your-building/index.yaml
It is a page one kind of visitor reaches from the front door. `question` is what this page asks them; under `needs`, each entry is one alternative they can pick, with the form behind it.
Below is the page as JSON. Every value is a slot that says what to write there. Return the same JSON with every slot replaced by your words. Keep every key exactly as it is. A slot left as it is counts as no answer.
Rules for the words:
- `question` is a question the reader could ask themselves.
- A heading says what the reader gets, in the reader's own words, and must work without its description.
- Lead with what a thing enables. No negations in headings. No trade jargon the reader would not use.
- Descriptions are one or two short sentences. Labels and buttons are a few words.
- Write the way people in this trade and country actually speak.
{
"description": "<WRITE: one or two short sentences>",
"needs": {
"build-enquiry": {
"button": "<WRITE: a button, one to three words>",
"description": "<WRITE: one or two short sentences>",
"form_title": "<WRITE: a title for the form, two to four words>",
"heading": "<WRITE: a heading, at most eight words, saying what the reader gets>",
"labels": {
"address": "<WRITE: a form label for the field `address`>",
"name": "<WRITE: a form label for the field `name`>",
"phone": "<WRITE: a form label for the field `phone`>",
"project": "<WRITE: a form label for the field `project`>",
"timeframe": "<WRITE: a form label for the field `timeframe`>"
}
},
"survey-enquiry": {
"button": "<WRITE: a button, one to three words>",
"description": "<WRITE: one or two short sentences>",
"form_title": "<WRITE: a title for the form, two to four words>",
"heading": "<WRITE: a heading, at most eight words, saying what the reader gets>",
"labels": {
"access": "<WRITE: a form label for the field `access`>",
"address": "<WRITE: a form label for the field `address`>",
"name": "<WRITE: a form label for the field `name`>",
"phone": "<WRITE: a form label for the field `phone`>",
"problem": "<WRITE: a form label for the field `problem`>"
}
},
"warranty-claim": {
"button": "<WRITE: a button, one to three words>",
"description": "<WRITE: one or two short sentences>",
"form_title": "<WRITE: a title for the form, two to four words>",
"heading": "<WRITE: a heading, at most eight words, saying what the reader gets>",
"labels": {
"address": "<WRITE: a form label for the field `address`>",
"fault": "<WRITE: a form label for the field `fault`>",
"handed_over": "<WRITE: a form label for the field `handed_over`>",
"name": "<WRITE: a form label for the field `name`>",
"phone": "<WRITE: a form label for the field `phone`>"
}
}
},
"question": "<WRITE: the one question this page asks its reader>"
}
Reply with the JSON object only.
=== REPLY ===
{
"description": "What brings you to us today?",
"needs": {
"build-enquiry": {
"button": "Start build",
"description": "You know what you want changed or built. We’ll draw it, handle the permit, and price it for you.",
"form_title": "Your building project",
"heading": "Tell us about your building project",
"labels": {
"address": "Building address",
"name": "Your name",
"phone": "Phone number",
"project": "Project type",
"timeframe": "When you want it done"
}
},
"survey-enquiry": {
"button": "Get it surveyed",
"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.",
"form_title": "Survey your building",
"heading": "Report a building problem",
"labels": {
"access": "How to get to the site",
"address": "Building address",
"name": "Your name",
"phone": "Phone number",
"problem": "What is the problem?"
}
},
"warranty-claim": {
"button": "Claim warranty",
"description": "You found a fault in work we did. We’ll come back, look at it, and put it right.",
"form_title": "Warranty claim",
"heading": "Report a fault in our work",
"labels": {
"address": "Building address",
"fault": "What is the fault?",
"handed_over": "When was it handed over?",
"name": "Your name",
"phone": "Phone number"
}
}
},
"question": "What are you looking for?"
}
File diff suppressed because it is too large Load Diff
+330
View File
@@ -0,0 +1,330 @@
needs:
- also_moved_by:
- site_managers
done_when:
- won
- lost
enters: /
handled_by: project_managers
id: survey-enquiry
lands_in: enquiries
max_fields: 4
max_steps: 2
stages:
- open
- surveyed
- quoted
- won
- lost
success:
- won
via: Your building project
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
- also_moved_by:
- site_managers
done_when:
- won
- lost
enters: /
handled_by: project_managers
id: build-enquiry
lands_in: enquiries
max_fields: 5
max_steps: 2
stages:
- open
- surveyed
- quoted
- won
- lost
success:
- won
via: Your building project
wants: drawings, a permit application and a price
who: an owner who already knows what they want built or changed
- also_moved_by:
- site_managers
done_when:
- fixed
- rejected
enters: /
handled_by: project_managers
id: warranty-claim
lands_in: claims
max_fields: 4
max_steps: 2
stages:
- open
- inspected
- accepted
- fixed
- rejected
success:
- fixed
via: Your building project
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: /
handled_by: site_managers
id: neighbour-complaint
lands_in: complaints
max_fields: 3
max_steps: 1
stages:
- open
- answered
success:
- answered
via: Neighbour complaint
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: /
handled_by: project_managers
id: subcontractor-application
lands_in: subcontractors
max_fields: 5
max_steps: 2
stages:
- open
- awaiting_papers
- approved
- declined
success:
- approved
via: Work with Nordvik Bygg
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: /
handled_by: project_managers
id: job-application
lands_in: applicants
max_fields: 3
max_steps: 2
stages:
- open
- interviewing
- offered
- hired
- declined
success:
- hired
via: Work with Nordvik Bygg
wants: to be considered, without writing a letter
who: a carpenter, bricklayer or apprentice looking for work
- also_moved_by:
- site_managers
done_when:
- completed
- declined
enters: /clients/change-request
enters_as: clients
handled_by: project_managers
id: change-request
lands_in: change_orders
max_fields: 3
max_steps: 1
stages:
- open
- priced
- approved
- completed
- declined
success:
- completed
via: Request a change to your building work
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
- also_moved_by:
- site_managers
done_when:
- won
- lost
enters: /project_managers/log-phone-enquiry
enters_as: project_managers
handled_by: project_managers
id: log-phone-enquiry
lands_in: enquiries
max_fields: 4
max_steps: 1
stages:
- open
- surveyed
- quoted
- won
- lost
success:
- won
via: Log a phone enquiry
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: /project_managers/post-job-request
enters_as: project_managers
handled_by: project_managers
id: post-job-request
lands_in: job_requests
max_fields: 4
max_steps: 1
stages:
- open
- awarded
- withdrawn
success:
- awarded
via: Give subcontractors a job to price
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: /subcontractors/submit-bid
enters_as: subcontractors
handled_by: project_managers
id: submit-bid
lands_in: bids
max_fields: 3
max_steps: 1
stages:
- open
- shortlisted
- accepted
- declined
success:
- accepted
via: Submit a bid on a job
wants: to say yes with a price and a start date
who: an approved subcontractor who has seen a job they can take
- also_moved_by:
- site_managers
done_when:
- closed
enters: /crew/report-site-issue
enters_as: crew
handled_by: safety_officer
id: report-site-issue
lands_in: site_issues
max_fields: 3
max_steps: 1
stages:
- open
- in_hand
- closed
success:
- closed
via: Report a safety finding on site
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
- also_moved_by:
- crew
done_when:
- delivered
- refused
enters: /crew/order-materials
enters_as: crew
handled_by: site_managers
id: order-materials
lands_in: material_orders
max_fields: 3
max_steps: 1
stages:
- open
- ordered
- delivered
- refused
success:
- delivered
via: Order materials for the site
wants: it ordered and on site before work stops
who: a carpenter or bricklayer who is about to run out of something
- also_moved_by:
- site_managers
done_when:
- closed
enters: /safety_officer/safety-round-finding
enters_as: safety_officer
handled_by: safety_officer
id: safety-round-finding
lands_in: site_issues
max_fields: 3
max_steps: 1
stages:
- open
- in_hand
- closed
success:
- closed
via: Report what you find on site
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.
@@ -0,0 +1 @@
qualifies: clients
@@ -0,0 +1,10 @@
alternatives:
- description: We will get back to you with a price and next steps within 2 business days.
name: What happens next?
- action: /clients
consequence:
- Back to form
description: ''
name: Back to form
description: We have received your change request. A project manager will review it shortly.
name: What happens after I submit?
@@ -0,0 +1,29 @@
alternatives:
- action: /clients/change-request-sent
consequence:
- Submit change
description: Tell us what you want changed so we can price it and get it done.
features:
- name: Change request
requirements:
- label: Your email
name: email
type: email
- label: Building address
name: job_address
type: text
- label: What needs to change?
name: change
type: textarea
- label: When do you need this?
name: needed_by
optional: true
type: date
name: Request a change to your building work
record_as: change_orders
description: A client can ask for a change to an ongoing job. We price it and do it if you accept.
followup: false
name: What needs to change in your project?
responsible:
contact: ingrid@nordvikbygg.example
name: Ingrid Nordvik
@@ -0,0 +1,11 @@
alternatives:
- action: /clients/change-request
consequence:
- Change request
description: A client whose job is under way and who wants something changed wants a price for the change, and the change done if they accept it.
name: Change request
description: Manage your cases and move them through their stages.
name: What do you need to do today?
responsible:
contact: ingrid@nordvikbygg.example
name: Ingrid Nordvik
@@ -0,0 +1 @@
qualifies: crew
@@ -0,0 +1,33 @@
alternatives:
- action: /crew
consequence:
- Confirm
description: Order materials for a job in progress. See what's on its way and what arrived.
features:
- description: ''
name: ''
resource:
requires_group: crew
source:
bucket: material_orders
kind: kv
transitions:
- from: ordered
label: Mark delivered
to: delivered
name: Order materials for building
- action: /crew/report-site-issue
consequence:
- Report issue
description: Log a hazard, near miss or wrong materials found on site. Keep the weekly safety round up to date.
name: Report a site issue
- action: /crew/order-materials
consequence:
- Order materials
description: Order materials for the job you are working on. Track what has been delivered.
name: Order materials for building
description: Manage the flow of cases from enquiry to completion. See what stage each case is at and move it forward.
name: What case do you need to move forward?
responsible:
contact: ingrid@nordvikbygg.example
name: Ingrid Nordvik
@@ -0,0 +1,10 @@
alternatives:
- description: You will receive a confirmation once the materials are on site.
name: Materials ordered
- action: /crew
consequence:
- Back to order-materials
description: ''
name: Back to order-materials
description: We have received your request. The site manager will process it shortly.
name: Will the materials arrive on time?
@@ -0,0 +1,25 @@
alternatives:
- action: /crew/order-materials-sent
consequence:
- Order now
description: Tell us what you need and where the site is so we can get it on its way.
features:
- name: Order materials
requirements:
- label: Site address
name: site_address
type: text
- label: What do you need?
name: what
type: textarea
- label: Needed by
name: needed_by
type: date
name: Order materials for the site
record_as: material_orders
description: Order materials before the site runs out.
followup: false
name: What do you need on site?
responsible:
contact: ingrid@nordvikbygg.example
name: Ingrid Nordvik
@@ -0,0 +1,10 @@
alternatives:
- description: We will review the reported issue and update its status. You will be notified when it is resolved.
name: What happens next
- action: /crew
consequence:
- Back to form
description: ''
name: Back to form
description: Your report has been sent to our safety officer. They will review the issue and get back to you.
name: What happens after I submit?
@@ -0,0 +1,30 @@
alternatives:
- action: /crew/report-site-issue-sent
consequence:
- Report issue
description: Write down a hazard, near miss, or wrong materials from the site so the safety officer can fix it.
features:
- name: Report a site issue
requirements:
- label: What kind of issue
name: kind
options:
- Hazard
- Near miss
- Wrong materials
- Other
type: select
- label: Where on site
name: where
type: text
- label: What happened
name: what_happened
type: textarea
name: Report a safety finding on site
record_as: site_issues
description: Report a hazard, near miss, or wrong materials found during a site visit.
followup: false
name: What safety issue did you find?
responsible:
contact: ingrid@nordvikbygg.example
name: Ingrid Nordvik
@@ -0,0 +1,15 @@
alternatives:
- description: The change will be added to the project scope and price. Work will proceed according to the new agreement.
name: Approve the change request
self_transition:
bucket: change_orders
label: Accept change
to: approved
- description: The change will not be added to the project. The original scope and price remain unchanged.
name: Decline the change request
self_transition:
bucket: change_orders
label: Reject change
to: declined
description: You have submitted a change request for your ongoing project. Use this page to make your decision.
name: What is your decision on this change request?
@@ -0,0 +1,34 @@
alternatives:
- action: /your-building
consequence:
- Start here
description: Report a problem, get a survey, or start a new build project.
name: Your building project
- action: /work-with-us
consequence:
- Join us
description: Apply to work with us as a subcontractor or find a job as a carpenter or apprentice.
name: Work with Nordvik Bygg
- action: /received/neighbour-complaint
consequence:
- Report issue
description: Let us know about noise, dust, or access problems from a building site near you.
features:
- name: Contact details
requirements:
- label: Building address
name: site_address
type: text
- label: Describe the issue
name: what_is_wrong
type: textarea
- label: Contact method
name: reach_me_on
type: text
name: Neighbour complaint
record_as: complaints
description: Find the right path for your building or your career with Nordvik Bygg.
name: What brings you to Nordvik Bygg today?
responsible:
contact: ingrid@nordvikbygg.example
name: Ingrid Nordvik
@@ -0,0 +1 @@
qualifies: project_managers
@@ -0,0 +1,238 @@
alternatives:
- action: /project_managers
consequence:
- Confirm
description: Track carpenter and apprentice applications from open to hired, with interview steps in between.
features:
- description: ''
name: ''
resource:
requires_group: project_managers
source:
bucket: applicants
kind: kv
transitions:
- 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
name: Applicant cases
- action: /project_managers
consequence:
- Confirm
description: Handle subcontractor bids from open submission to accepted or declined.
features:
- description: ''
name: ''
resource:
requires_group: project_managers
source:
bucket: bids
kind: kv
transitions:
- 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
name: Bid management
- action: /project_managers
consequence:
- Confirm
description: Track client change requests from open inquiry through pricing and completion.
features:
- description: ''
name: ''
resource:
requires_group: project_managers
source:
bucket: change_orders
kind: kv
transitions:
- 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
name: Change order cases
- action: /project_managers
consequence:
- Confirm
description: Handle warranty claims from inspection through to acceptance or rejection of the fix.
features:
- description: ''
name: ''
resource:
requires_group: project_managers
source:
bucket: claims
kind: kv
transitions:
- 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
name: Warranty claim cases
- action: /project_managers
consequence:
- Confirm
description: Record and resolve neighbour complaints about site noise, dust or access.
features:
- description: ''
name: ''
resource:
requires_group: project_managers
source:
bucket: complaints
kind: kv
transitions: []
name: Neighbour complaints
- action: /project_managers
consequence:
- Confirm
description: Track building enquiries from initial contact through survey, quote and win/lose outcome.
features:
- description: ''
name: ''
resource:
requires_group: project_managers
source:
bucket: enquiries
kind: kv
transitions:
- 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
name: Building enquiries
- action: /project_managers
consequence:
- Confirm
description: Manage internal job assignments for subcontractors from open through to awarded or withdrawn.
features:
- description: ''
name: ''
resource:
requires_group: project_managers
source:
bucket: job_requests
kind: kv
transitions:
- from: open
label: Award job
to: awarded
- from: open
label: Withdraw job
to: withdrawn
name: Job requests
- action: /project_managers
consequence:
- Confirm
description: Log safety and quality issues reported from site, through to closure.
features:
- description: ''
name: ''
resource:
requires_group: project_managers
source:
bucket: site_issues
kind: kv
transitions: []
name: Site issue log
- action: /project_managers
consequence:
- Confirm
description: Track trade firm applications from open through paper review to approved or declined status.
features:
- description: ''
name: ''
resource:
requires_group: project_managers
source:
bucket: subcontractors
kind: kv
transitions:
- 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
name: Subcontractor cases
- action: /project_managers/log-phone-enquiry
consequence:
- Log call
description: Record a new building enquiry or client call before details are lost.
name: Log phone enquiry
- action: /project_managers/post-job-request
consequence:
- Post job
description: Send an approved job to subcontractors for bidding.
name: Post job request
description: Manage and track all project enquiries, applications and site issues from one desk.
name: What case do you want to work on?
responsible:
contact: ingrid@nordvikbygg.example
name: Ingrid Nordvik
@@ -0,0 +1,10 @@
alternatives:
- description: We will call you to discuss the issue and decide on the next steps.
name: What happens next?
- action: /project_managers
consequence:
- Back to enquiry
description: ''
name: Back to enquiry
description: Your phone call has been recorded. We will review it and get back to you.
name: Did we capture everything you needed?
@@ -0,0 +1,28 @@
alternatives:
- action: /project_managers/log-phone-enquiry-sent
consequence:
- Log call
description: Write down the enquiry so it doesn't get lost. One call, one record.
features:
- name: Phone enquiry log
requirements:
- label: Your name
name: caller
type: text
- label: Phone number
name: phone
type: tel
- label: Address or site location
name: address
type: text
- label: What was said
name: problem
type: textarea
name: Log a phone enquiry
record_as: enquiries
description: Record a building enquiry taken over the phone.
followup: false
name: What was said on the call?
responsible:
contact: ingrid@nordvikbygg.example
name: Ingrid Nordvik
@@ -0,0 +1,10 @@
alternatives:
- description: Once a subcontractor accepts the job, the status will update and you’ll be able to track the progress.
name: Awaiting subcontractor response
- action: /project_managers
consequence:
- Back to list
description: ''
name: Back to list
description: Your post-job request has been sent to our project managers. They will review the details and reach out to approved subcontractors.
name: Who will take on this job?
@@ -0,0 +1,34 @@
alternatives:
- action: /project_managers/post-job-request-sent
consequence:
- Submit request
description: Tell us about the job you have ready to hand to a subcontractor.
features:
- name: Post a job for subcontractors
requirements:
- label: Site address
name: site_address
type: text
- label: Trade needed
name: trade
options:
- Electrical
- Plumbing
- Scaffolding
- Sheet metal
- Other
type: select
- label: Work description
name: work
type: textarea
- label: When work starts
name: start
type: date
name: Give subcontractors a job to price
record_as: job_requests
description: Post a job so approved subcontractors can price it.
followup: false
name: What job do you have for a subcontractor?
responsible:
contact: ingrid@nordvikbygg.example
name: Ingrid Nordvik
@@ -0,0 +1,10 @@
alternatives:
- description: A project manager will contact you to discuss the scope and arrange a site survey.
name: 'Next steps: survey and quote'
- action: /
consequence:
- Back to form
description: ''
name: Back to form
description: Your build-enquiry has been received. We will review the details and get back to you.
name: What happens after I submit?
@@ -0,0 +1,10 @@
alternatives:
- description: We will contact you if your profile matches an open position. No need to send a separate cover letter.
name: What happens next
- action: /
consequence:
- Back to applications
description: ''
name: Back to applications
description: Your application has been received. We review carpenter and apprentice requests weekly.
name: What happens after I apply?
@@ -0,0 +1,10 @@
alternatives:
- description: A site manager will review your report and find a solution.
name: What happens next?
- action: /
consequence:
- Back to site
description: ''
name: Back to site
description: Your neighbour complaint has been received. We will look into it and get back to you.
name: What issue are you reporting?
@@ -0,0 +1,10 @@
alternatives:
- description: Project managers check approved subcontractors for new jobs. Once approved, you will receive job invitations with prices and start dates.
name: What happens next
- action: /
consequence:
- Back to form
description: ''
name: Back to form
description: Your subcontractor application has been received. We will review it and contact you if we need more information.
name: What happens after I submit?
@@ -0,0 +1,10 @@
alternatives:
- description: A project manager will contact you within 2 business days to schedule a site visit and provide a quotation.
name: 'Next steps: Survey and quote'
- action: /
consequence:
- Back to form
description: ''
name: Back to form
description: Your survey request has been received. We will review the details and assign a project manager to assess the building.
name: What happens after I submit?
@@ -0,0 +1,10 @@
alternatives:
- description: A project manager will inspect the issue and decide on the next steps.
name: What happens next
- action: /
consequence:
- Back to enquiries
description: ''
name: Back to enquiries
description: Your warranty claim has been received. We will review the details and get back to you.
name: What seems to be the problem?
@@ -0,0 +1 @@
qualifies: safety_officer
@@ -0,0 +1,31 @@
alternatives:
- action: /safety_officer
consequence:
- Continue
description: Report and resolve safety issues, near misses, or material problems found during daily work.
features:
- description: ''
name: ''
resource:
requires_group: safety_officer
source:
bucket: site_issues
kind: kv
transitions:
- from: in_hand
label: Mark as closed
to: closed
- from: open
label: Start reporting
to: in_hand
name: Report site safety issues
- action: /safety_officer/safety-round-finding
consequence:
- View weekly round
description: See all issues found during the site safety walkround.
name: Safety walkround findings
description: A desk for the safety officer to track and resolve reported issues from building sites.
name: What safety issues need reporting or closing today?
responsible:
contact: ingrid@nordvikbygg.example
name: Ingrid Nordvik
@@ -0,0 +1,10 @@
alternatives:
- description: The issue will be marked as closed once the officer has verified the fix or the hazard has been removed.
name: Issue recorded and reviewed
- action: /safety_officer
consequence:
- Back to form
description: ''
name: Back to form
description: The safety officer has received your report. They will review the issue during their next site walk.
name: What happens after I submit a safety report?
@@ -0,0 +1,30 @@
alternatives:
- action: /safety_officer/safety-round-finding-sent
consequence:
- Log finding
description: Report a hazard, near miss or wrong materials from the site. This helps keep everyone safe and the job on track.
features:
- name: Safety round finding
requirements:
- label: Issue kind
name: kind
options:
- Hazard
- Near miss
- Wrong materials
- Other
type: select
- label: Where on site
name: where
type: text
- label: What happened
name: what_happened
type: textarea
name: Report what you find on site
record_as: site_issues
description: Use this form to record safety issues found during the weekly site round.
followup: false
name: What safety issue did you find?
responsible:
contact: ingrid@nordvikbygg.example
name: Ingrid Nordvik
@@ -0,0 +1 @@
qualifies: site_managers
@@ -0,0 +1,162 @@
alternatives:
- action: /site_managers
consequence:
- Save changes
description: Approved subcontractors review jobs and submit prices. Submit-bid stage moves to shortlisted or declined.
features:
- description: ''
name: ''
resource:
requires_group: site_managers
source:
bucket: bids
kind: kv
transitions: []
name: Subcontractor bids
- action: /site_managers
consequence:
- Save changes
description: Clients request changes to ongoing jobs. Prices are set and changes are completed or declined.
features:
- description: ''
name: ''
resource:
requires_group: site_managers
source:
bucket: change_orders
kind: kv
transitions:
- from: approved
label: Mark done
to: completed
name: Change requests
- action: /site_managers
consequence:
- Save changes
description: Past customers report faults. Issues are inspected and fixed or rejected.
features:
- description: ''
name: ''
resource:
requires_group: site_managers
source:
bucket: claims
kind: kv
transitions:
- from: accepted
label: Mark fixed
to: fixed
- from: open
label: Book inspection
to: inspected
name: Warranty claims
- action: /site_managers
consequence:
- Save changes
description: Neighbour issues on site are logged and answered.
features:
- description: ''
name: ''
resource:
requires_group: site_managers
source:
bucket: complaints
kind: kv
transitions:
- from: open
label: Mark answered
to: answered
name: Neighbour complaints
- action: /site_managers
consequence:
- Save changes
description: New building or survey requests are logged and moved through stages to a decision.
features:
- description: ''
name: ''
resource:
requires_group: site_managers
source:
bucket: enquiries
kind: kv
transitions:
- from: open
label: Mark surveyed
to: surveyed
name: New enquiries
- action: /site_managers
consequence:
- Save changes
description: Carpenters and apprentices apply for work. Stages track from interview to hire.
features:
- description: ''
name: ''
resource:
requires_group: site_managers
source:
bucket: job_requests
kind: kv
transitions: []
name: Job applications
- action: /site_managers
consequence:
- Save changes
description: Carpenters order materials to keep work running. Orders are tracked from request to delivery.
features:
- description: ''
name: ''
resource:
requires_group: site_managers
source:
bucket: material_orders
kind: kv
transitions:
- 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
name: Material orders
- action: /site_managers
consequence:
- Save changes
description: Hazards and near misses are reported and closed off the weekly safety round.
features:
- description: ''
name: ''
resource:
requires_group: site_managers
source:
bucket: site_issues
kind: kv
transitions:
- from: open
label: Log it
to: in_hand
name: Site safety issues
- action: /site_managers
consequence:
- Save changes
description: Approved trade firms are listed and jobs are awarded to them.
features:
- description: ''
name: ''
resource:
requires_group: site_managers
source:
bucket: subcontractors
kind: kv
transitions: []
name: Approved subcontractors
description: Manage the cases assigned to the site manager role.
name: What case needs updating?
responsible:
contact: ingrid@nordvikbygg.example
name: Ingrid Nordvik
@@ -0,0 +1 @@
qualifies: subcontractors
@@ -0,0 +1,25 @@
alternatives:
- action: /subcontractors
consequence:
- Save
description: Cases from trade firms and carpenters looking for work or to become approved subcontractors.
features:
- description: ''
name: ''
resource:
requires_group: subcontractors
source:
bucket: job_requests
kind: kv
transitions: []
name: Work with us
- action: /subcontractors/submit-bid
consequence:
- Submit bid
description: Approve subcontractors can see the job and reply with a price and start date.
name: Submit a bid
description: Manage enquiries from trade firms and job applicants. Move cases through stages to hire carpenters or approve subcontractors.
name: What enquiry do you want to handle?
responsible:
contact: ingrid@nordvikbygg.example
name: Ingrid Nordvik
@@ -0,0 +1,10 @@
alternatives:
- description: We will review your submission and get back to you within 3 business days.
name: What happens next?
- action: /subcontractors
consequence:
- Back to form
description: ''
name: Back to form
description: Your bid has been submitted. Awaiting review by our project managers.
name: What happens after I submit?
@@ -0,0 +1,25 @@
alternatives:
- action: /subcontractors/submit-bid-sent
consequence:
- Submit bid
description: Tell us your price and when you can start so we can review your offer.
features:
- name: Submit a bid
requirements:
- label: Job reference
name: job
type: text
- label: Your price
name: price
type: text
- label: Can start
name: can_start
type: date
name: Submit a bid on a job
record_as: bids
description: Approved subcontractors use this form to place a bid on an open job.
followup: false
name: Will you submit a bid on this job?
responsible:
contact: ingrid@nordvikbygg.example
name: Ingrid Nordvik
@@ -0,0 +1,70 @@
alternatives:
- action: /received/subcontractor-application
consequence:
- Apply now
description: Send us your details so we can check if you are a fit for our projects.
features:
- name: Subcontractor application
requirements:
- label: Company name
name: company
type: text
- label: Registration number
name: registration_number
type: text
- label: Your trade
name: trade
options:
- Electrical
- Plumbing
- Scaffolding
- Sheet metal
- Other
type: select
- label: Contact email
name: contact_email
type: email
- label: Insurance confirmed
name: insurance_confirmed
options:
- Yes
- Not yet
type: select
- label: Trade approval
name: trade_approval
optional: true
type: text
name: Apply to work with us
record_as: subcontractors
- action: /received/job-application
consequence:
- Apply now
description: Tell us who you are and what you can do. No letter needed.
features:
- name: Job application
requirements:
- label: Your name
name: name
type: text
- label: Your phone
name: phone
type: tel
- label: Your trade
name: trade
options:
- Carpenter
- Bricklayer
- Apprentice
- Other
type: select
- label: Your experience
name: experience
optional: true
type: textarea
name: Find a job with us
record_as: applicants
description: We are a small team running rehabilitation and construction projects. We are looking for people who want to join us, or who need our help with a building.
name: Do you want to work with us, or do you need our help with a building?
responsible:
contact: ingrid@nordvikbygg.example
name: Ingrid Nordvik
@@ -0,0 +1,84 @@
alternatives:
- action: /received/survey-enquiry
consequence:
- Get it surveyed
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.
features:
- name: Survey your building
requirements:
- label: Your name
name: name
type: text
- label: Phone number
name: phone
type: tel
- label: Building address
name: address
type: text
- label: What is the problem?
name: problem
type: textarea
- label: How to get to the site
name: access
optional: true
type: text
name: Report a building problem
record_as: enquiries
- action: /received/build-enquiry
consequence:
- Start build
description: You know what you want changed or built. We’ll draw it, handle the permit, and price it for you.
features:
- name: Your building project
requirements:
- label: Your name
name: name
type: text
- label: Phone number
name: phone
type: tel
- label: Building address
name: address
type: text
- label: Project type
name: project
type: textarea
- label: When you want it done
name: timeframe
options:
- This year
- Next year
- No fixed date
type: select
name: Tell us about your building project
record_as: enquiries
- action: /received/warranty-claim
consequence:
- Claim warranty
description: You found a fault in work we did. We’ll come back, look at it, and put it right.
features:
- name: Warranty claim
requirements:
- label: Your name
name: name
type: text
- label: Phone number
name: phone
type: tel
- label: Building address
name: address
type: text
- label: What is the fault?
name: fault
type: textarea
- label: When was it handed over?
name: handed_over
optional: true
type: date
name: Report a fault in our work
record_as: claims
description: What brings you to us today?
name: What are you looking for?
responsible:
contact: ingrid@nordvikbygg.example
name: Ingrid Nordvik
+427
View File
@@ -0,0 +1,427 @@
{
"build-enquiry": {
"pages": [
{
"control": {
"asked": 0,
"next": null,
"which": 0
},
"control_ok": true,
"followup_shown": false,
"lix": 28.436274509803923,
"options": 3,
"overloaded": false,
"page": "/",
"personas": 2,
"required_fields": 0,
"understanding": {
"asked": 0,
"next": null,
"which": 1
}
},
{
"control": {
"asked": 0,
"next": 0,
"which": 0
},
"control_ok": true,
"followup_shown": true,
"lix": 28.457009345794393,
"options": 3,
"overloaded": false,
"page": "/your-building",
"personas": 2,
"required_fields": 4,
"understanding": {
"asked": 2,
"next": 2,
"which": 2
}
}
],
"steps": 2
},
"change-request": {
"pages": [
{
"control": {
"asked": 0,
"next": 0,
"which": 0
},
"control_ok": true,
"followup_shown": true,
"lix": 26.0,
"options": 1,
"overloaded": false,
"page": "/clients/change-request",
"personas": 1,
"required_fields": 3,
"understanding": {
"asked": 1,
"next": 1,
"which": 0
}
}
],
"steps": 1
},
"job-application": {
"pages": [
{
"control": {
"asked": 0,
"next": null,
"which": 0
},
"control_ok": true,
"followup_shown": false,
"lix": 28.436274509803923,
"options": 3,
"overloaded": false,
"page": "/",
"personas": 2,
"required_fields": 0,
"understanding": {
"asked": 0,
"next": null,
"which": 2
}
},
{
"control": {
"asked": 0,
"next": 0,
"which": 0
},
"control_ok": true,
"followup_shown": true,
"lix": 26.605263157894736,
"options": 2,
"overloaded": false,
"page": "/work-with-us",
"personas": 2,
"required_fields": 3,
"understanding": {
"asked": 2,
"next": 2,
"which": 2
}
}
],
"steps": 2
},
"log-phone-enquiry": {
"pages": [
{
"control": {
"asked": 0,
"next": 0,
"which": 0
},
"control_ok": true,
"followup_shown": true,
"lix": 16.333333333333336,
"options": 1,
"overloaded": false,
"page": "/project_managers/log-phone-enquiry",
"personas": 1,
"required_fields": 4,
"understanding": {
"asked": 1,
"next": 1,
"which": 1
}
}
],
"steps": 1
},
"neighbour-complaint": {
"pages": [
{
"control": {
"asked": 0,
"next": 0,
"which": 0
},
"control_ok": true,
"followup_shown": true,
"lix": 27.80952380952381,
"options": 3,
"overloaded": false,
"page": "/",
"personas": 2,
"required_fields": 3,
"understanding": {
"asked": 2,
"next": 2,
"which": 2
}
}
],
"steps": 1
},
"order-materials": {
"pages": [
{
"control": {
"asked": 1,
"next": 0,
"which": 0
},
"control_ok": false,
"followup_shown": true,
"lix": 26.42127659574468,
"options": 1,
"overloaded": false,
"page": "/crew/order-materials",
"personas": 1,
"required_fields": 3,
"understanding": {
"asked": 1,
"next": 1,
"which": 1
}
}
],
"steps": 1
},
"post-job-request": {
"pages": [
{
"control": {
"asked": 0,
"next": 0,
"which": 0
},
"control_ok": true,
"followup_shown": true,
"lix": 31.872131147540983,
"options": 1,
"overloaded": false,
"page": "/project_managers/post-job-request",
"personas": 1,
"required_fields": 4,
"understanding": {
"asked": 1,
"next": 1,
"which": 1
}
}
],
"steps": 1
},
"report-site-issue": {
"pages": [
{
"control": {
"asked": 1,
"next": 0,
"which": 0
},
"control_ok": false,
"followup_shown": true,
"lix": 20.010752688172044,
"options": 1,
"overloaded": false,
"page": "/crew/report-site-issue",
"personas": 2,
"required_fields": 3,
"understanding": {
"asked": 2,
"next": 2,
"which": 2
}
}
],
"steps": 1
},
"safety-round-finding": {
"pages": [
{
"control": {
"asked": 0,
"next": 0,
"which": 0
},
"control_ok": true,
"followup_shown": true,
"lix": 21.604166666666664,
"options": 1,
"overloaded": false,
"page": "/safety_officer/safety-round-finding",
"personas": 1,
"required_fields": 3,
"understanding": {
"asked": 1,
"next": 1,
"which": 1
}
}
],
"steps": 1
},
"subcontractor-application": {
"pages": [
{
"control": {
"asked": 0,
"next": null,
"which": 0
},
"control_ok": true,
"followup_shown": false,
"lix": 28.436274509803923,
"options": 3,
"overloaded": false,
"page": "/",
"personas": 2,
"required_fields": 0,
"understanding": {
"asked": 0,
"next": null,
"which": 1
}
},
{
"control": {
"asked": 0,
"next": 0,
"which": 0
},
"control_ok": true,
"followup_shown": true,
"lix": 28.447289156626507,
"options": 2,
"overloaded": false,
"page": "/work-with-us",
"personas": 2,
"required_fields": 5,
"understanding": {
"asked": 2,
"next": 2,
"which": 2
}
}
],
"steps": 2
},
"submit-bid": {
"pages": [
{
"control": {
"asked": 1,
"next": 0,
"which": 1
},
"control_ok": false,
"followup_shown": true,
"lix": 22.165957446808513,
"options": 1,
"overloaded": false,
"page": "/subcontractors/submit-bid",
"personas": 1,
"required_fields": 3,
"understanding": {
"asked": 1,
"next": 1,
"which": 1
}
}
],
"steps": 1
},
"survey-enquiry": {
"pages": [
{
"control": {
"asked": 0,
"next": null,
"which": 0
},
"control_ok": true,
"followup_shown": false,
"lix": 28.436274509803923,
"options": 3,
"overloaded": false,
"page": "/",
"personas": 2,
"required_fields": 0,
"understanding": {
"asked": 0,
"next": null,
"which": 0
}
},
{
"control": {
"asked": 0,
"next": 0,
"which": 0
},
"control_ok": true,
"followup_shown": true,
"lix": 28.457009345794393,
"options": 3,
"overloaded": false,
"page": "/your-building",
"personas": 2,
"required_fields": 4,
"understanding": {
"asked": 2,
"next": 2,
"which": 2
}
}
],
"steps": 2
},
"warranty-claim": {
"pages": [
{
"control": {
"asked": 0,
"next": null,
"which": 0
},
"control_ok": true,
"followup_shown": false,
"lix": 28.436274509803923,
"options": 3,
"overloaded": false,
"page": "/",
"personas": 2,
"required_fields": 0,
"understanding": {
"asked": 0,
"next": null,
"which": 2
}
},
{
"control": {
"asked": 0,
"next": 0,
"which": 0
},
"control_ok": true,
"followup_shown": true,
"lix": 22.044897959183672,
"options": 3,
"overloaded": false,
"page": "/your-building",
"personas": 2,
"required_fields": 4,
"understanding": {
"asked": 2,
"next": 2,
"which": 2
}
}
],
"steps": 2
}
}
+19
View File
@@ -0,0 +1,19 @@
need LIX which asked next gutted twin says page load
survey-enquiry @/ 28 very easy 0/2 0/2 - 0/0/- ok 3 options, 0 required
survey-enquiry @/your-building 28 very easy 2/2 2/2 2/2 0/0/0 ok 3 options, 4 required
build-enquiry @/ 28 very easy 1/2 0/2 - 0/0/- ok 3 options, 0 required
build-enquiry @/your-building 28 very easy 2/2 2/2 2/2 0/0/0 ok 3 options, 4 required
warranty-claim @/ 28 very easy 2/2 0/2 - 0/0/- ok 3 options, 0 required
warranty-claim @/your-building 22 very easy 2/2 2/2 2/2 0/0/0 ok 3 options, 4 required
neighbour-complaint 28 very easy 2/2 2/2 2/2 0/0/0 ok 3 options, 3 required
subcontractor-application @/ 28 very easy 1/2 0/2 - 0/0/- ok 3 options, 0 required
subcontractor-application @/work-with-us 28 very easy 2/2 2/2 2/2 0/0/0 ok 2 options, 5 required
job-application @/ 28 very easy 2/2 0/2 - 0/0/- ok 3 options, 0 required
job-application @/work-with-us 27 very easy 2/2 2/2 2/2 0/0/0 ok 2 options, 3 required
change-request 26 very easy 0/1 1/1 1/1 0/0/0 ok 1 options, 3 required
log-phone-enquiry 16 very easy 1/1 1/1 1/1 0/0/0 ok 1 options, 4 required
post-job-request 32 easy 1/1 1/1 1/1 0/0/0 ok 1 options, 4 required
submit-bid 22 very easy 1/1 1/1 1/1 1/1/0 FAILED: which, asked 1 options, 3 required
report-site-issue 20 very easy 2/2 2/2 2/2 0/1/0 FAILED: asked 1 options, 3 required
order-materials 26 very easy 1/1 1/1 1/1 0/1/0 FAILED: asked 1 options, 3 required
safety-round-finding 22 very easy 1/1 1/1 1/1 0/0/0 ok 1 options, 3 required
@@ -0,0 +1,5 @@
MISROUTE: cracked-render@/your-building: picked "Report a building problem" (0.95), the need is met by ["Report a fault in our work"]
MISROUTE: electrician-firm@/: picked "Your building project" (0.95), the need is met by ["Work with Nordvik Bygg"]
MISROUTE: electrician-firm@/work-with-us: picked "Find a job with us" (0.95), the need is met by ["Apply to work with us"]
MISROUTE: scaffolder@/work-with-us: picked "Find a job with us" (0.95), the need is met by ["Apply to work with us"]
wording: 18/22 routed right (82%)
@@ -0,0 +1,8 @@
MISROUTE: housing-board-damp@/: picked "Neighbour complaint" (0.95), the need is met by ["Your building project"]
MISROUTE: leaking-bathroom@/: picked "Neighbour complaint" (0.95), the need is met by ["Your building project"]
MISROUTE: electrician-firm@/: picked "Your building project" (0.95), the need is met by ["Work with Nordvik Bygg"]
MISROUTE: electrician-firm@/work-with-us: picked "Find a job with us" (0.95), the need is met by ["Apply to work with us"]
MISROUTE: scaffolder@/work-with-us: picked "Find a job with us" (0.95), the need is met by ["Apply to work with us"]
MISROUTE: carpenter-jobseeker@/work-with-us: picked "Apply to work with us" (0.95), the need is met by ["Find a job with us"]
MISROUTE: apprentice@/work-with-us: picked "Apply to work with us" (0.95), the need is met by ["Find a job with us"]
wording: 15/22 routed right (68%)
@@ -0,0 +1,2 @@
lang: en
title: Nordvik Bygg
@@ -0,0 +1,22 @@
{"id":"housing-board-damp@/","persona":"housing-board-damp","need":"survey-enquiry","page":"/","state":{"body":"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."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"What brings you to Nordvik Bygg today?\". Which alternative do they choose?","criteria":{"Neighbour complaint":"Let us know about noise, dust, or access problems from a building site near you.","Work with Nordvik Bygg":"Apply to work with us as a subcontractor or find a job as a carpenter or apprentice.","Your building project":"Report a problem, get a survey, or start a new build project."}}},"expect":["Your building project"]}
{"id":"housing-board-damp@/your-building","persona":"housing-board-damp","need":"survey-enquiry","page":"/your-building","state":{"body":"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."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"What are you looking for?\". Which alternative do they choose?","criteria":{"Report a building problem":"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.","Report a fault in our work":"You found a fault in work we did. We’ll come back, look at it, and put it right.","Tell us about your building project":"You know what you want changed or built. We’ll draw it, handle the permit, and price it for you."}}},"expect":["Report a building problem","Tell us about your building project"]}
{"id":"buyer-before-purchase@/","persona":"buyer-before-purchase","need":"survey-enquiry","page":"/","state":{"body":"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."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"What brings you to Nordvik Bygg today?\". Which alternative do they choose?","criteria":{"Neighbour complaint":"Let us know about noise, dust, or access problems from a building site near you.","Work with Nordvik Bygg":"Apply to work with us as a subcontractor or find a job as a carpenter or apprentice.","Your building project":"Report a problem, get a survey, or start a new build project."}}},"expect":["Your building project"]}
{"id":"buyer-before-purchase@/your-building","persona":"buyer-before-purchase","need":"survey-enquiry","page":"/your-building","state":{"body":"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."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"What are you looking for?\". Which alternative do they choose?","criteria":{"Report a building problem":"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.","Report a fault in our work":"You found a fault in work we did. We’ll come back, look at it, and put it right.","Tell us about your building project":"You know what you want changed or built. We’ll draw it, handle the permit, and price it for you."}}},"expect":["Report a building problem","Tell us about your building project"]}
{"id":"attic-conversion@/","persona":"attic-conversion","need":"build-enquiry","page":"/","state":{"body":"We want to turn our attic into two bedrooms and a bathroom. We need drawings and someone who handles the application to the municipality."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"What brings you to Nordvik Bygg today?\". Which alternative do they choose?","criteria":{"Neighbour complaint":"Let us know about noise, dust, or access problems from a building site near you.","Work with Nordvik Bygg":"Apply to work with us as a subcontractor or find a job as a carpenter or apprentice.","Your building project":"Report a problem, get a survey, or start a new build project."}}},"expect":["Your building project"]}
{"id":"attic-conversion@/your-building","persona":"attic-conversion","need":"build-enquiry","page":"/your-building","state":{"body":"We want to turn our attic into two bedrooms and a bathroom. We need drawings and someone who handles the application to the municipality."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"What are you looking for?\". Which alternative do they choose?","criteria":{"Report a building problem":"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.","Report a fault in our work":"You found a fault in work we did. We’ll come back, look at it, and put it right.","Tell us about your building project":"You know what you want changed or built. We’ll draw it, handle the permit, and price it for you."}}},"expect":["Report a building problem","Tell us about your building project"]}
{"id":"shop-to-flat@/","persona":"shop-to-flat","need":"build-enquiry","page":"/","state":{"body":"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?"},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"What brings you to Nordvik Bygg today?\". Which alternative do they choose?","criteria":{"Neighbour complaint":"Let us know about noise, dust, or access problems from a building site near you.","Work with Nordvik Bygg":"Apply to work with us as a subcontractor or find a job as a carpenter or apprentice.","Your building project":"Report a problem, get a survey, or start a new build project."}}},"expect":["Your building project"]}
{"id":"shop-to-flat@/your-building","persona":"shop-to-flat","need":"build-enquiry","page":"/your-building","state":{"body":"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?"},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"What are you looking for?\". Which alternative do they choose?","criteria":{"Report a building problem":"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.","Report a fault in our work":"You found a fault in work we did. We’ll come back, look at it, and put it right.","Tell us about your building project":"You know what you want changed or built. We’ll draw it, handle the permit, and price it for you."}}},"expect":["Report a building problem","Tell us about your building project"]}
{"id":"leaking-bathroom@/","persona":"leaking-bathroom","need":"warranty-claim","page":"/","state":{"body":"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."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"What brings you to Nordvik Bygg today?\". Which alternative do they choose?","criteria":{"Neighbour complaint":"Let us know about noise, dust, or access problems from a building site near you.","Work with Nordvik Bygg":"Apply to work with us as a subcontractor or find a job as a carpenter or apprentice.","Your building project":"Report a problem, get a survey, or start a new build project."}}},"expect":["Your building project"]}
{"id":"leaking-bathroom@/your-building","persona":"leaking-bathroom","need":"warranty-claim","page":"/your-building","state":{"body":"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."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"What are you looking for?\". Which alternative do they choose?","criteria":{"Report a building problem":"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.","Report a fault in our work":"You found a fault in work we did. We’ll come back, look at it, and put it right.","Tell us about your building project":"You know what you want changed or built. We’ll draw it, handle the permit, and price it for you."}}},"expect":["Report a fault in our work"]}
{"id":"cracked-render@/","persona":"cracked-render","need":"warranty-claim","page":"/","state":{"body":"The render you put on our gable wall last summer has cracked right across. That can't be right after one winter."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"What brings you to Nordvik Bygg today?\". Which alternative do they choose?","criteria":{"Neighbour complaint":"Let us know about noise, dust, or access problems from a building site near you.","Work with Nordvik Bygg":"Apply to work with us as a subcontractor or find a job as a carpenter or apprentice.","Your building project":"Report a problem, get a survey, or start a new build project."}}},"expect":["Your building project"]}
{"id":"cracked-render@/your-building","persona":"cracked-render","need":"warranty-claim","page":"/your-building","state":{"body":"The render you put on our gable wall last summer has cracked right across. That can't be right after one winter."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"What are you looking for?\". Which alternative do they choose?","criteria":{"Report a building problem":"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.","Report a fault in our work":"You found a fault in work we did. We’ll come back, look at it, and put it right.","Tell us about your building project":"You know what you want changed or built. We’ll draw it, handle the permit, and price it for you."}}},"expect":["Report a fault in our work"]}
{"id":"noisy-mornings@/","persona":"noisy-mornings","need":"neighbour-complaint","page":"/","state":{"body":"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?"},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"What brings you to Nordvik Bygg today?\". Which alternative do they choose?","criteria":{"Neighbour complaint":"Let us know about noise, dust, or access problems from a building site near you.","Work with Nordvik Bygg":"Apply to work with us as a subcontractor or find a job as a carpenter or apprentice.","Your building project":"Report a problem, get a survey, or start a new build project."}}},"expect":["Neighbour complaint"]}
{"id":"blocked-driveway@/","persona":"blocked-driveway","need":"neighbour-complaint","page":"/","state":{"body":"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."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"What brings you to Nordvik Bygg today?\". Which alternative do they choose?","criteria":{"Neighbour complaint":"Let us know about noise, dust, or access problems from a building site near you.","Work with Nordvik Bygg":"Apply to work with us as a subcontractor or find a job as a carpenter or apprentice.","Your building project":"Report a problem, get a survey, or start a new build project."}}},"expect":["Neighbour complaint"]}
{"id":"electrician-firm@/","persona":"electrician-firm","need":"subcontractor-application","page":"/","state":{"body":"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."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"What brings you to Nordvik Bygg today?\". Which alternative do they choose?","criteria":{"Neighbour complaint":"Let us know about noise, dust, or access problems from a building site near you.","Work with Nordvik Bygg":"Apply to work with us as a subcontractor or find a job as a carpenter or apprentice.","Your building project":"Report a problem, get a survey, or start a new build project."}}},"expect":["Work with Nordvik Bygg"]}
{"id":"electrician-firm@/work-with-us","persona":"electrician-firm","need":"subcontractor-application","page":"/work-with-us","state":{"body":"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."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Do you want to work with us, or do you need our help with a building?\". Which alternative do they choose?","criteria":{"Apply to work with us":"Send us your details so we can check if you are a fit for our projects.","Find a job with us":"Tell us who you are and what you can do. No letter needed."}}},"expect":["Apply to work with us"]}
{"id":"scaffolder@/","persona":"scaffolder","need":"subcontractor-application","page":"/","state":{"body":"I run a scaffolding company. How do I get to do jobs for you?"},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"What brings you to Nordvik Bygg today?\". Which alternative do they choose?","criteria":{"Neighbour complaint":"Let us know about noise, dust, or access problems from a building site near you.","Work with Nordvik Bygg":"Apply to work with us as a subcontractor or find a job as a carpenter or apprentice.","Your building project":"Report a problem, get a survey, or start a new build project."}}},"expect":["Work with Nordvik Bygg"]}
{"id":"scaffolder@/work-with-us","persona":"scaffolder","need":"subcontractor-application","page":"/work-with-us","state":{"body":"I run a scaffolding company. How do I get to do jobs for you?"},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Do you want to work with us, or do you need our help with a building?\". Which alternative do they choose?","criteria":{"Apply to work with us":"Send us your details so we can check if you are a fit for our projects.","Find a job with us":"Tell us who you are and what you can do. No letter needed."}}},"expect":["Apply to work with us"]}
{"id":"carpenter-jobseeker@/","persona":"carpenter-jobseeker","need":"job-application","page":"/","state":{"body":"I'm a certified carpenter with eight years on rehabilitation jobs. Are you hiring?"},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"What brings you to Nordvik Bygg today?\". Which alternative do they choose?","criteria":{"Neighbour complaint":"Let us know about noise, dust, or access problems from a building site near you.","Work with Nordvik Bygg":"Apply to work with us as a subcontractor or find a job as a carpenter or apprentice.","Your building project":"Report a problem, get a survey, or start a new build project."}}},"expect":["Work with Nordvik Bygg"]}
{"id":"carpenter-jobseeker@/work-with-us","persona":"carpenter-jobseeker","need":"job-application","page":"/work-with-us","state":{"body":"I'm a certified carpenter with eight years on rehabilitation jobs. Are you hiring?"},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Do you want to work with us, or do you need our help with a building?\". Which alternative do they choose?","criteria":{"Apply to work with us":"Send us your details so we can check if you are a fit for our projects.","Find a job with us":"Tell us who you are and what you can do. No letter needed."}}},"expect":["Find a job with us"]}
{"id":"apprentice@/","persona":"apprentice","need":"job-application","page":"/","state":{"body":"I finish vocational school this spring and need an apprenticeship as a bricklayer."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"What brings you to Nordvik Bygg today?\". Which alternative do they choose?","criteria":{"Neighbour complaint":"Let us know about noise, dust, or access problems from a building site near you.","Work with Nordvik Bygg":"Apply to work with us as a subcontractor or find a job as a carpenter or apprentice.","Your building project":"Report a problem, get a survey, or start a new build project."}}},"expect":["Work with Nordvik Bygg"]}
{"id":"apprentice@/work-with-us","persona":"apprentice","need":"job-application","page":"/work-with-us","state":{"body":"I finish vocational school this spring and need an apprenticeship as a bricklayer."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Do you want to work with us, or do you need our help with a building?\". Which alternative do they choose?","criteria":{"Apply to work with us":"Send us your details so we can check if you are a fit for our projects.","Find a job with us":"Tell us who you are and what you can do. No letter needed."}}},"expect":["Find a job with us"]}
@@ -0,0 +1,22 @@
{"id":"housing-board-damp@/","persona":"housing-board-damp","need":"survey-enquiry","page":"/","state":{"body":"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."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"What brings you to Nordvik Bygg today?\". Which alternative do they choose?","criteria":{"Neighbour complaint":"Neighbour complaint","Work with Nordvik Bygg":"Work with Nordvik Bygg","Your building project":"Your building project"}}},"expect":["Your building project"]}
{"id":"housing-board-damp@/your-building","persona":"housing-board-damp","need":"survey-enquiry","page":"/your-building","state":{"body":"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."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"What are you looking for?\". Which alternative do they choose?","criteria":{"Report a building problem":"Report a building problem","Report a fault in our work":"Report a fault in our work","Tell us about your building project":"Tell us about your building project"}}},"expect":["Report a building problem","Tell us about your building project"]}
{"id":"buyer-before-purchase@/","persona":"buyer-before-purchase","need":"survey-enquiry","page":"/","state":{"body":"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."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"What brings you to Nordvik Bygg today?\". Which alternative do they choose?","criteria":{"Neighbour complaint":"Neighbour complaint","Work with Nordvik Bygg":"Work with Nordvik Bygg","Your building project":"Your building project"}}},"expect":["Your building project"]}
{"id":"buyer-before-purchase@/your-building","persona":"buyer-before-purchase","need":"survey-enquiry","page":"/your-building","state":{"body":"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."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"What are you looking for?\". Which alternative do they choose?","criteria":{"Report a building problem":"Report a building problem","Report a fault in our work":"Report a fault in our work","Tell us about your building project":"Tell us about your building project"}}},"expect":["Report a building problem","Tell us about your building project"]}
{"id":"attic-conversion@/","persona":"attic-conversion","need":"build-enquiry","page":"/","state":{"body":"We want to turn our attic into two bedrooms and a bathroom. We need drawings and someone who handles the application to the municipality."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"What brings you to Nordvik Bygg today?\". Which alternative do they choose?","criteria":{"Neighbour complaint":"Neighbour complaint","Work with Nordvik Bygg":"Work with Nordvik Bygg","Your building project":"Your building project"}}},"expect":["Your building project"]}
{"id":"attic-conversion@/your-building","persona":"attic-conversion","need":"build-enquiry","page":"/your-building","state":{"body":"We want to turn our attic into two bedrooms and a bathroom. We need drawings and someone who handles the application to the municipality."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"What are you looking for?\". Which alternative do they choose?","criteria":{"Report a building problem":"Report a building problem","Report a fault in our work":"Report a fault in our work","Tell us about your building project":"Tell us about your building project"}}},"expect":["Report a building problem","Tell us about your building project"]}
{"id":"shop-to-flat@/","persona":"shop-to-flat","need":"build-enquiry","page":"/","state":{"body":"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?"},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"What brings you to Nordvik Bygg today?\". Which alternative do they choose?","criteria":{"Neighbour complaint":"Neighbour complaint","Work with Nordvik Bygg":"Work with Nordvik Bygg","Your building project":"Your building project"}}},"expect":["Your building project"]}
{"id":"shop-to-flat@/your-building","persona":"shop-to-flat","need":"build-enquiry","page":"/your-building","state":{"body":"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?"},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"What are you looking for?\". Which alternative do they choose?","criteria":{"Report a building problem":"Report a building problem","Report a fault in our work":"Report a fault in our work","Tell us about your building project":"Tell us about your building project"}}},"expect":["Report a building problem","Tell us about your building project"]}
{"id":"leaking-bathroom@/","persona":"leaking-bathroom","need":"warranty-claim","page":"/","state":{"body":"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."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"What brings you to Nordvik Bygg today?\". Which alternative do they choose?","criteria":{"Neighbour complaint":"Neighbour complaint","Work with Nordvik Bygg":"Work with Nordvik Bygg","Your building project":"Your building project"}}},"expect":["Your building project"]}
{"id":"leaking-bathroom@/your-building","persona":"leaking-bathroom","need":"warranty-claim","page":"/your-building","state":{"body":"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."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"What are you looking for?\". Which alternative do they choose?","criteria":{"Report a building problem":"Report a building problem","Report a fault in our work":"Report a fault in our work","Tell us about your building project":"Tell us about your building project"}}},"expect":["Report a fault in our work"]}
{"id":"cracked-render@/","persona":"cracked-render","need":"warranty-claim","page":"/","state":{"body":"The render you put on our gable wall last summer has cracked right across. That can't be right after one winter."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"What brings you to Nordvik Bygg today?\". Which alternative do they choose?","criteria":{"Neighbour complaint":"Neighbour complaint","Work with Nordvik Bygg":"Work with Nordvik Bygg","Your building project":"Your building project"}}},"expect":["Your building project"]}
{"id":"cracked-render@/your-building","persona":"cracked-render","need":"warranty-claim","page":"/your-building","state":{"body":"The render you put on our gable wall last summer has cracked right across. That can't be right after one winter."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"What are you looking for?\". Which alternative do they choose?","criteria":{"Report a building problem":"Report a building problem","Report a fault in our work":"Report a fault in our work","Tell us about your building project":"Tell us about your building project"}}},"expect":["Report a fault in our work"]}
{"id":"noisy-mornings@/","persona":"noisy-mornings","need":"neighbour-complaint","page":"/","state":{"body":"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?"},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"What brings you to Nordvik Bygg today?\". Which alternative do they choose?","criteria":{"Neighbour complaint":"Neighbour complaint","Work with Nordvik Bygg":"Work with Nordvik Bygg","Your building project":"Your building project"}}},"expect":["Neighbour complaint"]}
{"id":"blocked-driveway@/","persona":"blocked-driveway","need":"neighbour-complaint","page":"/","state":{"body":"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."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"What brings you to Nordvik Bygg today?\". Which alternative do they choose?","criteria":{"Neighbour complaint":"Neighbour complaint","Work with Nordvik Bygg":"Work with Nordvik Bygg","Your building project":"Your building project"}}},"expect":["Neighbour complaint"]}
{"id":"electrician-firm@/","persona":"electrician-firm","need":"subcontractor-application","page":"/","state":{"body":"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."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"What brings you to Nordvik Bygg today?\". Which alternative do they choose?","criteria":{"Neighbour complaint":"Neighbour complaint","Work with Nordvik Bygg":"Work with Nordvik Bygg","Your building project":"Your building project"}}},"expect":["Work with Nordvik Bygg"]}
{"id":"electrician-firm@/work-with-us","persona":"electrician-firm","need":"subcontractor-application","page":"/work-with-us","state":{"body":"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."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Do you want to work with us, or do you need our help with a building?\". Which alternative do they choose?","criteria":{"Apply to work with us":"Apply to work with us","Find a job with us":"Find a job with us"}}},"expect":["Apply to work with us"]}
{"id":"scaffolder@/","persona":"scaffolder","need":"subcontractor-application","page":"/","state":{"body":"I run a scaffolding company. How do I get to do jobs for you?"},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"What brings you to Nordvik Bygg today?\". Which alternative do they choose?","criteria":{"Neighbour complaint":"Neighbour complaint","Work with Nordvik Bygg":"Work with Nordvik Bygg","Your building project":"Your building project"}}},"expect":["Work with Nordvik Bygg"]}
{"id":"scaffolder@/work-with-us","persona":"scaffolder","need":"subcontractor-application","page":"/work-with-us","state":{"body":"I run a scaffolding company. How do I get to do jobs for you?"},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Do you want to work with us, or do you need our help with a building?\". Which alternative do they choose?","criteria":{"Apply to work with us":"Apply to work with us","Find a job with us":"Find a job with us"}}},"expect":["Apply to work with us"]}
{"id":"carpenter-jobseeker@/","persona":"carpenter-jobseeker","need":"job-application","page":"/","state":{"body":"I'm a certified carpenter with eight years on rehabilitation jobs. Are you hiring?"},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"What brings you to Nordvik Bygg today?\". Which alternative do they choose?","criteria":{"Neighbour complaint":"Neighbour complaint","Work with Nordvik Bygg":"Work with Nordvik Bygg","Your building project":"Your building project"}}},"expect":["Work with Nordvik Bygg"]}
{"id":"carpenter-jobseeker@/work-with-us","persona":"carpenter-jobseeker","need":"job-application","page":"/work-with-us","state":{"body":"I'm a certified carpenter with eight years on rehabilitation jobs. Are you hiring?"},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Do you want to work with us, or do you need our help with a building?\". Which alternative do they choose?","criteria":{"Apply to work with us":"Apply to work with us","Find a job with us":"Find a job with us"}}},"expect":["Find a job with us"]}
{"id":"apprentice@/","persona":"apprentice","need":"job-application","page":"/","state":{"body":"I finish vocational school this spring and need an apprenticeship as a bricklayer."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"What brings you to Nordvik Bygg today?\". Which alternative do they choose?","criteria":{"Neighbour complaint":"Neighbour complaint","Work with Nordvik Bygg":"Work with Nordvik Bygg","Your building project":"Your building project"}}},"expect":["Work with Nordvik Bygg"]}
{"id":"apprentice@/work-with-us","persona":"apprentice","need":"job-application","page":"/work-with-us","state":{"body":"I finish vocational school this spring and need an apprenticeship as a bricklayer."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Do you want to work with us, or do you need our help with a building?\". Which alternative do they choose?","criteria":{"Apply to work with us":"Apply to work with us","Find a job with us":"Find a job with us"}}},"expect":["Find a job with us"]}
+41
View File
@@ -0,0 +1,41 @@
# The contractor intake read into a plan by a local model
`portal-trainer plan --intake intakes/contractor.yaml --personas
sectors/construction/needs.yaml`, nemotron-3.5-lightning:30b-a3b on
ergo's Ollama, temperature 0.2. One round, 41 seconds: the YAML
parsed and passed every check `build` makes, first try.
That is the mechanical result. What a person reading `plan.yaml` next
to the intake finds is what the check cannot:
- **The crew's report is public.** "The crew, ours and the
subcontractors' people, are the ones on site who report things" is
a role inside the business, so `site_incident` wants `enters_as:
crew`. The model gave it no `enters_as` and put it on the front
door.
- **A stage was dropped again.** "Often papers are missing and we have
to ask again" is an `awaiting_papers` stage, skippable. The model's
subcontractor machine is `open -> approved | rejected`. This is the
same omission the Sonnet-class model made on enquiries in the first
generated run, from a different model on a different need.
- **The need nobody asked for is missing.** "Enquiries arrive by phone,
email and text and get lost" is a project manager logging a call,
with `enters_as: project_managers`. The reference says the
"what slows us down" answer usually names one; the model wrote none.
- **Two needs with one machine land in two buckets.** `enquiry` and
`permit_application` have identical stages and the same handler and
should share `enquiries`; as written the project managers get two
lists of the same kind of case.
- **Small things.** `email` has no `type: email`. The job application
tolerates 6 fields for people the intake says are asking "if we are
hiring"; 3 is nearer. Group ids are singular (`project_manager`).
None of the ten attached personas name a need in this plan, because
the sector file's ids are its own; `plan` listed all ten and left the
mapping to the reader, which is the intended shape.
What this run says: the step works as a draft for a person, and the
person is not optional. The three structural misses above are all
things the intake states in one sentence and the model read past. A
check for the third is possible (an intake with `what_slows_us_down`
and no `enters_as` need is suspicious); the first two need a reader.
+144
View File
@@ -0,0 +1,144 @@
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 }
# Held out from every model that writes words.
personas:
- id: housing-board-damp
need: win-survey-work
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: win-survey-work
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: win-design-work
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: win-design-work
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: vet-subcontractor
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: vet-subcontractor
text: |
I run a scaffolding company. How do I get to do jobs for you?
- id: carpenter-jobseeker
need: hire-crew
text: |
I'm a certified carpenter with eight years on rehabilitation jobs. Are you hiring?
- id: apprentice
need: hire-crew
text: |
I finish vocational school this spring and need an apprenticeship as a bricklayer.
- id: loose-railing
need: report-deviation
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-deviation
text: |
The bathroom membrane delivered today is not the one in the specification. We stopped work on it.
+101
View File
@@ -0,0 +1,101 @@
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 }
+31
View File
@@ -0,0 +1,31 @@
# A football club, in Norwegian, behind two doors
`plans/fotballklubb.yaml`: five needs, two doors (foresatte, bidra),
roles overlapping on one aggregate (the coach approves, the treasurer
sees payment). Built with nemotron-3.5-lightning:30b-a3b writing the
words, all 12 pages worded, verifier green by construction. Visitor:
qwen3:8b, one task per call. Nine held-out personas, sixteen tasks.
The same plan built with Claude Sonnet is in
`../fotballklubb-claude-2026-09-22/`, with the comparison.
| Visitor could read | Routed right |
|---|---|
| Headings and descriptions | 14 of 16 |
| Headings only | 11 of 16 |
- **The front door fails on headings alone.** Three of five parents
chose "Vil du bidra til klubben?" over "Er det på tide å melde
inn?". "Melde inn" is the club's word for enrolment; a parent who
just moved to the village asks "how does he get on a team?" and
reads "contribute to the club" as the general door. The
descriptions rescue it (14 of 16), which is the definition of a
heading that has failed.
- The laid-off parent asking whether their daughter can keep playing
without paying chose "Meld deg på laget" on the parents' page.
"Hjelp med avgift" is the club's side of it; the parent's side is
"can she keep playing".
- The driver with the big car chose "Støtt klubben i bygda"
(sponsor) over "Bli brukt der det trengs". Offering a car is
support; the volunteer/sponsor split is the club's, not theirs.
`rate.txt` is the page-by-page rate; see `rate.json`.

Some files were not shown because too many files have changed in this diff Show More