diff --git a/README.md b/README.md index 1179226..6372817 100644 --- a/README.md +++ b/README.md @@ -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/`, 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 ` 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 | diff --git a/engines/claude.sh b/engines/claude.sh new file mode 100755 index 0000000..d053a70 --- /dev/null +++ b/engines/claude.sh @@ -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 "" diff --git a/intakes/fotballklubb.yaml b/intakes/fotballklubb.yaml new file mode 100644 index 0000000..0130a04 --- /dev/null +++ b/intakes/fotballklubb.yaml @@ -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. diff --git a/intakes/hire.yaml b/intakes/hire.yaml new file mode 100644 index 0000000..ad3382d --- /dev/null +++ b/intakes/hire.yaml @@ -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. diff --git a/intakes/physio.yaml b/intakes/physio.yaml new file mode 100644 index 0000000..9cb02e4 --- /dev/null +++ b/intakes/physio.yaml @@ -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. diff --git a/intakes/tomtervel.yaml b/intakes/tomtervel.yaml new file mode 100644 index 0000000..4c2b9d8 --- /dev/null +++ b/intakes/tomtervel.yaml @@ -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. diff --git a/plans/contractor-full.yaml b/plans/contractor-full.yaml index c2cd558..ec5f279 100644 --- a/plans/contractor-full.yaml +++ b/plans/contractor-full.yaml @@ -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 } diff --git a/plans/contractor.yaml b/plans/contractor.yaml index e89f76c..ca2ccc3 100644 --- a/plans/contractor.yaml +++ b/plans/contractor.yaml @@ -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 } diff --git a/plans/fotballklubb.yaml b/plans/fotballklubb.yaml new file mode 100644 index 0000000..95591ac --- /dev/null +++ b/plans/fotballklubb.yaml @@ -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." } diff --git a/plans/hire.yaml b/plans/hire.yaml new file mode 100644 index 0000000..9373d7e --- /dev/null +++ b/plans/hire.yaml @@ -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." } diff --git a/plans/physio.yaml b/plans/physio.yaml new file mode 100644 index 0000000..79e36a8 --- /dev/null +++ b/plans/physio.yaml @@ -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." } diff --git a/plans/tomtervel.yaml b/plans/tomtervel.yaml new file mode 100644 index 0000000..cf15aeb --- /dev/null +++ b/plans/tomtervel.yaml @@ -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." } diff --git a/runs/contractor-build-2026-09-21/rescore-2026-09-22/README.md b/runs/contractor-build-2026-09-21/rescore-2026-09-22/README.md new file mode 100644 index 0000000..1a13539 --- /dev/null +++ b/runs/contractor-build-2026-09-21/rescore-2026-09-22/README.md @@ -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. diff --git a/runs/contractor-build-2026-09-21/rescore-2026-09-22/answers-full.jsonl b/runs/contractor-build-2026-09-21/rescore-2026-09-22/answers-full.jsonl new file mode 100644 index 0000000..ffd7eef --- /dev/null +++ b/runs/contractor-build-2026-09-21/rescore-2026-09-22/answers-full.jsonl @@ -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@/"} diff --git a/runs/contractor-build-2026-09-21/rescore-2026-09-22/answers-skim.jsonl b/runs/contractor-build-2026-09-21/rescore-2026-09-22/answers-skim.jsonl new file mode 100644 index 0000000..3b0a8ef --- /dev/null +++ b/runs/contractor-build-2026-09-21/rescore-2026-09-22/answers-skim.jsonl @@ -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@/"} diff --git a/runs/contractor-build-2026-09-21/rescore-2026-09-22/rate.json b/runs/contractor-build-2026-09-21/rescore-2026-09-22/rate.json new file mode 100644 index 0000000..ff20a26 --- /dev/null +++ b/runs/contractor-build-2026-09-21/rescore-2026-09-22/rate.json @@ -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 + } + } +} \ No newline at end of file diff --git a/runs/contractor-full-2026-09-22/README.md b/runs/contractor-full-2026-09-22/README.md new file mode 100644 index 0000000..15fc050 --- /dev/null +++ b/runs/contractor-full-2026-09-22/README.md @@ -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`. diff --git a/runs/contractor-full-2026-09-22/aggregates.yaml b/runs/contractor-full-2026-09-22/aggregates.yaml new file mode 100644 index 0000000..35d39d4 --- /dev/null +++ b/runs/contractor-full-2026-09-22/aggregates.yaml @@ -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 diff --git a/runs/contractor-full-2026-09-22/answers-full.jsonl b/runs/contractor-full-2026-09-22/answers-full.jsonl new file mode 100644 index 0000000..6974f0d --- /dev/null +++ b/runs/contractor-full-2026-09-22/answers-full.jsonl @@ -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"} diff --git a/runs/contractor-full-2026-09-22/answers-skim.jsonl b/runs/contractor-full-2026-09-22/answers-skim.jsonl new file mode 100644 index 0000000..834fe95 --- /dev/null +++ b/runs/contractor-full-2026-09-22/answers-skim.jsonl @@ -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"} diff --git a/runs/contractor-full-2026-09-22/build.log b/runs/contractor-full-2026-09-22/build.log new file mode 100644 index 0000000..b0683bc --- /dev/null +++ b/runs/contractor-full-2026-09-22/build.log @@ -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) diff --git a/runs/contractor-full-2026-09-22/llm/01-questions_clients_change-request-sent.yaml.md b/runs/contractor-full-2026-09-22/llm/01-questions_clients_change-request-sent.yaml.md new file mode 100644 index 0000000..18ba537 --- /dev/null +++ b/runs/contractor-full-2026-09-22/llm/01-questions_clients_change-request-sent.yaml.md @@ -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 +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": "", + "description": "", + "next_description": "", + "next_heading": "", + "question": "" +} + +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?" +} diff --git a/runs/contractor-full-2026-09-22/llm/02-questions_clients_change-request.yaml.md b/runs/contractor-full-2026-09-22/llm/02-questions_clients_change-request.yaml.md new file mode 100644 index 0000000..87cb925 --- /dev/null +++ b/runs/contractor-full-2026-09-22/llm/02-questions_clients_change-request.yaml.md @@ -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 +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": "", + "description": "", + "form_title": "", + "heading": "", + "labels": { + "change": "", + "email": "", + "job_address": "", + "needed_by": "" + }, + "page_description": "", + "question": "" +} + +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?" +} diff --git a/runs/contractor-full-2026-09-22/llm/03-questions_clients_index.yaml.md b/runs/contractor-full-2026-09-22/llm/03-questions_clients_index.yaml.md new file mode 100644 index 0000000..cc2c98d --- /dev/null +++ b/runs/contractor-full-2026-09-22/llm/03-questions_clients_index.yaml.md @@ -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 +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": "", + "description": "", + "links": { + "change-request": { + "button": "", + "description": "", + "heading": "" + } + }, + "question": "" +} + +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?" +} diff --git a/runs/contractor-full-2026-09-22/llm/04-questions_crew_index.yaml.md b/runs/contractor-full-2026-09-22/llm/04-questions_crew_index.yaml.md new file mode 100644 index 0000000..c48be3a --- /dev/null +++ b/runs/contractor-full-2026-09-22/llm/04-questions_crew_index.yaml.md @@ -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 +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": "", + "heading": "", + "moves": { + "ordered->delivered": "delivered>" + } + } + }, + "confirm": "", + "description": "", + "links": { + "order-materials": { + "button": "", + "description": "", + "heading": "" + }, + "report-site-issue": { + "button": "", + "description": "", + "heading": "" + } + }, + "question": "" +} + +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?" +} diff --git a/runs/contractor-full-2026-09-22/llm/05-questions_crew_order-materials-sent.yaml.md b/runs/contractor-full-2026-09-22/llm/05-questions_crew_order-materials-sent.yaml.md new file mode 100644 index 0000000..183a3ee --- /dev/null +++ b/runs/contractor-full-2026-09-22/llm/05-questions_crew_order-materials-sent.yaml.md @@ -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 +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": "", + "description": "", + "next_description": "", + "next_heading": "", + "question": "" +} + +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?" +} diff --git a/runs/contractor-full-2026-09-22/llm/06-questions_crew_order-materials.yaml.md b/runs/contractor-full-2026-09-22/llm/06-questions_crew_order-materials.yaml.md new file mode 100644 index 0000000..3b9136a --- /dev/null +++ b/runs/contractor-full-2026-09-22/llm/06-questions_crew_order-materials.yaml.md @@ -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 +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": "", + "description": "", + "form_title": "", + "heading": "", + "labels": { + "needed_by": "", + "site_address": "", + "what": "" + }, + "page_description": "", + "question": "" +} + +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?" +} diff --git a/runs/contractor-full-2026-09-22/llm/07-questions_crew_report-site-issue-sent.yaml.md b/runs/contractor-full-2026-09-22/llm/07-questions_crew_report-site-issue-sent.yaml.md new file mode 100644 index 0000000..e2a3432 --- /dev/null +++ b/runs/contractor-full-2026-09-22/llm/07-questions_crew_report-site-issue-sent.yaml.md @@ -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 +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": "", + "description": "", + "next_description": "", + "next_heading": "", + "question": "" +} + +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?" +} diff --git a/runs/contractor-full-2026-09-22/llm/08-questions_crew_report-site-issue.yaml.md b/runs/contractor-full-2026-09-22/llm/08-questions_crew_report-site-issue.yaml.md new file mode 100644 index 0000000..3a23134 --- /dev/null +++ b/runs/contractor-full-2026-09-22/llm/08-questions_crew_report-site-issue.yaml.md @@ -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 +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": "", + "description": "", + "form_title": "", + "heading": "", + "labels": { + "kind": "", + "what_happened": "", + "where": "" + }, + "page_description": "", + "question": "" +} + +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?" +} diff --git a/runs/contractor-full-2026-09-22/llm/09-questions_decide_change-request.yaml.md b/runs/contractor-full-2026-09-22/llm/09-questions_decide_change-request.yaml.md new file mode 100644 index 0000000..7f17bb8 --- /dev/null +++ b/runs/contractor-full-2026-09-22/llm/09-questions_decide_change-request.yaml.md @@ -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 +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": "", + "moves": { + "approved": { + "button": "", + "description": "", + "heading": "" + }, + "declined": { + "button": "", + "description": "", + "heading": "" + } + }, + "question": "" +} + +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?" +} diff --git a/runs/contractor-full-2026-09-22/llm/10-questions_index.yaml.md b/runs/contractor-full-2026-09-22/llm/10-questions_index.yaml.md new file mode 100644 index 0000000..ecfab44 --- /dev/null +++ b/runs/contractor-full-2026-09-22/llm/10-questions_index.yaml.md @@ -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 +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": "", + "doors": { + "work-with-us": { + "button": "", + "description": "", + "heading": "" + }, + "your-building": { + "button": "", + "description": "", + "heading": "" + } + }, + "needs": { + "neighbour-complaint": { + "button": "", + "description": "", + "form_title": "", + "heading": "", + "labels": { + "reach_me_on": "", + "site_address": "", + "what_is_wrong": "" + } + } + }, + "question": "" +} + +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?" +} diff --git a/runs/contractor-full-2026-09-22/llm/11-questions_project_managers_index.yaml.md b/runs/contractor-full-2026-09-22/llm/11-questions_project_managers_index.yaml.md new file mode 100644 index 0000000..acd9bd8 --- /dev/null +++ b/runs/contractor-full-2026-09-22/llm/11-questions_project_managers_index.yaml.md @@ -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 +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": "", + "heading": "", + "moves": { + "interviewing->declined": "declined>", + "interviewing->offered": "offered>", + "offered->declined": "declined>", + "offered->hired": "hired>", + "open->declined": "declined>", + "open->interviewing": "interviewing>" + } + }, + "bids": { + "description": "", + "heading": "", + "moves": { + "open->accepted": "accepted>", + "open->declined": "declined>", + "open->shortlisted": "shortlisted>", + "shortlisted->accepted": "accepted>", + "shortlisted->declined": "declined>" + } + }, + "change_orders": { + "description": "", + "heading": "", + "moves": { + "approved->declined": "declined>", + "open->declined": "declined>", + "open->priced": "priced>", + "priced->declined": "declined>" + } + }, + "claims": { + "description": "", + "heading": "", + "moves": { + "accepted->rejected": "rejected>", + "inspected->accepted": "accepted>", + "inspected->rejected": "rejected>", + "open->rejected": "rejected>" + } + }, + "complaints": { + "description": "", + "heading": "", + "moves": {} + }, + "enquiries": { + "description": "", + "heading": "", + "moves": { + "open->lost": "lost>", + "open->surveyed": "surveyed>", + "quoted->lost": "lost>", + "quoted->won": "won>", + "surveyed->lost": "lost>", + "surveyed->quoted": "quoted>" + } + }, + "job_requests": { + "description": "", + "heading": "", + "moves": { + "open->awarded": "awarded>", + "open->withdrawn": "withdrawn>" + } + }, + "site_issues": { + "description": "", + "heading": "", + "moves": {} + }, + "subcontractors": { + "description": "", + "heading": "", + "moves": { + "awaiting_papers->approved": "approved>", + "awaiting_papers->declined": "declined>", + "open->approved": "approved>", + "open->awaiting_papers": "awaiting_papers>", + "open->declined": "declined>" + } + } + }, + "confirm": "", + "description": "", + "links": { + "log-phone-enquiry": { + "button": "", + "description": "", + "heading": "" + }, + "post-job-request": { + "button": "", + "description": "", + "heading": "" + } + }, + "question": "" +} + +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?" +} diff --git a/runs/contractor-full-2026-09-22/llm/12-questions_project_managers_log-phone-enquiry-sent.yaml.md b/runs/contractor-full-2026-09-22/llm/12-questions_project_managers_log-phone-enquiry-sent.yaml.md new file mode 100644 index 0000000..9009327 --- /dev/null +++ b/runs/contractor-full-2026-09-22/llm/12-questions_project_managers_log-phone-enquiry-sent.yaml.md @@ -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 +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": "", + "description": "", + "next_description": "", + "next_heading": "", + "question": "" +} + +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?" +} diff --git a/runs/contractor-full-2026-09-22/llm/13-questions_project_managers_log-phone-enquiry.yaml.md b/runs/contractor-full-2026-09-22/llm/13-questions_project_managers_log-phone-enquiry.yaml.md new file mode 100644 index 0000000..2d975c1 --- /dev/null +++ b/runs/contractor-full-2026-09-22/llm/13-questions_project_managers_log-phone-enquiry.yaml.md @@ -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 +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": "", + "description": "", + "form_title": "", + "heading": "", + "labels": { + "address": "", + "caller": "", + "phone": "", + "problem": "" + }, + "page_description": "", + "question": "" +} + +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?" +} diff --git a/runs/contractor-full-2026-09-22/llm/14-questions_project_managers_post-job-request-sent.yaml.md b/runs/contractor-full-2026-09-22/llm/14-questions_project_managers_post-job-request-sent.yaml.md new file mode 100644 index 0000000..fa1fda5 --- /dev/null +++ b/runs/contractor-full-2026-09-22/llm/14-questions_project_managers_post-job-request-sent.yaml.md @@ -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 +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": "", + "description": "", + "next_description": "", + "next_heading": "", + "question": "" +} + +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?" +} diff --git a/runs/contractor-full-2026-09-22/llm/15-questions_project_managers_post-job-request.yaml.md b/runs/contractor-full-2026-09-22/llm/15-questions_project_managers_post-job-request.yaml.md new file mode 100644 index 0000000..9cc2eb2 --- /dev/null +++ b/runs/contractor-full-2026-09-22/llm/15-questions_project_managers_post-job-request.yaml.md @@ -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 +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": "", + "description": "", + "form_title": "", + "heading": "", + "labels": { + "site_address": "", + "start": "", + "trade": "", + "work": "" + }, + "page_description": "", + "question": "" +} + +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?" +} diff --git a/runs/contractor-full-2026-09-22/llm/16-questions_received_build-enquiry.yaml.md b/runs/contractor-full-2026-09-22/llm/16-questions_received_build-enquiry.yaml.md new file mode 100644 index 0000000..f8d9236 --- /dev/null +++ b/runs/contractor-full-2026-09-22/llm/16-questions_received_build-enquiry.yaml.md @@ -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 +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": "", + "description": "", + "next_description": "", + "next_heading": "", + "question": "" +} + +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?" +} diff --git a/runs/contractor-full-2026-09-22/llm/17-questions_received_job-application.yaml.md b/runs/contractor-full-2026-09-22/llm/17-questions_received_job-application.yaml.md new file mode 100644 index 0000000..d5f5340 --- /dev/null +++ b/runs/contractor-full-2026-09-22/llm/17-questions_received_job-application.yaml.md @@ -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 +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": "", + "description": "", + "next_description": "", + "next_heading": "", + "question": "" +} + +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?" +} diff --git a/runs/contractor-full-2026-09-22/llm/18-questions_received_neighbour-complaint.yaml.md b/runs/contractor-full-2026-09-22/llm/18-questions_received_neighbour-complaint.yaml.md new file mode 100644 index 0000000..289e0ca --- /dev/null +++ b/runs/contractor-full-2026-09-22/llm/18-questions_received_neighbour-complaint.yaml.md @@ -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 +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": "", + "description": "", + "next_description": "", + "next_heading": "", + "question": "" +} + +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?" +} diff --git a/runs/contractor-full-2026-09-22/llm/19-questions_received_subcontractor-application.yaml.md b/runs/contractor-full-2026-09-22/llm/19-questions_received_subcontractor-application.yaml.md new file mode 100644 index 0000000..9bd554f --- /dev/null +++ b/runs/contractor-full-2026-09-22/llm/19-questions_received_subcontractor-application.yaml.md @@ -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 +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": "", + "description": "", + "next_description": "", + "next_heading": "", + "question": "" +} + +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?" +} diff --git a/runs/contractor-full-2026-09-22/llm/20-questions_received_survey-enquiry.yaml.md b/runs/contractor-full-2026-09-22/llm/20-questions_received_survey-enquiry.yaml.md new file mode 100644 index 0000000..e55f1b8 --- /dev/null +++ b/runs/contractor-full-2026-09-22/llm/20-questions_received_survey-enquiry.yaml.md @@ -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 +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": "", + "description": "", + "next_description": "", + "next_heading": "", + "question": "" +} + +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?" +} diff --git a/runs/contractor-full-2026-09-22/llm/21-questions_received_warranty-claim.yaml.md b/runs/contractor-full-2026-09-22/llm/21-questions_received_warranty-claim.yaml.md new file mode 100644 index 0000000..ce42a93 --- /dev/null +++ b/runs/contractor-full-2026-09-22/llm/21-questions_received_warranty-claim.yaml.md @@ -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 +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": "", + "description": "", + "next_description": "", + "next_heading": "", + "question": "" +} + +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?" +} diff --git a/runs/contractor-full-2026-09-22/llm/22-questions_safety_officer_index.yaml.md b/runs/contractor-full-2026-09-22/llm/22-questions_safety_officer_index.yaml.md new file mode 100644 index 0000000..8d81b47 --- /dev/null +++ b/runs/contractor-full-2026-09-22/llm/22-questions_safety_officer_index.yaml.md @@ -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 +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": "", + "heading": "", + "moves": { + "in_hand->closed": "closed>", + "open->in_hand": "in_hand>" + } + } + }, + "confirm": "", + "description": "", + "links": { + "safety-round-finding": { + "button": "", + "description": "", + "heading": "" + } + }, + "question": "" +} + +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?" +} diff --git a/runs/contractor-full-2026-09-22/llm/23-questions_safety_officer_safety-round-finding-sent.yaml.md b/runs/contractor-full-2026-09-22/llm/23-questions_safety_officer_safety-round-finding-sent.yaml.md new file mode 100644 index 0000000..d7904b2 --- /dev/null +++ b/runs/contractor-full-2026-09-22/llm/23-questions_safety_officer_safety-round-finding-sent.yaml.md @@ -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 +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": "", + "description": "", + "next_description": "", + "next_heading": "", + "question": "" +} + +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?" +} diff --git a/runs/contractor-full-2026-09-22/llm/24-questions_safety_officer_safety-round-finding.yaml.md b/runs/contractor-full-2026-09-22/llm/24-questions_safety_officer_safety-round-finding.yaml.md new file mode 100644 index 0000000..b3f3718 --- /dev/null +++ b/runs/contractor-full-2026-09-22/llm/24-questions_safety_officer_safety-round-finding.yaml.md @@ -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 +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": "", + "description": "", + "form_title": "", + "heading": "", + "labels": { + "kind": "", + "what_happened": "", + "where": "" + }, + "page_description": "", + "question": "" +} + +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?" +} diff --git a/runs/contractor-full-2026-09-22/llm/25-questions_site_managers_index.yaml.md b/runs/contractor-full-2026-09-22/llm/25-questions_site_managers_index.yaml.md new file mode 100644 index 0000000..dcc9d58 --- /dev/null +++ b/runs/contractor-full-2026-09-22/llm/25-questions_site_managers_index.yaml.md @@ -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 +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": "", + "heading": "", + "moves": {} + }, + "change_orders": { + "description": "", + "heading": "", + "moves": { + "approved->completed": "completed>" + } + }, + "claims": { + "description": "", + "heading": "", + "moves": { + "accepted->fixed": "fixed>", + "open->inspected": "inspected>" + } + }, + "complaints": { + "description": "", + "heading": "", + "moves": { + "open->answered": "answered>" + } + }, + "enquiries": { + "description": "", + "heading": "", + "moves": { + "open->surveyed": "surveyed>" + } + }, + "job_requests": { + "description": "", + "heading": "", + "moves": {} + }, + "material_orders": { + "description": "", + "heading": "", + "moves": { + "open->ordered": "ordered>", + "open->refused": "refused>", + "ordered->delivered": "delivered>", + "ordered->refused": "refused>" + } + }, + "site_issues": { + "description": "", + "heading": "", + "moves": { + "open->in_hand": "in_hand>" + } + }, + "subcontractors": { + "description": "", + "heading": "", + "moves": {} + } + }, + "confirm": "", + "description": "", + "links": {}, + "question": "" +} + +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?" +} diff --git a/runs/contractor-full-2026-09-22/llm/26-questions_subcontractors_index.yaml.md b/runs/contractor-full-2026-09-22/llm/26-questions_subcontractors_index.yaml.md new file mode 100644 index 0000000..d302f42 --- /dev/null +++ b/runs/contractor-full-2026-09-22/llm/26-questions_subcontractors_index.yaml.md @@ -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 +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": "", + "heading": "", + "moves": {} + } + }, + "confirm": "", + "description": "", + "links": { + "submit-bid": { + "button": "", + "description": "", + "heading": "" + } + }, + "question": "" +} + +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?" +} diff --git a/runs/contractor-full-2026-09-22/llm/27-questions_subcontractors_submit-bid-sent.yaml.md b/runs/contractor-full-2026-09-22/llm/27-questions_subcontractors_submit-bid-sent.yaml.md new file mode 100644 index 0000000..a11b936 --- /dev/null +++ b/runs/contractor-full-2026-09-22/llm/27-questions_subcontractors_submit-bid-sent.yaml.md @@ -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 +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": "", + "description": "", + "next_description": "", + "next_heading": "", + "question": "" +} + +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?" +} diff --git a/runs/contractor-full-2026-09-22/llm/28-questions_subcontractors_submit-bid.yaml.md b/runs/contractor-full-2026-09-22/llm/28-questions_subcontractors_submit-bid.yaml.md new file mode 100644 index 0000000..cdd8107 --- /dev/null +++ b/runs/contractor-full-2026-09-22/llm/28-questions_subcontractors_submit-bid.yaml.md @@ -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 +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": "", + "description": "", + "form_title": "", + "heading": "", + "labels": { + "can_start": "", + "job": "", + "price": "" + }, + "page_description": "", + "question": "" +} + +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?" +} diff --git a/runs/contractor-full-2026-09-22/llm/29-questions_work-with-us_index.yaml.md b/runs/contractor-full-2026-09-22/llm/29-questions_work-with-us_index.yaml.md new file mode 100644 index 0000000..1a4920f --- /dev/null +++ b/runs/contractor-full-2026-09-22/llm/29-questions_work-with-us_index.yaml.md @@ -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 +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": "", + "needs": { + "job-application": { + "button": "", + "description": "", + "form_title": "", + "heading": "", + "labels": { + "experience": "", + "name": "", + "phone": "", + "trade": "" + } + }, + "subcontractor-application": { + "button": "", + "description": "", + "form_title": "", + "heading": "", + "labels": { + "company": "", + "contact_email": "", + "insurance_confirmed": "", + "registration_number": "", + "trade": "", + "trade_approval": "" + } + } + }, + "question": "" +} + +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?" +} diff --git a/runs/contractor-full-2026-09-22/llm/30-questions_your-building_index.yaml.md b/runs/contractor-full-2026-09-22/llm/30-questions_your-building_index.yaml.md new file mode 100644 index 0000000..bf98d60 --- /dev/null +++ b/runs/contractor-full-2026-09-22/llm/30-questions_your-building_index.yaml.md @@ -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 +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": "", + "needs": { + "build-enquiry": { + "button": "", + "description": "", + "form_title": "", + "heading": "", + "labels": { + "address": "", + "name": "", + "phone": "", + "project": "", + "timeframe": "" + } + }, + "survey-enquiry": { + "button": "", + "description": "", + "form_title": "", + "heading": "", + "labels": { + "access": "", + "address": "", + "name": "", + "phone": "", + "problem": "" + } + }, + "warranty-claim": { + "button": "", + "description": "", + "form_title": "", + "heading": "", + "labels": { + "address": "", + "fault": "", + "handed_over": "", + "name": "", + "phone": "" + } + } + }, + "question": "" +} + +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?" +} diff --git a/runs/contractor-full-2026-09-22/model.json b/runs/contractor-full-2026-09-22/model.json new file mode 100644 index 0000000..dface26 --- /dev/null +++ b/runs/contractor-full-2026-09-22/model.json @@ -0,0 +1,1600 @@ +{ + "buckets": { + "applicants": { + "desks": [ + { + "group": "project_managers", + "moves": [ + { + "from": "interviewing", + "label": "Offer role", + "to": "offered" + }, + { + "from": "interviewing", + "label": "Mark declined", + "to": "declined" + }, + { + "from": "offered", + "label": "Confirm hire", + "to": "hired" + }, + { + "from": "offered", + "label": "Reject offer", + "to": "declined" + }, + { + "from": "open", + "label": "Start interview", + "to": "interviewing" + }, + { + "from": "open", + "label": "Mark declined", + "to": "declined" + } + ], + "page": "/project_managers" + } + ], + "initial": "open", + "self_moves": [], + "transitions": { + "interviewing": [ + "offered", + "declined" + ], + "offered": [ + "hired", + "declined" + ], + "open": [ + "interviewing", + "declined" + ] + } + }, + "bids": { + "desks": [ + { + "group": "project_managers", + "moves": [ + { + "from": "open", + "label": "Shortlist bid", + "to": "shortlisted" + }, + { + "from": "open", + "label": "Accept bid", + "to": "accepted" + }, + { + "from": "open", + "label": "Reject bid", + "to": "declined" + }, + { + "from": "shortlisted", + "label": "Accept shortlist", + "to": "accepted" + }, + { + "from": "shortlisted", + "label": "Reject shortlist", + "to": "declined" + } + ], + "page": "/project_managers" + }, + { + "group": "site_managers", + "moves": [], + "page": "/site_managers" + } + ], + "initial": "open", + "self_moves": [], + "transitions": { + "open": [ + "shortlisted", + "accepted", + "declined" + ], + "shortlisted": [ + "accepted", + "declined" + ] + } + }, + "change_orders": { + "desks": [ + { + "group": "project_managers", + "moves": [ + { + "from": "approved", + "label": "Reject change", + "to": "declined" + }, + { + "from": "open", + "label": "Price the change", + "to": "priced" + }, + { + "from": "open", + "label": "Reject request", + "to": "declined" + }, + { + "from": "priced", + "label": "Reject priced change", + "to": "declined" + } + ], + "page": "/project_managers" + }, + { + "group": "site_managers", + "moves": [ + { + "from": "approved", + "label": "Mark done", + "to": "completed" + } + ], + "page": "/site_managers" + } + ], + "initial": "open", + "self_moves": [ + "approved", + "declined" + ], + "transitions": { + "approved": [ + "completed", + "declined" + ], + "open": [ + "priced", + "declined" + ], + "priced": [ + "approved", + "declined" + ] + } + }, + "claims": { + "desks": [ + { + "group": "project_managers", + "moves": [ + { + "from": "accepted", + "label": "Reject fix", + "to": "rejected" + }, + { + "from": "inspected", + "label": "Accept fix", + "to": "accepted" + }, + { + "from": "inspected", + "label": "Reject fix", + "to": "rejected" + }, + { + "from": "open", + "label": "Reject claim", + "to": "rejected" + } + ], + "page": "/project_managers" + }, + { + "group": "site_managers", + "moves": [ + { + "from": "accepted", + "label": "Mark fixed", + "to": "fixed" + }, + { + "from": "open", + "label": "Book inspection", + "to": "inspected" + } + ], + "page": "/site_managers" + } + ], + "initial": "open", + "self_moves": [], + "transitions": { + "accepted": [ + "fixed", + "rejected" + ], + "inspected": [ + "accepted", + "rejected" + ], + "open": [ + "inspected", + "rejected" + ] + } + }, + "complaints": { + "desks": [ + { + "group": "project_managers", + "moves": [], + "page": "/project_managers" + }, + { + "group": "site_managers", + "moves": [ + { + "from": "open", + "label": "Mark answered", + "to": "answered" + } + ], + "page": "/site_managers" + } + ], + "initial": "open", + "self_moves": [], + "transitions": { + "open": [ + "answered" + ] + } + }, + "enquiries": { + "desks": [ + { + "group": "project_managers", + "moves": [ + { + "from": "open", + "label": "Book survey", + "to": "surveyed" + }, + { + "from": "open", + "label": "Mark lost", + "to": "lost" + }, + { + "from": "quoted", + "label": "Win work", + "to": "won" + }, + { + "from": "quoted", + "label": "Mark lost", + "to": "lost" + }, + { + "from": "surveyed", + "label": "Send quote", + "to": "quoted" + }, + { + "from": "surveyed", + "label": "Mark lost", + "to": "lost" + } + ], + "page": "/project_managers" + }, + { + "group": "site_managers", + "moves": [ + { + "from": "open", + "label": "Mark surveyed", + "to": "surveyed" + } + ], + "page": "/site_managers" + } + ], + "initial": "open", + "self_moves": [], + "transitions": { + "open": [ + "surveyed", + "lost" + ], + "quoted": [ + "won", + "lost" + ], + "surveyed": [ + "quoted", + "lost" + ] + } + }, + "job_requests": { + "desks": [ + { + "group": "project_managers", + "moves": [ + { + "from": "open", + "label": "Award job", + "to": "awarded" + }, + { + "from": "open", + "label": "Withdraw job", + "to": "withdrawn" + } + ], + "page": "/project_managers" + }, + { + "group": "site_managers", + "moves": [], + "page": "/site_managers" + }, + { + "group": "subcontractors", + "moves": [], + "page": "/subcontractors" + } + ], + "initial": "open", + "self_moves": [], + "transitions": { + "open": [ + "awarded", + "withdrawn" + ] + } + }, + "material_orders": { + "desks": [ + { + "group": "crew", + "moves": [ + { + "from": "ordered", + "label": "Mark delivered", + "to": "delivered" + } + ], + "page": "/crew" + }, + { + "group": "site_managers", + "moves": [ + { + "from": "open", + "label": "Order it", + "to": "ordered" + }, + { + "from": "open", + "label": "Cancel order", + "to": "refused" + }, + { + "from": "ordered", + "label": "Mark delivered", + "to": "delivered" + }, + { + "from": "ordered", + "label": "Cancel delivery", + "to": "refused" + } + ], + "page": "/site_managers" + } + ], + "initial": "open", + "self_moves": [], + "transitions": { + "open": [ + "ordered", + "refused" + ], + "ordered": [ + "delivered", + "refused" + ] + } + }, + "site_issues": { + "desks": [ + { + "group": "project_managers", + "moves": [], + "page": "/project_managers" + }, + { + "group": "safety_officer", + "moves": [ + { + "from": "in_hand", + "label": "Mark as closed", + "to": "closed" + }, + { + "from": "open", + "label": "Start reporting", + "to": "in_hand" + } + ], + "page": "/safety_officer" + }, + { + "group": "site_managers", + "moves": [ + { + "from": "open", + "label": "Log it", + "to": "in_hand" + } + ], + "page": "/site_managers" + } + ], + "initial": "open", + "self_moves": [], + "transitions": { + "in_hand": [ + "closed" + ], + "open": [ + "in_hand" + ] + } + }, + "subcontractors": { + "desks": [ + { + "group": "project_managers", + "moves": [ + { + "from": "awaiting_papers", + "label": "Approve firm", + "to": "approved" + }, + { + "from": "awaiting_papers", + "label": "Decline firm", + "to": "declined" + }, + { + "from": "open", + "label": "Await papers", + "to": "awaiting_papers" + }, + { + "from": "open", + "label": "Approve application", + "to": "approved" + }, + { + "from": "open", + "label": "Decline application", + "to": "declined" + } + ], + "page": "/project_managers" + }, + { + "group": "site_managers", + "moves": [], + "page": "/site_managers" + } + ], + "initial": "open", + "self_moves": [], + "transitions": { + "awaiting_papers": [ + "approved", + "declined" + ], + "open": [ + "awaiting_papers", + "approved", + "declined" + ] + } + } + }, + "needs": [ + { + "done_when": [ + "won", + "lost" + ], + "enters_as": null, + "handled_by": "project_managers", + "id": "survey-enquiry", + "lands_in": "enquiries", + "steps": [ + { + "alternative": "Your building project", + "expect": [ + "Your building project" + ], + "fields": [], + "options": [ + { + "description": "Report a problem, get a survey, or start a new build project.", + "name": "Your building project" + }, + { + "description": "Apply to work with us as a subcontractor or find a job as a carpenter or apprentice.", + "name": "Work with Nordvik Bygg" + }, + { + "description": "Let us know about noise, dust, or access problems from a building site near you.", + "name": "Neighbour complaint" + } + ], + "page": "/", + "question": "What brings you to Nordvik Bygg today?" + }, + { + "alternative": "Report a building problem", + "expect": [ + "Report a building problem", + "Tell us about your building project" + ], + "fields": [ + { + "label": "Your name", + "name": "name", + "optional": false, + "options": [], + "type": "text" + }, + { + "label": "Phone number", + "name": "phone", + "optional": false, + "options": [], + "type": "tel" + }, + { + "label": "Building address", + "name": "address", + "optional": false, + "options": [], + "type": "text" + }, + { + "label": "What is the problem?", + "name": "problem", + "optional": false, + "options": [], + "type": "textarea" + }, + { + "label": "How to get to the site", + "name": "access", + "optional": true, + "options": [], + "type": "text" + } + ], + "options": [ + { + "description": "You have a problem in your building. We’ll send someone qualified to look at it and tell you what it takes to fix it.", + "name": "Report a building problem" + }, + { + "description": "You know what you want changed or built. We’ll draw it, handle the permit, and price it for you.", + "name": "Tell us about your building project" + }, + { + "description": "You found a fault in work we did. We’ll come back, look at it, and put it right.", + "name": "Report a fault in our work" + } + ], + "page": "/your-building", + "question": "What are you looking for?" + } + ], + "success": [ + "won" + ], + "wants": "someone qualified to come and look at it and say what it takes", + "who": "a housing board or private owner with a problem in a building" + }, + { + "done_when": [ + "won", + "lost" + ], + "enters_as": null, + "handled_by": "project_managers", + "id": "build-enquiry", + "lands_in": "enquiries", + "steps": [ + { + "alternative": "Your building project", + "expect": [ + "Your building project" + ], + "fields": [], + "options": [ + { + "description": "Report a problem, get a survey, or start a new build project.", + "name": "Your building project" + }, + { + "description": "Apply to work with us as a subcontractor or find a job as a carpenter or apprentice.", + "name": "Work with Nordvik Bygg" + }, + { + "description": "Let us know about noise, dust, or access problems from a building site near you.", + "name": "Neighbour complaint" + } + ], + "page": "/", + "question": "What brings you to Nordvik Bygg today?" + }, + { + "alternative": "Report a building problem", + "expect": [ + "Report a building problem", + "Tell us about your building project" + ], + "fields": [ + { + "label": "Your name", + "name": "name", + "optional": false, + "options": [], + "type": "text" + }, + { + "label": "Phone number", + "name": "phone", + "optional": false, + "options": [], + "type": "tel" + }, + { + "label": "Building address", + "name": "address", + "optional": false, + "options": [], + "type": "text" + }, + { + "label": "What is the problem?", + "name": "problem", + "optional": false, + "options": [], + "type": "textarea" + }, + { + "label": "How to get to the site", + "name": "access", + "optional": true, + "options": [], + "type": "text" + } + ], + "options": [ + { + "description": "You have a problem in your building. We’ll send someone qualified to look at it and tell you what it takes to fix it.", + "name": "Report a building problem" + }, + { + "description": "You know what you want changed or built. We’ll draw it, handle the permit, and price it for you.", + "name": "Tell us about your building project" + }, + { + "description": "You found a fault in work we did. We’ll come back, look at it, and put it right.", + "name": "Report a fault in our work" + } + ], + "page": "/your-building", + "question": "What are you looking for?" + } + ], + "success": [ + "won" + ], + "wants": "drawings, a permit application and a price", + "who": "an owner who already knows what they want built or changed" + }, + { + "done_when": [ + "fixed", + "rejected" + ], + "enters_as": null, + "handled_by": "project_managers", + "id": "warranty-claim", + "lands_in": "claims", + "steps": [ + { + "alternative": "Your building project", + "expect": [ + "Your building project" + ], + "fields": [], + "options": [ + { + "description": "Report a problem, get a survey, or start a new build project.", + "name": "Your building project" + }, + { + "description": "Apply to work with us as a subcontractor or find a job as a carpenter or apprentice.", + "name": "Work with Nordvik Bygg" + }, + { + "description": "Let us know about noise, dust, or access problems from a building site near you.", + "name": "Neighbour complaint" + } + ], + "page": "/", + "question": "What brings you to Nordvik Bygg today?" + }, + { + "alternative": "Report a fault in our work", + "expect": [ + "Report a fault in our work" + ], + "fields": [ + { + "label": "Your name", + "name": "name", + "optional": false, + "options": [], + "type": "text" + }, + { + "label": "Phone number", + "name": "phone", + "optional": false, + "options": [], + "type": "tel" + }, + { + "label": "Building address", + "name": "address", + "optional": false, + "options": [], + "type": "text" + }, + { + "label": "What is the fault?", + "name": "fault", + "optional": false, + "options": [], + "type": "textarea" + }, + { + "label": "When was it handed over?", + "name": "handed_over", + "optional": true, + "options": [], + "type": "date" + } + ], + "options": [ + { + "description": "You have a problem in your building. We’ll send someone qualified to look at it and tell you what it takes to fix it.", + "name": "Report a building problem" + }, + { + "description": "You know what you want changed or built. We’ll draw it, handle the permit, and price it for you.", + "name": "Tell us about your building project" + }, + { + "description": "You found a fault in work we did. We’ll come back, look at it, and put it right.", + "name": "Report a fault in our work" + } + ], + "page": "/your-building", + "question": "What are you looking for?" + } + ], + "success": [ + "fixed" + ], + "wants": "us to come back, look at it, and put it right", + "who": "a past customer who has found a fault in work we handed over" + }, + { + "done_when": [ + "answered" + ], + "enters_as": null, + "handled_by": "site_managers", + "id": "neighbour-complaint", + "lands_in": "complaints", + "steps": [ + { + "alternative": "Neighbour complaint", + "expect": [ + "Neighbour complaint" + ], + "fields": [ + { + "label": "Building address", + "name": "site_address", + "optional": false, + "options": [], + "type": "text" + }, + { + "label": "Describe the issue", + "name": "what_is_wrong", + "optional": false, + "options": [], + "type": "textarea" + }, + { + "label": "Contact method", + "name": "reach_me_on", + "optional": false, + "options": [], + "type": "text" + } + ], + "options": [ + { + "description": "Report a problem, get a survey, or start a new build project.", + "name": "Your building project" + }, + { + "description": "Apply to work with us as a subcontractor or find a job as a carpenter or apprentice.", + "name": "Work with Nordvik Bygg" + }, + { + "description": "Let us know about noise, dust, or access problems from a building site near you.", + "name": "Neighbour complaint" + } + ], + "page": "/", + "question": "What brings you to Nordvik Bygg today?" + } + ], + "success": [ + "answered" + ], + "wants": "the noise, dust or blocked access dealt with, and an answer", + "who": "someone living or working next to one of our building sites" + }, + { + "done_when": [ + "approved", + "declined" + ], + "enters_as": null, + "handled_by": "project_managers", + "id": "subcontractor-application", + "lands_in": "subcontractors", + "steps": [ + { + "alternative": "Work with Nordvik Bygg", + "expect": [ + "Work with Nordvik Bygg" + ], + "fields": [], + "options": [ + { + "description": "Report a problem, get a survey, or start a new build project.", + "name": "Your building project" + }, + { + "description": "Apply to work with us as a subcontractor or find a job as a carpenter or apprentice.", + "name": "Work with Nordvik Bygg" + }, + { + "description": "Let us know about noise, dust, or access problems from a building site near you.", + "name": "Neighbour complaint" + } + ], + "page": "/", + "question": "What brings you to Nordvik Bygg today?" + }, + { + "alternative": "Apply to work with us", + "expect": [ + "Apply to work with us" + ], + "fields": [ + { + "label": "Company name", + "name": "company", + "optional": false, + "options": [], + "type": "text" + }, + { + "label": "Registration number", + "name": "registration_number", + "optional": false, + "options": [], + "type": "text" + }, + { + "label": "Your trade", + "name": "trade", + "optional": false, + "options": [ + "Electrical", + "Plumbing", + "Scaffolding", + "Sheet metal", + "Other" + ], + "type": "select" + }, + { + "label": "Contact email", + "name": "contact_email", + "optional": false, + "options": [], + "type": "email" + }, + { + "label": "Insurance confirmed", + "name": "insurance_confirmed", + "optional": false, + "options": [ + "Yes", + "Not yet" + ], + "type": "select" + }, + { + "label": "Trade approval", + "name": "trade_approval", + "optional": true, + "options": [], + "type": "text" + } + ], + "options": [ + { + "description": "Send us your details so we can check if you are a fit for our projects.", + "name": "Apply to work with us" + }, + { + "description": "Tell us who you are and what you can do. No letter needed.", + "name": "Find a job with us" + } + ], + "page": "/work-with-us", + "question": "Do you want to work with us, or do you need our help with a building?" + } + ], + "success": [ + "approved" + ], + "wants": "to be approved once, and then be called when a job needs them", + "who": "a trade firm doing electrical, plumbing or scaffolding work" + }, + { + "done_when": [ + "hired", + "declined" + ], + "enters_as": null, + "handled_by": "project_managers", + "id": "job-application", + "lands_in": "applicants", + "steps": [ + { + "alternative": "Work with Nordvik Bygg", + "expect": [ + "Work with Nordvik Bygg" + ], + "fields": [], + "options": [ + { + "description": "Report a problem, get a survey, or start a new build project.", + "name": "Your building project" + }, + { + "description": "Apply to work with us as a subcontractor or find a job as a carpenter or apprentice.", + "name": "Work with Nordvik Bygg" + }, + { + "description": "Let us know about noise, dust, or access problems from a building site near you.", + "name": "Neighbour complaint" + } + ], + "page": "/", + "question": "What brings you to Nordvik Bygg today?" + }, + { + "alternative": "Find a job with us", + "expect": [ + "Find a job with us" + ], + "fields": [ + { + "label": "Your name", + "name": "name", + "optional": false, + "options": [], + "type": "text" + }, + { + "label": "Your phone", + "name": "phone", + "optional": false, + "options": [], + "type": "tel" + }, + { + "label": "Your trade", + "name": "trade", + "optional": false, + "options": [ + "Carpenter", + "Bricklayer", + "Apprentice", + "Other" + ], + "type": "select" + }, + { + "label": "Your experience", + "name": "experience", + "optional": true, + "options": [], + "type": "textarea" + } + ], + "options": [ + { + "description": "Send us your details so we can check if you are a fit for our projects.", + "name": "Apply to work with us" + }, + { + "description": "Tell us who you are and what you can do. No letter needed.", + "name": "Find a job with us" + } + ], + "page": "/work-with-us", + "question": "Do you want to work with us, or do you need our help with a building?" + } + ], + "success": [ + "hired" + ], + "wants": "to be considered, without writing a letter", + "who": "a carpenter, bricklayer or apprentice looking for work" + }, + { + "done_when": [ + "completed", + "declined" + ], + "enters_as": "clients", + "handled_by": "project_managers", + "id": "change-request", + "lands_in": "change_orders", + "steps": [ + { + "alternative": "Request a change to your building work", + "expect": [ + "Request a change to your building work" + ], + "fields": [ + { + "label": "Your email", + "name": "email", + "optional": false, + "options": [], + "type": "email" + }, + { + "label": "Building address", + "name": "job_address", + "optional": false, + "options": [], + "type": "text" + }, + { + "label": "What needs to change?", + "name": "change", + "optional": false, + "options": [], + "type": "textarea" + }, + { + "label": "When do you need this?", + "name": "needed_by", + "optional": true, + "options": [], + "type": "date" + } + ], + "options": [ + { + "description": "Tell us what you want changed so we can price it and get it done.", + "name": "Request a change to your building work" + } + ], + "page": "/clients/change-request", + "question": "What needs to change in your project?" + } + ], + "success": [ + "completed" + ], + "wants": "a price for the change, and the change done if they accept it", + "who": "a client whose job is under way and who wants something changed" + }, + { + "done_when": [ + "won", + "lost" + ], + "enters_as": "project_managers", + "handled_by": "project_managers", + "id": "log-phone-enquiry", + "lands_in": "enquiries", + "steps": [ + { + "alternative": "Log a phone enquiry", + "expect": [ + "Log a phone enquiry" + ], + "fields": [ + { + "label": "Your name", + "name": "caller", + "optional": false, + "options": [], + "type": "text" + }, + { + "label": "Phone number", + "name": "phone", + "optional": false, + "options": [], + "type": "tel" + }, + { + "label": "Address or site location", + "name": "address", + "optional": false, + "options": [], + "type": "text" + }, + { + "label": "What was said", + "name": "problem", + "optional": false, + "options": [], + "type": "textarea" + } + ], + "options": [ + { + "description": "Write down the enquiry so it doesn't get lost. One call, one record.", + "name": "Log a phone enquiry" + } + ], + "page": "/project_managers/log-phone-enquiry", + "question": "What was said on the call?" + } + ], + "success": [ + "won" + ], + "wants": "the enquiry written down before it gets lost", + "who": "a project manager who just took a call or a text about a building" + }, + { + "done_when": [ + "awarded", + "withdrawn" + ], + "enters_as": "project_managers", + "handled_by": "project_managers", + "id": "post-job-request", + "lands_in": "job_requests", + "steps": [ + { + "alternative": "Give subcontractors a job to price", + "expect": [ + "Give subcontractors a job to price" + ], + "fields": [ + { + "label": "Site address", + "name": "site_address", + "optional": false, + "options": [], + "type": "text" + }, + { + "label": "Trade needed", + "name": "trade", + "optional": false, + "options": [ + "Electrical", + "Plumbing", + "Scaffolding", + "Sheet metal", + "Other" + ], + "type": "select" + }, + { + "label": "Work description", + "name": "work", + "optional": false, + "options": [], + "type": "textarea" + }, + { + "label": "When work starts", + "name": "start", + "optional": false, + "options": [], + "type": "date" + } + ], + "options": [ + { + "description": "Tell us about the job you have ready to hand to a subcontractor.", + "name": "Give subcontractors a job to price" + } + ], + "page": "/project_managers/post-job-request", + "question": "What job do you have for a subcontractor?" + } + ], + "success": [ + "awarded" + ], + "wants": "approved subcontractors to see the job and answer with a price", + "who": "a project manager with work to hand to a subcontractor" + }, + { + "done_when": [ + "accepted", + "declined" + ], + "enters_as": "subcontractors", + "handled_by": "project_managers", + "id": "submit-bid", + "lands_in": "bids", + "steps": [ + { + "alternative": "Submit a bid on a job", + "expect": [ + "Submit a bid on a job" + ], + "fields": [ + { + "label": "Job reference", + "name": "job", + "optional": false, + "options": [], + "type": "text" + }, + { + "label": "Your price", + "name": "price", + "optional": false, + "options": [], + "type": "text" + }, + { + "label": "Can start", + "name": "can_start", + "optional": false, + "options": [], + "type": "date" + } + ], + "options": [ + { + "description": "Tell us your price and when you can start so we can review your offer.", + "name": "Submit a bid on a job" + } + ], + "page": "/subcontractors/submit-bid", + "question": "Will you submit a bid on this job?" + } + ], + "success": [ + "accepted" + ], + "wants": "to say yes with a price and a start date", + "who": "an approved subcontractor who has seen a job they can take" + }, + { + "done_when": [ + "closed" + ], + "enters_as": "crew", + "handled_by": "safety_officer", + "id": "report-site-issue", + "lands_in": "site_issues", + "steps": [ + { + "alternative": "Report a safety finding on site", + "expect": [ + "Report a safety finding on site" + ], + "fields": [ + { + "label": "What kind of issue", + "name": "kind", + "optional": false, + "options": [ + "Hazard", + "Near miss", + "Wrong materials", + "Other" + ], + "type": "select" + }, + { + "label": "Where on site", + "name": "where", + "optional": false, + "options": [], + "type": "text" + }, + { + "label": "What happened", + "name": "what_happened", + "optional": false, + "options": [], + "type": "textarea" + } + ], + "options": [ + { + "description": "Write down a hazard, near miss, or wrong materials from the site so the safety officer can fix it.", + "name": "Report a safety finding on site" + } + ], + "page": "/crew/report-site-issue", + "question": "What safety issue did you find?" + } + ], + "success": [ + "closed" + ], + "wants": "to report a hazard, a near miss or wrong materials before they forget", + "who": "anyone on site, ours or a subcontractor's, on a phone with gloves on" + }, + { + "done_when": [ + "delivered", + "refused" + ], + "enters_as": "crew", + "handled_by": "site_managers", + "id": "order-materials", + "lands_in": "material_orders", + "steps": [ + { + "alternative": "Order materials for the site", + "expect": [ + "Order materials for the site" + ], + "fields": [ + { + "label": "Site address", + "name": "site_address", + "optional": false, + "options": [], + "type": "text" + }, + { + "label": "What do you need?", + "name": "what", + "optional": false, + "options": [], + "type": "textarea" + }, + { + "label": "Needed by", + "name": "needed_by", + "optional": false, + "options": [], + "type": "date" + } + ], + "options": [ + { + "description": "Tell us what you need and where the site is so we can get it on its way.", + "name": "Order materials for the site" + } + ], + "page": "/crew/order-materials", + "question": "What do you need on site?" + } + ], + "success": [ + "delivered" + ], + "wants": "it ordered and on site before work stops", + "who": "a carpenter or bricklayer who is about to run out of something" + }, + { + "done_when": [ + "closed" + ], + "enters_as": "safety_officer", + "handled_by": "safety_officer", + "id": "safety-round-finding", + "lands_in": "site_issues", + "steps": [ + { + "alternative": "Report what you find on site", + "expect": [ + "Report what you find on site" + ], + "fields": [ + { + "label": "Issue kind", + "name": "kind", + "optional": false, + "options": [ + "Hazard", + "Near miss", + "Wrong materials", + "Other" + ], + "type": "select" + }, + { + "label": "Where on site", + "name": "where", + "optional": false, + "options": [], + "type": "text" + }, + { + "label": "What happened", + "name": "what_happened", + "optional": false, + "options": [], + "type": "textarea" + } + ], + "options": [ + { + "description": "Report a hazard, near miss or wrong materials from the site. This helps keep everyone safe and the job on track.", + "name": "Report what you find on site" + } + ], + "page": "/safety_officer/safety-round-finding", + "question": "What safety issue did you find?" + } + ], + "success": [ + "closed" + ], + "wants": "each thing found written down where the reported issues already are", + "who": "the safety officer walking a site on the weekly round" + } + ], + "personas": [ + { + "id": "housing-board-damp", + "need": "survey-enquiry", + "text": "I chair the board of a housing cooperative from the seventies. Two ground-floor flats have damp in the walls and we don't know if it's drainage or the facade. We need someone to tell us." + }, + { + "id": "buyer-before-purchase", + "need": "survey-enquiry", + "text": "We are about to buy an old timber house. Before we sign we want a professional to go through it and tell us what is wrong with it." + }, + { + "id": "attic-conversion", + "need": "build-enquiry", + "text": "We want to turn our attic into two bedrooms and a bathroom. We need drawings and someone who handles the application to the municipality." + }, + { + "id": "shop-to-flat", + "need": "build-enquiry", + "text": "I own a former shop on the ground floor and want to make it a flat. I have no idea what is allowed. Can you sort that out and give me a price?" + }, + { + "id": "leaking-bathroom", + "need": "warranty-claim", + "text": "You redid our bathroom two years ago. Now water is coming through the ceiling of the flat below. I want you to come and fix it." + }, + { + "id": "cracked-render", + "need": "warranty-claim", + "text": "The render you put on our gable wall last summer has cracked right across. That can't be right after one winter." + }, + { + "id": "noisy-mornings", + "need": "neighbour-complaint", + "text": "I live next door to the block you are working on. You start drilling at half past six every morning and I have a baby. Who do I talk to?" + }, + { + "id": "blocked-driveway", + "need": "neighbour-complaint", + "text": "Your skip and a van have been parked across the entrance to our shop's loading bay for three days. We can't get deliveries." + }, + { + "id": "electrician-firm", + "need": "subcontractor-application", + "text": "We are a four-person electrical firm, fully certified. We would like to get on your list so you call us when you need electricians." + }, + { + "id": "scaffolder", + "need": "subcontractor-application", + "text": "I run a scaffolding company. How do I get to do jobs for you?" + }, + { + "id": "carpenter-jobseeker", + "need": "job-application", + "text": "I'm a certified carpenter with eight years on rehabilitation jobs. Are you hiring?" + }, + { + "id": "apprentice", + "need": "job-application", + "text": "I finish vocational school this spring and need an apprenticeship as a bricklayer." + }, + { + "id": "extra-window", + "need": "change-request", + "text": "You are in the middle of our attic conversion. We have decided we want a roof window over the stairs as well. What would that cost?" + }, + { + "id": "pm-took-a-call", + "need": "log-phone-enquiry", + "text": "A woman from a housing board in Storgata just rang about water in their basement. I'm in the van. I need to note it before I forget her number." + }, + { + "id": "pm-needs-plumber", + "need": "post-job-request", + "text": "The bathroom job in Kirkeveien needs a plumber for two weeks from the first of next month. I want prices from the ones we have approved." + }, + { + "id": "plumber-bidding", + "need": "submit-bid", + "text": "We are an approved plumbing firm. I saw you need someone in Kirkeveien next month. We can do it, I have a price." + }, + { + "id": "loose-railing", + "need": "report-site-issue", + "text": "The railing on the third level of the scaffold on the north side is loose. Nobody got hurt but someone will." + }, + { + "id": "wrong-membrane", + "need": "report-site-issue", + "text": "The bathroom membrane delivered today is not the one in the specification. We stopped work on it." + }, + { + "id": "out-of-battens", + "need": "order-materials", + "text": "We have enough roof battens for today and maybe half of tomorrow. Need another two hundred metres on site by Thursday." + }, + { + "id": "weekly-round", + "need": "safety-round-finding", + "text": "On my Friday round I found the first-aid box on level two empty and an extension lead run through a puddle." + } + ] +} \ No newline at end of file diff --git a/runs/contractor-full-2026-09-22/needs.yaml b/runs/contractor-full-2026-09-22/needs.yaml new file mode 100644 index 0000000..0f080e1 --- /dev/null +++ b/runs/contractor-full-2026-09-22/needs.yaml @@ -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. diff --git a/runs/contractor-full-2026-09-22/questions/clients/_section.yaml b/runs/contractor-full-2026-09-22/questions/clients/_section.yaml new file mode 100644 index 0000000..fd811b0 --- /dev/null +++ b/runs/contractor-full-2026-09-22/questions/clients/_section.yaml @@ -0,0 +1 @@ +qualifies: clients diff --git a/runs/contractor-full-2026-09-22/questions/clients/change-request-sent.yaml b/runs/contractor-full-2026-09-22/questions/clients/change-request-sent.yaml new file mode 100644 index 0000000..03d43dd --- /dev/null +++ b/runs/contractor-full-2026-09-22/questions/clients/change-request-sent.yaml @@ -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? diff --git a/runs/contractor-full-2026-09-22/questions/clients/change-request.yaml b/runs/contractor-full-2026-09-22/questions/clients/change-request.yaml new file mode 100644 index 0000000..a0b28b7 --- /dev/null +++ b/runs/contractor-full-2026-09-22/questions/clients/change-request.yaml @@ -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 diff --git a/runs/contractor-full-2026-09-22/questions/clients/index.yaml b/runs/contractor-full-2026-09-22/questions/clients/index.yaml new file mode 100644 index 0000000..26b4486 --- /dev/null +++ b/runs/contractor-full-2026-09-22/questions/clients/index.yaml @@ -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 diff --git a/runs/contractor-full-2026-09-22/questions/crew/_section.yaml b/runs/contractor-full-2026-09-22/questions/crew/_section.yaml new file mode 100644 index 0000000..1f962a5 --- /dev/null +++ b/runs/contractor-full-2026-09-22/questions/crew/_section.yaml @@ -0,0 +1 @@ +qualifies: crew diff --git a/runs/contractor-full-2026-09-22/questions/crew/index.yaml b/runs/contractor-full-2026-09-22/questions/crew/index.yaml new file mode 100644 index 0000000..dc195ad --- /dev/null +++ b/runs/contractor-full-2026-09-22/questions/crew/index.yaml @@ -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 diff --git a/runs/contractor-full-2026-09-22/questions/crew/order-materials-sent.yaml b/runs/contractor-full-2026-09-22/questions/crew/order-materials-sent.yaml new file mode 100644 index 0000000..a20103f --- /dev/null +++ b/runs/contractor-full-2026-09-22/questions/crew/order-materials-sent.yaml @@ -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? diff --git a/runs/contractor-full-2026-09-22/questions/crew/order-materials.yaml b/runs/contractor-full-2026-09-22/questions/crew/order-materials.yaml new file mode 100644 index 0000000..4775dc4 --- /dev/null +++ b/runs/contractor-full-2026-09-22/questions/crew/order-materials.yaml @@ -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 diff --git a/runs/contractor-full-2026-09-22/questions/crew/report-site-issue-sent.yaml b/runs/contractor-full-2026-09-22/questions/crew/report-site-issue-sent.yaml new file mode 100644 index 0000000..2d9dc74 --- /dev/null +++ b/runs/contractor-full-2026-09-22/questions/crew/report-site-issue-sent.yaml @@ -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? diff --git a/runs/contractor-full-2026-09-22/questions/crew/report-site-issue.yaml b/runs/contractor-full-2026-09-22/questions/crew/report-site-issue.yaml new file mode 100644 index 0000000..be8900a --- /dev/null +++ b/runs/contractor-full-2026-09-22/questions/crew/report-site-issue.yaml @@ -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 diff --git a/runs/contractor-full-2026-09-22/questions/decide/change-request.yaml b/runs/contractor-full-2026-09-22/questions/decide/change-request.yaml new file mode 100644 index 0000000..c8a287b --- /dev/null +++ b/runs/contractor-full-2026-09-22/questions/decide/change-request.yaml @@ -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? diff --git a/runs/contractor-full-2026-09-22/questions/index.yaml b/runs/contractor-full-2026-09-22/questions/index.yaml new file mode 100644 index 0000000..e05c8d1 --- /dev/null +++ b/runs/contractor-full-2026-09-22/questions/index.yaml @@ -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 diff --git a/runs/contractor-full-2026-09-22/questions/project_managers/_section.yaml b/runs/contractor-full-2026-09-22/questions/project_managers/_section.yaml new file mode 100644 index 0000000..d8acdff --- /dev/null +++ b/runs/contractor-full-2026-09-22/questions/project_managers/_section.yaml @@ -0,0 +1 @@ +qualifies: project_managers diff --git a/runs/contractor-full-2026-09-22/questions/project_managers/index.yaml b/runs/contractor-full-2026-09-22/questions/project_managers/index.yaml new file mode 100644 index 0000000..71f7171 --- /dev/null +++ b/runs/contractor-full-2026-09-22/questions/project_managers/index.yaml @@ -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 diff --git a/runs/contractor-full-2026-09-22/questions/project_managers/log-phone-enquiry-sent.yaml b/runs/contractor-full-2026-09-22/questions/project_managers/log-phone-enquiry-sent.yaml new file mode 100644 index 0000000..66762d7 --- /dev/null +++ b/runs/contractor-full-2026-09-22/questions/project_managers/log-phone-enquiry-sent.yaml @@ -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? diff --git a/runs/contractor-full-2026-09-22/questions/project_managers/log-phone-enquiry.yaml b/runs/contractor-full-2026-09-22/questions/project_managers/log-phone-enquiry.yaml new file mode 100644 index 0000000..e647dae --- /dev/null +++ b/runs/contractor-full-2026-09-22/questions/project_managers/log-phone-enquiry.yaml @@ -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 diff --git a/runs/contractor-full-2026-09-22/questions/project_managers/post-job-request-sent.yaml b/runs/contractor-full-2026-09-22/questions/project_managers/post-job-request-sent.yaml new file mode 100644 index 0000000..a9427bd --- /dev/null +++ b/runs/contractor-full-2026-09-22/questions/project_managers/post-job-request-sent.yaml @@ -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? diff --git a/runs/contractor-full-2026-09-22/questions/project_managers/post-job-request.yaml b/runs/contractor-full-2026-09-22/questions/project_managers/post-job-request.yaml new file mode 100644 index 0000000..6c7ea53 --- /dev/null +++ b/runs/contractor-full-2026-09-22/questions/project_managers/post-job-request.yaml @@ -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 diff --git a/runs/contractor-full-2026-09-22/questions/received/build-enquiry.yaml b/runs/contractor-full-2026-09-22/questions/received/build-enquiry.yaml new file mode 100644 index 0000000..6fc7ae0 --- /dev/null +++ b/runs/contractor-full-2026-09-22/questions/received/build-enquiry.yaml @@ -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? diff --git a/runs/contractor-full-2026-09-22/questions/received/job-application.yaml b/runs/contractor-full-2026-09-22/questions/received/job-application.yaml new file mode 100644 index 0000000..5927723 --- /dev/null +++ b/runs/contractor-full-2026-09-22/questions/received/job-application.yaml @@ -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? diff --git a/runs/contractor-full-2026-09-22/questions/received/neighbour-complaint.yaml b/runs/contractor-full-2026-09-22/questions/received/neighbour-complaint.yaml new file mode 100644 index 0000000..c53efa1 --- /dev/null +++ b/runs/contractor-full-2026-09-22/questions/received/neighbour-complaint.yaml @@ -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? diff --git a/runs/contractor-full-2026-09-22/questions/received/subcontractor-application.yaml b/runs/contractor-full-2026-09-22/questions/received/subcontractor-application.yaml new file mode 100644 index 0000000..17a7043 --- /dev/null +++ b/runs/contractor-full-2026-09-22/questions/received/subcontractor-application.yaml @@ -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? diff --git a/runs/contractor-full-2026-09-22/questions/received/survey-enquiry.yaml b/runs/contractor-full-2026-09-22/questions/received/survey-enquiry.yaml new file mode 100644 index 0000000..ccd4c03 --- /dev/null +++ b/runs/contractor-full-2026-09-22/questions/received/survey-enquiry.yaml @@ -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? diff --git a/runs/contractor-full-2026-09-22/questions/received/warranty-claim.yaml b/runs/contractor-full-2026-09-22/questions/received/warranty-claim.yaml new file mode 100644 index 0000000..5c7cab8 --- /dev/null +++ b/runs/contractor-full-2026-09-22/questions/received/warranty-claim.yaml @@ -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? diff --git a/runs/contractor-full-2026-09-22/questions/safety_officer/_section.yaml b/runs/contractor-full-2026-09-22/questions/safety_officer/_section.yaml new file mode 100644 index 0000000..d7ea7a1 --- /dev/null +++ b/runs/contractor-full-2026-09-22/questions/safety_officer/_section.yaml @@ -0,0 +1 @@ +qualifies: safety_officer diff --git a/runs/contractor-full-2026-09-22/questions/safety_officer/index.yaml b/runs/contractor-full-2026-09-22/questions/safety_officer/index.yaml new file mode 100644 index 0000000..7be131a --- /dev/null +++ b/runs/contractor-full-2026-09-22/questions/safety_officer/index.yaml @@ -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 diff --git a/runs/contractor-full-2026-09-22/questions/safety_officer/safety-round-finding-sent.yaml b/runs/contractor-full-2026-09-22/questions/safety_officer/safety-round-finding-sent.yaml new file mode 100644 index 0000000..349c9a4 --- /dev/null +++ b/runs/contractor-full-2026-09-22/questions/safety_officer/safety-round-finding-sent.yaml @@ -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? diff --git a/runs/contractor-full-2026-09-22/questions/safety_officer/safety-round-finding.yaml b/runs/contractor-full-2026-09-22/questions/safety_officer/safety-round-finding.yaml new file mode 100644 index 0000000..0ebfad1 --- /dev/null +++ b/runs/contractor-full-2026-09-22/questions/safety_officer/safety-round-finding.yaml @@ -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 diff --git a/runs/contractor-full-2026-09-22/questions/site_managers/_section.yaml b/runs/contractor-full-2026-09-22/questions/site_managers/_section.yaml new file mode 100644 index 0000000..6443bde --- /dev/null +++ b/runs/contractor-full-2026-09-22/questions/site_managers/_section.yaml @@ -0,0 +1 @@ +qualifies: site_managers diff --git a/runs/contractor-full-2026-09-22/questions/site_managers/index.yaml b/runs/contractor-full-2026-09-22/questions/site_managers/index.yaml new file mode 100644 index 0000000..fb90381 --- /dev/null +++ b/runs/contractor-full-2026-09-22/questions/site_managers/index.yaml @@ -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 diff --git a/runs/contractor-full-2026-09-22/questions/subcontractors/_section.yaml b/runs/contractor-full-2026-09-22/questions/subcontractors/_section.yaml new file mode 100644 index 0000000..9adc466 --- /dev/null +++ b/runs/contractor-full-2026-09-22/questions/subcontractors/_section.yaml @@ -0,0 +1 @@ +qualifies: subcontractors diff --git a/runs/contractor-full-2026-09-22/questions/subcontractors/index.yaml b/runs/contractor-full-2026-09-22/questions/subcontractors/index.yaml new file mode 100644 index 0000000..7b1f446 --- /dev/null +++ b/runs/contractor-full-2026-09-22/questions/subcontractors/index.yaml @@ -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 diff --git a/runs/contractor-full-2026-09-22/questions/subcontractors/submit-bid-sent.yaml b/runs/contractor-full-2026-09-22/questions/subcontractors/submit-bid-sent.yaml new file mode 100644 index 0000000..40d873c --- /dev/null +++ b/runs/contractor-full-2026-09-22/questions/subcontractors/submit-bid-sent.yaml @@ -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? diff --git a/runs/contractor-full-2026-09-22/questions/subcontractors/submit-bid.yaml b/runs/contractor-full-2026-09-22/questions/subcontractors/submit-bid.yaml new file mode 100644 index 0000000..3668ce0 --- /dev/null +++ b/runs/contractor-full-2026-09-22/questions/subcontractors/submit-bid.yaml @@ -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 diff --git a/runs/contractor-full-2026-09-22/questions/work-with-us/index.yaml b/runs/contractor-full-2026-09-22/questions/work-with-us/index.yaml new file mode 100644 index 0000000..8bc0c7a --- /dev/null +++ b/runs/contractor-full-2026-09-22/questions/work-with-us/index.yaml @@ -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 diff --git a/runs/contractor-full-2026-09-22/questions/your-building/index.yaml b/runs/contractor-full-2026-09-22/questions/your-building/index.yaml new file mode 100644 index 0000000..2a94403 --- /dev/null +++ b/runs/contractor-full-2026-09-22/questions/your-building/index.yaml @@ -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 diff --git a/runs/contractor-full-2026-09-22/rate.json b/runs/contractor-full-2026-09-22/rate.json new file mode 100644 index 0000000..4cf6f5b --- /dev/null +++ b/runs/contractor-full-2026-09-22/rate.json @@ -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 + } +} \ No newline at end of file diff --git a/runs/contractor-full-2026-09-22/rate.txt b/runs/contractor-full-2026-09-22/rate.txt new file mode 100644 index 0000000..46d1ac0 --- /dev/null +++ b/runs/contractor-full-2026-09-22/rate.txt @@ -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 diff --git a/runs/contractor-full-2026-09-22/score-full.txt b/runs/contractor-full-2026-09-22/score-full.txt new file mode 100644 index 0000000..e4e0c55 --- /dev/null +++ b/runs/contractor-full-2026-09-22/score-full.txt @@ -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%) diff --git a/runs/contractor-full-2026-09-22/score-skim.txt b/runs/contractor-full-2026-09-22/score-skim.txt new file mode 100644 index 0000000..0f7871a --- /dev/null +++ b/runs/contractor-full-2026-09-22/score-skim.txt @@ -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%) diff --git a/runs/contractor-full-2026-09-22/site.yaml b/runs/contractor-full-2026-09-22/site.yaml new file mode 100644 index 0000000..17b5f54 --- /dev/null +++ b/runs/contractor-full-2026-09-22/site.yaml @@ -0,0 +1,2 @@ +lang: en +title: Nordvik Bygg diff --git a/runs/contractor-full-2026-09-22/tasks-full.jsonl b/runs/contractor-full-2026-09-22/tasks-full.jsonl new file mode 100644 index 0000000..30c8ddd --- /dev/null +++ b/runs/contractor-full-2026-09-22/tasks-full.jsonl @@ -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"]} diff --git a/runs/contractor-full-2026-09-22/tasks-skim.jsonl b/runs/contractor-full-2026-09-22/tasks-skim.jsonl new file mode 100644 index 0000000..2924928 --- /dev/null +++ b/runs/contractor-full-2026-09-22/tasks-skim.jsonl @@ -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"]} diff --git a/runs/contractor-plan-2026-09-22/README.md b/runs/contractor-plan-2026-09-22/README.md new file mode 100644 index 0000000..a4ea827 --- /dev/null +++ b/runs/contractor-plan-2026-09-22/README.md @@ -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. diff --git a/runs/contractor-plan-2026-09-22/plan.yaml b/runs/contractor-plan-2026-09-22/plan.yaml new file mode 100644 index 0000000..73d08a5 --- /dev/null +++ b/runs/contractor-plan-2026-09-22/plan.yaml @@ -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. diff --git a/runs/contractor-plan-2026-09-22/reply.md b/runs/contractor-plan-2026-09-22/reply.md new file mode 100644 index 0000000..d409f1d --- /dev/null +++ b/runs/contractor-plan-2026-09-22/reply.md @@ -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 } diff --git a/runs/fotballklubb-2026-09-22/README.md b/runs/fotballklubb-2026-09-22/README.md new file mode 100644 index 0000000..8bbbd9d --- /dev/null +++ b/runs/fotballklubb-2026-09-22/README.md @@ -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`. diff --git a/runs/fotballklubb-2026-09-22/aggregates.yaml b/runs/fotballklubb-2026-09-22/aggregates.yaml new file mode 100644 index 0000000..d7831c2 --- /dev/null +++ b/runs/fotballklubb-2026-09-22/aggregates.yaml @@ -0,0 +1,87 @@ +aggregates: +- bucket: avgiftssaker + initial: open + states: + avslatt: + event: avslatt + innvilget: + event: innvilget + open: + event: received + vurdert: + event: vurdert + transitions: + open: + - vurdert + - avslatt + vurdert: + - innvilget + - avslatt +- bucket: baneproblemer + initial: open + states: + open: + event: received + ordnet: + event: ordnet + tatt_tak_i: + event: tatt_tak_i + transitions: + open: + - tatt_tak_i + tatt_tak_i: + - ordnet +- bucket: frivillige + initial: open + states: + avslatt: + event: avslatt + kontaktet: + event: kontaktet + open: + event: received + plassert: + event: plassert + transitions: + kontaktet: + - plassert + - avslatt + open: + - kontaktet + - avslatt +- bucket: innmeldinger + initial: open + states: + betalt: + event: betalt + godkjent: + event: godkjent + open: + event: received + trukket: + event: trukket + transitions: + godkjent: + - betalt + - trukket + open: + - godkjent + - trukket +- bucket: sponsorer + initial: open + states: + avslatt: + event: avslatt + avtalt: + event: avtalt + i_dialog: + event: i_dialog + open: + event: received + transitions: + i_dialog: + - avtalt + - avslatt + open: + - i_dialog + - avslatt diff --git a/runs/fotballklubb-2026-09-22/answers-full.jsonl b/runs/fotballklubb-2026-09-22/answers-full.jsonl new file mode 100644 index 0000000..da3805c --- /dev/null +++ b/runs/fotballklubb-2026-09-22/answers-full.jsonl @@ -0,0 +1,16 @@ +{"choice":"Er det på tide å melde inn?","confidence":0.95,"id":"ny-i-bygda@/"} +{"choice":"Meld deg på laget","confidence":0.95,"id":"ny-i-bygda@/foresatte"} +{"choice":"Er det på tide å melde inn?","confidence":0.95,"id":"tvillinger@/"} +{"choice":"Meld deg på laget","confidence":0.95,"id":"tvillinger@/foresatte"} +{"choice":"Er det på tide å melde inn?","confidence":0.95,"id":"alenefar@/"} +{"choice":"Hjelp med avgift","confidence":0.95,"id":"alenefar@/foresatte"} +{"choice":"Er det på tide å melde inn?","confidence":0.95,"id":"permittert@/"} +{"choice":"Meld deg på laget","confidence":0.85,"id":"permittert@/foresatte"} +{"choice":"Vil du bidra til klubben?","confidence":0.95,"id":"pensjonist@/"} +{"choice":"Bli brukt der det trengs","confidence":0.95,"id":"pensjonist@/bidra"} +{"choice":"Vil du bidra til klubben?","confidence":0.95,"id":"stor-bil@/"} +{"choice":"Støtt klubben i bygda","confidence":0.85,"id":"stor-bil@/bidra"} +{"choice":"Vil du bidra til klubben?","confidence":0.95,"id":"rorlegger@/"} +{"choice":"Støtt klubben i bygda","confidence":0.95,"id":"rorlegger@/bidra"} +{"choice":"Vil du bidra til klubben?","confidence":0.95,"id":"kafeen@/"} +{"choice":"Støtt klubben i bygda","confidence":0.95,"id":"kafeen@/bidra"} diff --git a/runs/fotballklubb-2026-09-22/answers-skim.jsonl b/runs/fotballklubb-2026-09-22/answers-skim.jsonl new file mode 100644 index 0000000..db548fa --- /dev/null +++ b/runs/fotballklubb-2026-09-22/answers-skim.jsonl @@ -0,0 +1,16 @@ +{"choice":"Vil du bidra til klubben?","confidence":0.95,"id":"ny-i-bygda@/"} +{"choice":"Meld deg på laget","confidence":0.95,"id":"ny-i-bygda@/foresatte"} +{"choice":"Vil du bidra til klubben?","confidence":0.95,"id":"tvillinger@/"} +{"choice":"Meld deg på laget","confidence":0.95,"id":"tvillinger@/foresatte"} +{"choice":"Er det på tide å melde inn?","confidence":0.95,"id":"alenefar@/"} +{"choice":"Hjelp med avgift","confidence":0.95,"id":"alenefar@/foresatte"} +{"choice":"Vil du bidra til klubben?","confidence":0.95,"id":"permittert@/"} +{"choice":"Meld deg på laget","confidence":0.85,"id":"permittert@/foresatte"} +{"choice":"Vil du bidra til klubben?","confidence":0.95,"id":"pensjonist@/"} +{"choice":"Bli brukt der det trengs","confidence":0.95,"id":"pensjonist@/bidra"} +{"choice":"Vil du bidra til klubben?","confidence":0.95,"id":"stor-bil@/"} +{"choice":"Støtt klubben i bygda","confidence":0.85,"id":"stor-bil@/bidra"} +{"choice":"Vil du bidra til klubben?","confidence":0.95,"id":"rorlegger@/"} +{"choice":"Støtt klubben i bygda","confidence":0.95,"id":"rorlegger@/bidra"} +{"choice":"Vil du bidra til klubben?","confidence":0.95,"id":"kafeen@/"} +{"choice":"Støtt klubben i bygda","confidence":0.95,"id":"kafeen@/bidra"} diff --git a/runs/fotballklubb-2026-09-22/build.log b/runs/fotballklubb-2026-09-22/build.log new file mode 100644 index 0000000..7f59176 --- /dev/null +++ b/runs/fotballklubb-2026-09-22/build.log @@ -0,0 +1,20 @@ +words: questions/bidra/index.yaml +words: questions/foresatte/index.yaml +words: questions/index.yaml +words: questions/kasserer/index.yaml +words: questions/received/avgiftssak.yaml +words: questions/received/frivillig.yaml +words: questions/received/innmelding.yaml +words: questions/received/sponsor.yaml +words: questions/styret/index.yaml +words: questions/trenere/baneproblem-sent.yaml +words: questions/trenere/baneproblem.yaml +words: questions/trenere/index.yaml +content repo written to runs/fotballklubb-2026-09-22 +OK: 12 question(s), 6 aggregate(s) valid +need "innmelding": / [Er det på tide å melde inn?] -> /foresatte [Meld deg på laget] -> "innmeldinger" +need "avgiftssak": / [Er det på tide å melde inn?] -> /foresatte [Hjelp med avgift] -> "avgiftssaker" +need "frivillig": / [Vil du bidra til klubben?] -> /bidra [Bli brukt der det trengs] -> "frivillige" +need "sponsor": / [Vil du bidra til klubben?] -> /bidra [Støtt klubben i bygda] -> "sponsorer" +need "baneproblem": /trenere/baneproblem [Rapporter baneproblem] -> "baneproblemer" +OK: 5 need(s) structurally met, 0 planned, 9 persona(s) diff --git a/runs/fotballklubb-2026-09-22/llm/01-questions_bidra_index.yaml.md b/runs/fotballklubb-2026-09-22/llm/01-questions_bidra_index.yaml.md new file mode 100644 index 0000000..fc9d90e --- /dev/null +++ b/runs/fotballklubb-2026-09-22/llm/01-questions_bidra_index.yaml.md @@ -0,0 +1,90 @@ +You write the words for one page of a website for this business. + +Business: Lia IL Fotball +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. +Contact: Kari Lien +Language to write in: nb + +Everyone the site serves: +- door foresatte: for en forelder eller foresatt til et barn som vil spille, eller allerede spiller; behind it: innmelding, avgiftssak +- door bidra: for noen som vil hjelpe til i klubben, eller en bedrift som vil støtte den; behind it: frivillig, sponsor +- innmelding: en forelder som vil ha ungen med på et lag - wants: at barnet får plass på laget for sitt årskull. Handled by trenere. Stages: open -> godkjent -> betalt -> trukket. +- avgiftssak: en forelder som sliter med treningsavgiften - wants: å dele den opp, eller slippe den. Handled by styret. Stages: open -> vurdert -> innvilget -> avslatt. +- frivillig: en som vil hjelpe til, som trener, lagleder, sjåfør eller på dugnad - wants: å bli brukt der det trengs. Handled by styret. Stages: open -> kontaktet -> plassert -> avslatt. +- sponsor: en bedrift i bygda som vil støtte klubben - wants: en prat om hva de kan bidra med, og en avtale. Handled by styret. Stages: open -> i_dialog -> avtalt -> avslatt. +- baneproblem: en trener som ser at noe på anlegget ikke er i orden - wants: at styret får vite det og ordner det. Handled by styret. Stages: open -> tatt_tak_i -> ordnet. + +The page: questions/bidra/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": "", + "needs": { + "frivillig": { + "button": "", + "description": "", + "form_title": "", + "heading": "", + "labels": { + "hva_kan_du": "", + "navn": "", + "telefon": "" + } + }, + "sponsor": { + "button": "", + "description": "", + "form_title": "", + "heading": "", + "labels": { + "bedrift": "", + "hva_tenker_dere": "", + "kontaktperson": "", + "telefon": "" + } + } + }, + "question": "" +} + +Reply with the JSON object only. + +=== REPLY === +{ + "description": "Er du interessert i å bli med på laget?", + "needs": { + "frivillig": { + "button": "Meldeg inn", + "description": "Hjelp til som trener, lagleder eller på dugnad", + "form_title": "Bli frivillig", + "heading": "Bli brukt der det trengs", + "labels": { + "hva_kan_du": "Hva kan du hjelpe med?", + "navn": "Navn", + "telefon": "Telefon" + } + }, + "sponsor": { + "button": "Kontakt oss", + "description": "Lett dialog om hva bedriften kan bidra med", + "form_title": "Sponsor-samtale", + "heading": "Støtt klubben i bygda", + "labels": { + "bedrift": "Bedrift", + "hva_tenker_dere": "Hva tenker dere om å støtte?", + "kontaktperson": "Kontaktperson", + "telefon": "Telefon" + } + } + }, + "question": "Hva kan du bidra med?" +} diff --git a/runs/fotballklubb-2026-09-22/llm/02-questions_foresatte_index.yaml.md b/runs/fotballklubb-2026-09-22/llm/02-questions_foresatte_index.yaml.md new file mode 100644 index 0000000..acb256b --- /dev/null +++ b/runs/fotballklubb-2026-09-22/llm/02-questions_foresatte_index.yaml.md @@ -0,0 +1,96 @@ +You write the words for one page of a website for this business. + +Business: Lia IL Fotball +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. +Contact: Kari Lien +Language to write in: nb + +Everyone the site serves: +- door foresatte: for en forelder eller foresatt til et barn som vil spille, eller allerede spiller; behind it: innmelding, avgiftssak +- door bidra: for noen som vil hjelpe til i klubben, eller en bedrift som vil støtte den; behind it: frivillig, sponsor +- innmelding: en forelder som vil ha ungen med på et lag - wants: at barnet får plass på laget for sitt årskull. Handled by trenere. Stages: open -> godkjent -> betalt -> trukket. +- avgiftssak: en forelder som sliter med treningsavgiften - wants: å dele den opp, eller slippe den. Handled by styret. Stages: open -> vurdert -> innvilget -> avslatt. +- frivillig: en som vil hjelpe til, som trener, lagleder, sjåfør eller på dugnad - wants: å bli brukt der det trengs. Handled by styret. Stages: open -> kontaktet -> plassert -> avslatt. +- sponsor: en bedrift i bygda som vil støtte klubben - wants: en prat om hva de kan bidra med, og en avtale. Handled by styret. Stages: open -> i_dialog -> avtalt -> avslatt. +- baneproblem: en trener som ser at noe på anlegget ikke er i orden - wants: at styret får vite det og ordner det. Handled by styret. Stages: open -> tatt_tak_i -> ordnet. + +The page: questions/foresatte/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": "", + "needs": { + "avgiftssak": { + "button": "", + "description": "", + "form_title": "", + "heading": "", + "labels": { + "barnets_navn": "", + "foresatt": "", + "hva_gjelder_det": "", + "telefon": "" + } + }, + "innmelding": { + "button": "", + "description": "", + "form_title": "", + "heading": "", + "labels": { + "barnets_navn": "", + "epost": "", + "fodselsar": "", + "foresatt": "", + "spilt_for": "", + "telefon": "" + } + } + }, + "question": "" +} + +Reply with the JSON object only. + +=== REPLY === +{ + "description": "Har du barn som vil spille fotball, eller hjelpe klubben på?", + "needs": { + "avgiftssak": { + "button": "Del opp avgift", + "description": "Vi hjelper deg å finne en løsning hvis du har vansker med å betale.", + "form_title": "Avgiftssak", + "heading": "Hjelp med avgift", + "labels": { + "barnets_navn": "Barns navn", + "foresatt": "Foresatt navn", + "hva_gjelder_det": "Hva gjelder?", + "telefon": "Telefon" + } + }, + "innmelding": { + "button": "Meld på", + "description": "Sett barnet på laget for sitt årskull. Treneren håndterer dette.", + "form_title": "Innmelding", + "heading": "Meld deg på laget", + "labels": { + "barnets_navn": "Barns navn", + "epost": "E-post", + "fodselsar": "Fødselsår", + "foresatt": "Foresatt navn", + "spilt_for": "Spiller for", + "telefon": "Telefon" + } + } + }, + "question": "Har du barn som vil spille fotball?" +} diff --git a/runs/fotballklubb-2026-09-22/llm/03-questions_index.yaml.md b/runs/fotballklubb-2026-09-22/llm/03-questions_index.yaml.md new file mode 100644 index 0000000..96c2a82 --- /dev/null +++ b/runs/fotballklubb-2026-09-22/llm/03-questions_index.yaml.md @@ -0,0 +1,66 @@ +You write the words for one page of a website for this business. + +Business: Lia IL Fotball +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. +Contact: Kari Lien +Language to write in: nb + +Everyone the site serves: +- door foresatte: for en forelder eller foresatt til et barn som vil spille, eller allerede spiller; behind it: innmelding, avgiftssak +- door bidra: for noen som vil hjelpe til i klubben, eller en bedrift som vil støtte den; behind it: frivillig, sponsor +- innmelding: en forelder som vil ha ungen med på et lag - wants: at barnet får plass på laget for sitt årskull. Handled by trenere. Stages: open -> godkjent -> betalt -> trukket. +- avgiftssak: en forelder som sliter med treningsavgiften - wants: å dele den opp, eller slippe den. Handled by styret. Stages: open -> vurdert -> innvilget -> avslatt. +- frivillig: en som vil hjelpe til, som trener, lagleder, sjåfør eller på dugnad - wants: å bli brukt der det trengs. Handled by styret. Stages: open -> kontaktet -> plassert -> avslatt. +- sponsor: en bedrift i bygda som vil støtte klubben - wants: en prat om hva de kan bidra med, og en avtale. Handled by styret. Stages: open -> i_dialog -> avtalt -> avslatt. +- baneproblem: en trener som ser at noe på anlegget ikke er i orden - wants: at styret får vite det og ordner det. Handled by styret. Stages: open -> tatt_tak_i -> ordnet. + +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": "", + "doors": { + "bidra": { + "button": "", + "description": "", + "heading": "" + }, + "foresatte": { + "button": "", + "description": "", + "heading": "" + } + }, + "needs": {}, + "question": "" +} + +Reply with the JSON object only. + +=== REPLY === +{ + "description": "Er du foreldre, trener eller representant fra lokal samfunn? Her finner du veien inn til det du trenger.", + "doors": { + "bidra": { + "button": "Hjelp klubben", + "description": "Som frivillig trener, lagleder, sjåfør eller støttende bedrift.", + "heading": "Vil du bidra til klubben?" + }, + "foresatte": { + "button": "Meld inn barnet", + "description": "For foreldre som vil at barnet skal spille på laget sitt årskull.", + "heading": "Er det på tide å melde inn?" + } + }, + "needs": {}, + "question": "Hva hjelper vi deg med i dag?" +} diff --git a/runs/fotballklubb-2026-09-22/llm/04-questions_kasserer_index.yaml.md b/runs/fotballklubb-2026-09-22/llm/04-questions_kasserer_index.yaml.md new file mode 100644 index 0000000..c9aca96 --- /dev/null +++ b/runs/fotballklubb-2026-09-22/llm/04-questions_kasserer_index.yaml.md @@ -0,0 +1,62 @@ +You write the words for one page of a website for this business. + +Business: Lia IL Fotball +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. +Contact: Kari Lien +Language to write in: nb + +Everyone the site serves: +- door foresatte: for en forelder eller foresatt til et barn som vil spille, eller allerede spiller; behind it: innmelding, avgiftssak +- door bidra: for noen som vil hjelpe til i klubben, eller en bedrift som vil støtte den; behind it: frivillig, sponsor +- innmelding: en forelder som vil ha ungen med på et lag - wants: at barnet får plass på laget for sitt årskull. Handled by trenere. Stages: open -> godkjent -> betalt -> trukket. +- avgiftssak: en forelder som sliter med treningsavgiften - wants: å dele den opp, eller slippe den. Handled by styret. Stages: open -> vurdert -> innvilget -> avslatt. +- frivillig: en som vil hjelpe til, som trener, lagleder, sjåfør eller på dugnad - wants: å bli brukt der det trengs. Handled by styret. Stages: open -> kontaktet -> plassert -> avslatt. +- sponsor: en bedrift i bygda som vil støtte klubben - wants: en prat om hva de kan bidra med, og en avtale. Handled by styret. Stages: open -> i_dialog -> avtalt -> avslatt. +- baneproblem: en trener som ser at noe på anlegget ikke er i orden - wants: at styret får vite det og ordner det. Handled by styret. Stages: open -> tatt_tak_i -> ordnet. + +The page: questions/kasserer/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": { + "innmeldinger": { + "description": "", + "heading": "", + "moves": { + "godkjent->betalt": "betalt>" + } + } + }, + "confirm": "", + "description": "", + "links": {}, + "question": "" +} + +Reply with the JSON object only. + +=== REPLY === +{ + "buckets": { + "innmeldinger": { + "description": "Her finner du saker som trenger godkjennelse for at barnet kan spille.", + "heading": "Innmeldinger som trenger godkjennelse", + "moves": { + "godkjent->betalt": "Godkjenn og ta betalt" + } + } + }, + "confirm": "Lagre endringer", + "description": "Kassereren tar seg av innmeldinger, avgifter og frivillighet.", + "links": {}, + "question": "Hva trenger din oppmerksomhet i dag?" +} diff --git a/runs/fotballklubb-2026-09-22/llm/05-questions_received_avgiftssak.yaml.md b/runs/fotballklubb-2026-09-22/llm/05-questions_received_avgiftssak.yaml.md new file mode 100644 index 0000000..a2fd00b --- /dev/null +++ b/runs/fotballklubb-2026-09-22/llm/05-questions_received_avgiftssak.yaml.md @@ -0,0 +1,46 @@ +You write the words for one page of a website for this business. + +Business: Lia IL Fotball +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. +Contact: Kari Lien +Language to write in: nb + +Everyone the site serves: +- door foresatte: for en forelder eller foresatt til et barn som vil spille, eller allerede spiller; behind it: innmelding, avgiftssak +- door bidra: for noen som vil hjelpe til i klubben, eller en bedrift som vil støtte den; behind it: frivillig, sponsor +- innmelding: en forelder som vil ha ungen med på et lag - wants: at barnet får plass på laget for sitt årskull. Handled by trenere. Stages: open -> godkjent -> betalt -> trukket. +- avgiftssak: en forelder som sliter med treningsavgiften - wants: å dele den opp, eller slippe den. Handled by styret. Stages: open -> vurdert -> innvilget -> avslatt. +- frivillig: en som vil hjelpe til, som trener, lagleder, sjåfør eller på dugnad - wants: å bli brukt der det trengs. Handled by styret. Stages: open -> kontaktet -> plassert -> avslatt. +- sponsor: en bedrift i bygda som vil støtte klubben - wants: en prat om hva de kan bidra med, og en avtale. Handled by styret. Stages: open -> i_dialog -> avtalt -> avslatt. +- baneproblem: en trener som ser at noe på anlegget ikke er i orden - wants: at styret får vite det og ordner det. Handled by styret. Stages: open -> tatt_tak_i -> ordnet. + +The page: questions/received/avgiftssak.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": "", + "description": "", + "next_description": "", + "next_heading": "", + "question": "" +} + +Reply with the JSON object only. + +=== REPLY === +{ + "back": "Tilbake", + "description": "Styret behandler avgiftssaker for å finne en løsning som passer dere.", + "next_description": "Når styret har vurdert sakken, vil dere få beskjed om resultatet.", + "next_heading": "Hva skjer neste?", + "question": "Hva skjer med avgiftssaken din?" +} diff --git a/runs/fotballklubb-2026-09-22/llm/06-questions_received_frivillig.yaml.md b/runs/fotballklubb-2026-09-22/llm/06-questions_received_frivillig.yaml.md new file mode 100644 index 0000000..46d8a2f --- /dev/null +++ b/runs/fotballklubb-2026-09-22/llm/06-questions_received_frivillig.yaml.md @@ -0,0 +1,46 @@ +You write the words for one page of a website for this business. + +Business: Lia IL Fotball +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. +Contact: Kari Lien +Language to write in: nb + +Everyone the site serves: +- door foresatte: for en forelder eller foresatt til et barn som vil spille, eller allerede spiller; behind it: innmelding, avgiftssak +- door bidra: for noen som vil hjelpe til i klubben, eller en bedrift som vil støtte den; behind it: frivillig, sponsor +- innmelding: en forelder som vil ha ungen med på et lag - wants: at barnet får plass på laget for sitt årskull. Handled by trenere. Stages: open -> godkjent -> betalt -> trukket. +- avgiftssak: en forelder som sliter med treningsavgiften - wants: å dele den opp, eller slippe den. Handled by styret. Stages: open -> vurdert -> innvilget -> avslatt. +- frivillig: en som vil hjelpe til, som trener, lagleder, sjåfør eller på dugnad - wants: å bli brukt der det trengs. Handled by styret. Stages: open -> kontaktet -> plassert -> avslatt. +- sponsor: en bedrift i bygda som vil støtte klubben - wants: en prat om hva de kan bidra med, og en avtale. Handled by styret. Stages: open -> i_dialog -> avtalt -> avslatt. +- baneproblem: en trener som ser at noe på anlegget ikke er i orden - wants: at styret får vite det og ordner det. Handled by styret. Stages: open -> tatt_tak_i -> ordnet. + +The page: questions/received/frivillig.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": "", + "description": "", + "next_description": "", + "next_heading": "", + "question": "" +} + +Reply with the JSON object only. + +=== REPLY === +{ + "back": "Tilbake", + "description": "Du har sendt inn en melding om at du vil bidra frivillig. Her ser du status og hva som skjer videre.", + "next_description": "Styret vil behandle meldingen din og finne et passende oppdrag for deg.", + "next_heading": "Behandling på vei", + "question": "Hva skjer nå med min melding?" +} diff --git a/runs/fotballklubb-2026-09-22/llm/07-questions_received_innmelding.yaml.md b/runs/fotballklubb-2026-09-22/llm/07-questions_received_innmelding.yaml.md new file mode 100644 index 0000000..1f787c1 --- /dev/null +++ b/runs/fotballklubb-2026-09-22/llm/07-questions_received_innmelding.yaml.md @@ -0,0 +1,46 @@ +You write the words for one page of a website for this business. + +Business: Lia IL Fotball +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. +Contact: Kari Lien +Language to write in: nb + +Everyone the site serves: +- door foresatte: for en forelder eller foresatt til et barn som vil spille, eller allerede spiller; behind it: innmelding, avgiftssak +- door bidra: for noen som vil hjelpe til i klubben, eller en bedrift som vil støtte den; behind it: frivillig, sponsor +- innmelding: en forelder som vil ha ungen med på et lag - wants: at barnet får plass på laget for sitt årskull. Handled by trenere. Stages: open -> godkjent -> betalt -> trukket. +- avgiftssak: en forelder som sliter med treningsavgiften - wants: å dele den opp, eller slippe den. Handled by styret. Stages: open -> vurdert -> innvilget -> avslatt. +- frivillig: en som vil hjelpe til, som trener, lagleder, sjåfør eller på dugnad - wants: å bli brukt der det trengs. Handled by styret. Stages: open -> kontaktet -> plassert -> avslatt. +- sponsor: en bedrift i bygda som vil støtte klubben - wants: en prat om hva de kan bidra med, og en avtale. Handled by styret. Stages: open -> i_dialog -> avtalt -> avslatt. +- baneproblem: en trener som ser at noe på anlegget ikke er i orden - wants: at styret får vite det og ordner det. Handled by styret. Stages: open -> tatt_tak_i -> ordnet. + +The page: questions/received/innmelding.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": "", + "description": "", + "next_description": "", + "next_heading": "", + "question": "" +} + +Reply with the JSON object only. + +=== REPLY === +{ + "back": "Tilbake", + "description": "Du har sendt inn en innmeldingskjema for barnet ditt. Her finner du informasjon om hva som skjer videre.", + "next_description": "Så snart lagets trener har lest kjemaet, blir det vurdert om barnet får plass.", + "next_heading": "Venter på trenerens vurdering", + "question": "Hva skjer nå med innmeldingen?" +} diff --git a/runs/fotballklubb-2026-09-22/llm/08-questions_received_sponsor.yaml.md b/runs/fotballklubb-2026-09-22/llm/08-questions_received_sponsor.yaml.md new file mode 100644 index 0000000..fa1980c --- /dev/null +++ b/runs/fotballklubb-2026-09-22/llm/08-questions_received_sponsor.yaml.md @@ -0,0 +1,46 @@ +You write the words for one page of a website for this business. + +Business: Lia IL Fotball +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. +Contact: Kari Lien +Language to write in: nb + +Everyone the site serves: +- door foresatte: for en forelder eller foresatt til et barn som vil spille, eller allerede spiller; behind it: innmelding, avgiftssak +- door bidra: for noen som vil hjelpe til i klubben, eller en bedrift som vil støtte den; behind it: frivillig, sponsor +- innmelding: en forelder som vil ha ungen med på et lag - wants: at barnet får plass på laget for sitt årskull. Handled by trenere. Stages: open -> godkjent -> betalt -> trukket. +- avgiftssak: en forelder som sliter med treningsavgiften - wants: å dele den opp, eller slippe den. Handled by styret. Stages: open -> vurdert -> innvilget -> avslatt. +- frivillig: en som vil hjelpe til, som trener, lagleder, sjåfør eller på dugnad - wants: å bli brukt der det trengs. Handled by styret. Stages: open -> kontaktet -> plassert -> avslatt. +- sponsor: en bedrift i bygda som vil støtte klubben - wants: en prat om hva de kan bidra med, og en avtale. Handled by styret. Stages: open -> i_dialog -> avtalt -> avslatt. +- baneproblem: en trener som ser at noe på anlegget ikke er i orden - wants: at styret får vite det og ordner det. Handled by styret. Stages: open -> tatt_tak_i -> ordnet. + +The page: questions/received/sponsor.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": "", + "description": "", + "next_description": "", + "next_heading": "", + "question": "" +} + +Reply with the JSON object only. + +=== REPLY === +{ + "back": "Tilbake", + "description": "Kontaktmeldingen din er mottatt av klubbens styret. De jobber for å få det løst raskt.", + "next_description": "Styret vil vurdere meldingen og ta kontakt med deg innen kort tid.", + "next_heading": "Hva skjer nå?", + "question": "Hva skjer med min melding?" +} diff --git a/runs/fotballklubb-2026-09-22/llm/09-questions_styret_index.yaml.md b/runs/fotballklubb-2026-09-22/llm/09-questions_styret_index.yaml.md new file mode 100644 index 0000000..0af89f1 --- /dev/null +++ b/runs/fotballklubb-2026-09-22/llm/09-questions_styret_index.yaml.md @@ -0,0 +1,124 @@ +You write the words for one page of a website for this business. + +Business: Lia IL Fotball +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. +Contact: Kari Lien +Language to write in: nb + +Everyone the site serves: +- door foresatte: for en forelder eller foresatt til et barn som vil spille, eller allerede spiller; behind it: innmelding, avgiftssak +- door bidra: for noen som vil hjelpe til i klubben, eller en bedrift som vil støtte den; behind it: frivillig, sponsor +- innmelding: en forelder som vil ha ungen med på et lag - wants: at barnet får plass på laget for sitt årskull. Handled by trenere. Stages: open -> godkjent -> betalt -> trukket. +- avgiftssak: en forelder som sliter med treningsavgiften - wants: å dele den opp, eller slippe den. Handled by styret. Stages: open -> vurdert -> innvilget -> avslatt. +- frivillig: en som vil hjelpe til, som trener, lagleder, sjåfør eller på dugnad - wants: å bli brukt der det trengs. Handled by styret. Stages: open -> kontaktet -> plassert -> avslatt. +- sponsor: en bedrift i bygda som vil støtte klubben - wants: en prat om hva de kan bidra med, og en avtale. Handled by styret. Stages: open -> i_dialog -> avtalt -> avslatt. +- baneproblem: en trener som ser at noe på anlegget ikke er i orden - wants: at styret får vite det og ordner det. Handled by styret. Stages: open -> tatt_tak_i -> ordnet. + +The page: questions/styret/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": { + "avgiftssaker": { + "description": "", + "heading": "", + "moves": { + "open->avslatt": "avslatt>", + "open->vurdert": "vurdert>", + "vurdert->avslatt": "avslatt>", + "vurdert->innvilget": "innvilget>" + } + }, + "baneproblemer": { + "description": "", + "heading": "", + "moves": { + "open->tatt_tak_i": "tatt_tak_i>", + "tatt_tak_i->ordnet": "ordnet>" + } + }, + "frivillige": { + "description": "", + "heading": "", + "moves": { + "kontaktet->avslatt": "avslatt>", + "kontaktet->plassert": "plassert>", + "open->avslatt": "avslatt>", + "open->kontaktet": "kontaktet>" + } + }, + "sponsorer": { + "description": "", + "heading": "", + "moves": { + "i_dialog->avslatt": "avslatt>", + "i_dialog->avtalt": "avtalt>", + "open->avslatt": "avslatt>", + "open->i_dialog": "i_dialog>" + } + } + }, + "confirm": "", + "description": "", + "links": {}, + "question": "" +} + +Reply with the JSON object only. + +=== REPLY === +{ + "buckets": { + "avgiftssaker": { + "description": "Her finner du saker rundt treningavgifter for barn. Du kan dele opp betalingen eller søke om å slippe unna.", + "heading": "Avgiftssaker", + "moves": { + "open->avslatt": "Avslutt", + "open->vurdert": "Vurdert", + "vurdert->avslatt": "Avslutt", + "vurdert->innvilget": "Innvilget" + } + }, + "baneproblemer": { + "description": "Meld når noe på anlegget trenger oppmerksomhet. Styret tar imeldingen og sørger for at det blir ordnet.", + "heading": "Baneproblemer", + "moves": { + "open->tatt_tak_i": "Tatt tak i", + "tatt_tak_i->ordnet": "Ordet" + } + }, + "frivillige": { + "description": "Her kan du melde deg som frivillig hjelper. Styret finner ut hvor trengs hjelp, f.eks. som trener, lagleder, sjåfør eller på dugnad.", + "heading": "Frivillige", + "moves": { + "kontaktet->avslatt": "Avslutt", + "kontaktet->plassert": "Plassert", + "open->avslatt": "Avslutt", + "open->kontaktet": "Kontakt" + } + }, + "sponsorer": { + "description": "Her håndteres samarbeidet med bedrifter i bygda som støtter klubben. Du finner hva de kan bidra med og avtaler sammen.", + "heading": "Sponsorer", + "moves": { + "i_dialog->avslatt": "Avslutt", + "i_dialog->avtalt": "Avtalt", + "open->avslatt": "Avslutt", + "open->i_dialog": "Start dialog" + } + } + }, + "confirm": "Bekreft", + "description": "Her kan du se og behandle saker som trenger oppmerksomhet fra styret.", + "links": {}, + "question": "Hva trenger din oppmerksomhet?" +} diff --git a/runs/fotballklubb-2026-09-22/llm/10-questions_trenere_baneproblem-sent.yaml.md b/runs/fotballklubb-2026-09-22/llm/10-questions_trenere_baneproblem-sent.yaml.md new file mode 100644 index 0000000..9aaae6b --- /dev/null +++ b/runs/fotballklubb-2026-09-22/llm/10-questions_trenere_baneproblem-sent.yaml.md @@ -0,0 +1,46 @@ +You write the words for one page of a website for this business. + +Business: Lia IL Fotball +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. +Contact: Kari Lien +Language to write in: nb + +Everyone the site serves: +- door foresatte: for en forelder eller foresatt til et barn som vil spille, eller allerede spiller; behind it: innmelding, avgiftssak +- door bidra: for noen som vil hjelpe til i klubben, eller en bedrift som vil støtte den; behind it: frivillig, sponsor +- innmelding: en forelder som vil ha ungen med på et lag - wants: at barnet får plass på laget for sitt årskull. Handled by trenere. Stages: open -> godkjent -> betalt -> trukket. +- avgiftssak: en forelder som sliter med treningsavgiften - wants: å dele den opp, eller slippe den. Handled by styret. Stages: open -> vurdert -> innvilget -> avslatt. +- frivillig: en som vil hjelpe til, som trener, lagleder, sjåfør eller på dugnad - wants: å bli brukt der det trengs. Handled by styret. Stages: open -> kontaktet -> plassert -> avslatt. +- sponsor: en bedrift i bygda som vil støtte klubben - wants: en prat om hva de kan bidra med, og en avtale. Handled by styret. Stages: open -> i_dialog -> avtalt -> avslatt. +- baneproblem: en trener som ser at noe på anlegget ikke er i orden - wants: at styret får vite det og ordner det. Handled by styret. Stages: open -> tatt_tak_i -> ordnet. + +The page: questions/trenere/baneproblem-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": "", + "description": "", + "next_description": "", + "next_heading": "", + "question": "" +} + +Reply with the JSON object only. + +=== REPLY === +{ + "back": "Tilbake", + "description": "Du har meldt et problem med banen. Her ser du hvem som tar vare på meldingen og hva som skjer videre.", + "next_description": "Styret vil bli varslet og jobbe for å få rettet problemet.", + "next_heading": "Så snart styret har sett på det", + "question": "Hvem tar vare på meldingen?" +} diff --git a/runs/fotballklubb-2026-09-22/llm/11-questions_trenere_baneproblem.yaml.md b/runs/fotballklubb-2026-09-22/llm/11-questions_trenere_baneproblem.yaml.md new file mode 100644 index 0000000..279ffef --- /dev/null +++ b/runs/fotballklubb-2026-09-22/llm/11-questions_trenere_baneproblem.yaml.md @@ -0,0 +1,56 @@ +You write the words for one page of a website for this business. + +Business: Lia IL Fotball +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. +Contact: Kari Lien +Language to write in: nb + +Everyone the site serves: +- door foresatte: for en forelder eller foresatt til et barn som vil spille, eller allerede spiller; behind it: innmelding, avgiftssak +- door bidra: for noen som vil hjelpe til i klubben, eller en bedrift som vil støtte den; behind it: frivillig, sponsor +- innmelding: en forelder som vil ha ungen med på et lag - wants: at barnet får plass på laget for sitt årskull. Handled by trenere. Stages: open -> godkjent -> betalt -> trukket. +- avgiftssak: en forelder som sliter med treningsavgiften - wants: å dele den opp, eller slippe den. Handled by styret. Stages: open -> vurdert -> innvilget -> avslatt. +- frivillig: en som vil hjelpe til, som trener, lagleder, sjåfør eller på dugnad - wants: å bli brukt der det trengs. Handled by styret. Stages: open -> kontaktet -> plassert -> avslatt. +- sponsor: en bedrift i bygda som vil støtte klubben - wants: en prat om hva de kan bidra med, og en avtale. Handled by styret. Stages: open -> i_dialog -> avtalt -> avslatt. +- baneproblem: en trener som ser at noe på anlegget ikke er i orden - wants: at styret får vite det og ordner det. Handled by styret. Stages: open -> tatt_tak_i -> ordnet. + +The page: questions/trenere/baneproblem.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": "", + "description": "", + "form_title": "", + "heading": "", + "labels": { + "hva": "", + "hvor": "" + }, + "page_description": "", + "question": "" +} + +Reply with the JSON object only. + +=== REPLY === +{ + "button": "Send melding", + "description": "Fortell oss hva du har sett eller mangler på anlegget, så tar vi vare på meldingen.", + "form_title": "Meld baneproblem", + "heading": "Rapporter baneproblem", + "labels": { + "hva": "Hva er problemet?", + "hvor": "Hvor på anlegget?" + }, + "page_description": "Her kan du rapportere et problem med fotballanlegget.", + "question": "Er det noe på anlegget som trenger oppmerksomhet?" +} diff --git a/runs/fotballklubb-2026-09-22/llm/12-questions_trenere_index.yaml.md b/runs/fotballklubb-2026-09-22/llm/12-questions_trenere_index.yaml.md new file mode 100644 index 0000000..2b5bda8 --- /dev/null +++ b/runs/fotballklubb-2026-09-22/llm/12-questions_trenere_index.yaml.md @@ -0,0 +1,78 @@ +You write the words for one page of a website for this business. + +Business: Lia IL Fotball +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. +Contact: Kari Lien +Language to write in: nb + +Everyone the site serves: +- door foresatte: for en forelder eller foresatt til et barn som vil spille, eller allerede spiller; behind it: innmelding, avgiftssak +- door bidra: for noen som vil hjelpe til i klubben, eller en bedrift som vil støtte den; behind it: frivillig, sponsor +- innmelding: en forelder som vil ha ungen med på et lag - wants: at barnet får plass på laget for sitt årskull. Handled by trenere. Stages: open -> godkjent -> betalt -> trukket. +- avgiftssak: en forelder som sliter med treningsavgiften - wants: å dele den opp, eller slippe den. Handled by styret. Stages: open -> vurdert -> innvilget -> avslatt. +- frivillig: en som vil hjelpe til, som trener, lagleder, sjåfør eller på dugnad - wants: å bli brukt der det trengs. Handled by styret. Stages: open -> kontaktet -> plassert -> avslatt. +- sponsor: en bedrift i bygda som vil støtte klubben - wants: en prat om hva de kan bidra med, og en avtale. Handled by styret. Stages: open -> i_dialog -> avtalt -> avslatt. +- baneproblem: en trener som ser at noe på anlegget ikke er i orden - wants: at styret får vite det og ordner det. Handled by styret. Stages: open -> tatt_tak_i -> ordnet. + +The page: questions/trenere/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": { + "innmeldinger": { + "description": "", + "heading": "", + "moves": { + "godkjent->trukket": "trukket>", + "open->godkjent": "godkjent>", + "open->trukket": "trukket>" + } + } + }, + "confirm": "", + "description": "", + "links": { + "baneproblem": { + "button": "", + "description": "", + "heading": "" + } + }, + "question": "" +} + +Reply with the JSON object only. + +=== REPLY === +{ + "buckets": { + "innmeldinger": { + "description": "Her finner du saker om å få med barnet på laget. Styring og økonomi håndteres av trenerne og styret.", + "heading": "Innmelding og lagplass", + "moves": { + "godkjent->trukket": "Trukket ut", + "open->godkjent": "Godkjent", + "open->trukket": "Trukket ut" + } + } + }, + "confirm": "Lagre", + "description": "Side for trenere som trenger oversikt over saker og handlinger.", + "links": { + "baneproblem": { + "button": "Registrer", + "description": "Meld deg inn om noe som trenger oppmerksomhet på anlegget.", + "heading": "Baneproblem" + } + }, + "question": "Hva trenger du hjelp med i dag?" +} diff --git a/runs/fotballklubb-2026-09-22/model.json b/runs/fotballklubb-2026-09-22/model.json new file mode 100644 index 0000000..265e726 --- /dev/null +++ b/runs/fotballklubb-2026-09-22/model.json @@ -0,0 +1,664 @@ +{ + "buckets": { + "avgiftssaker": { + "desks": [ + { + "group": "styret", + "moves": [ + { + "from": "open", + "label": "Vurdert", + "to": "vurdert" + }, + { + "from": "open", + "label": "Avslutt", + "to": "avslatt" + }, + { + "from": "vurdert", + "label": "Innvilget", + "to": "innvilget" + }, + { + "from": "vurdert", + "label": "Avslutt", + "to": "avslatt" + } + ], + "page": "/styret" + } + ], + "initial": "open", + "self_moves": [], + "transitions": { + "open": [ + "vurdert", + "avslatt" + ], + "vurdert": [ + "innvilget", + "avslatt" + ] + } + }, + "baneproblemer": { + "desks": [ + { + "group": "styret", + "moves": [ + { + "from": "open", + "label": "Tatt tak i", + "to": "tatt_tak_i" + }, + { + "from": "tatt_tak_i", + "label": "Ordet", + "to": "ordnet" + } + ], + "page": "/styret" + } + ], + "initial": "open", + "self_moves": [], + "transitions": { + "open": [ + "tatt_tak_i" + ], + "tatt_tak_i": [ + "ordnet" + ] + } + }, + "frivillige": { + "desks": [ + { + "group": "styret", + "moves": [ + { + "from": "kontaktet", + "label": "Plassert", + "to": "plassert" + }, + { + "from": "kontaktet", + "label": "Avslutt", + "to": "avslatt" + }, + { + "from": "open", + "label": "Kontakt", + "to": "kontaktet" + }, + { + "from": "open", + "label": "Avslutt", + "to": "avslatt" + } + ], + "page": "/styret" + } + ], + "initial": "open", + "self_moves": [], + "transitions": { + "kontaktet": [ + "plassert", + "avslatt" + ], + "open": [ + "kontaktet", + "avslatt" + ] + } + }, + "innmeldinger": { + "desks": [ + { + "group": "kasserer", + "moves": [ + { + "from": "godkjent", + "label": "Godkjenn og ta betalt", + "to": "betalt" + } + ], + "page": "/kasserer" + }, + { + "group": "trenere", + "moves": [ + { + "from": "godkjent", + "label": "Trukket ut", + "to": "trukket" + }, + { + "from": "open", + "label": "Godkjent", + "to": "godkjent" + }, + { + "from": "open", + "label": "Trukket ut", + "to": "trukket" + } + ], + "page": "/trenere" + } + ], + "initial": "open", + "self_moves": [], + "transitions": { + "godkjent": [ + "betalt", + "trukket" + ], + "open": [ + "godkjent", + "trukket" + ] + } + }, + "sponsorer": { + "desks": [ + { + "group": "styret", + "moves": [ + { + "from": "i_dialog", + "label": "Avtalt", + "to": "avtalt" + }, + { + "from": "i_dialog", + "label": "Avslutt", + "to": "avslatt" + }, + { + "from": "open", + "label": "Start dialog", + "to": "i_dialog" + }, + { + "from": "open", + "label": "Avslutt", + "to": "avslatt" + } + ], + "page": "/styret" + } + ], + "initial": "open", + "self_moves": [], + "transitions": { + "i_dialog": [ + "avtalt", + "avslatt" + ], + "open": [ + "i_dialog", + "avslatt" + ] + } + } + }, + "needs": [ + { + "done_when": [ + "betalt", + "trukket" + ], + "enters_as": null, + "handled_by": "trenere", + "id": "innmelding", + "lands_in": "innmeldinger", + "steps": [ + { + "alternative": "Er det på tide å melde inn?", + "expect": [ + "Er det på tide å melde inn?" + ], + "fields": [], + "options": [ + { + "description": "For foreldre som vil at barnet skal spille på laget sitt årskull.", + "name": "Er det på tide å melde inn?" + }, + { + "description": "Som frivillig trener, lagleder, sjåfør eller støttende bedrift.", + "name": "Vil du bidra til klubben?" + } + ], + "page": "/", + "question": "Hva hjelper vi deg med i dag?" + }, + { + "alternative": "Meld deg på laget", + "expect": [ + "Meld deg på laget" + ], + "fields": [ + { + "label": "Barns navn", + "name": "barnets_navn", + "optional": false, + "options": [], + "type": "text" + }, + { + "label": "Fødselsår", + "name": "fodselsar", + "optional": false, + "options": [ + "2010", + "2011", + "2012", + "2013", + "2014", + "2015", + "2016", + "2017", + "2018", + "2019", + "2020" + ], + "type": "select" + }, + { + "label": "Foresatt navn", + "name": "foresatt", + "optional": false, + "options": [], + "type": "text" + }, + { + "label": "Telefon", + "name": "telefon", + "optional": false, + "options": [], + "type": "tel" + }, + { + "label": "E-post", + "name": "epost", + "optional": false, + "options": [], + "type": "email" + }, + { + "label": "Spiller for", + "name": "spilt_for", + "optional": true, + "options": [], + "type": "text" + } + ], + "options": [ + { + "description": "Sett barnet på laget for sitt årskull. Treneren håndterer dette.", + "name": "Meld deg på laget" + }, + { + "description": "Vi hjelper deg å finne en løsning hvis du har vansker med å betale.", + "name": "Hjelp med avgift" + } + ], + "page": "/foresatte", + "question": "Har du barn som vil spille fotball?" + } + ], + "success": [ + "betalt" + ], + "wants": "at barnet får plass på laget for sitt årskull", + "who": "en forelder som vil ha ungen med på et lag" + }, + { + "done_when": [ + "innvilget", + "avslatt" + ], + "enters_as": null, + "handled_by": "styret", + "id": "avgiftssak", + "lands_in": "avgiftssaker", + "steps": [ + { + "alternative": "Er det på tide å melde inn?", + "expect": [ + "Er det på tide å melde inn?" + ], + "fields": [], + "options": [ + { + "description": "For foreldre som vil at barnet skal spille på laget sitt årskull.", + "name": "Er det på tide å melde inn?" + }, + { + "description": "Som frivillig trener, lagleder, sjåfør eller støttende bedrift.", + "name": "Vil du bidra til klubben?" + } + ], + "page": "/", + "question": "Hva hjelper vi deg med i dag?" + }, + { + "alternative": "Hjelp med avgift", + "expect": [ + "Hjelp med avgift" + ], + "fields": [ + { + "label": "Barns navn", + "name": "barnets_navn", + "optional": false, + "options": [], + "type": "text" + }, + { + "label": "Foresatt navn", + "name": "foresatt", + "optional": false, + "options": [], + "type": "text" + }, + { + "label": "Hva gjelder?", + "name": "hva_gjelder_det", + "optional": false, + "options": [], + "type": "textarea" + }, + { + "label": "Telefon", + "name": "telefon", + "optional": true, + "options": [], + "type": "tel" + } + ], + "options": [ + { + "description": "Sett barnet på laget for sitt årskull. Treneren håndterer dette.", + "name": "Meld deg på laget" + }, + { + "description": "Vi hjelper deg å finne en løsning hvis du har vansker med å betale.", + "name": "Hjelp med avgift" + } + ], + "page": "/foresatte", + "question": "Har du barn som vil spille fotball?" + } + ], + "success": [ + "innvilget" + ], + "wants": "å dele den opp, eller slippe den", + "who": "en forelder som sliter med treningsavgiften" + }, + { + "done_when": [ + "plassert", + "avslatt" + ], + "enters_as": null, + "handled_by": "styret", + "id": "frivillig", + "lands_in": "frivillige", + "steps": [ + { + "alternative": "Vil du bidra til klubben?", + "expect": [ + "Vil du bidra til klubben?" + ], + "fields": [], + "options": [ + { + "description": "For foreldre som vil at barnet skal spille på laget sitt årskull.", + "name": "Er det på tide å melde inn?" + }, + { + "description": "Som frivillig trener, lagleder, sjåfør eller støttende bedrift.", + "name": "Vil du bidra til klubben?" + } + ], + "page": "/", + "question": "Hva hjelper vi deg med i dag?" + }, + { + "alternative": "Bli brukt der det trengs", + "expect": [ + "Bli brukt der det trengs" + ], + "fields": [ + { + "label": "Navn", + "name": "navn", + "optional": false, + "options": [], + "type": "text" + }, + { + "label": "Telefon", + "name": "telefon", + "optional": false, + "options": [], + "type": "tel" + }, + { + "label": "Hva kan du hjelpe med?", + "name": "hva_kan_du", + "optional": false, + "options": [ + "Trene et lag", + "Være lagleder", + "Kjøre til kamper", + "Dugnad", + "Annet" + ], + "type": "select" + } + ], + "options": [ + { + "description": "Hjelp til som trener, lagleder eller på dugnad", + "name": "Bli brukt der det trengs" + }, + { + "description": "Lett dialog om hva bedriften kan bidra med", + "name": "Støtt klubben i bygda" + } + ], + "page": "/bidra", + "question": "Hva kan du bidra med?" + } + ], + "success": [ + "plassert" + ], + "wants": "å bli brukt der det trengs", + "who": "en som vil hjelpe til, som trener, lagleder, sjåfør eller på dugnad" + }, + { + "done_when": [ + "avtalt", + "avslatt" + ], + "enters_as": null, + "handled_by": "styret", + "id": "sponsor", + "lands_in": "sponsorer", + "steps": [ + { + "alternative": "Vil du bidra til klubben?", + "expect": [ + "Vil du bidra til klubben?" + ], + "fields": [], + "options": [ + { + "description": "For foreldre som vil at barnet skal spille på laget sitt årskull.", + "name": "Er det på tide å melde inn?" + }, + { + "description": "Som frivillig trener, lagleder, sjåfør eller støttende bedrift.", + "name": "Vil du bidra til klubben?" + } + ], + "page": "/", + "question": "Hva hjelper vi deg med i dag?" + }, + { + "alternative": "Støtt klubben i bygda", + "expect": [ + "Støtt klubben i bygda" + ], + "fields": [ + { + "label": "Bedrift", + "name": "bedrift", + "optional": false, + "options": [], + "type": "text" + }, + { + "label": "Kontaktperson", + "name": "kontaktperson", + "optional": false, + "options": [], + "type": "text" + }, + { + "label": "Telefon", + "name": "telefon", + "optional": false, + "options": [], + "type": "tel" + }, + { + "label": "Hva tenker dere om å støtte?", + "name": "hva_tenker_dere", + "optional": true, + "options": [], + "type": "textarea" + } + ], + "options": [ + { + "description": "Hjelp til som trener, lagleder eller på dugnad", + "name": "Bli brukt der det trengs" + }, + { + "description": "Lett dialog om hva bedriften kan bidra med", + "name": "Støtt klubben i bygda" + } + ], + "page": "/bidra", + "question": "Hva kan du bidra med?" + } + ], + "success": [ + "avtalt" + ], + "wants": "en prat om hva de kan bidra med, og en avtale", + "who": "en bedrift i bygda som vil støtte klubben" + }, + { + "done_when": [ + "ordnet" + ], + "enters_as": "trenere", + "handled_by": "styret", + "id": "baneproblem", + "lands_in": "baneproblemer", + "steps": [ + { + "alternative": "Rapporter baneproblem", + "expect": [ + "Rapporter baneproblem" + ], + "fields": [ + { + "label": "Hvor på anlegget?", + "name": "hvor", + "optional": false, + "options": [], + "type": "text" + }, + { + "label": "Hva er problemet?", + "name": "hva", + "optional": false, + "options": [], + "type": "textarea" + } + ], + "options": [ + { + "description": "Fortell oss hva du har sett eller mangler på anlegget, så tar vi vare på meldingen.", + "name": "Rapporter baneproblem" + } + ], + "page": "/trenere/baneproblem", + "question": "Er det noe på anlegget som trenger oppmerksomhet?" + } + ], + "success": [ + "ordnet" + ], + "wants": "at styret får vite det og ordner det", + "who": "en trener som ser at noe på anlegget ikke er i orden" + } + ], + "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." + } + ] +} \ No newline at end of file diff --git a/runs/fotballklubb-2026-09-22/needs.yaml b/runs/fotballklubb-2026-09-22/needs.yaml new file mode 100644 index 0000000..26691fc --- /dev/null +++ b/runs/fotballklubb-2026-09-22/needs.yaml @@ -0,0 +1,125 @@ +needs: +- also_moved_by: + - kasserer + done_when: + - betalt + - trukket + enters: / + handled_by: trenere + id: innmelding + lands_in: innmeldinger + max_fields: 5 + max_steps: 2 + stages: + - open + - godkjent + - betalt + - trukket + success: + - betalt + via: Er det på tide å melde inn? + wants: at barnet får plass på laget for sitt årskull + who: en forelder som vil ha ungen med på et lag +- done_when: + - innvilget + - avslatt + enters: / + handled_by: styret + id: avgiftssak + lands_in: avgiftssaker + max_fields: 3 + max_steps: 2 + stages: + - open + - vurdert + - innvilget + - avslatt + success: + - innvilget + via: Er det på tide å melde inn? + wants: å dele den opp, eller slippe den + who: en forelder som sliter med treningsavgiften +- done_when: + - plassert + - avslatt + enters: / + handled_by: styret + id: frivillig + lands_in: frivillige + max_fields: 3 + max_steps: 2 + stages: + - open + - kontaktet + - plassert + - avslatt + success: + - plassert + via: Vil du bidra til klubben? + wants: å bli brukt der det trengs + who: en som vil hjelpe til, som trener, lagleder, sjåfør eller på dugnad +- done_when: + - avtalt + - avslatt + enters: / + handled_by: styret + id: sponsor + lands_in: sponsorer + max_fields: 3 + max_steps: 2 + stages: + - open + - i_dialog + - avtalt + - avslatt + success: + - avtalt + via: Vil du bidra til klubben? + wants: en prat om hva de kan bidra med, og en avtale + who: en bedrift i bygda som vil støtte klubben +- done_when: + - ordnet + enters: /trenere/baneproblem + enters_as: trenere + handled_by: styret + id: baneproblem + lands_in: baneproblemer + max_fields: 2 + max_steps: 1 + stages: + - open + - tatt_tak_i + - ordnet + success: + - ordnet + via: Rapporter baneproblem + wants: at styret får vite det og ordner det + who: en trener som ser at noe på anlegget ikke er i orden +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. diff --git a/runs/fotballklubb-2026-09-22/questions/bidra/index.yaml b/runs/fotballklubb-2026-09-22/questions/bidra/index.yaml new file mode 100644 index 0000000..8ae09b4 --- /dev/null +++ b/runs/fotballklubb-2026-09-22/questions/bidra/index.yaml @@ -0,0 +1,52 @@ +alternatives: +- action: /received/frivillig + consequence: + - Meldeg inn + description: Hjelp til som trener, lagleder eller på dugnad + features: + - name: Bli frivillig + requirements: + - label: Navn + name: navn + type: text + - label: Telefon + name: telefon + type: tel + - label: Hva kan du hjelpe med? + name: hva_kan_du + options: + - Trene et lag + - Være lagleder + - Kjøre til kamper + - Dugnad + - Annet + type: select + name: Bli brukt der det trengs + record_as: frivillige +- action: /received/sponsor + consequence: + - Kontakt oss + description: Lett dialog om hva bedriften kan bidra med + features: + - name: Sponsor-samtale + requirements: + - label: Bedrift + name: bedrift + type: text + - label: Kontaktperson + name: kontaktperson + type: text + - label: Telefon + name: telefon + type: tel + - label: Hva tenker dere om å støtte? + name: hva_tenker_dere + optional: true + type: textarea + name: Støtt klubben i bygda + record_as: sponsorer +description: Er du interessert i å bli med på laget? +name: Hva kan du bidra med? +responsible: + contact: kari@liail.example + name: Kari Lien diff --git a/runs/fotballklubb-2026-09-22/questions/foresatte/index.yaml b/runs/fotballklubb-2026-09-22/questions/foresatte/index.yaml new file mode 100644 index 0000000..6a56add --- /dev/null +++ b/runs/fotballklubb-2026-09-22/questions/foresatte/index.yaml @@ -0,0 +1,68 @@ +alternatives: +- action: /received/innmelding + consequence: + - Meld på + description: Sett barnet på laget for sitt årskull. Treneren håndterer dette. + features: + - name: Innmelding + requirements: + - label: Barns navn + name: barnets_navn + type: text + - label: Fødselsår + name: fodselsar + options: + - '2010' + - '2011' + - '2012' + - '2013' + - '2014' + - '2015' + - '2016' + - '2017' + - '2018' + - '2019' + - '2020' + type: select + - label: Foresatt navn + name: foresatt + type: text + - label: Telefon + name: telefon + type: tel + - label: E-post + name: epost + type: email + - label: Spiller for + name: spilt_for + optional: true + type: text + name: Meld deg på laget + record_as: innmeldinger +- action: /received/avgiftssak + consequence: + - Del opp avgift + description: Vi hjelper deg å finne en løsning hvis du har vansker med å betale. + features: + - name: Avgiftssak + requirements: + - label: Barns navn + name: barnets_navn + type: text + - label: Foresatt navn + name: foresatt + type: text + - label: Hva gjelder? + name: hva_gjelder_det + type: textarea + - label: Telefon + name: telefon + optional: true + type: tel + name: Hjelp med avgift + record_as: avgiftssaker +description: Har du barn som vil spille fotball, eller hjelpe klubben på? +name: Har du barn som vil spille fotball? +responsible: + contact: kari@liail.example + name: Kari Lien diff --git a/runs/fotballklubb-2026-09-22/questions/index.yaml b/runs/fotballklubb-2026-09-22/questions/index.yaml new file mode 100644 index 0000000..5fe098c --- /dev/null +++ b/runs/fotballklubb-2026-09-22/questions/index.yaml @@ -0,0 +1,16 @@ +alternatives: +- action: /foresatte + consequence: + - Meld inn barnet + description: For foreldre som vil at barnet skal spille på laget sitt årskull. + name: Er det på tide å melde inn? +- action: /bidra + consequence: + - Hjelp klubben + description: Som frivillig trener, lagleder, sjåfør eller støttende bedrift. + name: Vil du bidra til klubben? +description: Er du foreldre, trener eller representant fra lokal samfunn? Her finner du veien inn til det du trenger. +name: Hva hjelper vi deg med i dag? +responsible: + contact: kari@liail.example + name: Kari Lien diff --git a/runs/fotballklubb-2026-09-22/questions/kasserer/_section.yaml b/runs/fotballklubb-2026-09-22/questions/kasserer/_section.yaml new file mode 100644 index 0000000..2f8af2f --- /dev/null +++ b/runs/fotballklubb-2026-09-22/questions/kasserer/_section.yaml @@ -0,0 +1 @@ +qualifies: kasserer diff --git a/runs/fotballklubb-2026-09-22/questions/kasserer/index.yaml b/runs/fotballklubb-2026-09-22/questions/kasserer/index.yaml new file mode 100644 index 0000000..6c5f663 --- /dev/null +++ b/runs/fotballklubb-2026-09-22/questions/kasserer/index.yaml @@ -0,0 +1,23 @@ +alternatives: +- action: /kasserer + consequence: + - Lagre endringer + description: Her finner du saker som trenger godkjennelse for at barnet kan spille. + features: + - description: '' + name: '' + resource: + requires_group: kasserer + source: + bucket: innmeldinger + kind: kv + transitions: + - from: godkjent + label: Godkjenn og ta betalt + to: betalt + name: Innmeldinger som trenger godkjennelse +description: Kassereren tar seg av innmeldinger, avgifter og frivillighet. +name: Hva trenger din oppmerksomhet i dag? +responsible: + contact: kari@liail.example + name: Kari Lien diff --git a/runs/fotballklubb-2026-09-22/questions/received/avgiftssak.yaml b/runs/fotballklubb-2026-09-22/questions/received/avgiftssak.yaml new file mode 100644 index 0000000..79e8966 --- /dev/null +++ b/runs/fotballklubb-2026-09-22/questions/received/avgiftssak.yaml @@ -0,0 +1,10 @@ +alternatives: +- description: Når styret har vurdert sakken, vil dere få beskjed om resultatet. + name: Hva skjer neste? +- action: / + consequence: + - Tilbake + description: '' + name: Tilbake +description: Styret behandler avgiftssaker for å finne en løsning som passer dere. +name: Hva skjer med avgiftssaken din? diff --git a/runs/fotballklubb-2026-09-22/questions/received/frivillig.yaml b/runs/fotballklubb-2026-09-22/questions/received/frivillig.yaml new file mode 100644 index 0000000..1fa6689 --- /dev/null +++ b/runs/fotballklubb-2026-09-22/questions/received/frivillig.yaml @@ -0,0 +1,10 @@ +alternatives: +- description: Styret vil behandle meldingen din og finne et passende oppdrag for deg. + name: Behandling på vei +- action: / + consequence: + - Tilbake + description: '' + name: Tilbake +description: Du har sendt inn en melding om at du vil bidra frivillig. Her ser du status og hva som skjer videre. +name: Hva skjer nå med min melding? diff --git a/runs/fotballklubb-2026-09-22/questions/received/innmelding.yaml b/runs/fotballklubb-2026-09-22/questions/received/innmelding.yaml new file mode 100644 index 0000000..4f8ab4e --- /dev/null +++ b/runs/fotballklubb-2026-09-22/questions/received/innmelding.yaml @@ -0,0 +1,10 @@ +alternatives: +- description: Så snart lagets trener har lest kjemaet, blir det vurdert om barnet får plass. + name: Venter på trenerens vurdering +- action: / + consequence: + - Tilbake + description: '' + name: Tilbake +description: Du har sendt inn en innmeldingskjema for barnet ditt. Her finner du informasjon om hva som skjer videre. +name: Hva skjer nå med innmeldingen? diff --git a/runs/fotballklubb-2026-09-22/questions/received/sponsor.yaml b/runs/fotballklubb-2026-09-22/questions/received/sponsor.yaml new file mode 100644 index 0000000..20cd845 --- /dev/null +++ b/runs/fotballklubb-2026-09-22/questions/received/sponsor.yaml @@ -0,0 +1,10 @@ +alternatives: +- description: Styret vil vurdere meldingen og ta kontakt med deg innen kort tid. + name: Hva skjer nå? +- action: / + consequence: + - Tilbake + description: '' + name: Tilbake +description: Kontaktmeldingen din er mottatt av klubbens styret. De jobber for å få det løst raskt. +name: Hva skjer med min melding? diff --git a/runs/fotballklubb-2026-09-22/questions/styret/_section.yaml b/runs/fotballklubb-2026-09-22/questions/styret/_section.yaml new file mode 100644 index 0000000..5a34160 --- /dev/null +++ b/runs/fotballklubb-2026-09-22/questions/styret/_section.yaml @@ -0,0 +1 @@ +qualifies: styret diff --git a/runs/fotballklubb-2026-09-22/questions/styret/index.yaml b/runs/fotballklubb-2026-09-22/questions/styret/index.yaml new file mode 100644 index 0000000..9dbeed6 --- /dev/null +++ b/runs/fotballklubb-2026-09-22/questions/styret/index.yaml @@ -0,0 +1,104 @@ +alternatives: +- action: /styret + consequence: + - Bekreft + description: Her finner du saker rundt treningavgifter for barn. Du kan dele opp betalingen eller søke om å slippe unna. + features: + - description: '' + name: '' + resource: + requires_group: styret + source: + bucket: avgiftssaker + kind: kv + transitions: + - from: open + label: Vurdert + to: vurdert + - from: open + label: Avslutt + to: avslatt + - from: vurdert + label: Innvilget + to: innvilget + - from: vurdert + label: Avslutt + to: avslatt + name: Avgiftssaker +- action: /styret + consequence: + - Bekreft + description: Meld når noe på anlegget trenger oppmerksomhet. Styret tar imeldingen og sørger for at det blir ordnet. + features: + - description: '' + name: '' + resource: + requires_group: styret + source: + bucket: baneproblemer + kind: kv + transitions: + - from: open + label: Tatt tak i + to: tatt_tak_i + - from: tatt_tak_i + label: Ordet + to: ordnet + name: Baneproblemer +- action: /styret + consequence: + - Bekreft + description: Her kan du melde deg som frivillig hjelper. Styret finner ut hvor trengs hjelp, f.eks. som trener, lagleder, sjåfør eller på dugnad. + features: + - description: '' + name: '' + resource: + requires_group: styret + source: + bucket: frivillige + kind: kv + transitions: + - from: kontaktet + label: Plassert + to: plassert + - from: kontaktet + label: Avslutt + to: avslatt + - from: open + label: Kontakt + to: kontaktet + - from: open + label: Avslutt + to: avslatt + name: Frivillige +- action: /styret + consequence: + - Bekreft + description: Her håndteres samarbeidet med bedrifter i bygda som støtter klubben. Du finner hva de kan bidra med og avtaler sammen. + features: + - description: '' + name: '' + resource: + requires_group: styret + source: + bucket: sponsorer + kind: kv + transitions: + - from: i_dialog + label: Avtalt + to: avtalt + - from: i_dialog + label: Avslutt + to: avslatt + - from: open + label: Start dialog + to: i_dialog + - from: open + label: Avslutt + to: avslatt + name: Sponsorer +description: Her kan du se og behandle saker som trenger oppmerksomhet fra styret. +name: Hva trenger din oppmerksomhet? +responsible: + contact: kari@liail.example + name: Kari Lien diff --git a/runs/fotballklubb-2026-09-22/questions/trenere/_section.yaml b/runs/fotballklubb-2026-09-22/questions/trenere/_section.yaml new file mode 100644 index 0000000..03a1f29 --- /dev/null +++ b/runs/fotballklubb-2026-09-22/questions/trenere/_section.yaml @@ -0,0 +1 @@ +qualifies: trenere diff --git a/runs/fotballklubb-2026-09-22/questions/trenere/baneproblem-sent.yaml b/runs/fotballklubb-2026-09-22/questions/trenere/baneproblem-sent.yaml new file mode 100644 index 0000000..5c15320 --- /dev/null +++ b/runs/fotballklubb-2026-09-22/questions/trenere/baneproblem-sent.yaml @@ -0,0 +1,10 @@ +alternatives: +- description: Styret vil bli varslet og jobbe for å få rettet problemet. + name: Så snart styret har sett på det +- action: /trenere + consequence: + - Tilbake + description: '' + name: Tilbake +description: Du har meldt et problem med banen. Her ser du hvem som tar vare på meldingen og hva som skjer videre. +name: Hvem tar vare på meldingen? diff --git a/runs/fotballklubb-2026-09-22/questions/trenere/baneproblem.yaml b/runs/fotballklubb-2026-09-22/questions/trenere/baneproblem.yaml new file mode 100644 index 0000000..91e3d69 --- /dev/null +++ b/runs/fotballklubb-2026-09-22/questions/trenere/baneproblem.yaml @@ -0,0 +1,22 @@ +alternatives: +- action: /trenere/baneproblem-sent + consequence: + - Send melding + description: Fortell oss hva du har sett eller mangler på anlegget, så tar vi vare på meldingen. + features: + - name: Meld baneproblem + requirements: + - label: Hvor på anlegget? + name: hvor + type: text + - label: Hva er problemet? + name: hva + type: textarea + name: Rapporter baneproblem + record_as: baneproblemer +description: Her kan du rapportere et problem med fotballanlegget. +followup: false +name: Er det noe på anlegget som trenger oppmerksomhet? +responsible: + contact: kari@liail.example + name: Kari Lien diff --git a/runs/fotballklubb-2026-09-22/questions/trenere/index.yaml b/runs/fotballklubb-2026-09-22/questions/trenere/index.yaml new file mode 100644 index 0000000..b19b30e --- /dev/null +++ b/runs/fotballklubb-2026-09-22/questions/trenere/index.yaml @@ -0,0 +1,34 @@ +alternatives: +- action: /trenere + consequence: + - Lagre + description: Her finner du saker om å få med barnet på laget. Styring og økonomi håndteres av trenerne og styret. + features: + - description: '' + name: '' + resource: + requires_group: trenere + source: + bucket: innmeldinger + kind: kv + transitions: + - from: godkjent + label: Trukket ut + to: trukket + - from: open + label: Godkjent + to: godkjent + - from: open + label: Trukket ut + to: trukket + name: Innmelding og lagplass +- action: /trenere/baneproblem + consequence: + - Registrer + description: Meld deg inn om noe som trenger oppmerksomhet på anlegget. + name: Baneproblem +description: Side for trenere som trenger oversikt over saker og handlinger. +name: Hva trenger du hjelp med i dag? +responsible: + contact: kari@liail.example + name: Kari Lien diff --git a/runs/fotballklubb-2026-09-22/rate.json b/runs/fotballklubb-2026-09-22/rate.json new file mode 100644 index 0000000..3684637 --- /dev/null +++ b/runs/fotballklubb-2026-09-22/rate.json @@ -0,0 +1,207 @@ +{ + "avgiftssak": { + "pages": [ + { + "control": { + "asked": 0, + "next": null, + "which": 0 + }, + "control_ok": true, + "followup_shown": false, + "lix": 34.925925925925924, + "options": 2, + "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": 33.361635220125784, + "options": 2, + "overloaded": false, + "page": "/foresatte", + "personas": 2, + "required_fields": 3, + "understanding": { + "asked": 2, + "next": 2, + "which": 2 + } + } + ], + "steps": 2 + }, + "baneproblem": { + "pages": [ + { + "control": { + "asked": 0, + "next": 0, + "which": 0 + }, + "control_ok": true, + "followup_shown": true, + "lix": 30.84285714285714, + "options": 1, + "overloaded": false, + "page": "/trenere/baneproblem", + "personas": 1, + "required_fields": 2, + "understanding": { + "asked": 1, + "next": 1, + "which": 1 + } + } + ], + "steps": 1 + }, + "frivillig": { + "pages": [ + { + "control": { + "asked": 0, + "next": null, + "which": 0 + }, + "control_ok": true, + "followup_shown": false, + "lix": 34.925925925925924, + "options": 2, + "overloaded": false, + "page": "/", + "personas": 2, + "required_fields": 0, + "understanding": { + "asked": 0, + "next": null, + "which": 2 + } + }, + { + "control": { + "asked": 1, + "next": 0, + "which": 0 + }, + "control_ok": false, + "followup_shown": true, + "lix": 23.814814814814817, + "options": 2, + "overloaded": false, + "page": "/bidra", + "personas": 2, + "required_fields": 3, + "understanding": { + "asked": 2, + "next": 2, + "which": 2 + } + } + ], + "steps": 2 + }, + "innmelding": { + "pages": [ + { + "control": { + "asked": 0, + "next": null, + "which": 0 + }, + "control_ok": true, + "followup_shown": false, + "lix": 34.925925925925924, + "options": 2, + "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.46031746031746, + "options": 2, + "overloaded": false, + "page": "/foresatte", + "personas": 2, + "required_fields": 5, + "understanding": { + "asked": 2, + "next": 2, + "which": 2 + } + } + ], + "steps": 2 + }, + "sponsor": { + "pages": [ + { + "control": { + "asked": 0, + "next": null, + "which": 0 + }, + "control_ok": true, + "followup_shown": false, + "lix": 34.925925925925924, + "options": 2, + "overloaded": false, + "page": "/", + "personas": 2, + "required_fields": 0, + "understanding": { + "asked": 1, + "next": null, + "which": 2 + } + }, + { + "control": { + "asked": 1, + "next": 0, + "which": 0 + }, + "control_ok": false, + "followup_shown": true, + "lix": 24.666666666666668, + "options": 2, + "overloaded": false, + "page": "/bidra", + "personas": 2, + "required_fields": 3, + "understanding": { + "asked": 2, + "next": 2, + "which": 2 + } + } + ], + "steps": 2 + } +} \ No newline at end of file diff --git a/runs/fotballklubb-2026-09-22/rate.txt b/runs/fotballklubb-2026-09-22/rate.txt new file mode 100644 index 0000000..79e18ff --- /dev/null +++ b/runs/fotballklubb-2026-09-22/rate.txt @@ -0,0 +1,10 @@ +need LIX which asked next gutted twin says page load +innmelding @/ 35 easy 2/2 0/2 - 0/0/- ok 2 options, 0 required +innmelding @/foresatte 26 very easy 2/2 2/2 2/2 0/0/0 ok 2 options, 5 required +avgiftssak @/ 35 easy 2/2 0/2 - 0/0/- ok 2 options, 0 required +avgiftssak @/foresatte 33 easy 2/2 2/2 2/2 0/0/0 ok 2 options, 3 required +frivillig @/ 35 easy 2/2 0/2 - 0/0/- ok 2 options, 0 required +frivillig @/bidra 24 very easy 2/2 2/2 2/2 0/1/0 FAILED: asked 2 options, 3 required +sponsor @/ 35 easy 2/2 1/2 - 0/0/- ok 2 options, 0 required +sponsor @/bidra 25 very easy 2/2 2/2 2/2 0/1/0 FAILED: asked 2 options, 3 required +baneproblem 31 easy 1/1 1/1 1/1 0/0/0 ok 1 options, 2 required diff --git a/runs/fotballklubb-2026-09-22/score-full.txt b/runs/fotballklubb-2026-09-22/score-full.txt new file mode 100644 index 0000000..b504f11 --- /dev/null +++ b/runs/fotballklubb-2026-09-22/score-full.txt @@ -0,0 +1,3 @@ +MISROUTE: permittert@/foresatte: picked "Meld deg på laget" (0.85), the need is met by ["Hjelp med avgift"] +MISROUTE: stor-bil@/bidra: picked "Støtt klubben i bygda" (0.85), the need is met by ["Bli brukt der det trengs"] +wording: 14/16 routed right (88%) diff --git a/runs/fotballklubb-2026-09-22/score-skim.txt b/runs/fotballklubb-2026-09-22/score-skim.txt new file mode 100644 index 0000000..b9b7344 --- /dev/null +++ b/runs/fotballklubb-2026-09-22/score-skim.txt @@ -0,0 +1,6 @@ +MISROUTE: ny-i-bygda@/: picked "Vil du bidra til klubben?" (0.95), the need is met by ["Er det på tide å melde inn?"] +MISROUTE: tvillinger@/: picked "Vil du bidra til klubben?" (0.95), the need is met by ["Er det på tide å melde inn?"] +MISROUTE: permittert@/: picked "Vil du bidra til klubben?" (0.95), the need is met by ["Er det på tide å melde inn?"] +MISROUTE: permittert@/foresatte: picked "Meld deg på laget" (0.85), the need is met by ["Hjelp med avgift"] +MISROUTE: stor-bil@/bidra: picked "Støtt klubben i bygda" (0.85), the need is met by ["Bli brukt der det trengs"] +wording: 11/16 routed right (69%) diff --git a/runs/fotballklubb-2026-09-22/site.yaml b/runs/fotballklubb-2026-09-22/site.yaml new file mode 100644 index 0000000..e7785ad --- /dev/null +++ b/runs/fotballklubb-2026-09-22/site.yaml @@ -0,0 +1,2 @@ +lang: nb +title: Lia IL Fotball diff --git a/runs/fotballklubb-2026-09-22/tasks-full.jsonl b/runs/fotballklubb-2026-09-22/tasks-full.jsonl new file mode 100644 index 0000000..144cfac --- /dev/null +++ b/runs/fotballklubb-2026-09-22/tasks-full.jsonl @@ -0,0 +1,16 @@ +{"id":"ny-i-bygda@/","persona":"ny-i-bygda","need":"innmelding","page":"/","state":{"body":"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?"},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva hjelper vi deg med i dag?\". Which alternative do they choose?","criteria":{"Er det på tide å melde inn?":"For foreldre som vil at barnet skal spille på laget sitt årskull.","Vil du bidra til klubben?":"Som frivillig trener, lagleder, sjåfør eller støttende bedrift."}}},"expect":["Er det på tide å melde inn?"]} +{"id":"ny-i-bygda@/foresatte","persona":"ny-i-bygda","need":"innmelding","page":"/foresatte","state":{"body":"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?"},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Har du barn som vil spille fotball?\". Which alternative do they choose?","criteria":{"Hjelp med avgift":"Vi hjelper deg å finne en løsning hvis du har vansker med å betale.","Meld deg på laget":"Sett barnet på laget for sitt årskull. Treneren håndterer dette."}}},"expect":["Meld deg på laget"]} +{"id":"tvillinger@/","persona":"tvillinger","need":"innmelding","page":"/","state":{"body":"Jeg har tvillingjenter på sju som maser om å begynne. Er det plass, og hva koster det?"},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva hjelper vi deg med i dag?\". Which alternative do they choose?","criteria":{"Er det på tide å melde inn?":"For foreldre som vil at barnet skal spille på laget sitt årskull.","Vil du bidra til klubben?":"Som frivillig trener, lagleder, sjåfør eller støttende bedrift."}}},"expect":["Er det på tide å melde inn?"]} +{"id":"tvillinger@/foresatte","persona":"tvillinger","need":"innmelding","page":"/foresatte","state":{"body":"Jeg har tvillingjenter på sju som maser om å begynne. Er det plass, og hva koster det?"},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Har du barn som vil spille fotball?\". Which alternative do they choose?","criteria":{"Hjelp med avgift":"Vi hjelper deg å finne en løsning hvis du har vansker med å betale.","Meld deg på laget":"Sett barnet på laget for sitt årskull. Treneren håndterer dette."}}},"expect":["Meld deg på laget"]} +{"id":"alenefar@/","persona":"alenefar","need":"avgiftssak","page":"/","state":{"body":"Jeg er alene med tre unger og treningsavgiften for alle tre blir for mye på en gang. Går det an å dele den opp?"},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva hjelper vi deg med i dag?\". Which alternative do they choose?","criteria":{"Er det på tide å melde inn?":"For foreldre som vil at barnet skal spille på laget sitt årskull.","Vil du bidra til klubben?":"Som frivillig trener, lagleder, sjåfør eller støttende bedrift."}}},"expect":["Er det på tide å melde inn?"]} +{"id":"alenefar@/foresatte","persona":"alenefar","need":"avgiftssak","page":"/foresatte","state":{"body":"Jeg er alene med tre unger og treningsavgiften for alle tre blir for mye på en gang. Går det an å dele den opp?"},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Har du barn som vil spille fotball?\". Which alternative do they choose?","criteria":{"Hjelp med avgift":"Vi hjelper deg å finne en løsning hvis du har vansker med å betale.","Meld deg på laget":"Sett barnet på laget for sitt årskull. Treneren håndterer dette."}}},"expect":["Hjelp med avgift"]} +{"id":"permittert@/","persona":"permittert","need":"avgiftssak","page":"/","state":{"body":"Jeg ble permittert i vinter. Kan dattera mi fortsette å spille selv om vi ikke klarer avgiften akkurat nå?"},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva hjelper vi deg med i dag?\". Which alternative do they choose?","criteria":{"Er det på tide å melde inn?":"For foreldre som vil at barnet skal spille på laget sitt årskull.","Vil du bidra til klubben?":"Som frivillig trener, lagleder, sjåfør eller støttende bedrift."}}},"expect":["Er det på tide å melde inn?"]} +{"id":"permittert@/foresatte","persona":"permittert","need":"avgiftssak","page":"/foresatte","state":{"body":"Jeg ble permittert i vinter. Kan dattera mi fortsette å spille selv om vi ikke klarer avgiften akkurat nå?"},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Har du barn som vil spille fotball?\". Which alternative do they choose?","criteria":{"Hjelp med avgift":"Vi hjelper deg å finne en løsning hvis du har vansker med å betale.","Meld deg på laget":"Sett barnet på laget for sitt årskull. Treneren håndterer dette."}}},"expect":["Hjelp med avgift"]} +{"id":"pensjonist@/","persona":"pensjonist","need":"frivillig","page":"/","state":{"body":"Jeg er pensjonert og spilte selv i mange år. Har dere bruk for en som kan ta de minste et par kvelder i uka?"},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva hjelper vi deg med i dag?\". Which alternative do they choose?","criteria":{"Er det på tide å melde inn?":"For foreldre som vil at barnet skal spille på laget sitt årskull.","Vil du bidra til klubben?":"Som frivillig trener, lagleder, sjåfør eller støttende bedrift."}}},"expect":["Vil du bidra til klubben?"]} +{"id":"pensjonist@/bidra","persona":"pensjonist","need":"frivillig","page":"/bidra","state":{"body":"Jeg er pensjonert og spilte selv i mange år. Har dere bruk for en som kan ta de minste et par kvelder i uka?"},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva kan du bidra med?\". Which alternative do they choose?","criteria":{"Bli brukt der det trengs":"Hjelp til som trener, lagleder eller på dugnad","Støtt klubben i bygda":"Lett dialog om hva bedriften kan bidra med"}}},"expect":["Bli brukt der det trengs"]} +{"id":"stor-bil@/","persona":"stor-bil","need":"frivillig","page":"/","state":{"body":"Jeg kan ikke trene noen, men jeg har stor bil og kan kjøre til bortekamper."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva hjelper vi deg med i dag?\". Which alternative do they choose?","criteria":{"Er det på tide å melde inn?":"For foreldre som vil at barnet skal spille på laget sitt årskull.","Vil du bidra til klubben?":"Som frivillig trener, lagleder, sjåfør eller støttende bedrift."}}},"expect":["Vil du bidra til klubben?"]} +{"id":"stor-bil@/bidra","persona":"stor-bil","need":"frivillig","page":"/bidra","state":{"body":"Jeg kan ikke trene noen, men jeg har stor bil og kan kjøre til bortekamper."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva kan du bidra med?\". Which alternative do they choose?","criteria":{"Bli brukt der det trengs":"Hjelp til som trener, lagleder eller på dugnad","Støtt klubben i bygda":"Lett dialog om hva bedriften kan bidra med"}}},"expect":["Bli brukt der det trengs"]} +{"id":"rorlegger@/","persona":"rorlegger","need":"sponsor","page":"/","state":{"body":"Jeg driver rørleggerfirma her i bygda og vil gjerne ha logoen vår på draktene til et lag. Hvem snakker jeg med?"},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva hjelper vi deg med i dag?\". Which alternative do they choose?","criteria":{"Er det på tide å melde inn?":"For foreldre som vil at barnet skal spille på laget sitt årskull.","Vil du bidra til klubben?":"Som frivillig trener, lagleder, sjåfør eller støttende bedrift."}}},"expect":["Vil du bidra til klubben?"]} +{"id":"rorlegger@/bidra","persona":"rorlegger","need":"sponsor","page":"/bidra","state":{"body":"Jeg driver rørleggerfirma her i bygda og vil gjerne ha logoen vår på draktene til et lag. Hvem snakker jeg med?"},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva kan du bidra med?\". Which alternative do they choose?","criteria":{"Bli brukt der det trengs":"Hjelp til som trener, lagleder eller på dugnad","Støtt klubben i bygda":"Lett dialog om hva bedriften kan bidra med"}}},"expect":["Støtt klubben i bygda"]} +{"id":"kafeen@/","persona":"kafeen","need":"sponsor","page":"/","state":{"body":"Vi har kafé i sentrum og kan bidra med noe til cupen i mai, kanskje vafler eller litt penger."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva hjelper vi deg med i dag?\". Which alternative do they choose?","criteria":{"Er det på tide å melde inn?":"For foreldre som vil at barnet skal spille på laget sitt årskull.","Vil du bidra til klubben?":"Som frivillig trener, lagleder, sjåfør eller støttende bedrift."}}},"expect":["Vil du bidra til klubben?"]} +{"id":"kafeen@/bidra","persona":"kafeen","need":"sponsor","page":"/bidra","state":{"body":"Vi har kafé i sentrum og kan bidra med noe til cupen i mai, kanskje vafler eller litt penger."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva kan du bidra med?\". Which alternative do they choose?","criteria":{"Bli brukt der det trengs":"Hjelp til som trener, lagleder eller på dugnad","Støtt klubben i bygda":"Lett dialog om hva bedriften kan bidra med"}}},"expect":["Støtt klubben i bygda"]} diff --git a/runs/fotballklubb-2026-09-22/tasks-skim.jsonl b/runs/fotballklubb-2026-09-22/tasks-skim.jsonl new file mode 100644 index 0000000..219b4ac --- /dev/null +++ b/runs/fotballklubb-2026-09-22/tasks-skim.jsonl @@ -0,0 +1,16 @@ +{"id":"ny-i-bygda@/","persona":"ny-i-bygda","need":"innmelding","page":"/","state":{"body":"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?"},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva hjelper vi deg med i dag?\". Which alternative do they choose?","criteria":{"Er det på tide å melde inn?":"Er det på tide å melde inn?","Vil du bidra til klubben?":"Vil du bidra til klubben?"}}},"expect":["Er det på tide å melde inn?"]} +{"id":"ny-i-bygda@/foresatte","persona":"ny-i-bygda","need":"innmelding","page":"/foresatte","state":{"body":"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?"},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Har du barn som vil spille fotball?\". Which alternative do they choose?","criteria":{"Hjelp med avgift":"Hjelp med avgift","Meld deg på laget":"Meld deg på laget"}}},"expect":["Meld deg på laget"]} +{"id":"tvillinger@/","persona":"tvillinger","need":"innmelding","page":"/","state":{"body":"Jeg har tvillingjenter på sju som maser om å begynne. Er det plass, og hva koster det?"},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva hjelper vi deg med i dag?\". Which alternative do they choose?","criteria":{"Er det på tide å melde inn?":"Er det på tide å melde inn?","Vil du bidra til klubben?":"Vil du bidra til klubben?"}}},"expect":["Er det på tide å melde inn?"]} +{"id":"tvillinger@/foresatte","persona":"tvillinger","need":"innmelding","page":"/foresatte","state":{"body":"Jeg har tvillingjenter på sju som maser om å begynne. Er det plass, og hva koster det?"},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Har du barn som vil spille fotball?\". Which alternative do they choose?","criteria":{"Hjelp med avgift":"Hjelp med avgift","Meld deg på laget":"Meld deg på laget"}}},"expect":["Meld deg på laget"]} +{"id":"alenefar@/","persona":"alenefar","need":"avgiftssak","page":"/","state":{"body":"Jeg er alene med tre unger og treningsavgiften for alle tre blir for mye på en gang. Går det an å dele den opp?"},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva hjelper vi deg med i dag?\". Which alternative do they choose?","criteria":{"Er det på tide å melde inn?":"Er det på tide å melde inn?","Vil du bidra til klubben?":"Vil du bidra til klubben?"}}},"expect":["Er det på tide å melde inn?"]} +{"id":"alenefar@/foresatte","persona":"alenefar","need":"avgiftssak","page":"/foresatte","state":{"body":"Jeg er alene med tre unger og treningsavgiften for alle tre blir for mye på en gang. Går det an å dele den opp?"},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Har du barn som vil spille fotball?\". Which alternative do they choose?","criteria":{"Hjelp med avgift":"Hjelp med avgift","Meld deg på laget":"Meld deg på laget"}}},"expect":["Hjelp med avgift"]} +{"id":"permittert@/","persona":"permittert","need":"avgiftssak","page":"/","state":{"body":"Jeg ble permittert i vinter. Kan dattera mi fortsette å spille selv om vi ikke klarer avgiften akkurat nå?"},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva hjelper vi deg med i dag?\". Which alternative do they choose?","criteria":{"Er det på tide å melde inn?":"Er det på tide å melde inn?","Vil du bidra til klubben?":"Vil du bidra til klubben?"}}},"expect":["Er det på tide å melde inn?"]} +{"id":"permittert@/foresatte","persona":"permittert","need":"avgiftssak","page":"/foresatte","state":{"body":"Jeg ble permittert i vinter. Kan dattera mi fortsette å spille selv om vi ikke klarer avgiften akkurat nå?"},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Har du barn som vil spille fotball?\". Which alternative do they choose?","criteria":{"Hjelp med avgift":"Hjelp med avgift","Meld deg på laget":"Meld deg på laget"}}},"expect":["Hjelp med avgift"]} +{"id":"pensjonist@/","persona":"pensjonist","need":"frivillig","page":"/","state":{"body":"Jeg er pensjonert og spilte selv i mange år. Har dere bruk for en som kan ta de minste et par kvelder i uka?"},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva hjelper vi deg med i dag?\". Which alternative do they choose?","criteria":{"Er det på tide å melde inn?":"Er det på tide å melde inn?","Vil du bidra til klubben?":"Vil du bidra til klubben?"}}},"expect":["Vil du bidra til klubben?"]} +{"id":"pensjonist@/bidra","persona":"pensjonist","need":"frivillig","page":"/bidra","state":{"body":"Jeg er pensjonert og spilte selv i mange år. Har dere bruk for en som kan ta de minste et par kvelder i uka?"},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva kan du bidra med?\". Which alternative do they choose?","criteria":{"Bli brukt der det trengs":"Bli brukt der det trengs","Støtt klubben i bygda":"Støtt klubben i bygda"}}},"expect":["Bli brukt der det trengs"]} +{"id":"stor-bil@/","persona":"stor-bil","need":"frivillig","page":"/","state":{"body":"Jeg kan ikke trene noen, men jeg har stor bil og kan kjøre til bortekamper."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva hjelper vi deg med i dag?\". Which alternative do they choose?","criteria":{"Er det på tide å melde inn?":"Er det på tide å melde inn?","Vil du bidra til klubben?":"Vil du bidra til klubben?"}}},"expect":["Vil du bidra til klubben?"]} +{"id":"stor-bil@/bidra","persona":"stor-bil","need":"frivillig","page":"/bidra","state":{"body":"Jeg kan ikke trene noen, men jeg har stor bil og kan kjøre til bortekamper."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva kan du bidra med?\". Which alternative do they choose?","criteria":{"Bli brukt der det trengs":"Bli brukt der det trengs","Støtt klubben i bygda":"Støtt klubben i bygda"}}},"expect":["Bli brukt der det trengs"]} +{"id":"rorlegger@/","persona":"rorlegger","need":"sponsor","page":"/","state":{"body":"Jeg driver rørleggerfirma her i bygda og vil gjerne ha logoen vår på draktene til et lag. Hvem snakker jeg med?"},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva hjelper vi deg med i dag?\". Which alternative do they choose?","criteria":{"Er det på tide å melde inn?":"Er det på tide å melde inn?","Vil du bidra til klubben?":"Vil du bidra til klubben?"}}},"expect":["Vil du bidra til klubben?"]} +{"id":"rorlegger@/bidra","persona":"rorlegger","need":"sponsor","page":"/bidra","state":{"body":"Jeg driver rørleggerfirma her i bygda og vil gjerne ha logoen vår på draktene til et lag. Hvem snakker jeg med?"},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva kan du bidra med?\". Which alternative do they choose?","criteria":{"Bli brukt der det trengs":"Bli brukt der det trengs","Støtt klubben i bygda":"Støtt klubben i bygda"}}},"expect":["Støtt klubben i bygda"]} +{"id":"kafeen@/","persona":"kafeen","need":"sponsor","page":"/","state":{"body":"Vi har kafé i sentrum og kan bidra med noe til cupen i mai, kanskje vafler eller litt penger."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva hjelper vi deg med i dag?\". Which alternative do they choose?","criteria":{"Er det på tide å melde inn?":"Er det på tide å melde inn?","Vil du bidra til klubben?":"Vil du bidra til klubben?"}}},"expect":["Vil du bidra til klubben?"]} +{"id":"kafeen@/bidra","persona":"kafeen","need":"sponsor","page":"/bidra","state":{"body":"Vi har kafé i sentrum og kan bidra med noe til cupen i mai, kanskje vafler eller litt penger."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva kan du bidra med?\". Which alternative do they choose?","criteria":{"Bli brukt der det trengs":"Bli brukt der det trengs","Støtt klubben i bygda":"Støtt klubben i bygda"}}},"expect":["Støtt klubben i bygda"]} diff --git a/runs/fotballklubb-claude-2026-09-22/README.md b/runs/fotballklubb-claude-2026-09-22/README.md new file mode 100644 index 0000000..34a355b --- /dev/null +++ b/runs/fotballklubb-claude-2026-09-22/README.md @@ -0,0 +1,35 @@ +# The football club, same plan, Claude Sonnet writing the words + +`plans/fotballklubb.yaml`, in Norwegian, built twice on 2026-09-22: +once with nemotron-3.5-lightning:30b-a3b on local Ollama +(`../fotballklubb-2026-09-22/`), once with Claude Sonnet through +`engines/claude.sh`. Same structure, same 9 held-out personas, same +visitor (qwen3:8b, one task per call). + +| Visitor could read | nemotron | Claude Sonnet | +|---|---|---| +| Headings and descriptions | 14 of 16 | 13 of 16 | +| Headings only | 11 of 16 | 12 of 16 | + +Not the gap the Norwegian suggested it would be. Claude's front door +is plainly better: "Har du barn som spiller eller vil spille?" against +nemotron's "Er det på tide å melde inn?", which three parents walked +past. But Claude loses on the pages behind the doors: + +- The twins' parent asking "is there room, and what does it cost?" + chose "Få hjelp med treningsavgiften" because the persona mentions + cost. Nemotron's "Meld deg på laget" held them. +- The driver ("I can't coach but I have a big car") and the café + ("waffles or a bit of money for the cup") straddle volunteer and + sponsor in both builds. That boundary is the club's, not the + visitor's: a person offering something does not sort themselves by + whether it is time or money. One "help out" form with "what can you + give" as a select would end it. +- The pensioner who wants to coach picked the parents' door on + headings alone under Claude ("Har du barn som spiller..." reads as + the general door). + +What this run says: a stronger model writes better sentences and does +not, by itself, route better. Routing is decided by which +distinctions the plan puts on one page, and the visitor model grades +that the same whoever wrote the words. diff --git a/runs/fotballklubb-claude-2026-09-22/aggregates.yaml b/runs/fotballklubb-claude-2026-09-22/aggregates.yaml new file mode 100644 index 0000000..d7831c2 --- /dev/null +++ b/runs/fotballklubb-claude-2026-09-22/aggregates.yaml @@ -0,0 +1,87 @@ +aggregates: +- bucket: avgiftssaker + initial: open + states: + avslatt: + event: avslatt + innvilget: + event: innvilget + open: + event: received + vurdert: + event: vurdert + transitions: + open: + - vurdert + - avslatt + vurdert: + - innvilget + - avslatt +- bucket: baneproblemer + initial: open + states: + open: + event: received + ordnet: + event: ordnet + tatt_tak_i: + event: tatt_tak_i + transitions: + open: + - tatt_tak_i + tatt_tak_i: + - ordnet +- bucket: frivillige + initial: open + states: + avslatt: + event: avslatt + kontaktet: + event: kontaktet + open: + event: received + plassert: + event: plassert + transitions: + kontaktet: + - plassert + - avslatt + open: + - kontaktet + - avslatt +- bucket: innmeldinger + initial: open + states: + betalt: + event: betalt + godkjent: + event: godkjent + open: + event: received + trukket: + event: trukket + transitions: + godkjent: + - betalt + - trukket + open: + - godkjent + - trukket +- bucket: sponsorer + initial: open + states: + avslatt: + event: avslatt + avtalt: + event: avtalt + i_dialog: + event: i_dialog + open: + event: received + transitions: + i_dialog: + - avtalt + - avslatt + open: + - i_dialog + - avslatt diff --git a/runs/fotballklubb-claude-2026-09-22/answers-full.jsonl b/runs/fotballklubb-claude-2026-09-22/answers-full.jsonl new file mode 100644 index 0000000..959cc2c --- /dev/null +++ b/runs/fotballklubb-claude-2026-09-22/answers-full.jsonl @@ -0,0 +1,16 @@ +{"choice":"Har du barn som spiller eller vil spille?","confidence":0.95,"id":"ny-i-bygda@/"} +{"choice":"Meld barnet ditt på laget","confidence":0.95,"id":"ny-i-bygda@/foresatte"} +{"choice":"Har du barn som spiller eller vil spille?","confidence":0.95,"id":"tvillinger@/"} +{"choice":"Få hjelp med treningsavgiften","confidence":0.95,"id":"tvillinger@/foresatte"} +{"choice":"Har du barn som spiller eller vil spille?","confidence":0.95,"id":"alenefar@/"} +{"choice":"Få hjelp med treningsavgiften","confidence":0.95,"id":"alenefar@/foresatte"} +{"choice":"Har du barn som spiller eller vil spille?","confidence":0.95,"id":"permittert@/"} +{"choice":"Få hjelp med treningsavgiften","confidence":0.95,"id":"permittert@/foresatte"} +{"choice":"Vil du hjelpe til eller støtte klubben?","confidence":0.95,"id":"pensjonist@/"} +{"choice":"Bli brukt der klubben trenger deg","confidence":0.95,"id":"pensjonist@/bidra"} +{"choice":"Vil du hjelpe til eller støtte klubben?","confidence":0.95,"id":"stor-bil@/"} +{"choice":"Støtt fotballen i bygda","confidence":0.95,"id":"stor-bil@/bidra"} +{"choice":"Vil du hjelpe til eller støtte klubben?","confidence":0.95,"id":"rorlegger@/"} +{"choice":"Støtt fotballen i bygda","confidence":0.95,"id":"rorlegger@/bidra"} +{"choice":"Vil du hjelpe til eller støtte klubben?","confidence":0.85,"id":"kafeen@/"} +{"choice":"Bli brukt der klubben trenger deg","confidence":0.85,"id":"kafeen@/bidra"} diff --git a/runs/fotballklubb-claude-2026-09-22/answers-skim.jsonl b/runs/fotballklubb-claude-2026-09-22/answers-skim.jsonl new file mode 100644 index 0000000..14c0c2a --- /dev/null +++ b/runs/fotballklubb-claude-2026-09-22/answers-skim.jsonl @@ -0,0 +1,16 @@ +{"choice":"Har du barn som spiller eller vil spille?","confidence":0.95,"id":"ny-i-bygda@/"} +{"choice":"Meld barnet ditt på laget","confidence":0.95,"id":"ny-i-bygda@/foresatte"} +{"choice":"Har du barn som spiller eller vil spille?","confidence":0.95,"id":"tvillinger@/"} +{"choice":"Få hjelp med treningsavgiften","confidence":0.95,"id":"tvillinger@/foresatte"} +{"choice":"Har du barn som spiller eller vil spille?","confidence":0.95,"id":"alenefar@/"} +{"choice":"Få hjelp med treningsavgiften","confidence":0.95,"id":"alenefar@/foresatte"} +{"choice":"Har du barn som spiller eller vil spille?","confidence":0.95,"id":"permittert@/"} +{"choice":"Få hjelp med treningsavgiften","confidence":0.95,"id":"permittert@/foresatte"} +{"choice":"Har du barn som spiller eller vil spille?","confidence":0.95,"id":"pensjonist@/"} +{"choice":"Bli brukt der klubben trenger deg","confidence":0.95,"id":"pensjonist@/bidra"} +{"choice":"Vil du hjelpe til eller støtte klubben?","confidence":0.95,"id":"stor-bil@/"} +{"choice":"Støtt fotballen i bygda","confidence":0.95,"id":"stor-bil@/bidra"} +{"choice":"Vil du hjelpe til eller støtte klubben?","confidence":0.95,"id":"rorlegger@/"} +{"choice":"Støtt fotballen i bygda","confidence":0.95,"id":"rorlegger@/bidra"} +{"choice":"Vil du hjelpe til eller støtte klubben?","confidence":0.95,"id":"kafeen@/"} +{"choice":"Bli brukt der klubben trenger deg","confidence":0.85,"id":"kafeen@/bidra"} diff --git a/runs/fotballklubb-claude-2026-09-22/build.log b/runs/fotballklubb-claude-2026-09-22/build.log new file mode 100644 index 0000000..45aeea2 --- /dev/null +++ b/runs/fotballklubb-claude-2026-09-22/build.log @@ -0,0 +1,20 @@ +words: questions/bidra/index.yaml +words: questions/foresatte/index.yaml +words: questions/index.yaml +words: questions/kasserer/index.yaml +words: questions/received/avgiftssak.yaml +words: questions/received/frivillig.yaml +words: questions/received/innmelding.yaml +words: questions/received/sponsor.yaml +words: questions/styret/index.yaml +words: questions/trenere/baneproblem-sent.yaml +words: questions/trenere/baneproblem.yaml +words: questions/trenere/index.yaml +content repo written to runs/fotballklubb-claude-2026-09-22 +OK: 12 question(s), 6 aggregate(s) valid +need "innmelding": / [Har du barn som spiller eller vil spille?] -> /foresatte [Meld barnet ditt på laget] -> "innmeldinger" +need "avgiftssak": / [Har du barn som spiller eller vil spille?] -> /foresatte [Få hjelp med treningsavgiften] -> "avgiftssaker" +need "frivillig": / [Vil du hjelpe til eller støtte klubben?] -> /bidra [Bli brukt der klubben trenger deg] -> "frivillige" +need "sponsor": / [Vil du hjelpe til eller støtte klubben?] -> /bidra [Støtt fotballen i bygda] -> "sponsorer" +need "baneproblem": /trenere/baneproblem [Meld fra om noe som ikke er i orden] -> "baneproblemer" +OK: 5 need(s) structurally met, 0 planned, 9 persona(s) diff --git a/runs/fotballklubb-claude-2026-09-22/llm/01-questions_bidra_index.yaml.md b/runs/fotballklubb-claude-2026-09-22/llm/01-questions_bidra_index.yaml.md new file mode 100644 index 0000000..e1a64cd --- /dev/null +++ b/runs/fotballklubb-claude-2026-09-22/llm/01-questions_bidra_index.yaml.md @@ -0,0 +1,92 @@ +You write the words for one page of a website for this business. + +Business: Lia IL Fotball +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. +Contact: Kari Lien +Language to write in: nb + +Everyone the site serves: +- door foresatte: for en forelder eller foresatt til et barn som vil spille, eller allerede spiller; behind it: innmelding, avgiftssak +- door bidra: for noen som vil hjelpe til i klubben, eller en bedrift som vil støtte den; behind it: frivillig, sponsor +- innmelding: en forelder som vil ha ungen med på et lag - wants: at barnet får plass på laget for sitt årskull. Handled by trenere. Stages: open -> godkjent -> betalt -> trukket. +- avgiftssak: en forelder som sliter med treningsavgiften - wants: å dele den opp, eller slippe den. Handled by styret. Stages: open -> vurdert -> innvilget -> avslatt. +- frivillig: en som vil hjelpe til, som trener, lagleder, sjåfør eller på dugnad - wants: å bli brukt der det trengs. Handled by styret. Stages: open -> kontaktet -> plassert -> avslatt. +- sponsor: en bedrift i bygda som vil støtte klubben - wants: en prat om hva de kan bidra med, og en avtale. Handled by styret. Stages: open -> i_dialog -> avtalt -> avslatt. +- baneproblem: en trener som ser at noe på anlegget ikke er i orden - wants: at styret får vite det og ordner det. Handled by styret. Stages: open -> tatt_tak_i -> ordnet. + +The page: questions/bidra/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": "", + "needs": { + "frivillig": { + "button": "", + "description": "", + "form_title": "", + "heading": "", + "labels": { + "hva_kan_du": "", + "navn": "", + "telefon": "" + } + }, + "sponsor": { + "button": "", + "description": "", + "form_title": "", + "heading": "", + "labels": { + "bedrift": "", + "hva_tenker_dere": "", + "kontaktperson": "", + "telefon": "" + } + } + }, + "question": "" +} + +Reply with the JSON object only. + +=== REPLY === +```json +{ + "description": "Klubben går på foreldreinnsats og lokal støtte. Her er to måter å bidra på.", + "needs": { + "frivillig": { + "button": "Meld deg", + "description": "Trener, lagleder, sjåfør eller en hånd på dugnad - vi trenger folk til alt.", + "form_title": "Bli frivillig", + "heading": "Bli brukt der klubben trenger deg", + "labels": { + "hva_kan_du": "Hva kan du bidra med?", + "navn": "Navn", + "telefon": "Telefon" + } + }, + "sponsor": { + "button": "Ta kontakt", + "description": "Bedriften din kan støtte fotballgruppa og bli synlig i bygda.", + "form_title": "Bli sponsor", + "heading": "Støtt fotballen i bygda", + "labels": { + "bedrift": "Bedrift", + "hva_tenker_dere": "Hva tenker dere?", + "kontaktperson": "Kontaktperson", + "telefon": "Telefon" + } + } + }, + "question": "Vil du hjelpe til, eller la bedriften din støtte klubben?" +} +``` diff --git a/runs/fotballklubb-claude-2026-09-22/llm/02-questions_foresatte_index.yaml.md b/runs/fotballklubb-claude-2026-09-22/llm/02-questions_foresatte_index.yaml.md new file mode 100644 index 0000000..be3e605 --- /dev/null +++ b/runs/fotballklubb-claude-2026-09-22/llm/02-questions_foresatte_index.yaml.md @@ -0,0 +1,98 @@ +You write the words for one page of a website for this business. + +Business: Lia IL Fotball +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. +Contact: Kari Lien +Language to write in: nb + +Everyone the site serves: +- door foresatte: for en forelder eller foresatt til et barn som vil spille, eller allerede spiller; behind it: innmelding, avgiftssak +- door bidra: for noen som vil hjelpe til i klubben, eller en bedrift som vil støtte den; behind it: frivillig, sponsor +- innmelding: en forelder som vil ha ungen med på et lag - wants: at barnet får plass på laget for sitt årskull. Handled by trenere. Stages: open -> godkjent -> betalt -> trukket. +- avgiftssak: en forelder som sliter med treningsavgiften - wants: å dele den opp, eller slippe den. Handled by styret. Stages: open -> vurdert -> innvilget -> avslatt. +- frivillig: en som vil hjelpe til, som trener, lagleder, sjåfør eller på dugnad - wants: å bli brukt der det trengs. Handled by styret. Stages: open -> kontaktet -> plassert -> avslatt. +- sponsor: en bedrift i bygda som vil støtte klubben - wants: en prat om hva de kan bidra med, og en avtale. Handled by styret. Stages: open -> i_dialog -> avtalt -> avslatt. +- baneproblem: en trener som ser at noe på anlegget ikke er i orden - wants: at styret får vite det og ordner det. Handled by styret. Stages: open -> tatt_tak_i -> ordnet. + +The page: questions/foresatte/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": "", + "needs": { + "avgiftssak": { + "button": "", + "description": "", + "form_title": "", + "heading": "", + "labels": { + "barnets_navn": "", + "foresatt": "", + "hva_gjelder_det": "", + "telefon": "" + } + }, + "innmelding": { + "button": "", + "description": "", + "form_title": "", + "heading": "", + "labels": { + "barnets_navn": "", + "epost": "", + "fodselsar": "", + "foresatt": "", + "spilt_for": "", + "telefon": "" + } + } + }, + "question": "" +} + +Reply with the JSON object only. + +=== REPLY === +```json +{ + "description": "Har du et barn som vil spille fotball, eller har spørsmål om treningsavgiften? Her finner du veien videre.", + "needs": { + "avgiftssak": { + "button": "Ta kontakt", + "description": "Sliter dere med å få treningsavgiften til å gå opp? Ta kontakt, så finner vi en løsning sammen.", + "form_title": "Om treningsavgiften", + "heading": "Få hjelp med treningsavgiften", + "labels": { + "barnets_navn": "Barnets navn", + "foresatt": "Ditt navn", + "hva_gjelder_det": "Hva gjelder det", + "telefon": "Telefon" + } + }, + "innmelding": { + "button": "Meld på", + "description": "Meld barnet ditt på laget for sitt årskull, så tar trenerne det videre.", + "form_title": "Meld på barnet", + "heading": "Meld barnet ditt på laget", + "labels": { + "barnets_navn": "Barnets navn", + "epost": "E-post", + "fodselsar": "Fødselsår", + "foresatt": "Ditt navn", + "spilt_for": "Spilt for et annet lag før", + "telefon": "Telefon" + } + } + }, + "question": "Vil du melde på barnet ditt, eller trenger dere hjelp med avgiften?" +} +``` diff --git a/runs/fotballklubb-claude-2026-09-22/llm/03-questions_index.yaml.md b/runs/fotballklubb-claude-2026-09-22/llm/03-questions_index.yaml.md new file mode 100644 index 0000000..74005ff --- /dev/null +++ b/runs/fotballklubb-claude-2026-09-22/llm/03-questions_index.yaml.md @@ -0,0 +1,66 @@ +You write the words for one page of a website for this business. + +Business: Lia IL Fotball +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. +Contact: Kari Lien +Language to write in: nb + +Everyone the site serves: +- door foresatte: for en forelder eller foresatt til et barn som vil spille, eller allerede spiller; behind it: innmelding, avgiftssak +- door bidra: for noen som vil hjelpe til i klubben, eller en bedrift som vil støtte den; behind it: frivillig, sponsor +- innmelding: en forelder som vil ha ungen med på et lag - wants: at barnet får plass på laget for sitt årskull. Handled by trenere. Stages: open -> godkjent -> betalt -> trukket. +- avgiftssak: en forelder som sliter med treningsavgiften - wants: å dele den opp, eller slippe den. Handled by styret. Stages: open -> vurdert -> innvilget -> avslatt. +- frivillig: en som vil hjelpe til, som trener, lagleder, sjåfør eller på dugnad - wants: å bli brukt der det trengs. Handled by styret. Stages: open -> kontaktet -> plassert -> avslatt. +- sponsor: en bedrift i bygda som vil støtte klubben - wants: en prat om hva de kan bidra med, og en avtale. Handled by styret. Stages: open -> i_dialog -> avtalt -> avslatt. +- baneproblem: en trener som ser at noe på anlegget ikke er i orden - wants: at styret får vite det og ordner det. Handled by styret. Stages: open -> tatt_tak_i -> ordnet. + +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": "", + "doors": { + "bidra": { + "button": "", + "description": "", + "heading": "" + }, + "foresatte": { + "button": "", + "description": "", + "heading": "" + } + }, + "needs": {}, + "question": "" +} + +Reply with the JSON object only. + +=== REPLY === +{ + "description": "Lia IL Fotball er fotballgruppa på bygda, med lag fra seks til seksten år, drevet av foreldre på fritida.", + "doors": { + "bidra": { + "button": "Jeg vil bidra", + "description": "Som trener, lagleder, sjåfør eller på dugnad - eller som bedrift som vil støtte klubben.", + "heading": "Vil du hjelpe til eller støtte klubben?" + }, + "foresatte": { + "button": "Jeg er foresatt", + "description": "Meld på barnet ditt, eller få hjelp hvis treningsavgiften er vanskelig.", + "heading": "Har du barn som spiller eller vil spille?" + } + }, + "needs": {}, + "question": "Hva vil du gjøre?" +} diff --git a/runs/fotballklubb-claude-2026-09-22/llm/04-questions_kasserer_index.yaml.md b/runs/fotballklubb-claude-2026-09-22/llm/04-questions_kasserer_index.yaml.md new file mode 100644 index 0000000..3a32ffa --- /dev/null +++ b/runs/fotballklubb-claude-2026-09-22/llm/04-questions_kasserer_index.yaml.md @@ -0,0 +1,62 @@ +You write the words for one page of a website for this business. + +Business: Lia IL Fotball +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. +Contact: Kari Lien +Language to write in: nb + +Everyone the site serves: +- door foresatte: for en forelder eller foresatt til et barn som vil spille, eller allerede spiller; behind it: innmelding, avgiftssak +- door bidra: for noen som vil hjelpe til i klubben, eller en bedrift som vil støtte den; behind it: frivillig, sponsor +- innmelding: en forelder som vil ha ungen med på et lag - wants: at barnet får plass på laget for sitt årskull. Handled by trenere. Stages: open -> godkjent -> betalt -> trukket. +- avgiftssak: en forelder som sliter med treningsavgiften - wants: å dele den opp, eller slippe den. Handled by styret. Stages: open -> vurdert -> innvilget -> avslatt. +- frivillig: en som vil hjelpe til, som trener, lagleder, sjåfør eller på dugnad - wants: å bli brukt der det trengs. Handled by styret. Stages: open -> kontaktet -> plassert -> avslatt. +- sponsor: en bedrift i bygda som vil støtte klubben - wants: en prat om hva de kan bidra med, og en avtale. Handled by styret. Stages: open -> i_dialog -> avtalt -> avslatt. +- baneproblem: en trener som ser at noe på anlegget ikke er i orden - wants: at styret får vite det og ordner det. Handled by styret. Stages: open -> tatt_tak_i -> ordnet. + +The page: questions/kasserer/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": { + "innmeldinger": { + "description": "", + "heading": "", + "moves": { + "godkjent->betalt": "betalt>" + } + } + }, + "confirm": "", + "description": "", + "links": {}, + "question": "" +} + +Reply with the JSON object only. + +=== REPLY === +{ + "buckets": { + "innmeldinger": { + "description": "Her ser du alle som har meldt ungen sin på et lag, og hvor langt de har kommet i prosessen.", + "heading": "Innmeldinger som venter på deg", + "moves": { + "godkjent->betalt": "Merk som betalt" + } + } + }, + "confirm": "Bekreft", + "description": "Oversikten din over innmeldinger og avgiftssaker som må følges opp.", + "links": {}, + "question": "Hva må jeg følge opp nå?" +} diff --git a/runs/fotballklubb-claude-2026-09-22/llm/05-questions_received_avgiftssak.yaml.md b/runs/fotballklubb-claude-2026-09-22/llm/05-questions_received_avgiftssak.yaml.md new file mode 100644 index 0000000..13dc338 --- /dev/null +++ b/runs/fotballklubb-claude-2026-09-22/llm/05-questions_received_avgiftssak.yaml.md @@ -0,0 +1,46 @@ +You write the words for one page of a website for this business. + +Business: Lia IL Fotball +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. +Contact: Kari Lien +Language to write in: nb + +Everyone the site serves: +- door foresatte: for en forelder eller foresatt til et barn som vil spille, eller allerede spiller; behind it: innmelding, avgiftssak +- door bidra: for noen som vil hjelpe til i klubben, eller en bedrift som vil støtte den; behind it: frivillig, sponsor +- innmelding: en forelder som vil ha ungen med på et lag - wants: at barnet får plass på laget for sitt årskull. Handled by trenere. Stages: open -> godkjent -> betalt -> trukket. +- avgiftssak: en forelder som sliter med treningsavgiften - wants: å dele den opp, eller slippe den. Handled by styret. Stages: open -> vurdert -> innvilget -> avslatt. +- frivillig: en som vil hjelpe til, som trener, lagleder, sjåfør eller på dugnad - wants: å bli brukt der det trengs. Handled by styret. Stages: open -> kontaktet -> plassert -> avslatt. +- sponsor: en bedrift i bygda som vil støtte klubben - wants: en prat om hva de kan bidra med, og en avtale. Handled by styret. Stages: open -> i_dialog -> avtalt -> avslatt. +- baneproblem: en trener som ser at noe på anlegget ikke er i orden - wants: at styret får vite det og ordner det. Handled by styret. Stages: open -> tatt_tak_i -> ordnet. + +The page: questions/received/avgiftssak.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": "", + "description": "", + "next_description": "", + "next_heading": "", + "question": "" +} + +Reply with the JSON object only. + +=== REPLY === +{ + "back": "Til forsiden", + "description": "Vi har mottatt henvendelsen din om treningsavgiften. Styret ser på den og tar kontakt med deg.", + "next_description": "Styret behandler saken og gir deg beskjed om utfallet, enten det blir en avdragsordning eller fritak.", + "next_heading": "Styret vurderer saken din", + "question": "Har henvendelsen min kommet fram?" +} diff --git a/runs/fotballklubb-claude-2026-09-22/llm/06-questions_received_frivillig.yaml.md b/runs/fotballklubb-claude-2026-09-22/llm/06-questions_received_frivillig.yaml.md new file mode 100644 index 0000000..d0f0227 --- /dev/null +++ b/runs/fotballklubb-claude-2026-09-22/llm/06-questions_received_frivillig.yaml.md @@ -0,0 +1,46 @@ +You write the words for one page of a website for this business. + +Business: Lia IL Fotball +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. +Contact: Kari Lien +Language to write in: nb + +Everyone the site serves: +- door foresatte: for en forelder eller foresatt til et barn som vil spille, eller allerede spiller; behind it: innmelding, avgiftssak +- door bidra: for noen som vil hjelpe til i klubben, eller en bedrift som vil støtte den; behind it: frivillig, sponsor +- innmelding: en forelder som vil ha ungen med på et lag - wants: at barnet får plass på laget for sitt årskull. Handled by trenere. Stages: open -> godkjent -> betalt -> trukket. +- avgiftssak: en forelder som sliter med treningsavgiften - wants: å dele den opp, eller slippe den. Handled by styret. Stages: open -> vurdert -> innvilget -> avslatt. +- frivillig: en som vil hjelpe til, som trener, lagleder, sjåfør eller på dugnad - wants: å bli brukt der det trengs. Handled by styret. Stages: open -> kontaktet -> plassert -> avslatt. +- sponsor: en bedrift i bygda som vil støtte klubben - wants: en prat om hva de kan bidra med, og en avtale. Handled by styret. Stages: open -> i_dialog -> avtalt -> avslatt. +- baneproblem: en trener som ser at noe på anlegget ikke er i orden - wants: at styret får vite det og ordner det. Handled by styret. Stages: open -> tatt_tak_i -> ordnet. + +The page: questions/received/frivillig.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": "", + "description": "", + "next_description": "", + "next_heading": "", + "question": "" +} + +Reply with the JSON object only. + +=== REPLY === +{ + "back": "Tilbake til forsiden", + "description": "Takk for at du vil bidra! Styret leser meldingen og tar kontakt for å høre hvor du passer best inn.", + "next_description": "Styret går gjennom henvendelser fortløpende og tar kontakt på e-post eller telefon, gjerne i løpet av en ukes tid.", + "next_heading": "Vi hører fra deg snart", + "question": "Hva skjer nå som jeg har meldt meg?" +} diff --git a/runs/fotballklubb-claude-2026-09-22/llm/07-questions_received_innmelding.yaml.md b/runs/fotballklubb-claude-2026-09-22/llm/07-questions_received_innmelding.yaml.md new file mode 100644 index 0000000..58fa722 --- /dev/null +++ b/runs/fotballklubb-claude-2026-09-22/llm/07-questions_received_innmelding.yaml.md @@ -0,0 +1,48 @@ +You write the words for one page of a website for this business. + +Business: Lia IL Fotball +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. +Contact: Kari Lien +Language to write in: nb + +Everyone the site serves: +- door foresatte: for en forelder eller foresatt til et barn som vil spille, eller allerede spiller; behind it: innmelding, avgiftssak +- door bidra: for noen som vil hjelpe til i klubben, eller en bedrift som vil støtte den; behind it: frivillig, sponsor +- innmelding: en forelder som vil ha ungen med på et lag - wants: at barnet får plass på laget for sitt årskull. Handled by trenere. Stages: open -> godkjent -> betalt -> trukket. +- avgiftssak: en forelder som sliter med treningsavgiften - wants: å dele den opp, eller slippe den. Handled by styret. Stages: open -> vurdert -> innvilget -> avslatt. +- frivillig: en som vil hjelpe til, som trener, lagleder, sjåfør eller på dugnad - wants: å bli brukt der det trengs. Handled by styret. Stages: open -> kontaktet -> plassert -> avslatt. +- sponsor: en bedrift i bygda som vil støtte klubben - wants: en prat om hva de kan bidra med, og en avtale. Handled by styret. Stages: open -> i_dialog -> avtalt -> avslatt. +- baneproblem: en trener som ser at noe på anlegget ikke er i orden - wants: at styret får vite det og ordner det. Handled by styret. Stages: open -> tatt_tak_i -> ordnet. + +The page: questions/received/innmelding.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": "", + "description": "", + "next_description": "", + "next_heading": "", + "question": "" +} + +Reply with the JSON object only. + +=== REPLY === +```json +{ + "back": "Til forsiden", + "description": "Påmeldingen er sendt og ligger klar hos trenerne.", + "next_description": "Trenerne går gjennom påmeldingen og gir beskjed om plass på laget for årskullet.", + "next_heading": "Trenerne svarer deg", + "question": "Hva skjer nå med påmeldingen?" +} +``` diff --git a/runs/fotballklubb-claude-2026-09-22/llm/08-questions_received_sponsor.yaml.md b/runs/fotballklubb-claude-2026-09-22/llm/08-questions_received_sponsor.yaml.md new file mode 100644 index 0000000..96cb8b0 --- /dev/null +++ b/runs/fotballklubb-claude-2026-09-22/llm/08-questions_received_sponsor.yaml.md @@ -0,0 +1,48 @@ +You write the words for one page of a website for this business. + +Business: Lia IL Fotball +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. +Contact: Kari Lien +Language to write in: nb + +Everyone the site serves: +- door foresatte: for en forelder eller foresatt til et barn som vil spille, eller allerede spiller; behind it: innmelding, avgiftssak +- door bidra: for noen som vil hjelpe til i klubben, eller en bedrift som vil støtte den; behind it: frivillig, sponsor +- innmelding: en forelder som vil ha ungen med på et lag - wants: at barnet får plass på laget for sitt årskull. Handled by trenere. Stages: open -> godkjent -> betalt -> trukket. +- avgiftssak: en forelder som sliter med treningsavgiften - wants: å dele den opp, eller slippe den. Handled by styret. Stages: open -> vurdert -> innvilget -> avslatt. +- frivillig: en som vil hjelpe til, som trener, lagleder, sjåfør eller på dugnad - wants: å bli brukt der det trengs. Handled by styret. Stages: open -> kontaktet -> plassert -> avslatt. +- sponsor: en bedrift i bygda som vil støtte klubben - wants: en prat om hva de kan bidra med, og en avtale. Handled by styret. Stages: open -> i_dialog -> avtalt -> avslatt. +- baneproblem: en trener som ser at noe på anlegget ikke er i orden - wants: at styret får vite det og ordner det. Handled by styret. Stages: open -> tatt_tak_i -> ordnet. + +The page: questions/received/sponsor.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": "", + "description": "", + "next_description": "", + "next_heading": "", + "question": "" +} + +Reply with the JSON object only. + +=== REPLY === +```json +{ + "back": "Til forsiden", + "description": "Takk for at dere vil støtte Lia IL Fotball. Styret har fått beskjeden og tar kontakt.", + "next_description": "Noen fra styret ringer eller sender e-post for å høre hva dere ønsker å bidra med, så finner vi ut av det sammen.", + "next_heading": "Styret tar kontakt", + "question": "Hva skjer nå som vi har meldt interesse?" +} +``` diff --git a/runs/fotballklubb-claude-2026-09-22/llm/09-questions_styret_index.yaml.md b/runs/fotballklubb-claude-2026-09-22/llm/09-questions_styret_index.yaml.md new file mode 100644 index 0000000..d3f4bb2 --- /dev/null +++ b/runs/fotballklubb-claude-2026-09-22/llm/09-questions_styret_index.yaml.md @@ -0,0 +1,126 @@ +You write the words for one page of a website for this business. + +Business: Lia IL Fotball +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. +Contact: Kari Lien +Language to write in: nb + +Everyone the site serves: +- door foresatte: for en forelder eller foresatt til et barn som vil spille, eller allerede spiller; behind it: innmelding, avgiftssak +- door bidra: for noen som vil hjelpe til i klubben, eller en bedrift som vil støtte den; behind it: frivillig, sponsor +- innmelding: en forelder som vil ha ungen med på et lag - wants: at barnet får plass på laget for sitt årskull. Handled by trenere. Stages: open -> godkjent -> betalt -> trukket. +- avgiftssak: en forelder som sliter med treningsavgiften - wants: å dele den opp, eller slippe den. Handled by styret. Stages: open -> vurdert -> innvilget -> avslatt. +- frivillig: en som vil hjelpe til, som trener, lagleder, sjåfør eller på dugnad - wants: å bli brukt der det trengs. Handled by styret. Stages: open -> kontaktet -> plassert -> avslatt. +- sponsor: en bedrift i bygda som vil støtte klubben - wants: en prat om hva de kan bidra med, og en avtale. Handled by styret. Stages: open -> i_dialog -> avtalt -> avslatt. +- baneproblem: en trener som ser at noe på anlegget ikke er i orden - wants: at styret får vite det og ordner det. Handled by styret. Stages: open -> tatt_tak_i -> ordnet. + +The page: questions/styret/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": { + "avgiftssaker": { + "description": "", + "heading": "", + "moves": { + "open->avslatt": "avslatt>", + "open->vurdert": "vurdert>", + "vurdert->avslatt": "avslatt>", + "vurdert->innvilget": "innvilget>" + } + }, + "baneproblemer": { + "description": "", + "heading": "", + "moves": { + "open->tatt_tak_i": "tatt_tak_i>", + "tatt_tak_i->ordnet": "ordnet>" + } + }, + "frivillige": { + "description": "", + "heading": "", + "moves": { + "kontaktet->avslatt": "avslatt>", + "kontaktet->plassert": "plassert>", + "open->avslatt": "avslatt>", + "open->kontaktet": "kontaktet>" + } + }, + "sponsorer": { + "description": "", + "heading": "", + "moves": { + "i_dialog->avslatt": "avslatt>", + "i_dialog->avtalt": "avtalt>", + "open->avslatt": "avslatt>", + "open->i_dialog": "i_dialog>" + } + } + }, + "confirm": "", + "description": "", + "links": {}, + "question": "" +} + +Reply with the JSON object only. + +=== REPLY === +```json +{ + "buckets": { + "avgiftssaker": { + "description": "Familier som strever med å betale treningsavgiften, og trenger en løsning.", + "heading": "Søknader om redusert avgift", + "moves": { + "open->avslatt": "Avslå søknaden", + "open->vurdert": "Sett i vurdering", + "vurdert->avslatt": "Avslå søknaden", + "vurdert->innvilget": "Innvilg søknaden" + } + }, + "baneproblemer": { + "description": "Ting på anlegget som trenerne har meldt fra om, og som må ordnes.", + "heading": "Meldinger om banen og anlegget", + "moves": { + "open->tatt_tak_i": "Ta tak i saken", + "tatt_tak_i->ordnet": "Merk som ordnet" + } + }, + "frivillige": { + "description": "Folk som har meldt seg som trener, lagleder, sjåfør eller til dugnad.", + "heading": "De som vil hjelpe til", + "moves": { + "kontaktet->avslatt": "Takk nei", + "kontaktet->plassert": "Sett på oppgave", + "open->avslatt": "Takk nei", + "open->kontaktet": "Ta kontakt" + } + }, + "sponsorer": { + "description": "Bedrifter i bygda som vil støtte klubben og trenger en avtale.", + "heading": "Bedrifter som vil støtte oss", + "moves": { + "i_dialog->avslatt": "Takk nei", + "i_dialog->avtalt": "Merk som avtalt", + "open->avslatt": "Takk nei", + "open->i_dialog": "Start dialog" + } + } + }, + "confirm": "Lagre", + "description": "Her ser styret alt som venter på svar: avgiftssøknader, frivillige, sponsorer og saker på banen.", + "links": {}, + "question": "Hva venter på styret nå?" +} +``` diff --git a/runs/fotballklubb-claude-2026-09-22/llm/10-questions_trenere_baneproblem-sent.yaml.md b/runs/fotballklubb-claude-2026-09-22/llm/10-questions_trenere_baneproblem-sent.yaml.md new file mode 100644 index 0000000..74999b5 --- /dev/null +++ b/runs/fotballklubb-claude-2026-09-22/llm/10-questions_trenere_baneproblem-sent.yaml.md @@ -0,0 +1,46 @@ +You write the words for one page of a website for this business. + +Business: Lia IL Fotball +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. +Contact: Kari Lien +Language to write in: nb + +Everyone the site serves: +- door foresatte: for en forelder eller foresatt til et barn som vil spille, eller allerede spiller; behind it: innmelding, avgiftssak +- door bidra: for noen som vil hjelpe til i klubben, eller en bedrift som vil støtte den; behind it: frivillig, sponsor +- innmelding: en forelder som vil ha ungen med på et lag - wants: at barnet får plass på laget for sitt årskull. Handled by trenere. Stages: open -> godkjent -> betalt -> trukket. +- avgiftssak: en forelder som sliter med treningsavgiften - wants: å dele den opp, eller slippe den. Handled by styret. Stages: open -> vurdert -> innvilget -> avslatt. +- frivillig: en som vil hjelpe til, som trener, lagleder, sjåfør eller på dugnad - wants: å bli brukt der det trengs. Handled by styret. Stages: open -> kontaktet -> plassert -> avslatt. +- sponsor: en bedrift i bygda som vil støtte klubben - wants: en prat om hva de kan bidra med, og en avtale. Handled by styret. Stages: open -> i_dialog -> avtalt -> avslatt. +- baneproblem: en trener som ser at noe på anlegget ikke er i orden - wants: at styret får vite det og ordner det. Handled by styret. Stages: open -> tatt_tak_i -> ordnet. + +The page: questions/trenere/baneproblem-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": "", + "description": "", + "next_description": "", + "next_heading": "", + "question": "" +} + +Reply with the JSON object only. + +=== REPLY === +{ + "back": "Tilbake", + "description": "Vi har mottatt meldingen din om banen. Takk for at du sier ifra.", + "next_description": "Noen fra styret ser på det og tar tak i det som må ordnes.", + "next_heading": "Styret ser på saken", + "question": "Hva skjer nå med det jeg meldte inn?" +} diff --git a/runs/fotballklubb-claude-2026-09-22/llm/11-questions_trenere_baneproblem.yaml.md b/runs/fotballklubb-claude-2026-09-22/llm/11-questions_trenere_baneproblem.yaml.md new file mode 100644 index 0000000..4c36ffa --- /dev/null +++ b/runs/fotballklubb-claude-2026-09-22/llm/11-questions_trenere_baneproblem.yaml.md @@ -0,0 +1,56 @@ +You write the words for one page of a website for this business. + +Business: Lia IL Fotball +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. +Contact: Kari Lien +Language to write in: nb + +Everyone the site serves: +- door foresatte: for en forelder eller foresatt til et barn som vil spille, eller allerede spiller; behind it: innmelding, avgiftssak +- door bidra: for noen som vil hjelpe til i klubben, eller en bedrift som vil støtte den; behind it: frivillig, sponsor +- innmelding: en forelder som vil ha ungen med på et lag - wants: at barnet får plass på laget for sitt årskull. Handled by trenere. Stages: open -> godkjent -> betalt -> trukket. +- avgiftssak: en forelder som sliter med treningsavgiften - wants: å dele den opp, eller slippe den. Handled by styret. Stages: open -> vurdert -> innvilget -> avslatt. +- frivillig: en som vil hjelpe til, som trener, lagleder, sjåfør eller på dugnad - wants: å bli brukt der det trengs. Handled by styret. Stages: open -> kontaktet -> plassert -> avslatt. +- sponsor: en bedrift i bygda som vil støtte klubben - wants: en prat om hva de kan bidra med, og en avtale. Handled by styret. Stages: open -> i_dialog -> avtalt -> avslatt. +- baneproblem: en trener som ser at noe på anlegget ikke er i orden - wants: at styret får vite det og ordner det. Handled by styret. Stages: open -> tatt_tak_i -> ordnet. + +The page: questions/trenere/baneproblem.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": "", + "description": "", + "form_title": "", + "heading": "", + "labels": { + "hva": "", + "hvor": "" + }, + "page_description": "", + "question": "" +} + +Reply with the JSON object only. + +=== REPLY === +{ + "button": "Send melding", + "description": "Beskriv hva som er galt og hvor, så tar styret tak i det.", + "form_title": "Meld fra om banen", + "heading": "Meld fra om noe som ikke er i orden", + "labels": { + "hva": "Hva gjelder det?", + "hvor": "Hvor på anlegget?" + }, + "page_description": "Sett du noe på anlegget som bør fikses? Gi styret beskjed her.", + "question": "Hva har du oppdaget?" +} diff --git a/runs/fotballklubb-claude-2026-09-22/llm/12-questions_trenere_index.yaml.md b/runs/fotballklubb-claude-2026-09-22/llm/12-questions_trenere_index.yaml.md new file mode 100644 index 0000000..75616ac --- /dev/null +++ b/runs/fotballklubb-claude-2026-09-22/llm/12-questions_trenere_index.yaml.md @@ -0,0 +1,80 @@ +You write the words for one page of a website for this business. + +Business: Lia IL Fotball +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. +Contact: Kari Lien +Language to write in: nb + +Everyone the site serves: +- door foresatte: for en forelder eller foresatt til et barn som vil spille, eller allerede spiller; behind it: innmelding, avgiftssak +- door bidra: for noen som vil hjelpe til i klubben, eller en bedrift som vil støtte den; behind it: frivillig, sponsor +- innmelding: en forelder som vil ha ungen med på et lag - wants: at barnet får plass på laget for sitt årskull. Handled by trenere. Stages: open -> godkjent -> betalt -> trukket. +- avgiftssak: en forelder som sliter med treningsavgiften - wants: å dele den opp, eller slippe den. Handled by styret. Stages: open -> vurdert -> innvilget -> avslatt. +- frivillig: en som vil hjelpe til, som trener, lagleder, sjåfør eller på dugnad - wants: å bli brukt der det trengs. Handled by styret. Stages: open -> kontaktet -> plassert -> avslatt. +- sponsor: en bedrift i bygda som vil støtte klubben - wants: en prat om hva de kan bidra med, og en avtale. Handled by styret. Stages: open -> i_dialog -> avtalt -> avslatt. +- baneproblem: en trener som ser at noe på anlegget ikke er i orden - wants: at styret får vite det og ordner det. Handled by styret. Stages: open -> tatt_tak_i -> ordnet. + +The page: questions/trenere/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": { + "innmeldinger": { + "description": "", + "heading": "", + "moves": { + "godkjent->trukket": "trukket>", + "open->godkjent": "godkjent>", + "open->trukket": "trukket>" + } + } + }, + "confirm": "", + "description": "", + "links": { + "baneproblem": { + "button": "", + "description": "", + "heading": "" + } + }, + "question": "" +} + +Reply with the JSON object only. + +=== REPLY === +```json +{ + "buckets": { + "innmeldinger": { + "description": "Barna som er meldt på laget ditt, og hvor langt de har kommet i påmeldingen.", + "heading": "Barna som skal spille på laget ditt", + "moves": { + "godkjent->trukket": "Meld av", + "open->godkjent": "Godkjenn til laget", + "open->trukket": "Meld av" + } + } + }, + "confirm": "Bekreft", + "description": "Oversikt over laget ditt og påmeldingene som venter på deg.", + "links": { + "baneproblem": { + "button": "Meld feil på anlegget", + "description": "Se noe som ikke er i orden på banen eller anlegget? Si ifra til styret.", + "heading": "Meld fra om anlegget" + } + }, + "question": "Hvem spiller på laget mitt, og hva venter på meg?" +} +``` diff --git a/runs/fotballklubb-claude-2026-09-22/model.json b/runs/fotballklubb-claude-2026-09-22/model.json new file mode 100644 index 0000000..f82b21e --- /dev/null +++ b/runs/fotballklubb-claude-2026-09-22/model.json @@ -0,0 +1,664 @@ +{ + "buckets": { + "avgiftssaker": { + "desks": [ + { + "group": "styret", + "moves": [ + { + "from": "open", + "label": "Sett i vurdering", + "to": "vurdert" + }, + { + "from": "open", + "label": "Avslå søknaden", + "to": "avslatt" + }, + { + "from": "vurdert", + "label": "Innvilg søknaden", + "to": "innvilget" + }, + { + "from": "vurdert", + "label": "Avslå søknaden", + "to": "avslatt" + } + ], + "page": "/styret" + } + ], + "initial": "open", + "self_moves": [], + "transitions": { + "open": [ + "vurdert", + "avslatt" + ], + "vurdert": [ + "innvilget", + "avslatt" + ] + } + }, + "baneproblemer": { + "desks": [ + { + "group": "styret", + "moves": [ + { + "from": "open", + "label": "Ta tak i saken", + "to": "tatt_tak_i" + }, + { + "from": "tatt_tak_i", + "label": "Merk som ordnet", + "to": "ordnet" + } + ], + "page": "/styret" + } + ], + "initial": "open", + "self_moves": [], + "transitions": { + "open": [ + "tatt_tak_i" + ], + "tatt_tak_i": [ + "ordnet" + ] + } + }, + "frivillige": { + "desks": [ + { + "group": "styret", + "moves": [ + { + "from": "kontaktet", + "label": "Sett på oppgave", + "to": "plassert" + }, + { + "from": "kontaktet", + "label": "Takk nei", + "to": "avslatt" + }, + { + "from": "open", + "label": "Ta kontakt", + "to": "kontaktet" + }, + { + "from": "open", + "label": "Takk nei", + "to": "avslatt" + } + ], + "page": "/styret" + } + ], + "initial": "open", + "self_moves": [], + "transitions": { + "kontaktet": [ + "plassert", + "avslatt" + ], + "open": [ + "kontaktet", + "avslatt" + ] + } + }, + "innmeldinger": { + "desks": [ + { + "group": "kasserer", + "moves": [ + { + "from": "godkjent", + "label": "Merk som betalt", + "to": "betalt" + } + ], + "page": "/kasserer" + }, + { + "group": "trenere", + "moves": [ + { + "from": "godkjent", + "label": "Meld av", + "to": "trukket" + }, + { + "from": "open", + "label": "Godkjenn til laget", + "to": "godkjent" + }, + { + "from": "open", + "label": "Meld av", + "to": "trukket" + } + ], + "page": "/trenere" + } + ], + "initial": "open", + "self_moves": [], + "transitions": { + "godkjent": [ + "betalt", + "trukket" + ], + "open": [ + "godkjent", + "trukket" + ] + } + }, + "sponsorer": { + "desks": [ + { + "group": "styret", + "moves": [ + { + "from": "i_dialog", + "label": "Merk som avtalt", + "to": "avtalt" + }, + { + "from": "i_dialog", + "label": "Takk nei", + "to": "avslatt" + }, + { + "from": "open", + "label": "Start dialog", + "to": "i_dialog" + }, + { + "from": "open", + "label": "Takk nei", + "to": "avslatt" + } + ], + "page": "/styret" + } + ], + "initial": "open", + "self_moves": [], + "transitions": { + "i_dialog": [ + "avtalt", + "avslatt" + ], + "open": [ + "i_dialog", + "avslatt" + ] + } + } + }, + "needs": [ + { + "done_when": [ + "betalt", + "trukket" + ], + "enters_as": null, + "handled_by": "trenere", + "id": "innmelding", + "lands_in": "innmeldinger", + "steps": [ + { + "alternative": "Har du barn som spiller eller vil spille?", + "expect": [ + "Har du barn som spiller eller vil spille?" + ], + "fields": [], + "options": [ + { + "description": "Meld på barnet ditt, eller få hjelp hvis treningsavgiften er vanskelig.", + "name": "Har du barn som spiller eller vil spille?" + }, + { + "description": "Som trener, lagleder, sjåfør eller på dugnad - eller som bedrift som vil støtte klubben.", + "name": "Vil du hjelpe til eller støtte klubben?" + } + ], + "page": "/", + "question": "Hva vil du gjøre?" + }, + { + "alternative": "Meld barnet ditt på laget", + "expect": [ + "Meld barnet ditt på laget" + ], + "fields": [ + { + "label": "Barnets navn", + "name": "barnets_navn", + "optional": false, + "options": [], + "type": "text" + }, + { + "label": "Fødselsår", + "name": "fodselsar", + "optional": false, + "options": [ + "2010", + "2011", + "2012", + "2013", + "2014", + "2015", + "2016", + "2017", + "2018", + "2019", + "2020" + ], + "type": "select" + }, + { + "label": "Ditt navn", + "name": "foresatt", + "optional": false, + "options": [], + "type": "text" + }, + { + "label": "Telefon", + "name": "telefon", + "optional": false, + "options": [], + "type": "tel" + }, + { + "label": "E-post", + "name": "epost", + "optional": false, + "options": [], + "type": "email" + }, + { + "label": "Spilt for et annet lag før", + "name": "spilt_for", + "optional": true, + "options": [], + "type": "text" + } + ], + "options": [ + { + "description": "Meld barnet ditt på laget for sitt årskull, så tar trenerne det videre.", + "name": "Meld barnet ditt på laget" + }, + { + "description": "Sliter dere med å få treningsavgiften til å gå opp? Ta kontakt, så finner vi en løsning sammen.", + "name": "Få hjelp med treningsavgiften" + } + ], + "page": "/foresatte", + "question": "Vil du melde på barnet ditt, eller trenger dere hjelp med avgiften?" + } + ], + "success": [ + "betalt" + ], + "wants": "at barnet får plass på laget for sitt årskull", + "who": "en forelder som vil ha ungen med på et lag" + }, + { + "done_when": [ + "innvilget", + "avslatt" + ], + "enters_as": null, + "handled_by": "styret", + "id": "avgiftssak", + "lands_in": "avgiftssaker", + "steps": [ + { + "alternative": "Har du barn som spiller eller vil spille?", + "expect": [ + "Har du barn som spiller eller vil spille?" + ], + "fields": [], + "options": [ + { + "description": "Meld på barnet ditt, eller få hjelp hvis treningsavgiften er vanskelig.", + "name": "Har du barn som spiller eller vil spille?" + }, + { + "description": "Som trener, lagleder, sjåfør eller på dugnad - eller som bedrift som vil støtte klubben.", + "name": "Vil du hjelpe til eller støtte klubben?" + } + ], + "page": "/", + "question": "Hva vil du gjøre?" + }, + { + "alternative": "Få hjelp med treningsavgiften", + "expect": [ + "Få hjelp med treningsavgiften" + ], + "fields": [ + { + "label": "Barnets navn", + "name": "barnets_navn", + "optional": false, + "options": [], + "type": "text" + }, + { + "label": "Ditt navn", + "name": "foresatt", + "optional": false, + "options": [], + "type": "text" + }, + { + "label": "Hva gjelder det", + "name": "hva_gjelder_det", + "optional": false, + "options": [], + "type": "textarea" + }, + { + "label": "Telefon", + "name": "telefon", + "optional": true, + "options": [], + "type": "tel" + } + ], + "options": [ + { + "description": "Meld barnet ditt på laget for sitt årskull, så tar trenerne det videre.", + "name": "Meld barnet ditt på laget" + }, + { + "description": "Sliter dere med å få treningsavgiften til å gå opp? Ta kontakt, så finner vi en løsning sammen.", + "name": "Få hjelp med treningsavgiften" + } + ], + "page": "/foresatte", + "question": "Vil du melde på barnet ditt, eller trenger dere hjelp med avgiften?" + } + ], + "success": [ + "innvilget" + ], + "wants": "å dele den opp, eller slippe den", + "who": "en forelder som sliter med treningsavgiften" + }, + { + "done_when": [ + "plassert", + "avslatt" + ], + "enters_as": null, + "handled_by": "styret", + "id": "frivillig", + "lands_in": "frivillige", + "steps": [ + { + "alternative": "Vil du hjelpe til eller støtte klubben?", + "expect": [ + "Vil du hjelpe til eller støtte klubben?" + ], + "fields": [], + "options": [ + { + "description": "Meld på barnet ditt, eller få hjelp hvis treningsavgiften er vanskelig.", + "name": "Har du barn som spiller eller vil spille?" + }, + { + "description": "Som trener, lagleder, sjåfør eller på dugnad - eller som bedrift som vil støtte klubben.", + "name": "Vil du hjelpe til eller støtte klubben?" + } + ], + "page": "/", + "question": "Hva vil du gjøre?" + }, + { + "alternative": "Bli brukt der klubben trenger deg", + "expect": [ + "Bli brukt der klubben trenger deg" + ], + "fields": [ + { + "label": "Navn", + "name": "navn", + "optional": false, + "options": [], + "type": "text" + }, + { + "label": "Telefon", + "name": "telefon", + "optional": false, + "options": [], + "type": "tel" + }, + { + "label": "Hva kan du bidra med?", + "name": "hva_kan_du", + "optional": false, + "options": [ + "Trene et lag", + "Være lagleder", + "Kjøre til kamper", + "Dugnad", + "Annet" + ], + "type": "select" + } + ], + "options": [ + { + "description": "Trener, lagleder, sjåfør eller en hånd på dugnad - vi trenger folk til alt.", + "name": "Bli brukt der klubben trenger deg" + }, + { + "description": "Bedriften din kan støtte fotballgruppa og bli synlig i bygda.", + "name": "Støtt fotballen i bygda" + } + ], + "page": "/bidra", + "question": "Vil du hjelpe til, eller la bedriften din støtte klubben?" + } + ], + "success": [ + "plassert" + ], + "wants": "å bli brukt der det trengs", + "who": "en som vil hjelpe til, som trener, lagleder, sjåfør eller på dugnad" + }, + { + "done_when": [ + "avtalt", + "avslatt" + ], + "enters_as": null, + "handled_by": "styret", + "id": "sponsor", + "lands_in": "sponsorer", + "steps": [ + { + "alternative": "Vil du hjelpe til eller støtte klubben?", + "expect": [ + "Vil du hjelpe til eller støtte klubben?" + ], + "fields": [], + "options": [ + { + "description": "Meld på barnet ditt, eller få hjelp hvis treningsavgiften er vanskelig.", + "name": "Har du barn som spiller eller vil spille?" + }, + { + "description": "Som trener, lagleder, sjåfør eller på dugnad - eller som bedrift som vil støtte klubben.", + "name": "Vil du hjelpe til eller støtte klubben?" + } + ], + "page": "/", + "question": "Hva vil du gjøre?" + }, + { + "alternative": "Støtt fotballen i bygda", + "expect": [ + "Støtt fotballen i bygda" + ], + "fields": [ + { + "label": "Bedrift", + "name": "bedrift", + "optional": false, + "options": [], + "type": "text" + }, + { + "label": "Kontaktperson", + "name": "kontaktperson", + "optional": false, + "options": [], + "type": "text" + }, + { + "label": "Telefon", + "name": "telefon", + "optional": false, + "options": [], + "type": "tel" + }, + { + "label": "Hva tenker dere?", + "name": "hva_tenker_dere", + "optional": true, + "options": [], + "type": "textarea" + } + ], + "options": [ + { + "description": "Trener, lagleder, sjåfør eller en hånd på dugnad - vi trenger folk til alt.", + "name": "Bli brukt der klubben trenger deg" + }, + { + "description": "Bedriften din kan støtte fotballgruppa og bli synlig i bygda.", + "name": "Støtt fotballen i bygda" + } + ], + "page": "/bidra", + "question": "Vil du hjelpe til, eller la bedriften din støtte klubben?" + } + ], + "success": [ + "avtalt" + ], + "wants": "en prat om hva de kan bidra med, og en avtale", + "who": "en bedrift i bygda som vil støtte klubben" + }, + { + "done_when": [ + "ordnet" + ], + "enters_as": "trenere", + "handled_by": "styret", + "id": "baneproblem", + "lands_in": "baneproblemer", + "steps": [ + { + "alternative": "Meld fra om noe som ikke er i orden", + "expect": [ + "Meld fra om noe som ikke er i orden" + ], + "fields": [ + { + "label": "Hvor på anlegget?", + "name": "hvor", + "optional": false, + "options": [], + "type": "text" + }, + { + "label": "Hva gjelder det?", + "name": "hva", + "optional": false, + "options": [], + "type": "textarea" + } + ], + "options": [ + { + "description": "Beskriv hva som er galt og hvor, så tar styret tak i det.", + "name": "Meld fra om noe som ikke er i orden" + } + ], + "page": "/trenere/baneproblem", + "question": "Hva har du oppdaget?" + } + ], + "success": [ + "ordnet" + ], + "wants": "at styret får vite det og ordner det", + "who": "en trener som ser at noe på anlegget ikke er i orden" + } + ], + "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." + } + ] +} \ No newline at end of file diff --git a/runs/fotballklubb-claude-2026-09-22/needs.yaml b/runs/fotballklubb-claude-2026-09-22/needs.yaml new file mode 100644 index 0000000..2383612 --- /dev/null +++ b/runs/fotballklubb-claude-2026-09-22/needs.yaml @@ -0,0 +1,125 @@ +needs: +- also_moved_by: + - kasserer + done_when: + - betalt + - trukket + enters: / + handled_by: trenere + id: innmelding + lands_in: innmeldinger + max_fields: 5 + max_steps: 2 + stages: + - open + - godkjent + - betalt + - trukket + success: + - betalt + via: Har du barn som spiller eller vil spille? + wants: at barnet får plass på laget for sitt årskull + who: en forelder som vil ha ungen med på et lag +- done_when: + - innvilget + - avslatt + enters: / + handled_by: styret + id: avgiftssak + lands_in: avgiftssaker + max_fields: 3 + max_steps: 2 + stages: + - open + - vurdert + - innvilget + - avslatt + success: + - innvilget + via: Har du barn som spiller eller vil spille? + wants: å dele den opp, eller slippe den + who: en forelder som sliter med treningsavgiften +- done_when: + - plassert + - avslatt + enters: / + handled_by: styret + id: frivillig + lands_in: frivillige + max_fields: 3 + max_steps: 2 + stages: + - open + - kontaktet + - plassert + - avslatt + success: + - plassert + via: Vil du hjelpe til eller støtte klubben? + wants: å bli brukt der det trengs + who: en som vil hjelpe til, som trener, lagleder, sjåfør eller på dugnad +- done_when: + - avtalt + - avslatt + enters: / + handled_by: styret + id: sponsor + lands_in: sponsorer + max_fields: 3 + max_steps: 2 + stages: + - open + - i_dialog + - avtalt + - avslatt + success: + - avtalt + via: Vil du hjelpe til eller støtte klubben? + wants: en prat om hva de kan bidra med, og en avtale + who: en bedrift i bygda som vil støtte klubben +- done_when: + - ordnet + enters: /trenere/baneproblem + enters_as: trenere + handled_by: styret + id: baneproblem + lands_in: baneproblemer + max_fields: 2 + max_steps: 1 + stages: + - open + - tatt_tak_i + - ordnet + success: + - ordnet + via: Meld fra om noe som ikke er i orden + wants: at styret får vite det og ordner det + who: en trener som ser at noe på anlegget ikke er i orden +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. diff --git a/runs/fotballklubb-claude-2026-09-22/questions/bidra/index.yaml b/runs/fotballklubb-claude-2026-09-22/questions/bidra/index.yaml new file mode 100644 index 0000000..80a338d --- /dev/null +++ b/runs/fotballklubb-claude-2026-09-22/questions/bidra/index.yaml @@ -0,0 +1,52 @@ +alternatives: +- action: /received/frivillig + consequence: + - Meld deg + description: Trener, lagleder, sjåfør eller en hånd på dugnad - vi trenger folk til alt. + features: + - name: Bli frivillig + requirements: + - label: Navn + name: navn + type: text + - label: Telefon + name: telefon + type: tel + - label: Hva kan du bidra med? + name: hva_kan_du + options: + - Trene et lag + - Være lagleder + - Kjøre til kamper + - Dugnad + - Annet + type: select + name: Bli brukt der klubben trenger deg + record_as: frivillige +- action: /received/sponsor + consequence: + - Ta kontakt + description: Bedriften din kan støtte fotballgruppa og bli synlig i bygda. + features: + - name: Bli sponsor + requirements: + - label: Bedrift + name: bedrift + type: text + - label: Kontaktperson + name: kontaktperson + type: text + - label: Telefon + name: telefon + type: tel + - label: Hva tenker dere? + name: hva_tenker_dere + optional: true + type: textarea + name: Støtt fotballen i bygda + record_as: sponsorer +description: Klubben går på foreldreinnsats og lokal støtte. Her er to måter å bidra på. +name: Vil du hjelpe til, eller la bedriften din støtte klubben? +responsible: + contact: kari@liail.example + name: Kari Lien diff --git a/runs/fotballklubb-claude-2026-09-22/questions/foresatte/index.yaml b/runs/fotballklubb-claude-2026-09-22/questions/foresatte/index.yaml new file mode 100644 index 0000000..614ab8b --- /dev/null +++ b/runs/fotballklubb-claude-2026-09-22/questions/foresatte/index.yaml @@ -0,0 +1,68 @@ +alternatives: +- action: /received/innmelding + consequence: + - Meld på + description: Meld barnet ditt på laget for sitt årskull, så tar trenerne det videre. + features: + - name: Meld på barnet + requirements: + - label: Barnets navn + name: barnets_navn + type: text + - label: Fødselsår + name: fodselsar + options: + - '2010' + - '2011' + - '2012' + - '2013' + - '2014' + - '2015' + - '2016' + - '2017' + - '2018' + - '2019' + - '2020' + type: select + - label: Ditt navn + name: foresatt + type: text + - label: Telefon + name: telefon + type: tel + - label: E-post + name: epost + type: email + - label: Spilt for et annet lag før + name: spilt_for + optional: true + type: text + name: Meld barnet ditt på laget + record_as: innmeldinger +- action: /received/avgiftssak + consequence: + - Ta kontakt + description: Sliter dere med å få treningsavgiften til å gå opp? Ta kontakt, så finner vi en løsning sammen. + features: + - name: Om treningsavgiften + requirements: + - label: Barnets navn + name: barnets_navn + type: text + - label: Ditt navn + name: foresatt + type: text + - label: Hva gjelder det + name: hva_gjelder_det + type: textarea + - label: Telefon + name: telefon + optional: true + type: tel + name: Få hjelp med treningsavgiften + record_as: avgiftssaker +description: Har du et barn som vil spille fotball, eller har spørsmål om treningsavgiften? Her finner du veien videre. +name: Vil du melde på barnet ditt, eller trenger dere hjelp med avgiften? +responsible: + contact: kari@liail.example + name: Kari Lien diff --git a/runs/fotballklubb-claude-2026-09-22/questions/index.yaml b/runs/fotballklubb-claude-2026-09-22/questions/index.yaml new file mode 100644 index 0000000..e61f741 --- /dev/null +++ b/runs/fotballklubb-claude-2026-09-22/questions/index.yaml @@ -0,0 +1,16 @@ +alternatives: +- action: /foresatte + consequence: + - Jeg er foresatt + description: Meld på barnet ditt, eller få hjelp hvis treningsavgiften er vanskelig. + name: Har du barn som spiller eller vil spille? +- action: /bidra + consequence: + - Jeg vil bidra + description: Som trener, lagleder, sjåfør eller på dugnad - eller som bedrift som vil støtte klubben. + name: Vil du hjelpe til eller støtte klubben? +description: Lia IL Fotball er fotballgruppa på bygda, med lag fra seks til seksten år, drevet av foreldre på fritida. +name: Hva vil du gjøre? +responsible: + contact: kari@liail.example + name: Kari Lien diff --git a/runs/fotballklubb-claude-2026-09-22/questions/kasserer/_section.yaml b/runs/fotballklubb-claude-2026-09-22/questions/kasserer/_section.yaml new file mode 100644 index 0000000..2f8af2f --- /dev/null +++ b/runs/fotballklubb-claude-2026-09-22/questions/kasserer/_section.yaml @@ -0,0 +1 @@ +qualifies: kasserer diff --git a/runs/fotballklubb-claude-2026-09-22/questions/kasserer/index.yaml b/runs/fotballklubb-claude-2026-09-22/questions/kasserer/index.yaml new file mode 100644 index 0000000..df5dded --- /dev/null +++ b/runs/fotballklubb-claude-2026-09-22/questions/kasserer/index.yaml @@ -0,0 +1,23 @@ +alternatives: +- action: /kasserer + consequence: + - Bekreft + description: Her ser du alle som har meldt ungen sin på et lag, og hvor langt de har kommet i prosessen. + features: + - description: '' + name: '' + resource: + requires_group: kasserer + source: + bucket: innmeldinger + kind: kv + transitions: + - from: godkjent + label: Merk som betalt + to: betalt + name: Innmeldinger som venter på deg +description: Oversikten din over innmeldinger og avgiftssaker som må følges opp. +name: Hva må jeg følge opp nå? +responsible: + contact: kari@liail.example + name: Kari Lien diff --git a/runs/fotballklubb-claude-2026-09-22/questions/received/avgiftssak.yaml b/runs/fotballklubb-claude-2026-09-22/questions/received/avgiftssak.yaml new file mode 100644 index 0000000..f4400ef --- /dev/null +++ b/runs/fotballklubb-claude-2026-09-22/questions/received/avgiftssak.yaml @@ -0,0 +1,10 @@ +alternatives: +- description: Styret behandler saken og gir deg beskjed om utfallet, enten det blir en avdragsordning eller fritak. + name: Styret vurderer saken din +- action: / + consequence: + - Til forsiden + description: '' + name: Til forsiden +description: Vi har mottatt henvendelsen din om treningsavgiften. Styret ser på den og tar kontakt med deg. +name: Har henvendelsen min kommet fram? diff --git a/runs/fotballklubb-claude-2026-09-22/questions/received/frivillig.yaml b/runs/fotballklubb-claude-2026-09-22/questions/received/frivillig.yaml new file mode 100644 index 0000000..f74b119 --- /dev/null +++ b/runs/fotballklubb-claude-2026-09-22/questions/received/frivillig.yaml @@ -0,0 +1,10 @@ +alternatives: +- description: Styret går gjennom henvendelser fortløpende og tar kontakt på e-post eller telefon, gjerne i løpet av en ukes tid. + name: Vi hører fra deg snart +- action: / + consequence: + - Tilbake til forsiden + description: '' + name: Tilbake til forsiden +description: Takk for at du vil bidra! Styret leser meldingen og tar kontakt for å høre hvor du passer best inn. +name: Hva skjer nå som jeg har meldt meg? diff --git a/runs/fotballklubb-claude-2026-09-22/questions/received/innmelding.yaml b/runs/fotballklubb-claude-2026-09-22/questions/received/innmelding.yaml new file mode 100644 index 0000000..cdd5faf --- /dev/null +++ b/runs/fotballklubb-claude-2026-09-22/questions/received/innmelding.yaml @@ -0,0 +1,10 @@ +alternatives: +- description: Trenerne går gjennom påmeldingen og gir beskjed om plass på laget for årskullet. + name: Trenerne svarer deg +- action: / + consequence: + - Til forsiden + description: '' + name: Til forsiden +description: Påmeldingen er sendt og ligger klar hos trenerne. +name: Hva skjer nå med påmeldingen? diff --git a/runs/fotballklubb-claude-2026-09-22/questions/received/sponsor.yaml b/runs/fotballklubb-claude-2026-09-22/questions/received/sponsor.yaml new file mode 100644 index 0000000..8dbe26f --- /dev/null +++ b/runs/fotballklubb-claude-2026-09-22/questions/received/sponsor.yaml @@ -0,0 +1,10 @@ +alternatives: +- description: Noen fra styret ringer eller sender e-post for å høre hva dere ønsker å bidra med, så finner vi ut av det sammen. + name: Styret tar kontakt +- action: / + consequence: + - Til forsiden + description: '' + name: Til forsiden +description: Takk for at dere vil støtte Lia IL Fotball. Styret har fått beskjeden og tar kontakt. +name: Hva skjer nå som vi har meldt interesse? diff --git a/runs/fotballklubb-claude-2026-09-22/questions/styret/_section.yaml b/runs/fotballklubb-claude-2026-09-22/questions/styret/_section.yaml new file mode 100644 index 0000000..5a34160 --- /dev/null +++ b/runs/fotballklubb-claude-2026-09-22/questions/styret/_section.yaml @@ -0,0 +1 @@ +qualifies: styret diff --git a/runs/fotballklubb-claude-2026-09-22/questions/styret/index.yaml b/runs/fotballklubb-claude-2026-09-22/questions/styret/index.yaml new file mode 100644 index 0000000..7753a9d --- /dev/null +++ b/runs/fotballklubb-claude-2026-09-22/questions/styret/index.yaml @@ -0,0 +1,104 @@ +alternatives: +- action: /styret + consequence: + - Lagre + description: Familier som strever med å betale treningsavgiften, og trenger en løsning. + features: + - description: '' + name: '' + resource: + requires_group: styret + source: + bucket: avgiftssaker + kind: kv + transitions: + - from: open + label: Sett i vurdering + to: vurdert + - from: open + label: Avslå søknaden + to: avslatt + - from: vurdert + label: Innvilg søknaden + to: innvilget + - from: vurdert + label: Avslå søknaden + to: avslatt + name: Søknader om redusert avgift +- action: /styret + consequence: + - Lagre + description: Ting på anlegget som trenerne har meldt fra om, og som må ordnes. + features: + - description: '' + name: '' + resource: + requires_group: styret + source: + bucket: baneproblemer + kind: kv + transitions: + - from: open + label: Ta tak i saken + to: tatt_tak_i + - from: tatt_tak_i + label: Merk som ordnet + to: ordnet + name: Meldinger om banen og anlegget +- action: /styret + consequence: + - Lagre + description: Folk som har meldt seg som trener, lagleder, sjåfør eller til dugnad. + features: + - description: '' + name: '' + resource: + requires_group: styret + source: + bucket: frivillige + kind: kv + transitions: + - from: kontaktet + label: Sett på oppgave + to: plassert + - from: kontaktet + label: Takk nei + to: avslatt + - from: open + label: Ta kontakt + to: kontaktet + - from: open + label: Takk nei + to: avslatt + name: De som vil hjelpe til +- action: /styret + consequence: + - Lagre + description: Bedrifter i bygda som vil støtte klubben og trenger en avtale. + features: + - description: '' + name: '' + resource: + requires_group: styret + source: + bucket: sponsorer + kind: kv + transitions: + - from: i_dialog + label: Merk som avtalt + to: avtalt + - from: i_dialog + label: Takk nei + to: avslatt + - from: open + label: Start dialog + to: i_dialog + - from: open + label: Takk nei + to: avslatt + name: Bedrifter som vil støtte oss +description: 'Her ser styret alt som venter på svar: avgiftssøknader, frivillige, sponsorer og saker på banen.' +name: Hva venter på styret nå? +responsible: + contact: kari@liail.example + name: Kari Lien diff --git a/runs/fotballklubb-claude-2026-09-22/questions/trenere/_section.yaml b/runs/fotballklubb-claude-2026-09-22/questions/trenere/_section.yaml new file mode 100644 index 0000000..03a1f29 --- /dev/null +++ b/runs/fotballklubb-claude-2026-09-22/questions/trenere/_section.yaml @@ -0,0 +1 @@ +qualifies: trenere diff --git a/runs/fotballklubb-claude-2026-09-22/questions/trenere/baneproblem-sent.yaml b/runs/fotballklubb-claude-2026-09-22/questions/trenere/baneproblem-sent.yaml new file mode 100644 index 0000000..c386871 --- /dev/null +++ b/runs/fotballklubb-claude-2026-09-22/questions/trenere/baneproblem-sent.yaml @@ -0,0 +1,10 @@ +alternatives: +- description: Noen fra styret ser på det og tar tak i det som må ordnes. + name: Styret ser på saken +- action: /trenere + consequence: + - Tilbake + description: '' + name: Tilbake +description: Vi har mottatt meldingen din om banen. Takk for at du sier ifra. +name: Hva skjer nå med det jeg meldte inn? diff --git a/runs/fotballklubb-claude-2026-09-22/questions/trenere/baneproblem.yaml b/runs/fotballklubb-claude-2026-09-22/questions/trenere/baneproblem.yaml new file mode 100644 index 0000000..fdc28da --- /dev/null +++ b/runs/fotballklubb-claude-2026-09-22/questions/trenere/baneproblem.yaml @@ -0,0 +1,22 @@ +alternatives: +- action: /trenere/baneproblem-sent + consequence: + - Send melding + description: Beskriv hva som er galt og hvor, så tar styret tak i det. + features: + - name: Meld fra om banen + requirements: + - label: Hvor på anlegget? + name: hvor + type: text + - label: Hva gjelder det? + name: hva + type: textarea + name: Meld fra om noe som ikke er i orden + record_as: baneproblemer +description: Sett du noe på anlegget som bør fikses? Gi styret beskjed her. +followup: false +name: Hva har du oppdaget? +responsible: + contact: kari@liail.example + name: Kari Lien diff --git a/runs/fotballklubb-claude-2026-09-22/questions/trenere/index.yaml b/runs/fotballklubb-claude-2026-09-22/questions/trenere/index.yaml new file mode 100644 index 0000000..a101334 --- /dev/null +++ b/runs/fotballklubb-claude-2026-09-22/questions/trenere/index.yaml @@ -0,0 +1,34 @@ +alternatives: +- action: /trenere + consequence: + - Bekreft + description: Barna som er meldt på laget ditt, og hvor langt de har kommet i påmeldingen. + features: + - description: '' + name: '' + resource: + requires_group: trenere + source: + bucket: innmeldinger + kind: kv + transitions: + - from: godkjent + label: Meld av + to: trukket + - from: open + label: Godkjenn til laget + to: godkjent + - from: open + label: Meld av + to: trukket + name: Barna som skal spille på laget ditt +- action: /trenere/baneproblem + consequence: + - Meld feil på anlegget + description: Se noe som ikke er i orden på banen eller anlegget? Si ifra til styret. + name: Meld fra om anlegget +description: Oversikt over laget ditt og påmeldingene som venter på deg. +name: Hvem spiller på laget mitt, og hva venter på meg? +responsible: + contact: kari@liail.example + name: Kari Lien diff --git a/runs/fotballklubb-claude-2026-09-22/rate.json b/runs/fotballklubb-claude-2026-09-22/rate.json new file mode 100644 index 0000000..adf0a3b --- /dev/null +++ b/runs/fotballklubb-claude-2026-09-22/rate.json @@ -0,0 +1,207 @@ +{ + "avgiftssak": { + "pages": [ + { + "control": { + "asked": 0, + "next": null, + "which": 0 + }, + "control_ok": true, + "followup_shown": false, + "lix": 26.908045977011497, + "options": 2, + "overloaded": false, + "page": "/", + "personas": 2, + "required_fields": 0, + "understanding": { + "asked": 1, + "next": null, + "which": 1 + } + }, + { + "control": { + "asked": 1, + "next": 0, + "which": 1 + }, + "control_ok": false, + "followup_shown": true, + "lix": 30.714285714285715, + "options": 2, + "overloaded": false, + "page": "/foresatte", + "personas": 2, + "required_fields": 3, + "understanding": { + "asked": 2, + "next": 2, + "which": 2 + } + } + ], + "steps": 2 + }, + "baneproblem": { + "pages": [ + { + "control": { + "asked": 0, + "next": 0, + "which": 0 + }, + "control_ok": true, + "followup_shown": true, + "lix": 17.89090909090909, + "options": 1, + "overloaded": false, + "page": "/trenere/baneproblem", + "personas": 1, + "required_fields": 2, + "understanding": { + "asked": 1, + "next": 1, + "which": 1 + } + } + ], + "steps": 1 + }, + "frivillig": { + "pages": [ + { + "control": { + "asked": 0, + "next": null, + "which": 0 + }, + "control_ok": true, + "followup_shown": false, + "lix": 26.908045977011497, + "options": 2, + "overloaded": false, + "page": "/", + "personas": 2, + "required_fields": 0, + "understanding": { + "asked": 1, + "next": null, + "which": 1 + } + }, + { + "control": { + "asked": 0, + "next": 0, + "which": 0 + }, + "control_ok": true, + "followup_shown": true, + "lix": 30.055555555555557, + "options": 2, + "overloaded": false, + "page": "/bidra", + "personas": 2, + "required_fields": 3, + "understanding": { + "asked": 2, + "next": 2, + "which": 2 + } + } + ], + "steps": 2 + }, + "innmelding": { + "pages": [ + { + "control": { + "asked": 0, + "next": null, + "which": 0 + }, + "control_ok": true, + "followup_shown": false, + "lix": 26.908045977011497, + "options": 2, + "overloaded": false, + "page": "/", + "personas": 2, + "required_fields": 0, + "understanding": { + "asked": 1, + "next": null, + "which": 2 + } + }, + { + "control": { + "asked": 1, + "next": 0, + "which": 2 + }, + "control_ok": false, + "followup_shown": true, + "lix": 32.541666666666664, + "options": 2, + "overloaded": false, + "page": "/foresatte", + "personas": 2, + "required_fields": 5, + "understanding": { + "asked": 2, + "next": 2, + "which": 2 + } + } + ], + "steps": 2 + }, + "sponsor": { + "pages": [ + { + "control": { + "asked": 1, + "next": null, + "which": 0 + }, + "control_ok": false, + "followup_shown": false, + "lix": 26.908045977011497, + "options": 2, + "overloaded": false, + "page": "/", + "personas": 2, + "required_fields": 0, + "understanding": { + "asked": 1, + "next": null, + "which": 2 + } + }, + { + "control": { + "asked": 2, + "next": 0, + "which": 1 + }, + "control_ok": false, + "followup_shown": true, + "lix": 24.5, + "options": 2, + "overloaded": false, + "page": "/bidra", + "personas": 2, + "required_fields": 3, + "understanding": { + "asked": 2, + "next": 2, + "which": 2 + } + } + ], + "steps": 2 + } +} \ No newline at end of file diff --git a/runs/fotballklubb-claude-2026-09-22/rate.txt b/runs/fotballklubb-claude-2026-09-22/rate.txt new file mode 100644 index 0000000..265cffa --- /dev/null +++ b/runs/fotballklubb-claude-2026-09-22/rate.txt @@ -0,0 +1,10 @@ +need LIX which asked next gutted twin says page load +innmelding @/ 27 very easy 2/2 1/2 - 0/0/- ok 2 options, 0 required +innmelding @/foresatte 33 easy 2/2 2/2 2/2 2/1/0 FAILED: which, asked 2 options, 5 required +avgiftssak @/ 27 very easy 1/2 1/2 - 0/0/- ok 2 options, 0 required +avgiftssak @/foresatte 31 easy 2/2 2/2 2/2 1/1/0 FAILED: which, asked 2 options, 3 required +frivillig @/ 27 very easy 1/2 1/2 - 0/0/- ok 2 options, 0 required +frivillig @/bidra 30 easy 2/2 2/2 2/2 0/0/0 ok 2 options, 3 required +sponsor @/ 27 very easy 2/2 1/2 - 0/1/- FAILED: asked 2 options, 0 required +sponsor @/bidra 24 very easy 2/2 2/2 2/2 1/2/0 FAILED: which, asked 2 options, 3 required +baneproblem 18 very easy 1/1 1/1 1/1 0/0/0 ok 1 options, 2 required diff --git a/runs/fotballklubb-claude-2026-09-22/score-full.txt b/runs/fotballklubb-claude-2026-09-22/score-full.txt new file mode 100644 index 0000000..6c562c3 --- /dev/null +++ b/runs/fotballklubb-claude-2026-09-22/score-full.txt @@ -0,0 +1,4 @@ +MISROUTE: tvillinger@/foresatte: picked "Få hjelp med treningsavgiften" (0.95), the need is met by ["Meld barnet ditt på laget"] +MISROUTE: stor-bil@/bidra: picked "Støtt fotballen i bygda" (0.95), the need is met by ["Bli brukt der klubben trenger deg"] +MISROUTE: kafeen@/bidra: picked "Bli brukt der klubben trenger deg" (0.85), the need is met by ["Støtt fotballen i bygda"] +wording: 13/16 routed right (81%) diff --git a/runs/fotballklubb-claude-2026-09-22/score-skim.txt b/runs/fotballklubb-claude-2026-09-22/score-skim.txt new file mode 100644 index 0000000..f4b7816 --- /dev/null +++ b/runs/fotballklubb-claude-2026-09-22/score-skim.txt @@ -0,0 +1,5 @@ +MISROUTE: tvillinger@/foresatte: picked "Få hjelp med treningsavgiften" (0.95), the need is met by ["Meld barnet ditt på laget"] +MISROUTE: pensjonist@/: picked "Har du barn som spiller eller vil spille?" (0.95), the need is met by ["Vil du hjelpe til eller støtte klubben?"] +MISROUTE: stor-bil@/bidra: picked "Støtt fotballen i bygda" (0.95), the need is met by ["Bli brukt der klubben trenger deg"] +MISROUTE: kafeen@/bidra: picked "Bli brukt der klubben trenger deg" (0.85), the need is met by ["Støtt fotballen i bygda"] +wording: 12/16 routed right (75%) diff --git a/runs/fotballklubb-claude-2026-09-22/site.yaml b/runs/fotballklubb-claude-2026-09-22/site.yaml new file mode 100644 index 0000000..e7785ad --- /dev/null +++ b/runs/fotballklubb-claude-2026-09-22/site.yaml @@ -0,0 +1,2 @@ +lang: nb +title: Lia IL Fotball diff --git a/runs/fotballklubb-claude-2026-09-22/tasks-full.jsonl b/runs/fotballklubb-claude-2026-09-22/tasks-full.jsonl new file mode 100644 index 0000000..140b65e --- /dev/null +++ b/runs/fotballklubb-claude-2026-09-22/tasks-full.jsonl @@ -0,0 +1,16 @@ +{"id":"ny-i-bygda@/","persona":"ny-i-bygda","need":"innmelding","page":"/","state":{"body":"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?"},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva vil du gjøre?\". Which alternative do they choose?","criteria":{"Har du barn som spiller eller vil spille?":"Meld på barnet ditt, eller få hjelp hvis treningsavgiften er vanskelig.","Vil du hjelpe til eller støtte klubben?":"Som trener, lagleder, sjåfør eller på dugnad - eller som bedrift som vil støtte klubben."}}},"expect":["Har du barn som spiller eller vil spille?"]} +{"id":"ny-i-bygda@/foresatte","persona":"ny-i-bygda","need":"innmelding","page":"/foresatte","state":{"body":"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?"},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Vil du melde på barnet ditt, eller trenger dere hjelp med avgiften?\". Which alternative do they choose?","criteria":{"Få hjelp med treningsavgiften":"Sliter dere med å få treningsavgiften til å gå opp? Ta kontakt, så finner vi en løsning sammen.","Meld barnet ditt på laget":"Meld barnet ditt på laget for sitt årskull, så tar trenerne det videre."}}},"expect":["Meld barnet ditt på laget"]} +{"id":"tvillinger@/","persona":"tvillinger","need":"innmelding","page":"/","state":{"body":"Jeg har tvillingjenter på sju som maser om å begynne. Er det plass, og hva koster det?"},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva vil du gjøre?\". Which alternative do they choose?","criteria":{"Har du barn som spiller eller vil spille?":"Meld på barnet ditt, eller få hjelp hvis treningsavgiften er vanskelig.","Vil du hjelpe til eller støtte klubben?":"Som trener, lagleder, sjåfør eller på dugnad - eller som bedrift som vil støtte klubben."}}},"expect":["Har du barn som spiller eller vil spille?"]} +{"id":"tvillinger@/foresatte","persona":"tvillinger","need":"innmelding","page":"/foresatte","state":{"body":"Jeg har tvillingjenter på sju som maser om å begynne. Er det plass, og hva koster det?"},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Vil du melde på barnet ditt, eller trenger dere hjelp med avgiften?\". Which alternative do they choose?","criteria":{"Få hjelp med treningsavgiften":"Sliter dere med å få treningsavgiften til å gå opp? Ta kontakt, så finner vi en løsning sammen.","Meld barnet ditt på laget":"Meld barnet ditt på laget for sitt årskull, så tar trenerne det videre."}}},"expect":["Meld barnet ditt på laget"]} +{"id":"alenefar@/","persona":"alenefar","need":"avgiftssak","page":"/","state":{"body":"Jeg er alene med tre unger og treningsavgiften for alle tre blir for mye på en gang. Går det an å dele den opp?"},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva vil du gjøre?\". Which alternative do they choose?","criteria":{"Har du barn som spiller eller vil spille?":"Meld på barnet ditt, eller få hjelp hvis treningsavgiften er vanskelig.","Vil du hjelpe til eller støtte klubben?":"Som trener, lagleder, sjåfør eller på dugnad - eller som bedrift som vil støtte klubben."}}},"expect":["Har du barn som spiller eller vil spille?"]} +{"id":"alenefar@/foresatte","persona":"alenefar","need":"avgiftssak","page":"/foresatte","state":{"body":"Jeg er alene med tre unger og treningsavgiften for alle tre blir for mye på en gang. Går det an å dele den opp?"},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Vil du melde på barnet ditt, eller trenger dere hjelp med avgiften?\". Which alternative do they choose?","criteria":{"Få hjelp med treningsavgiften":"Sliter dere med å få treningsavgiften til å gå opp? Ta kontakt, så finner vi en løsning sammen.","Meld barnet ditt på laget":"Meld barnet ditt på laget for sitt årskull, så tar trenerne det videre."}}},"expect":["Få hjelp med treningsavgiften"]} +{"id":"permittert@/","persona":"permittert","need":"avgiftssak","page":"/","state":{"body":"Jeg ble permittert i vinter. Kan dattera mi fortsette å spille selv om vi ikke klarer avgiften akkurat nå?"},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva vil du gjøre?\". Which alternative do they choose?","criteria":{"Har du barn som spiller eller vil spille?":"Meld på barnet ditt, eller få hjelp hvis treningsavgiften er vanskelig.","Vil du hjelpe til eller støtte klubben?":"Som trener, lagleder, sjåfør eller på dugnad - eller som bedrift som vil støtte klubben."}}},"expect":["Har du barn som spiller eller vil spille?"]} +{"id":"permittert@/foresatte","persona":"permittert","need":"avgiftssak","page":"/foresatte","state":{"body":"Jeg ble permittert i vinter. Kan dattera mi fortsette å spille selv om vi ikke klarer avgiften akkurat nå?"},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Vil du melde på barnet ditt, eller trenger dere hjelp med avgiften?\". Which alternative do they choose?","criteria":{"Få hjelp med treningsavgiften":"Sliter dere med å få treningsavgiften til å gå opp? Ta kontakt, så finner vi en løsning sammen.","Meld barnet ditt på laget":"Meld barnet ditt på laget for sitt årskull, så tar trenerne det videre."}}},"expect":["Få hjelp med treningsavgiften"]} +{"id":"pensjonist@/","persona":"pensjonist","need":"frivillig","page":"/","state":{"body":"Jeg er pensjonert og spilte selv i mange år. Har dere bruk for en som kan ta de minste et par kvelder i uka?"},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva vil du gjøre?\". Which alternative do they choose?","criteria":{"Har du barn som spiller eller vil spille?":"Meld på barnet ditt, eller få hjelp hvis treningsavgiften er vanskelig.","Vil du hjelpe til eller støtte klubben?":"Som trener, lagleder, sjåfør eller på dugnad - eller som bedrift som vil støtte klubben."}}},"expect":["Vil du hjelpe til eller støtte klubben?"]} +{"id":"pensjonist@/bidra","persona":"pensjonist","need":"frivillig","page":"/bidra","state":{"body":"Jeg er pensjonert og spilte selv i mange år. Har dere bruk for en som kan ta de minste et par kvelder i uka?"},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Vil du hjelpe til, eller la bedriften din støtte klubben?\". Which alternative do they choose?","criteria":{"Bli brukt der klubben trenger deg":"Trener, lagleder, sjåfør eller en hånd på dugnad - vi trenger folk til alt.","Støtt fotballen i bygda":"Bedriften din kan støtte fotballgruppa og bli synlig i bygda."}}},"expect":["Bli brukt der klubben trenger deg"]} +{"id":"stor-bil@/","persona":"stor-bil","need":"frivillig","page":"/","state":{"body":"Jeg kan ikke trene noen, men jeg har stor bil og kan kjøre til bortekamper."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva vil du gjøre?\". Which alternative do they choose?","criteria":{"Har du barn som spiller eller vil spille?":"Meld på barnet ditt, eller få hjelp hvis treningsavgiften er vanskelig.","Vil du hjelpe til eller støtte klubben?":"Som trener, lagleder, sjåfør eller på dugnad - eller som bedrift som vil støtte klubben."}}},"expect":["Vil du hjelpe til eller støtte klubben?"]} +{"id":"stor-bil@/bidra","persona":"stor-bil","need":"frivillig","page":"/bidra","state":{"body":"Jeg kan ikke trene noen, men jeg har stor bil og kan kjøre til bortekamper."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Vil du hjelpe til, eller la bedriften din støtte klubben?\". Which alternative do they choose?","criteria":{"Bli brukt der klubben trenger deg":"Trener, lagleder, sjåfør eller en hånd på dugnad - vi trenger folk til alt.","Støtt fotballen i bygda":"Bedriften din kan støtte fotballgruppa og bli synlig i bygda."}}},"expect":["Bli brukt der klubben trenger deg"]} +{"id":"rorlegger@/","persona":"rorlegger","need":"sponsor","page":"/","state":{"body":"Jeg driver rørleggerfirma her i bygda og vil gjerne ha logoen vår på draktene til et lag. Hvem snakker jeg med?"},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva vil du gjøre?\". Which alternative do they choose?","criteria":{"Har du barn som spiller eller vil spille?":"Meld på barnet ditt, eller få hjelp hvis treningsavgiften er vanskelig.","Vil du hjelpe til eller støtte klubben?":"Som trener, lagleder, sjåfør eller på dugnad - eller som bedrift som vil støtte klubben."}}},"expect":["Vil du hjelpe til eller støtte klubben?"]} +{"id":"rorlegger@/bidra","persona":"rorlegger","need":"sponsor","page":"/bidra","state":{"body":"Jeg driver rørleggerfirma her i bygda og vil gjerne ha logoen vår på draktene til et lag. Hvem snakker jeg med?"},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Vil du hjelpe til, eller la bedriften din støtte klubben?\". Which alternative do they choose?","criteria":{"Bli brukt der klubben trenger deg":"Trener, lagleder, sjåfør eller en hånd på dugnad - vi trenger folk til alt.","Støtt fotballen i bygda":"Bedriften din kan støtte fotballgruppa og bli synlig i bygda."}}},"expect":["Støtt fotballen i bygda"]} +{"id":"kafeen@/","persona":"kafeen","need":"sponsor","page":"/","state":{"body":"Vi har kafé i sentrum og kan bidra med noe til cupen i mai, kanskje vafler eller litt penger."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva vil du gjøre?\". Which alternative do they choose?","criteria":{"Har du barn som spiller eller vil spille?":"Meld på barnet ditt, eller få hjelp hvis treningsavgiften er vanskelig.","Vil du hjelpe til eller støtte klubben?":"Som trener, lagleder, sjåfør eller på dugnad - eller som bedrift som vil støtte klubben."}}},"expect":["Vil du hjelpe til eller støtte klubben?"]} +{"id":"kafeen@/bidra","persona":"kafeen","need":"sponsor","page":"/bidra","state":{"body":"Vi har kafé i sentrum og kan bidra med noe til cupen i mai, kanskje vafler eller litt penger."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Vil du hjelpe til, eller la bedriften din støtte klubben?\". Which alternative do they choose?","criteria":{"Bli brukt der klubben trenger deg":"Trener, lagleder, sjåfør eller en hånd på dugnad - vi trenger folk til alt.","Støtt fotballen i bygda":"Bedriften din kan støtte fotballgruppa og bli synlig i bygda."}}},"expect":["Støtt fotballen i bygda"]} diff --git a/runs/fotballklubb-claude-2026-09-22/tasks-skim.jsonl b/runs/fotballklubb-claude-2026-09-22/tasks-skim.jsonl new file mode 100644 index 0000000..88051e3 --- /dev/null +++ b/runs/fotballklubb-claude-2026-09-22/tasks-skim.jsonl @@ -0,0 +1,16 @@ +{"id":"ny-i-bygda@/","persona":"ny-i-bygda","need":"innmelding","page":"/","state":{"body":"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?"},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva vil du gjøre?\". Which alternative do they choose?","criteria":{"Har du barn som spiller eller vil spille?":"Har du barn som spiller eller vil spille?","Vil du hjelpe til eller støtte klubben?":"Vil du hjelpe til eller støtte klubben?"}}},"expect":["Har du barn som spiller eller vil spille?"]} +{"id":"ny-i-bygda@/foresatte","persona":"ny-i-bygda","need":"innmelding","page":"/foresatte","state":{"body":"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?"},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Vil du melde på barnet ditt, eller trenger dere hjelp med avgiften?\". Which alternative do they choose?","criteria":{"Få hjelp med treningsavgiften":"Få hjelp med treningsavgiften","Meld barnet ditt på laget":"Meld barnet ditt på laget"}}},"expect":["Meld barnet ditt på laget"]} +{"id":"tvillinger@/","persona":"tvillinger","need":"innmelding","page":"/","state":{"body":"Jeg har tvillingjenter på sju som maser om å begynne. Er det plass, og hva koster det?"},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva vil du gjøre?\". Which alternative do they choose?","criteria":{"Har du barn som spiller eller vil spille?":"Har du barn som spiller eller vil spille?","Vil du hjelpe til eller støtte klubben?":"Vil du hjelpe til eller støtte klubben?"}}},"expect":["Har du barn som spiller eller vil spille?"]} +{"id":"tvillinger@/foresatte","persona":"tvillinger","need":"innmelding","page":"/foresatte","state":{"body":"Jeg har tvillingjenter på sju som maser om å begynne. Er det plass, og hva koster det?"},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Vil du melde på barnet ditt, eller trenger dere hjelp med avgiften?\". Which alternative do they choose?","criteria":{"Få hjelp med treningsavgiften":"Få hjelp med treningsavgiften","Meld barnet ditt på laget":"Meld barnet ditt på laget"}}},"expect":["Meld barnet ditt på laget"]} +{"id":"alenefar@/","persona":"alenefar","need":"avgiftssak","page":"/","state":{"body":"Jeg er alene med tre unger og treningsavgiften for alle tre blir for mye på en gang. Går det an å dele den opp?"},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva vil du gjøre?\". Which alternative do they choose?","criteria":{"Har du barn som spiller eller vil spille?":"Har du barn som spiller eller vil spille?","Vil du hjelpe til eller støtte klubben?":"Vil du hjelpe til eller støtte klubben?"}}},"expect":["Har du barn som spiller eller vil spille?"]} +{"id":"alenefar@/foresatte","persona":"alenefar","need":"avgiftssak","page":"/foresatte","state":{"body":"Jeg er alene med tre unger og treningsavgiften for alle tre blir for mye på en gang. Går det an å dele den opp?"},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Vil du melde på barnet ditt, eller trenger dere hjelp med avgiften?\". Which alternative do they choose?","criteria":{"Få hjelp med treningsavgiften":"Få hjelp med treningsavgiften","Meld barnet ditt på laget":"Meld barnet ditt på laget"}}},"expect":["Få hjelp med treningsavgiften"]} +{"id":"permittert@/","persona":"permittert","need":"avgiftssak","page":"/","state":{"body":"Jeg ble permittert i vinter. Kan dattera mi fortsette å spille selv om vi ikke klarer avgiften akkurat nå?"},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva vil du gjøre?\". Which alternative do they choose?","criteria":{"Har du barn som spiller eller vil spille?":"Har du barn som spiller eller vil spille?","Vil du hjelpe til eller støtte klubben?":"Vil du hjelpe til eller støtte klubben?"}}},"expect":["Har du barn som spiller eller vil spille?"]} +{"id":"permittert@/foresatte","persona":"permittert","need":"avgiftssak","page":"/foresatte","state":{"body":"Jeg ble permittert i vinter. Kan dattera mi fortsette å spille selv om vi ikke klarer avgiften akkurat nå?"},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Vil du melde på barnet ditt, eller trenger dere hjelp med avgiften?\". Which alternative do they choose?","criteria":{"Få hjelp med treningsavgiften":"Få hjelp med treningsavgiften","Meld barnet ditt på laget":"Meld barnet ditt på laget"}}},"expect":["Få hjelp med treningsavgiften"]} +{"id":"pensjonist@/","persona":"pensjonist","need":"frivillig","page":"/","state":{"body":"Jeg er pensjonert og spilte selv i mange år. Har dere bruk for en som kan ta de minste et par kvelder i uka?"},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva vil du gjøre?\". Which alternative do they choose?","criteria":{"Har du barn som spiller eller vil spille?":"Har du barn som spiller eller vil spille?","Vil du hjelpe til eller støtte klubben?":"Vil du hjelpe til eller støtte klubben?"}}},"expect":["Vil du hjelpe til eller støtte klubben?"]} +{"id":"pensjonist@/bidra","persona":"pensjonist","need":"frivillig","page":"/bidra","state":{"body":"Jeg er pensjonert og spilte selv i mange år. Har dere bruk for en som kan ta de minste et par kvelder i uka?"},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Vil du hjelpe til, eller la bedriften din støtte klubben?\". Which alternative do they choose?","criteria":{"Bli brukt der klubben trenger deg":"Bli brukt der klubben trenger deg","Støtt fotballen i bygda":"Støtt fotballen i bygda"}}},"expect":["Bli brukt der klubben trenger deg"]} +{"id":"stor-bil@/","persona":"stor-bil","need":"frivillig","page":"/","state":{"body":"Jeg kan ikke trene noen, men jeg har stor bil og kan kjøre til bortekamper."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva vil du gjøre?\". Which alternative do they choose?","criteria":{"Har du barn som spiller eller vil spille?":"Har du barn som spiller eller vil spille?","Vil du hjelpe til eller støtte klubben?":"Vil du hjelpe til eller støtte klubben?"}}},"expect":["Vil du hjelpe til eller støtte klubben?"]} +{"id":"stor-bil@/bidra","persona":"stor-bil","need":"frivillig","page":"/bidra","state":{"body":"Jeg kan ikke trene noen, men jeg har stor bil og kan kjøre til bortekamper."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Vil du hjelpe til, eller la bedriften din støtte klubben?\". Which alternative do they choose?","criteria":{"Bli brukt der klubben trenger deg":"Bli brukt der klubben trenger deg","Støtt fotballen i bygda":"Støtt fotballen i bygda"}}},"expect":["Bli brukt der klubben trenger deg"]} +{"id":"rorlegger@/","persona":"rorlegger","need":"sponsor","page":"/","state":{"body":"Jeg driver rørleggerfirma her i bygda og vil gjerne ha logoen vår på draktene til et lag. Hvem snakker jeg med?"},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva vil du gjøre?\". Which alternative do they choose?","criteria":{"Har du barn som spiller eller vil spille?":"Har du barn som spiller eller vil spille?","Vil du hjelpe til eller støtte klubben?":"Vil du hjelpe til eller støtte klubben?"}}},"expect":["Vil du hjelpe til eller støtte klubben?"]} +{"id":"rorlegger@/bidra","persona":"rorlegger","need":"sponsor","page":"/bidra","state":{"body":"Jeg driver rørleggerfirma her i bygda og vil gjerne ha logoen vår på draktene til et lag. Hvem snakker jeg med?"},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Vil du hjelpe til, eller la bedriften din støtte klubben?\". Which alternative do they choose?","criteria":{"Bli brukt der klubben trenger deg":"Bli brukt der klubben trenger deg","Støtt fotballen i bygda":"Støtt fotballen i bygda"}}},"expect":["Støtt fotballen i bygda"]} +{"id":"kafeen@/","persona":"kafeen","need":"sponsor","page":"/","state":{"body":"Vi har kafé i sentrum og kan bidra med noe til cupen i mai, kanskje vafler eller litt penger."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva vil du gjøre?\". Which alternative do they choose?","criteria":{"Har du barn som spiller eller vil spille?":"Har du barn som spiller eller vil spille?","Vil du hjelpe til eller støtte klubben?":"Vil du hjelpe til eller støtte klubben?"}}},"expect":["Vil du hjelpe til eller støtte klubben?"]} +{"id":"kafeen@/bidra","persona":"kafeen","need":"sponsor","page":"/bidra","state":{"body":"Vi har kafé i sentrum og kan bidra med noe til cupen i mai, kanskje vafler eller litt penger."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Vil du hjelpe til, eller la bedriften din støtte klubben?\". Which alternative do they choose?","criteria":{"Bli brukt der klubben trenger deg":"Bli brukt der klubben trenger deg","Støtt fotballen i bygda":"Støtt fotballen i bygda"}}},"expect":["Støtt fotballen i bygda"]} diff --git a/runs/hire-2026-09-22/README.md b/runs/hire-2026-09-22/README.md new file mode 100644 index 0000000..ed4d952 --- /dev/null +++ b/runs/hire-2026-09-22/README.md @@ -0,0 +1,22 @@ +# A machine hire yard behind two doors + +`plans/hire.yaml`: four needs, two doors (hiring, firms), one +aggregate walked by two roles (the counter reserves, the yard hands +out and takes back), and the yard's own damage report. Built with +nemotron-3.5-lightning:30b-a3b writing the words, all 11 pages +worded, verifier green by construction. Visitor: qwen3:8b, one task +per call. Seven held-out personas, ten tasks. + +| Visitor could read | Routed right | +|---|---| +| Headings and descriptions | 10 of 10 | +| Headings only | 10 of 10 | + +The one case of the day with nothing to fix. The doors separate two +kinds of visitor who never confuse themselves (a person with a job to +do, and a firm that wants an account), and the two forms behind the +hiring door are "I need a machine" and "the machine has stopped", +which no visitor mixes up either. Doors work when the first question +is one the visitor already knows the answer to. + +`rate.txt` is the page-by-page rate; see `rate.json`. diff --git a/runs/hire-2026-09-22/aggregates.yaml b/runs/hire-2026-09-22/aggregates.yaml new file mode 100644 index 0000000..418730d --- /dev/null +++ b/runs/hire-2026-09-22/aggregates.yaml @@ -0,0 +1,69 @@ +aggregates: +- bucket: accounts + initial: open + states: + approved: + event: approved + checked: + event: checked + declined: + event: declined + open: + event: received + transitions: + checked: + - approved + - declined + open: + - checked + - declined +- bucket: breakdowns + initial: open + states: + in_hand: + event: in_hand + open: + event: received + resolved: + event: resolved + transitions: + in_hand: + - resolved + open: + - in_hand +- bucket: damage_reports + initial: open + states: + invoiced: + event: invoiced + open: + event: received + written_off: + event: written_off + transitions: + open: + - invoiced + - written_off +- bucket: hires + initial: open + states: + cancelled: + event: cancelled + open: + event: received + out: + event: out + reserved: + event: reserved + returned: + event: returned + transitions: + open: + - reserved + - cancelled + out: + - returned + - cancelled + reserved: + - out + - cancelled diff --git a/runs/hire-2026-09-22/answers-full.jsonl b/runs/hire-2026-09-22/answers-full.jsonl new file mode 100644 index 0000000..174fb09 --- /dev/null +++ b/runs/hire-2026-09-22/answers-full.jsonl @@ -0,0 +1,10 @@ +{"choice":"Need a machine for a while?","confidence":0.95,"id":"garden-wall@/"} +{"choice":"Hire a machine for your job","confidence":0.95,"id":"garden-wall@/hiring"} +{"choice":"Need a machine for a while?","confidence":0.95,"id":"roofer-lift@/"} +{"choice":"Hire a machine for your job","confidence":0.95,"id":"roofer-lift@/hiring"} +{"choice":"Need a machine for a while?","confidence":0.95,"id":"stuck-compactor@/"} +{"choice":"Machine has stopped working","confidence":0.95,"id":"stuck-compactor@/hiring"} +{"choice":"Need a machine for a while?","confidence":0.95,"id":"lift-error@/"} +{"choice":"Machine has stopped working","confidence":0.95,"id":"lift-error@/hiring"} +{"choice":"Frequent hire? Set up an account","confidence":0.95,"id":"landscaper-account@/"} +{"choice":"Frequent hire? Set up an account","confidence":0.95,"id":"builder-account@/"} diff --git a/runs/hire-2026-09-22/answers-skim.jsonl b/runs/hire-2026-09-22/answers-skim.jsonl new file mode 100644 index 0000000..174fb09 --- /dev/null +++ b/runs/hire-2026-09-22/answers-skim.jsonl @@ -0,0 +1,10 @@ +{"choice":"Need a machine for a while?","confidence":0.95,"id":"garden-wall@/"} +{"choice":"Hire a machine for your job","confidence":0.95,"id":"garden-wall@/hiring"} +{"choice":"Need a machine for a while?","confidence":0.95,"id":"roofer-lift@/"} +{"choice":"Hire a machine for your job","confidence":0.95,"id":"roofer-lift@/hiring"} +{"choice":"Need a machine for a while?","confidence":0.95,"id":"stuck-compactor@/"} +{"choice":"Machine has stopped working","confidence":0.95,"id":"stuck-compactor@/hiring"} +{"choice":"Need a machine for a while?","confidence":0.95,"id":"lift-error@/"} +{"choice":"Machine has stopped working","confidence":0.95,"id":"lift-error@/hiring"} +{"choice":"Frequent hire? Set up an account","confidence":0.95,"id":"landscaper-account@/"} +{"choice":"Frequent hire? Set up an account","confidence":0.95,"id":"builder-account@/"} diff --git a/runs/hire-2026-09-22/build.log b/runs/hire-2026-09-22/build.log new file mode 100644 index 0000000..231f7f7 --- /dev/null +++ b/runs/hire-2026-09-22/build.log @@ -0,0 +1,18 @@ +words: questions/counter/index.yaml +words: questions/firms/index.yaml +words: questions/hiring/index.yaml +words: questions/index.yaml +words: questions/office/index.yaml +words: questions/received/account-request.yaml +words: questions/received/breakdown.yaml +words: questions/received/hire-request.yaml +words: questions/yard/damage-on-return-sent.yaml +words: questions/yard/damage-on-return.yaml +words: questions/yard/index.yaml +content repo written to runs/hire-2026-09-22 +OK: 11 question(s), 5 aggregate(s) valid +need "hire-request": / [Need a machine for a while?] -> /hiring [Hire a machine for your job] -> "hires" +need "breakdown": / [Need a machine for a while?] -> /hiring [Machine has stopped working] -> "breakdowns" +need "account-request": / [Frequent hire? Set up an account] -> /firms [Set up a firm account] -> "accounts" +need "damage-on-return": /yard/damage-on-return [Record damage on return] -> "damage_reports" +OK: 4 need(s) structurally met, 0 planned, 7 persona(s) diff --git a/runs/hire-2026-09-22/llm/01-questions_counter_index.yaml.md b/runs/hire-2026-09-22/llm/01-questions_counter_index.yaml.md new file mode 100644 index 0000000..953a416 --- /dev/null +++ b/runs/hire-2026-09-22/llm/01-questions_counter_index.yaml.md @@ -0,0 +1,67 @@ +You write the words for one page of a website for this business. + +Business: Fjellstad Hire +About: Machine hire: mini diggers, lifts, compactors, generators. A counter, a yard that delivers, collects and fixes, and an office. +Contact: Ola Fjellstad +Language to write in: en + +Everyone the site serves: +- door hiring: for someone who needs a machine, or has one of ours that has stopped; behind it: hire-request, breakdown +- door firms: for a firm that hires often and wants an account with us; behind it: account-request +- hire-request: 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. Handled by counter. Stages: open -> reserved -> out -> returned -> cancelled. +- breakdown: someone whose hired machine has stopped working - wants: it running again, or swapped, today. Handled by yard. Stages: open -> in_hand -> resolved. +- account-request: a firm that hires often - wants: to send anyone to collect, and get one invoice a month. Handled by office. Stages: open -> checked -> approved -> declined. +- damage-on-return: someone in the yard who finds damage when a machine comes back - wants: it written down before the customer has left. Handled by office. Stages: open -> invoiced -> written_off. + +The page: questions/counter/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": { + "hires": { + "description": "", + "heading": "", + "moves": { + "open->cancelled": "cancelled>", + "open->reserved": "reserved>", + "out->cancelled": "cancelled>", + "reserved->cancelled": "cancelled>" + } + } + }, + "confirm": "", + "description": "", + "links": {}, + "question": "" +} + +Reply with the JSON object only. + +=== REPLY === +{ + "buckets": { + "hires": { + "description": "Track hire requests from open to returned, and handle cancellations.", + "heading": "Manage hire requests", + "moves": { + "open->cancelled": "Cancel request", + "open->reserved": "Reserve machine", + "out->cancelled": "Cancel hire", + "reserved->cancelled": "Cancel reservation" + } + } + }, + "confirm": "Confirm", + "description": "Your desk to manage machine hires and track their progress through each stage.", + "links": {}, + "question": "What case do you need to work on?" +} diff --git a/runs/hire-2026-09-22/llm/02-questions_firms_index.yaml.md b/runs/hire-2026-09-22/llm/02-questions_firms_index.yaml.md new file mode 100644 index 0000000..ebe4aa5 --- /dev/null +++ b/runs/hire-2026-09-22/llm/02-questions_firms_index.yaml.md @@ -0,0 +1,69 @@ +You write the words for one page of a website for this business. + +Business: Fjellstad Hire +About: Machine hire: mini diggers, lifts, compactors, generators. A counter, a yard that delivers, collects and fixes, and an office. +Contact: Ola Fjellstad +Language to write in: en + +Everyone the site serves: +- door hiring: for someone who needs a machine, or has one of ours that has stopped; behind it: hire-request, breakdown +- door firms: for a firm that hires often and wants an account with us; behind it: account-request +- hire-request: 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. Handled by counter. Stages: open -> reserved -> out -> returned -> cancelled. +- breakdown: someone whose hired machine has stopped working - wants: it running again, or swapped, today. Handled by yard. Stages: open -> in_hand -> resolved. +- account-request: a firm that hires often - wants: to send anyone to collect, and get one invoice a month. Handled by office. Stages: open -> checked -> approved -> declined. +- damage-on-return: someone in the yard who finds damage when a machine comes back - wants: it written down before the customer has left. Handled by office. Stages: open -> invoiced -> written_off. + +The page: questions/firms/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": "", + "needs": { + "account-request": { + "button": "", + "description": "", + "form_title": "", + "heading": "", + "labels": { + "company": "", + "contact": "", + "invoice_email": "", + "phone": "", + "registration_number": "" + } + } + }, + "question": "" +} + +Reply with the JSON object only. + +=== REPLY === +{ + "description": "Choose the path that fits how you work with us.", + "needs": { + "account-request": { + "button": "Start account", + "description": "Set up a firm account to send anyone to collect and get one monthly invoice.", + "form_title": "Firm account details", + "heading": "Set up a firm account", + "labels": { + "company": "Company name", + "contact": "Contact person", + "invoice_email": "Invoice email", + "phone": "Phone number", + "registration_number": "Organisation number" + } + } + }, + "question": "What do you need from us today?" +} diff --git a/runs/hire-2026-09-22/llm/03-questions_hiring_index.yaml.md b/runs/hire-2026-09-22/llm/03-questions_hiring_index.yaml.md new file mode 100644 index 0000000..47a6a98 --- /dev/null +++ b/runs/hire-2026-09-22/llm/03-questions_hiring_index.yaml.md @@ -0,0 +1,95 @@ +You write the words for one page of a website for this business. + +Business: Fjellstad Hire +About: Machine hire: mini diggers, lifts, compactors, generators. A counter, a yard that delivers, collects and fixes, and an office. +Contact: Ola Fjellstad +Language to write in: en + +Everyone the site serves: +- door hiring: for someone who needs a machine, or has one of ours that has stopped; behind it: hire-request, breakdown +- door firms: for a firm that hires often and wants an account with us; behind it: account-request +- hire-request: 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. Handled by counter. Stages: open -> reserved -> out -> returned -> cancelled. +- breakdown: someone whose hired machine has stopped working - wants: it running again, or swapped, today. Handled by yard. Stages: open -> in_hand -> resolved. +- account-request: a firm that hires often - wants: to send anyone to collect, and get one invoice a month. Handled by office. Stages: open -> checked -> approved -> declined. +- damage-on-return: someone in the yard who finds damage when a machine comes back - wants: it written down before the customer has left. Handled by office. Stages: open -> invoiced -> written_off. + +The page: questions/hiring/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": "", + "needs": { + "breakdown": { + "button": "", + "description": "", + "form_title": "", + "heading": "", + "labels": { + "machine": "", + "phone": "", + "what_happened": "", + "where": "" + } + }, + "hire-request": { + "button": "", + "description": "", + "form_title": "", + "heading": "", + "labels": { + "deliver_to": "", + "from": "", + "name": "", + "phone": "", + "until": "", + "what": "" + } + } + }, + "question": "" +} + +Reply with the JSON object only. + +=== REPLY === +{ + "description": "Find the right machine or report a breakdown. Pick what you need below.", + "needs": { + "breakdown": { + "button": "Report breakdown", + "description": "Tell us about the machine that stopped, so we can fix it today.", + "form_title": "Report machine breakdown", + "heading": "Machine has stopped working", + "labels": { + "machine": "Machine model", + "phone": "Phone number", + "what_happened": "What happened", + "where": "Location" + } + }, + "hire-request": { + "button": "Hire a machine", + "description": "Get the right machine on site from a start date, for as long as you need.", + "form_title": "Request machine hire", + "heading": "Hire a machine for your job", + "labels": { + "deliver_to": "Delivery address", + "from": "Start date", + "name": "Your name", + "phone": "Phone number", + "until": "Return date", + "what": "Machine type" + } + } + }, + "question": "What do you need from us today?" +} diff --git a/runs/hire-2026-09-22/llm/04-questions_index.yaml.md b/runs/hire-2026-09-22/llm/04-questions_index.yaml.md new file mode 100644 index 0000000..62008cb --- /dev/null +++ b/runs/hire-2026-09-22/llm/04-questions_index.yaml.md @@ -0,0 +1,65 @@ +You write the words for one page of a website for this business. + +Business: Fjellstad Hire +About: Machine hire: mini diggers, lifts, compactors, generators. A counter, a yard that delivers, collects and fixes, and an office. +Contact: Ola Fjellstad +Language to write in: en + +Everyone the site serves: +- door hiring: for someone who needs a machine, or has one of ours that has stopped; behind it: hire-request, breakdown +- door firms: for a firm that hires often and wants an account with us; behind it: account-request +- hire-request: 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. Handled by counter. Stages: open -> reserved -> out -> returned -> cancelled. +- breakdown: someone whose hired machine has stopped working - wants: it running again, or swapped, today. Handled by yard. Stages: open -> in_hand -> resolved. +- account-request: a firm that hires often - wants: to send anyone to collect, and get one invoice a month. Handled by office. Stages: open -> checked -> approved -> declined. +- damage-on-return: someone in the yard who finds damage when a machine comes back - wants: it written down before the customer has left. Handled by office. Stages: open -> invoiced -> written_off. + +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": "", + "doors": { + "firms": { + "button": "", + "description": "", + "heading": "" + }, + "hiring": { + "button": "", + "description": "", + "heading": "" + } + }, + "needs": {}, + "question": "" +} + +Reply with the JSON object only. + +=== REPLY === +{ + "description": "Tell us what you need, and we'll guide you to the right solution.", + "doors": { + "firms": { + "button": "Get an account", + "description": "For firms that hire often. Send anyone to collect and get one invoice a month.", + "heading": "Frequent hire? Set up an account" + }, + "hiring": { + "button": "Hire a machine", + "description": "For someone who needs a machine, or has one that has stopped. We'll help you find the right one.", + "heading": "Need a machine for a while?" + } + }, + "needs": {}, + "question": "What brings you to Fjellstad Hire today?" +} diff --git a/runs/hire-2026-09-22/llm/05-questions_office_index.yaml.md b/runs/hire-2026-09-22/llm/05-questions_office_index.yaml.md new file mode 100644 index 0000000..eab444d --- /dev/null +++ b/runs/hire-2026-09-22/llm/05-questions_office_index.yaml.md @@ -0,0 +1,83 @@ +You write the words for one page of a website for this business. + +Business: Fjellstad Hire +About: Machine hire: mini diggers, lifts, compactors, generators. A counter, a yard that delivers, collects and fixes, and an office. +Contact: Ola Fjellstad +Language to write in: en + +Everyone the site serves: +- door hiring: for someone who needs a machine, or has one of ours that has stopped; behind it: hire-request, breakdown +- door firms: for a firm that hires often and wants an account with us; behind it: account-request +- hire-request: 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. Handled by counter. Stages: open -> reserved -> out -> returned -> cancelled. +- breakdown: someone whose hired machine has stopped working - wants: it running again, or swapped, today. Handled by yard. Stages: open -> in_hand -> resolved. +- account-request: a firm that hires often - wants: to send anyone to collect, and get one invoice a month. Handled by office. Stages: open -> checked -> approved -> declined. +- damage-on-return: someone in the yard who finds damage when a machine comes back - wants: it written down before the customer has left. Handled by office. Stages: open -> invoiced -> written_off. + +The page: questions/office/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": { + "accounts": { + "description": "", + "heading": "", + "moves": { + "checked->approved": "approved>", + "checked->declined": "declined>", + "open->checked": "checked>", + "open->declined": "declined>" + } + }, + "damage_reports": { + "description": "", + "heading": "", + "moves": { + "open->invoiced": "invoiced>", + "open->written_off": "written_off>" + } + } + }, + "confirm": "", + "description": "", + "links": {}, + "question": "" +} + +Reply with the JSON object only. + +=== REPLY === +{ + "buckets": { + "accounts": { + "description": "Manage firm accounts that hire regularly. See pending requests and move them through approval.", + "heading": "Firm account requests", + "moves": { + "checked->approved": "Approve", + "checked->declined": "Decline", + "open->checked": "Review", + "open->declined": "Reject" + } + }, + "damage_reports": { + "description": "Log and finalise damage found on returned machines. Record invoices or write off costs.", + "heading": "Damage on return", + "moves": { + "open->invoiced": "Invoice", + "open->written_off": "Write off" + } + } + }, + "confirm": "Save", + "description": "Handle incoming requests and cases for hire, breakdowns, accounts, and damage.", + "links": {}, + "question": "What needs attention today?" +} diff --git a/runs/hire-2026-09-22/llm/06-questions_received_account-request.yaml.md b/runs/hire-2026-09-22/llm/06-questions_received_account-request.yaml.md new file mode 100644 index 0000000..dbd4222 --- /dev/null +++ b/runs/hire-2026-09-22/llm/06-questions_received_account-request.yaml.md @@ -0,0 +1,45 @@ +You write the words for one page of a website for this business. + +Business: Fjellstad Hire +About: Machine hire: mini diggers, lifts, compactors, generators. A counter, a yard that delivers, collects and fixes, and an office. +Contact: Ola Fjellstad +Language to write in: en + +Everyone the site serves: +- door hiring: for someone who needs a machine, or has one of ours that has stopped; behind it: hire-request, breakdown +- door firms: for a firm that hires often and wants an account with us; behind it: account-request +- hire-request: 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. Handled by counter. Stages: open -> reserved -> out -> returned -> cancelled. +- breakdown: someone whose hired machine has stopped working - wants: it running again, or swapped, today. Handled by yard. Stages: open -> in_hand -> resolved. +- account-request: a firm that hires often - wants: to send anyone to collect, and get one invoice a month. Handled by office. Stages: open -> checked -> approved -> declined. +- damage-on-return: someone in the yard who finds damage when a machine comes back - wants: it written down before the customer has left. Handled by office. Stages: open -> invoiced -> written_off. + +The page: questions/received/account-request.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": "", + "description": "", + "next_description": "", + "next_heading": "", + "question": "" +} + +Reply with the JSON object only. + +=== REPLY === +{ + "back": "Back to form", + "description": "We've received your request. Here is what happens next.", + "next_description": "We will review your request and get back to you within 1 business day.", + "next_heading": "Your request is with us", + "question": "What happens after I submit?" +} diff --git a/runs/hire-2026-09-22/llm/07-questions_received_breakdown.yaml.md b/runs/hire-2026-09-22/llm/07-questions_received_breakdown.yaml.md new file mode 100644 index 0000000..65ff5bf --- /dev/null +++ b/runs/hire-2026-09-22/llm/07-questions_received_breakdown.yaml.md @@ -0,0 +1,45 @@ +You write the words for one page of a website for this business. + +Business: Fjellstad Hire +About: Machine hire: mini diggers, lifts, compactors, generators. A counter, a yard that delivers, collects and fixes, and an office. +Contact: Ola Fjellstad +Language to write in: en + +Everyone the site serves: +- door hiring: for someone who needs a machine, or has one of ours that has stopped; behind it: hire-request, breakdown +- door firms: for a firm that hires often and wants an account with us; behind it: account-request +- hire-request: 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. Handled by counter. Stages: open -> reserved -> out -> returned -> cancelled. +- breakdown: someone whose hired machine has stopped working - wants: it running again, or swapped, today. Handled by yard. Stages: open -> in_hand -> resolved. +- account-request: a firm that hires often - wants: to send anyone to collect, and get one invoice a month. Handled by office. Stages: open -> checked -> approved -> declined. +- damage-on-return: someone in the yard who finds damage when a machine comes back - wants: it written down before the customer has left. Handled by office. Stages: open -> invoiced -> written_off. + +The page: questions/received/breakdown.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": "", + "description": "", + "next_description": "", + "next_heading": "", + "question": "" +} + +Reply with the JSON object only. + +=== REPLY === +{ + "back": "Back to form", + "description": "We received your breakdown report. Here is what happens next.", + "next_description": "Our yard team will assess the machine and get it running or arrange a swap today.", + "next_heading": "We'll get your machine running", + "question": "Is the machine still at the site?" +} diff --git a/runs/hire-2026-09-22/llm/08-questions_received_hire-request.yaml.md b/runs/hire-2026-09-22/llm/08-questions_received_hire-request.yaml.md new file mode 100644 index 0000000..ba082a9 --- /dev/null +++ b/runs/hire-2026-09-22/llm/08-questions_received_hire-request.yaml.md @@ -0,0 +1,45 @@ +You write the words for one page of a website for this business. + +Business: Fjellstad Hire +About: Machine hire: mini diggers, lifts, compactors, generators. A counter, a yard that delivers, collects and fixes, and an office. +Contact: Ola Fjellstad +Language to write in: en + +Everyone the site serves: +- door hiring: for someone who needs a machine, or has one of ours that has stopped; behind it: hire-request, breakdown +- door firms: for a firm that hires often and wants an account with us; behind it: account-request +- hire-request: 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. Handled by counter. Stages: open -> reserved -> out -> returned -> cancelled. +- breakdown: someone whose hired machine has stopped working - wants: it running again, or swapped, today. Handled by yard. Stages: open -> in_hand -> resolved. +- account-request: a firm that hires often - wants: to send anyone to collect, and get one invoice a month. Handled by office. Stages: open -> checked -> approved -> declined. +- damage-on-return: someone in the yard who finds damage when a machine comes back - wants: it written down before the customer has left. Handled by office. Stages: open -> invoiced -> written_off. + +The page: questions/received/hire-request.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": "", + "description": "", + "next_description": "", + "next_heading": "", + "question": "" +} + +Reply with the JSON object only. + +=== REPLY === +{ + "back": "Back to form", + "description": "Your request has been received. We will review it and get back to you.", + "next_description": "The counter will handle your request. They will check availability and confirm the machine and dates.", + "next_heading": "What happens next", + "question": "What machine and for how long do you need it?" +} diff --git a/runs/hire-2026-09-22/llm/09-questions_yard_damage-on-return-sent.yaml.md b/runs/hire-2026-09-22/llm/09-questions_yard_damage-on-return-sent.yaml.md new file mode 100644 index 0000000..ff27c1a --- /dev/null +++ b/runs/hire-2026-09-22/llm/09-questions_yard_damage-on-return-sent.yaml.md @@ -0,0 +1,45 @@ +You write the words for one page of a website for this business. + +Business: Fjellstad Hire +About: Machine hire: mini diggers, lifts, compactors, generators. A counter, a yard that delivers, collects and fixes, and an office. +Contact: Ola Fjellstad +Language to write in: en + +Everyone the site serves: +- door hiring: for someone who needs a machine, or has one of ours that has stopped; behind it: hire-request, breakdown +- door firms: for a firm that hires often and wants an account with us; behind it: account-request +- hire-request: 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. Handled by counter. Stages: open -> reserved -> out -> returned -> cancelled. +- breakdown: someone whose hired machine has stopped working - wants: it running again, or swapped, today. Handled by yard. Stages: open -> in_hand -> resolved. +- account-request: a firm that hires often - wants: to send anyone to collect, and get one invoice a month. Handled by office. Stages: open -> checked -> approved -> declined. +- damage-on-return: someone in the yard who finds damage when a machine comes back - wants: it written down before the customer has left. Handled by office. Stages: open -> invoiced -> written_off. + +The page: questions/yard/damage-on-return-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": "", + "description": "", + "next_description": "", + "next_heading": "", + "question": "" +} + +Reply with the JSON object only. + +=== REPLY === +{ + "back": "Back to form", + "description": "The yard team will review the damage report and update the machine status.", + "next_description": "You will receive an invoice or credit note once the damage is classified.", + "next_heading": "Damage recorded", + "question": "What happens next?" +} diff --git a/runs/hire-2026-09-22/llm/10-questions_yard_damage-on-return.yaml.md b/runs/hire-2026-09-22/llm/10-questions_yard_damage-on-return.yaml.md new file mode 100644 index 0000000..56c645a --- /dev/null +++ b/runs/hire-2026-09-22/llm/10-questions_yard_damage-on-return.yaml.md @@ -0,0 +1,57 @@ +You write the words for one page of a website for this business. + +Business: Fjellstad Hire +About: Machine hire: mini diggers, lifts, compactors, generators. A counter, a yard that delivers, collects and fixes, and an office. +Contact: Ola Fjellstad +Language to write in: en + +Everyone the site serves: +- door hiring: for someone who needs a machine, or has one of ours that has stopped; behind it: hire-request, breakdown +- door firms: for a firm that hires often and wants an account with us; behind it: account-request +- hire-request: 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. Handled by counter. Stages: open -> reserved -> out -> returned -> cancelled. +- breakdown: someone whose hired machine has stopped working - wants: it running again, or swapped, today. Handled by yard. Stages: open -> in_hand -> resolved. +- account-request: a firm that hires often - wants: to send anyone to collect, and get one invoice a month. Handled by office. Stages: open -> checked -> approved -> declined. +- damage-on-return: someone in the yard who finds damage when a machine comes back - wants: it written down before the customer has left. Handled by office. Stages: open -> invoiced -> written_off. + +The page: questions/yard/damage-on-return.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": "", + "description": "", + "form_title": "", + "heading": "", + "labels": { + "damage": "", + "hire_or_customer": "", + "machine": "" + }, + "page_description": "", + "question": "" +} + +Reply with the JSON object only. + +=== REPLY === +{ + "button": "Submit", + "description": "Record damage found on a machine before the customer leaves.", + "form_title": "Damage on Return", + "heading": "Record damage on return", + "labels": { + "damage": "Describe the damage", + "hire_or_customer": "Your hire reference", + "machine": "Machine number" + }, + "page_description": "Log damage found when a machine is returned so it can be invoiced or written off.", + "question": "What damage was found on the machine?" +} diff --git a/runs/hire-2026-09-22/llm/11-questions_yard_index.yaml.md b/runs/hire-2026-09-22/llm/11-questions_yard_index.yaml.md new file mode 100644 index 0000000..7fe30e3 --- /dev/null +++ b/runs/hire-2026-09-22/llm/11-questions_yard_index.yaml.md @@ -0,0 +1,91 @@ +You write the words for one page of a website for this business. + +Business: Fjellstad Hire +About: Machine hire: mini diggers, lifts, compactors, generators. A counter, a yard that delivers, collects and fixes, and an office. +Contact: Ola Fjellstad +Language to write in: en + +Everyone the site serves: +- door hiring: for someone who needs a machine, or has one of ours that has stopped; behind it: hire-request, breakdown +- door firms: for a firm that hires often and wants an account with us; behind it: account-request +- hire-request: 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. Handled by counter. Stages: open -> reserved -> out -> returned -> cancelled. +- breakdown: someone whose hired machine has stopped working - wants: it running again, or swapped, today. Handled by yard. Stages: open -> in_hand -> resolved. +- account-request: a firm that hires often - wants: to send anyone to collect, and get one invoice a month. Handled by office. Stages: open -> checked -> approved -> declined. +- damage-on-return: someone in the yard who finds damage when a machine comes back - wants: it written down before the customer has left. Handled by office. Stages: open -> invoiced -> written_off. + +The page: questions/yard/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": { + "breakdowns": { + "description": "", + "heading": "", + "moves": { + "in_hand->resolved": "resolved>", + "open->in_hand": "in_hand>" + } + }, + "hires": { + "description": "", + "heading": "", + "moves": { + "out->returned": "returned>", + "reserved->out": "out>" + } + } + }, + "confirm": "", + "description": "", + "links": { + "damage-on-return": { + "button": "", + "description": "", + "heading": "" + } + }, + "question": "" +} + +Reply with the JSON object only. + +=== REPLY === +{ + "buckets": { + "breakdowns": { + "description": "A hired machine has stopped working. Get it running or swapped today.", + "heading": "Breakdowns needing action", + "moves": { + "in_hand->resolved": "Mark fixed", + "open->in_hand": "Take in hand" + } + }, + "hires": { + "description": "Machines out on hire, from reserved to returned. Track the full hire cycle.", + "heading": "Active hire jobs", + "moves": { + "out->returned": "Mark returned", + "reserved->out": "Send out" + } + } + }, + "confirm": "Confirm move", + "description": "Manage cases from hire requests to breakdowns.", + "links": { + "damage-on-return": { + "button": "Log damage", + "description": "Record any damage found when a machine is returned, before the customer leaves.", + "heading": "Damage on return" + } + }, + "question": "What needs doing today?" +} diff --git a/runs/hire-2026-09-22/model.json b/runs/hire-2026-09-22/model.json new file mode 100644 index 0000000..17ac10f --- /dev/null +++ b/runs/hire-2026-09-22/model.json @@ -0,0 +1,527 @@ +{ + "buckets": { + "accounts": { + "desks": [ + { + "group": "office", + "moves": [ + { + "from": "checked", + "label": "Approve", + "to": "approved" + }, + { + "from": "checked", + "label": "Decline", + "to": "declined" + }, + { + "from": "open", + "label": "Review", + "to": "checked" + }, + { + "from": "open", + "label": "Reject", + "to": "declined" + } + ], + "page": "/office" + } + ], + "initial": "open", + "self_moves": [], + "transitions": { + "checked": [ + "approved", + "declined" + ], + "open": [ + "checked", + "declined" + ] + } + }, + "breakdowns": { + "desks": [ + { + "group": "yard", + "moves": [ + { + "from": "in_hand", + "label": "Mark fixed", + "to": "resolved" + }, + { + "from": "open", + "label": "Take in hand", + "to": "in_hand" + } + ], + "page": "/yard" + } + ], + "initial": "open", + "self_moves": [], + "transitions": { + "in_hand": [ + "resolved" + ], + "open": [ + "in_hand" + ] + } + }, + "damage_reports": { + "desks": [ + { + "group": "office", + "moves": [ + { + "from": "open", + "label": "Invoice", + "to": "invoiced" + }, + { + "from": "open", + "label": "Write off", + "to": "written_off" + } + ], + "page": "/office" + } + ], + "initial": "open", + "self_moves": [], + "transitions": { + "open": [ + "invoiced", + "written_off" + ] + } + }, + "hires": { + "desks": [ + { + "group": "counter", + "moves": [ + { + "from": "open", + "label": "Reserve machine", + "to": "reserved" + }, + { + "from": "open", + "label": "Cancel request", + "to": "cancelled" + }, + { + "from": "out", + "label": "Cancel hire", + "to": "cancelled" + }, + { + "from": "reserved", + "label": "Cancel reservation", + "to": "cancelled" + } + ], + "page": "/counter" + }, + { + "group": "yard", + "moves": [ + { + "from": "out", + "label": "Mark returned", + "to": "returned" + }, + { + "from": "reserved", + "label": "Send out", + "to": "out" + } + ], + "page": "/yard" + } + ], + "initial": "open", + "self_moves": [], + "transitions": { + "open": [ + "reserved", + "cancelled" + ], + "out": [ + "returned", + "cancelled" + ], + "reserved": [ + "out", + "cancelled" + ] + } + } + }, + "needs": [ + { + "done_when": [ + "returned", + "cancelled" + ], + "enters_as": null, + "handled_by": "counter", + "id": "hire-request", + "lands_in": "hires", + "steps": [ + { + "alternative": "Need a machine for a while?", + "expect": [ + "Need a machine for a while?" + ], + "fields": [], + "options": [ + { + "description": "For someone who needs a machine, or has one that has stopped. We'll help you find the right one.", + "name": "Need a machine for a while?" + }, + { + "description": "For firms that hire often. Send anyone to collect and get one invoice a month.", + "name": "Frequent hire? Set up an account" + } + ], + "page": "/", + "question": "What brings you to Fjellstad Hire today?" + }, + { + "alternative": "Hire a machine for your job", + "expect": [ + "Hire a machine for your job" + ], + "fields": [ + { + "label": "Your name", + "name": "name", + "optional": false, + "options": [], + "type": "text" + }, + { + "label": "Phone number", + "name": "phone", + "optional": false, + "options": [], + "type": "tel" + }, + { + "label": "Machine type", + "name": "what", + "optional": false, + "options": [], + "type": "textarea" + }, + { + "label": "Start date", + "name": "from", + "optional": false, + "options": [], + "type": "date" + }, + { + "label": "Return date", + "name": "until", + "optional": false, + "options": [], + "type": "date" + }, + { + "label": "Delivery address", + "name": "deliver_to", + "optional": true, + "options": [], + "type": "text" + } + ], + "options": [ + { + "description": "Get the right machine on site from a start date, for as long as you need.", + "name": "Hire a machine for your job" + }, + { + "description": "Tell us about the machine that stopped, so we can fix it today.", + "name": "Machine has stopped working" + } + ], + "page": "/hiring", + "question": "What do you need from us today?" + } + ], + "success": [ + "returned" + ], + "wants": "the right machine, from a date, for as long as they need it", + "who": "a private person or a firm who needs a machine for a while" + }, + { + "done_when": [ + "resolved" + ], + "enters_as": null, + "handled_by": "yard", + "id": "breakdown", + "lands_in": "breakdowns", + "steps": [ + { + "alternative": "Need a machine for a while?", + "expect": [ + "Need a machine for a while?" + ], + "fields": [], + "options": [ + { + "description": "For someone who needs a machine, or has one that has stopped. We'll help you find the right one.", + "name": "Need a machine for a while?" + }, + { + "description": "For firms that hire often. Send anyone to collect and get one invoice a month.", + "name": "Frequent hire? Set up an account" + } + ], + "page": "/", + "question": "What brings you to Fjellstad Hire today?" + }, + { + "alternative": "Machine has stopped working", + "expect": [ + "Machine has stopped working" + ], + "fields": [ + { + "label": "Phone number", + "name": "phone", + "optional": false, + "options": [], + "type": "tel" + }, + { + "label": "Machine model", + "name": "machine", + "optional": false, + "options": [], + "type": "text" + }, + { + "label": "What happened", + "name": "what_happened", + "optional": false, + "options": [], + "type": "textarea" + }, + { + "label": "Location", + "name": "where", + "optional": true, + "options": [], + "type": "text" + } + ], + "options": [ + { + "description": "Get the right machine on site from a start date, for as long as you need.", + "name": "Hire a machine for your job" + }, + { + "description": "Tell us about the machine that stopped, so we can fix it today.", + "name": "Machine has stopped working" + } + ], + "page": "/hiring", + "question": "What do you need from us today?" + } + ], + "success": [ + "resolved" + ], + "wants": "it running again, or swapped, today", + "who": "someone whose hired machine has stopped working" + }, + { + "done_when": [ + "approved", + "declined" + ], + "enters_as": null, + "handled_by": "office", + "id": "account-request", + "lands_in": "accounts", + "steps": [ + { + "alternative": "Frequent hire? Set up an account", + "expect": [ + "Frequent hire? Set up an account" + ], + "fields": [], + "options": [ + { + "description": "For someone who needs a machine, or has one that has stopped. We'll help you find the right one.", + "name": "Need a machine for a while?" + }, + { + "description": "For firms that hire often. Send anyone to collect and get one invoice a month.", + "name": "Frequent hire? Set up an account" + } + ], + "page": "/", + "question": "What brings you to Fjellstad Hire today?" + }, + { + "alternative": "Set up a firm account", + "expect": [ + "Set up a firm account" + ], + "fields": [ + { + "label": "Company name", + "name": "company", + "optional": false, + "options": [], + "type": "text" + }, + { + "label": "Organisation number", + "name": "registration_number", + "optional": false, + "options": [], + "type": "text" + }, + { + "label": "Contact person", + "name": "contact", + "optional": false, + "options": [], + "type": "text" + }, + { + "label": "Phone number", + "name": "phone", + "optional": false, + "options": [], + "type": "tel" + }, + { + "label": "Invoice email", + "name": "invoice_email", + "optional": true, + "options": [], + "type": "email" + } + ], + "options": [ + { + "description": "Set up a firm account to send anyone to collect and get one monthly invoice.", + "name": "Set up a firm account" + } + ], + "page": "/firms", + "question": "What do you need from us today?" + } + ], + "success": [ + "approved" + ], + "wants": "to send anyone to collect, and get one invoice a month", + "who": "a firm that hires often" + }, + { + "done_when": [ + "invoiced", + "written_off" + ], + "enters_as": "yard", + "handled_by": "office", + "id": "damage-on-return", + "lands_in": "damage_reports", + "steps": [ + { + "alternative": "Record damage on return", + "expect": [ + "Record damage on return" + ], + "fields": [ + { + "label": "Machine number", + "name": "machine", + "optional": false, + "options": [], + "type": "text" + }, + { + "label": "Your hire reference", + "name": "hire_or_customer", + "optional": false, + "options": [], + "type": "text" + }, + { + "label": "Describe the damage", + "name": "damage", + "optional": false, + "options": [], + "type": "textarea" + } + ], + "options": [ + { + "description": "Record damage found on a machine before the customer leaves.", + "name": "Record damage on return" + } + ], + "page": "/yard/damage-on-return", + "question": "What damage was found on the machine?" + } + ], + "success": [ + "invoiced" + ], + "wants": "it written down before the customer has left", + "who": "someone in the yard who finds damage when a machine comes back" + } + ], + "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." + } + ] +} \ No newline at end of file diff --git a/runs/hire-2026-09-22/needs.yaml b/runs/hire-2026-09-22/needs.yaml new file mode 100644 index 0000000..865bdc6 --- /dev/null +++ b/runs/hire-2026-09-22/needs.yaml @@ -0,0 +1,100 @@ +needs: +- also_moved_by: + - yard + done_when: + - returned + - cancelled + enters: / + handled_by: counter + id: hire-request + lands_in: hires + max_fields: 5 + max_steps: 2 + stages: + - open + - reserved + - out + - returned + - cancelled + success: + - returned + via: Need a machine for a while? + wants: the right machine, from a date, for as long as they need it + who: a private person or a firm who needs a machine for a while +- done_when: + - resolved + enters: / + handled_by: yard + id: breakdown + lands_in: breakdowns + max_fields: 3 + max_steps: 2 + stages: + - open + - in_hand + - resolved + success: + - resolved + via: Need a machine for a while? + wants: it running again, or swapped, today + who: someone whose hired machine has stopped working +- done_when: + - approved + - declined + enters: / + handled_by: office + id: account-request + lands_in: accounts + max_fields: 4 + max_steps: 2 + stages: + - open + - checked + - approved + - declined + success: + - approved + via: Frequent hire? Set up an account + wants: to send anyone to collect, and get one invoice a month + who: a firm that hires often +- done_when: + - invoiced + - written_off + enters: /yard/damage-on-return + enters_as: yard + handled_by: office + id: damage-on-return + lands_in: damage_reports + max_fields: 3 + max_steps: 1 + stages: + - open + - invoiced + - written_off + success: + - invoiced + via: Record damage on return + wants: it written down before the customer has left + who: someone in the yard who finds damage when a machine comes back +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. diff --git a/runs/hire-2026-09-22/questions/counter/_section.yaml b/runs/hire-2026-09-22/questions/counter/_section.yaml new file mode 100644 index 0000000..107735a --- /dev/null +++ b/runs/hire-2026-09-22/questions/counter/_section.yaml @@ -0,0 +1 @@ +qualifies: counter diff --git a/runs/hire-2026-09-22/questions/counter/index.yaml b/runs/hire-2026-09-22/questions/counter/index.yaml new file mode 100644 index 0000000..345d1b2 --- /dev/null +++ b/runs/hire-2026-09-22/questions/counter/index.yaml @@ -0,0 +1,32 @@ +alternatives: +- action: /counter + consequence: + - Confirm + description: Track hire requests from open to returned, and handle cancellations. + features: + - description: '' + name: '' + resource: + requires_group: counter + source: + bucket: hires + kind: kv + transitions: + - from: open + label: Reserve machine + to: reserved + - from: open + label: Cancel request + to: cancelled + - from: out + label: Cancel hire + to: cancelled + - from: reserved + label: Cancel reservation + to: cancelled + name: Manage hire requests +description: Your desk to manage machine hires and track their progress through each stage. +name: What case do you need to work on? +responsible: + contact: ola@fjellstadhire.example + name: Ola Fjellstad diff --git a/runs/hire-2026-09-22/questions/firms/index.yaml b/runs/hire-2026-09-22/questions/firms/index.yaml new file mode 100644 index 0000000..a273fef --- /dev/null +++ b/runs/hire-2026-09-22/questions/firms/index.yaml @@ -0,0 +1,31 @@ +alternatives: +- action: /received/account-request + consequence: + - Start account + description: Set up a firm account to send anyone to collect and get one monthly invoice. + features: + - name: Firm account details + requirements: + - label: Company name + name: company + type: text + - label: Organisation number + name: registration_number + type: text + - label: Contact person + name: contact + type: text + - label: Phone number + name: phone + type: tel + - label: Invoice email + name: invoice_email + optional: true + type: email + name: Set up a firm account + record_as: accounts +description: Choose the path that fits how you work with us. +name: What do you need from us today? +responsible: + contact: ola@fjellstadhire.example + name: Ola Fjellstad diff --git a/runs/hire-2026-09-22/questions/hiring/index.yaml b/runs/hire-2026-09-22/questions/hiring/index.yaml new file mode 100644 index 0000000..500e03a --- /dev/null +++ b/runs/hire-2026-09-22/questions/hiring/index.yaml @@ -0,0 +1,56 @@ +alternatives: +- action: /received/hire-request + consequence: + - Hire a machine + description: Get the right machine on site from a start date, for as long as you need. + features: + - name: Request machine hire + requirements: + - label: Your name + name: name + type: text + - label: Phone number + name: phone + type: tel + - label: Machine type + name: what + type: textarea + - label: Start date + name: from + type: date + - label: Return date + name: until + type: date + - label: Delivery address + name: deliver_to + optional: true + type: text + name: Hire a machine for your job + record_as: hires +- action: /received/breakdown + consequence: + - Report breakdown + description: Tell us about the machine that stopped, so we can fix it today. + features: + - name: Report machine breakdown + requirements: + - label: Phone number + name: phone + type: tel + - label: Machine model + name: machine + type: text + - label: What happened + name: what_happened + type: textarea + - label: Location + name: where + optional: true + type: text + name: Machine has stopped working + record_as: breakdowns +description: Find the right machine or report a breakdown. Pick what you need below. +name: What do you need from us today? +responsible: + contact: ola@fjellstadhire.example + name: Ola Fjellstad diff --git a/runs/hire-2026-09-22/questions/index.yaml b/runs/hire-2026-09-22/questions/index.yaml new file mode 100644 index 0000000..1a35d42 --- /dev/null +++ b/runs/hire-2026-09-22/questions/index.yaml @@ -0,0 +1,16 @@ +alternatives: +- action: /hiring + consequence: + - Hire a machine + description: For someone who needs a machine, or has one that has stopped. We'll help you find the right one. + name: Need a machine for a while? +- action: /firms + consequence: + - Get an account + description: For firms that hire often. Send anyone to collect and get one invoice a month. + name: Frequent hire? Set up an account +description: Tell us what you need, and we'll guide you to the right solution. +name: What brings you to Fjellstad Hire today? +responsible: + contact: ola@fjellstadhire.example + name: Ola Fjellstad diff --git a/runs/hire-2026-09-22/questions/office/_section.yaml b/runs/hire-2026-09-22/questions/office/_section.yaml new file mode 100644 index 0000000..f981f8f --- /dev/null +++ b/runs/hire-2026-09-22/questions/office/_section.yaml @@ -0,0 +1 @@ +qualifies: office diff --git a/runs/hire-2026-09-22/questions/office/index.yaml b/runs/hire-2026-09-22/questions/office/index.yaml new file mode 100644 index 0000000..52346a1 --- /dev/null +++ b/runs/hire-2026-09-22/questions/office/index.yaml @@ -0,0 +1,52 @@ +alternatives: +- action: /office + consequence: + - Save + description: Manage firm accounts that hire regularly. See pending requests and move them through approval. + features: + - description: '' + name: '' + resource: + requires_group: office + source: + bucket: accounts + kind: kv + transitions: + - from: checked + label: Approve + to: approved + - from: checked + label: Decline + to: declined + - from: open + label: Review + to: checked + - from: open + label: Reject + to: declined + name: Firm account requests +- action: /office + consequence: + - Save + description: Log and finalise damage found on returned machines. Record invoices or write off costs. + features: + - description: '' + name: '' + resource: + requires_group: office + source: + bucket: damage_reports + kind: kv + transitions: + - from: open + label: Invoice + to: invoiced + - from: open + label: Write off + to: written_off + name: Damage on return +description: Handle incoming requests and cases for hire, breakdowns, accounts, and damage. +name: What needs attention today? +responsible: + contact: ola@fjellstadhire.example + name: Ola Fjellstad diff --git a/runs/hire-2026-09-22/questions/received/account-request.yaml b/runs/hire-2026-09-22/questions/received/account-request.yaml new file mode 100644 index 0000000..d70e433 --- /dev/null +++ b/runs/hire-2026-09-22/questions/received/account-request.yaml @@ -0,0 +1,10 @@ +alternatives: +- description: We will review your request and get back to you within 1 business day. + name: Your request is with us +- action: / + consequence: + - Back to form + description: '' + name: Back to form +description: We've received your request. Here is what happens next. +name: What happens after I submit? diff --git a/runs/hire-2026-09-22/questions/received/breakdown.yaml b/runs/hire-2026-09-22/questions/received/breakdown.yaml new file mode 100644 index 0000000..693486f --- /dev/null +++ b/runs/hire-2026-09-22/questions/received/breakdown.yaml @@ -0,0 +1,10 @@ +alternatives: +- description: Our yard team will assess the machine and get it running or arrange a swap today. + name: We'll get your machine running +- action: / + consequence: + - Back to form + description: '' + name: Back to form +description: We received your breakdown report. Here is what happens next. +name: Is the machine still at the site? diff --git a/runs/hire-2026-09-22/questions/received/hire-request.yaml b/runs/hire-2026-09-22/questions/received/hire-request.yaml new file mode 100644 index 0000000..0de8e52 --- /dev/null +++ b/runs/hire-2026-09-22/questions/received/hire-request.yaml @@ -0,0 +1,10 @@ +alternatives: +- description: The counter will handle your request. They will check availability and confirm the machine and dates. + name: What happens next +- action: / + consequence: + - Back to form + description: '' + name: Back to form +description: Your request has been received. We will review it and get back to you. +name: What machine and for how long do you need it? diff --git a/runs/hire-2026-09-22/questions/yard/_section.yaml b/runs/hire-2026-09-22/questions/yard/_section.yaml new file mode 100644 index 0000000..52af849 --- /dev/null +++ b/runs/hire-2026-09-22/questions/yard/_section.yaml @@ -0,0 +1 @@ +qualifies: yard diff --git a/runs/hire-2026-09-22/questions/yard/damage-on-return-sent.yaml b/runs/hire-2026-09-22/questions/yard/damage-on-return-sent.yaml new file mode 100644 index 0000000..548ab4d --- /dev/null +++ b/runs/hire-2026-09-22/questions/yard/damage-on-return-sent.yaml @@ -0,0 +1,10 @@ +alternatives: +- description: You will receive an invoice or credit note once the damage is classified. + name: Damage recorded +- action: /yard + consequence: + - Back to form + description: '' + name: Back to form +description: The yard team will review the damage report and update the machine status. +name: What happens next? diff --git a/runs/hire-2026-09-22/questions/yard/damage-on-return.yaml b/runs/hire-2026-09-22/questions/yard/damage-on-return.yaml new file mode 100644 index 0000000..d83cf43 --- /dev/null +++ b/runs/hire-2026-09-22/questions/yard/damage-on-return.yaml @@ -0,0 +1,25 @@ +alternatives: +- action: /yard/damage-on-return-sent + consequence: + - Submit + description: Record damage found on a machine before the customer leaves. + features: + - name: Damage on Return + requirements: + - label: Machine number + name: machine + type: text + - label: Your hire reference + name: hire_or_customer + type: text + - label: Describe the damage + name: damage + type: textarea + name: Record damage on return + record_as: damage_reports +description: Log damage found when a machine is returned so it can be invoiced or written off. +followup: false +name: What damage was found on the machine? +responsible: + contact: ola@fjellstadhire.example + name: Ola Fjellstad diff --git a/runs/hire-2026-09-22/questions/yard/index.yaml b/runs/hire-2026-09-22/questions/yard/index.yaml new file mode 100644 index 0000000..4c6ec4b --- /dev/null +++ b/runs/hire-2026-09-22/questions/yard/index.yaml @@ -0,0 +1,51 @@ +alternatives: +- action: /yard + consequence: + - Confirm move + description: A hired machine has stopped working. Get it running or swapped today. + features: + - description: '' + name: '' + resource: + requires_group: yard + source: + bucket: breakdowns + kind: kv + transitions: + - from: in_hand + label: Mark fixed + to: resolved + - from: open + label: Take in hand + to: in_hand + name: Breakdowns needing action +- action: /yard + consequence: + - Confirm move + description: Machines out on hire, from reserved to returned. Track the full hire cycle. + features: + - description: '' + name: '' + resource: + requires_group: yard + source: + bucket: hires + kind: kv + transitions: + - from: out + label: Mark returned + to: returned + - from: reserved + label: Send out + to: out + name: Active hire jobs +- action: /yard/damage-on-return + consequence: + - Log damage + description: Record any damage found when a machine is returned, before the customer leaves. + name: Damage on return +description: Manage cases from hire requests to breakdowns. +name: What needs doing today? +responsible: + contact: ola@fjellstadhire.example + name: Ola Fjellstad diff --git a/runs/hire-2026-09-22/rate.json b/runs/hire-2026-09-22/rate.json new file mode 100644 index 0000000..a2faf49 --- /dev/null +++ b/runs/hire-2026-09-22/rate.json @@ -0,0 +1,162 @@ +{ + "account-request": { + "pages": [ + { + "control": { + "asked": 0, + "next": null, + "which": 0 + }, + "control_ok": true, + "followup_shown": false, + "lix": 22.834146341463416, + "options": 2, + "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": 29.254545454545454, + "options": 1, + "overloaded": false, + "page": "/firms", + "personas": 2, + "required_fields": 4, + "understanding": { + "asked": 2, + "next": 2, + "which": 2 + } + } + ], + "steps": 2 + }, + "breakdown": { + "pages": [ + { + "control": { + "asked": 0, + "next": null, + "which": 0 + }, + "control_ok": true, + "followup_shown": false, + "lix": 22.834146341463416, + "options": 2, + "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": 24.8494623655914, + "options": 2, + "overloaded": false, + "page": "/hiring", + "personas": 2, + "required_fields": 3, + "understanding": { + "asked": 2, + "next": 2, + "which": 2 + } + } + ], + "steps": 2 + }, + "damage-on-return": { + "pages": [ + { + "control": { + "asked": 0, + "next": 0, + "which": 0 + }, + "control_ok": true, + "followup_shown": true, + "lix": 27.02906976744186, + "options": 1, + "overloaded": false, + "page": "/yard/damage-on-return", + "personas": 1, + "required_fields": 3, + "understanding": { + "asked": 1, + "next": 1, + "which": 1 + } + } + ], + "steps": 1 + }, + "hire-request": { + "pages": [ + { + "control": { + "asked": 0, + "next": null, + "which": 0 + }, + "control_ok": true, + "followup_shown": false, + "lix": 22.834146341463416, + "options": 2, + "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": 24.58008658008658, + "options": 2, + "overloaded": false, + "page": "/hiring", + "personas": 2, + "required_fields": 5, + "understanding": { + "asked": 2, + "next": 2, + "which": 2 + } + } + ], + "steps": 2 + } +} \ No newline at end of file diff --git a/runs/hire-2026-09-22/rate.txt b/runs/hire-2026-09-22/rate.txt new file mode 100644 index 0000000..a73445d --- /dev/null +++ b/runs/hire-2026-09-22/rate.txt @@ -0,0 +1,8 @@ +need LIX which asked next gutted twin says page load +hire-request @/ 23 very easy 2/2 0/2 - 0/0/- ok 2 options, 0 required +hire-request @/hiring 25 very easy 2/2 2/2 2/2 0/0/0 ok 2 options, 5 required +breakdown @/ 23 very easy 2/2 0/2 - 0/0/- ok 2 options, 0 required +breakdown @/hiring 25 very easy 2/2 2/2 2/2 0/0/0 ok 2 options, 3 required +account-request @/ 23 very easy 2/2 0/2 - 0/0/- ok 2 options, 0 required +account-request @/firms 29 very easy 2/2 2/2 2/2 0/0/0 ok 1 options, 4 required +damage-on-return 27 very easy 1/1 1/1 1/1 0/0/0 ok 1 options, 3 required diff --git a/runs/hire-2026-09-22/score-full.txt b/runs/hire-2026-09-22/score-full.txt new file mode 100644 index 0000000..15d307d --- /dev/null +++ b/runs/hire-2026-09-22/score-full.txt @@ -0,0 +1 @@ +wording: 10/10 routed right (100%) diff --git a/runs/hire-2026-09-22/score-skim.txt b/runs/hire-2026-09-22/score-skim.txt new file mode 100644 index 0000000..15d307d --- /dev/null +++ b/runs/hire-2026-09-22/score-skim.txt @@ -0,0 +1 @@ +wording: 10/10 routed right (100%) diff --git a/runs/hire-2026-09-22/site.yaml b/runs/hire-2026-09-22/site.yaml new file mode 100644 index 0000000..717f383 --- /dev/null +++ b/runs/hire-2026-09-22/site.yaml @@ -0,0 +1,2 @@ +lang: en +title: Fjellstad Hire diff --git a/runs/hire-2026-09-22/tasks-full.jsonl b/runs/hire-2026-09-22/tasks-full.jsonl new file mode 100644 index 0000000..b679fc9 --- /dev/null +++ b/runs/hire-2026-09-22/tasks-full.jsonl @@ -0,0 +1,10 @@ +{"id":"garden-wall@/","persona":"garden-wall","need":"hire-request","page":"/","state":{"body":"I'm building a stone wall in the garden and need a small digger for a weekend. I've never driven one."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"What brings you to Fjellstad Hire today?\". Which alternative do they choose?","criteria":{"Frequent hire? Set up an account":"For firms that hire often. Send anyone to collect and get one invoice a month.","Need a machine for a while?":"For someone who needs a machine, or has one that has stopped. We'll help you find the right one."}}},"expect":["Need a machine for a while?"]} +{"id":"garden-wall@/hiring","persona":"garden-wall","need":"hire-request","page":"/hiring","state":{"body":"I'm building a stone wall in the garden and need a small digger for a weekend. I've never driven one."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"What do you need from us today?\". Which alternative do they choose?","criteria":{"Hire a machine for your job":"Get the right machine on site from a start date, for as long as you need.","Machine has stopped working":"Tell us about the machine that stopped, so we can fix it today."}}},"expect":["Hire a machine for your job"]} +{"id":"roofer-lift@/","persona":"roofer-lift","need":"hire-request","page":"/","state":{"body":"We're a roofing crew and need a scissor lift on site in Dalen from Monday for about two weeks."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"What brings you to Fjellstad Hire today?\". Which alternative do they choose?","criteria":{"Frequent hire? Set up an account":"For firms that hire often. Send anyone to collect and get one invoice a month.","Need a machine for a while?":"For someone who needs a machine, or has one that has stopped. We'll help you find the right one."}}},"expect":["Need a machine for a while?"]} +{"id":"roofer-lift@/hiring","persona":"roofer-lift","need":"hire-request","page":"/hiring","state":{"body":"We're a roofing crew and need a scissor lift on site in Dalen from Monday for about two weeks."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"What do you need from us today?\". Which alternative do they choose?","criteria":{"Hire a machine for your job":"Get the right machine on site from a start date, for as long as you need.","Machine has stopped working":"Tell us about the machine that stopped, so we can fix it today."}}},"expect":["Hire a machine for your job"]} +{"id":"stuck-compactor@/","persona":"stuck-compactor","need":"breakdown","page":"/","state":{"body":"The plate compactor I picked up this morning won't start. I've got a crew standing around."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"What brings you to Fjellstad Hire today?\". Which alternative do they choose?","criteria":{"Frequent hire? Set up an account":"For firms that hire often. Send anyone to collect and get one invoice a month.","Need a machine for a while?":"For someone who needs a machine, or has one that has stopped. We'll help you find the right one."}}},"expect":["Need a machine for a while?"]} +{"id":"stuck-compactor@/hiring","persona":"stuck-compactor","need":"breakdown","page":"/hiring","state":{"body":"The plate compactor I picked up this morning won't start. I've got a crew standing around."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"What do you need from us today?\". Which alternative do they choose?","criteria":{"Hire a machine for your job":"Get the right machine on site from a start date, for as long as you need.","Machine has stopped working":"Tell us about the machine that stopped, so we can fix it today."}}},"expect":["Machine has stopped working"]} +{"id":"lift-error@/","persona":"lift-error","need":"breakdown","page":"/","state":{"body":"The lift you delivered keeps showing an error and stops halfway up. It's on our site at the school."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"What brings you to Fjellstad Hire today?\". Which alternative do they choose?","criteria":{"Frequent hire? Set up an account":"For firms that hire often. Send anyone to collect and get one invoice a month.","Need a machine for a while?":"For someone who needs a machine, or has one that has stopped. We'll help you find the right one."}}},"expect":["Need a machine for a while?"]} +{"id":"lift-error@/hiring","persona":"lift-error","need":"breakdown","page":"/hiring","state":{"body":"The lift you delivered keeps showing an error and stops halfway up. It's on our site at the school."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"What do you need from us today?\". Which alternative do they choose?","criteria":{"Hire a machine for your job":"Get the right machine on site from a start date, for as long as you need.","Machine has stopped working":"Tell us about the machine that stopped, so we can fix it today."}}},"expect":["Machine has stopped working"]} +{"id":"landscaper-account@/","persona":"landscaper-account","need":"account-request","page":"/","state":{"body":"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?"},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"What brings you to Fjellstad Hire today?\". Which alternative do they choose?","criteria":{"Frequent hire? Set up an account":"For firms that hire often. Send anyone to collect and get one invoice a month.","Need a machine for a while?":"For someone who needs a machine, or has one that has stopped. We'll help you find the right one."}}},"expect":["Frequent hire? Set up an account"]} +{"id":"builder-account@/","persona":"builder-account","need":"account-request","page":"/","state":{"body":"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."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"What brings you to Fjellstad Hire today?\". Which alternative do they choose?","criteria":{"Frequent hire? Set up an account":"For firms that hire often. Send anyone to collect and get one invoice a month.","Need a machine for a while?":"For someone who needs a machine, or has one that has stopped. We'll help you find the right one."}}},"expect":["Frequent hire? Set up an account"]} diff --git a/runs/hire-2026-09-22/tasks-skim.jsonl b/runs/hire-2026-09-22/tasks-skim.jsonl new file mode 100644 index 0000000..48531c6 --- /dev/null +++ b/runs/hire-2026-09-22/tasks-skim.jsonl @@ -0,0 +1,10 @@ +{"id":"garden-wall@/","persona":"garden-wall","need":"hire-request","page":"/","state":{"body":"I'm building a stone wall in the garden and need a small digger for a weekend. I've never driven one."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"What brings you to Fjellstad Hire today?\". Which alternative do they choose?","criteria":{"Frequent hire? Set up an account":"Frequent hire? Set up an account","Need a machine for a while?":"Need a machine for a while?"}}},"expect":["Need a machine for a while?"]} +{"id":"garden-wall@/hiring","persona":"garden-wall","need":"hire-request","page":"/hiring","state":{"body":"I'm building a stone wall in the garden and need a small digger for a weekend. I've never driven one."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"What do you need from us today?\". Which alternative do they choose?","criteria":{"Hire a machine for your job":"Hire a machine for your job","Machine has stopped working":"Machine has stopped working"}}},"expect":["Hire a machine for your job"]} +{"id":"roofer-lift@/","persona":"roofer-lift","need":"hire-request","page":"/","state":{"body":"We're a roofing crew and need a scissor lift on site in Dalen from Monday for about two weeks."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"What brings you to Fjellstad Hire today?\". Which alternative do they choose?","criteria":{"Frequent hire? Set up an account":"Frequent hire? Set up an account","Need a machine for a while?":"Need a machine for a while?"}}},"expect":["Need a machine for a while?"]} +{"id":"roofer-lift@/hiring","persona":"roofer-lift","need":"hire-request","page":"/hiring","state":{"body":"We're a roofing crew and need a scissor lift on site in Dalen from Monday for about two weeks."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"What do you need from us today?\". Which alternative do they choose?","criteria":{"Hire a machine for your job":"Hire a machine for your job","Machine has stopped working":"Machine has stopped working"}}},"expect":["Hire a machine for your job"]} +{"id":"stuck-compactor@/","persona":"stuck-compactor","need":"breakdown","page":"/","state":{"body":"The plate compactor I picked up this morning won't start. I've got a crew standing around."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"What brings you to Fjellstad Hire today?\". Which alternative do they choose?","criteria":{"Frequent hire? Set up an account":"Frequent hire? Set up an account","Need a machine for a while?":"Need a machine for a while?"}}},"expect":["Need a machine for a while?"]} +{"id":"stuck-compactor@/hiring","persona":"stuck-compactor","need":"breakdown","page":"/hiring","state":{"body":"The plate compactor I picked up this morning won't start. I've got a crew standing around."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"What do you need from us today?\". Which alternative do they choose?","criteria":{"Hire a machine for your job":"Hire a machine for your job","Machine has stopped working":"Machine has stopped working"}}},"expect":["Machine has stopped working"]} +{"id":"lift-error@/","persona":"lift-error","need":"breakdown","page":"/","state":{"body":"The lift you delivered keeps showing an error and stops halfway up. It's on our site at the school."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"What brings you to Fjellstad Hire today?\". Which alternative do they choose?","criteria":{"Frequent hire? Set up an account":"Frequent hire? Set up an account","Need a machine for a while?":"Need a machine for a while?"}}},"expect":["Need a machine for a while?"]} +{"id":"lift-error@/hiring","persona":"lift-error","need":"breakdown","page":"/hiring","state":{"body":"The lift you delivered keeps showing an error and stops halfway up. It's on our site at the school."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"What do you need from us today?\". Which alternative do they choose?","criteria":{"Hire a machine for your job":"Hire a machine for your job","Machine has stopped working":"Machine has stopped working"}}},"expect":["Machine has stopped working"]} +{"id":"landscaper-account@/","persona":"landscaper-account","need":"account-request","page":"/","state":{"body":"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?"},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"What brings you to Fjellstad Hire today?\". Which alternative do they choose?","criteria":{"Frequent hire? Set up an account":"Frequent hire? Set up an account","Need a machine for a while?":"Need a machine for a while?"}}},"expect":["Frequent hire? Set up an account"]} +{"id":"builder-account@/","persona":"builder-account","need":"account-request","page":"/","state":{"body":"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."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"What brings you to Fjellstad Hire today?\". Which alternative do they choose?","criteria":{"Frequent hire? Set up an account":"Frequent hire? Set up an account","Need a machine for a while?":"Need a machine for a while?"}}},"expect":["Frequent hire? Set up an account"]} diff --git a/runs/physio-2026-09-22/README.md b/runs/physio-2026-09-22/README.md new file mode 100644 index 0000000..57bbb97 --- /dev/null +++ b/runs/physio-2026-09-22/README.md @@ -0,0 +1,27 @@ +# A physiotherapy clinic behind two doors + +`plans/physio.yaml`: five needs, two doors (patients, referrers), two +internal needs (the receptionist's insurance request, the therapist's +no-show). 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. Eight held-out personas, ten tasks +(the six public personas are asked twice, door then form). + +| Visitor could read | Routed right | +|---|---| +| Headings and descriptions | 8 of 10 | +| Headings only | 9 of 10 | + +- The daughter bringing her mother after a hip replacement ("the + hospital said she needs training") chose "Move or cancel your + appointment" on the patients' page, both times. She has no + appointment; the heading "Book your first appointment" is written + for the patient, and she is not the patient. A heading in the + second person fails everyone who writes on someone else's behalf. +- With descriptions, the man sent abroad ("just free the slot") chose + the referrers' door. The description under "I have pain or an + injury" talks about pain and injury; he has neither, he has an + appointment. The patients' door has to name the second need too. + +`rate.txt` is the page-by-page rate from the re-run later the same +day; see `rate.json`. diff --git a/runs/physio-2026-09-22/aggregates.yaml b/runs/physio-2026-09-22/aggregates.yaml new file mode 100644 index 0000000..f6c9dcb --- /dev/null +++ b/runs/physio-2026-09-22/aggregates.yaml @@ -0,0 +1,91 @@ +aggregates: +- bucket: approvals + initial: open + states: + approved: + event: approved + open: + event: received + refused: + event: refused + sent: + event: sent + transitions: + open: + - sent + - refused + sent: + - approved + - refused +- bucket: cancellations + initial: open + states: + open: + event: received + rebooked: + event: rebooked + released: + event: released + transitions: + open: + - rebooked + - released +- bucket: no_shows + initial: open + states: + closed: + event: closed + contacted: + event: contacted + open: + event: received + rebooked: + event: rebooked + transitions: + contacted: + - rebooked + - closed + open: + - contacted + - closed +- bucket: referrals + initial: open + states: + accepted: + event: accepted + booked: + event: booked + open: + event: received + reported: + event: reported + returned: + event: returned + transitions: + accepted: + - booked + - returned + booked: + - reported + - returned + open: + - accepted + - returned +- bucket: requests + initial: open + states: + booked: + event: booked + declined: + event: declined + offered: + event: offered + open: + event: received + transitions: + offered: + - booked + - declined + open: + - offered + - declined diff --git a/runs/physio-2026-09-22/answers-full.jsonl b/runs/physio-2026-09-22/answers-full.jsonl new file mode 100644 index 0000000..cdff79d --- /dev/null +++ b/runs/physio-2026-09-22/answers-full.jsonl @@ -0,0 +1,10 @@ +{"choice":"I have pain or an injury","confidence":0.95,"id":"runner-knee@/"} +{"choice":"Book your first appointment","confidence":0.95,"id":"runner-knee@/patients"} +{"choice":"I have pain or an injury","confidence":0.95,"id":"post-surgery-mother@/"} +{"choice":"Move or cancel your appointment","confidence":0.85,"id":"post-surgery-mother@/patients"} +{"choice":"I have pain or an injury","confidence":0.75,"id":"sick-child@/"} +{"choice":"Move or cancel your appointment","confidence":0.95,"id":"sick-child@/patients"} +{"choice":"I am a GP or hospital","confidence":0.95,"id":"sent-abroad@/"} +{"choice":"Move or cancel your appointment","confidence":0.95,"id":"sent-abroad@/patients"} +{"choice":"I am a GP or hospital","confidence":0.95,"id":"gp-shoulder@/"} +{"choice":"I am a GP or hospital","confidence":0.95,"id":"hospital-discharge@/"} diff --git a/runs/physio-2026-09-22/answers-skim.jsonl b/runs/physio-2026-09-22/answers-skim.jsonl new file mode 100644 index 0000000..f466cf8 --- /dev/null +++ b/runs/physio-2026-09-22/answers-skim.jsonl @@ -0,0 +1,10 @@ +{"choice":"I have pain or an injury","confidence":0.95,"id":"runner-knee@/"} +{"choice":"Book your first appointment","confidence":0.95,"id":"runner-knee@/patients"} +{"choice":"I have pain or an injury","confidence":0.95,"id":"post-surgery-mother@/"} +{"choice":"Move or cancel your appointment","confidence":0.95,"id":"post-surgery-mother@/patients"} +{"choice":"I have pain or an injury","confidence":0.95,"id":"sick-child@/"} +{"choice":"Move or cancel your appointment","confidence":0.95,"id":"sick-child@/patients"} +{"choice":"I have pain or an injury","confidence":0.95,"id":"sent-abroad@/"} +{"choice":"Move or cancel your appointment","confidence":0.95,"id":"sent-abroad@/patients"} +{"choice":"I am a GP or hospital","confidence":0.95,"id":"gp-shoulder@/"} +{"choice":"I am a GP or hospital","confidence":0.95,"id":"hospital-discharge@/"} diff --git a/runs/physio-2026-09-22/build.log b/runs/physio-2026-09-22/build.log new file mode 100644 index 0000000..f346fef --- /dev/null +++ b/runs/physio-2026-09-22/build.log @@ -0,0 +1,20 @@ +words: questions/index.yaml +words: questions/patients/index.yaml +words: questions/received/move-or-cancel.yaml +words: questions/received/new-patient.yaml +words: questions/received/referral.yaml +words: questions/reception/index.yaml +words: questions/reception/insurance-approval-sent.yaml +words: questions/reception/insurance-approval.yaml +words: questions/referrers/index.yaml +words: questions/therapists/index.yaml +words: questions/therapists/no-show-sent.yaml +words: questions/therapists/no-show.yaml +content repo written to runs/physio-2026-09-22 +OK: 12 question(s), 6 aggregate(s) valid +need "new-patient": / [I have pain or an injury] -> /patients [Book your first appointment] -> "requests" +need "move-or-cancel": / [I have pain or an injury] -> /patients [Move or cancel your appointment] -> "cancellations" +need "referral": / [I am a GP or hospital] -> /referrers [Send a patient for physiotherapy] -> "referrals" +need "insurance-approval": /reception/insurance-approval [Request insurance approval] -> "approvals" +need "no-show": /therapists/no-show [Report a no-show patient] -> "no_shows" +OK: 5 need(s) structurally met, 0 planned, 8 persona(s) diff --git a/runs/physio-2026-09-22/llm/01-questions_index.yaml.md b/runs/physio-2026-09-22/llm/01-questions_index.yaml.md new file mode 100644 index 0000000..f51d79b --- /dev/null +++ b/runs/physio-2026-09-22/llm/01-questions_index.yaml.md @@ -0,0 +1,66 @@ +You write the words for one page of a website for this business. + +Business: Bakken Fysioterapi +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. +Contact: Marit Bakken +Language to write in: en + +Everyone the site serves: +- door patients: for someone with pain or an injury, or a patient who already has a time here; behind it: new-patient, move-or-cancel +- door referrers: for a doctor, a hospital ward or an insurer sending someone to us; behind it: referral +- new-patient: someone with something that hurts - wants: a first appointment with a therapist who suits them. Handled by reception. Stages: open -> offered -> booked -> declined. +- move-or-cancel: a patient who already has a time and cannot come - wants: the time moved, or the slot freed. Handled by reception. Stages: open -> rebooked -> released. +- referral: a GP or a hospital ward sending a patient - wants: the patient seen, and a report back when the course ends. Handled by reception. Stages: open -> accepted -> booked -> reported -> returned. +- insurance-approval: 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. Handled by reception. Stages: open -> sent -> approved -> refused. +- no-show: a therapist whose patient did not turn up and did not call - wants: the reception to ring them and get them back in. Handled by reception. Stages: open -> contacted -> rebooked -> 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": "", + "doors": { + "patients": { + "button": "", + "description": "", + "heading": "" + }, + "referrers": { + "button": "", + "description": "", + "heading": "" + } + }, + "needs": {}, + "question": "" +} + +Reply with the JSON object only. + +=== REPLY === +{ + "description": "Tell us who you are so we can help you the right way.", + "doors": { + "patients": { + "button": "Start here", + "description": "You have pain, an injury, or a new appointment you need to manage.", + "heading": "I have pain or an injury" + }, + "referrers": { + "button": "Send a patient", + "description": "You are sending someone to us for treatment or a report.", + "heading": "I am a GP or hospital" + } + }, + "needs": {}, + "question": "Who are you?" +} diff --git a/runs/physio-2026-09-22/llm/02-questions_patients_index.yaml.md b/runs/physio-2026-09-22/llm/02-questions_patients_index.yaml.md new file mode 100644 index 0000000..fcc83d0 --- /dev/null +++ b/runs/physio-2026-09-22/llm/02-questions_patients_index.yaml.md @@ -0,0 +1,94 @@ +You write the words for one page of a website for this business. + +Business: Bakken Fysioterapi +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. +Contact: Marit Bakken +Language to write in: en + +Everyone the site serves: +- door patients: for someone with pain or an injury, or a patient who already has a time here; behind it: new-patient, move-or-cancel +- door referrers: for a doctor, a hospital ward or an insurer sending someone to us; behind it: referral +- new-patient: someone with something that hurts - wants: a first appointment with a therapist who suits them. Handled by reception. Stages: open -> offered -> booked -> declined. +- move-or-cancel: a patient who already has a time and cannot come - wants: the time moved, or the slot freed. Handled by reception. Stages: open -> rebooked -> released. +- referral: a GP or a hospital ward sending a patient - wants: the patient seen, and a report back when the course ends. Handled by reception. Stages: open -> accepted -> booked -> reported -> returned. +- insurance-approval: 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. Handled by reception. Stages: open -> sent -> approved -> refused. +- no-show: a therapist whose patient did not turn up and did not call - wants: the reception to ring them and get them back in. Handled by reception. Stages: open -> contacted -> rebooked -> closed. + +The page: questions/patients/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": "", + "needs": { + "move-or-cancel": { + "button": "", + "description": "", + "form_title": "", + "heading": "", + "labels": { + "appointment_day": "", + "name": "", + "new_time_wish": "", + "phone": "" + } + }, + "new-patient": { + "button": "", + "description": "", + "form_title": "", + "heading": "", + "labels": { + "name": "", + "phone": "", + "sent_by_doctor": "", + "what_hurts": "", + "when": "" + } + } + }, + "question": "" +} + +Reply with the JSON object only. + +=== REPLY === +{ + "description": "Choose what brings you here today.", + "needs": { + "move-or-cancel": { + "button": "Change booking", + "description": "Let us know if you can't make it or need a new time.", + "form_title": "Move or cancel", + "heading": "Move or cancel your appointment", + "labels": { + "appointment_day": "Appointment day", + "name": "Your name", + "new_time_wish": "New time preference", + "phone": "Phone number" + } + }, + "new-patient": { + "button": "Book first visit", + "description": "We'll match you with a therapist who suits your needs.", + "form_title": "Book first visit", + "heading": "Book your first appointment", + "labels": { + "name": "Your name", + "phone": "Phone number", + "sent_by_doctor": "Sent by a doctor?", + "what_hurts": "What hurts", + "when": "When did it start?" + } + } + }, + "question": "What brings you here today?" +} diff --git a/runs/physio-2026-09-22/llm/03-questions_received_move-or-cancel.yaml.md b/runs/physio-2026-09-22/llm/03-questions_received_move-or-cancel.yaml.md new file mode 100644 index 0000000..f70c658 --- /dev/null +++ b/runs/physio-2026-09-22/llm/03-questions_received_move-or-cancel.yaml.md @@ -0,0 +1,46 @@ +You write the words for one page of a website for this business. + +Business: Bakken Fysioterapi +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. +Contact: Marit Bakken +Language to write in: en + +Everyone the site serves: +- door patients: for someone with pain or an injury, or a patient who already has a time here; behind it: new-patient, move-or-cancel +- door referrers: for a doctor, a hospital ward or an insurer sending someone to us; behind it: referral +- new-patient: someone with something that hurts - wants: a first appointment with a therapist who suits them. Handled by reception. Stages: open -> offered -> booked -> declined. +- move-or-cancel: a patient who already has a time and cannot come - wants: the time moved, or the slot freed. Handled by reception. Stages: open -> rebooked -> released. +- referral: a GP or a hospital ward sending a patient - wants: the patient seen, and a report back when the course ends. Handled by reception. Stages: open -> accepted -> booked -> reported -> returned. +- insurance-approval: 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. Handled by reception. Stages: open -> sent -> approved -> refused. +- no-show: a therapist whose patient did not turn up and did not call - wants: the reception to ring them and get them back in. Handled by reception. Stages: open -> contacted -> rebooked -> closed. + +The page: questions/received/move-or-cancel.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": "", + "description": "", + "next_description": "", + "next_heading": "", + "question": "" +} + +Reply with the JSON object only. + +=== REPLY === +{ + "back": "Retur", + "description": "Når du har sendt inn skjemaet, tar imot oss meldingen og sender en bekreftelse.", + "next_description": "Vi setter oss inn på sakene dine og finner en ny tid som passer.", + "next_heading": "Vi tar vare på tiden din", + "question": "Hva skjer nå?" +} diff --git a/runs/physio-2026-09-22/llm/04-questions_received_new-patient.yaml.md b/runs/physio-2026-09-22/llm/04-questions_received_new-patient.yaml.md new file mode 100644 index 0000000..4fdd851 --- /dev/null +++ b/runs/physio-2026-09-22/llm/04-questions_received_new-patient.yaml.md @@ -0,0 +1,46 @@ +You write the words for one page of a website for this business. + +Business: Bakken Fysioterapi +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. +Contact: Marit Bakken +Language to write in: en + +Everyone the site serves: +- door patients: for someone with pain or an injury, or a patient who already has a time here; behind it: new-patient, move-or-cancel +- door referrers: for a doctor, a hospital ward or an insurer sending someone to us; behind it: referral +- new-patient: someone with something that hurts - wants: a first appointment with a therapist who suits them. Handled by reception. Stages: open -> offered -> booked -> declined. +- move-or-cancel: a patient who already has a time and cannot come - wants: the time moved, or the slot freed. Handled by reception. Stages: open -> rebooked -> released. +- referral: a GP or a hospital ward sending a patient - wants: the patient seen, and a report back when the course ends. Handled by reception. Stages: open -> accepted -> booked -> reported -> returned. +- insurance-approval: 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. Handled by reception. Stages: open -> sent -> approved -> refused. +- no-show: a therapist whose patient did not turn up and did not call - wants: the reception to ring them and get them back in. Handled by reception. Stages: open -> contacted -> rebooked -> closed. + +The page: questions/received/new-patient.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": "", + "description": "", + "next_description": "", + "next_heading": "", + "question": "" +} + +Reply with the JSON object only. + +=== REPLY === +{ + "back": "Back to form", + "description": "Your message has been received. A physiotherapist will review your request and get back to you.", + "next_description": "We will contact you to find a suitable time for your first session.", + "next_heading": "What happens next", + "question": "What happens after I submit?" +} diff --git a/runs/physio-2026-09-22/llm/05-questions_received_referral.yaml.md b/runs/physio-2026-09-22/llm/05-questions_received_referral.yaml.md new file mode 100644 index 0000000..1af28d8 --- /dev/null +++ b/runs/physio-2026-09-22/llm/05-questions_received_referral.yaml.md @@ -0,0 +1,46 @@ +You write the words for one page of a website for this business. + +Business: Bakken Fysioterapi +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. +Contact: Marit Bakken +Language to write in: en + +Everyone the site serves: +- door patients: for someone with pain or an injury, or a patient who already has a time here; behind it: new-patient, move-or-cancel +- door referrers: for a doctor, a hospital ward or an insurer sending someone to us; behind it: referral +- new-patient: someone with something that hurts - wants: a first appointment with a therapist who suits them. Handled by reception. Stages: open -> offered -> booked -> declined. +- move-or-cancel: a patient who already has a time and cannot come - wants: the time moved, or the slot freed. Handled by reception. Stages: open -> rebooked -> released. +- referral: a GP or a hospital ward sending a patient - wants: the patient seen, and a report back when the course ends. Handled by reception. Stages: open -> accepted -> booked -> reported -> returned. +- insurance-approval: 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. Handled by reception. Stages: open -> sent -> approved -> refused. +- no-show: a therapist whose patient did not turn up and did not call - wants: the reception to ring them and get them back in. Handled by reception. Stages: open -> contacted -> rebooked -> closed. + +The page: questions/received/referral.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": "", + "description": "", + "next_description": "", + "next_heading": "", + "question": "" +} + +Reply with the JSON object only. + +=== REPLY === +{ + "back": "Back to form", + "description": "Your referral has been received. We will process it and contact you soon.", + "next_description": "We will contact the patient, book an appointment, and send a report when the course is complete.", + "next_heading": "What happens next", + "question": "What happens after I send a referral?" +} diff --git a/runs/physio-2026-09-22/llm/06-questions_reception_index.yaml.md b/runs/physio-2026-09-22/llm/06-questions_reception_index.yaml.md new file mode 100644 index 0000000..4688ec6 --- /dev/null +++ b/runs/physio-2026-09-22/llm/06-questions_reception_index.yaml.md @@ -0,0 +1,158 @@ +You write the words for one page of a website for this business. + +Business: Bakken Fysioterapi +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. +Contact: Marit Bakken +Language to write in: en + +Everyone the site serves: +- door patients: for someone with pain or an injury, or a patient who already has a time here; behind it: new-patient, move-or-cancel +- door referrers: for a doctor, a hospital ward or an insurer sending someone to us; behind it: referral +- new-patient: someone with something that hurts - wants: a first appointment with a therapist who suits them. Handled by reception. Stages: open -> offered -> booked -> declined. +- move-or-cancel: a patient who already has a time and cannot come - wants: the time moved, or the slot freed. Handled by reception. Stages: open -> rebooked -> released. +- referral: a GP or a hospital ward sending a patient - wants: the patient seen, and a report back when the course ends. Handled by reception. Stages: open -> accepted -> booked -> reported -> returned. +- insurance-approval: 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. Handled by reception. Stages: open -> sent -> approved -> refused. +- no-show: a therapist whose patient did not turn up and did not call - wants: the reception to ring them and get them back in. Handled by reception. Stages: open -> contacted -> rebooked -> closed. + +The page: questions/reception/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": { + "approvals": { + "description": "", + "heading": "", + "moves": { + "open->refused": "refused>", + "open->sent": "sent>", + "sent->approved": "approved>", + "sent->refused": "refused>" + } + }, + "cancellations": { + "description": "", + "heading": "", + "moves": { + "open->rebooked": "rebooked>", + "open->released": "released>" + } + }, + "no_shows": { + "description": "", + "heading": "", + "moves": { + "contacted->closed": "closed>", + "contacted->rebooked": "rebooked>", + "open->closed": "closed>", + "open->contacted": "contacted>" + } + }, + "referrals": { + "description": "", + "heading": "", + "moves": { + "accepted->booked": "booked>", + "accepted->returned": "returned>", + "booked->returned": "returned>", + "open->accepted": "accepted>", + "open->returned": "returned>" + } + }, + "requests": { + "description": "", + "heading": "", + "moves": { + "offered->booked": "booked>", + "offered->declined": "declined>", + "open->declined": "declined>", + "open->offered": "offered>" + } + } + }, + "confirm": "", + "description": "", + "links": { + "insurance-approval": { + "button": "", + "description": "", + "heading": "" + } + }, + "question": "" +} + +Reply with the JSON object only. + +=== REPLY === +{ + "buckets": { + "approvals": { + "description": "Handle insurance approval requests and track their status for each patient case.", + "heading": "Insurance approvals", + "moves": { + "open->refused": "Mark refused", + "open->sent": "Send request", + "sent->approved": "Mark approved", + "sent->refused": "Mark refused" + } + }, + "cancellations": { + "description": "Free up slots or reschedule appointments for patients who can't attend.", + "heading": "Appointment changes", + "moves": { + "open->rebooked": "Move to rebooked", + "open->released": "Release slot" + } + }, + "no_shows": { + "description": "Track patients who missed their appointment and follow up to get them back.", + "heading": "Missed appointments", + "moves": { + "contacted->closed": "Close case", + "contacted->rebooked": "Rebook patient", + "open->closed": "Close case", + "open->contacted": "Contact patient" + } + }, + "referrals": { + "description": "Process incoming referrals from GPs and hospitals, track patient progress, and send reports.", + "heading": "Referral management", + "moves": { + "accepted->booked": "Accept & book", + "accepted->returned": "Return to referrer", + "booked->returned": "Mark returned", + "open->accepted": "Accept referral", + "open->returned": "Return referral" + } + }, + "requests": { + "description": "Manage new patient bookings and handle cancellations for existing appointments.", + "heading": "Patient bookings", + "moves": { + "offered->booked": "Offer & book", + "offered->declined": "Offer declined", + "open->declined": "Decline offer", + "open->offered": "Offer appointment" + } + } + }, + "confirm": "Confirm", + "description": "Your workspace for managing patient cases and administrative tasks.", + "links": { + "insurance-approval": { + "button": "View requests", + "description": "See all insurance approval requests and their current status.", + "heading": "Insurance approvals" + } + }, + "question": "What would you like to do today?" +} diff --git a/runs/physio-2026-09-22/llm/07-questions_reception_insurance-approval-sent.yaml.md b/runs/physio-2026-09-22/llm/07-questions_reception_insurance-approval-sent.yaml.md new file mode 100644 index 0000000..451abb9 --- /dev/null +++ b/runs/physio-2026-09-22/llm/07-questions_reception_insurance-approval-sent.yaml.md @@ -0,0 +1,46 @@ +You write the words for one page of a website for this business. + +Business: Bakken Fysioterapi +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. +Contact: Marit Bakken +Language to write in: en + +Everyone the site serves: +- door patients: for someone with pain or an injury, or a patient who already has a time here; behind it: new-patient, move-or-cancel +- door referrers: for a doctor, a hospital ward or an insurer sending someone to us; behind it: referral +- new-patient: someone with something that hurts - wants: a first appointment with a therapist who suits them. Handled by reception. Stages: open -> offered -> booked -> declined. +- move-or-cancel: a patient who already has a time and cannot come - wants: the time moved, or the slot freed. Handled by reception. Stages: open -> rebooked -> released. +- referral: a GP or a hospital ward sending a patient - wants: the patient seen, and a report back when the course ends. Handled by reception. Stages: open -> accepted -> booked -> reported -> returned. +- insurance-approval: 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. Handled by reception. Stages: open -> sent -> approved -> refused. +- no-show: a therapist whose patient did not turn up and did not call - wants: the reception to ring them and get them back in. Handled by reception. Stages: open -> contacted -> rebooked -> closed. + +The page: questions/reception/insurance-approval-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": "", + "description": "", + "next_description": "", + "next_heading": "", + "question": "" +} + +Reply with the JSON object only. + +=== REPLY === +{ + "back": "Back to form", + "description": "We have sent your request to the insurer. They will review it and get back to us.", + "next_description": "We will keep you updated on the status of your case.", + "next_heading": "Request sent", + "question": "What happens next?" +} diff --git a/runs/physio-2026-09-22/llm/08-questions_reception_insurance-approval.yaml.md b/runs/physio-2026-09-22/llm/08-questions_reception_insurance-approval.yaml.md new file mode 100644 index 0000000..c63efd1 --- /dev/null +++ b/runs/physio-2026-09-22/llm/08-questions_reception_insurance-approval.yaml.md @@ -0,0 +1,60 @@ +You write the words for one page of a website for this business. + +Business: Bakken Fysioterapi +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. +Contact: Marit Bakken +Language to write in: en + +Everyone the site serves: +- door patients: for someone with pain or an injury, or a patient who already has a time here; behind it: new-patient, move-or-cancel +- door referrers: for a doctor, a hospital ward or an insurer sending someone to us; behind it: referral +- new-patient: someone with something that hurts - wants: a first appointment with a therapist who suits them. Handled by reception. Stages: open -> offered -> booked -> declined. +- move-or-cancel: a patient who already has a time and cannot come - wants: the time moved, or the slot freed. Handled by reception. Stages: open -> rebooked -> released. +- referral: a GP or a hospital ward sending a patient - wants: the patient seen, and a report back when the course ends. Handled by reception. Stages: open -> accepted -> booked -> reported -> returned. +- insurance-approval: 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. Handled by reception. Stages: open -> sent -> approved -> refused. +- no-show: a therapist whose patient did not turn up and did not call - wants: the reception to ring them and get them back in. Handled by reception. Stages: open -> contacted -> rebooked -> closed. + +The page: questions/reception/insurance-approval.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": "", + "description": "", + "form_title": "", + "heading": "", + "labels": { + "case_number": "", + "insurer": "", + "patient_name": "", + "sessions": "" + }, + "page_description": "", + "question": "" +} + +Reply with the JSON object only. + +=== REPLY === +{ + "button": "Submit request", + "description": "Send the insurance approval request and keep the answer attached to the patient's case file.", + "form_title": "Insurance approval", + "heading": "Request insurance approval", + "labels": { + "case_number": "Case number", + "insurer": "Insurer", + "patient_name": "Patient name", + "sessions": "Number of sessions" + }, + "page_description": "Handle insurance approval requests for patient treatment courses.", + "question": "Do you need insurance approval for this patient's treatment?" +} diff --git a/runs/physio-2026-09-22/llm/09-questions_referrers_index.yaml.md b/runs/physio-2026-09-22/llm/09-questions_referrers_index.yaml.md new file mode 100644 index 0000000..969f1e7 --- /dev/null +++ b/runs/physio-2026-09-22/llm/09-questions_referrers_index.yaml.md @@ -0,0 +1,70 @@ +You write the words for one page of a website for this business. + +Business: Bakken Fysioterapi +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. +Contact: Marit Bakken +Language to write in: en + +Everyone the site serves: +- door patients: for someone with pain or an injury, or a patient who already has a time here; behind it: new-patient, move-or-cancel +- door referrers: for a doctor, a hospital ward or an insurer sending someone to us; behind it: referral +- new-patient: someone with something that hurts - wants: a first appointment with a therapist who suits them. Handled by reception. Stages: open -> offered -> booked -> declined. +- move-or-cancel: a patient who already has a time and cannot come - wants: the time moved, or the slot freed. Handled by reception. Stages: open -> rebooked -> released. +- referral: a GP or a hospital ward sending a patient - wants: the patient seen, and a report back when the course ends. Handled by reception. Stages: open -> accepted -> booked -> reported -> returned. +- insurance-approval: 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. Handled by reception. Stages: open -> sent -> approved -> refused. +- no-show: a therapist whose patient did not turn up and did not call - wants: the reception to ring them and get them back in. Handled by reception. Stages: open -> contacted -> rebooked -> closed. + +The page: questions/referrers/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": "", + "needs": { + "referral": { + "button": "", + "description": "", + "form_title": "", + "heading": "", + "labels": { + "patient_name": "", + "patient_phone": "", + "referrer": "", + "urgency": "", + "what_for": "" + } + } + }, + "question": "" +} + +Reply with the JSON object only. + +=== REPLY === +{ + "description": "We help patients with pain, injuries, or after operations. You can send a patient here or ask about a referral.", + "needs": { + "referral": { + "button": "Send referral", + "description": "Tell us about the patient and we will contact them to start treatment.", + "form_title": "Referral form", + "heading": "Send a patient for physiotherapy", + "labels": { + "patient_name": "Patient's full name", + "patient_phone": "Patient's phone number", + "referrer": "Your name and clinic", + "urgency": "How urgent is the need?", + "what_for": "Reason for referral" + } + } + }, + "question": "Are you sending a patient to us, or do you have a question about a referral?" +} diff --git a/runs/physio-2026-09-22/llm/10-questions_therapists_index.yaml.md b/runs/physio-2026-09-22/llm/10-questions_therapists_index.yaml.md new file mode 100644 index 0000000..577a6f0 --- /dev/null +++ b/runs/physio-2026-09-22/llm/10-questions_therapists_index.yaml.md @@ -0,0 +1,74 @@ +You write the words for one page of a website for this business. + +Business: Bakken Fysioterapi +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. +Contact: Marit Bakken +Language to write in: en + +Everyone the site serves: +- door patients: for someone with pain or an injury, or a patient who already has a time here; behind it: new-patient, move-or-cancel +- door referrers: for a doctor, a hospital ward or an insurer sending someone to us; behind it: referral +- new-patient: someone with something that hurts - wants: a first appointment with a therapist who suits them. Handled by reception. Stages: open -> offered -> booked -> declined. +- move-or-cancel: a patient who already has a time and cannot come - wants: the time moved, or the slot freed. Handled by reception. Stages: open -> rebooked -> released. +- referral: a GP or a hospital ward sending a patient - wants: the patient seen, and a report back when the course ends. Handled by reception. Stages: open -> accepted -> booked -> reported -> returned. +- insurance-approval: 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. Handled by reception. Stages: open -> sent -> approved -> refused. +- no-show: a therapist whose patient did not turn up and did not call - wants: the reception to ring them and get them back in. Handled by reception. Stages: open -> contacted -> rebooked -> closed. + +The page: questions/therapists/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": { + "referrals": { + "description": "", + "heading": "", + "moves": { + "booked->reported": "reported>" + } + } + }, + "confirm": "", + "description": "", + "links": { + "no-show": { + "button": "", + "description": "", + "heading": "" + } + }, + "question": "" +} + +Reply with the JSON object only. + +=== REPLY === +{ + "buckets": { + "referrals": { + "description": "A GP or hospital ward sends a patient here for treatment and reports back when the course ends.", + "heading": "Handle incoming referrals", + "moves": { + "booked->reported": "Mark as reported" + } + } + }, + "confirm": "Confirm move", + "description": "Manage the cases that come through this desk.", + "links": { + "no-show": { + "button": "Contact patient", + "description": "Get in touch with the patient who missed their appointment and reschedule them.", + "heading": "Handle no-show patients" + } + }, + "question": "What case do you want to work on?" +} diff --git a/runs/physio-2026-09-22/llm/11-questions_therapists_no-show-sent.yaml.md b/runs/physio-2026-09-22/llm/11-questions_therapists_no-show-sent.yaml.md new file mode 100644 index 0000000..da7294f --- /dev/null +++ b/runs/physio-2026-09-22/llm/11-questions_therapists_no-show-sent.yaml.md @@ -0,0 +1,46 @@ +You write the words for one page of a website for this business. + +Business: Bakken Fysioterapi +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. +Contact: Marit Bakken +Language to write in: en + +Everyone the site serves: +- door patients: for someone with pain or an injury, or a patient who already has a time here; behind it: new-patient, move-or-cancel +- door referrers: for a doctor, a hospital ward or an insurer sending someone to us; behind it: referral +- new-patient: someone with something that hurts - wants: a first appointment with a therapist who suits them. Handled by reception. Stages: open -> offered -> booked -> declined. +- move-or-cancel: a patient who already has a time and cannot come - wants: the time moved, or the slot freed. Handled by reception. Stages: open -> rebooked -> released. +- referral: a GP or a hospital ward sending a patient - wants: the patient seen, and a report back when the course ends. Handled by reception. Stages: open -> accepted -> booked -> reported -> returned. +- insurance-approval: 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. Handled by reception. Stages: open -> sent -> approved -> refused. +- no-show: a therapist whose patient did not turn up and did not call - wants: the reception to ring them and get them back in. Handled by reception. Stages: open -> contacted -> rebooked -> closed. + +The page: questions/therapists/no-show-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": "", + "description": "", + "next_description": "", + "next_heading": "", + "question": "" +} + +Reply with the JSON object only. + +=== REPLY === +{ + "back": "Tilbake", + "description": "Du har sendt inn skjemaet om en pasient som ikke viste opp. Her finner du neste steg.", + "next_description": "Receptionen ringer pasienten for å finne en ny tid. Du får beskjed når prosessen er ferdig.", + "next_heading": "Hva skjer nå?", + "question": "Hvem tar seg av dette?" +} diff --git a/runs/physio-2026-09-22/llm/12-questions_therapists_no-show.yaml.md b/runs/physio-2026-09-22/llm/12-questions_therapists_no-show.yaml.md new file mode 100644 index 0000000..2122682 --- /dev/null +++ b/runs/physio-2026-09-22/llm/12-questions_therapists_no-show.yaml.md @@ -0,0 +1,58 @@ +You write the words for one page of a website for this business. + +Business: Bakken Fysioterapi +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. +Contact: Marit Bakken +Language to write in: en + +Everyone the site serves: +- door patients: for someone with pain or an injury, or a patient who already has a time here; behind it: new-patient, move-or-cancel +- door referrers: for a doctor, a hospital ward or an insurer sending someone to us; behind it: referral +- new-patient: someone with something that hurts - wants: a first appointment with a therapist who suits them. Handled by reception. Stages: open -> offered -> booked -> declined. +- move-or-cancel: a patient who already has a time and cannot come - wants: the time moved, or the slot freed. Handled by reception. Stages: open -> rebooked -> released. +- referral: a GP or a hospital ward sending a patient - wants: the patient seen, and a report back when the course ends. Handled by reception. Stages: open -> accepted -> booked -> reported -> returned. +- insurance-approval: 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. Handled by reception. Stages: open -> sent -> approved -> refused. +- no-show: a therapist whose patient did not turn up and did not call - wants: the reception to ring them and get them back in. Handled by reception. Stages: open -> contacted -> rebooked -> closed. + +The page: questions/therapists/no-show.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": "", + "description": "", + "form_title": "", + "heading": "", + "labels": { + "appointment_day": "", + "note": "", + "patient_name": "" + }, + "page_description": "", + "question": "" +} + +Reply with the JSON object only. + +=== REPLY === +{ + "button": "Send request", + "description": "Report a patient who didn't show up so we can follow up and fill the slot.", + "form_title": "No-show report", + "heading": "Report a no-show patient", + "labels": { + "appointment_day": "Appointment date", + "note": "Additional note", + "patient_name": "Patient name" + }, + "page_description": "Use this form to report a patient who missed their appointment without calling.", + "question": "Did a patient miss their appointment without calling?" +} diff --git a/runs/physio-2026-09-22/model.json b/runs/physio-2026-09-22/model.json new file mode 100644 index 0000000..da7bc3c --- /dev/null +++ b/runs/physio-2026-09-22/model.json @@ -0,0 +1,652 @@ +{ + "buckets": { + "approvals": { + "desks": [ + { + "group": "reception", + "moves": [ + { + "from": "open", + "label": "Send request", + "to": "sent" + }, + { + "from": "open", + "label": "Mark refused", + "to": "refused" + }, + { + "from": "sent", + "label": "Mark approved", + "to": "approved" + }, + { + "from": "sent", + "label": "Mark refused", + "to": "refused" + } + ], + "page": "/reception" + } + ], + "initial": "open", + "self_moves": [], + "transitions": { + "open": [ + "sent", + "refused" + ], + "sent": [ + "approved", + "refused" + ] + } + }, + "cancellations": { + "desks": [ + { + "group": "reception", + "moves": [ + { + "from": "open", + "label": "Move to rebooked", + "to": "rebooked" + }, + { + "from": "open", + "label": "Release slot", + "to": "released" + } + ], + "page": "/reception" + } + ], + "initial": "open", + "self_moves": [], + "transitions": { + "open": [ + "rebooked", + "released" + ] + } + }, + "no_shows": { + "desks": [ + { + "group": "reception", + "moves": [ + { + "from": "contacted", + "label": "Rebook patient", + "to": "rebooked" + }, + { + "from": "contacted", + "label": "Close case", + "to": "closed" + }, + { + "from": "open", + "label": "Contact patient", + "to": "contacted" + }, + { + "from": "open", + "label": "Close case", + "to": "closed" + } + ], + "page": "/reception" + } + ], + "initial": "open", + "self_moves": [], + "transitions": { + "contacted": [ + "rebooked", + "closed" + ], + "open": [ + "contacted", + "closed" + ] + } + }, + "referrals": { + "desks": [ + { + "group": "reception", + "moves": [ + { + "from": "accepted", + "label": "Accept & book", + "to": "booked" + }, + { + "from": "accepted", + "label": "Return to referrer", + "to": "returned" + }, + { + "from": "booked", + "label": "Mark returned", + "to": "returned" + }, + { + "from": "open", + "label": "Accept referral", + "to": "accepted" + }, + { + "from": "open", + "label": "Return referral", + "to": "returned" + } + ], + "page": "/reception" + }, + { + "group": "therapists", + "moves": [ + { + "from": "booked", + "label": "Mark as reported", + "to": "reported" + } + ], + "page": "/therapists" + } + ], + "initial": "open", + "self_moves": [], + "transitions": { + "accepted": [ + "booked", + "returned" + ], + "booked": [ + "reported", + "returned" + ], + "open": [ + "accepted", + "returned" + ] + } + }, + "requests": { + "desks": [ + { + "group": "reception", + "moves": [ + { + "from": "offered", + "label": "Offer & book", + "to": "booked" + }, + { + "from": "offered", + "label": "Offer declined", + "to": "declined" + }, + { + "from": "open", + "label": "Offer appointment", + "to": "offered" + }, + { + "from": "open", + "label": "Decline offer", + "to": "declined" + } + ], + "page": "/reception" + } + ], + "initial": "open", + "self_moves": [], + "transitions": { + "offered": [ + "booked", + "declined" + ], + "open": [ + "offered", + "declined" + ] + } + } + }, + "needs": [ + { + "done_when": [ + "booked", + "declined" + ], + "enters_as": null, + "handled_by": "reception", + "id": "new-patient", + "lands_in": "requests", + "steps": [ + { + "alternative": "I have pain or an injury", + "expect": [ + "I have pain or an injury" + ], + "fields": [], + "options": [ + { + "description": "You have pain, an injury, or a new appointment you need to manage.", + "name": "I have pain or an injury" + }, + { + "description": "You are sending someone to us for treatment or a report.", + "name": "I am a GP or hospital" + } + ], + "page": "/", + "question": "Who are you?" + }, + { + "alternative": "Book your first appointment", + "expect": [ + "Book your first appointment" + ], + "fields": [ + { + "label": "Your name", + "name": "name", + "optional": false, + "options": [], + "type": "text" + }, + { + "label": "Phone number", + "name": "phone", + "optional": false, + "options": [], + "type": "tel" + }, + { + "label": "What hurts", + "name": "what_hurts", + "optional": false, + "options": [], + "type": "textarea" + }, + { + "label": "When did it start?", + "name": "when", + "optional": false, + "options": [ + "Mornings", + "Afternoons", + "Any time" + ], + "type": "select" + }, + { + "label": "Sent by a doctor?", + "name": "sent_by_doctor", + "optional": true, + "options": [ + "Yes", + "No" + ], + "type": "select" + } + ], + "options": [ + { + "description": "We'll match you with a therapist who suits your needs.", + "name": "Book your first appointment" + }, + { + "description": "Let us know if you can't make it or need a new time.", + "name": "Move or cancel your appointment" + } + ], + "page": "/patients", + "question": "What brings you here today?" + } + ], + "success": [ + "booked" + ], + "wants": "a first appointment with a therapist who suits them", + "who": "someone with something that hurts" + }, + { + "done_when": [ + "rebooked", + "released" + ], + "enters_as": null, + "handled_by": "reception", + "id": "move-or-cancel", + "lands_in": "cancellations", + "steps": [ + { + "alternative": "I have pain or an injury", + "expect": [ + "I have pain or an injury" + ], + "fields": [], + "options": [ + { + "description": "You have pain, an injury, or a new appointment you need to manage.", + "name": "I have pain or an injury" + }, + { + "description": "You are sending someone to us for treatment or a report.", + "name": "I am a GP or hospital" + } + ], + "page": "/", + "question": "Who are you?" + }, + { + "alternative": "Move or cancel your appointment", + "expect": [ + "Move or cancel your appointment" + ], + "fields": [ + { + "label": "Your name", + "name": "name", + "optional": false, + "options": [], + "type": "text" + }, + { + "label": "Phone number", + "name": "phone", + "optional": false, + "options": [], + "type": "tel" + }, + { + "label": "Appointment day", + "name": "appointment_day", + "optional": false, + "options": [], + "type": "date" + }, + { + "label": "New time preference", + "name": "new_time_wish", + "optional": true, + "options": [], + "type": "text" + } + ], + "options": [ + { + "description": "We'll match you with a therapist who suits your needs.", + "name": "Book your first appointment" + }, + { + "description": "Let us know if you can't make it or need a new time.", + "name": "Move or cancel your appointment" + } + ], + "page": "/patients", + "question": "What brings you here today?" + } + ], + "success": [ + "rebooked" + ], + "wants": "the time moved, or the slot freed", + "who": "a patient who already has a time and cannot come" + }, + { + "done_when": [ + "reported", + "returned" + ], + "enters_as": null, + "handled_by": "reception", + "id": "referral", + "lands_in": "referrals", + "steps": [ + { + "alternative": "I am a GP or hospital", + "expect": [ + "I am a GP or hospital" + ], + "fields": [], + "options": [ + { + "description": "You have pain, an injury, or a new appointment you need to manage.", + "name": "I have pain or an injury" + }, + { + "description": "You are sending someone to us for treatment or a report.", + "name": "I am a GP or hospital" + } + ], + "page": "/", + "question": "Who are you?" + }, + { + "alternative": "Send a patient for physiotherapy", + "expect": [ + "Send a patient for physiotherapy" + ], + "fields": [ + { + "label": "Patient's full name", + "name": "patient_name", + "optional": false, + "options": [], + "type": "text" + }, + { + "label": "Patient's phone number", + "name": "patient_phone", + "optional": false, + "options": [], + "type": "tel" + }, + { + "label": "Your name and clinic", + "name": "referrer", + "optional": false, + "options": [], + "type": "text" + }, + { + "label": "Reason for referral", + "name": "what_for", + "optional": false, + "options": [], + "type": "textarea" + }, + { + "label": "How urgent is the need?", + "name": "urgency", + "optional": false, + "options": [ + "This week", + "Within a month", + "Routine" + ], + "type": "select" + } + ], + "options": [ + { + "description": "Tell us about the patient and we will contact them to start treatment.", + "name": "Send a patient for physiotherapy" + } + ], + "page": "/referrers", + "question": "Are you sending a patient to us, or do you have a question about a referral?" + } + ], + "success": [ + "reported" + ], + "wants": "the patient seen, and a report back when the course ends", + "who": "a GP or a hospital ward sending a patient" + }, + { + "done_when": [ + "approved", + "refused" + ], + "enters_as": "reception", + "handled_by": "reception", + "id": "insurance-approval", + "lands_in": "approvals", + "steps": [ + { + "alternative": "Request insurance approval", + "expect": [ + "Request insurance approval" + ], + "fields": [ + { + "label": "Patient name", + "name": "patient_name", + "optional": false, + "options": [], + "type": "text" + }, + { + "label": "Insurer", + "name": "insurer", + "optional": false, + "options": [], + "type": "text" + }, + { + "label": "Number of sessions", + "name": "sessions", + "optional": false, + "options": [], + "type": "text" + }, + { + "label": "Case number", + "name": "case_number", + "optional": true, + "options": [], + "type": "text" + } + ], + "options": [ + { + "description": "Send the insurance approval request and keep the answer attached to the patient's case file.", + "name": "Request insurance approval" + } + ], + "page": "/reception/insurance-approval", + "question": "Do you need insurance approval for this patient's treatment?" + } + ], + "success": [ + "approved" + ], + "wants": "the request sent and its answer kept where the patient's case is", + "who": "the receptionist, before a course that an insurer has to approve" + }, + { + "done_when": [ + "rebooked", + "closed" + ], + "enters_as": "therapists", + "handled_by": "reception", + "id": "no-show", + "lands_in": "no_shows", + "steps": [ + { + "alternative": "Report a no-show patient", + "expect": [ + "Report a no-show patient" + ], + "fields": [ + { + "label": "Patient name", + "name": "patient_name", + "optional": false, + "options": [], + "type": "text" + }, + { + "label": "Appointment date", + "name": "appointment_day", + "optional": false, + "options": [], + "type": "date" + }, + { + "label": "Additional note", + "name": "note", + "optional": true, + "options": [], + "type": "text" + } + ], + "options": [ + { + "description": "Report a patient who didn't show up so we can follow up and fill the slot.", + "name": "Report a no-show patient" + } + ], + "page": "/therapists/no-show", + "question": "Did a patient miss their appointment without calling?" + } + ], + "success": [ + "rebooked" + ], + "wants": "the reception to ring them and get them back in", + "who": "a therapist whose patient did not turn up and did not call" + } + ], + "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." + } + ] +} \ No newline at end of file diff --git a/runs/physio-2026-09-22/needs.yaml b/runs/physio-2026-09-22/needs.yaml new file mode 100644 index 0000000..564b34b --- /dev/null +++ b/runs/physio-2026-09-22/needs.yaml @@ -0,0 +1,125 @@ +needs: +- done_when: + - booked + - declined + enters: / + handled_by: reception + id: new-patient + lands_in: requests + max_fields: 4 + max_steps: 2 + stages: + - open + - offered + - booked + - declined + success: + - booked + via: I have pain or an injury + wants: a first appointment with a therapist who suits them + who: someone with something that hurts +- done_when: + - rebooked + - released + enters: / + handled_by: reception + id: move-or-cancel + lands_in: cancellations + max_fields: 3 + max_steps: 2 + stages: + - open + - rebooked + - released + success: + - rebooked + via: I have pain or an injury + wants: the time moved, or the slot freed + who: a patient who already has a time and cannot come +- also_moved_by: + - therapists + done_when: + - reported + - returned + enters: / + handled_by: reception + id: referral + lands_in: referrals + max_fields: 5 + max_steps: 2 + stages: + - open + - accepted + - booked + - reported + - returned + success: + - reported + via: I am a GP or hospital + wants: the patient seen, and a report back when the course ends + who: a GP or a hospital ward sending a patient +- done_when: + - approved + - refused + enters: /reception/insurance-approval + enters_as: reception + handled_by: reception + id: insurance-approval + lands_in: approvals + max_fields: 3 + max_steps: 1 + stages: + - open + - sent + - approved + - refused + success: + - approved + via: Request insurance approval + wants: the request sent and its answer kept where the patient's case is + who: the receptionist, before a course that an insurer has to approve +- done_when: + - rebooked + - closed + enters: /therapists/no-show + enters_as: therapists + handled_by: reception + id: no-show + lands_in: no_shows + max_fields: 2 + max_steps: 1 + stages: + - open + - contacted + - rebooked + - closed + success: + - rebooked + via: Report a no-show patient + wants: the reception to ring them and get them back in + who: a therapist whose patient did not turn up and did not call +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. diff --git a/runs/physio-2026-09-22/questions/index.yaml b/runs/physio-2026-09-22/questions/index.yaml new file mode 100644 index 0000000..8b04b78 --- /dev/null +++ b/runs/physio-2026-09-22/questions/index.yaml @@ -0,0 +1,16 @@ +alternatives: +- action: /patients + consequence: + - Start here + description: You have pain, an injury, or a new appointment you need to manage. + name: I have pain or an injury +- action: /referrers + consequence: + - Send a patient + description: You are sending someone to us for treatment or a report. + name: I am a GP or hospital +description: Tell us who you are so we can help you the right way. +name: Who are you? +responsible: + contact: marit@bakkenfysio.example + name: Marit Bakken diff --git a/runs/physio-2026-09-22/questions/patients/index.yaml b/runs/physio-2026-09-22/questions/patients/index.yaml new file mode 100644 index 0000000..7faeff8 --- /dev/null +++ b/runs/physio-2026-09-22/questions/patients/index.yaml @@ -0,0 +1,60 @@ +alternatives: +- action: /received/new-patient + consequence: + - Book first visit + description: We'll match you with a therapist who suits your needs. + features: + - name: Book first visit + requirements: + - label: Your name + name: name + type: text + - label: Phone number + name: phone + type: tel + - label: What hurts + name: what_hurts + type: textarea + - label: When did it start? + name: when + options: + - Mornings + - Afternoons + - Any time + type: select + - label: Sent by a doctor? + name: sent_by_doctor + optional: true + options: + - Yes + - No + type: select + name: Book your first appointment + record_as: requests +- action: /received/move-or-cancel + consequence: + - Change booking + description: Let us know if you can't make it or need a new time. + features: + - name: Move or cancel + requirements: + - label: Your name + name: name + type: text + - label: Phone number + name: phone + type: tel + - label: Appointment day + name: appointment_day + type: date + - label: New time preference + name: new_time_wish + optional: true + type: text + name: Move or cancel your appointment + record_as: cancellations +description: Choose what brings you here today. +name: What brings you here today? +responsible: + contact: marit@bakkenfysio.example + name: Marit Bakken diff --git a/runs/physio-2026-09-22/questions/received/move-or-cancel.yaml b/runs/physio-2026-09-22/questions/received/move-or-cancel.yaml new file mode 100644 index 0000000..bd6aa85 --- /dev/null +++ b/runs/physio-2026-09-22/questions/received/move-or-cancel.yaml @@ -0,0 +1,10 @@ +alternatives: +- description: Vi setter oss inn på sakene dine og finner en ny tid som passer. + name: Vi tar vare på tiden din +- action: / + consequence: + - Retur + description: '' + name: Retur +description: Når du har sendt inn skjemaet, tar imot oss meldingen og sender en bekreftelse. +name: Hva skjer nå? diff --git a/runs/physio-2026-09-22/questions/received/new-patient.yaml b/runs/physio-2026-09-22/questions/received/new-patient.yaml new file mode 100644 index 0000000..411f524 --- /dev/null +++ b/runs/physio-2026-09-22/questions/received/new-patient.yaml @@ -0,0 +1,10 @@ +alternatives: +- description: We will contact you to find a suitable time for your first session. + name: What happens next +- action: / + consequence: + - Back to form + description: '' + name: Back to form +description: Your message has been received. A physiotherapist will review your request and get back to you. +name: What happens after I submit? diff --git a/runs/physio-2026-09-22/questions/received/referral.yaml b/runs/physio-2026-09-22/questions/received/referral.yaml new file mode 100644 index 0000000..bf87702 --- /dev/null +++ b/runs/physio-2026-09-22/questions/received/referral.yaml @@ -0,0 +1,10 @@ +alternatives: +- description: We will contact the patient, book an appointment, and send a report when the course is complete. + name: What happens next +- action: / + consequence: + - Back to form + description: '' + name: Back to form +description: Your referral has been received. We will process it and contact you soon. +name: What happens after I send a referral? diff --git a/runs/physio-2026-09-22/questions/reception/_section.yaml b/runs/physio-2026-09-22/questions/reception/_section.yaml new file mode 100644 index 0000000..768a95b --- /dev/null +++ b/runs/physio-2026-09-22/questions/reception/_section.yaml @@ -0,0 +1 @@ +qualifies: reception diff --git a/runs/physio-2026-09-22/questions/reception/index.yaml b/runs/physio-2026-09-22/questions/reception/index.yaml new file mode 100644 index 0000000..c9208b9 --- /dev/null +++ b/runs/physio-2026-09-22/questions/reception/index.yaml @@ -0,0 +1,138 @@ +alternatives: +- action: /reception + consequence: + - Confirm + description: Handle insurance approval requests and track their status for each patient case. + features: + - description: '' + name: '' + resource: + requires_group: reception + source: + bucket: approvals + kind: kv + transitions: + - from: open + label: Send request + to: sent + - from: open + label: Mark refused + to: refused + - from: sent + label: Mark approved + to: approved + - from: sent + label: Mark refused + to: refused + name: Insurance approvals +- action: /reception + consequence: + - Confirm + description: Free up slots or reschedule appointments for patients who can't attend. + features: + - description: '' + name: '' + resource: + requires_group: reception + source: + bucket: cancellations + kind: kv + transitions: + - from: open + label: Move to rebooked + to: rebooked + - from: open + label: Release slot + to: released + name: Appointment changes +- action: /reception + consequence: + - Confirm + description: Track patients who missed their appointment and follow up to get them back. + features: + - description: '' + name: '' + resource: + requires_group: reception + source: + bucket: no_shows + kind: kv + transitions: + - from: contacted + label: Rebook patient + to: rebooked + - from: contacted + label: Close case + to: closed + - from: open + label: Contact patient + to: contacted + - from: open + label: Close case + to: closed + name: Missed appointments +- action: /reception + consequence: + - Confirm + description: Process incoming referrals from GPs and hospitals, track patient progress, and send reports. + features: + - description: '' + name: '' + resource: + requires_group: reception + source: + bucket: referrals + kind: kv + transitions: + - from: accepted + label: Accept & book + to: booked + - from: accepted + label: Return to referrer + to: returned + - from: booked + label: Mark returned + to: returned + - from: open + label: Accept referral + to: accepted + - from: open + label: Return referral + to: returned + name: Referral management +- action: /reception + consequence: + - Confirm + description: Manage new patient bookings and handle cancellations for existing appointments. + features: + - description: '' + name: '' + resource: + requires_group: reception + source: + bucket: requests + kind: kv + transitions: + - from: offered + label: Offer & book + to: booked + - from: offered + label: Offer declined + to: declined + - from: open + label: Offer appointment + to: offered + - from: open + label: Decline offer + to: declined + name: Patient bookings +- action: /reception/insurance-approval + consequence: + - View requests + description: See all insurance approval requests and their current status. + name: Insurance approvals +description: Your workspace for managing patient cases and administrative tasks. +name: What would you like to do today? +responsible: + contact: marit@bakkenfysio.example + name: Marit Bakken diff --git a/runs/physio-2026-09-22/questions/reception/insurance-approval-sent.yaml b/runs/physio-2026-09-22/questions/reception/insurance-approval-sent.yaml new file mode 100644 index 0000000..7f67660 --- /dev/null +++ b/runs/physio-2026-09-22/questions/reception/insurance-approval-sent.yaml @@ -0,0 +1,10 @@ +alternatives: +- description: We will keep you updated on the status of your case. + name: Request sent +- action: /reception + consequence: + - Back to form + description: '' + name: Back to form +description: We have sent your request to the insurer. They will review it and get back to us. +name: What happens next? diff --git a/runs/physio-2026-09-22/questions/reception/insurance-approval.yaml b/runs/physio-2026-09-22/questions/reception/insurance-approval.yaml new file mode 100644 index 0000000..ffe302b --- /dev/null +++ b/runs/physio-2026-09-22/questions/reception/insurance-approval.yaml @@ -0,0 +1,29 @@ +alternatives: +- action: /reception/insurance-approval-sent + consequence: + - Submit request + description: Send the insurance approval request and keep the answer attached to the patient's case file. + features: + - name: Insurance approval + requirements: + - label: Patient name + name: patient_name + type: text + - label: Insurer + name: insurer + type: text + - label: Number of sessions + name: sessions + type: text + - label: Case number + name: case_number + optional: true + type: text + name: Request insurance approval + record_as: approvals +description: Handle insurance approval requests for patient treatment courses. +followup: false +name: Do you need insurance approval for this patient's treatment? +responsible: + contact: marit@bakkenfysio.example + name: Marit Bakken diff --git a/runs/physio-2026-09-22/questions/referrers/index.yaml b/runs/physio-2026-09-22/questions/referrers/index.yaml new file mode 100644 index 0000000..fb4b1d1 --- /dev/null +++ b/runs/physio-2026-09-22/questions/referrers/index.yaml @@ -0,0 +1,34 @@ +alternatives: +- action: /received/referral + consequence: + - Send referral + description: Tell us about the patient and we will contact them to start treatment. + features: + - name: Referral form + requirements: + - label: Patient's full name + name: patient_name + type: text + - label: Patient's phone number + name: patient_phone + type: tel + - label: Your name and clinic + name: referrer + type: text + - label: Reason for referral + name: what_for + type: textarea + - label: How urgent is the need? + name: urgency + options: + - This week + - Within a month + - Routine + type: select + name: Send a patient for physiotherapy + record_as: referrals +description: We help patients with pain, injuries, or after operations. You can send a patient here or ask about a referral. +name: Are you sending a patient to us, or do you have a question about a referral? +responsible: + contact: marit@bakkenfysio.example + name: Marit Bakken diff --git a/runs/physio-2026-09-22/questions/therapists/_section.yaml b/runs/physio-2026-09-22/questions/therapists/_section.yaml new file mode 100644 index 0000000..941c735 --- /dev/null +++ b/runs/physio-2026-09-22/questions/therapists/_section.yaml @@ -0,0 +1 @@ +qualifies: therapists diff --git a/runs/physio-2026-09-22/questions/therapists/index.yaml b/runs/physio-2026-09-22/questions/therapists/index.yaml new file mode 100644 index 0000000..e7707e7 --- /dev/null +++ b/runs/physio-2026-09-22/questions/therapists/index.yaml @@ -0,0 +1,28 @@ +alternatives: +- action: /therapists + consequence: + - Confirm move + description: A GP or hospital ward sends a patient here for treatment and reports back when the course ends. + features: + - description: '' + name: '' + resource: + requires_group: therapists + source: + bucket: referrals + kind: kv + transitions: + - from: booked + label: Mark as reported + to: reported + name: Handle incoming referrals +- action: /therapists/no-show + consequence: + - Contact patient + description: Get in touch with the patient who missed their appointment and reschedule them. + name: Handle no-show patients +description: Manage the cases that come through this desk. +name: What case do you want to work on? +responsible: + contact: marit@bakkenfysio.example + name: Marit Bakken diff --git a/runs/physio-2026-09-22/questions/therapists/no-show-sent.yaml b/runs/physio-2026-09-22/questions/therapists/no-show-sent.yaml new file mode 100644 index 0000000..30b5c52 --- /dev/null +++ b/runs/physio-2026-09-22/questions/therapists/no-show-sent.yaml @@ -0,0 +1,10 @@ +alternatives: +- description: Receptionen ringer pasienten for å finne en ny tid. Du får beskjed når prosessen er ferdig. + name: Hva skjer nå? +- action: /therapists + consequence: + - Tilbake + description: '' + name: Tilbake +description: Du har sendt inn skjemaet om en pasient som ikke viste opp. Her finner du neste steg. +name: Hvem tar seg av dette? diff --git a/runs/physio-2026-09-22/questions/therapists/no-show.yaml b/runs/physio-2026-09-22/questions/therapists/no-show.yaml new file mode 100644 index 0000000..716f0c2 --- /dev/null +++ b/runs/physio-2026-09-22/questions/therapists/no-show.yaml @@ -0,0 +1,26 @@ +alternatives: +- action: /therapists/no-show-sent + consequence: + - Send request + description: Report a patient who didn't show up so we can follow up and fill the slot. + features: + - name: No-show report + requirements: + - label: Patient name + name: patient_name + type: text + - label: Appointment date + name: appointment_day + type: date + - label: Additional note + name: note + optional: true + type: text + name: Report a no-show patient + record_as: no_shows +description: Use this form to report a patient who missed their appointment without calling. +followup: false +name: Did a patient miss their appointment without calling? +responsible: + contact: marit@bakkenfysio.example + name: Marit Bakken diff --git a/runs/physio-2026-09-22/rate.json b/runs/physio-2026-09-22/rate.json new file mode 100644 index 0000000..795653a --- /dev/null +++ b/runs/physio-2026-09-22/rate.json @@ -0,0 +1,187 @@ +{ + "insurance-approval": { + "pages": [ + { + "control": { + "asked": 0, + "next": 0, + "which": 1 + }, + "control_ok": false, + "followup_shown": true, + "lix": 33.47692307692308, + "options": 1, + "overloaded": false, + "page": "/reception/insurance-approval", + "personas": 1, + "required_fields": 3, + "understanding": { + "asked": 1, + "next": 1, + "which": 1 + } + } + ], + "steps": 1 + }, + "move-or-cancel": { + "pages": [ + { + "control": { + "asked": 0, + "next": null, + "which": 0 + }, + "control_ok": true, + "followup_shown": false, + "lix": 23.814814814814817, + "options": 2, + "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": 18.34285714285714, + "options": 2, + "overloaded": false, + "page": "/patients", + "personas": 2, + "required_fields": 3, + "understanding": { + "asked": 2, + "next": 2, + "which": 2 + } + } + ], + "steps": 2 + }, + "new-patient": { + "pages": [ + { + "control": { + "asked": 0, + "next": null, + "which": 0 + }, + "control_ok": true, + "followup_shown": false, + "lix": 23.814814814814817, + "options": 2, + "overloaded": false, + "page": "/", + "personas": 2, + "required_fields": 0, + "understanding": { + "asked": 1, + "next": null, + "which": 2 + } + }, + { + "control": { + "asked": 0, + "next": 0, + "which": 0 + }, + "control_ok": true, + "followup_shown": true, + "lix": 23.535087719298247, + "options": 2, + "overloaded": false, + "page": "/patients", + "personas": 2, + "required_fields": 4, + "understanding": { + "asked": 2, + "next": 2, + "which": 1 + } + } + ], + "steps": 2 + }, + "no-show": { + "pages": [ + { + "control": { + "asked": 0, + "next": 0, + "which": 0 + }, + "control_ok": true, + "followup_shown": true, + "lix": 28.79824561403509, + "options": 1, + "overloaded": false, + "page": "/therapists/no-show", + "personas": 1, + "required_fields": 2, + "understanding": { + "asked": 1, + "next": 1, + "which": 1 + } + } + ], + "steps": 1 + }, + "referral": { + "pages": [ + { + "control": { + "asked": 0, + "next": null, + "which": 0 + }, + "control_ok": true, + "followup_shown": false, + "lix": 23.814814814814817, + "options": 2, + "overloaded": false, + "page": "/", + "personas": 2, + "required_fields": 0, + "understanding": { + "asked": 2, + "next": null, + "which": 2 + } + }, + { + "control": { + "asked": 0, + "next": 0, + "which": 1 + }, + "control_ok": false, + "followup_shown": true, + "lix": 37.22372881355932, + "options": 1, + "overloaded": false, + "page": "/referrers", + "personas": 2, + "required_fields": 5, + "understanding": { + "asked": 2, + "next": 2, + "which": 2 + } + } + ], + "steps": 2 + } +} \ No newline at end of file diff --git a/runs/physio-2026-09-22/rate.txt b/runs/physio-2026-09-22/rate.txt new file mode 100644 index 0000000..bdd6587 --- /dev/null +++ b/runs/physio-2026-09-22/rate.txt @@ -0,0 +1,9 @@ +need LIX which asked next gutted twin says page load +new-patient @/ 24 very easy 2/2 1/2 - 0/0/- ok 2 options, 0 required +new-patient @/patients 24 very easy 1/2 2/2 2/2 0/0/0 ok 2 options, 4 required +move-or-cancel @/ 24 very easy 1/2 0/2 - 0/0/- ok 2 options, 0 required +move-or-cancel @/patients 18 very easy 2/2 2/2 2/2 0/0/0 ok 2 options, 3 required +referral @/ 24 very easy 2/2 2/2 - 0/0/- ok 2 options, 0 required +referral @/referrers 37 easy 2/2 2/2 2/2 1/0/0 FAILED: which 1 options, 5 required +insurance-approval 33 easy 1/1 1/1 1/1 1/0/0 FAILED: which 1 options, 3 required +no-show 29 very easy 1/1 1/1 1/1 0/0/0 ok 1 options, 2 required diff --git a/runs/physio-2026-09-22/score-full.txt b/runs/physio-2026-09-22/score-full.txt new file mode 100644 index 0000000..90c6849 --- /dev/null +++ b/runs/physio-2026-09-22/score-full.txt @@ -0,0 +1,3 @@ +MISROUTE: post-surgery-mother@/patients: picked "Move or cancel your appointment" (0.85), the need is met by ["Book your first appointment"] +MISROUTE: sent-abroad@/: picked "I am a GP or hospital" (0.95), the need is met by ["I have pain or an injury"] +wording: 8/10 routed right (80%) diff --git a/runs/physio-2026-09-22/score-skim.txt b/runs/physio-2026-09-22/score-skim.txt new file mode 100644 index 0000000..026d802 --- /dev/null +++ b/runs/physio-2026-09-22/score-skim.txt @@ -0,0 +1,2 @@ +MISROUTE: post-surgery-mother@/patients: picked "Move or cancel your appointment" (0.95), the need is met by ["Book your first appointment"] +wording: 9/10 routed right (90%) diff --git a/runs/physio-2026-09-22/site.yaml b/runs/physio-2026-09-22/site.yaml new file mode 100644 index 0000000..8fffa39 --- /dev/null +++ b/runs/physio-2026-09-22/site.yaml @@ -0,0 +1,2 @@ +lang: en +title: Bakken Fysioterapi diff --git a/runs/physio-2026-09-22/tasks-full.jsonl b/runs/physio-2026-09-22/tasks-full.jsonl new file mode 100644 index 0000000..abea92f --- /dev/null +++ b/runs/physio-2026-09-22/tasks-full.jsonl @@ -0,0 +1,10 @@ +{"id":"runner-knee@/","persona":"runner-knee","need":"new-patient","page":"/","state":{"body":"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."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Who are you?\". Which alternative do they choose?","criteria":{"I am a GP or hospital":"You are sending someone to us for treatment or a report.","I have pain or an injury":"You have pain, an injury, or a new appointment you need to manage."}}},"expect":["I have pain or an injury"]} +{"id":"runner-knee@/patients","persona":"runner-knee","need":"new-patient","page":"/patients","state":{"body":"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."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"What brings you here today?\". Which alternative do they choose?","criteria":{"Book your first appointment":"We'll match you with a therapist who suits your needs.","Move or cancel your appointment":"Let us know if you can't make it or need a new time."}}},"expect":["Book your first appointment"]} +{"id":"post-surgery-mother@/","persona":"post-surgery-mother","need":"new-patient","page":"/","state":{"body":"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."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Who are you?\". Which alternative do they choose?","criteria":{"I am a GP or hospital":"You are sending someone to us for treatment or a report.","I have pain or an injury":"You have pain, an injury, or a new appointment you need to manage."}}},"expect":["I have pain or an injury"]} +{"id":"post-surgery-mother@/patients","persona":"post-surgery-mother","need":"new-patient","page":"/patients","state":{"body":"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."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"What brings you here today?\". Which alternative do they choose?","criteria":{"Book your first appointment":"We'll match you with a therapist who suits your needs.","Move or cancel your appointment":"Let us know if you can't make it or need a new time."}}},"expect":["Book your first appointment"]} +{"id":"sick-child@/","persona":"sick-child","need":"move-or-cancel","page":"/","state":{"body":"I have a session on Thursday at ten but my daughter has a fever and I can't come. Can I move it?"},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Who are you?\". Which alternative do they choose?","criteria":{"I am a GP or hospital":"You are sending someone to us for treatment or a report.","I have pain or an injury":"You have pain, an injury, or a new appointment you need to manage."}}},"expect":["I have pain or an injury"]} +{"id":"sick-child@/patients","persona":"sick-child","need":"move-or-cancel","page":"/patients","state":{"body":"I have a session on Thursday at ten but my daughter has a fever and I can't come. Can I move it?"},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"What brings you here today?\". Which alternative do they choose?","criteria":{"Book your first appointment":"We'll match you with a therapist who suits your needs.","Move or cancel your appointment":"Let us know if you can't make it or need a new time."}}},"expect":["Move or cancel your appointment"]} +{"id":"sent-abroad@/","persona":"sent-abroad","need":"move-or-cancel","page":"/","state":{"body":"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."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Who are you?\". Which alternative do they choose?","criteria":{"I am a GP or hospital":"You are sending someone to us for treatment or a report.","I have pain or an injury":"You have pain, an injury, or a new appointment you need to manage."}}},"expect":["I have pain or an injury"]} +{"id":"sent-abroad@/patients","persona":"sent-abroad","need":"move-or-cancel","page":"/patients","state":{"body":"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."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"What brings you here today?\". Which alternative do they choose?","criteria":{"Book your first appointment":"We'll match you with a therapist who suits your needs.","Move or cancel your appointment":"Let us know if you can't make it or need a new time."}}},"expect":["Move or cancel your appointment"]} +{"id":"gp-shoulder@/","persona":"gp-shoulder","need":"referral","page":"/","state":{"body":"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."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Who are you?\". Which alternative do they choose?","criteria":{"I am a GP or hospital":"You are sending someone to us for treatment or a report.","I have pain or an injury":"You have pain, an injury, or a new appointment you need to manage."}}},"expect":["I am a GP or hospital"]} +{"id":"hospital-discharge@/","persona":"hospital-discharge","need":"referral","page":"/","state":{"body":"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."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Who are you?\". Which alternative do they choose?","criteria":{"I am a GP or hospital":"You are sending someone to us for treatment or a report.","I have pain or an injury":"You have pain, an injury, or a new appointment you need to manage."}}},"expect":["I am a GP or hospital"]} diff --git a/runs/physio-2026-09-22/tasks-skim.jsonl b/runs/physio-2026-09-22/tasks-skim.jsonl new file mode 100644 index 0000000..10fbf69 --- /dev/null +++ b/runs/physio-2026-09-22/tasks-skim.jsonl @@ -0,0 +1,10 @@ +{"id":"runner-knee@/","persona":"runner-knee","need":"new-patient","page":"/","state":{"body":"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."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Who are you?\". Which alternative do they choose?","criteria":{"I am a GP or hospital":"I am a GP or hospital","I have pain or an injury":"I have pain or an injury"}}},"expect":["I have pain or an injury"]} +{"id":"runner-knee@/patients","persona":"runner-knee","need":"new-patient","page":"/patients","state":{"body":"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."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"What brings you here today?\". Which alternative do they choose?","criteria":{"Book your first appointment":"Book your first appointment","Move or cancel your appointment":"Move or cancel your appointment"}}},"expect":["Book your first appointment"]} +{"id":"post-surgery-mother@/","persona":"post-surgery-mother","need":"new-patient","page":"/","state":{"body":"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."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Who are you?\". Which alternative do they choose?","criteria":{"I am a GP or hospital":"I am a GP or hospital","I have pain or an injury":"I have pain or an injury"}}},"expect":["I have pain or an injury"]} +{"id":"post-surgery-mother@/patients","persona":"post-surgery-mother","need":"new-patient","page":"/patients","state":{"body":"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."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"What brings you here today?\". Which alternative do they choose?","criteria":{"Book your first appointment":"Book your first appointment","Move or cancel your appointment":"Move or cancel your appointment"}}},"expect":["Book your first appointment"]} +{"id":"sick-child@/","persona":"sick-child","need":"move-or-cancel","page":"/","state":{"body":"I have a session on Thursday at ten but my daughter has a fever and I can't come. Can I move it?"},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Who are you?\". Which alternative do they choose?","criteria":{"I am a GP or hospital":"I am a GP or hospital","I have pain or an injury":"I have pain or an injury"}}},"expect":["I have pain or an injury"]} +{"id":"sick-child@/patients","persona":"sick-child","need":"move-or-cancel","page":"/patients","state":{"body":"I have a session on Thursday at ten but my daughter has a fever and I can't come. Can I move it?"},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"What brings you here today?\". Which alternative do they choose?","criteria":{"Book your first appointment":"Book your first appointment","Move or cancel your appointment":"Move or cancel your appointment"}}},"expect":["Move or cancel your appointment"]} +{"id":"sent-abroad@/","persona":"sent-abroad","need":"move-or-cancel","page":"/","state":{"body":"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."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Who are you?\". Which alternative do they choose?","criteria":{"I am a GP or hospital":"I am a GP or hospital","I have pain or an injury":"I have pain or an injury"}}},"expect":["I have pain or an injury"]} +{"id":"sent-abroad@/patients","persona":"sent-abroad","need":"move-or-cancel","page":"/patients","state":{"body":"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."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"What brings you here today?\". Which alternative do they choose?","criteria":{"Book your first appointment":"Book your first appointment","Move or cancel your appointment":"Move or cancel your appointment"}}},"expect":["Move or cancel your appointment"]} +{"id":"gp-shoulder@/","persona":"gp-shoulder","need":"referral","page":"/","state":{"body":"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."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Who are you?\". Which alternative do they choose?","criteria":{"I am a GP or hospital":"I am a GP or hospital","I have pain or an injury":"I have pain or an injury"}}},"expect":["I am a GP or hospital"]} +{"id":"hospital-discharge@/","persona":"hospital-discharge","need":"referral","page":"/","state":{"body":"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."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Who are you?\". Which alternative do they choose?","criteria":{"I am a GP or hospital":"I am a GP or hospital","I have pain or an injury":"I have pain or an injury"}}},"expect":["I am a GP or hospital"]} diff --git a/runs/tomtervel-cards-2026-09-23/README.md b/runs/tomtervel-cards-2026-09-23/README.md new file mode 100644 index 0000000..0d6f1f3 --- /dev/null +++ b/runs/tomtervel-cards-2026-09-23/README.md @@ -0,0 +1,50 @@ +# Tomter Vel, the whole card worded, scored by a visitor who reads the whole card + +Same plan as the day before (`plans/tomtervel.yaml`, 11 needs behind +four doors, with nabohjelp), rebuilt after the builder learned to +fill every part of a card and the scorers learned to read it. Claude +Sonnet writing the words, 294 s for 27 pages, verifier green by +construction. Visitor: qwen3:8b, one task per call, shown each option +as portal renders it. This build is what vel.klingenbergbygg.no +serves from 2026-09-23. + +| Visitor could read | 2026-09-22 build (heading + description) | This build (whole card) | +|---|---|---| +| Headings and descriptions | 30 of 40 | 32 of 40 | +| Headings only | 28 of 40 | 29 of 40 | + +Two more routed right with descriptions, one more on headings alone. +Not a large move, and the headings-only figure says why: the front +door's four door headings still do most of the damage. "Si din mening +eller gi en hånd" took two traffic reports, two playground reports, a +member with a new email and a waffle volunteer on headings alone. The +card cannot help a visitor who only reads the heading, and the door +headings are the plan's weakest words. + +What the card does do shows in `rate`: with the whole card shown, +"where" (do you know where you are, who this is for, and what the +button does) is 2 of 2 on every page, and "asked" is 2 of 2 on every +form page. The two context sections the plan supplies, "Hva skjer +videre" and "Hvem ser dette", are what makes "next" 2 of 2 on the +form pages. + +One instrument note: "where" fails its control on three pages, where +the gutted twin (which keeps the page's question) still got a yes. A +question like "Hva har du sett i nabolaget som ikke er som det skal?" +tells a visitor where they are on its own. Fair, and it means "where" +is partly a property of the page question, not only the cards. + +A card, as built (playground report, `/melde-fra`): + +- Få fikset noe som er ødelagt: Er noe på lekeplassen eller stien + ødelagt eller farlig? Fortell oss hvor og hva, så tar + lekeplasskomiteen tak i det. +- Button: Meld fra. Det holder med noen få ord, så ser komiteen på det + så fort de kan. +- [wrench] Hva skjer videre: Meldingen går til lekeplasskomiteen, som + tar tak i saken og utbedrer skaden. +- [hammer] Hvem ser dette: Lekeplasskomiteen leser det du sender inn; + til det haster kan du nå styret på post@tomtervel.no. +- [construction] Meld fra om skade: Beskriv hva du så og hvor det er. + Asks for: Hvor er det?; Hva har du sett? e.g. Løs planke i + klatrestativet. diff --git a/runs/tomtervel-cards-2026-09-23/aggregates.yaml b/runs/tomtervel-cards-2026-09-23/aggregates.yaml new file mode 100644 index 0000000..73a8eaa --- /dev/null +++ b/runs/tomtervel-cards-2026-09-23/aggregates.yaml @@ -0,0 +1,162 @@ +aggregates: +- bucket: anleggsfeil + initial: open + states: + open: + event: received + tatt_tak_i: + event: tatt_tak_i + utbedret: + event: utbedret + transitions: + open: + - tatt_tak_i + tatt_tak_i: + - utbedret +- bucket: frivillige + initial: open + states: + kontaktet: + event: kontaktet + open: + event: received + satt_opp: + event: satt_opp + takket_nei: + event: takket_nei + transitions: + kontaktet: + - satt_opp + - takket_nei + open: + - kontaktet + - takket_nei +- bucket: hjelpebehov + initial: open + states: + formidlet: + event: formidlet + ikke_lost: + event: ikke_lost + open: + event: received + ordnet: + event: ordnet + transitions: + formidlet: + - ordnet + - ikke_lost + open: + - formidlet + - ikke_lost +- bucket: hjelpere + initial: open + states: + open: + event: received + registrert: + event: registrert + trukket: + event: trukket + transitions: + open: + - registrert + - trukket +- bucket: husstander + initial: open + states: + betalt: + event: betalt + open: + event: received + utmeldt: + event: utmeldt + transitions: + open: + - betalt + - utmeldt +- bucket: innspill + initial: open + states: + ikke_tatt_med: + event: ikke_tatt_med + open: + event: received + tatt_med: + event: tatt_med + transitions: + open: + - tatt_med + - ikke_tatt_med +- bucket: komitesoknader + initial: open + states: + avslatt: + event: avslatt + open: + event: received + plassert: + event: plassert + transitions: + open: + - plassert + - avslatt +- bucket: medlemsendringer + initial: open + states: + open: + event: received + oppdatert: + event: oppdatert + transitions: + open: + - oppdatert +- bucket: oppslag + initial: open + states: + lagt_ut: + event: lagt_ut + open: + event: received + tatt_ned: + event: tatt_ned + transitions: + open: + - lagt_ut + - tatt_ned +- bucket: trafikkmeldinger + initial: open + states: + avvist: + event: avvist + open: + event: received + ordnet: + event: ordnet + tatt_opp: + event: tatt_opp + transitions: + open: + - tatt_opp + - avvist + tatt_opp: + - ordnet + - avvist +- bucket: utlegg + initial: open + states: + avvist: + event: avvist + godkjent: + event: godkjent + open: + event: received + utbetalt: + event: utbetalt + transitions: + godkjent: + - utbetalt + - avvist + open: + - godkjent + - avvist diff --git a/runs/tomtervel-cards-2026-09-23/answers-full.jsonl b/runs/tomtervel-cards-2026-09-23/answers-full.jsonl new file mode 100644 index 0000000..48ecc71 --- /dev/null +++ b/runs/tomtervel-cards-2026-09-23/answers-full.jsonl @@ -0,0 +1,40 @@ +{"choice":"Bli medlem eller endre opplysningene dine","confidence":0.95,"id":"nyinnflyttet@/"} +{"choice":"Bli medlem av velet","confidence":0.95,"id":"nyinnflyttet@/medlem"} +{"choice":"Bli medlem eller endre opplysningene dine","confidence":0.95,"id":"glemte-a-betale@/"} +{"choice":"Bli medlem av velet","confidence":0.95,"id":"glemte-a-betale@/medlem"} +{"choice":"Bli medlem eller endre opplysningene dine","confidence":0.95,"id":"ny-epost@/"} +{"choice":"Oppdater opplysningene dine","confidence":0.95,"id":"ny-epost@/medlem"} +{"choice":"Bli medlem eller endre opplysningene dine","confidence":0.95,"id":"flytter@/"} +{"choice":"Oppdater opplysningene dine","confidence":0.95,"id":"flytter@/medlem"} +{"choice":"Meld fra om noe som ikke er som det skal","confidence":0.95,"id":"skolevei@/"} +{"choice":"Gjør trafikken tryggere der du bor","confidence":0.95,"id":"skolevei@/melde-fra"} +{"choice":"Få hjelp fra naboer, eller gi en hånd","confidence":0.95,"id":"busslomme@/"} +{"choice":"Gjør trafikken tryggere der du bor","confidence":0.95,"id":"busslomme@/melde-fra"} +{"choice":"Meld fra om noe som ikke er som det skal","confidence":0.95,"id":"huske@/"} +{"choice":"Få fikset noe som er ødelagt","confidence":0.95,"id":"huske@/melde-fra"} +{"choice":"Meld fra om noe som ikke er som det skal","confidence":0.95,"id":"bru@/"} +{"choice":"Gjør trafikken tryggere der du bor","confidence":0.95,"id":"bru@/melde-fra"} +{"choice":"Si din mening eller gi en hånd","confidence":0.95,"id":"blokker@/"} +{"choice":"Få din mening med i velets høringssvar","confidence":0.95,"id":"blokker@/bidra"} +{"choice":"Si din mening eller gi en hånd","confidence":0.95,"id":"togtider@/"} +{"choice":"Få din mening med i velets høringssvar","confidence":0.95,"id":"togtider@/bidra"} +{"choice":"Til naboer","confidence":0.95,"id":"vafler@/"} +{"choice":"Bli med på et arrangement eller en dugnad","confidence":0.95,"id":"vafler@/bidra"} +{"choice":"Få hjelp fra naboer, eller gi en hånd","confidence":0.85,"id":"motorsag@/"} +{"choice":"Bli med på et arrangement eller en dugnad","confidence":0.95,"id":"motorsag@/bidra"} +{"choice":"Si din mening eller gi en hånd","confidence":0.95,"id":"pendler@/"} +{"choice":"Få en plass i komiteen du brenner for","confidence":0.95,"id":"pendler@/bidra"} +{"choice":"Bidra","confidence":0.95,"id":"planlegger@/"} +{"choice":"Få din mening med i velets høringssvar","confidence":0.95,"id":"planlegger@/bidra"} +{"choice":"Få hjelp fra naboer, eller gi en hånd","confidence":0.95,"id":"tilhenger@/"} +{"choice":"Lån ut eller lån det naboene trenger","confidence":0.95,"id":"tilhenger@/naboer"} +{"choice":"Få hjelp fra naboer, eller gi en hånd","confidence":0.95,"id":"stige@/"} +{"choice":"Lån ut eller lån det naboene trenger","confidence":0.95,"id":"stige@/naboer"} +{"choice":"Få hjelp fra naboer, eller gi en hånd","confidence":0.95,"id":"snomaking@/"} +{"choice":"Be om nabohjelp","confidence":0.95,"id":"snomaking@/naboer"} +{"choice":"Få hjelp fra naboer, eller gi en hånd","confidence":0.85,"id":"nyoperert@/"} +{"choice":"Få en nabo til å stille opp","confidence":0.95,"id":"nyoperert@/naboer"} +{"choice":"Få hjelp fra naboer, eller gi en hånd","confidence":0.95,"id":"hjemmekontor@/"} +{"choice":"Få en nabo til å stille opp","confidence":0.95,"id":"hjemmekontor@/naboer"} +{"choice":"Få hjelp fra naboer, eller gi en hånd","confidence":0.95,"id":"pensjonert-elektriker@/"} +{"choice":"Bli spurt når en nabo trenger en hånd","confidence":0.95,"id":"pensjonert-elektriker@/naboer"} diff --git a/runs/tomtervel-cards-2026-09-23/answers-skim.jsonl b/runs/tomtervel-cards-2026-09-23/answers-skim.jsonl new file mode 100644 index 0000000..755866e --- /dev/null +++ b/runs/tomtervel-cards-2026-09-23/answers-skim.jsonl @@ -0,0 +1,40 @@ +{"choice":"Bli medlem eller endre opplysningene dine","confidence":0.85,"id":"nyinnflyttet@/"} +{"choice":"Bli medlem av velet","confidence":0.95,"id":"nyinnflyttet@/medlem"} +{"choice":"Bli medlem eller endre opplysningene dine","confidence":0.95,"id":"glemte-a-betale@/"} +{"choice":"Bli medlem av velet","confidence":0.95,"id":"glemte-a-betale@/medlem"} +{"choice":"Si din mening eller gi en hånd","confidence":0.85,"id":"ny-epost@/"} +{"choice":"Oppdater opplysningene dine","confidence":0.95,"id":"ny-epost@/medlem"} +{"choice":"Meld fra om noe som ikke er som det skal","confidence":0.95,"id":"flytter@/"} +{"choice":"Oppdater opplysningene dine","confidence":0.95,"id":"flytter@/medlem"} +{"choice":"Si din mening eller gi en hånd","confidence":0.85,"id":"skolevei@/"} +{"choice":"Gjør trafikken tryggere der du bor","confidence":0.95,"id":"skolevei@/melde-fra"} +{"choice":"Si din mening eller gi en hånd","confidence":0.85,"id":"busslomme@/"} +{"choice":"Gjør trafikken tryggere der du bor","confidence":0.95,"id":"busslomme@/melde-fra"} +{"choice":"Si din mening eller gi en hånd","confidence":0.85,"id":"huske@/"} +{"choice":"Få fikset noe som er ødelagt","confidence":0.95,"id":"huske@/melde-fra"} +{"choice":"Si din mening eller gi en hånd","confidence":0.85,"id":"bru@/"} +{"choice":"Få fikset noe som er ødelagt","confidence":0.95,"id":"bru@/melde-fra"} +{"choice":"Si din mening eller gi en hånd","confidence":0.95,"id":"blokker@/"} +{"choice":"Få din mening med i velets høringssvar","confidence":0.95,"id":"blokker@/bidra"} +{"choice":"Meld fra om noe som ikke er som det skal","confidence":0.95,"id":"togtider@/"} +{"choice":"Få din mening med i velets høringssvar","confidence":0.95,"id":"togtider@/bidra"} +{"choice":"Få hjelp fra naboer, eller gi en hånd","confidence":0.85,"id":"vafler@/"} +{"choice":"Bli med på et arrangement eller en dugnad","confidence":0.95,"id":"vafler@/bidra"} +{"choice":"Si din mening eller gi en hånd","confidence":0.85,"id":"motorsag@/"} +{"choice":"Bli med på et arrangement eller en dugnad","confidence":0.95,"id":"motorsag@/bidra"} +{"choice":"Si din mening eller gi en hånd","confidence":0.85,"id":"pendler@/"} +{"choice":"Få en plass i komiteen du brenner for","confidence":0.95,"id":"pendler@/bidra"} +{"choice":"Si din mening eller gi en hånd","confidence":0.85,"id":"planlegger@/"} +{"choice":"Få din mening med i velets høringssvar","confidence":0.95,"id":"planlegger@/bidra"} +{"choice":"Få hjelp fra naboer, eller gi en hånd","confidence":0.95,"id":"tilhenger@/"} +{"choice":"Lån ut eller lån det naboene trenger","confidence":0.95,"id":"tilhenger@/naboer"} +{"choice":"Få hjelp fra naboer, eller gi en hånd","confidence":0.95,"id":"stige@/"} +{"choice":"Lån ut eller lån det naboene trenger","confidence":0.95,"id":"stige@/naboer"} +{"choice":"Få hjelp fra naboer, eller gi en hånd","confidence":0.95,"id":"snomaking@/"} +{"choice":"Bli spurt når en nabo trenger en hånd","confidence":0.95,"id":"snomaking@/naboer"} +{"choice":"Få hjelp fra naboer, eller gi en hånd","confidence":0.95,"id":"nyoperert@/"} +{"choice":"Få en nabo til å stille opp","confidence":0.95,"id":"nyoperert@/naboer"} +{"choice":"Gi en hånd","confidence":0.95,"id":"hjemmekontor@/"} +{"choice":"Bli spurt når en nabo trenger en hånd","confidence":0.95,"id":"hjemmekontor@/naboer"} +{"choice":"Få hjelp fra naboer, eller gi en hånd","confidence":0.95,"id":"pensjonert-elektriker@/"} +{"choice":"Bli spurt når en nabo trenger en hånd","confidence":0.95,"id":"pensjonert-elektriker@/naboer"} diff --git a/runs/tomtervel-cards-2026-09-23/build.log b/runs/tomtervel-cards-2026-09-23/build.log new file mode 100644 index 0000000..e3c22fb --- /dev/null +++ b/runs/tomtervel-cards-2026-09-23/build.log @@ -0,0 +1,41 @@ +words: questions/arrangementskomite/index.yaml +words: questions/bidra/index.yaml +words: questions/decide/dele-utstyr.yaml +words: questions/decide/kan-hjelpe.yaml +words: questions/decide/trenger-hjelp.yaml +words: questions/index.yaml +words: questions/kasserer/index.yaml +words: questions/komiteer/index.yaml +words: questions/komiteer/utlegg-sent.yaml +words: questions/komiteer/utlegg.yaml +words: questions/lekeplasskomite/index.yaml +words: questions/medlem/index.yaml +words: questions/melde-fra/index.yaml +words: questions/naboer/index.yaml +words: questions/nabohjelp/index.yaml +words: questions/received/anleggsfeil.yaml +words: questions/received/bli-medlem.yaml +words: questions/received/dele-utstyr.yaml +words: questions/received/endre-medlemskap.yaml +words: questions/received/hjelpe-til.yaml +words: questions/received/horingsinnspill.yaml +words: questions/received/kan-hjelpe.yaml +words: questions/received/komite.yaml +words: questions/received/trafikkfare.yaml +words: questions/received/trenger-hjelp.yaml +words: questions/styret/index.yaml +words: questions/trafikkomite/index.yaml +content repo written to runs/tomtervel-cards-2026-09-23 +OK: 27 question(s), 12 aggregate(s) valid +need "bli-medlem": / [Bli medlem eller endre opplysningene dine] -> /medlem [Bli medlem av velet] -> "husstander" +need "endre-medlemskap": / [Bli medlem eller endre opplysningene dine] -> /medlem [Oppdater opplysningene dine] -> "medlemsendringer" +need "trafikkfare": / [Meld fra om noe som ikke er som det skal] -> /melde-fra [Gjør trafikken tryggere der du bor] -> "trafikkmeldinger" +need "anleggsfeil": / [Meld fra om noe som ikke er som det skal] -> /melde-fra [Få fikset noe som er ødelagt] -> "anleggsfeil" +need "horingsinnspill": / [Si din mening eller gi en hånd] -> /bidra [Få din mening med i velets høringssvar] -> "innspill" +need "hjelpe-til": / [Si din mening eller gi en hånd] -> /bidra [Bli med på et arrangement eller en dugnad] -> "frivillige" +need "komite": / [Si din mening eller gi en hånd] -> /bidra [Få en plass i komiteen du brenner for] -> "komitesoknader" +need "trenger-hjelp": / [Få hjelp fra naboer, eller gi en hånd] -> /naboer [Få en nabo til å stille opp] -> "hjelpebehov" +need "kan-hjelpe": / [Få hjelp fra naboer, eller gi en hånd] -> /naboer [Bli spurt når en nabo trenger en hånd] -> "hjelpere" +need "dele-utstyr": / [Få hjelp fra naboer, eller gi en hånd] -> /naboer [Lån ut eller lån det naboene trenger] -> "oppslag" +need "utlegg": /komiteer/utlegg [Få tilbake det du har lagt ut] -> "utlegg" +OK: 11 need(s) structurally met, 0 planned, 21 persona(s) diff --git a/runs/tomtervel-cards-2026-09-23/llm/01-questions_arrangementskomite_index.yaml.md b/runs/tomtervel-cards-2026-09-23/llm/01-questions_arrangementskomite_index.yaml.md new file mode 100644 index 0000000..050ef9f --- /dev/null +++ b/runs/tomtervel-cards-2026-09-23/llm/01-questions_arrangementskomite_index.yaml.md @@ -0,0 +1,80 @@ +You write the words for one page of a website for this business. + +Business: Tomter Vel +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. +Contact: Styret i Tomter Vel +Language to write in: nb + +Everyone the site serves: +- door medlem: for en husstand i Tomter som vil være med i velet, eller allerede er det; behind it: bli-medlem, endre-medlemskap +- door melde-fra: for noen som har sett noe i nabolaget som ikke er som det skal; behind it: trafikkfare, anleggsfeil +- door bidra: for noen som vil gjøre en innsats, eller si sin mening i en sak; behind it: horingsinnspill, hjelpe-til, komite +- door naboer: for en nabo som trenger en hånd, kan gi en, eller har noe å låne ut; behind it: trenger-hjelp, kan-hjelpe, dele-utstyr +- bli-medlem: en husstand i Tomter - wants: å bli medlem og få betalt kontingenten. Handled by kasserer. Stages: open -> betalt -> utmeldt. +- endre-medlemskap: et medlem som har flyttet, byttet e-post eller vil melde seg ut - wants: at velet har riktige opplysninger om dem. Handled by kasserer. Stages: open -> oppdatert. +- trafikkfare: en som har sett et farlig sted i trafikken - wants: at velet tar det opp med kommunen eller den som eier veien. Handled by trafikkomite. Stages: open -> tatt_opp -> ordnet -> avvist. +- anleggsfeil: en som ser at noe på lekeplassen eller stien er ødelagt - wants: at det blir fikset før noen skader seg. Handled by lekeplasskomite. Stages: open -> tatt_tak_i -> utbedret. +- horingsinnspill: en beboer som har en mening om en sak kommunen har på høring - wants: at velet tar det med i sitt svar. Handled by styret. Stages: open -> tatt_med -> ikke_tatt_med. +- hjelpe-til: en som vil hjelpe til på et arrangement eller en dugnad - wants: å bli satt opp på noe som passer dem. Handled by arrangementskomite. Stages: open -> kontaktet -> satt_opp -> takket_nei. +- komite: en som vil sitte i en komité - wants: en plass i den komiteen som driver med det de bryr seg om. Handled by styret. Stages: open -> plassert -> avslatt. +- trenger-hjelp: 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. Handled by nabohjelp. Stages: open -> formidlet -> ordnet -> ikke_lost. +- kan-hjelpe: en nabo som kan stille opp når noen trenger det - wants: å bli spurt når det passer. Handled by nabohjelp. Stages: open -> registrert -> trukket. +- dele-utstyr: en nabo som har noe å låne ut, eller trenger å låne noe - wants: et oppslag som naboene ser. Handled by styret. Stages: open -> lagt_ut -> tatt_ned. +- utlegg: en i en komité som har lagt ut for noe - wants: pengene tilbake. Handled by kasserer. Stages: open -> godkjent -> utbetalt -> avvist. + +The page: questions/arrangementskomite/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. +- The button says what pressing it does; the encouragement says what happens next or how little it takes; the form's guidance line says what to have ready. Placeholders are example answers in the reader's words. +- An icon is one name from this list, chosen for what the reader is doing, or empty: house, building-2, store, school, map-pin, route, footprints, trees, leaf, snowflake, sun, users, user, user-plus, user-check, baby, heart-handshake, hand-helping, handshake, smile, mail, phone, message-circle, megaphone, bell, send, inbox, alert-triangle, siren, shield, construction, hammer, wrench, ruler, package, truck, car, bus, train-front, bike, calendar, clock, file-text, clipboard-list, receipt, wallet, coins, banknote, credit-card, key, lock, search, star, gift, shopping-cart, lightbulb, flag, thumbs-up, check-circle, briefcase, stethoscope, activity, camera, pencil, refresh-cw, list, layers, vote, scale +- Write the way people in this trade and country actually speak. + +{ + "buckets": { + "frivillige": { + "description": "", + "heading": "", + "moves": { + "kontaktet->satt_opp": "satt_opp>", + "kontaktet->takket_nei": "takket_nei>", + "open->kontaktet": "kontaktet>", + "open->takket_nei": "takket_nei>" + } + } + }, + "confirm": "", + "description": "", + "links": {}, + "question": "" +} + +Reply with the JSON object only. + +=== REPLY === +```json +{ + "buckets": { + "frivillige": { + "description": "Alle som har sagt de vil hjelpe til på et arrangement eller en dugnad, og hvor langt du har kommet med å sette dem opp.", + "heading": "Frivillige som venter på oppgave", + "moves": { + "kontaktet->satt_opp": "Sett opp på oppgave", + "kontaktet->takket_nei": "Meld takket nei", + "open->kontaktet": "Merk som kontaktet", + "open->takket_nei": "Meld takket nei" + } + } + }, + "confirm": "Lagre", + "description": "Her holder du oversikt over alle som har meldt seg som frivillige, og setter dem opp på det som trengs.", + "links": {}, + "question": "Hvem kan jeg sette i sving nå?" +} +``` diff --git a/runs/tomtervel-cards-2026-09-23/llm/02-questions_bidra_index.yaml.md b/runs/tomtervel-cards-2026-09-23/llm/02-questions_bidra_index.yaml.md new file mode 100644 index 0000000..c795589 --- /dev/null +++ b/runs/tomtervel-cards-2026-09-23/llm/02-questions_bidra_index.yaml.md @@ -0,0 +1,206 @@ +You write the words for one page of a website for this business. + +Business: Tomter Vel +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. +Contact: Styret i Tomter Vel +Language to write in: nb + +Everyone the site serves: +- door medlem: for en husstand i Tomter som vil være med i velet, eller allerede er det; behind it: bli-medlem, endre-medlemskap +- door melde-fra: for noen som har sett noe i nabolaget som ikke er som det skal; behind it: trafikkfare, anleggsfeil +- door bidra: for noen som vil gjøre en innsats, eller si sin mening i en sak; behind it: horingsinnspill, hjelpe-til, komite +- door naboer: for en nabo som trenger en hånd, kan gi en, eller har noe å låne ut; behind it: trenger-hjelp, kan-hjelpe, dele-utstyr +- bli-medlem: en husstand i Tomter - wants: å bli medlem og få betalt kontingenten. Handled by kasserer. Stages: open -> betalt -> utmeldt. +- endre-medlemskap: et medlem som har flyttet, byttet e-post eller vil melde seg ut - wants: at velet har riktige opplysninger om dem. Handled by kasserer. Stages: open -> oppdatert. +- trafikkfare: en som har sett et farlig sted i trafikken - wants: at velet tar det opp med kommunen eller den som eier veien. Handled by trafikkomite. Stages: open -> tatt_opp -> ordnet -> avvist. +- anleggsfeil: en som ser at noe på lekeplassen eller stien er ødelagt - wants: at det blir fikset før noen skader seg. Handled by lekeplasskomite. Stages: open -> tatt_tak_i -> utbedret. +- horingsinnspill: en beboer som har en mening om en sak kommunen har på høring - wants: at velet tar det med i sitt svar. Handled by styret. Stages: open -> tatt_med -> ikke_tatt_med. +- hjelpe-til: en som vil hjelpe til på et arrangement eller en dugnad - wants: å bli satt opp på noe som passer dem. Handled by arrangementskomite. Stages: open -> kontaktet -> satt_opp -> takket_nei. +- komite: en som vil sitte i en komité - wants: en plass i den komiteen som driver med det de bryr seg om. Handled by styret. Stages: open -> plassert -> avslatt. +- trenger-hjelp: 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. Handled by nabohjelp. Stages: open -> formidlet -> ordnet -> ikke_lost. +- kan-hjelpe: en nabo som kan stille opp når noen trenger det - wants: å bli spurt når det passer. Handled by nabohjelp. Stages: open -> registrert -> trukket. +- dele-utstyr: en nabo som har noe å låne ut, eller trenger å låne noe - wants: et oppslag som naboene ser. Handled by styret. Stages: open -> lagt_ut -> tatt_ned. +- utlegg: en i en komité som har lagt ut for noe - wants: pengene tilbake. Handled by kasserer. Stages: open -> godkjent -> utbetalt -> avvist. + +The page: questions/bidra/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. +- The button says what pressing it does; the encouragement says what happens next or how little it takes; the form's guidance line says what to have ready. Placeholders are example answers in the reader's words. +- An icon is one name from this list, chosen for what the reader is doing, or empty: house, building-2, store, school, map-pin, route, footprints, trees, leaf, snowflake, sun, users, user, user-plus, user-check, baby, heart-handshake, hand-helping, handshake, smile, mail, phone, message-circle, megaphone, bell, send, inbox, alert-triangle, siren, shield, construction, hammer, wrench, ruler, package, truck, car, bus, train-front, bike, calendar, clock, file-text, clipboard-list, receipt, wallet, coins, banknote, credit-card, key, lock, search, star, gift, shopping-cart, lightbulb, flag, thumbs-up, check-circle, briefcase, stethoscope, activity, camera, pencil, refresh-cw, list, layers, vote, scale +- Write the way people in this trade and country actually speak. + +{ + "description": "", + "needs": { + "hjelpe-til": { + "button": "", + "description": "", + "encouragement": "", + "form_description": "", + "form_title": "", + "heading": "", + "hints": { + "hva": "", + "navn": "", + "telefon": "" + }, + "icon": "", + "labels": { + "hva": "", + "navn": "", + "telefon": "" + }, + "road_description": "", + "road_icon": "", + "road_title": "", + "who_description": "", + "who_icon": "", + "who_title": "" + }, + "horingsinnspill": { + "button": "", + "description": "", + "encouragement": "", + "form_description": "", + "form_title": "", + "heading": "", + "hints": { + "innspill": "", + "navn": "", + "sak": "" + }, + "icon": "", + "labels": { + "innspill": "", + "navn": "", + "sak": "" + }, + "road_description": "", + "road_icon": "", + "road_title": "", + "who_description": "", + "who_icon": "", + "who_title": "" + }, + "komite": { + "button": "", + "description": "", + "encouragement": "", + "form_description": "", + "form_title": "", + "heading": "", + "hints": { + "epost": "", + "komite": "", + "navn": "" + }, + "icon": "", + "labels": { + "epost": "", + "komite": "", + "navn": "" + }, + "road_description": "", + "road_icon": "", + "road_title": "", + "who_description": "", + "who_icon": "", + "who_title": "" + } + }, + "question": "" +} + +Reply with the JSON object only. + +=== REPLY === +```json +{ + "description": "Har du en time å gi, eller en mening om noe kommunen skal bestemme? Her finner du veien inn.", + "needs": { + "hjelpe-til": { + "button": "Meld deg", + "description": "Vi trenger folk på 17. mai, dugnader og andre arrangementer i løpet av året.", + "encouragement": "Bare si fra – vi finner noe som passer deg.", + "form_description": "Kort om hva du kan tenke deg å bidra med.", + "form_title": "Meld deg som hjelper", + "heading": "Bli med på et arrangement eller en dugnad", + "hints": { + "hva": "F.eks. rigge til 17. mai, kjøre bord på dugnad", + "navn": "Ola Nordmann", + "telefon": "123 45 678" + }, + "icon": "hand-helping", + "labels": { + "hva": "Hva vil du hjelpe til med?", + "navn": "Navn", + "telefon": "Telefon" + }, + "road_description": "Arrangementskomiteen tar kontakt med deg og setter deg opp på noe som passer. Passer det ikke akkurat da, sier du bare ifra.", + "road_icon": "calendar", + "road_title": "Slik går det videre", + "who_description": "Arrangementskomiteen leser dette, men du kan også nå styret på post@tomtervel.no i mellomtiden.", + "who_icon": "users", + "who_title": "Hvem leser dette" + }, + "horingsinnspill": { + "button": "Send innspill", + "description": "Har kommunen en sak på høring du mener noe om? Send det til oss, så tar vi det med i vårt svar.", + "encouragement": "Alle innspill blir lest før styret skriver høringssvaret.", + "form_description": "Skriv gjerne kort hvilken sak det gjelder og hva du mener.", + "form_title": "Send inn ditt innspill", + "heading": "Få din mening med i velets høringssvar", + "hints": { + "innspill": "F.eks. flere fartsdumper, bevare turstien", + "navn": "Ola Nordmann", + "sak": "F.eks. reguleringsplan for Tomterveien" + }, + "icon": "scale", + "labels": { + "innspill": "Hva mener du?", + "navn": "Navn", + "sak": "Hvilken sak gjelder det?" + }, + "road_description": "Styret samler innspillene og vurderer dem opp mot fristen for høringssvaret. Det som passer inn blir tatt med, resten blir ikke det.", + "road_icon": "file-text", + "road_title": "Slik går det videre", + "who_description": "Styret leser innspillet ditt, og du når dem på post@tomtervel.no om du lurer på noe.", + "who_icon": "users", + "who_title": "Hvem leser dette" + }, + "komite": { + "button": "Meld interesse", + "description": "Velet drives av sju komiteer på fritida. Er det noe du brenner for, er det plass til deg.", + "encouragement": "Vi tar kontakt for en prat om hva komiteen driver med.", + "form_description": "Fortell hvilken komité du har lyst til å være med i.", + "form_title": "Meld deg til en komité", + "heading": "Få en plass i komiteen du brenner for", + "hints": { + "epost": "ola@eksempel.no", + "komite": "F.eks. elvestien, lekeplassene, trafikk", + "navn": "Ola Nordmann" + }, + "icon": "users", + "labels": { + "epost": "E-post", + "komite": "Hvilken komité?", + "navn": "Navn" + }, + "road_description": "Styret tar kontakt og finner ut om det er plass i komiteen du ønsker deg til. Blir det ikke plass akkurat nå, får du beskjed om det også.", + "road_icon": "handshake", + "road_title": "Slik går det videre", + "who_description": "Styret leser meldingen din, og du når dem på post@tomtervel.no i mellomtiden.", + "who_icon": "users", + "who_title": "Hvem leser dette" + } + }, + "question": "Hvordan vil du bidra?" +} +``` diff --git a/runs/tomtervel-cards-2026-09-23/llm/03-questions_decide_dele-utstyr.yaml.md b/runs/tomtervel-cards-2026-09-23/llm/03-questions_decide_dele-utstyr.yaml.md new file mode 100644 index 0000000..21c5246 --- /dev/null +++ b/runs/tomtervel-cards-2026-09-23/llm/03-questions_decide_dele-utstyr.yaml.md @@ -0,0 +1,66 @@ +You write the words for one page of a website for this business. + +Business: Tomter Vel +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. +Contact: Styret i Tomter Vel +Language to write in: nb + +Everyone the site serves: +- door medlem: for en husstand i Tomter som vil være med i velet, eller allerede er det; behind it: bli-medlem, endre-medlemskap +- door melde-fra: for noen som har sett noe i nabolaget som ikke er som det skal; behind it: trafikkfare, anleggsfeil +- door bidra: for noen som vil gjøre en innsats, eller si sin mening i en sak; behind it: horingsinnspill, hjelpe-til, komite +- door naboer: for en nabo som trenger en hånd, kan gi en, eller har noe å låne ut; behind it: trenger-hjelp, kan-hjelpe, dele-utstyr +- bli-medlem: en husstand i Tomter - wants: å bli medlem og få betalt kontingenten. Handled by kasserer. Stages: open -> betalt -> utmeldt. +- endre-medlemskap: et medlem som har flyttet, byttet e-post eller vil melde seg ut - wants: at velet har riktige opplysninger om dem. Handled by kasserer. Stages: open -> oppdatert. +- trafikkfare: en som har sett et farlig sted i trafikken - wants: at velet tar det opp med kommunen eller den som eier veien. Handled by trafikkomite. Stages: open -> tatt_opp -> ordnet -> avvist. +- anleggsfeil: en som ser at noe på lekeplassen eller stien er ødelagt - wants: at det blir fikset før noen skader seg. Handled by lekeplasskomite. Stages: open -> tatt_tak_i -> utbedret. +- horingsinnspill: en beboer som har en mening om en sak kommunen har på høring - wants: at velet tar det med i sitt svar. Handled by styret. Stages: open -> tatt_med -> ikke_tatt_med. +- hjelpe-til: en som vil hjelpe til på et arrangement eller en dugnad - wants: å bli satt opp på noe som passer dem. Handled by arrangementskomite. Stages: open -> kontaktet -> satt_opp -> takket_nei. +- komite: en som vil sitte i en komité - wants: en plass i den komiteen som driver med det de bryr seg om. Handled by styret. Stages: open -> plassert -> avslatt. +- trenger-hjelp: 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. Handled by nabohjelp. Stages: open -> formidlet -> ordnet -> ikke_lost. +- kan-hjelpe: en nabo som kan stille opp når noen trenger det - wants: å bli spurt når det passer. Handled by nabohjelp. Stages: open -> registrert -> trukket. +- dele-utstyr: en nabo som har noe å låne ut, eller trenger å låne noe - wants: et oppslag som naboene ser. Handled by styret. Stages: open -> lagt_ut -> tatt_ned. +- utlegg: en i en komité som har lagt ut for noe - wants: pengene tilbake. Handled by kasserer. Stages: open -> godkjent -> utbetalt -> avvist. + +The page: questions/decide/dele-utstyr.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. +- The button says what pressing it does; the encouragement says what happens next or how little it takes; the form's guidance line says what to have ready. Placeholders are example answers in the reader's words. +- An icon is one name from this list, chosen for what the reader is doing, or empty: house, building-2, store, school, map-pin, route, footprints, trees, leaf, snowflake, sun, users, user, user-plus, user-check, baby, heart-handshake, hand-helping, handshake, smile, mail, phone, message-circle, megaphone, bell, send, inbox, alert-triangle, siren, shield, construction, hammer, wrench, ruler, package, truck, car, bus, train-front, bike, calendar, clock, file-text, clipboard-list, receipt, wallet, coins, banknote, credit-card, key, lock, search, star, gift, shopping-cart, lightbulb, flag, thumbs-up, check-circle, briefcase, stethoscope, activity, camera, pencil, refresh-cw, list, layers, vote, scale +- Write the way people in this trade and country actually speak. + +{ + "description": "", + "moves": { + "tatt_ned": { + "button": "", + "description": "", + "heading": "" + } + }, + "question": "" +} + +Reply with the JSON object only. + +=== REPLY === +```json +{ + "description": "Utstyret er lånt ut, og oppslaget kan tas bort fra siden.", + "moves": { + "tatt_ned": { + "button": "Ta ned oppslaget", + "description": "Oppslaget forsvinner fra siden med det samme.", + "heading": "Fjern oppslaget når det er ordnet" + } + }, + "question": "Skal oppslaget tas ned?" +} +``` diff --git a/runs/tomtervel-cards-2026-09-23/llm/04-questions_decide_kan-hjelpe.yaml.md b/runs/tomtervel-cards-2026-09-23/llm/04-questions_decide_kan-hjelpe.yaml.md new file mode 100644 index 0000000..3d0de4a --- /dev/null +++ b/runs/tomtervel-cards-2026-09-23/llm/04-questions_decide_kan-hjelpe.yaml.md @@ -0,0 +1,66 @@ +You write the words for one page of a website for this business. + +Business: Tomter Vel +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. +Contact: Styret i Tomter Vel +Language to write in: nb + +Everyone the site serves: +- door medlem: for en husstand i Tomter som vil være med i velet, eller allerede er det; behind it: bli-medlem, endre-medlemskap +- door melde-fra: for noen som har sett noe i nabolaget som ikke er som det skal; behind it: trafikkfare, anleggsfeil +- door bidra: for noen som vil gjøre en innsats, eller si sin mening i en sak; behind it: horingsinnspill, hjelpe-til, komite +- door naboer: for en nabo som trenger en hånd, kan gi en, eller har noe å låne ut; behind it: trenger-hjelp, kan-hjelpe, dele-utstyr +- bli-medlem: en husstand i Tomter - wants: å bli medlem og få betalt kontingenten. Handled by kasserer. Stages: open -> betalt -> utmeldt. +- endre-medlemskap: et medlem som har flyttet, byttet e-post eller vil melde seg ut - wants: at velet har riktige opplysninger om dem. Handled by kasserer. Stages: open -> oppdatert. +- trafikkfare: en som har sett et farlig sted i trafikken - wants: at velet tar det opp med kommunen eller den som eier veien. Handled by trafikkomite. Stages: open -> tatt_opp -> ordnet -> avvist. +- anleggsfeil: en som ser at noe på lekeplassen eller stien er ødelagt - wants: at det blir fikset før noen skader seg. Handled by lekeplasskomite. Stages: open -> tatt_tak_i -> utbedret. +- horingsinnspill: en beboer som har en mening om en sak kommunen har på høring - wants: at velet tar det med i sitt svar. Handled by styret. Stages: open -> tatt_med -> ikke_tatt_med. +- hjelpe-til: en som vil hjelpe til på et arrangement eller en dugnad - wants: å bli satt opp på noe som passer dem. Handled by arrangementskomite. Stages: open -> kontaktet -> satt_opp -> takket_nei. +- komite: en som vil sitte i en komité - wants: en plass i den komiteen som driver med det de bryr seg om. Handled by styret. Stages: open -> plassert -> avslatt. +- trenger-hjelp: 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. Handled by nabohjelp. Stages: open -> formidlet -> ordnet -> ikke_lost. +- kan-hjelpe: en nabo som kan stille opp når noen trenger det - wants: å bli spurt når det passer. Handled by nabohjelp. Stages: open -> registrert -> trukket. +- dele-utstyr: en nabo som har noe å låne ut, eller trenger å låne noe - wants: et oppslag som naboene ser. Handled by styret. Stages: open -> lagt_ut -> tatt_ned. +- utlegg: en i en komité som har lagt ut for noe - wants: pengene tilbake. Handled by kasserer. Stages: open -> godkjent -> utbetalt -> avvist. + +The page: questions/decide/kan-hjelpe.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. +- The button says what pressing it does; the encouragement says what happens next or how little it takes; the form's guidance line says what to have ready. Placeholders are example answers in the reader's words. +- An icon is one name from this list, chosen for what the reader is doing, or empty: house, building-2, store, school, map-pin, route, footprints, trees, leaf, snowflake, sun, users, user, user-plus, user-check, baby, heart-handshake, hand-helping, handshake, smile, mail, phone, message-circle, megaphone, bell, send, inbox, alert-triangle, siren, shield, construction, hammer, wrench, ruler, package, truck, car, bus, train-front, bike, calendar, clock, file-text, clipboard-list, receipt, wallet, coins, banknote, credit-card, key, lock, search, star, gift, shopping-cart, lightbulb, flag, thumbs-up, check-circle, briefcase, stethoscope, activity, camera, pencil, refresh-cw, list, layers, vote, scale +- Write the way people in this trade and country actually speak. + +{ + "description": "", + "moves": { + "trukket": { + "button": "", + "description": "", + "heading": "" + } + }, + "question": "" +} + +Reply with the JSON object only. + +=== REPLY === +```json +{ + "description": "En nabo har meldt seg som kan-hjelpe. Her kan de trekke seg fra listen når de ikke lenger har anledning.", + "moves": { + "trukket": { + "button": "Trekk meg fra listen", + "description": "Du blir ikke spurt om å hjelpe til lenger. Du kan melde deg på igjen når som helst.", + "heading": "Ta deg av listen over de som kan hjelpe" + } + }, + "question": "Vil du fortsatt stå på listen over naboer som kan hjelpe?" +} +``` diff --git a/runs/tomtervel-cards-2026-09-23/llm/05-questions_decide_trenger-hjelp.yaml.md b/runs/tomtervel-cards-2026-09-23/llm/05-questions_decide_trenger-hjelp.yaml.md new file mode 100644 index 0000000..337d8cf --- /dev/null +++ b/runs/tomtervel-cards-2026-09-23/llm/05-questions_decide_trenger-hjelp.yaml.md @@ -0,0 +1,66 @@ +You write the words for one page of a website for this business. + +Business: Tomter Vel +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. +Contact: Styret i Tomter Vel +Language to write in: nb + +Everyone the site serves: +- door medlem: for en husstand i Tomter som vil være med i velet, eller allerede er det; behind it: bli-medlem, endre-medlemskap +- door melde-fra: for noen som har sett noe i nabolaget som ikke er som det skal; behind it: trafikkfare, anleggsfeil +- door bidra: for noen som vil gjøre en innsats, eller si sin mening i en sak; behind it: horingsinnspill, hjelpe-til, komite +- door naboer: for en nabo som trenger en hånd, kan gi en, eller har noe å låne ut; behind it: trenger-hjelp, kan-hjelpe, dele-utstyr +- bli-medlem: en husstand i Tomter - wants: å bli medlem og få betalt kontingenten. Handled by kasserer. Stages: open -> betalt -> utmeldt. +- endre-medlemskap: et medlem som har flyttet, byttet e-post eller vil melde seg ut - wants: at velet har riktige opplysninger om dem. Handled by kasserer. Stages: open -> oppdatert. +- trafikkfare: en som har sett et farlig sted i trafikken - wants: at velet tar det opp med kommunen eller den som eier veien. Handled by trafikkomite. Stages: open -> tatt_opp -> ordnet -> avvist. +- anleggsfeil: en som ser at noe på lekeplassen eller stien er ødelagt - wants: at det blir fikset før noen skader seg. Handled by lekeplasskomite. Stages: open -> tatt_tak_i -> utbedret. +- horingsinnspill: en beboer som har en mening om en sak kommunen har på høring - wants: at velet tar det med i sitt svar. Handled by styret. Stages: open -> tatt_med -> ikke_tatt_med. +- hjelpe-til: en som vil hjelpe til på et arrangement eller en dugnad - wants: å bli satt opp på noe som passer dem. Handled by arrangementskomite. Stages: open -> kontaktet -> satt_opp -> takket_nei. +- komite: en som vil sitte i en komité - wants: en plass i den komiteen som driver med det de bryr seg om. Handled by styret. Stages: open -> plassert -> avslatt. +- trenger-hjelp: 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. Handled by nabohjelp. Stages: open -> formidlet -> ordnet -> ikke_lost. +- kan-hjelpe: en nabo som kan stille opp når noen trenger det - wants: å bli spurt når det passer. Handled by nabohjelp. Stages: open -> registrert -> trukket. +- dele-utstyr: en nabo som har noe å låne ut, eller trenger å låne noe - wants: et oppslag som naboene ser. Handled by styret. Stages: open -> lagt_ut -> tatt_ned. +- utlegg: en i en komité som har lagt ut for noe - wants: pengene tilbake. Handled by kasserer. Stages: open -> godkjent -> utbetalt -> avvist. + +The page: questions/decide/trenger-hjelp.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. +- The button says what pressing it does; the encouragement says what happens next or how little it takes; the form's guidance line says what to have ready. Placeholders are example answers in the reader's words. +- An icon is one name from this list, chosen for what the reader is doing, or empty: house, building-2, store, school, map-pin, route, footprints, trees, leaf, snowflake, sun, users, user, user-plus, user-check, baby, heart-handshake, hand-helping, handshake, smile, mail, phone, message-circle, megaphone, bell, send, inbox, alert-triangle, siren, shield, construction, hammer, wrench, ruler, package, truck, car, bus, train-front, bike, calendar, clock, file-text, clipboard-list, receipt, wallet, coins, banknote, credit-card, key, lock, search, star, gift, shopping-cart, lightbulb, flag, thumbs-up, check-circle, briefcase, stethoscope, activity, camera, pencil, refresh-cw, list, layers, vote, scale +- Write the way people in this trade and country actually speak. + +{ + "description": "", + "moves": { + "ordnet": { + "button": "", + "description": "", + "heading": "" + } + }, + "question": "" +} + +Reply with the JSON object only. + +=== REPLY === +```json +{ + "description": "Her sier du fra om at naboen fikk hjelp, slik at saken kan avsluttes.", + "moves": { + "ordnet": { + "button": "Meld ordnet", + "description": "Da vet vi at hjelpen kom fram, og saken lukkes.", + "heading": "Fikk du hjelpen du trengte?" + } + }, + "question": "Ble hjelpen ordnet?" +} +``` diff --git a/runs/tomtervel-cards-2026-09-23/llm/06-questions_index.yaml.md b/runs/tomtervel-cards-2026-09-23/llm/06-questions_index.yaml.md new file mode 100644 index 0000000..6a577d5 --- /dev/null +++ b/runs/tomtervel-cards-2026-09-23/llm/06-questions_index.yaml.md @@ -0,0 +1,114 @@ +You write the words for one page of a website for this business. + +Business: Tomter Vel +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. +Contact: Styret i Tomter Vel +Language to write in: nb + +Everyone the site serves: +- door medlem: for en husstand i Tomter som vil være med i velet, eller allerede er det; behind it: bli-medlem, endre-medlemskap +- door melde-fra: for noen som har sett noe i nabolaget som ikke er som det skal; behind it: trafikkfare, anleggsfeil +- door bidra: for noen som vil gjøre en innsats, eller si sin mening i en sak; behind it: horingsinnspill, hjelpe-til, komite +- door naboer: for en nabo som trenger en hånd, kan gi en, eller har noe å låne ut; behind it: trenger-hjelp, kan-hjelpe, dele-utstyr +- bli-medlem: en husstand i Tomter - wants: å bli medlem og få betalt kontingenten. Handled by kasserer. Stages: open -> betalt -> utmeldt. +- endre-medlemskap: et medlem som har flyttet, byttet e-post eller vil melde seg ut - wants: at velet har riktige opplysninger om dem. Handled by kasserer. Stages: open -> oppdatert. +- trafikkfare: en som har sett et farlig sted i trafikken - wants: at velet tar det opp med kommunen eller den som eier veien. Handled by trafikkomite. Stages: open -> tatt_opp -> ordnet -> avvist. +- anleggsfeil: en som ser at noe på lekeplassen eller stien er ødelagt - wants: at det blir fikset før noen skader seg. Handled by lekeplasskomite. Stages: open -> tatt_tak_i -> utbedret. +- horingsinnspill: en beboer som har en mening om en sak kommunen har på høring - wants: at velet tar det med i sitt svar. Handled by styret. Stages: open -> tatt_med -> ikke_tatt_med. +- hjelpe-til: en som vil hjelpe til på et arrangement eller en dugnad - wants: å bli satt opp på noe som passer dem. Handled by arrangementskomite. Stages: open -> kontaktet -> satt_opp -> takket_nei. +- komite: en som vil sitte i en komité - wants: en plass i den komiteen som driver med det de bryr seg om. Handled by styret. Stages: open -> plassert -> avslatt. +- trenger-hjelp: 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. Handled by nabohjelp. Stages: open -> formidlet -> ordnet -> ikke_lost. +- kan-hjelpe: en nabo som kan stille opp når noen trenger det - wants: å bli spurt når det passer. Handled by nabohjelp. Stages: open -> registrert -> trukket. +- dele-utstyr: en nabo som har noe å låne ut, eller trenger å låne noe - wants: et oppslag som naboene ser. Handled by styret. Stages: open -> lagt_ut -> tatt_ned. +- utlegg: en i en komité som har lagt ut for noe - wants: pengene tilbake. Handled by kasserer. Stages: open -> godkjent -> utbetalt -> avvist. + +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. +- The button says what pressing it does; the encouragement says what happens next or how little it takes; the form's guidance line says what to have ready. Placeholders are example answers in the reader's words. +- An icon is one name from this list, chosen for what the reader is doing, or empty: house, building-2, store, school, map-pin, route, footprints, trees, leaf, snowflake, sun, users, user, user-plus, user-check, baby, heart-handshake, hand-helping, handshake, smile, mail, phone, message-circle, megaphone, bell, send, inbox, alert-triangle, siren, shield, construction, hammer, wrench, ruler, package, truck, car, bus, train-front, bike, calendar, clock, file-text, clipboard-list, receipt, wallet, coins, banknote, credit-card, key, lock, search, star, gift, shopping-cart, lightbulb, flag, thumbs-up, check-circle, briefcase, stethoscope, activity, camera, pencil, refresh-cw, list, layers, vote, scale +- Write the way people in this trade and country actually speak. + +{ + "description": "", + "doors": { + "bidra": { + "button": "", + "description": "", + "for_whom": "", + "heading": "", + "icon": "" + }, + "medlem": { + "button": "", + "description": "", + "for_whom": "", + "heading": "", + "icon": "" + }, + "melde-fra": { + "button": "", + "description": "", + "for_whom": "", + "heading": "", + "icon": "" + }, + "naboer": { + "button": "", + "description": "", + "for_whom": "", + "heading": "", + "icon": "" + } + }, + "needs": {}, + "question": "" +} + +Reply with the JSON object only. + +=== REPLY === +```json +{ + "description": "Tomter Vel er velforeningen for alle husstander i Tomter. Finn ut hva du trenger her.", + "doors": { + "bidra": { + "button": "Bidra", + "description": "Har du en mening om en sak, eller lyst til å stille opp for nabolaget? Her kan du si ifra eller melde deg.", + "for_whom": "for deg som vil gjøre en innsats", + "heading": "Si din mening eller gi en hånd", + "icon": "hand-helping" + }, + "medlem": { + "button": "Bli medlem", + "description": "Meld deg inn i Tomter Vel, eller gi oss beskjed om noe har endret seg hos deg.", + "for_whom": "for deg som bor i Tomter", + "heading": "Bli medlem eller endre opplysningene dine", + "icon": "users" + }, + "melde-fra": { + "button": "Meld fra", + "description": "Har du sett noe farlig i trafikken eller noe som er ødelagt på lekeplassen eller stien? Gi oss beskjed.", + "for_whom": "for deg som har sett noe i nabolaget", + "heading": "Meld fra om noe som ikke er som det skal", + "icon": "alert-triangle" + }, + "naboer": { + "button": "Til naboer", + "description": "Trenger du en hånd, kan du stille opp for andre, eller har du noe å låne ut? Her møtes naboer.", + "for_whom": "for deg som vil hjelpe eller trenger hjelp", + "heading": "Få hjelp fra naboer, eller gi en hånd", + "icon": "heart-handshake" + } + }, + "needs": {}, + "question": "Hva vil du gjøre i dag?" +} +``` diff --git a/runs/tomtervel-cards-2026-09-23/llm/07-questions_kasserer_index.yaml.md b/runs/tomtervel-cards-2026-09-23/llm/07-questions_kasserer_index.yaml.md new file mode 100644 index 0000000..67dfc82 --- /dev/null +++ b/runs/tomtervel-cards-2026-09-23/llm/07-questions_kasserer_index.yaml.md @@ -0,0 +1,110 @@ +You write the words for one page of a website for this business. + +Business: Tomter Vel +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. +Contact: Styret i Tomter Vel +Language to write in: nb + +Everyone the site serves: +- door medlem: for en husstand i Tomter som vil være med i velet, eller allerede er det; behind it: bli-medlem, endre-medlemskap +- door melde-fra: for noen som har sett noe i nabolaget som ikke er som det skal; behind it: trafikkfare, anleggsfeil +- door bidra: for noen som vil gjøre en innsats, eller si sin mening i en sak; behind it: horingsinnspill, hjelpe-til, komite +- door naboer: for en nabo som trenger en hånd, kan gi en, eller har noe å låne ut; behind it: trenger-hjelp, kan-hjelpe, dele-utstyr +- bli-medlem: en husstand i Tomter - wants: å bli medlem og få betalt kontingenten. Handled by kasserer. Stages: open -> betalt -> utmeldt. +- endre-medlemskap: et medlem som har flyttet, byttet e-post eller vil melde seg ut - wants: at velet har riktige opplysninger om dem. Handled by kasserer. Stages: open -> oppdatert. +- trafikkfare: en som har sett et farlig sted i trafikken - wants: at velet tar det opp med kommunen eller den som eier veien. Handled by trafikkomite. Stages: open -> tatt_opp -> ordnet -> avvist. +- anleggsfeil: en som ser at noe på lekeplassen eller stien er ødelagt - wants: at det blir fikset før noen skader seg. Handled by lekeplasskomite. Stages: open -> tatt_tak_i -> utbedret. +- horingsinnspill: en beboer som har en mening om en sak kommunen har på høring - wants: at velet tar det med i sitt svar. Handled by styret. Stages: open -> tatt_med -> ikke_tatt_med. +- hjelpe-til: en som vil hjelpe til på et arrangement eller en dugnad - wants: å bli satt opp på noe som passer dem. Handled by arrangementskomite. Stages: open -> kontaktet -> satt_opp -> takket_nei. +- komite: en som vil sitte i en komité - wants: en plass i den komiteen som driver med det de bryr seg om. Handled by styret. Stages: open -> plassert -> avslatt. +- trenger-hjelp: 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. Handled by nabohjelp. Stages: open -> formidlet -> ordnet -> ikke_lost. +- kan-hjelpe: en nabo som kan stille opp når noen trenger det - wants: å bli spurt når det passer. Handled by nabohjelp. Stages: open -> registrert -> trukket. +- dele-utstyr: en nabo som har noe å låne ut, eller trenger å låne noe - wants: et oppslag som naboene ser. Handled by styret. Stages: open -> lagt_ut -> tatt_ned. +- utlegg: en i en komité som har lagt ut for noe - wants: pengene tilbake. Handled by kasserer. Stages: open -> godkjent -> utbetalt -> avvist. + +The page: questions/kasserer/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. +- The button says what pressing it does; the encouragement says what happens next or how little it takes; the form's guidance line says what to have ready. Placeholders are example answers in the reader's words. +- An icon is one name from this list, chosen for what the reader is doing, or empty: house, building-2, store, school, map-pin, route, footprints, trees, leaf, snowflake, sun, users, user, user-plus, user-check, baby, heart-handshake, hand-helping, handshake, smile, mail, phone, message-circle, megaphone, bell, send, inbox, alert-triangle, siren, shield, construction, hammer, wrench, ruler, package, truck, car, bus, train-front, bike, calendar, clock, file-text, clipboard-list, receipt, wallet, coins, banknote, credit-card, key, lock, search, star, gift, shopping-cart, lightbulb, flag, thumbs-up, check-circle, briefcase, stethoscope, activity, camera, pencil, refresh-cw, list, layers, vote, scale +- Write the way people in this trade and country actually speak. + +{ + "buckets": { + "husstander": { + "description": "", + "heading": "", + "moves": { + "open->betalt": "betalt>", + "open->utmeldt": "utmeldt>" + } + }, + "medlemsendringer": { + "description": "", + "heading": "", + "moves": { + "open->oppdatert": "oppdatert>" + } + }, + "utlegg": { + "description": "", + "heading": "", + "moves": { + "godkjent->avvist": "avvist>", + "godkjent->utbetalt": "utbetalt>", + "open->avvist": "avvist>", + "open->godkjent": "godkjent>" + } + } + }, + "confirm": "", + "description": "", + "links": {}, + "question": "" +} + +Reply with the JSON object only. + +=== REPLY === +```json +{ + "buckets": { + "husstander": { + "description": "Husstander som har meldt seg inn og venter på at kontingenten blir registrert.", + "heading": "Husstander som skal bli medlemmer", + "moves": { + "open->betalt": "Merk som betalt", + "open->utmeldt": "Meld ut" + } + }, + "medlemsendringer": { + "description": "Medlemmer som har flyttet, byttet e-post eller vil ut av velet.", + "heading": "Opplysninger som skal oppdateres", + "moves": { + "open->oppdatert": "Merk som oppdatert" + } + }, + "utlegg": { + "description": "Utlegg fra komiteene som venter på godkjenning eller utbetaling.", + "heading": "Utlegg som skal gjøres opp", + "moves": { + "godkjent->avvist": "Avvis likevel", + "godkjent->utbetalt": "Merk som utbetalt", + "open->avvist": "Avvis utlegget", + "open->godkjent": "Godkjenn utlegget" + } + } + }, + "confirm": "Lagre", + "description": "Her holder du oversikt over husstandene, medlemsendringene og utleggene som venter på deg som kasserer.", + "links": {}, + "question": "Hva står for tur hos kassereren?" +} +``` diff --git a/runs/tomtervel-cards-2026-09-23/llm/08-questions_komiteer_index.yaml.md b/runs/tomtervel-cards-2026-09-23/llm/08-questions_komiteer_index.yaml.md new file mode 100644 index 0000000..4469ace --- /dev/null +++ b/runs/tomtervel-cards-2026-09-23/llm/08-questions_komiteer_index.yaml.md @@ -0,0 +1,70 @@ +You write the words for one page of a website for this business. + +Business: Tomter Vel +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. +Contact: Styret i Tomter Vel +Language to write in: nb + +Everyone the site serves: +- door medlem: for en husstand i Tomter som vil være med i velet, eller allerede er det; behind it: bli-medlem, endre-medlemskap +- door melde-fra: for noen som har sett noe i nabolaget som ikke er som det skal; behind it: trafikkfare, anleggsfeil +- door bidra: for noen som vil gjøre en innsats, eller si sin mening i en sak; behind it: horingsinnspill, hjelpe-til, komite +- door naboer: for en nabo som trenger en hånd, kan gi en, eller har noe å låne ut; behind it: trenger-hjelp, kan-hjelpe, dele-utstyr +- bli-medlem: en husstand i Tomter - wants: å bli medlem og få betalt kontingenten. Handled by kasserer. Stages: open -> betalt -> utmeldt. +- endre-medlemskap: et medlem som har flyttet, byttet e-post eller vil melde seg ut - wants: at velet har riktige opplysninger om dem. Handled by kasserer. Stages: open -> oppdatert. +- trafikkfare: en som har sett et farlig sted i trafikken - wants: at velet tar det opp med kommunen eller den som eier veien. Handled by trafikkomite. Stages: open -> tatt_opp -> ordnet -> avvist. +- anleggsfeil: en som ser at noe på lekeplassen eller stien er ødelagt - wants: at det blir fikset før noen skader seg. Handled by lekeplasskomite. Stages: open -> tatt_tak_i -> utbedret. +- horingsinnspill: en beboer som har en mening om en sak kommunen har på høring - wants: at velet tar det med i sitt svar. Handled by styret. Stages: open -> tatt_med -> ikke_tatt_med. +- hjelpe-til: en som vil hjelpe til på et arrangement eller en dugnad - wants: å bli satt opp på noe som passer dem. Handled by arrangementskomite. Stages: open -> kontaktet -> satt_opp -> takket_nei. +- komite: en som vil sitte i en komité - wants: en plass i den komiteen som driver med det de bryr seg om. Handled by styret. Stages: open -> plassert -> avslatt. +- trenger-hjelp: 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. Handled by nabohjelp. Stages: open -> formidlet -> ordnet -> ikke_lost. +- kan-hjelpe: en nabo som kan stille opp når noen trenger det - wants: å bli spurt når det passer. Handled by nabohjelp. Stages: open -> registrert -> trukket. +- dele-utstyr: en nabo som har noe å låne ut, eller trenger å låne noe - wants: et oppslag som naboene ser. Handled by styret. Stages: open -> lagt_ut -> tatt_ned. +- utlegg: en i en komité som har lagt ut for noe - wants: pengene tilbake. Handled by kasserer. Stages: open -> godkjent -> utbetalt -> avvist. + +The page: questions/komiteer/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. +- The button says what pressing it does; the encouragement says what happens next or how little it takes; the form's guidance line says what to have ready. Placeholders are example answers in the reader's words. +- An icon is one name from this list, chosen for what the reader is doing, or empty: house, building-2, store, school, map-pin, route, footprints, trees, leaf, snowflake, sun, users, user, user-plus, user-check, baby, heart-handshake, hand-helping, handshake, smile, mail, phone, message-circle, megaphone, bell, send, inbox, alert-triangle, siren, shield, construction, hammer, wrench, ruler, package, truck, car, bus, train-front, bike, calendar, clock, file-text, clipboard-list, receipt, wallet, coins, banknote, credit-card, key, lock, search, star, gift, shopping-cart, lightbulb, flag, thumbs-up, check-circle, briefcase, stethoscope, activity, camera, pencil, refresh-cw, list, layers, vote, scale +- Write the way people in this trade and country actually speak. + +{ + "buckets": {}, + "confirm": "", + "description": "", + "links": { + "utlegg": { + "button": "", + "description": "", + "heading": "" + } + }, + "question": "" +} + +Reply with the JSON object only. + +=== REPLY === +```json +{ + "buckets": {}, + "confirm": "Registrer", + "description": "Her har komiteen sine saker samlet, sortert etter hvor de står i behandlingen.", + "links": { + "utlegg": { + "button": "Send utlegg", + "description": "Har du lagt ut for noe til komiteen? Send det inn og få pengene tilbake fra kasserer.", + "heading": "Få tilbake det du har lagt ut for" + } + }, + "question": "Hvor står sakene komiteen har ansvar for?" +} +``` diff --git a/runs/tomtervel-cards-2026-09-23/llm/09-questions_komiteer_utlegg-sent.yaml.md b/runs/tomtervel-cards-2026-09-23/llm/09-questions_komiteer_utlegg-sent.yaml.md new file mode 100644 index 0000000..871b4b0 --- /dev/null +++ b/runs/tomtervel-cards-2026-09-23/llm/09-questions_komiteer_utlegg-sent.yaml.md @@ -0,0 +1,58 @@ +You write the words for one page of a website for this business. + +Business: Tomter Vel +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. +Contact: Styret i Tomter Vel +Language to write in: nb + +Everyone the site serves: +- door medlem: for en husstand i Tomter som vil være med i velet, eller allerede er det; behind it: bli-medlem, endre-medlemskap +- door melde-fra: for noen som har sett noe i nabolaget som ikke er som det skal; behind it: trafikkfare, anleggsfeil +- door bidra: for noen som vil gjøre en innsats, eller si sin mening i en sak; behind it: horingsinnspill, hjelpe-til, komite +- door naboer: for en nabo som trenger en hånd, kan gi en, eller har noe å låne ut; behind it: trenger-hjelp, kan-hjelpe, dele-utstyr +- bli-medlem: en husstand i Tomter - wants: å bli medlem og få betalt kontingenten. Handled by kasserer. Stages: open -> betalt -> utmeldt. +- endre-medlemskap: et medlem som har flyttet, byttet e-post eller vil melde seg ut - wants: at velet har riktige opplysninger om dem. Handled by kasserer. Stages: open -> oppdatert. +- trafikkfare: en som har sett et farlig sted i trafikken - wants: at velet tar det opp med kommunen eller den som eier veien. Handled by trafikkomite. Stages: open -> tatt_opp -> ordnet -> avvist. +- anleggsfeil: en som ser at noe på lekeplassen eller stien er ødelagt - wants: at det blir fikset før noen skader seg. Handled by lekeplasskomite. Stages: open -> tatt_tak_i -> utbedret. +- horingsinnspill: en beboer som har en mening om en sak kommunen har på høring - wants: at velet tar det med i sitt svar. Handled by styret. Stages: open -> tatt_med -> ikke_tatt_med. +- hjelpe-til: en som vil hjelpe til på et arrangement eller en dugnad - wants: å bli satt opp på noe som passer dem. Handled by arrangementskomite. Stages: open -> kontaktet -> satt_opp -> takket_nei. +- komite: en som vil sitte i en komité - wants: en plass i den komiteen som driver med det de bryr seg om. Handled by styret. Stages: open -> plassert -> avslatt. +- trenger-hjelp: 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. Handled by nabohjelp. Stages: open -> formidlet -> ordnet -> ikke_lost. +- kan-hjelpe: en nabo som kan stille opp når noen trenger det - wants: å bli spurt når det passer. Handled by nabohjelp. Stages: open -> registrert -> trukket. +- dele-utstyr: en nabo som har noe å låne ut, eller trenger å låne noe - wants: et oppslag som naboene ser. Handled by styret. Stages: open -> lagt_ut -> tatt_ned. +- utlegg: en i en komité som har lagt ut for noe - wants: pengene tilbake. Handled by kasserer. Stages: open -> godkjent -> utbetalt -> avvist. + +The page: questions/komiteer/utlegg-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. +- The button says what pressing it does; the encouragement says what happens next or how little it takes; the form's guidance line says what to have ready. Placeholders are example answers in the reader's words. +- An icon is one name from this list, chosen for what the reader is doing, or empty: house, building-2, store, school, map-pin, route, footprints, trees, leaf, snowflake, sun, users, user, user-plus, user-check, baby, heart-handshake, hand-helping, handshake, smile, mail, phone, message-circle, megaphone, bell, send, inbox, alert-triangle, siren, shield, construction, hammer, wrench, ruler, package, truck, car, bus, train-front, bike, calendar, clock, file-text, clipboard-list, receipt, wallet, coins, banknote, credit-card, key, lock, search, star, gift, shopping-cart, lightbulb, flag, thumbs-up, check-circle, briefcase, stethoscope, activity, camera, pencil, refresh-cw, list, layers, vote, scale +- Write the way people in this trade and country actually speak. + +{ + "back": "", + "description": "", + "next_description": "", + "next_heading": "", + "question": "" +} + +Reply with the JSON object only. + +=== REPLY === +```json +{ + "back": "Tilbake til forsiden", + "description": "Takk for at du sender inn utlegget. Kasserer får beskjed og tar det videre.", + "next_description": "Kasserer ser gjennom bilag og kontonummer, og setter i gang utbetalingen når det er godkjent.", + "next_heading": "Kasserer sjekker og betaler ut", + "question": "Hva skjer med utlegget mitt nå?" +} +``` diff --git a/runs/tomtervel-cards-2026-09-23/llm/10-questions_komiteer_utlegg.yaml.md b/runs/tomtervel-cards-2026-09-23/llm/10-questions_komiteer_utlegg.yaml.md new file mode 100644 index 0000000..89d51cd --- /dev/null +++ b/runs/tomtervel-cards-2026-09-23/llm/10-questions_komiteer_utlegg.yaml.md @@ -0,0 +1,98 @@ +You write the words for one page of a website for this business. + +Business: Tomter Vel +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. +Contact: Styret i Tomter Vel +Language to write in: nb + +Everyone the site serves: +- door medlem: for en husstand i Tomter som vil være med i velet, eller allerede er det; behind it: bli-medlem, endre-medlemskap +- door melde-fra: for noen som har sett noe i nabolaget som ikke er som det skal; behind it: trafikkfare, anleggsfeil +- door bidra: for noen som vil gjøre en innsats, eller si sin mening i en sak; behind it: horingsinnspill, hjelpe-til, komite +- door naboer: for en nabo som trenger en hånd, kan gi en, eller har noe å låne ut; behind it: trenger-hjelp, kan-hjelpe, dele-utstyr +- bli-medlem: en husstand i Tomter - wants: å bli medlem og få betalt kontingenten. Handled by kasserer. Stages: open -> betalt -> utmeldt. +- endre-medlemskap: et medlem som har flyttet, byttet e-post eller vil melde seg ut - wants: at velet har riktige opplysninger om dem. Handled by kasserer. Stages: open -> oppdatert. +- trafikkfare: en som har sett et farlig sted i trafikken - wants: at velet tar det opp med kommunen eller den som eier veien. Handled by trafikkomite. Stages: open -> tatt_opp -> ordnet -> avvist. +- anleggsfeil: en som ser at noe på lekeplassen eller stien er ødelagt - wants: at det blir fikset før noen skader seg. Handled by lekeplasskomite. Stages: open -> tatt_tak_i -> utbedret. +- horingsinnspill: en beboer som har en mening om en sak kommunen har på høring - wants: at velet tar det med i sitt svar. Handled by styret. Stages: open -> tatt_med -> ikke_tatt_med. +- hjelpe-til: en som vil hjelpe til på et arrangement eller en dugnad - wants: å bli satt opp på noe som passer dem. Handled by arrangementskomite. Stages: open -> kontaktet -> satt_opp -> takket_nei. +- komite: en som vil sitte i en komité - wants: en plass i den komiteen som driver med det de bryr seg om. Handled by styret. Stages: open -> plassert -> avslatt. +- trenger-hjelp: 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. Handled by nabohjelp. Stages: open -> formidlet -> ordnet -> ikke_lost. +- kan-hjelpe: en nabo som kan stille opp når noen trenger det - wants: å bli spurt når det passer. Handled by nabohjelp. Stages: open -> registrert -> trukket. +- dele-utstyr: en nabo som har noe å låne ut, eller trenger å låne noe - wants: et oppslag som naboene ser. Handled by styret. Stages: open -> lagt_ut -> tatt_ned. +- utlegg: en i en komité som har lagt ut for noe - wants: pengene tilbake. Handled by kasserer. Stages: open -> godkjent -> utbetalt -> avvist. + +The page: questions/komiteer/utlegg.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. +- The button says what pressing it does; the encouragement says what happens next or how little it takes; the form's guidance line says what to have ready. Placeholders are example answers in the reader's words. +- An icon is one name from this list, chosen for what the reader is doing, or empty: house, building-2, store, school, map-pin, route, footprints, trees, leaf, snowflake, sun, users, user, user-plus, user-check, baby, heart-handshake, hand-helping, handshake, smile, mail, phone, message-circle, megaphone, bell, send, inbox, alert-triangle, siren, shield, construction, hammer, wrench, ruler, package, truck, car, bus, train-front, bike, calendar, clock, file-text, clipboard-list, receipt, wallet, coins, banknote, credit-card, key, lock, search, star, gift, shopping-cart, lightbulb, flag, thumbs-up, check-circle, briefcase, stethoscope, activity, camera, pencil, refresh-cw, list, layers, vote, scale +- Write the way people in this trade and country actually speak. + +{ + "button": "", + "description": "", + "encouragement": "", + "form_description": "", + "form_title": "", + "heading": "", + "hints": { + "belop": "", + "hva": "", + "navn": "" + }, + "icon": "", + "labels": { + "belop": "", + "hva": "", + "navn": "" + }, + "page_description": "", + "question": "", + "road_description": "", + "road_icon": "", + "road_title": "", + "who_description": "", + "who_icon": "", + "who_title": "" +} + +Reply with the JSON object only. + +=== REPLY === +```json +{ + "button": "Send utlegg", + "description": "Har du lagt ut for noe til et arrangement, dugnad eller annet i regi av velet? Send inn så får du pengene tilbake.", + "encouragement": "Kasserer ser gjennom det og betaler ut så snart det er godkjent.", + "form_description": "Ha gjerne kvittering eller bilag klart, så går utbetalingen raskere.", + "form_title": "Legg ut for utgift", + "heading": "Få tilbake det du har lagt ut", + "hints": { + "belop": "450 kr", + "hva": "Kaffe og kaker til dugnaden på lekeplassen", + "navn": "Kari Nordmann" + }, + "icon": "receipt", + "labels": { + "belop": "Beløp", + "hva": "Hva gjaldt det", + "navn": "Navn" + }, + "page_description": "Har du betalt noe av egen lomme for en komité i Tomter Vel? Her melder du inn utlegget, så ordner kasserer resten.", + "question": "Har du lagt ut penger for velet som du skal ha tilbake?", + "road_description": "Utlegget går til kasserer, som godkjenner det og betaler ut. Skulle det ikke la seg godkjenne, får du beskjed om det også.", + "road_icon": "coins", + "road_title": "Fra melding til utbetaling", + "who_description": "Kasserer i Tomter Vel leser meldingen og kan nås på post@tomtervel.no i mellomtiden.", + "who_icon": "wallet", + "who_title": "Kasserer har saken" +} +``` diff --git a/runs/tomtervel-cards-2026-09-23/llm/11-questions_lekeplasskomite_index.yaml.md b/runs/tomtervel-cards-2026-09-23/llm/11-questions_lekeplasskomite_index.yaml.md new file mode 100644 index 0000000..881882f --- /dev/null +++ b/runs/tomtervel-cards-2026-09-23/llm/11-questions_lekeplasskomite_index.yaml.md @@ -0,0 +1,76 @@ +You write the words for one page of a website for this business. + +Business: Tomter Vel +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. +Contact: Styret i Tomter Vel +Language to write in: nb + +Everyone the site serves: +- door medlem: for en husstand i Tomter som vil være med i velet, eller allerede er det; behind it: bli-medlem, endre-medlemskap +- door melde-fra: for noen som har sett noe i nabolaget som ikke er som det skal; behind it: trafikkfare, anleggsfeil +- door bidra: for noen som vil gjøre en innsats, eller si sin mening i en sak; behind it: horingsinnspill, hjelpe-til, komite +- door naboer: for en nabo som trenger en hånd, kan gi en, eller har noe å låne ut; behind it: trenger-hjelp, kan-hjelpe, dele-utstyr +- bli-medlem: en husstand i Tomter - wants: å bli medlem og få betalt kontingenten. Handled by kasserer. Stages: open -> betalt -> utmeldt. +- endre-medlemskap: et medlem som har flyttet, byttet e-post eller vil melde seg ut - wants: at velet har riktige opplysninger om dem. Handled by kasserer. Stages: open -> oppdatert. +- trafikkfare: en som har sett et farlig sted i trafikken - wants: at velet tar det opp med kommunen eller den som eier veien. Handled by trafikkomite. Stages: open -> tatt_opp -> ordnet -> avvist. +- anleggsfeil: en som ser at noe på lekeplassen eller stien er ødelagt - wants: at det blir fikset før noen skader seg. Handled by lekeplasskomite. Stages: open -> tatt_tak_i -> utbedret. +- horingsinnspill: en beboer som har en mening om en sak kommunen har på høring - wants: at velet tar det med i sitt svar. Handled by styret. Stages: open -> tatt_med -> ikke_tatt_med. +- hjelpe-til: en som vil hjelpe til på et arrangement eller en dugnad - wants: å bli satt opp på noe som passer dem. Handled by arrangementskomite. Stages: open -> kontaktet -> satt_opp -> takket_nei. +- komite: en som vil sitte i en komité - wants: en plass i den komiteen som driver med det de bryr seg om. Handled by styret. Stages: open -> plassert -> avslatt. +- trenger-hjelp: 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. Handled by nabohjelp. Stages: open -> formidlet -> ordnet -> ikke_lost. +- kan-hjelpe: en nabo som kan stille opp når noen trenger det - wants: å bli spurt når det passer. Handled by nabohjelp. Stages: open -> registrert -> trukket. +- dele-utstyr: en nabo som har noe å låne ut, eller trenger å låne noe - wants: et oppslag som naboene ser. Handled by styret. Stages: open -> lagt_ut -> tatt_ned. +- utlegg: en i en komité som har lagt ut for noe - wants: pengene tilbake. Handled by kasserer. Stages: open -> godkjent -> utbetalt -> avvist. + +The page: questions/lekeplasskomite/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. +- The button says what pressing it does; the encouragement says what happens next or how little it takes; the form's guidance line says what to have ready. Placeholders are example answers in the reader's words. +- An icon is one name from this list, chosen for what the reader is doing, or empty: house, building-2, store, school, map-pin, route, footprints, trees, leaf, snowflake, sun, users, user, user-plus, user-check, baby, heart-handshake, hand-helping, handshake, smile, mail, phone, message-circle, megaphone, bell, send, inbox, alert-triangle, siren, shield, construction, hammer, wrench, ruler, package, truck, car, bus, train-front, bike, calendar, clock, file-text, clipboard-list, receipt, wallet, coins, banknote, credit-card, key, lock, search, star, gift, shopping-cart, lightbulb, flag, thumbs-up, check-circle, briefcase, stethoscope, activity, camera, pencil, refresh-cw, list, layers, vote, scale +- Write the way people in this trade and country actually speak. + +{ + "buckets": { + "anleggsfeil": { + "description": "", + "heading": "", + "moves": { + "open->tatt_tak_i": "tatt_tak_i>", + "tatt_tak_i->utbedret": "utbedret>" + } + } + }, + "confirm": "", + "description": "", + "links": {}, + "question": "" +} + +Reply with the JSON object only. + +=== REPLY === +```json +{ + "buckets": { + "anleggsfeil": { + "description": "Meldinger om noe som er ødelagt på lekeplassen eller stien, og som bør fikses før noen skader seg.", + "heading": "Meldinger om lekeplass og sti", + "moves": { + "open->tatt_tak_i": "Ta tak i saken", + "tatt_tak_i->utbedret": "Merk som utbedret" + } + } + }, + "confirm": "Lagre", + "description": "Her holder du oversikt over meldinger om lekeplassene og stien, og følger dem opp til de er utbedret.", + "links": {}, + "question": "Hva må fikses på lekeplassene og stien nå?" +} +``` diff --git a/runs/tomtervel-cards-2026-09-23/llm/12-questions_medlem_index.yaml.md b/runs/tomtervel-cards-2026-09-23/llm/12-questions_medlem_index.yaml.md new file mode 100644 index 0000000..0ceac95 --- /dev/null +++ b/runs/tomtervel-cards-2026-09-23/llm/12-questions_medlem_index.yaml.md @@ -0,0 +1,160 @@ +You write the words for one page of a website for this business. + +Business: Tomter Vel +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. +Contact: Styret i Tomter Vel +Language to write in: nb + +Everyone the site serves: +- door medlem: for en husstand i Tomter som vil være med i velet, eller allerede er det; behind it: bli-medlem, endre-medlemskap +- door melde-fra: for noen som har sett noe i nabolaget som ikke er som det skal; behind it: trafikkfare, anleggsfeil +- door bidra: for noen som vil gjøre en innsats, eller si sin mening i en sak; behind it: horingsinnspill, hjelpe-til, komite +- door naboer: for en nabo som trenger en hånd, kan gi en, eller har noe å låne ut; behind it: trenger-hjelp, kan-hjelpe, dele-utstyr +- bli-medlem: en husstand i Tomter - wants: å bli medlem og få betalt kontingenten. Handled by kasserer. Stages: open -> betalt -> utmeldt. +- endre-medlemskap: et medlem som har flyttet, byttet e-post eller vil melde seg ut - wants: at velet har riktige opplysninger om dem. Handled by kasserer. Stages: open -> oppdatert. +- trafikkfare: en som har sett et farlig sted i trafikken - wants: at velet tar det opp med kommunen eller den som eier veien. Handled by trafikkomite. Stages: open -> tatt_opp -> ordnet -> avvist. +- anleggsfeil: en som ser at noe på lekeplassen eller stien er ødelagt - wants: at det blir fikset før noen skader seg. Handled by lekeplasskomite. Stages: open -> tatt_tak_i -> utbedret. +- horingsinnspill: en beboer som har en mening om en sak kommunen har på høring - wants: at velet tar det med i sitt svar. Handled by styret. Stages: open -> tatt_med -> ikke_tatt_med. +- hjelpe-til: en som vil hjelpe til på et arrangement eller en dugnad - wants: å bli satt opp på noe som passer dem. Handled by arrangementskomite. Stages: open -> kontaktet -> satt_opp -> takket_nei. +- komite: en som vil sitte i en komité - wants: en plass i den komiteen som driver med det de bryr seg om. Handled by styret. Stages: open -> plassert -> avslatt. +- trenger-hjelp: 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. Handled by nabohjelp. Stages: open -> formidlet -> ordnet -> ikke_lost. +- kan-hjelpe: en nabo som kan stille opp når noen trenger det - wants: å bli spurt når det passer. Handled by nabohjelp. Stages: open -> registrert -> trukket. +- dele-utstyr: en nabo som har noe å låne ut, eller trenger å låne noe - wants: et oppslag som naboene ser. Handled by styret. Stages: open -> lagt_ut -> tatt_ned. +- utlegg: en i en komité som har lagt ut for noe - wants: pengene tilbake. Handled by kasserer. Stages: open -> godkjent -> utbetalt -> avvist. + +The page: questions/medlem/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. +- The button says what pressing it does; the encouragement says what happens next or how little it takes; the form's guidance line says what to have ready. Placeholders are example answers in the reader's words. +- An icon is one name from this list, chosen for what the reader is doing, or empty: house, building-2, store, school, map-pin, route, footprints, trees, leaf, snowflake, sun, users, user, user-plus, user-check, baby, heart-handshake, hand-helping, handshake, smile, mail, phone, message-circle, megaphone, bell, send, inbox, alert-triangle, siren, shield, construction, hammer, wrench, ruler, package, truck, car, bus, train-front, bike, calendar, clock, file-text, clipboard-list, receipt, wallet, coins, banknote, credit-card, key, lock, search, star, gift, shopping-cart, lightbulb, flag, thumbs-up, check-circle, briefcase, stethoscope, activity, camera, pencil, refresh-cw, list, layers, vote, scale +- Write the way people in this trade and country actually speak. + +{ + "description": "", + "needs": { + "bli-medlem": { + "button": "", + "description": "", + "encouragement": "", + "form_description": "", + "form_title": "", + "heading": "", + "hints": { + "adresse": "", + "epost": "", + "navn": "", + "telefon": "" + }, + "icon": "", + "labels": { + "adresse": "", + "epost": "", + "navn": "", + "telefon": "" + }, + "road_description": "", + "road_icon": "", + "road_title": "", + "who_description": "", + "who_icon": "", + "who_title": "" + }, + "endre-medlemskap": { + "button": "", + "description": "", + "encouragement": "", + "form_description": "", + "form_title": "", + "heading": "", + "hints": { + "adresse": "", + "hva_er_nytt": "", + "navn": "" + }, + "icon": "", + "labels": { + "adresse": "", + "hva_er_nytt": "", + "navn": "" + }, + "road_description": "", + "road_icon": "", + "road_title": "", + "who_description": "", + "who_icon": "", + "who_title": "" + } + }, + "question": "" +} + +Reply with the JSON object only. + +=== REPLY === +```json +{ + "description": "Bli medlem, eller endre opplysningene dine hvis du allerede er det.", + "needs": { + "bli-medlem": { + "button": "Meld meg inn", + "description": "Meld deg inn i Tomter Vel, så tar vi vare på nabolaget sammen. Du får en giro på kontingenten når vi har registrert deg.", + "encouragement": "Det tar bare et minutt, resten ordner vi.", + "form_description": "Fyll ut det du vet, så gjør kasserer resten.", + "form_title": "Bli medlem", + "heading": "Bli medlem av velet", + "hints": { + "adresse": "Tomterveien 12", + "epost": "ola@eksempel.no", + "navn": "Ola Nordmann", + "telefon": "912 34 567" + }, + "icon": "user-plus", + "labels": { + "adresse": "Adresse", + "epost": "E-post", + "navn": "Navn", + "telefon": "Telefon" + }, + "road_description": "Vi registrerer deg og sender deg kontingenten. Når den er betalt, er du fullverdig medlem.", + "road_icon": "coins", + "road_title": "Fra innmelding til medlem", + "who_description": "Kasserer i styret leser dette og ordner giroen; du kan nå oss på post@tomtervel.no i mellomtiden.", + "who_icon": "mail", + "who_title": "Hvem leser dette" + }, + "endre-medlemskap": { + "button": "Send endring", + "description": "Har du flyttet, byttet e-post eller vil melde deg ut? Si fra her, så retter vi opp i listene våre.", + "encouragement": "Vi oppdaterer registeret så snart vi ser meldingen.", + "form_description": "Skriv hva som er nytt, så finner vi deg i registeret.", + "form_title": "Endre medlemskap", + "heading": "Oppdater opplysningene dine", + "hints": { + "adresse": "Tomterveien 12", + "hva_er_nytt": "Ny e-post, flyttet, eller vil melde meg ut", + "navn": "Ola Nordmann" + }, + "icon": "pencil", + "labels": { + "adresse": "Adresse", + "hva_er_nytt": "Hva vil du endre?", + "navn": "Navn" + }, + "road_description": "Vi retter opp i medlemslisten så fort meldingen kommer inn.", + "road_icon": "refresh-cw", + "road_title": "Slik oppdaterer vi", + "who_description": "Kasserer i styret leser dette og oppdaterer registeret; du kan nå oss på post@tomtervel.no i mellomtiden.", + "who_icon": "mail", + "who_title": "Hvem leser dette" + } + }, + "question": "Vil du bli medlem, eller endre opplysningene dine?" +} +``` diff --git a/runs/tomtervel-cards-2026-09-23/llm/13-questions_melde-fra_index.yaml.md b/runs/tomtervel-cards-2026-09-23/llm/13-questions_melde-fra_index.yaml.md new file mode 100644 index 0000000..cca2039 --- /dev/null +++ b/runs/tomtervel-cards-2026-09-23/llm/13-questions_melde-fra_index.yaml.md @@ -0,0 +1,152 @@ +You write the words for one page of a website for this business. + +Business: Tomter Vel +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. +Contact: Styret i Tomter Vel +Language to write in: nb + +Everyone the site serves: +- door medlem: for en husstand i Tomter som vil være med i velet, eller allerede er det; behind it: bli-medlem, endre-medlemskap +- door melde-fra: for noen som har sett noe i nabolaget som ikke er som det skal; behind it: trafikkfare, anleggsfeil +- door bidra: for noen som vil gjøre en innsats, eller si sin mening i en sak; behind it: horingsinnspill, hjelpe-til, komite +- door naboer: for en nabo som trenger en hånd, kan gi en, eller har noe å låne ut; behind it: trenger-hjelp, kan-hjelpe, dele-utstyr +- bli-medlem: en husstand i Tomter - wants: å bli medlem og få betalt kontingenten. Handled by kasserer. Stages: open -> betalt -> utmeldt. +- endre-medlemskap: et medlem som har flyttet, byttet e-post eller vil melde seg ut - wants: at velet har riktige opplysninger om dem. Handled by kasserer. Stages: open -> oppdatert. +- trafikkfare: en som har sett et farlig sted i trafikken - wants: at velet tar det opp med kommunen eller den som eier veien. Handled by trafikkomite. Stages: open -> tatt_opp -> ordnet -> avvist. +- anleggsfeil: en som ser at noe på lekeplassen eller stien er ødelagt - wants: at det blir fikset før noen skader seg. Handled by lekeplasskomite. Stages: open -> tatt_tak_i -> utbedret. +- horingsinnspill: en beboer som har en mening om en sak kommunen har på høring - wants: at velet tar det med i sitt svar. Handled by styret. Stages: open -> tatt_med -> ikke_tatt_med. +- hjelpe-til: en som vil hjelpe til på et arrangement eller en dugnad - wants: å bli satt opp på noe som passer dem. Handled by arrangementskomite. Stages: open -> kontaktet -> satt_opp -> takket_nei. +- komite: en som vil sitte i en komité - wants: en plass i den komiteen som driver med det de bryr seg om. Handled by styret. Stages: open -> plassert -> avslatt. +- trenger-hjelp: 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. Handled by nabohjelp. Stages: open -> formidlet -> ordnet -> ikke_lost. +- kan-hjelpe: en nabo som kan stille opp når noen trenger det - wants: å bli spurt når det passer. Handled by nabohjelp. Stages: open -> registrert -> trukket. +- dele-utstyr: en nabo som har noe å låne ut, eller trenger å låne noe - wants: et oppslag som naboene ser. Handled by styret. Stages: open -> lagt_ut -> tatt_ned. +- utlegg: en i en komité som har lagt ut for noe - wants: pengene tilbake. Handled by kasserer. Stages: open -> godkjent -> utbetalt -> avvist. + +The page: questions/melde-fra/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. +- The button says what pressing it does; the encouragement says what happens next or how little it takes; the form's guidance line says what to have ready. Placeholders are example answers in the reader's words. +- An icon is one name from this list, chosen for what the reader is doing, or empty: house, building-2, store, school, map-pin, route, footprints, trees, leaf, snowflake, sun, users, user, user-plus, user-check, baby, heart-handshake, hand-helping, handshake, smile, mail, phone, message-circle, megaphone, bell, send, inbox, alert-triangle, siren, shield, construction, hammer, wrench, ruler, package, truck, car, bus, train-front, bike, calendar, clock, file-text, clipboard-list, receipt, wallet, coins, banknote, credit-card, key, lock, search, star, gift, shopping-cart, lightbulb, flag, thumbs-up, check-circle, briefcase, stethoscope, activity, camera, pencil, refresh-cw, list, layers, vote, scale +- Write the way people in this trade and country actually speak. + +{ + "description": "", + "needs": { + "anleggsfeil": { + "button": "", + "description": "", + "encouragement": "", + "form_description": "", + "form_title": "", + "heading": "", + "hints": { + "hva": "", + "hvor": "" + }, + "icon": "", + "labels": { + "hva": "", + "hvor": "" + }, + "road_description": "", + "road_icon": "", + "road_title": "", + "who_description": "", + "who_icon": "", + "who_title": "" + }, + "trafikkfare": { + "button": "", + "description": "", + "encouragement": "", + "form_description": "", + "form_title": "", + "heading": "", + "hints": { + "epost": "", + "hva": "", + "hvor": "" + }, + "icon": "", + "labels": { + "epost": "", + "hva": "", + "hvor": "" + }, + "road_description": "", + "road_icon": "", + "road_title": "", + "who_description": "", + "who_icon": "", + "who_title": "" + } + }, + "question": "" +} + +Reply with the JSON object only. + +=== REPLY === +```json +{ + "description": "Sett du noe i nabolaget som ikke er som det skal? Gi oss beskjed, så følger vi det opp.", + "needs": { + "anleggsfeil": { + "button": "Meld fra", + "description": "Er noe på lekeplassen eller stien ødelagt eller farlig? Fortell oss hvor og hva, så tar lekeplasskomiteen tak i det.", + "encouragement": "Det holder med noen få ord, så ser komiteen på det så fort de kan.", + "form_description": "Beskriv hva du så og hvor det er, så finner vi det raskt.", + "form_title": "Meld fra om skade", + "heading": "Få fikset noe som er ødelagt", + "hints": { + "hva": "Løs planke i klatrestativet", + "hvor": "Lekeplassen ved Solbakken" + }, + "icon": "construction", + "labels": { + "hva": "Hva har du sett?", + "hvor": "Hvor er det?" + }, + "road_description": "Meldingen går til lekeplasskomiteen, som tar tak i saken og utbedrer skaden.", + "road_icon": "wrench", + "road_title": "Hva skjer videre", + "who_description": "Lekeplasskomiteen leser det du sender inn; til det haster kan du nå styret på post@tomtervel.no.", + "who_icon": "hammer", + "who_title": "Hvem ser dette" + }, + "trafikkfare": { + "button": "Meld fra", + "description": "Har du sett et farlig sted i trafikken, som dårlig sikt eller en vei uten fortau? Fortell oss om det, så tar vi det videre med kommunen.", + "encouragement": "Det tar bare et minutt, og trafikkomiteen ser på alle meldinger som kommer inn.", + "form_description": "Fortell hva du har sett og hvor, så vi kan finne stedet.", + "form_title": "Meld fra om trafikkfare", + "heading": "Gjør trafikken tryggere der du bor", + "hints": { + "epost": "navn@epost.no", + "hva": "Dårlig sikt i krysset, mange kjører fort", + "hvor": "Krysset ved Tomterveien og Kirkeveien" + }, + "icon": "alert-triangle", + "labels": { + "epost": "E-post", + "hva": "Hva har du sett?", + "hvor": "Hvor er det?" + }, + "road_description": "Trafikkomiteen tar saken opp med kommunen eller den som eier veien, og følger den til den er ordnet eller avvist.", + "road_icon": "route", + "road_title": "Hva skjer videre", + "who_description": "Trafikkomiteen leser det du sender inn, og kan svare deg på e-posten du oppgir.", + "who_icon": "car", + "who_title": "Hvem ser dette" + } + }, + "question": "Har du sett noe i nabolaget som bør meldes fra om?" +} +``` diff --git a/runs/tomtervel-cards-2026-09-23/llm/14-questions_naboer_index.yaml.md b/runs/tomtervel-cards-2026-09-23/llm/14-questions_naboer_index.yaml.md new file mode 100644 index 0000000..9b35b8c --- /dev/null +++ b/runs/tomtervel-cards-2026-09-23/llm/14-questions_naboer_index.yaml.md @@ -0,0 +1,222 @@ +You write the words for one page of a website for this business. + +Business: Tomter Vel +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. +Contact: Styret i Tomter Vel +Language to write in: nb + +Everyone the site serves: +- door medlem: for en husstand i Tomter som vil være med i velet, eller allerede er det; behind it: bli-medlem, endre-medlemskap +- door melde-fra: for noen som har sett noe i nabolaget som ikke er som det skal; behind it: trafikkfare, anleggsfeil +- door bidra: for noen som vil gjøre en innsats, eller si sin mening i en sak; behind it: horingsinnspill, hjelpe-til, komite +- door naboer: for en nabo som trenger en hånd, kan gi en, eller har noe å låne ut; behind it: trenger-hjelp, kan-hjelpe, dele-utstyr +- bli-medlem: en husstand i Tomter - wants: å bli medlem og få betalt kontingenten. Handled by kasserer. Stages: open -> betalt -> utmeldt. +- endre-medlemskap: et medlem som har flyttet, byttet e-post eller vil melde seg ut - wants: at velet har riktige opplysninger om dem. Handled by kasserer. Stages: open -> oppdatert. +- trafikkfare: en som har sett et farlig sted i trafikken - wants: at velet tar det opp med kommunen eller den som eier veien. Handled by trafikkomite. Stages: open -> tatt_opp -> ordnet -> avvist. +- anleggsfeil: en som ser at noe på lekeplassen eller stien er ødelagt - wants: at det blir fikset før noen skader seg. Handled by lekeplasskomite. Stages: open -> tatt_tak_i -> utbedret. +- horingsinnspill: en beboer som har en mening om en sak kommunen har på høring - wants: at velet tar det med i sitt svar. Handled by styret. Stages: open -> tatt_med -> ikke_tatt_med. +- hjelpe-til: en som vil hjelpe til på et arrangement eller en dugnad - wants: å bli satt opp på noe som passer dem. Handled by arrangementskomite. Stages: open -> kontaktet -> satt_opp -> takket_nei. +- komite: en som vil sitte i en komité - wants: en plass i den komiteen som driver med det de bryr seg om. Handled by styret. Stages: open -> plassert -> avslatt. +- trenger-hjelp: 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. Handled by nabohjelp. Stages: open -> formidlet -> ordnet -> ikke_lost. +- kan-hjelpe: en nabo som kan stille opp når noen trenger det - wants: å bli spurt når det passer. Handled by nabohjelp. Stages: open -> registrert -> trukket. +- dele-utstyr: en nabo som har noe å låne ut, eller trenger å låne noe - wants: et oppslag som naboene ser. Handled by styret. Stages: open -> lagt_ut -> tatt_ned. +- utlegg: en i en komité som har lagt ut for noe - wants: pengene tilbake. Handled by kasserer. Stages: open -> godkjent -> utbetalt -> avvist. + +The page: questions/naboer/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. +- The button says what pressing it does; the encouragement says what happens next or how little it takes; the form's guidance line says what to have ready. Placeholders are example answers in the reader's words. +- An icon is one name from this list, chosen for what the reader is doing, or empty: house, building-2, store, school, map-pin, route, footprints, trees, leaf, snowflake, sun, users, user, user-plus, user-check, baby, heart-handshake, hand-helping, handshake, smile, mail, phone, message-circle, megaphone, bell, send, inbox, alert-triangle, siren, shield, construction, hammer, wrench, ruler, package, truck, car, bus, train-front, bike, calendar, clock, file-text, clipboard-list, receipt, wallet, coins, banknote, credit-card, key, lock, search, star, gift, shopping-cart, lightbulb, flag, thumbs-up, check-circle, briefcase, stethoscope, activity, camera, pencil, refresh-cw, list, layers, vote, scale +- Write the way people in this trade and country actually speak. + +{ + "description": "", + "needs": { + "dele-utstyr": { + "button": "", + "description": "", + "encouragement": "", + "form_description": "", + "form_title": "", + "heading": "", + "hints": { + "email": "", + "har_eller_trenger": "", + "hva": "", + "navn": "" + }, + "icon": "", + "labels": { + "email": "", + "har_eller_trenger": "", + "hva": "", + "navn": "" + }, + "road_description": "", + "road_icon": "", + "road_title": "", + "who_description": "", + "who_icon": "", + "who_title": "" + }, + "kan-hjelpe": { + "button": "", + "description": "", + "encouragement": "", + "form_description": "", + "form_title": "", + "heading": "", + "hints": { + "email": "", + "kan": "", + "navn": "", + "telefon": "" + }, + "icon": "", + "labels": { + "email": "", + "kan": "", + "navn": "", + "telefon": "" + }, + "road_description": "", + "road_icon": "", + "road_title": "", + "who_description": "", + "who_icon": "", + "who_title": "" + }, + "trenger-hjelp": { + "button": "", + "description": "", + "encouragement": "", + "form_description": "", + "form_title": "", + "heading": "", + "hints": { + "adresse": "", + "email": "", + "hva": "", + "navn": "", + "telefon": "" + }, + "icon": "", + "labels": { + "adresse": "", + "email": "", + "hva": "", + "navn": "", + "telefon": "" + }, + "road_description": "", + "road_icon": "", + "road_title": "", + "who_description": "", + "who_icon": "", + "who_title": "" + } + }, + "question": "" +} + +Reply with the JSON object only. + +=== REPLY === +```json +{ + "description": "Naboer stiller opp for hverandre – med snømåking, handling, skyss eller utlån av det du har for mye av.", + "needs": { + "dele-utstyr": { + "button": "Legg ut", + "description": "Har du noe naboene kan låne, eller trenger du å låne noe selv? Legg ut et oppslag så ser de andre i Tomter det.", + "encouragement": "Oppslaget legges ut for naboene med det samme.", + "form_description": "Fortell kort hva det gjelder, så tar vi det videre.", + "form_title": "Lån eller utlån", + "heading": "Lån ut eller lån det naboene trenger", + "hints": { + "email": "ola@eksempel.no", + "har_eller_trenger": "Har til utlån", + "hva": "Hengerlaget, står ledig i helgene", + "navn": "Ola Nordmann" + }, + "icon": "package", + "labels": { + "email": "E-post", + "har_eller_trenger": "Har du, eller trenger du?", + "hva": "Hva gjelder det?", + "navn": "Navn" + }, + "road_description": "Styret legger oppslaget ut for naboene. Når det du lånte bort er levert tilbake, eller du har fått låne det du trengte, tar vi det ned igjen.", + "road_icon": "list", + "road_title": "Slik går det videre", + "who_description": "Styret i Tomter Vel legger ut oppslaget, og du kan nå dem på post@tomtervel.no i mellomtiden.", + "who_icon": "users", + "who_title": "Hvem leser dette" + }, + "kan-hjelpe": { + "button": "Meld deg", + "description": "Meld deg som nabohjelp, så blir du spurt når noen i nærheten trenger en hånd.", + "encouragement": "Du blir bare spurt når det faktisk passer, og kan trekke deg når som helst.", + "form_description": "Si litt om hva du kan bidra med, så finner vi ut når det passer.", + "form_title": "Meld deg som nabohjelp", + "heading": "Bli spurt når en nabo trenger en hånd", + "hints": { + "email": "kari@eksempel.no", + "kan": "Måke snø, handle, kjøre noen et sted", + "navn": "Kari Nordmann", + "telefon": "912 34 567" + }, + "icon": "hand-helping", + "labels": { + "email": "E-post", + "kan": "Hva kan du hjelpe med?", + "navn": "Navn", + "telefon": "Telefon" + }, + "road_description": "Du blir registrert som nabohjelp, og nabohjelpkomiteen tar kontakt når det dukker opp noe som passer deg. Vil du trekke deg, er det bare å si fra.", + "road_icon": "user-check", + "road_title": "Slik går det videre", + "who_description": "Nabohjelp-komiteen holder oversikten, og du kan nå dem på post@tomtervel.no i mellomtiden.", + "who_icon": "heart-handshake", + "who_title": "Hvem leser dette" + }, + "trenger-hjelp": { + "button": "Be om hjelp", + "description": "Får du ikke til snømåking, handling eller en skyss akkurat nå? Si fra, så finner vi en nabo som kan stille opp.", + "encouragement": "Nabohjelpen ser på dette raskt og finner noen som kan hjelpe.", + "form_description": "Skriv hva du trenger hjelp med og når, så finner vi en nabo som passer.", + "form_title": "Be om nabohjelp", + "heading": "Få en nabo til å stille opp", + "hints": { + "adresse": "Tomterveien 12", + "email": "kari@eksempel.no", + "hva": "Trenger hjelp til å måke inngangspartiet", + "navn": "Kari Nordmann", + "telefon": "912 34 567" + }, + "icon": "hand-helping", + "labels": { + "adresse": "Adresse", + "email": "E-post", + "hva": "Hva trenger du hjelp til?", + "navn": "Navn", + "telefon": "Telefon" + }, + "road_description": "Nabohjelpen finner en nabo som kan stille opp, og setter dere i kontakt. Får dere ikke løst det, gir vi beskjed om det også.", + "road_icon": "handshake", + "road_title": "Slik går det videre", + "who_description": "Nabohjelp-komiteen leser dette og finner en nabo, og du kan nå dem på post@tomtervel.no i mellomtiden.", + "who_icon": "heart-handshake", + "who_title": "Hvem leser dette" + } + }, + "question": "Trenger du en hånd, eller kan du stille opp for en nabo?" +} +``` diff --git a/runs/tomtervel-cards-2026-09-23/llm/15-questions_nabohjelp_index.yaml.md b/runs/tomtervel-cards-2026-09-23/llm/15-questions_nabohjelp_index.yaml.md new file mode 100644 index 0000000..9a9efbf --- /dev/null +++ b/runs/tomtervel-cards-2026-09-23/llm/15-questions_nabohjelp_index.yaml.md @@ -0,0 +1,96 @@ +You write the words for one page of a website for this business. + +Business: Tomter Vel +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. +Contact: Styret i Tomter Vel +Language to write in: nb + +Everyone the site serves: +- door medlem: for en husstand i Tomter som vil være med i velet, eller allerede er det; behind it: bli-medlem, endre-medlemskap +- door melde-fra: for noen som har sett noe i nabolaget som ikke er som det skal; behind it: trafikkfare, anleggsfeil +- door bidra: for noen som vil gjøre en innsats, eller si sin mening i en sak; behind it: horingsinnspill, hjelpe-til, komite +- door naboer: for en nabo som trenger en hånd, kan gi en, eller har noe å låne ut; behind it: trenger-hjelp, kan-hjelpe, dele-utstyr +- bli-medlem: en husstand i Tomter - wants: å bli medlem og få betalt kontingenten. Handled by kasserer. Stages: open -> betalt -> utmeldt. +- endre-medlemskap: et medlem som har flyttet, byttet e-post eller vil melde seg ut - wants: at velet har riktige opplysninger om dem. Handled by kasserer. Stages: open -> oppdatert. +- trafikkfare: en som har sett et farlig sted i trafikken - wants: at velet tar det opp med kommunen eller den som eier veien. Handled by trafikkomite. Stages: open -> tatt_opp -> ordnet -> avvist. +- anleggsfeil: en som ser at noe på lekeplassen eller stien er ødelagt - wants: at det blir fikset før noen skader seg. Handled by lekeplasskomite. Stages: open -> tatt_tak_i -> utbedret. +- horingsinnspill: en beboer som har en mening om en sak kommunen har på høring - wants: at velet tar det med i sitt svar. Handled by styret. Stages: open -> tatt_med -> ikke_tatt_med. +- hjelpe-til: en som vil hjelpe til på et arrangement eller en dugnad - wants: å bli satt opp på noe som passer dem. Handled by arrangementskomite. Stages: open -> kontaktet -> satt_opp -> takket_nei. +- komite: en som vil sitte i en komité - wants: en plass i den komiteen som driver med det de bryr seg om. Handled by styret. Stages: open -> plassert -> avslatt. +- trenger-hjelp: 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. Handled by nabohjelp. Stages: open -> formidlet -> ordnet -> ikke_lost. +- kan-hjelpe: en nabo som kan stille opp når noen trenger det - wants: å bli spurt når det passer. Handled by nabohjelp. Stages: open -> registrert -> trukket. +- dele-utstyr: en nabo som har noe å låne ut, eller trenger å låne noe - wants: et oppslag som naboene ser. Handled by styret. Stages: open -> lagt_ut -> tatt_ned. +- utlegg: en i en komité som har lagt ut for noe - wants: pengene tilbake. Handled by kasserer. Stages: open -> godkjent -> utbetalt -> avvist. + +The page: questions/nabohjelp/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. +- The button says what pressing it does; the encouragement says what happens next or how little it takes; the form's guidance line says what to have ready. Placeholders are example answers in the reader's words. +- An icon is one name from this list, chosen for what the reader is doing, or empty: house, building-2, store, school, map-pin, route, footprints, trees, leaf, snowflake, sun, users, user, user-plus, user-check, baby, heart-handshake, hand-helping, handshake, smile, mail, phone, message-circle, megaphone, bell, send, inbox, alert-triangle, siren, shield, construction, hammer, wrench, ruler, package, truck, car, bus, train-front, bike, calendar, clock, file-text, clipboard-list, receipt, wallet, coins, banknote, credit-card, key, lock, search, star, gift, shopping-cart, lightbulb, flag, thumbs-up, check-circle, briefcase, stethoscope, activity, camera, pencil, refresh-cw, list, layers, vote, scale +- Write the way people in this trade and country actually speak. + +{ + "buckets": { + "hjelpebehov": { + "description": "", + "heading": "", + "moves": { + "formidlet->ikke_lost": "ikke_lost>", + "formidlet->ordnet": "ordnet>", + "open->formidlet": "formidlet>", + "open->ikke_lost": "ikke_lost>" + } + }, + "hjelpere": { + "description": "", + "heading": "", + "moves": { + "open->registrert": "registrert>", + "open->trukket": "trukket>" + } + } + }, + "confirm": "", + "description": "", + "links": {}, + "question": "" +} + +Reply with the JSON object only. + +=== REPLY === +```json +{ + "buckets": { + "hjelpebehov": { + "description": "Her ser du hvem som trenger en hånd, og kan sette dem i kontakt med en nabo som stiller opp.", + "heading": "Naboer som trenger en hånd", + "moves": { + "formidlet->ikke_lost": "Fant ingen løsning", + "formidlet->ordnet": "Marker som ordnet", + "open->formidlet": "Sett i kontakt med nabo", + "open->ikke_lost": "Fant ingen løsning" + } + }, + "hjelpere": { + "description": "Her ser du naboene som har sagt de kan stille opp, klare til å spørres når noen trenger hjelp.", + "heading": "Naboer som kan stille opp", + "moves": { + "open->registrert": "Registrer som hjelper", + "open->trukket": "Fjern fra listen" + } + } + }, + "confirm": "Lagre", + "description": "Sett naboer som trenger en hånd i kontakt med naboer som kan gi en.", + "links": {}, + "question": "Hvem trenger hjelp, og hvem kan gi en?" +} +``` diff --git a/runs/tomtervel-cards-2026-09-23/llm/16-questions_received_anleggsfeil.yaml.md b/runs/tomtervel-cards-2026-09-23/llm/16-questions_received_anleggsfeil.yaml.md new file mode 100644 index 0000000..e842006 --- /dev/null +++ b/runs/tomtervel-cards-2026-09-23/llm/16-questions_received_anleggsfeil.yaml.md @@ -0,0 +1,58 @@ +You write the words for one page of a website for this business. + +Business: Tomter Vel +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. +Contact: Styret i Tomter Vel +Language to write in: nb + +Everyone the site serves: +- door medlem: for en husstand i Tomter som vil være med i velet, eller allerede er det; behind it: bli-medlem, endre-medlemskap +- door melde-fra: for noen som har sett noe i nabolaget som ikke er som det skal; behind it: trafikkfare, anleggsfeil +- door bidra: for noen som vil gjøre en innsats, eller si sin mening i en sak; behind it: horingsinnspill, hjelpe-til, komite +- door naboer: for en nabo som trenger en hånd, kan gi en, eller har noe å låne ut; behind it: trenger-hjelp, kan-hjelpe, dele-utstyr +- bli-medlem: en husstand i Tomter - wants: å bli medlem og få betalt kontingenten. Handled by kasserer. Stages: open -> betalt -> utmeldt. +- endre-medlemskap: et medlem som har flyttet, byttet e-post eller vil melde seg ut - wants: at velet har riktige opplysninger om dem. Handled by kasserer. Stages: open -> oppdatert. +- trafikkfare: en som har sett et farlig sted i trafikken - wants: at velet tar det opp med kommunen eller den som eier veien. Handled by trafikkomite. Stages: open -> tatt_opp -> ordnet -> avvist. +- anleggsfeil: en som ser at noe på lekeplassen eller stien er ødelagt - wants: at det blir fikset før noen skader seg. Handled by lekeplasskomite. Stages: open -> tatt_tak_i -> utbedret. +- horingsinnspill: en beboer som har en mening om en sak kommunen har på høring - wants: at velet tar det med i sitt svar. Handled by styret. Stages: open -> tatt_med -> ikke_tatt_med. +- hjelpe-til: en som vil hjelpe til på et arrangement eller en dugnad - wants: å bli satt opp på noe som passer dem. Handled by arrangementskomite. Stages: open -> kontaktet -> satt_opp -> takket_nei. +- komite: en som vil sitte i en komité - wants: en plass i den komiteen som driver med det de bryr seg om. Handled by styret. Stages: open -> plassert -> avslatt. +- trenger-hjelp: 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. Handled by nabohjelp. Stages: open -> formidlet -> ordnet -> ikke_lost. +- kan-hjelpe: en nabo som kan stille opp når noen trenger det - wants: å bli spurt når det passer. Handled by nabohjelp. Stages: open -> registrert -> trukket. +- dele-utstyr: en nabo som har noe å låne ut, eller trenger å låne noe - wants: et oppslag som naboene ser. Handled by styret. Stages: open -> lagt_ut -> tatt_ned. +- utlegg: en i en komité som har lagt ut for noe - wants: pengene tilbake. Handled by kasserer. Stages: open -> godkjent -> utbetalt -> avvist. + +The page: questions/received/anleggsfeil.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. +- The button says what pressing it does; the encouragement says what happens next or how little it takes; the form's guidance line says what to have ready. Placeholders are example answers in the reader's words. +- An icon is one name from this list, chosen for what the reader is doing, or empty: house, building-2, store, school, map-pin, route, footprints, trees, leaf, snowflake, sun, users, user, user-plus, user-check, baby, heart-handshake, hand-helping, handshake, smile, mail, phone, message-circle, megaphone, bell, send, inbox, alert-triangle, siren, shield, construction, hammer, wrench, ruler, package, truck, car, bus, train-front, bike, calendar, clock, file-text, clipboard-list, receipt, wallet, coins, banknote, credit-card, key, lock, search, star, gift, shopping-cart, lightbulb, flag, thumbs-up, check-circle, briefcase, stethoscope, activity, camera, pencil, refresh-cw, list, layers, vote, scale +- Write the way people in this trade and country actually speak. + +{ + "back": "", + "description": "", + "next_description": "", + "next_heading": "", + "question": "" +} + +Reply with the JSON object only. + +=== REPLY === +```json +{ + "back": "Til forsiden", + "description": "Meldingen din om skaden er sendt til lekeplasskomiteen.", + "next_description": "Komiteen ser på meldingen og avtaler hvem som tar tak i det.", + "next_heading": "Komiteen ser på saken", + "question": "Hva skjer med meldingen min nå?" +} +``` diff --git a/runs/tomtervel-cards-2026-09-23/llm/17-questions_received_bli-medlem.yaml.md b/runs/tomtervel-cards-2026-09-23/llm/17-questions_received_bli-medlem.yaml.md new file mode 100644 index 0000000..78a9068 --- /dev/null +++ b/runs/tomtervel-cards-2026-09-23/llm/17-questions_received_bli-medlem.yaml.md @@ -0,0 +1,58 @@ +You write the words for one page of a website for this business. + +Business: Tomter Vel +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. +Contact: Styret i Tomter Vel +Language to write in: nb + +Everyone the site serves: +- door medlem: for en husstand i Tomter som vil være med i velet, eller allerede er det; behind it: bli-medlem, endre-medlemskap +- door melde-fra: for noen som har sett noe i nabolaget som ikke er som det skal; behind it: trafikkfare, anleggsfeil +- door bidra: for noen som vil gjøre en innsats, eller si sin mening i en sak; behind it: horingsinnspill, hjelpe-til, komite +- door naboer: for en nabo som trenger en hånd, kan gi en, eller har noe å låne ut; behind it: trenger-hjelp, kan-hjelpe, dele-utstyr +- bli-medlem: en husstand i Tomter - wants: å bli medlem og få betalt kontingenten. Handled by kasserer. Stages: open -> betalt -> utmeldt. +- endre-medlemskap: et medlem som har flyttet, byttet e-post eller vil melde seg ut - wants: at velet har riktige opplysninger om dem. Handled by kasserer. Stages: open -> oppdatert. +- trafikkfare: en som har sett et farlig sted i trafikken - wants: at velet tar det opp med kommunen eller den som eier veien. Handled by trafikkomite. Stages: open -> tatt_opp -> ordnet -> avvist. +- anleggsfeil: en som ser at noe på lekeplassen eller stien er ødelagt - wants: at det blir fikset før noen skader seg. Handled by lekeplasskomite. Stages: open -> tatt_tak_i -> utbedret. +- horingsinnspill: en beboer som har en mening om en sak kommunen har på høring - wants: at velet tar det med i sitt svar. Handled by styret. Stages: open -> tatt_med -> ikke_tatt_med. +- hjelpe-til: en som vil hjelpe til på et arrangement eller en dugnad - wants: å bli satt opp på noe som passer dem. Handled by arrangementskomite. Stages: open -> kontaktet -> satt_opp -> takket_nei. +- komite: en som vil sitte i en komité - wants: en plass i den komiteen som driver med det de bryr seg om. Handled by styret. Stages: open -> plassert -> avslatt. +- trenger-hjelp: 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. Handled by nabohjelp. Stages: open -> formidlet -> ordnet -> ikke_lost. +- kan-hjelpe: en nabo som kan stille opp når noen trenger det - wants: å bli spurt når det passer. Handled by nabohjelp. Stages: open -> registrert -> trukket. +- dele-utstyr: en nabo som har noe å låne ut, eller trenger å låne noe - wants: et oppslag som naboene ser. Handled by styret. Stages: open -> lagt_ut -> tatt_ned. +- utlegg: en i en komité som har lagt ut for noe - wants: pengene tilbake. Handled by kasserer. Stages: open -> godkjent -> utbetalt -> avvist. + +The page: questions/received/bli-medlem.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. +- The button says what pressing it does; the encouragement says what happens next or how little it takes; the form's guidance line says what to have ready. Placeholders are example answers in the reader's words. +- An icon is one name from this list, chosen for what the reader is doing, or empty: house, building-2, store, school, map-pin, route, footprints, trees, leaf, snowflake, sun, users, user, user-plus, user-check, baby, heart-handshake, hand-helping, handshake, smile, mail, phone, message-circle, megaphone, bell, send, inbox, alert-triangle, siren, shield, construction, hammer, wrench, ruler, package, truck, car, bus, train-front, bike, calendar, clock, file-text, clipboard-list, receipt, wallet, coins, banknote, credit-card, key, lock, search, star, gift, shopping-cart, lightbulb, flag, thumbs-up, check-circle, briefcase, stethoscope, activity, camera, pencil, refresh-cw, list, layers, vote, scale +- Write the way people in this trade and country actually speak. + +{ + "back": "", + "description": "", + "next_description": "", + "next_heading": "", + "question": "" +} + +Reply with the JSON object only. + +=== REPLY === +```json +{ + "back": "Til forsiden", + "description": "Takk for at du melder deg inn i Tomter Vel. Vi har mottatt søknaden din.", + "next_description": "Kasserer går gjennom innmeldinger fortløpende og sender deg kontingenten på e-post.", + "next_heading": "Du hører fra kasserer", + "question": "Hva skjer nå som jeg har meldt meg inn?" +} +``` diff --git a/runs/tomtervel-cards-2026-09-23/llm/18-questions_received_dele-utstyr.yaml.md b/runs/tomtervel-cards-2026-09-23/llm/18-questions_received_dele-utstyr.yaml.md new file mode 100644 index 0000000..654cba5 --- /dev/null +++ b/runs/tomtervel-cards-2026-09-23/llm/18-questions_received_dele-utstyr.yaml.md @@ -0,0 +1,58 @@ +You write the words for one page of a website for this business. + +Business: Tomter Vel +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. +Contact: Styret i Tomter Vel +Language to write in: nb + +Everyone the site serves: +- door medlem: for en husstand i Tomter som vil være med i velet, eller allerede er det; behind it: bli-medlem, endre-medlemskap +- door melde-fra: for noen som har sett noe i nabolaget som ikke er som det skal; behind it: trafikkfare, anleggsfeil +- door bidra: for noen som vil gjøre en innsats, eller si sin mening i en sak; behind it: horingsinnspill, hjelpe-til, komite +- door naboer: for en nabo som trenger en hånd, kan gi en, eller har noe å låne ut; behind it: trenger-hjelp, kan-hjelpe, dele-utstyr +- bli-medlem: en husstand i Tomter - wants: å bli medlem og få betalt kontingenten. Handled by kasserer. Stages: open -> betalt -> utmeldt. +- endre-medlemskap: et medlem som har flyttet, byttet e-post eller vil melde seg ut - wants: at velet har riktige opplysninger om dem. Handled by kasserer. Stages: open -> oppdatert. +- trafikkfare: en som har sett et farlig sted i trafikken - wants: at velet tar det opp med kommunen eller den som eier veien. Handled by trafikkomite. Stages: open -> tatt_opp -> ordnet -> avvist. +- anleggsfeil: en som ser at noe på lekeplassen eller stien er ødelagt - wants: at det blir fikset før noen skader seg. Handled by lekeplasskomite. Stages: open -> tatt_tak_i -> utbedret. +- horingsinnspill: en beboer som har en mening om en sak kommunen har på høring - wants: at velet tar det med i sitt svar. Handled by styret. Stages: open -> tatt_med -> ikke_tatt_med. +- hjelpe-til: en som vil hjelpe til på et arrangement eller en dugnad - wants: å bli satt opp på noe som passer dem. Handled by arrangementskomite. Stages: open -> kontaktet -> satt_opp -> takket_nei. +- komite: en som vil sitte i en komité - wants: en plass i den komiteen som driver med det de bryr seg om. Handled by styret. Stages: open -> plassert -> avslatt. +- trenger-hjelp: 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. Handled by nabohjelp. Stages: open -> formidlet -> ordnet -> ikke_lost. +- kan-hjelpe: en nabo som kan stille opp når noen trenger det - wants: å bli spurt når det passer. Handled by nabohjelp. Stages: open -> registrert -> trukket. +- dele-utstyr: en nabo som har noe å låne ut, eller trenger å låne noe - wants: et oppslag som naboene ser. Handled by styret. Stages: open -> lagt_ut -> tatt_ned. +- utlegg: en i en komité som har lagt ut for noe - wants: pengene tilbake. Handled by kasserer. Stages: open -> godkjent -> utbetalt -> avvist. + +The page: questions/received/dele-utstyr.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. +- The button says what pressing it does; the encouragement says what happens next or how little it takes; the form's guidance line says what to have ready. Placeholders are example answers in the reader's words. +- An icon is one name from this list, chosen for what the reader is doing, or empty: house, building-2, store, school, map-pin, route, footprints, trees, leaf, snowflake, sun, users, user, user-plus, user-check, baby, heart-handshake, hand-helping, handshake, smile, mail, phone, message-circle, megaphone, bell, send, inbox, alert-triangle, siren, shield, construction, hammer, wrench, ruler, package, truck, car, bus, train-front, bike, calendar, clock, file-text, clipboard-list, receipt, wallet, coins, banknote, credit-card, key, lock, search, star, gift, shopping-cart, lightbulb, flag, thumbs-up, check-circle, briefcase, stethoscope, activity, camera, pencil, refresh-cw, list, layers, vote, scale +- Write the way people in this trade and country actually speak. + +{ + "back": "", + "description": "", + "next_description": "", + "next_heading": "", + "question": "" +} + +Reply with the JSON object only. + +=== REPLY === +```json +{ + "back": "Tilbake til forsiden", + "description": "Takk for at du la ut noe til utlån eller ba om å låne noe. Styret legger det ut så naboene kan se det.", + "next_description": "Styret ser gjennom oppslaget og legger det ut på nabolagssiden. Tar det litt tid, kan de ta kontakt for å sjekke noe før det legges ut.", + "next_heading": "Oppslaget legges ut for naboene", + "question": "Hva skjer nå?" +} +``` diff --git a/runs/tomtervel-cards-2026-09-23/llm/19-questions_received_endre-medlemskap.yaml.md b/runs/tomtervel-cards-2026-09-23/llm/19-questions_received_endre-medlemskap.yaml.md new file mode 100644 index 0000000..9ee09ea --- /dev/null +++ b/runs/tomtervel-cards-2026-09-23/llm/19-questions_received_endre-medlemskap.yaml.md @@ -0,0 +1,50 @@ +You write the words for one page of a website for this business. + +Business: Tomter Vel +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. +Contact: Styret i Tomter Vel +Language to write in: nb + +Everyone the site serves: +- door medlem: for en husstand i Tomter som vil være med i velet, eller allerede er det; behind it: bli-medlem, endre-medlemskap +- door melde-fra: for noen som har sett noe i nabolaget som ikke er som det skal; behind it: trafikkfare, anleggsfeil +- door bidra: for noen som vil gjøre en innsats, eller si sin mening i en sak; behind it: horingsinnspill, hjelpe-til, komite +- door naboer: for en nabo som trenger en hånd, kan gi en, eller har noe å låne ut; behind it: trenger-hjelp, kan-hjelpe, dele-utstyr +- bli-medlem: en husstand i Tomter - wants: å bli medlem og få betalt kontingenten. Handled by kasserer. Stages: open -> betalt -> utmeldt. +- endre-medlemskap: et medlem som har flyttet, byttet e-post eller vil melde seg ut - wants: at velet har riktige opplysninger om dem. Handled by kasserer. Stages: open -> oppdatert. +- trafikkfare: en som har sett et farlig sted i trafikken - wants: at velet tar det opp med kommunen eller den som eier veien. Handled by trafikkomite. Stages: open -> tatt_opp -> ordnet -> avvist. +- anleggsfeil: en som ser at noe på lekeplassen eller stien er ødelagt - wants: at det blir fikset før noen skader seg. Handled by lekeplasskomite. Stages: open -> tatt_tak_i -> utbedret. +- horingsinnspill: en beboer som har en mening om en sak kommunen har på høring - wants: at velet tar det med i sitt svar. Handled by styret. Stages: open -> tatt_med -> ikke_tatt_med. +- hjelpe-til: en som vil hjelpe til på et arrangement eller en dugnad - wants: å bli satt opp på noe som passer dem. Handled by arrangementskomite. Stages: open -> kontaktet -> satt_opp -> takket_nei. +- komite: en som vil sitte i en komité - wants: en plass i den komiteen som driver med det de bryr seg om. Handled by styret. Stages: open -> plassert -> avslatt. +- trenger-hjelp: 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. Handled by nabohjelp. Stages: open -> formidlet -> ordnet -> ikke_lost. +- kan-hjelpe: en nabo som kan stille opp når noen trenger det - wants: å bli spurt når det passer. Handled by nabohjelp. Stages: open -> registrert -> trukket. +- dele-utstyr: en nabo som har noe å låne ut, eller trenger å låne noe - wants: et oppslag som naboene ser. Handled by styret. Stages: open -> lagt_ut -> tatt_ned. +- utlegg: en i en komité som har lagt ut for noe - wants: pengene tilbake. Handled by kasserer. Stages: open -> godkjent -> utbetalt -> avvist. + +The page: questions/received/endre-medlemskap.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. +- The button says what pressing it does; the encouragement says what happens next or how little it takes; the form's guidance line says what to have ready. Placeholders are example answers in the reader's words. +- An icon is one name from this list, chosen for what the reader is doing, or empty: house, building-2, store, school, map-pin, route, footprints, trees, leaf, snowflake, sun, users, user, user-plus, user-check, baby, heart-handshake, hand-helping, handshake, smile, mail, phone, message-circle, megaphone, bell, send, inbox, alert-triangle, siren, shield, construction, hammer, wrench, ruler, package, truck, car, bus, train-front, bike, calendar, clock, file-text, clipboard-list, receipt, wallet, coins, banknote, credit-card, key, lock, search, star, gift, shopping-cart, lightbulb, flag, thumbs-up, check-circle, briefcase, stethoscope, activity, camera, pencil, refresh-cw, list, layers, vote, scale +- Write the way people in this trade and country actually speak. + +{ + "back": "", + "description": "", + "next_description": "", + "next_heading": "", + "question": "" +} + +Reply with the JSON object only. + +=== REPLY === +{"back": "Tilbake til forsiden", "description": "Meldingen om endringen er sendt til kassereren.", "next_description": "Kassereren oppdaterer medlemslista og bekrefter på e-post at det er gjort.", "next_heading": "Opplysningene blir oppdatert", "question": "Er endringen registrert?"} diff --git a/runs/tomtervel-cards-2026-09-23/llm/20-questions_received_hjelpe-til.yaml.md b/runs/tomtervel-cards-2026-09-23/llm/20-questions_received_hjelpe-til.yaml.md new file mode 100644 index 0000000..1876580 --- /dev/null +++ b/runs/tomtervel-cards-2026-09-23/llm/20-questions_received_hjelpe-til.yaml.md @@ -0,0 +1,56 @@ +You write the words for one page of a website for this business. + +Business: Tomter Vel +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. +Contact: Styret i Tomter Vel +Language to write in: nb + +Everyone the site serves: +- door medlem: for en husstand i Tomter som vil være med i velet, eller allerede er det; behind it: bli-medlem, endre-medlemskap +- door melde-fra: for noen som har sett noe i nabolaget som ikke er som det skal; behind it: trafikkfare, anleggsfeil +- door bidra: for noen som vil gjøre en innsats, eller si sin mening i en sak; behind it: horingsinnspill, hjelpe-til, komite +- door naboer: for en nabo som trenger en hånd, kan gi en, eller har noe å låne ut; behind it: trenger-hjelp, kan-hjelpe, dele-utstyr +- bli-medlem: en husstand i Tomter - wants: å bli medlem og få betalt kontingenten. Handled by kasserer. Stages: open -> betalt -> utmeldt. +- endre-medlemskap: et medlem som har flyttet, byttet e-post eller vil melde seg ut - wants: at velet har riktige opplysninger om dem. Handled by kasserer. Stages: open -> oppdatert. +- trafikkfare: en som har sett et farlig sted i trafikken - wants: at velet tar det opp med kommunen eller den som eier veien. Handled by trafikkomite. Stages: open -> tatt_opp -> ordnet -> avvist. +- anleggsfeil: en som ser at noe på lekeplassen eller stien er ødelagt - wants: at det blir fikset før noen skader seg. Handled by lekeplasskomite. Stages: open -> tatt_tak_i -> utbedret. +- horingsinnspill: en beboer som har en mening om en sak kommunen har på høring - wants: at velet tar det med i sitt svar. Handled by styret. Stages: open -> tatt_med -> ikke_tatt_med. +- hjelpe-til: en som vil hjelpe til på et arrangement eller en dugnad - wants: å bli satt opp på noe som passer dem. Handled by arrangementskomite. Stages: open -> kontaktet -> satt_opp -> takket_nei. +- komite: en som vil sitte i en komité - wants: en plass i den komiteen som driver med det de bryr seg om. Handled by styret. Stages: open -> plassert -> avslatt. +- trenger-hjelp: 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. Handled by nabohjelp. Stages: open -> formidlet -> ordnet -> ikke_lost. +- kan-hjelpe: en nabo som kan stille opp når noen trenger det - wants: å bli spurt når det passer. Handled by nabohjelp. Stages: open -> registrert -> trukket. +- dele-utstyr: en nabo som har noe å låne ut, eller trenger å låne noe - wants: et oppslag som naboene ser. Handled by styret. Stages: open -> lagt_ut -> tatt_ned. +- utlegg: en i en komité som har lagt ut for noe - wants: pengene tilbake. Handled by kasserer. Stages: open -> godkjent -> utbetalt -> avvist. + +The page: questions/received/hjelpe-til.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. +- The button says what pressing it does; the encouragement says what happens next or how little it takes; the form's guidance line says what to have ready. Placeholders are example answers in the reader's words. +- An icon is one name from this list, chosen for what the reader is doing, or empty: house, building-2, store, school, map-pin, route, footprints, trees, leaf, snowflake, sun, users, user, user-plus, user-check, baby, heart-handshake, hand-helping, handshake, smile, mail, phone, message-circle, megaphone, bell, send, inbox, alert-triangle, siren, shield, construction, hammer, wrench, ruler, package, truck, car, bus, train-front, bike, calendar, clock, file-text, clipboard-list, receipt, wallet, coins, banknote, credit-card, key, lock, search, star, gift, shopping-cart, lightbulb, flag, thumbs-up, check-circle, briefcase, stethoscope, activity, camera, pencil, refresh-cw, list, layers, vote, scale +- Write the way people in this trade and country actually speak. + +{ + "back": "", + "description": "", + "next_description": "", + "next_heading": "", + "question": "" +} + +Reply with the JSON object only. + +=== REPLY === +{ + "back": "Tilbake til forsiden", + "description": "Takk for at du vil bidra! Arrangementskomiteen har fått beskjed og finner ut hvor du passer best inn.", + "next_description": "Noen fra arrangementskomiteen tar kontakt før neste arrangement eller dugnad, og avtaler nærmere hva du kan hjelpe til med.", + "next_heading": "Komiteen tar kontakt med deg", + "question": "Hva skjer nå som jeg har meldt meg?" +} diff --git a/runs/tomtervel-cards-2026-09-23/llm/21-questions_received_horingsinnspill.yaml.md b/runs/tomtervel-cards-2026-09-23/llm/21-questions_received_horingsinnspill.yaml.md new file mode 100644 index 0000000..e88e29e --- /dev/null +++ b/runs/tomtervel-cards-2026-09-23/llm/21-questions_received_horingsinnspill.yaml.md @@ -0,0 +1,58 @@ +You write the words for one page of a website for this business. + +Business: Tomter Vel +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. +Contact: Styret i Tomter Vel +Language to write in: nb + +Everyone the site serves: +- door medlem: for en husstand i Tomter som vil være med i velet, eller allerede er det; behind it: bli-medlem, endre-medlemskap +- door melde-fra: for noen som har sett noe i nabolaget som ikke er som det skal; behind it: trafikkfare, anleggsfeil +- door bidra: for noen som vil gjøre en innsats, eller si sin mening i en sak; behind it: horingsinnspill, hjelpe-til, komite +- door naboer: for en nabo som trenger en hånd, kan gi en, eller har noe å låne ut; behind it: trenger-hjelp, kan-hjelpe, dele-utstyr +- bli-medlem: en husstand i Tomter - wants: å bli medlem og få betalt kontingenten. Handled by kasserer. Stages: open -> betalt -> utmeldt. +- endre-medlemskap: et medlem som har flyttet, byttet e-post eller vil melde seg ut - wants: at velet har riktige opplysninger om dem. Handled by kasserer. Stages: open -> oppdatert. +- trafikkfare: en som har sett et farlig sted i trafikken - wants: at velet tar det opp med kommunen eller den som eier veien. Handled by trafikkomite. Stages: open -> tatt_opp -> ordnet -> avvist. +- anleggsfeil: en som ser at noe på lekeplassen eller stien er ødelagt - wants: at det blir fikset før noen skader seg. Handled by lekeplasskomite. Stages: open -> tatt_tak_i -> utbedret. +- horingsinnspill: en beboer som har en mening om en sak kommunen har på høring - wants: at velet tar det med i sitt svar. Handled by styret. Stages: open -> tatt_med -> ikke_tatt_med. +- hjelpe-til: en som vil hjelpe til på et arrangement eller en dugnad - wants: å bli satt opp på noe som passer dem. Handled by arrangementskomite. Stages: open -> kontaktet -> satt_opp -> takket_nei. +- komite: en som vil sitte i en komité - wants: en plass i den komiteen som driver med det de bryr seg om. Handled by styret. Stages: open -> plassert -> avslatt. +- trenger-hjelp: 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. Handled by nabohjelp. Stages: open -> formidlet -> ordnet -> ikke_lost. +- kan-hjelpe: en nabo som kan stille opp når noen trenger det - wants: å bli spurt når det passer. Handled by nabohjelp. Stages: open -> registrert -> trukket. +- dele-utstyr: en nabo som har noe å låne ut, eller trenger å låne noe - wants: et oppslag som naboene ser. Handled by styret. Stages: open -> lagt_ut -> tatt_ned. +- utlegg: en i en komité som har lagt ut for noe - wants: pengene tilbake. Handled by kasserer. Stages: open -> godkjent -> utbetalt -> avvist. + +The page: questions/received/horingsinnspill.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. +- The button says what pressing it does; the encouragement says what happens next or how little it takes; the form's guidance line says what to have ready. Placeholders are example answers in the reader's words. +- An icon is one name from this list, chosen for what the reader is doing, or empty: house, building-2, store, school, map-pin, route, footprints, trees, leaf, snowflake, sun, users, user, user-plus, user-check, baby, heart-handshake, hand-helping, handshake, smile, mail, phone, message-circle, megaphone, bell, send, inbox, alert-triangle, siren, shield, construction, hammer, wrench, ruler, package, truck, car, bus, train-front, bike, calendar, clock, file-text, clipboard-list, receipt, wallet, coins, banknote, credit-card, key, lock, search, star, gift, shopping-cart, lightbulb, flag, thumbs-up, check-circle, briefcase, stethoscope, activity, camera, pencil, refresh-cw, list, layers, vote, scale +- Write the way people in this trade and country actually speak. + +{ + "back": "", + "description": "", + "next_description": "", + "next_heading": "", + "question": "" +} + +Reply with the JSON object only. + +=== REPLY === +```json +{ + "back": "Tilbake til forsiden", + "description": "Innspillet ditt er sendt til styret i Tomter Vel.", + "next_description": "Styret samler innspill fra beboerne og tar dem med når vi svarer kommunen i høringen.", + "next_heading": "Innspillet blir del av høringssvaret", + "question": "Hva skjer med innspillet mitt nå?" +} +``` diff --git a/runs/tomtervel-cards-2026-09-23/llm/22-questions_received_kan-hjelpe.yaml.md b/runs/tomtervel-cards-2026-09-23/llm/22-questions_received_kan-hjelpe.yaml.md new file mode 100644 index 0000000..2453c29 --- /dev/null +++ b/runs/tomtervel-cards-2026-09-23/llm/22-questions_received_kan-hjelpe.yaml.md @@ -0,0 +1,58 @@ +You write the words for one page of a website for this business. + +Business: Tomter Vel +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. +Contact: Styret i Tomter Vel +Language to write in: nb + +Everyone the site serves: +- door medlem: for en husstand i Tomter som vil være med i velet, eller allerede er det; behind it: bli-medlem, endre-medlemskap +- door melde-fra: for noen som har sett noe i nabolaget som ikke er som det skal; behind it: trafikkfare, anleggsfeil +- door bidra: for noen som vil gjøre en innsats, eller si sin mening i en sak; behind it: horingsinnspill, hjelpe-til, komite +- door naboer: for en nabo som trenger en hånd, kan gi en, eller har noe å låne ut; behind it: trenger-hjelp, kan-hjelpe, dele-utstyr +- bli-medlem: en husstand i Tomter - wants: å bli medlem og få betalt kontingenten. Handled by kasserer. Stages: open -> betalt -> utmeldt. +- endre-medlemskap: et medlem som har flyttet, byttet e-post eller vil melde seg ut - wants: at velet har riktige opplysninger om dem. Handled by kasserer. Stages: open -> oppdatert. +- trafikkfare: en som har sett et farlig sted i trafikken - wants: at velet tar det opp med kommunen eller den som eier veien. Handled by trafikkomite. Stages: open -> tatt_opp -> ordnet -> avvist. +- anleggsfeil: en som ser at noe på lekeplassen eller stien er ødelagt - wants: at det blir fikset før noen skader seg. Handled by lekeplasskomite. Stages: open -> tatt_tak_i -> utbedret. +- horingsinnspill: en beboer som har en mening om en sak kommunen har på høring - wants: at velet tar det med i sitt svar. Handled by styret. Stages: open -> tatt_med -> ikke_tatt_med. +- hjelpe-til: en som vil hjelpe til på et arrangement eller en dugnad - wants: å bli satt opp på noe som passer dem. Handled by arrangementskomite. Stages: open -> kontaktet -> satt_opp -> takket_nei. +- komite: en som vil sitte i en komité - wants: en plass i den komiteen som driver med det de bryr seg om. Handled by styret. Stages: open -> plassert -> avslatt. +- trenger-hjelp: 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. Handled by nabohjelp. Stages: open -> formidlet -> ordnet -> ikke_lost. +- kan-hjelpe: en nabo som kan stille opp når noen trenger det - wants: å bli spurt når det passer. Handled by nabohjelp. Stages: open -> registrert -> trukket. +- dele-utstyr: en nabo som har noe å låne ut, eller trenger å låne noe - wants: et oppslag som naboene ser. Handled by styret. Stages: open -> lagt_ut -> tatt_ned. +- utlegg: en i en komité som har lagt ut for noe - wants: pengene tilbake. Handled by kasserer. Stages: open -> godkjent -> utbetalt -> avvist. + +The page: questions/received/kan-hjelpe.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. +- The button says what pressing it does; the encouragement says what happens next or how little it takes; the form's guidance line says what to have ready. Placeholders are example answers in the reader's words. +- An icon is one name from this list, chosen for what the reader is doing, or empty: house, building-2, store, school, map-pin, route, footprints, trees, leaf, snowflake, sun, users, user, user-plus, user-check, baby, heart-handshake, hand-helping, handshake, smile, mail, phone, message-circle, megaphone, bell, send, inbox, alert-triangle, siren, shield, construction, hammer, wrench, ruler, package, truck, car, bus, train-front, bike, calendar, clock, file-text, clipboard-list, receipt, wallet, coins, banknote, credit-card, key, lock, search, star, gift, shopping-cart, lightbulb, flag, thumbs-up, check-circle, briefcase, stethoscope, activity, camera, pencil, refresh-cw, list, layers, vote, scale +- Write the way people in this trade and country actually speak. + +{ + "back": "", + "description": "", + "next_description": "", + "next_heading": "", + "question": "" +} + +Reply with the JSON object only. + +=== REPLY === +```json +{ + "back": "Tilbake til forsiden", + "description": "Takk for at du stiller opp som nabohjelp. Vi har notert deg, så vet vi om deg når noen trenger en hånd.", + "next_description": "Vi tar kontakt når det dukker opp noe som passer for deg – det kan gå litt tid før det skjer.", + "next_heading": "Vi kontakter deg ved behov", + "question": "Hva skjer nå som jeg har meldt meg som nabohjelp?" +} +``` diff --git a/runs/tomtervel-cards-2026-09-23/llm/23-questions_received_komite.yaml.md b/runs/tomtervel-cards-2026-09-23/llm/23-questions_received_komite.yaml.md new file mode 100644 index 0000000..846fda3 --- /dev/null +++ b/runs/tomtervel-cards-2026-09-23/llm/23-questions_received_komite.yaml.md @@ -0,0 +1,58 @@ +You write the words for one page of a website for this business. + +Business: Tomter Vel +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. +Contact: Styret i Tomter Vel +Language to write in: nb + +Everyone the site serves: +- door medlem: for en husstand i Tomter som vil være med i velet, eller allerede er det; behind it: bli-medlem, endre-medlemskap +- door melde-fra: for noen som har sett noe i nabolaget som ikke er som det skal; behind it: trafikkfare, anleggsfeil +- door bidra: for noen som vil gjøre en innsats, eller si sin mening i en sak; behind it: horingsinnspill, hjelpe-til, komite +- door naboer: for en nabo som trenger en hånd, kan gi en, eller har noe å låne ut; behind it: trenger-hjelp, kan-hjelpe, dele-utstyr +- bli-medlem: en husstand i Tomter - wants: å bli medlem og få betalt kontingenten. Handled by kasserer. Stages: open -> betalt -> utmeldt. +- endre-medlemskap: et medlem som har flyttet, byttet e-post eller vil melde seg ut - wants: at velet har riktige opplysninger om dem. Handled by kasserer. Stages: open -> oppdatert. +- trafikkfare: en som har sett et farlig sted i trafikken - wants: at velet tar det opp med kommunen eller den som eier veien. Handled by trafikkomite. Stages: open -> tatt_opp -> ordnet -> avvist. +- anleggsfeil: en som ser at noe på lekeplassen eller stien er ødelagt - wants: at det blir fikset før noen skader seg. Handled by lekeplasskomite. Stages: open -> tatt_tak_i -> utbedret. +- horingsinnspill: en beboer som har en mening om en sak kommunen har på høring - wants: at velet tar det med i sitt svar. Handled by styret. Stages: open -> tatt_med -> ikke_tatt_med. +- hjelpe-til: en som vil hjelpe til på et arrangement eller en dugnad - wants: å bli satt opp på noe som passer dem. Handled by arrangementskomite. Stages: open -> kontaktet -> satt_opp -> takket_nei. +- komite: en som vil sitte i en komité - wants: en plass i den komiteen som driver med det de bryr seg om. Handled by styret. Stages: open -> plassert -> avslatt. +- trenger-hjelp: 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. Handled by nabohjelp. Stages: open -> formidlet -> ordnet -> ikke_lost. +- kan-hjelpe: en nabo som kan stille opp når noen trenger det - wants: å bli spurt når det passer. Handled by nabohjelp. Stages: open -> registrert -> trukket. +- dele-utstyr: en nabo som har noe å låne ut, eller trenger å låne noe - wants: et oppslag som naboene ser. Handled by styret. Stages: open -> lagt_ut -> tatt_ned. +- utlegg: en i en komité som har lagt ut for noe - wants: pengene tilbake. Handled by kasserer. Stages: open -> godkjent -> utbetalt -> avvist. + +The page: questions/received/komite.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. +- The button says what pressing it does; the encouragement says what happens next or how little it takes; the form's guidance line says what to have ready. Placeholders are example answers in the reader's words. +- An icon is one name from this list, chosen for what the reader is doing, or empty: house, building-2, store, school, map-pin, route, footprints, trees, leaf, snowflake, sun, users, user, user-plus, user-check, baby, heart-handshake, hand-helping, handshake, smile, mail, phone, message-circle, megaphone, bell, send, inbox, alert-triangle, siren, shield, construction, hammer, wrench, ruler, package, truck, car, bus, train-front, bike, calendar, clock, file-text, clipboard-list, receipt, wallet, coins, banknote, credit-card, key, lock, search, star, gift, shopping-cart, lightbulb, flag, thumbs-up, check-circle, briefcase, stethoscope, activity, camera, pencil, refresh-cw, list, layers, vote, scale +- Write the way people in this trade and country actually speak. + +{ + "back": "", + "description": "", + "next_description": "", + "next_heading": "", + "question": "" +} + +Reply with the JSON object only. + +=== REPLY === +```json +{ + "back": "Til forsiden", + "description": "Du har sagt at du vil sitte i en komité. Styret tar kontakt om plass i den komiteen som passer deg.", + "next_description": "Styret ser på ønsket ditt og svarer så snart de har funnet en plass, eller kan si at komiteen er full akkurat nå.", + "next_heading": "Styret finner deg en plass", + "question": "Hva skjer nå som jeg har meldt interesse for en komité?" +} +``` diff --git a/runs/tomtervel-cards-2026-09-23/llm/24-questions_received_trafikkfare.yaml.md b/runs/tomtervel-cards-2026-09-23/llm/24-questions_received_trafikkfare.yaml.md new file mode 100644 index 0000000..7957e4c --- /dev/null +++ b/runs/tomtervel-cards-2026-09-23/llm/24-questions_received_trafikkfare.yaml.md @@ -0,0 +1,58 @@ +You write the words for one page of a website for this business. + +Business: Tomter Vel +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. +Contact: Styret i Tomter Vel +Language to write in: nb + +Everyone the site serves: +- door medlem: for en husstand i Tomter som vil være med i velet, eller allerede er det; behind it: bli-medlem, endre-medlemskap +- door melde-fra: for noen som har sett noe i nabolaget som ikke er som det skal; behind it: trafikkfare, anleggsfeil +- door bidra: for noen som vil gjøre en innsats, eller si sin mening i en sak; behind it: horingsinnspill, hjelpe-til, komite +- door naboer: for en nabo som trenger en hånd, kan gi en, eller har noe å låne ut; behind it: trenger-hjelp, kan-hjelpe, dele-utstyr +- bli-medlem: en husstand i Tomter - wants: å bli medlem og få betalt kontingenten. Handled by kasserer. Stages: open -> betalt -> utmeldt. +- endre-medlemskap: et medlem som har flyttet, byttet e-post eller vil melde seg ut - wants: at velet har riktige opplysninger om dem. Handled by kasserer. Stages: open -> oppdatert. +- trafikkfare: en som har sett et farlig sted i trafikken - wants: at velet tar det opp med kommunen eller den som eier veien. Handled by trafikkomite. Stages: open -> tatt_opp -> ordnet -> avvist. +- anleggsfeil: en som ser at noe på lekeplassen eller stien er ødelagt - wants: at det blir fikset før noen skader seg. Handled by lekeplasskomite. Stages: open -> tatt_tak_i -> utbedret. +- horingsinnspill: en beboer som har en mening om en sak kommunen har på høring - wants: at velet tar det med i sitt svar. Handled by styret. Stages: open -> tatt_med -> ikke_tatt_med. +- hjelpe-til: en som vil hjelpe til på et arrangement eller en dugnad - wants: å bli satt opp på noe som passer dem. Handled by arrangementskomite. Stages: open -> kontaktet -> satt_opp -> takket_nei. +- komite: en som vil sitte i en komité - wants: en plass i den komiteen som driver med det de bryr seg om. Handled by styret. Stages: open -> plassert -> avslatt. +- trenger-hjelp: 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. Handled by nabohjelp. Stages: open -> formidlet -> ordnet -> ikke_lost. +- kan-hjelpe: en nabo som kan stille opp når noen trenger det - wants: å bli spurt når det passer. Handled by nabohjelp. Stages: open -> registrert -> trukket. +- dele-utstyr: en nabo som har noe å låne ut, eller trenger å låne noe - wants: et oppslag som naboene ser. Handled by styret. Stages: open -> lagt_ut -> tatt_ned. +- utlegg: en i en komité som har lagt ut for noe - wants: pengene tilbake. Handled by kasserer. Stages: open -> godkjent -> utbetalt -> avvist. + +The page: questions/received/trafikkfare.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. +- The button says what pressing it does; the encouragement says what happens next or how little it takes; the form's guidance line says what to have ready. Placeholders are example answers in the reader's words. +- An icon is one name from this list, chosen for what the reader is doing, or empty: house, building-2, store, school, map-pin, route, footprints, trees, leaf, snowflake, sun, users, user, user-plus, user-check, baby, heart-handshake, hand-helping, handshake, smile, mail, phone, message-circle, megaphone, bell, send, inbox, alert-triangle, siren, shield, construction, hammer, wrench, ruler, package, truck, car, bus, train-front, bike, calendar, clock, file-text, clipboard-list, receipt, wallet, coins, banknote, credit-card, key, lock, search, star, gift, shopping-cart, lightbulb, flag, thumbs-up, check-circle, briefcase, stethoscope, activity, camera, pencil, refresh-cw, list, layers, vote, scale +- Write the way people in this trade and country actually speak. + +{ + "back": "", + "description": "", + "next_description": "", + "next_heading": "", + "question": "" +} + +Reply with the JSON object only. + +=== REPLY === +```json +{ + "back": "Tilbake til forsiden", + "description": "Meldingen om trafikkfaren er sendt til trafikkomiteen.", + "next_description": "Trafikkomiteen ser på meldingen og tar den videre med kommunen eller den som eier veien, om det trengs.", + "next_heading": "Trafikkomiteen tar det videre", + "question": "Hva skjer nå med det jeg meldte fra om?" +} +``` diff --git a/runs/tomtervel-cards-2026-09-23/llm/25-questions_received_trenger-hjelp.yaml.md b/runs/tomtervel-cards-2026-09-23/llm/25-questions_received_trenger-hjelp.yaml.md new file mode 100644 index 0000000..67b0d3f --- /dev/null +++ b/runs/tomtervel-cards-2026-09-23/llm/25-questions_received_trenger-hjelp.yaml.md @@ -0,0 +1,58 @@ +You write the words for one page of a website for this business. + +Business: Tomter Vel +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. +Contact: Styret i Tomter Vel +Language to write in: nb + +Everyone the site serves: +- door medlem: for en husstand i Tomter som vil være med i velet, eller allerede er det; behind it: bli-medlem, endre-medlemskap +- door melde-fra: for noen som har sett noe i nabolaget som ikke er som det skal; behind it: trafikkfare, anleggsfeil +- door bidra: for noen som vil gjøre en innsats, eller si sin mening i en sak; behind it: horingsinnspill, hjelpe-til, komite +- door naboer: for en nabo som trenger en hånd, kan gi en, eller har noe å låne ut; behind it: trenger-hjelp, kan-hjelpe, dele-utstyr +- bli-medlem: en husstand i Tomter - wants: å bli medlem og få betalt kontingenten. Handled by kasserer. Stages: open -> betalt -> utmeldt. +- endre-medlemskap: et medlem som har flyttet, byttet e-post eller vil melde seg ut - wants: at velet har riktige opplysninger om dem. Handled by kasserer. Stages: open -> oppdatert. +- trafikkfare: en som har sett et farlig sted i trafikken - wants: at velet tar det opp med kommunen eller den som eier veien. Handled by trafikkomite. Stages: open -> tatt_opp -> ordnet -> avvist. +- anleggsfeil: en som ser at noe på lekeplassen eller stien er ødelagt - wants: at det blir fikset før noen skader seg. Handled by lekeplasskomite. Stages: open -> tatt_tak_i -> utbedret. +- horingsinnspill: en beboer som har en mening om en sak kommunen har på høring - wants: at velet tar det med i sitt svar. Handled by styret. Stages: open -> tatt_med -> ikke_tatt_med. +- hjelpe-til: en som vil hjelpe til på et arrangement eller en dugnad - wants: å bli satt opp på noe som passer dem. Handled by arrangementskomite. Stages: open -> kontaktet -> satt_opp -> takket_nei. +- komite: en som vil sitte i en komité - wants: en plass i den komiteen som driver med det de bryr seg om. Handled by styret. Stages: open -> plassert -> avslatt. +- trenger-hjelp: 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. Handled by nabohjelp. Stages: open -> formidlet -> ordnet -> ikke_lost. +- kan-hjelpe: en nabo som kan stille opp når noen trenger det - wants: å bli spurt når det passer. Handled by nabohjelp. Stages: open -> registrert -> trukket. +- dele-utstyr: en nabo som har noe å låne ut, eller trenger å låne noe - wants: et oppslag som naboene ser. Handled by styret. Stages: open -> lagt_ut -> tatt_ned. +- utlegg: en i en komité som har lagt ut for noe - wants: pengene tilbake. Handled by kasserer. Stages: open -> godkjent -> utbetalt -> avvist. + +The page: questions/received/trenger-hjelp.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. +- The button says what pressing it does; the encouragement says what happens next or how little it takes; the form's guidance line says what to have ready. Placeholders are example answers in the reader's words. +- An icon is one name from this list, chosen for what the reader is doing, or empty: house, building-2, store, school, map-pin, route, footprints, trees, leaf, snowflake, sun, users, user, user-plus, user-check, baby, heart-handshake, hand-helping, handshake, smile, mail, phone, message-circle, megaphone, bell, send, inbox, alert-triangle, siren, shield, construction, hammer, wrench, ruler, package, truck, car, bus, train-front, bike, calendar, clock, file-text, clipboard-list, receipt, wallet, coins, banknote, credit-card, key, lock, search, star, gift, shopping-cart, lightbulb, flag, thumbs-up, check-circle, briefcase, stethoscope, activity, camera, pencil, refresh-cw, list, layers, vote, scale +- Write the way people in this trade and country actually speak. + +{ + "back": "", + "description": "", + "next_description": "", + "next_heading": "", + "question": "" +} + +Reply with the JSON object only. + +=== REPLY === +```json +{ + "back": "Tilbake til forsiden", + "description": "Meldingen din er sendt til nabohjelpen. Vi finner en nabo som kan stille opp.", + "next_description": "Nabohjelpen ser på henvendelser fortløpende og tar kontakt så snart noen kan hjelpe.", + "next_heading": "Vi finner noen som kan hjelpe deg", + "question": "Hva skjer nå med det jeg trenger hjelp til?" +} +``` diff --git a/runs/tomtervel-cards-2026-09-23/llm/26-questions_styret_index.yaml.md b/runs/tomtervel-cards-2026-09-23/llm/26-questions_styret_index.yaml.md new file mode 100644 index 0000000..8010c33 --- /dev/null +++ b/runs/tomtervel-cards-2026-09-23/llm/26-questions_styret_index.yaml.md @@ -0,0 +1,118 @@ +You write the words for one page of a website for this business. + +Business: Tomter Vel +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. +Contact: Styret i Tomter Vel +Language to write in: nb + +Everyone the site serves: +- door medlem: for en husstand i Tomter som vil være med i velet, eller allerede er det; behind it: bli-medlem, endre-medlemskap +- door melde-fra: for noen som har sett noe i nabolaget som ikke er som det skal; behind it: trafikkfare, anleggsfeil +- door bidra: for noen som vil gjøre en innsats, eller si sin mening i en sak; behind it: horingsinnspill, hjelpe-til, komite +- door naboer: for en nabo som trenger en hånd, kan gi en, eller har noe å låne ut; behind it: trenger-hjelp, kan-hjelpe, dele-utstyr +- bli-medlem: en husstand i Tomter - wants: å bli medlem og få betalt kontingenten. Handled by kasserer. Stages: open -> betalt -> utmeldt. +- endre-medlemskap: et medlem som har flyttet, byttet e-post eller vil melde seg ut - wants: at velet har riktige opplysninger om dem. Handled by kasserer. Stages: open -> oppdatert. +- trafikkfare: en som har sett et farlig sted i trafikken - wants: at velet tar det opp med kommunen eller den som eier veien. Handled by trafikkomite. Stages: open -> tatt_opp -> ordnet -> avvist. +- anleggsfeil: en som ser at noe på lekeplassen eller stien er ødelagt - wants: at det blir fikset før noen skader seg. Handled by lekeplasskomite. Stages: open -> tatt_tak_i -> utbedret. +- horingsinnspill: en beboer som har en mening om en sak kommunen har på høring - wants: at velet tar det med i sitt svar. Handled by styret. Stages: open -> tatt_med -> ikke_tatt_med. +- hjelpe-til: en som vil hjelpe til på et arrangement eller en dugnad - wants: å bli satt opp på noe som passer dem. Handled by arrangementskomite. Stages: open -> kontaktet -> satt_opp -> takket_nei. +- komite: en som vil sitte i en komité - wants: en plass i den komiteen som driver med det de bryr seg om. Handled by styret. Stages: open -> plassert -> avslatt. +- trenger-hjelp: 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. Handled by nabohjelp. Stages: open -> formidlet -> ordnet -> ikke_lost. +- kan-hjelpe: en nabo som kan stille opp når noen trenger det - wants: å bli spurt når det passer. Handled by nabohjelp. Stages: open -> registrert -> trukket. +- dele-utstyr: en nabo som har noe å låne ut, eller trenger å låne noe - wants: et oppslag som naboene ser. Handled by styret. Stages: open -> lagt_ut -> tatt_ned. +- utlegg: en i en komité som har lagt ut for noe - wants: pengene tilbake. Handled by kasserer. Stages: open -> godkjent -> utbetalt -> avvist. + +The page: questions/styret/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. +- The button says what pressing it does; the encouragement says what happens next or how little it takes; the form's guidance line says what to have ready. Placeholders are example answers in the reader's words. +- An icon is one name from this list, chosen for what the reader is doing, or empty: house, building-2, store, school, map-pin, route, footprints, trees, leaf, snowflake, sun, users, user, user-plus, user-check, baby, heart-handshake, hand-helping, handshake, smile, mail, phone, message-circle, megaphone, bell, send, inbox, alert-triangle, siren, shield, construction, hammer, wrench, ruler, package, truck, car, bus, train-front, bike, calendar, clock, file-text, clipboard-list, receipt, wallet, coins, banknote, credit-card, key, lock, search, star, gift, shopping-cart, lightbulb, flag, thumbs-up, check-circle, briefcase, stethoscope, activity, camera, pencil, refresh-cw, list, layers, vote, scale +- Write the way people in this trade and country actually speak. + +{ + "buckets": { + "innspill": { + "description": "", + "heading": "", + "moves": { + "open->ikke_tatt_med": "ikke_tatt_med>", + "open->tatt_med": "tatt_med>" + } + }, + "komitesoknader": { + "description": "", + "heading": "", + "moves": { + "open->avslatt": "avslatt>", + "open->plassert": "plassert>" + } + }, + "oppslag": { + "description": "", + "heading": "", + "moves": { + "open->lagt_ut": "lagt_ut>", + "open->tatt_ned": "tatt_ned>" + } + }, + "trafikkmeldinger": { + "description": "", + "heading": "", + "moves": {} + } + }, + "confirm": "", + "description": "", + "links": {}, + "question": "" +} + +Reply with the JSON object only. + +=== REPLY === +```json +{ + "buckets": { + "innspill": { + "description": "Se hva naboer mener om saker kommunen har på høring, og ta det med i høringssvaret.", + "heading": "Innspill til høringssvar", + "moves": { + "open->ikke_tatt_med": "Ikke ta med", + "open->tatt_med": "Ta med i svaret" + } + }, + "komitesoknader": { + "description": "Se hvem som vil sitte i en komité, og sett dem i en som passer.", + "heading": "Søknader til komiteene", + "moves": { + "open->avslatt": "Avslå søknaden", + "open->plassert": "Plasser i komité" + } + }, + "oppslag": { + "description": "Se hva naboer vil dele ut eller låne, og legg oppslaget ut for alle.", + "heading": "Oppslag om å dele utstyr", + "moves": { + "open->lagt_ut": "Legg ut oppslag", + "open->tatt_ned": "Ta ned oppslag" + } + }, + "trafikkmeldinger": { + "description": "Se hva naboer har meldt om farlige steder i trafikken.", + "heading": "Meldinger om trafikkfarer", + "moves": {} + } + }, + "confirm": "Lagre", + "description": "Her har styret oversikt over høringsinnspill, komitésøknader, oppslag og trafikkmeldinger fra naboene.", + "links": {}, + "question": "Hva venter på styret akkurat nå?" +} +``` diff --git a/runs/tomtervel-cards-2026-09-23/llm/27-questions_trafikkomite_index.yaml.md b/runs/tomtervel-cards-2026-09-23/llm/27-questions_trafikkomite_index.yaml.md new file mode 100644 index 0000000..e138f8a --- /dev/null +++ b/runs/tomtervel-cards-2026-09-23/llm/27-questions_trafikkomite_index.yaml.md @@ -0,0 +1,80 @@ +You write the words for one page of a website for this business. + +Business: Tomter Vel +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. +Contact: Styret i Tomter Vel +Language to write in: nb + +Everyone the site serves: +- door medlem: for en husstand i Tomter som vil være med i velet, eller allerede er det; behind it: bli-medlem, endre-medlemskap +- door melde-fra: for noen som har sett noe i nabolaget som ikke er som det skal; behind it: trafikkfare, anleggsfeil +- door bidra: for noen som vil gjøre en innsats, eller si sin mening i en sak; behind it: horingsinnspill, hjelpe-til, komite +- door naboer: for en nabo som trenger en hånd, kan gi en, eller har noe å låne ut; behind it: trenger-hjelp, kan-hjelpe, dele-utstyr +- bli-medlem: en husstand i Tomter - wants: å bli medlem og få betalt kontingenten. Handled by kasserer. Stages: open -> betalt -> utmeldt. +- endre-medlemskap: et medlem som har flyttet, byttet e-post eller vil melde seg ut - wants: at velet har riktige opplysninger om dem. Handled by kasserer. Stages: open -> oppdatert. +- trafikkfare: en som har sett et farlig sted i trafikken - wants: at velet tar det opp med kommunen eller den som eier veien. Handled by trafikkomite. Stages: open -> tatt_opp -> ordnet -> avvist. +- anleggsfeil: en som ser at noe på lekeplassen eller stien er ødelagt - wants: at det blir fikset før noen skader seg. Handled by lekeplasskomite. Stages: open -> tatt_tak_i -> utbedret. +- horingsinnspill: en beboer som har en mening om en sak kommunen har på høring - wants: at velet tar det med i sitt svar. Handled by styret. Stages: open -> tatt_med -> ikke_tatt_med. +- hjelpe-til: en som vil hjelpe til på et arrangement eller en dugnad - wants: å bli satt opp på noe som passer dem. Handled by arrangementskomite. Stages: open -> kontaktet -> satt_opp -> takket_nei. +- komite: en som vil sitte i en komité - wants: en plass i den komiteen som driver med det de bryr seg om. Handled by styret. Stages: open -> plassert -> avslatt. +- trenger-hjelp: 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. Handled by nabohjelp. Stages: open -> formidlet -> ordnet -> ikke_lost. +- kan-hjelpe: en nabo som kan stille opp når noen trenger det - wants: å bli spurt når det passer. Handled by nabohjelp. Stages: open -> registrert -> trukket. +- dele-utstyr: en nabo som har noe å låne ut, eller trenger å låne noe - wants: et oppslag som naboene ser. Handled by styret. Stages: open -> lagt_ut -> tatt_ned. +- utlegg: en i en komité som har lagt ut for noe - wants: pengene tilbake. Handled by kasserer. Stages: open -> godkjent -> utbetalt -> avvist. + +The page: questions/trafikkomite/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. +- The button says what pressing it does; the encouragement says what happens next or how little it takes; the form's guidance line says what to have ready. Placeholders are example answers in the reader's words. +- An icon is one name from this list, chosen for what the reader is doing, or empty: house, building-2, store, school, map-pin, route, footprints, trees, leaf, snowflake, sun, users, user, user-plus, user-check, baby, heart-handshake, hand-helping, handshake, smile, mail, phone, message-circle, megaphone, bell, send, inbox, alert-triangle, siren, shield, construction, hammer, wrench, ruler, package, truck, car, bus, train-front, bike, calendar, clock, file-text, clipboard-list, receipt, wallet, coins, banknote, credit-card, key, lock, search, star, gift, shopping-cart, lightbulb, flag, thumbs-up, check-circle, briefcase, stethoscope, activity, camera, pencil, refresh-cw, list, layers, vote, scale +- Write the way people in this trade and country actually speak. + +{ + "buckets": { + "trafikkmeldinger": { + "description": "", + "heading": "", + "moves": { + "open->avvist": "avvist>", + "open->tatt_opp": "tatt_opp>", + "tatt_opp->avvist": "avvist>", + "tatt_opp->ordnet": "ordnet>" + } + } + }, + "confirm": "", + "description": "", + "links": {}, + "question": "" +} + +Reply with the JSON object only. + +=== REPLY === +```json +{ + "buckets": { + "trafikkmeldinger": { + "description": "Meldinger fra naboer om farlige steder i trafikken, klare til å tas videre.", + "heading": "Trafikkfarer meldt av naboer", + "moves": { + "open->avvist": "Avvis meldingen", + "open->tatt_opp": "Ta opp med kommunen", + "tatt_opp->avvist": "Avvis saken", + "tatt_opp->ordnet": "Meld som ordnet" + } + } + }, + "confirm": "Lagre", + "description": "Her følger trafikkomiteen opp meldinger om farlige steder i trafikken.", + "links": {}, + "question": "Hvilke trafikkfarer må vi følge opp nå?" +} +``` diff --git a/runs/tomtervel-cards-2026-09-23/model.json b/runs/tomtervel-cards-2026-09-23/model.json new file mode 100644 index 0000000..22bdc8f --- /dev/null +++ b/runs/tomtervel-cards-2026-09-23/model.json @@ -0,0 +1,1467 @@ +{ + "buckets": { + "anleggsfeil": { + "desks": [ + { + "group": "lekeplasskomite", + "moves": [ + { + "from": "open", + "label": "Ta tak i saken", + "to": "tatt_tak_i" + }, + { + "from": "tatt_tak_i", + "label": "Merk som utbedret", + "to": "utbedret" + } + ], + "page": "/lekeplasskomite" + } + ], + "initial": "open", + "self_moves": [], + "transitions": { + "open": [ + "tatt_tak_i" + ], + "tatt_tak_i": [ + "utbedret" + ] + } + }, + "frivillige": { + "desks": [ + { + "group": "arrangementskomite", + "moves": [ + { + "from": "kontaktet", + "label": "Sett opp på oppgave", + "to": "satt_opp" + }, + { + "from": "kontaktet", + "label": "Meld takket nei", + "to": "takket_nei" + }, + { + "from": "open", + "label": "Merk som kontaktet", + "to": "kontaktet" + }, + { + "from": "open", + "label": "Meld takket nei", + "to": "takket_nei" + } + ], + "page": "/arrangementskomite" + } + ], + "initial": "open", + "self_moves": [], + "transitions": { + "kontaktet": [ + "satt_opp", + "takket_nei" + ], + "open": [ + "kontaktet", + "takket_nei" + ] + } + }, + "hjelpebehov": { + "desks": [ + { + "group": "nabohjelp", + "moves": [ + { + "from": "formidlet", + "label": "Marker som ordnet", + "to": "ordnet" + }, + { + "from": "formidlet", + "label": "Fant ingen løsning", + "to": "ikke_lost" + }, + { + "from": "open", + "label": "Sett i kontakt med nabo", + "to": "formidlet" + }, + { + "from": "open", + "label": "Fant ingen løsning", + "to": "ikke_lost" + } + ], + "page": "/nabohjelp" + } + ], + "initial": "open", + "self_moves": [ + "ordnet" + ], + "transitions": { + "formidlet": [ + "ordnet", + "ikke_lost" + ], + "open": [ + "formidlet", + "ikke_lost" + ] + } + }, + "hjelpere": { + "desks": [ + { + "group": "nabohjelp", + "moves": [ + { + "from": "open", + "label": "Registrer som hjelper", + "to": "registrert" + }, + { + "from": "open", + "label": "Fjern fra listen", + "to": "trukket" + } + ], + "page": "/nabohjelp" + } + ], + "initial": "open", + "self_moves": [ + "trukket" + ], + "transitions": { + "open": [ + "registrert", + "trukket" + ] + } + }, + "husstander": { + "desks": [ + { + "group": "kasserer", + "moves": [ + { + "from": "open", + "label": "Merk som betalt", + "to": "betalt" + }, + { + "from": "open", + "label": "Meld ut", + "to": "utmeldt" + } + ], + "page": "/kasserer" + } + ], + "initial": "open", + "self_moves": [], + "transitions": { + "open": [ + "betalt", + "utmeldt" + ] + } + }, + "innspill": { + "desks": [ + { + "group": "styret", + "moves": [ + { + "from": "open", + "label": "Ta med i svaret", + "to": "tatt_med" + }, + { + "from": "open", + "label": "Ikke ta med", + "to": "ikke_tatt_med" + } + ], + "page": "/styret" + } + ], + "initial": "open", + "self_moves": [], + "transitions": { + "open": [ + "tatt_med", + "ikke_tatt_med" + ] + } + }, + "komitesoknader": { + "desks": [ + { + "group": "styret", + "moves": [ + { + "from": "open", + "label": "Plasser i komité", + "to": "plassert" + }, + { + "from": "open", + "label": "Avslå søknaden", + "to": "avslatt" + } + ], + "page": "/styret" + } + ], + "initial": "open", + "self_moves": [], + "transitions": { + "open": [ + "plassert", + "avslatt" + ] + } + }, + "medlemsendringer": { + "desks": [ + { + "group": "kasserer", + "moves": [ + { + "from": "open", + "label": "Merk som oppdatert", + "to": "oppdatert" + } + ], + "page": "/kasserer" + } + ], + "initial": "open", + "self_moves": [], + "transitions": { + "open": [ + "oppdatert" + ] + } + }, + "oppslag": { + "desks": [ + { + "group": "styret", + "moves": [ + { + "from": "open", + "label": "Legg ut oppslag", + "to": "lagt_ut" + }, + { + "from": "open", + "label": "Ta ned oppslag", + "to": "tatt_ned" + } + ], + "page": "/styret" + } + ], + "initial": "open", + "self_moves": [ + "tatt_ned" + ], + "transitions": { + "open": [ + "lagt_ut", + "tatt_ned" + ] + } + }, + "trafikkmeldinger": { + "desks": [ + { + "group": "styret", + "moves": [], + "page": "/styret" + }, + { + "group": "trafikkomite", + "moves": [ + { + "from": "open", + "label": "Ta opp med kommunen", + "to": "tatt_opp" + }, + { + "from": "open", + "label": "Avvis meldingen", + "to": "avvist" + }, + { + "from": "tatt_opp", + "label": "Meld som ordnet", + "to": "ordnet" + }, + { + "from": "tatt_opp", + "label": "Avvis saken", + "to": "avvist" + } + ], + "page": "/trafikkomite" + } + ], + "initial": "open", + "self_moves": [], + "transitions": { + "open": [ + "tatt_opp", + "avvist" + ], + "tatt_opp": [ + "ordnet", + "avvist" + ] + } + }, + "utlegg": { + "desks": [ + { + "group": "kasserer", + "moves": [ + { + "from": "godkjent", + "label": "Merk som utbetalt", + "to": "utbetalt" + }, + { + "from": "godkjent", + "label": "Avvis likevel", + "to": "avvist" + }, + { + "from": "open", + "label": "Godkjenn utlegget", + "to": "godkjent" + }, + { + "from": "open", + "label": "Avvis utlegget", + "to": "avvist" + } + ], + "page": "/kasserer" + } + ], + "initial": "open", + "self_moves": [], + "transitions": { + "godkjent": [ + "utbetalt", + "avvist" + ], + "open": [ + "godkjent", + "avvist" + ] + } + } + }, + "needs": [ + { + "done_when": [ + "betalt", + "utmeldt" + ], + "enters_as": null, + "handled_by": "kasserer", + "id": "bli-medlem", + "lands_in": "husstander", + "steps": [ + { + "alternative": "Bli medlem eller endre opplysningene dine", + "expect": [ + "Bli medlem eller endre opplysningene dine" + ], + "fields": [], + "options": [ + { + "description": "Meld deg inn i Tomter Vel, eller gi oss beskjed om noe har endret seg hos deg.", + "name": "Bli medlem eller endre opplysningene dine" + }, + { + "description": "Har du sett noe farlig i trafikken eller noe som er ødelagt på lekeplassen eller stien? Gi oss beskjed.", + "name": "Meld fra om noe som ikke er som det skal" + }, + { + "description": "Har du en mening om en sak, eller lyst til å stille opp for nabolaget? Her kan du si ifra eller melde deg.", + "name": "Si din mening eller gi en hånd" + }, + { + "description": "Trenger du en hånd, kan du stille opp for andre, eller har du noe å låne ut? Her møtes naboer.", + "name": "Få hjelp fra naboer, eller gi en hånd" + } + ], + "page": "/", + "question": "Hva vil du gjøre i dag?" + }, + { + "alternative": "Bli medlem av velet", + "expect": [ + "Bli medlem av velet" + ], + "fields": [ + { + "label": "Navn", + "name": "navn", + "optional": false, + "options": [], + "type": "text" + }, + { + "label": "Adresse", + "name": "adresse", + "optional": false, + "options": [], + "type": "text" + }, + { + "label": "E-post", + "name": "epost", + "optional": false, + "options": [], + "type": "email" + }, + { + "label": "Telefon", + "name": "telefon", + "optional": true, + "options": [], + "type": "tel" + } + ], + "options": [ + { + "description": "Meld deg inn i Tomter Vel, så tar vi vare på nabolaget sammen. Du får en giro på kontingenten når vi har registrert deg.", + "name": "Bli medlem av velet" + }, + { + "description": "Har du flyttet, byttet e-post eller vil melde deg ut? Si fra her, så retter vi opp i listene våre.", + "name": "Oppdater opplysningene dine" + } + ], + "page": "/medlem", + "question": "Vil du bli medlem, eller endre opplysningene dine?" + } + ], + "success": [ + "betalt" + ], + "wants": "å bli medlem og få betalt kontingenten", + "who": "en husstand i Tomter" + }, + { + "done_when": [ + "oppdatert" + ], + "enters_as": null, + "handled_by": "kasserer", + "id": "endre-medlemskap", + "lands_in": "medlemsendringer", + "steps": [ + { + "alternative": "Bli medlem eller endre opplysningene dine", + "expect": [ + "Bli medlem eller endre opplysningene dine" + ], + "fields": [], + "options": [ + { + "description": "Meld deg inn i Tomter Vel, eller gi oss beskjed om noe har endret seg hos deg.", + "name": "Bli medlem eller endre opplysningene dine" + }, + { + "description": "Har du sett noe farlig i trafikken eller noe som er ødelagt på lekeplassen eller stien? Gi oss beskjed.", + "name": "Meld fra om noe som ikke er som det skal" + }, + { + "description": "Har du en mening om en sak, eller lyst til å stille opp for nabolaget? Her kan du si ifra eller melde deg.", + "name": "Si din mening eller gi en hånd" + }, + { + "description": "Trenger du en hånd, kan du stille opp for andre, eller har du noe å låne ut? Her møtes naboer.", + "name": "Få hjelp fra naboer, eller gi en hånd" + } + ], + "page": "/", + "question": "Hva vil du gjøre i dag?" + }, + { + "alternative": "Oppdater opplysningene dine", + "expect": [ + "Oppdater opplysningene dine" + ], + "fields": [ + { + "label": "Navn", + "name": "navn", + "optional": false, + "options": [], + "type": "text" + }, + { + "label": "Adresse", + "name": "adresse", + "optional": false, + "options": [], + "type": "text" + }, + { + "label": "Hva vil du endre?", + "name": "hva_er_nytt", + "optional": false, + "options": [], + "type": "textarea" + } + ], + "options": [ + { + "description": "Meld deg inn i Tomter Vel, så tar vi vare på nabolaget sammen. Du får en giro på kontingenten når vi har registrert deg.", + "name": "Bli medlem av velet" + }, + { + "description": "Har du flyttet, byttet e-post eller vil melde deg ut? Si fra her, så retter vi opp i listene våre.", + "name": "Oppdater opplysningene dine" + } + ], + "page": "/medlem", + "question": "Vil du bli medlem, eller endre opplysningene dine?" + } + ], + "success": [ + "oppdatert" + ], + "wants": "at velet har riktige opplysninger om dem", + "who": "et medlem som har flyttet, byttet e-post eller vil melde seg ut" + }, + { + "done_when": [ + "ordnet", + "avvist" + ], + "enters_as": null, + "handled_by": "trafikkomite", + "id": "trafikkfare", + "lands_in": "trafikkmeldinger", + "steps": [ + { + "alternative": "Meld fra om noe som ikke er som det skal", + "expect": [ + "Meld fra om noe som ikke er som det skal" + ], + "fields": [], + "options": [ + { + "description": "Meld deg inn i Tomter Vel, eller gi oss beskjed om noe har endret seg hos deg.", + "name": "Bli medlem eller endre opplysningene dine" + }, + { + "description": "Har du sett noe farlig i trafikken eller noe som er ødelagt på lekeplassen eller stien? Gi oss beskjed.", + "name": "Meld fra om noe som ikke er som det skal" + }, + { + "description": "Har du en mening om en sak, eller lyst til å stille opp for nabolaget? Her kan du si ifra eller melde deg.", + "name": "Si din mening eller gi en hånd" + }, + { + "description": "Trenger du en hånd, kan du stille opp for andre, eller har du noe å låne ut? Her møtes naboer.", + "name": "Få hjelp fra naboer, eller gi en hånd" + } + ], + "page": "/", + "question": "Hva vil du gjøre i dag?" + }, + { + "alternative": "Gjør trafikken tryggere der du bor", + "expect": [ + "Gjør trafikken tryggere der du bor" + ], + "fields": [ + { + "label": "Hvor er det?", + "name": "hvor", + "optional": false, + "options": [], + "type": "text" + }, + { + "label": "Hva har du sett?", + "name": "hva", + "optional": false, + "options": [], + "type": "textarea" + }, + { + "label": "E-post", + "name": "epost", + "optional": true, + "options": [], + "type": "email" + } + ], + "options": [ + { + "description": "Har du sett et farlig sted i trafikken, som dårlig sikt eller en vei uten fortau? Fortell oss om det, så tar vi det videre med kommunen.", + "name": "Gjør trafikken tryggere der du bor" + }, + { + "description": "Er noe på lekeplassen eller stien ødelagt eller farlig? Fortell oss hvor og hva, så tar lekeplasskomiteen tak i det.", + "name": "Få fikset noe som er ødelagt" + } + ], + "page": "/melde-fra", + "question": "Har du sett noe i nabolaget som bør meldes fra om?" + } + ], + "success": [ + "ordnet" + ], + "wants": "at velet tar det opp med kommunen eller den som eier veien", + "who": "en som har sett et farlig sted i trafikken" + }, + { + "done_when": [ + "utbedret" + ], + "enters_as": null, + "handled_by": "lekeplasskomite", + "id": "anleggsfeil", + "lands_in": "anleggsfeil", + "steps": [ + { + "alternative": "Meld fra om noe som ikke er som det skal", + "expect": [ + "Meld fra om noe som ikke er som det skal" + ], + "fields": [], + "options": [ + { + "description": "Meld deg inn i Tomter Vel, eller gi oss beskjed om noe har endret seg hos deg.", + "name": "Bli medlem eller endre opplysningene dine" + }, + { + "description": "Har du sett noe farlig i trafikken eller noe som er ødelagt på lekeplassen eller stien? Gi oss beskjed.", + "name": "Meld fra om noe som ikke er som det skal" + }, + { + "description": "Har du en mening om en sak, eller lyst til å stille opp for nabolaget? Her kan du si ifra eller melde deg.", + "name": "Si din mening eller gi en hånd" + }, + { + "description": "Trenger du en hånd, kan du stille opp for andre, eller har du noe å låne ut? Her møtes naboer.", + "name": "Få hjelp fra naboer, eller gi en hånd" + } + ], + "page": "/", + "question": "Hva vil du gjøre i dag?" + }, + { + "alternative": "Få fikset noe som er ødelagt", + "expect": [ + "Få fikset noe som er ødelagt" + ], + "fields": [ + { + "label": "Hvor er det?", + "name": "hvor", + "optional": false, + "options": [ + "Lekeplassen", + "Elvestien", + "Skøytebanen", + "Et annet sted" + ], + "type": "select" + }, + { + "label": "Hva har du sett?", + "name": "hva", + "optional": false, + "options": [], + "type": "textarea" + } + ], + "options": [ + { + "description": "Har du sett et farlig sted i trafikken, som dårlig sikt eller en vei uten fortau? Fortell oss om det, så tar vi det videre med kommunen.", + "name": "Gjør trafikken tryggere der du bor" + }, + { + "description": "Er noe på lekeplassen eller stien ødelagt eller farlig? Fortell oss hvor og hva, så tar lekeplasskomiteen tak i det.", + "name": "Få fikset noe som er ødelagt" + } + ], + "page": "/melde-fra", + "question": "Har du sett noe i nabolaget som bør meldes fra om?" + } + ], + "success": [ + "utbedret" + ], + "wants": "at det blir fikset før noen skader seg", + "who": "en som ser at noe på lekeplassen eller stien er ødelagt" + }, + { + "done_when": [ + "tatt_med", + "ikke_tatt_med" + ], + "enters_as": null, + "handled_by": "styret", + "id": "horingsinnspill", + "lands_in": "innspill", + "steps": [ + { + "alternative": "Si din mening eller gi en hånd", + "expect": [ + "Si din mening eller gi en hånd" + ], + "fields": [], + "options": [ + { + "description": "Meld deg inn i Tomter Vel, eller gi oss beskjed om noe har endret seg hos deg.", + "name": "Bli medlem eller endre opplysningene dine" + }, + { + "description": "Har du sett noe farlig i trafikken eller noe som er ødelagt på lekeplassen eller stien? Gi oss beskjed.", + "name": "Meld fra om noe som ikke er som det skal" + }, + { + "description": "Har du en mening om en sak, eller lyst til å stille opp for nabolaget? Her kan du si ifra eller melde deg.", + "name": "Si din mening eller gi en hånd" + }, + { + "description": "Trenger du en hånd, kan du stille opp for andre, eller har du noe å låne ut? Her møtes naboer.", + "name": "Få hjelp fra naboer, eller gi en hånd" + } + ], + "page": "/", + "question": "Hva vil du gjøre i dag?" + }, + { + "alternative": "Få din mening med i velets høringssvar", + "expect": [ + "Få din mening med i velets høringssvar" + ], + "fields": [ + { + "label": "Navn", + "name": "navn", + "optional": false, + "options": [], + "type": "text" + }, + { + "label": "Hvilken sak gjelder det?", + "name": "sak", + "optional": false, + "options": [], + "type": "text" + }, + { + "label": "Hva mener du?", + "name": "innspill", + "optional": false, + "options": [], + "type": "textarea" + } + ], + "options": [ + { + "description": "Har kommunen en sak på høring du mener noe om? Send det til oss, så tar vi det med i vårt svar.", + "name": "Få din mening med i velets høringssvar" + }, + { + "description": "Vi trenger folk på 17. mai, dugnader og andre arrangementer i løpet av året.", + "name": "Bli med på et arrangement eller en dugnad" + }, + { + "description": "Velet drives av sju komiteer på fritida. Er det noe du brenner for, er det plass til deg.", + "name": "Få en plass i komiteen du brenner for" + } + ], + "page": "/bidra", + "question": "Hvordan vil du bidra?" + } + ], + "success": [ + "tatt_med" + ], + "wants": "at velet tar det med i sitt svar", + "who": "en beboer som har en mening om en sak kommunen har på høring" + }, + { + "done_when": [ + "satt_opp", + "takket_nei" + ], + "enters_as": null, + "handled_by": "arrangementskomite", + "id": "hjelpe-til", + "lands_in": "frivillige", + "steps": [ + { + "alternative": "Si din mening eller gi en hånd", + "expect": [ + "Si din mening eller gi en hånd" + ], + "fields": [], + "options": [ + { + "description": "Meld deg inn i Tomter Vel, eller gi oss beskjed om noe har endret seg hos deg.", + "name": "Bli medlem eller endre opplysningene dine" + }, + { + "description": "Har du sett noe farlig i trafikken eller noe som er ødelagt på lekeplassen eller stien? Gi oss beskjed.", + "name": "Meld fra om noe som ikke er som det skal" + }, + { + "description": "Har du en mening om en sak, eller lyst til å stille opp for nabolaget? Her kan du si ifra eller melde deg.", + "name": "Si din mening eller gi en hånd" + }, + { + "description": "Trenger du en hånd, kan du stille opp for andre, eller har du noe å låne ut? Her møtes naboer.", + "name": "Få hjelp fra naboer, eller gi en hånd" + } + ], + "page": "/", + "question": "Hva vil du gjøre i dag?" + }, + { + "alternative": "Bli med på et arrangement eller en dugnad", + "expect": [ + "Bli med på et arrangement eller en dugnad" + ], + "fields": [ + { + "label": "Navn", + "name": "navn", + "optional": false, + "options": [], + "type": "text" + }, + { + "label": "Telefon", + "name": "telefon", + "optional": false, + "options": [], + "type": "tel" + }, + { + "label": "Hva vil du hjelpe til med?", + "name": "hva", + "optional": false, + "options": [ + "17. mai", + "Juletregranstenning", + "Skøytedag", + "Dugnad på elvestien", + "Det som trengs" + ], + "type": "select" + } + ], + "options": [ + { + "description": "Har kommunen en sak på høring du mener noe om? Send det til oss, så tar vi det med i vårt svar.", + "name": "Få din mening med i velets høringssvar" + }, + { + "description": "Vi trenger folk på 17. mai, dugnader og andre arrangementer i løpet av året.", + "name": "Bli med på et arrangement eller en dugnad" + }, + { + "description": "Velet drives av sju komiteer på fritida. Er det noe du brenner for, er det plass til deg.", + "name": "Få en plass i komiteen du brenner for" + } + ], + "page": "/bidra", + "question": "Hvordan vil du bidra?" + } + ], + "success": [ + "satt_opp" + ], + "wants": "å bli satt opp på noe som passer dem", + "who": "en som vil hjelpe til på et arrangement eller en dugnad" + }, + { + "done_when": [ + "plassert", + "avslatt" + ], + "enters_as": null, + "handled_by": "styret", + "id": "komite", + "lands_in": "komitesoknader", + "steps": [ + { + "alternative": "Si din mening eller gi en hånd", + "expect": [ + "Si din mening eller gi en hånd" + ], + "fields": [], + "options": [ + { + "description": "Meld deg inn i Tomter Vel, eller gi oss beskjed om noe har endret seg hos deg.", + "name": "Bli medlem eller endre opplysningene dine" + }, + { + "description": "Har du sett noe farlig i trafikken eller noe som er ødelagt på lekeplassen eller stien? Gi oss beskjed.", + "name": "Meld fra om noe som ikke er som det skal" + }, + { + "description": "Har du en mening om en sak, eller lyst til å stille opp for nabolaget? Her kan du si ifra eller melde deg.", + "name": "Si din mening eller gi en hånd" + }, + { + "description": "Trenger du en hånd, kan du stille opp for andre, eller har du noe å låne ut? Her møtes naboer.", + "name": "Få hjelp fra naboer, eller gi en hånd" + } + ], + "page": "/", + "question": "Hva vil du gjøre i dag?" + }, + { + "alternative": "Få en plass i komiteen du brenner for", + "expect": [ + "Få en plass i komiteen du brenner for" + ], + "fields": [ + { + "label": "Navn", + "name": "navn", + "optional": false, + "options": [], + "type": "text" + }, + { + "label": "E-post", + "name": "epost", + "optional": false, + "options": [], + "type": "email" + }, + { + "label": "Hvilken komité?", + "name": "komite", + "optional": false, + "options": [ + "Arrangementer", + "Elvesti", + "Høringsinstans", + "Leke- og møteplasser", + "Miljøgate", + "Pendlerforhold", + "Trafikkforhold" + ], + "type": "select" + } + ], + "options": [ + { + "description": "Har kommunen en sak på høring du mener noe om? Send det til oss, så tar vi det med i vårt svar.", + "name": "Få din mening med i velets høringssvar" + }, + { + "description": "Vi trenger folk på 17. mai, dugnader og andre arrangementer i løpet av året.", + "name": "Bli med på et arrangement eller en dugnad" + }, + { + "description": "Velet drives av sju komiteer på fritida. Er det noe du brenner for, er det plass til deg.", + "name": "Få en plass i komiteen du brenner for" + } + ], + "page": "/bidra", + "question": "Hvordan vil du bidra?" + } + ], + "success": [ + "plassert" + ], + "wants": "en plass i den komiteen som driver med det de bryr seg om", + "who": "en som vil sitte i en komité" + }, + { + "done_when": [ + "ordnet", + "ikke_lost" + ], + "enters_as": null, + "handled_by": "nabohjelp", + "id": "trenger-hjelp", + "lands_in": "hjelpebehov", + "steps": [ + { + "alternative": "Få hjelp fra naboer, eller gi en hånd", + "expect": [ + "Få hjelp fra naboer, eller gi en hånd" + ], + "fields": [], + "options": [ + { + "description": "Meld deg inn i Tomter Vel, eller gi oss beskjed om noe har endret seg hos deg.", + "name": "Bli medlem eller endre opplysningene dine" + }, + { + "description": "Har du sett noe farlig i trafikken eller noe som er ødelagt på lekeplassen eller stien? Gi oss beskjed.", + "name": "Meld fra om noe som ikke er som det skal" + }, + { + "description": "Har du en mening om en sak, eller lyst til å stille opp for nabolaget? Her kan du si ifra eller melde deg.", + "name": "Si din mening eller gi en hånd" + }, + { + "description": "Trenger du en hånd, kan du stille opp for andre, eller har du noe å låne ut? Her møtes naboer.", + "name": "Få hjelp fra naboer, eller gi en hånd" + } + ], + "page": "/", + "question": "Hva vil du gjøre i dag?" + }, + { + "alternative": "Få en nabo til å stille opp", + "expect": [ + "Få en nabo til å stille opp" + ], + "fields": [ + { + "label": "Navn", + "name": "navn", + "optional": false, + "options": [], + "type": "text" + }, + { + "label": "E-post", + "name": "email", + "optional": false, + "options": [], + "type": "email" + }, + { + "label": "Adresse", + "name": "adresse", + "optional": false, + "options": [], + "type": "text" + }, + { + "label": "Hva trenger du hjelp til?", + "name": "hva", + "optional": false, + "options": [], + "type": "textarea" + }, + { + "label": "Telefon", + "name": "telefon", + "optional": true, + "options": [], + "type": "tel" + } + ], + "options": [ + { + "description": "Får du ikke til snømåking, handling eller en skyss akkurat nå? Si fra, så finner vi en nabo som kan stille opp.", + "name": "Få en nabo til å stille opp" + }, + { + "description": "Meld deg som nabohjelp, så blir du spurt når noen i nærheten trenger en hånd.", + "name": "Bli spurt når en nabo trenger en hånd" + }, + { + "description": "Har du noe naboene kan låne, eller trenger du å låne noe selv? Legg ut et oppslag så ser de andre i Tomter det.", + "name": "Lån ut eller lån det naboene trenger" + } + ], + "page": "/naboer", + "question": "Trenger du en hånd, eller kan du stille opp for en nabo?" + } + ], + "success": [ + "ordnet" + ], + "wants": "at en nabo stiller opp", + "who": "en beboer som ikke får til noe selv for tiden, som snømåking, handling eller en skyss" + }, + { + "done_when": [ + "registrert", + "trukket" + ], + "enters_as": null, + "handled_by": "nabohjelp", + "id": "kan-hjelpe", + "lands_in": "hjelpere", + "steps": [ + { + "alternative": "Få hjelp fra naboer, eller gi en hånd", + "expect": [ + "Få hjelp fra naboer, eller gi en hånd" + ], + "fields": [], + "options": [ + { + "description": "Meld deg inn i Tomter Vel, eller gi oss beskjed om noe har endret seg hos deg.", + "name": "Bli medlem eller endre opplysningene dine" + }, + { + "description": "Har du sett noe farlig i trafikken eller noe som er ødelagt på lekeplassen eller stien? Gi oss beskjed.", + "name": "Meld fra om noe som ikke er som det skal" + }, + { + "description": "Har du en mening om en sak, eller lyst til å stille opp for nabolaget? Her kan du si ifra eller melde deg.", + "name": "Si din mening eller gi en hånd" + }, + { + "description": "Trenger du en hånd, kan du stille opp for andre, eller har du noe å låne ut? Her møtes naboer.", + "name": "Få hjelp fra naboer, eller gi en hånd" + } + ], + "page": "/", + "question": "Hva vil du gjøre i dag?" + }, + { + "alternative": "Bli spurt når en nabo trenger en hånd", + "expect": [ + "Bli spurt når en nabo trenger en hånd" + ], + "fields": [ + { + "label": "Navn", + "name": "navn", + "optional": false, + "options": [], + "type": "text" + }, + { + "label": "E-post", + "name": "email", + "optional": false, + "options": [], + "type": "email" + }, + { + "label": "Telefon", + "name": "telefon", + "optional": false, + "options": [], + "type": "tel" + }, + { + "label": "Hva kan du hjelpe med?", + "name": "kan", + "optional": false, + "options": [ + "Snømåking", + "Handling", + "Kjøring", + "Småfiks i huset", + "En prat og litt selskap", + "Det som trengs" + ], + "type": "select" + } + ], + "options": [ + { + "description": "Får du ikke til snømåking, handling eller en skyss akkurat nå? Si fra, så finner vi en nabo som kan stille opp.", + "name": "Få en nabo til å stille opp" + }, + { + "description": "Meld deg som nabohjelp, så blir du spurt når noen i nærheten trenger en hånd.", + "name": "Bli spurt når en nabo trenger en hånd" + }, + { + "description": "Har du noe naboene kan låne, eller trenger du å låne noe selv? Legg ut et oppslag så ser de andre i Tomter det.", + "name": "Lån ut eller lån det naboene trenger" + } + ], + "page": "/naboer", + "question": "Trenger du en hånd, eller kan du stille opp for en nabo?" + } + ], + "success": [ + "registrert" + ], + "wants": "å bli spurt når det passer", + "who": "en nabo som kan stille opp når noen trenger det" + }, + { + "done_when": [ + "lagt_ut", + "tatt_ned" + ], + "enters_as": null, + "handled_by": "styret", + "id": "dele-utstyr", + "lands_in": "oppslag", + "steps": [ + { + "alternative": "Få hjelp fra naboer, eller gi en hånd", + "expect": [ + "Få hjelp fra naboer, eller gi en hånd" + ], + "fields": [], + "options": [ + { + "description": "Meld deg inn i Tomter Vel, eller gi oss beskjed om noe har endret seg hos deg.", + "name": "Bli medlem eller endre opplysningene dine" + }, + { + "description": "Har du sett noe farlig i trafikken eller noe som er ødelagt på lekeplassen eller stien? Gi oss beskjed.", + "name": "Meld fra om noe som ikke er som det skal" + }, + { + "description": "Har du en mening om en sak, eller lyst til å stille opp for nabolaget? Her kan du si ifra eller melde deg.", + "name": "Si din mening eller gi en hånd" + }, + { + "description": "Trenger du en hånd, kan du stille opp for andre, eller har du noe å låne ut? Her møtes naboer.", + "name": "Få hjelp fra naboer, eller gi en hånd" + } + ], + "page": "/", + "question": "Hva vil du gjøre i dag?" + }, + { + "alternative": "Lån ut eller lån det naboene trenger", + "expect": [ + "Lån ut eller lån det naboene trenger" + ], + "fields": [ + { + "label": "Navn", + "name": "navn", + "optional": false, + "options": [], + "type": "text" + }, + { + "label": "E-post", + "name": "email", + "optional": false, + "options": [], + "type": "email" + }, + { + "label": "Har du, eller trenger du?", + "name": "har_eller_trenger", + "optional": false, + "options": [ + "Jeg har noe å låne ut", + "Jeg trenger å låne noe" + ], + "type": "select" + }, + { + "label": "Hva gjelder det?", + "name": "hva", + "optional": false, + "options": [], + "type": "textarea" + } + ], + "options": [ + { + "description": "Får du ikke til snømåking, handling eller en skyss akkurat nå? Si fra, så finner vi en nabo som kan stille opp.", + "name": "Få en nabo til å stille opp" + }, + { + "description": "Meld deg som nabohjelp, så blir du spurt når noen i nærheten trenger en hånd.", + "name": "Bli spurt når en nabo trenger en hånd" + }, + { + "description": "Har du noe naboene kan låne, eller trenger du å låne noe selv? Legg ut et oppslag så ser de andre i Tomter det.", + "name": "Lån ut eller lån det naboene trenger" + } + ], + "page": "/naboer", + "question": "Trenger du en hånd, eller kan du stille opp for en nabo?" + } + ], + "success": [ + "lagt_ut" + ], + "wants": "et oppslag som naboene ser", + "who": "en nabo som har noe å låne ut, eller trenger å låne noe" + }, + { + "done_when": [ + "utbetalt", + "avvist" + ], + "enters_as": "komiteer", + "handled_by": "kasserer", + "id": "utlegg", + "lands_in": "utlegg", + "steps": [ + { + "alternative": "Få tilbake det du har lagt ut", + "expect": [ + "Få tilbake det du har lagt ut" + ], + "fields": [ + { + "label": "Navn", + "name": "navn", + "optional": false, + "options": [], + "type": "text" + }, + { + "label": "Beløp", + "name": "belop", + "optional": false, + "options": [], + "type": "text" + }, + { + "label": "Hva gjaldt det", + "name": "hva", + "optional": false, + "options": [], + "type": "textarea" + } + ], + "options": [ + { + "description": "Har du lagt ut for noe til et arrangement, dugnad eller annet i regi av velet? Send inn så får du pengene tilbake.", + "name": "Få tilbake det du har lagt ut" + } + ], + "page": "/komiteer/utlegg", + "question": "Har du lagt ut penger for velet som du skal ha tilbake?" + } + ], + "success": [ + "utbetalt" + ], + "wants": "pengene tilbake", + "who": "en i en komité som har lagt ut for noe" + } + ], + "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." + } + ] +} \ No newline at end of file diff --git a/runs/tomtervel-cards-2026-09-23/needs.yaml b/runs/tomtervel-cards-2026-09-23/needs.yaml new file mode 100644 index 0000000..9ffb3ed --- /dev/null +++ b/runs/tomtervel-cards-2026-09-23/needs.yaml @@ -0,0 +1,265 @@ +needs: +- done_when: + - betalt + - utmeldt + enters: / + handled_by: kasserer + id: bli-medlem + lands_in: husstander + max_fields: 3 + max_steps: 2 + stages: + - open + - betalt + - utmeldt + success: + - betalt + via: Bli medlem eller endre opplysningene dine + wants: å bli medlem og få betalt kontingenten + who: en husstand i Tomter +- done_when: + - oppdatert + enters: / + handled_by: kasserer + id: endre-medlemskap + lands_in: medlemsendringer + max_fields: 3 + max_steps: 2 + stages: + - open + - oppdatert + success: + - oppdatert + via: Bli medlem eller endre opplysningene dine + wants: at velet har riktige opplysninger om dem + who: et medlem som har flyttet, byttet e-post eller vil melde seg ut +- done_when: + - ordnet + - avvist + enters: / + handled_by: trafikkomite + id: trafikkfare + lands_in: trafikkmeldinger + max_fields: 2 + max_steps: 2 + stages: + - open + - tatt_opp + - ordnet + - avvist + success: + - ordnet + via: Meld fra om noe som ikke er som det skal + wants: at velet tar det opp med kommunen eller den som eier veien + who: en som har sett et farlig sted i trafikken +- done_when: + - utbedret + enters: / + handled_by: lekeplasskomite + id: anleggsfeil + lands_in: anleggsfeil + max_fields: 2 + max_steps: 2 + stages: + - open + - tatt_tak_i + - utbedret + success: + - utbedret + via: Meld fra om noe som ikke er som det skal + wants: at det blir fikset før noen skader seg + who: en som ser at noe på lekeplassen eller stien er ødelagt +- done_when: + - tatt_med + - ikke_tatt_med + enters: / + handled_by: styret + id: horingsinnspill + lands_in: innspill + max_fields: 3 + max_steps: 2 + stages: + - open + - tatt_med + - ikke_tatt_med + success: + - tatt_med + via: Si din mening eller gi en hånd + wants: at velet tar det med i sitt svar + who: en beboer som har en mening om en sak kommunen har på høring +- done_when: + - satt_opp + - takket_nei + enters: / + handled_by: arrangementskomite + id: hjelpe-til + lands_in: frivillige + max_fields: 3 + max_steps: 2 + stages: + - open + - kontaktet + - satt_opp + - takket_nei + success: + - satt_opp + via: Si din mening eller gi en hånd + wants: å bli satt opp på noe som passer dem + who: en som vil hjelpe til på et arrangement eller en dugnad +- done_when: + - plassert + - avslatt + enters: / + handled_by: styret + id: komite + lands_in: komitesoknader + max_fields: 3 + max_steps: 2 + stages: + - open + - plassert + - avslatt + success: + - plassert + via: Si din mening eller gi en hånd + wants: en plass i den komiteen som driver med det de bryr seg om + who: en som vil sitte i en komité +- done_when: + - ordnet + - ikke_lost + enters: / + handled_by: nabohjelp + id: trenger-hjelp + lands_in: hjelpebehov + max_fields: 4 + max_steps: 2 + stages: + - open + - formidlet + - ordnet + - ikke_lost + success: + - ordnet + via: Få hjelp fra naboer, eller gi en hånd + wants: at en nabo stiller opp + who: en beboer som ikke får til noe selv for tiden, som snømåking, handling eller en skyss +- done_when: + - registrert + - trukket + enters: / + handled_by: nabohjelp + id: kan-hjelpe + lands_in: hjelpere + max_fields: 4 + max_steps: 2 + stages: + - open + - registrert + - trukket + success: + - registrert + via: Få hjelp fra naboer, eller gi en hånd + wants: å bli spurt når det passer + who: en nabo som kan stille opp når noen trenger det +- done_when: + - lagt_ut + - tatt_ned + enters: / + handled_by: styret + id: dele-utstyr + lands_in: oppslag + max_fields: 4 + max_steps: 2 + stages: + - open + - lagt_ut + - tatt_ned + success: + - lagt_ut + via: Få hjelp fra naboer, eller gi en hånd + wants: et oppslag som naboene ser + who: en nabo som har noe å låne ut, eller trenger å låne noe +- done_when: + - utbetalt + - avvist + enters: /komiteer/utlegg + enters_as: komiteer + handled_by: kasserer + id: utlegg + lands_in: utlegg + max_fields: 3 + max_steps: 1 + stages: + - open + - godkjent + - utbetalt + - avvist + success: + - utbetalt + via: Få tilbake det du har lagt ut + wants: pengene tilbake + who: en i en komité som har lagt ut for noe +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. diff --git a/runs/tomtervel-cards-2026-09-23/questions/arrangementskomite/_section.yaml b/runs/tomtervel-cards-2026-09-23/questions/arrangementskomite/_section.yaml new file mode 100644 index 0000000..7c3b4ae --- /dev/null +++ b/runs/tomtervel-cards-2026-09-23/questions/arrangementskomite/_section.yaml @@ -0,0 +1 @@ +qualifies: arrangementskomite diff --git a/runs/tomtervel-cards-2026-09-23/questions/arrangementskomite/index.yaml b/runs/tomtervel-cards-2026-09-23/questions/arrangementskomite/index.yaml new file mode 100644 index 0000000..c0c2be3 --- /dev/null +++ b/runs/tomtervel-cards-2026-09-23/questions/arrangementskomite/index.yaml @@ -0,0 +1,32 @@ +alternatives: +- action: /arrangementskomite + consequence: + - Lagre + description: Alle som har sagt de vil hjelpe til på et arrangement eller en dugnad, og hvor langt du har kommet med å sette dem opp. + features: + - description: '' + name: '' + resource: + requires_group: arrangementskomite + source: + bucket: frivillige + kind: kv + transitions: + - from: kontaktet + label: Sett opp på oppgave + to: satt_opp + - from: kontaktet + label: Meld takket nei + to: takket_nei + - from: open + label: Merk som kontaktet + to: kontaktet + - from: open + label: Meld takket nei + to: takket_nei + name: Frivillige som venter på oppgave +description: Her holder du oversikt over alle som har meldt seg som frivillige, og setter dem opp på det som trengs. +name: Hvem kan jeg sette i sving nå? +responsible: + contact: post@tomtervel.no + name: Styret i Tomter Vel diff --git a/runs/tomtervel-cards-2026-09-23/questions/bidra/index.yaml b/runs/tomtervel-cards-2026-09-23/questions/bidra/index.yaml new file mode 100644 index 0000000..767ed6d --- /dev/null +++ b/runs/tomtervel-cards-2026-09-23/questions/bidra/index.yaml @@ -0,0 +1,111 @@ +alternatives: +- action: /received/horingsinnspill + consequence: + - Send innspill + description: Har kommunen en sak på høring du mener noe om? Send det til oss, så tar vi det med i vårt svar. + encouragements: + - Alle innspill blir lest før styret skriver høringssvaret. + features: + - description: Styret samler innspillene og vurderer dem opp mot fristen for høringssvaret. Det som passer inn blir tatt med, resten blir ikke det. + icon: lucide:file-text + name: Slik går det videre + - description: Styret leser innspillet ditt, og du når dem på post@tomtervel.no om du lurer på noe. + icon: lucide:users + name: Hvem leser dette + - description: Skriv gjerne kort hvilken sak det gjelder og hva du mener. + icon: lucide:scale + name: Send inn ditt innspill + requirements: + - label: Navn + name: navn + placeholder: Ola Nordmann + type: text + - label: Hvilken sak gjelder det? + name: sak + placeholder: F.eks. reguleringsplan for Tomterveien + type: text + - label: Hva mener du? + name: innspill + placeholder: F.eks. flere fartsdumper, bevare turstien + type: textarea + name: Få din mening med i velets høringssvar + record_as: innspill +- action: /received/hjelpe-til + consequence: + - Meld deg + description: Vi trenger folk på 17. mai, dugnader og andre arrangementer i løpet av året. + encouragements: + - Bare si fra – vi finner noe som passer deg. + features: + - description: Arrangementskomiteen tar kontakt med deg og setter deg opp på noe som passer. Passer det ikke akkurat da, sier du bare ifra. + icon: lucide:calendar + name: Slik går det videre + - description: Arrangementskomiteen leser dette, men du kan også nå styret på post@tomtervel.no i mellomtiden. + icon: lucide:users + name: Hvem leser dette + - description: Kort om hva du kan tenke deg å bidra med. + icon: lucide:hand-helping + name: Meld deg som hjelper + requirements: + - label: Navn + name: navn + placeholder: Ola Nordmann + type: text + - label: Telefon + name: telefon + placeholder: 123 45 678 + type: tel + - label: Hva vil du hjelpe til med? + name: hva + options: + - 17. mai + - Juletregranstenning + - Skøytedag + - Dugnad på elvestien + - Det som trengs + type: select + name: Bli med på et arrangement eller en dugnad + record_as: frivillige +- action: /received/komite + consequence: + - Meld interesse + description: Velet drives av sju komiteer på fritida. Er det noe du brenner for, er det plass til deg. + encouragements: + - Vi tar kontakt for en prat om hva komiteen driver med. + features: + - description: Styret tar kontakt og finner ut om det er plass i komiteen du ønsker deg til. Blir det ikke plass akkurat nå, får du beskjed om det også. + icon: lucide:handshake + name: Slik går det videre + - description: Styret leser meldingen din, og du når dem på post@tomtervel.no i mellomtiden. + icon: lucide:users + name: Hvem leser dette + - description: Fortell hvilken komité du har lyst til å være med i. + icon: lucide:users + name: Meld deg til en komité + requirements: + - label: Navn + name: navn + placeholder: Ola Nordmann + type: text + - label: E-post + name: epost + placeholder: ola@eksempel.no + type: email + - label: Hvilken komité? + name: komite + options: + - Arrangementer + - Elvesti + - Høringsinstans + - Leke- og møteplasser + - Miljøgate + - Pendlerforhold + - Trafikkforhold + type: select + name: Få en plass i komiteen du brenner for + record_as: komitesoknader +description: Har du en time å gi, eller en mening om noe kommunen skal bestemme? Her finner du veien inn. +name: Hvordan vil du bidra? +responsible: + contact: post@tomtervel.no + name: Styret i Tomter Vel diff --git a/runs/tomtervel-cards-2026-09-23/questions/decide/dele-utstyr.yaml b/runs/tomtervel-cards-2026-09-23/questions/decide/dele-utstyr.yaml new file mode 100644 index 0000000..a66950c --- /dev/null +++ b/runs/tomtervel-cards-2026-09-23/questions/decide/dele-utstyr.yaml @@ -0,0 +1,9 @@ +alternatives: +- description: Oppslaget forsvinner fra siden med det samme. + name: Fjern oppslaget når det er ordnet + self_transition: + bucket: oppslag + label: Ta ned oppslaget + to: tatt_ned +description: Utstyret er lånt ut, og oppslaget kan tas bort fra siden. +name: Skal oppslaget tas ned? diff --git a/runs/tomtervel-cards-2026-09-23/questions/decide/kan-hjelpe.yaml b/runs/tomtervel-cards-2026-09-23/questions/decide/kan-hjelpe.yaml new file mode 100644 index 0000000..9fb349d --- /dev/null +++ b/runs/tomtervel-cards-2026-09-23/questions/decide/kan-hjelpe.yaml @@ -0,0 +1,9 @@ +alternatives: +- description: Du blir ikke spurt om å hjelpe til lenger. Du kan melde deg på igjen når som helst. + name: Ta deg av listen over de som kan hjelpe + self_transition: + bucket: hjelpere + label: Trekk meg fra listen + to: trukket +description: En nabo har meldt seg som kan-hjelpe. Her kan de trekke seg fra listen når de ikke lenger har anledning. +name: Vil du fortsatt stå på listen over naboer som kan hjelpe? diff --git a/runs/tomtervel-cards-2026-09-23/questions/decide/trenger-hjelp.yaml b/runs/tomtervel-cards-2026-09-23/questions/decide/trenger-hjelp.yaml new file mode 100644 index 0000000..38b033e --- /dev/null +++ b/runs/tomtervel-cards-2026-09-23/questions/decide/trenger-hjelp.yaml @@ -0,0 +1,9 @@ +alternatives: +- description: Da vet vi at hjelpen kom fram, og saken lukkes. + name: Fikk du hjelpen du trengte? + self_transition: + bucket: hjelpebehov + label: Meld ordnet + to: ordnet +description: Her sier du fra om at naboen fikk hjelp, slik at saken kan avsluttes. +name: Ble hjelpen ordnet? diff --git a/runs/tomtervel-cards-2026-09-23/questions/index.yaml b/runs/tomtervel-cards-2026-09-23/questions/index.yaml new file mode 100644 index 0000000..09b2648 --- /dev/null +++ b/runs/tomtervel-cards-2026-09-23/questions/index.yaml @@ -0,0 +1,42 @@ +alternatives: +- action: /medlem + consequence: + - Bli medlem + description: Meld deg inn i Tomter Vel, eller gi oss beskjed om noe har endret seg hos deg. + features: + - description: '' + icon: lucide:users + name: for deg som bor i Tomter + name: Bli medlem eller endre opplysningene dine +- action: /melde-fra + consequence: + - Meld fra + description: Har du sett noe farlig i trafikken eller noe som er ødelagt på lekeplassen eller stien? Gi oss beskjed. + features: + - description: '' + icon: lucide:alert-triangle + name: for deg som har sett noe i nabolaget + name: Meld fra om noe som ikke er som det skal +- action: /bidra + consequence: + - Bidra + description: Har du en mening om en sak, eller lyst til å stille opp for nabolaget? Her kan du si ifra eller melde deg. + features: + - description: '' + icon: lucide:hand-helping + name: for deg som vil gjøre en innsats + name: Si din mening eller gi en hånd +- action: /naboer + consequence: + - Til naboer + description: Trenger du en hånd, kan du stille opp for andre, eller har du noe å låne ut? Her møtes naboer. + features: + - description: '' + icon: lucide:heart-handshake + name: for deg som vil hjelpe eller trenger hjelp + name: Få hjelp fra naboer, eller gi en hånd +description: Tomter Vel er velforeningen for alle husstander i Tomter. Finn ut hva du trenger her. +name: Hva vil du gjøre i dag? +responsible: + contact: post@tomtervel.no + name: Styret i Tomter Vel diff --git a/runs/tomtervel-cards-2026-09-23/questions/kasserer/_section.yaml b/runs/tomtervel-cards-2026-09-23/questions/kasserer/_section.yaml new file mode 100644 index 0000000..2f8af2f --- /dev/null +++ b/runs/tomtervel-cards-2026-09-23/questions/kasserer/_section.yaml @@ -0,0 +1 @@ +qualifies: kasserer diff --git a/runs/tomtervel-cards-2026-09-23/questions/kasserer/index.yaml b/runs/tomtervel-cards-2026-09-23/questions/kasserer/index.yaml new file mode 100644 index 0000000..7a53189 --- /dev/null +++ b/runs/tomtervel-cards-2026-09-23/questions/kasserer/index.yaml @@ -0,0 +1,69 @@ +alternatives: +- action: /kasserer + consequence: + - Lagre + description: Husstander som har meldt seg inn og venter på at kontingenten blir registrert. + features: + - description: '' + name: '' + resource: + requires_group: kasserer + source: + bucket: husstander + kind: kv + transitions: + - from: open + label: Merk som betalt + to: betalt + - from: open + label: Meld ut + to: utmeldt + name: Husstander som skal bli medlemmer +- action: /kasserer + consequence: + - Lagre + description: Medlemmer som har flyttet, byttet e-post eller vil ut av velet. + features: + - description: '' + name: '' + resource: + requires_group: kasserer + source: + bucket: medlemsendringer + kind: kv + transitions: + - from: open + label: Merk som oppdatert + to: oppdatert + name: Opplysninger som skal oppdateres +- action: /kasserer + consequence: + - Lagre + description: Utlegg fra komiteene som venter på godkjenning eller utbetaling. + features: + - description: '' + name: '' + resource: + requires_group: kasserer + source: + bucket: utlegg + kind: kv + transitions: + - from: godkjent + label: Merk som utbetalt + to: utbetalt + - from: godkjent + label: Avvis likevel + to: avvist + - from: open + label: Godkjenn utlegget + to: godkjent + - from: open + label: Avvis utlegget + to: avvist + name: Utlegg som skal gjøres opp +description: Her holder du oversikt over husstandene, medlemsendringene og utleggene som venter på deg som kasserer. +name: Hva står for tur hos kassereren? +responsible: + contact: post@tomtervel.no + name: Styret i Tomter Vel diff --git a/runs/tomtervel-cards-2026-09-23/questions/komiteer/_section.yaml b/runs/tomtervel-cards-2026-09-23/questions/komiteer/_section.yaml new file mode 100644 index 0000000..57e3295 --- /dev/null +++ b/runs/tomtervel-cards-2026-09-23/questions/komiteer/_section.yaml @@ -0,0 +1 @@ +qualifies: komiteer diff --git a/runs/tomtervel-cards-2026-09-23/questions/komiteer/index.yaml b/runs/tomtervel-cards-2026-09-23/questions/komiteer/index.yaml new file mode 100644 index 0000000..9511642 --- /dev/null +++ b/runs/tomtervel-cards-2026-09-23/questions/komiteer/index.yaml @@ -0,0 +1,11 @@ +alternatives: +- action: /komiteer/utlegg + consequence: + - Send utlegg + description: Har du lagt ut for noe til komiteen? Send det inn og få pengene tilbake fra kasserer. + name: Få tilbake det du har lagt ut for +description: Her har komiteen sine saker samlet, sortert etter hvor de står i behandlingen. +name: Hvor står sakene komiteen har ansvar for? +responsible: + contact: post@tomtervel.no + name: Styret i Tomter Vel diff --git a/runs/tomtervel-cards-2026-09-23/questions/komiteer/utlegg-sent.yaml b/runs/tomtervel-cards-2026-09-23/questions/komiteer/utlegg-sent.yaml new file mode 100644 index 0000000..65b1822 --- /dev/null +++ b/runs/tomtervel-cards-2026-09-23/questions/komiteer/utlegg-sent.yaml @@ -0,0 +1,10 @@ +alternatives: +- description: Kasserer ser gjennom bilag og kontonummer, og setter i gang utbetalingen når det er godkjent. + name: Kasserer sjekker og betaler ut +- action: /komiteer + consequence: + - Tilbake til forsiden + description: '' + name: Tilbake til forsiden +description: Takk for at du sender inn utlegget. Kasserer får beskjed og tar det videre. +name: Hva skjer med utlegget mitt nå? diff --git a/runs/tomtervel-cards-2026-09-23/questions/komiteer/utlegg.yaml b/runs/tomtervel-cards-2026-09-23/questions/komiteer/utlegg.yaml new file mode 100644 index 0000000..518e4de --- /dev/null +++ b/runs/tomtervel-cards-2026-09-23/questions/komiteer/utlegg.yaml @@ -0,0 +1,38 @@ +alternatives: +- action: /komiteer/utlegg-sent + consequence: + - Send utlegg + description: Har du lagt ut for noe til et arrangement, dugnad eller annet i regi av velet? Send inn så får du pengene tilbake. + encouragements: + - Kasserer ser gjennom det og betaler ut så snart det er godkjent. + features: + - description: Utlegget går til kasserer, som godkjenner det og betaler ut. Skulle det ikke la seg godkjenne, får du beskjed om det også. + icon: lucide:coins + name: Fra melding til utbetaling + - description: Kasserer i Tomter Vel leser meldingen og kan nås på post@tomtervel.no i mellomtiden. + icon: lucide:wallet + name: Kasserer har saken + - description: Ha gjerne kvittering eller bilag klart, så går utbetalingen raskere. + icon: lucide:receipt + name: Legg ut for utgift + requirements: + - label: Navn + name: navn + placeholder: Kari Nordmann + type: text + - label: Beløp + name: belop + placeholder: 450 kr + type: text + - label: Hva gjaldt det + name: hva + placeholder: Kaffe og kaker til dugnaden på lekeplassen + type: textarea + name: Få tilbake det du har lagt ut + record_as: utlegg +description: Har du betalt noe av egen lomme for en komité i Tomter Vel? Her melder du inn utlegget, så ordner kasserer resten. +followup: false +name: Har du lagt ut penger for velet som du skal ha tilbake? +responsible: + contact: post@tomtervel.no + name: Styret i Tomter Vel diff --git a/runs/tomtervel-cards-2026-09-23/questions/lekeplasskomite/_section.yaml b/runs/tomtervel-cards-2026-09-23/questions/lekeplasskomite/_section.yaml new file mode 100644 index 0000000..ca64c92 --- /dev/null +++ b/runs/tomtervel-cards-2026-09-23/questions/lekeplasskomite/_section.yaml @@ -0,0 +1 @@ +qualifies: lekeplasskomite diff --git a/runs/tomtervel-cards-2026-09-23/questions/lekeplasskomite/index.yaml b/runs/tomtervel-cards-2026-09-23/questions/lekeplasskomite/index.yaml new file mode 100644 index 0000000..cb17e59 --- /dev/null +++ b/runs/tomtervel-cards-2026-09-23/questions/lekeplasskomite/index.yaml @@ -0,0 +1,26 @@ +alternatives: +- action: /lekeplasskomite + consequence: + - Lagre + description: Meldinger om noe som er ødelagt på lekeplassen eller stien, og som bør fikses før noen skader seg. + features: + - description: '' + name: '' + resource: + requires_group: lekeplasskomite + source: + bucket: anleggsfeil + kind: kv + transitions: + - from: open + label: Ta tak i saken + to: tatt_tak_i + - from: tatt_tak_i + label: Merk som utbedret + to: utbedret + name: Meldinger om lekeplass og sti +description: Her holder du oversikt over meldinger om lekeplassene og stien, og følger dem opp til de er utbedret. +name: Hva må fikses på lekeplassene og stien nå? +responsible: + contact: post@tomtervel.no + name: Styret i Tomter Vel diff --git a/runs/tomtervel-cards-2026-09-23/questions/medlem/index.yaml b/runs/tomtervel-cards-2026-09-23/questions/medlem/index.yaml new file mode 100644 index 0000000..9e5fdc4 --- /dev/null +++ b/runs/tomtervel-cards-2026-09-23/questions/medlem/index.yaml @@ -0,0 +1,73 @@ +alternatives: +- action: /received/bli-medlem + consequence: + - Meld meg inn + description: Meld deg inn i Tomter Vel, så tar vi vare på nabolaget sammen. Du får en giro på kontingenten når vi har registrert deg. + encouragements: + - Det tar bare et minutt, resten ordner vi. + features: + - description: Vi registrerer deg og sender deg kontingenten. Når den er betalt, er du fullverdig medlem. + icon: lucide:coins + name: Fra innmelding til medlem + - description: Kasserer i styret leser dette og ordner giroen; du kan nå oss på post@tomtervel.no i mellomtiden. + icon: lucide:mail + name: Hvem leser dette + - description: Fyll ut det du vet, så gjør kasserer resten. + icon: lucide:user-plus + name: Bli medlem + requirements: + - label: Navn + name: navn + placeholder: Ola Nordmann + type: text + - label: Adresse + name: adresse + placeholder: Tomterveien 12 + type: text + - label: E-post + name: epost + placeholder: ola@eksempel.no + type: email + - label: Telefon + name: telefon + optional: true + placeholder: 912 34 567 + type: tel + name: Bli medlem av velet + record_as: husstander +- action: /received/endre-medlemskap + consequence: + - Send endring + description: Har du flyttet, byttet e-post eller vil melde deg ut? Si fra her, så retter vi opp i listene våre. + encouragements: + - Vi oppdaterer registeret så snart vi ser meldingen. + features: + - description: Vi retter opp i medlemslisten så fort meldingen kommer inn. + icon: lucide:refresh-cw + name: Slik oppdaterer vi + - description: Kasserer i styret leser dette og oppdaterer registeret; du kan nå oss på post@tomtervel.no i mellomtiden. + icon: lucide:mail + name: Hvem leser dette + - description: Skriv hva som er nytt, så finner vi deg i registeret. + icon: lucide:pencil + name: Endre medlemskap + requirements: + - label: Navn + name: navn + placeholder: Ola Nordmann + type: text + - label: Adresse + name: adresse + placeholder: Tomterveien 12 + type: text + - label: Hva vil du endre? + name: hva_er_nytt + placeholder: Ny e-post, flyttet, eller vil melde meg ut + type: textarea + name: Oppdater opplysningene dine + record_as: medlemsendringer +description: Bli medlem, eller endre opplysningene dine hvis du allerede er det. +name: Vil du bli medlem, eller endre opplysningene dine? +responsible: + contact: post@tomtervel.no + name: Styret i Tomter Vel diff --git a/runs/tomtervel-cards-2026-09-23/questions/melde-fra/index.yaml b/runs/tomtervel-cards-2026-09-23/questions/melde-fra/index.yaml new file mode 100644 index 0000000..5a14973 --- /dev/null +++ b/runs/tomtervel-cards-2026-09-23/questions/melde-fra/index.yaml @@ -0,0 +1,69 @@ +alternatives: +- action: /received/trafikkfare + consequence: + - Meld fra + description: Har du sett et farlig sted i trafikken, som dårlig sikt eller en vei uten fortau? Fortell oss om det, så tar vi det videre med kommunen. + encouragements: + - Det tar bare et minutt, og trafikkomiteen ser på alle meldinger som kommer inn. + features: + - description: Trafikkomiteen tar saken opp med kommunen eller den som eier veien, og følger den til den er ordnet eller avvist. + icon: lucide:route + name: Hva skjer videre + - description: Trafikkomiteen leser det du sender inn, og kan svare deg på e-posten du oppgir. + icon: lucide:car + name: Hvem ser dette + - description: Fortell hva du har sett og hvor, så vi kan finne stedet. + icon: lucide:alert-triangle + name: Meld fra om trafikkfare + requirements: + - label: Hvor er det? + name: hvor + placeholder: Krysset ved Tomterveien og Kirkeveien + type: text + - label: Hva har du sett? + name: hva + placeholder: Dårlig sikt i krysset, mange kjører fort + type: textarea + - label: E-post + name: epost + optional: true + placeholder: navn@epost.no + type: email + name: Gjør trafikken tryggere der du bor + record_as: trafikkmeldinger +- action: /received/anleggsfeil + consequence: + - Meld fra + description: Er noe på lekeplassen eller stien ødelagt eller farlig? Fortell oss hvor og hva, så tar lekeplasskomiteen tak i det. + encouragements: + - Det holder med noen få ord, så ser komiteen på det så fort de kan. + features: + - description: Meldingen går til lekeplasskomiteen, som tar tak i saken og utbedrer skaden. + icon: lucide:wrench + name: Hva skjer videre + - description: Lekeplasskomiteen leser det du sender inn; til det haster kan du nå styret på post@tomtervel.no. + icon: lucide:hammer + name: Hvem ser dette + - description: Beskriv hva du så og hvor det er, så finner vi det raskt. + icon: lucide:construction + name: Meld fra om skade + requirements: + - label: Hvor er det? + name: hvor + options: + - Lekeplassen + - Elvestien + - Skøytebanen + - Et annet sted + type: select + - label: Hva har du sett? + name: hva + placeholder: Løs planke i klatrestativet + type: textarea + name: Få fikset noe som er ødelagt + record_as: anleggsfeil +description: Sett du noe i nabolaget som ikke er som det skal? Gi oss beskjed, så følger vi det opp. +name: Har du sett noe i nabolaget som bør meldes fra om? +responsible: + contact: post@tomtervel.no + name: Styret i Tomter Vel diff --git a/runs/tomtervel-cards-2026-09-23/questions/naboer/index.yaml b/runs/tomtervel-cards-2026-09-23/questions/naboer/index.yaml new file mode 100644 index 0000000..65c3b37 --- /dev/null +++ b/runs/tomtervel-cards-2026-09-23/questions/naboer/index.yaml @@ -0,0 +1,124 @@ +alternatives: +- action: /received/trenger-hjelp + consequence: + - Be om hjelp + description: Får du ikke til snømåking, handling eller en skyss akkurat nå? Si fra, så finner vi en nabo som kan stille opp. + encouragements: + - Nabohjelpen ser på dette raskt og finner noen som kan hjelpe. + features: + - description: Nabohjelpen finner en nabo som kan stille opp, og setter dere i kontakt. Får dere ikke løst det, gir vi beskjed om det også. + icon: lucide:handshake + name: Slik går det videre + - description: Nabohjelp-komiteen leser dette og finner en nabo, og du kan nå dem på post@tomtervel.no i mellomtiden. + icon: lucide:heart-handshake + name: Hvem leser dette + - description: Skriv hva du trenger hjelp med og når, så finner vi en nabo som passer. + icon: lucide:hand-helping + name: Be om nabohjelp + requirements: + - label: Navn + name: navn + placeholder: Kari Nordmann + type: text + - label: E-post + name: email + placeholder: kari@eksempel.no + type: email + - label: Adresse + name: adresse + placeholder: Tomterveien 12 + type: text + - label: Hva trenger du hjelp til? + name: hva + placeholder: Trenger hjelp til å måke inngangspartiet + type: textarea + - label: Telefon + name: telefon + optional: true + placeholder: 912 34 567 + type: tel + name: Få en nabo til å stille opp + record_as: hjelpebehov +- action: /received/kan-hjelpe + consequence: + - Meld deg + description: Meld deg som nabohjelp, så blir du spurt når noen i nærheten trenger en hånd. + encouragements: + - Du blir bare spurt når det faktisk passer, og kan trekke deg når som helst. + features: + - description: Du blir registrert som nabohjelp, og nabohjelpkomiteen tar kontakt når det dukker opp noe som passer deg. Vil du trekke deg, er det bare å si fra. + icon: lucide:user-check + name: Slik går det videre + - description: Nabohjelp-komiteen holder oversikten, og du kan nå dem på post@tomtervel.no i mellomtiden. + icon: lucide:heart-handshake + name: Hvem leser dette + - description: Si litt om hva du kan bidra med, så finner vi ut når det passer. + icon: lucide:hand-helping + name: Meld deg som nabohjelp + requirements: + - label: Navn + name: navn + placeholder: Kari Nordmann + type: text + - label: E-post + name: email + placeholder: kari@eksempel.no + type: email + - label: Telefon + name: telefon + placeholder: 912 34 567 + type: tel + - label: Hva kan du hjelpe med? + name: kan + options: + - Snømåking + - Handling + - Kjøring + - Småfiks i huset + - En prat og litt selskap + - Det som trengs + type: select + name: Bli spurt når en nabo trenger en hånd + record_as: hjelpere +- action: /received/dele-utstyr + consequence: + - Legg ut + description: Har du noe naboene kan låne, eller trenger du å låne noe selv? Legg ut et oppslag så ser de andre i Tomter det. + encouragements: + - Oppslaget legges ut for naboene med det samme. + features: + - description: Styret legger oppslaget ut for naboene. Når det du lånte bort er levert tilbake, eller du har fått låne det du trengte, tar vi det ned igjen. + icon: lucide:list + name: Slik går det videre + - description: Styret i Tomter Vel legger ut oppslaget, og du kan nå dem på post@tomtervel.no i mellomtiden. + icon: lucide:users + name: Hvem leser dette + - description: Fortell kort hva det gjelder, så tar vi det videre. + icon: lucide:package + name: Lån eller utlån + requirements: + - label: Navn + name: navn + placeholder: Ola Nordmann + type: text + - label: E-post + name: email + placeholder: ola@eksempel.no + type: email + - label: Har du, eller trenger du? + name: har_eller_trenger + options: + - Jeg har noe å låne ut + - Jeg trenger å låne noe + type: select + - label: Hva gjelder det? + name: hva + placeholder: Hengerlaget, står ledig i helgene + type: textarea + name: Lån ut eller lån det naboene trenger + record_as: oppslag +description: Naboer stiller opp for hverandre – med snømåking, handling, skyss eller utlån av det du har for mye av. +name: Trenger du en hånd, eller kan du stille opp for en nabo? +responsible: + contact: post@tomtervel.no + name: Styret i Tomter Vel diff --git a/runs/tomtervel-cards-2026-09-23/questions/nabohjelp/_section.yaml b/runs/tomtervel-cards-2026-09-23/questions/nabohjelp/_section.yaml new file mode 100644 index 0000000..5b3a2ad --- /dev/null +++ b/runs/tomtervel-cards-2026-09-23/questions/nabohjelp/_section.yaml @@ -0,0 +1 @@ +qualifies: nabohjelp diff --git a/runs/tomtervel-cards-2026-09-23/questions/nabohjelp/index.yaml b/runs/tomtervel-cards-2026-09-23/questions/nabohjelp/index.yaml new file mode 100644 index 0000000..ce2a3c1 --- /dev/null +++ b/runs/tomtervel-cards-2026-09-23/questions/nabohjelp/index.yaml @@ -0,0 +1,52 @@ +alternatives: +- action: /nabohjelp + consequence: + - Lagre + description: Her ser du hvem som trenger en hånd, og kan sette dem i kontakt med en nabo som stiller opp. + features: + - description: '' + name: '' + resource: + requires_group: nabohjelp + source: + bucket: hjelpebehov + kind: kv + transitions: + - from: formidlet + label: Marker som ordnet + to: ordnet + - from: formidlet + label: Fant ingen løsning + to: ikke_lost + - from: open + label: Sett i kontakt med nabo + to: formidlet + - from: open + label: Fant ingen løsning + to: ikke_lost + name: Naboer som trenger en hånd +- action: /nabohjelp + consequence: + - Lagre + description: Her ser du naboene som har sagt de kan stille opp, klare til å spørres når noen trenger hjelp. + features: + - description: '' + name: '' + resource: + requires_group: nabohjelp + source: + bucket: hjelpere + kind: kv + transitions: + - from: open + label: Registrer som hjelper + to: registrert + - from: open + label: Fjern fra listen + to: trukket + name: Naboer som kan stille opp +description: Sett naboer som trenger en hånd i kontakt med naboer som kan gi en. +name: Hvem trenger hjelp, og hvem kan gi en? +responsible: + contact: post@tomtervel.no + name: Styret i Tomter Vel diff --git a/runs/tomtervel-cards-2026-09-23/questions/received/anleggsfeil.yaml b/runs/tomtervel-cards-2026-09-23/questions/received/anleggsfeil.yaml new file mode 100644 index 0000000..bb10fb8 --- /dev/null +++ b/runs/tomtervel-cards-2026-09-23/questions/received/anleggsfeil.yaml @@ -0,0 +1,10 @@ +alternatives: +- description: Komiteen ser på meldingen og avtaler hvem som tar tak i det. + name: Komiteen ser på saken +- action: / + consequence: + - Til forsiden + description: '' + name: Til forsiden +description: Meldingen din om skaden er sendt til lekeplasskomiteen. +name: Hva skjer med meldingen min nå? diff --git a/runs/tomtervel-cards-2026-09-23/questions/received/bli-medlem.yaml b/runs/tomtervel-cards-2026-09-23/questions/received/bli-medlem.yaml new file mode 100644 index 0000000..16b0fd5 --- /dev/null +++ b/runs/tomtervel-cards-2026-09-23/questions/received/bli-medlem.yaml @@ -0,0 +1,10 @@ +alternatives: +- description: Kasserer går gjennom innmeldinger fortløpende og sender deg kontingenten på e-post. + name: Du hører fra kasserer +- action: / + consequence: + - Til forsiden + description: '' + name: Til forsiden +description: Takk for at du melder deg inn i Tomter Vel. Vi har mottatt søknaden din. +name: Hva skjer nå som jeg har meldt meg inn? diff --git a/runs/tomtervel-cards-2026-09-23/questions/received/dele-utstyr.yaml b/runs/tomtervel-cards-2026-09-23/questions/received/dele-utstyr.yaml new file mode 100644 index 0000000..1586adf --- /dev/null +++ b/runs/tomtervel-cards-2026-09-23/questions/received/dele-utstyr.yaml @@ -0,0 +1,10 @@ +alternatives: +- description: Styret ser gjennom oppslaget og legger det ut på nabolagssiden. Tar det litt tid, kan de ta kontakt for å sjekke noe før det legges ut. + name: Oppslaget legges ut for naboene +- action: / + consequence: + - Tilbake til forsiden + description: '' + name: Tilbake til forsiden +description: Takk for at du la ut noe til utlån eller ba om å låne noe. Styret legger det ut så naboene kan se det. +name: Hva skjer nå? diff --git a/runs/tomtervel-cards-2026-09-23/questions/received/endre-medlemskap.yaml b/runs/tomtervel-cards-2026-09-23/questions/received/endre-medlemskap.yaml new file mode 100644 index 0000000..743dbe7 --- /dev/null +++ b/runs/tomtervel-cards-2026-09-23/questions/received/endre-medlemskap.yaml @@ -0,0 +1,10 @@ +alternatives: +- description: Kassereren oppdaterer medlemslista og bekrefter på e-post at det er gjort. + name: Opplysningene blir oppdatert +- action: / + consequence: + - Tilbake til forsiden + description: '' + name: Tilbake til forsiden +description: Meldingen om endringen er sendt til kassereren. +name: Er endringen registrert? diff --git a/runs/tomtervel-cards-2026-09-23/questions/received/hjelpe-til.yaml b/runs/tomtervel-cards-2026-09-23/questions/received/hjelpe-til.yaml new file mode 100644 index 0000000..f2949f9 --- /dev/null +++ b/runs/tomtervel-cards-2026-09-23/questions/received/hjelpe-til.yaml @@ -0,0 +1,10 @@ +alternatives: +- description: Noen fra arrangementskomiteen tar kontakt før neste arrangement eller dugnad, og avtaler nærmere hva du kan hjelpe til med. + name: Komiteen tar kontakt med deg +- action: / + consequence: + - Tilbake til forsiden + description: '' + name: Tilbake til forsiden +description: Takk for at du vil bidra! Arrangementskomiteen har fått beskjed og finner ut hvor du passer best inn. +name: Hva skjer nå som jeg har meldt meg? diff --git a/runs/tomtervel-cards-2026-09-23/questions/received/horingsinnspill.yaml b/runs/tomtervel-cards-2026-09-23/questions/received/horingsinnspill.yaml new file mode 100644 index 0000000..31b18b2 --- /dev/null +++ b/runs/tomtervel-cards-2026-09-23/questions/received/horingsinnspill.yaml @@ -0,0 +1,10 @@ +alternatives: +- description: Styret samler innspill fra beboerne og tar dem med når vi svarer kommunen i høringen. + name: Innspillet blir del av høringssvaret +- action: / + consequence: + - Tilbake til forsiden + description: '' + name: Tilbake til forsiden +description: Innspillet ditt er sendt til styret i Tomter Vel. +name: Hva skjer med innspillet mitt nå? diff --git a/runs/tomtervel-cards-2026-09-23/questions/received/kan-hjelpe.yaml b/runs/tomtervel-cards-2026-09-23/questions/received/kan-hjelpe.yaml new file mode 100644 index 0000000..430371e --- /dev/null +++ b/runs/tomtervel-cards-2026-09-23/questions/received/kan-hjelpe.yaml @@ -0,0 +1,10 @@ +alternatives: +- description: Vi tar kontakt når det dukker opp noe som passer for deg – det kan gå litt tid før det skjer. + name: Vi kontakter deg ved behov +- action: / + consequence: + - Tilbake til forsiden + description: '' + name: Tilbake til forsiden +description: Takk for at du stiller opp som nabohjelp. Vi har notert deg, så vet vi om deg når noen trenger en hånd. +name: Hva skjer nå som jeg har meldt meg som nabohjelp? diff --git a/runs/tomtervel-cards-2026-09-23/questions/received/komite.yaml b/runs/tomtervel-cards-2026-09-23/questions/received/komite.yaml new file mode 100644 index 0000000..79fd8b8 --- /dev/null +++ b/runs/tomtervel-cards-2026-09-23/questions/received/komite.yaml @@ -0,0 +1,10 @@ +alternatives: +- description: Styret ser på ønsket ditt og svarer så snart de har funnet en plass, eller kan si at komiteen er full akkurat nå. + name: Styret finner deg en plass +- action: / + consequence: + - Til forsiden + description: '' + name: Til forsiden +description: Du har sagt at du vil sitte i en komité. Styret tar kontakt om plass i den komiteen som passer deg. +name: Hva skjer nå som jeg har meldt interesse for en komité? diff --git a/runs/tomtervel-cards-2026-09-23/questions/received/trafikkfare.yaml b/runs/tomtervel-cards-2026-09-23/questions/received/trafikkfare.yaml new file mode 100644 index 0000000..52aad3f --- /dev/null +++ b/runs/tomtervel-cards-2026-09-23/questions/received/trafikkfare.yaml @@ -0,0 +1,10 @@ +alternatives: +- description: Trafikkomiteen ser på meldingen og tar den videre med kommunen eller den som eier veien, om det trengs. + name: Trafikkomiteen tar det videre +- action: / + consequence: + - Tilbake til forsiden + description: '' + name: Tilbake til forsiden +description: Meldingen om trafikkfaren er sendt til trafikkomiteen. +name: Hva skjer nå med det jeg meldte fra om? diff --git a/runs/tomtervel-cards-2026-09-23/questions/received/trenger-hjelp.yaml b/runs/tomtervel-cards-2026-09-23/questions/received/trenger-hjelp.yaml new file mode 100644 index 0000000..4e3fed4 --- /dev/null +++ b/runs/tomtervel-cards-2026-09-23/questions/received/trenger-hjelp.yaml @@ -0,0 +1,10 @@ +alternatives: +- description: Nabohjelpen ser på henvendelser fortløpende og tar kontakt så snart noen kan hjelpe. + name: Vi finner noen som kan hjelpe deg +- action: / + consequence: + - Tilbake til forsiden + description: '' + name: Tilbake til forsiden +description: Meldingen din er sendt til nabohjelpen. Vi finner en nabo som kan stille opp. +name: Hva skjer nå med det jeg trenger hjelp til? diff --git a/runs/tomtervel-cards-2026-09-23/questions/styret/_section.yaml b/runs/tomtervel-cards-2026-09-23/questions/styret/_section.yaml new file mode 100644 index 0000000..5a34160 --- /dev/null +++ b/runs/tomtervel-cards-2026-09-23/questions/styret/_section.yaml @@ -0,0 +1 @@ +qualifies: styret diff --git a/runs/tomtervel-cards-2026-09-23/questions/styret/index.yaml b/runs/tomtervel-cards-2026-09-23/questions/styret/index.yaml new file mode 100644 index 0000000..bdca581 --- /dev/null +++ b/runs/tomtervel-cards-2026-09-23/questions/styret/index.yaml @@ -0,0 +1,80 @@ +alternatives: +- action: /styret + consequence: + - Lagre + description: Se hva naboer mener om saker kommunen har på høring, og ta det med i høringssvaret. + features: + - description: '' + name: '' + resource: + requires_group: styret + source: + bucket: innspill + kind: kv + transitions: + - from: open + label: Ta med i svaret + to: tatt_med + - from: open + label: Ikke ta med + to: ikke_tatt_med + name: Innspill til høringssvar +- action: /styret + consequence: + - Lagre + description: Se hvem som vil sitte i en komité, og sett dem i en som passer. + features: + - description: '' + name: '' + resource: + requires_group: styret + source: + bucket: komitesoknader + kind: kv + transitions: + - from: open + label: Plasser i komité + to: plassert + - from: open + label: Avslå søknaden + to: avslatt + name: Søknader til komiteene +- action: /styret + consequence: + - Lagre + description: Se hva naboer vil dele ut eller låne, og legg oppslaget ut for alle. + features: + - description: '' + name: '' + resource: + requires_group: styret + source: + bucket: oppslag + kind: kv + transitions: + - from: open + label: Legg ut oppslag + to: lagt_ut + - from: open + label: Ta ned oppslag + to: tatt_ned + name: Oppslag om å dele utstyr +- action: /styret + consequence: + - Lagre + description: Se hva naboer har meldt om farlige steder i trafikken. + features: + - description: '' + name: '' + resource: + requires_group: styret + source: + bucket: trafikkmeldinger + kind: kv + transitions: [] + name: Meldinger om trafikkfarer +description: Her har styret oversikt over høringsinnspill, komitésøknader, oppslag og trafikkmeldinger fra naboene. +name: Hva venter på styret akkurat nå? +responsible: + contact: post@tomtervel.no + name: Styret i Tomter Vel diff --git a/runs/tomtervel-cards-2026-09-23/questions/trafikkomite/_section.yaml b/runs/tomtervel-cards-2026-09-23/questions/trafikkomite/_section.yaml new file mode 100644 index 0000000..bf946ea --- /dev/null +++ b/runs/tomtervel-cards-2026-09-23/questions/trafikkomite/_section.yaml @@ -0,0 +1 @@ +qualifies: trafikkomite diff --git a/runs/tomtervel-cards-2026-09-23/questions/trafikkomite/index.yaml b/runs/tomtervel-cards-2026-09-23/questions/trafikkomite/index.yaml new file mode 100644 index 0000000..1f43cf0 --- /dev/null +++ b/runs/tomtervel-cards-2026-09-23/questions/trafikkomite/index.yaml @@ -0,0 +1,32 @@ +alternatives: +- action: /trafikkomite + consequence: + - Lagre + description: Meldinger fra naboer om farlige steder i trafikken, klare til å tas videre. + features: + - description: '' + name: '' + resource: + requires_group: trafikkomite + source: + bucket: trafikkmeldinger + kind: kv + transitions: + - from: open + label: Ta opp med kommunen + to: tatt_opp + - from: open + label: Avvis meldingen + to: avvist + - from: tatt_opp + label: Meld som ordnet + to: ordnet + - from: tatt_opp + label: Avvis saken + to: avvist + name: Trafikkfarer meldt av naboer +description: Her følger trafikkomiteen opp meldinger om farlige steder i trafikken. +name: Hvilke trafikkfarer må vi følge opp nå? +responsible: + contact: post@tomtervel.no + name: Styret i Tomter Vel diff --git a/runs/tomtervel-cards-2026-09-23/rate.json b/runs/tomtervel-cards-2026-09-23/rate.json new file mode 100644 index 0000000..6f65cfb --- /dev/null +++ b/runs/tomtervel-cards-2026-09-23/rate.json @@ -0,0 +1,519 @@ +{ + "anleggsfeil": { + "pages": [ + { + "control": { + "asked": 0, + "next": null, + "where": 0, + "which": 0 + }, + "control_ok": true, + "followup_shown": false, + "lix": 18.860294117647058, + "options": 4, + "overloaded": false, + "page": "/", + "personas": 2, + "required_fields": 0, + "understanding": { + "asked": 2, + "next": null, + "where": 2, + "which": 2 + } + }, + { + "control": { + "asked": 0, + "next": 0, + "where": 0, + "which": 0 + }, + "control_ok": true, + "followup_shown": true, + "lix": 27.80952380952381, + "options": 2, + "overloaded": false, + "page": "/melde-fra", + "personas": 2, + "required_fields": 2, + "understanding": { + "asked": 2, + "next": 2, + "where": 2, + "which": 2 + } + } + ], + "steps": 2 + }, + "bli-medlem": { + "pages": [ + { + "control": { + "asked": 0, + "next": null, + "where": 0, + "which": 0 + }, + "control_ok": true, + "followup_shown": false, + "lix": 18.860294117647058, + "options": 4, + "overloaded": false, + "page": "/", + "personas": 2, + "required_fields": 0, + "understanding": { + "asked": 1, + "next": null, + "where": 2, + "which": 1 + } + }, + { + "control": { + "asked": 0, + "next": 0, + "where": 0, + "which": 0 + }, + "control_ok": true, + "followup_shown": true, + "lix": 26.416666666666668, + "options": 2, + "overloaded": false, + "page": "/medlem", + "personas": 2, + "required_fields": 3, + "understanding": { + "asked": 2, + "next": 2, + "where": 2, + "which": 2 + } + } + ], + "steps": 2 + }, + "dele-utstyr": { + "pages": [ + { + "control": { + "asked": 0, + "next": null, + "where": 0, + "which": 0 + }, + "control_ok": true, + "followup_shown": false, + "lix": 18.860294117647058, + "options": 4, + "overloaded": false, + "page": "/", + "personas": 2, + "required_fields": 0, + "understanding": { + "asked": 0, + "next": null, + "where": 2, + "which": 1 + } + }, + { + "control": { + "asked": 0, + "next": 0, + "where": 0, + "which": 0 + }, + "control_ok": true, + "followup_shown": true, + "lix": 24.495121951219513, + "options": 3, + "overloaded": false, + "page": "/naboer", + "personas": 2, + "required_fields": 4, + "understanding": { + "asked": 2, + "next": 2, + "where": 2, + "which": 2 + } + } + ], + "steps": 2 + }, + "endre-medlemskap": { + "pages": [ + { + "control": { + "asked": 0, + "next": null, + "where": 0, + "which": 0 + }, + "control_ok": true, + "followup_shown": false, + "lix": 18.860294117647058, + "options": 4, + "overloaded": false, + "page": "/", + "personas": 2, + "required_fields": 0, + "understanding": { + "asked": 1, + "next": null, + "where": 2, + "which": 0 + } + }, + { + "control": { + "asked": 0, + "next": 0, + "where": 0, + "which": 0 + }, + "control_ok": true, + "followup_shown": true, + "lix": 28.571428571428573, + "options": 2, + "overloaded": false, + "page": "/medlem", + "personas": 2, + "required_fields": 3, + "understanding": { + "asked": 2, + "next": 2, + "where": 2, + "which": 2 + } + } + ], + "steps": 2 + }, + "hjelpe-til": { + "pages": [ + { + "control": { + "asked": 0, + "next": null, + "where": 0, + "which": 0 + }, + "control_ok": true, + "followup_shown": false, + "lix": 18.860294117647058, + "options": 4, + "overloaded": false, + "page": "/", + "personas": 2, + "required_fields": 0, + "understanding": { + "asked": 1, + "next": null, + "where": 2, + "which": 1 + } + }, + { + "control": { + "asked": 0, + "next": 0, + "where": 0, + "which": 0 + }, + "control_ok": true, + "followup_shown": true, + "lix": 25.357446808510637, + "options": 3, + "overloaded": false, + "page": "/bidra", + "personas": 2, + "required_fields": 3, + "understanding": { + "asked": 2, + "next": 2, + "where": 2, + "which": 2 + } + } + ], + "steps": 2 + }, + "horingsinnspill": { + "pages": [ + { + "control": { + "asked": 0, + "next": null, + "where": 0, + "which": 0 + }, + "control_ok": true, + "followup_shown": false, + "lix": 18.860294117647058, + "options": 4, + "overloaded": false, + "page": "/", + "personas": 2, + "required_fields": 0, + "understanding": { + "asked": 0, + "next": null, + "where": 2, + "which": 0 + } + }, + { + "control": { + "asked": 0, + "next": 0, + "where": 0, + "which": 0 + }, + "control_ok": true, + "followup_shown": true, + "lix": 25.049382716049383, + "options": 3, + "overloaded": false, + "page": "/bidra", + "personas": 2, + "required_fields": 3, + "understanding": { + "asked": 2, + "next": 2, + "where": 2, + "which": 1 + } + } + ], + "steps": 2 + }, + "kan-hjelpe": { + "pages": [ + { + "control": { + "asked": 0, + "next": null, + "where": 0, + "which": 0 + }, + "control_ok": true, + "followup_shown": false, + "lix": 18.860294117647058, + "options": 4, + "overloaded": false, + "page": "/", + "personas": 2, + "required_fields": 0, + "understanding": { + "asked": 1, + "next": null, + "where": 2, + "which": 2 + } + }, + { + "control": { + "asked": 0, + "next": 0, + "where": 2, + "which": 0 + }, + "control_ok": false, + "followup_shown": true, + "lix": 24.95169082125604, + "options": 3, + "overloaded": false, + "page": "/naboer", + "personas": 2, + "required_fields": 4, + "understanding": { + "asked": 2, + "next": 2, + "where": 2, + "which": 2 + } + } + ], + "steps": 2 + }, + "komite": { + "pages": [ + { + "control": { + "asked": 0, + "next": null, + "where": 0, + "which": 0 + }, + "control_ok": true, + "followup_shown": false, + "lix": 18.860294117647058, + "options": 4, + "overloaded": false, + "page": "/", + "personas": 2, + "required_fields": 0, + "understanding": { + "asked": 1, + "next": null, + "where": 2, + "which": 1 + } + }, + { + "control": { + "asked": 0, + "next": 0, + "where": 1, + "which": 0 + }, + "control_ok": false, + "followup_shown": true, + "lix": 21.98118811881188, + "options": 3, + "overloaded": false, + "page": "/bidra", + "personas": 2, + "required_fields": 3, + "understanding": { + "asked": 2, + "next": 2, + "where": 2, + "which": 2 + } + } + ], + "steps": 2 + }, + "trafikkfare": { + "pages": [ + { + "control": { + "asked": 0, + "next": null, + "where": 0, + "which": 0 + }, + "control_ok": true, + "followup_shown": false, + "lix": 18.860294117647058, + "options": 4, + "overloaded": false, + "page": "/", + "personas": 2, + "required_fields": 0, + "understanding": { + "asked": 2, + "next": null, + "where": 2, + "which": 2 + } + }, + { + "control": { + "asked": 0, + "next": 0, + "where": 0, + "which": 0 + }, + "control_ok": true, + "followup_shown": true, + "lix": 28.72461273666093, + "options": 2, + "overloaded": false, + "page": "/melde-fra", + "personas": 2, + "required_fields": 2, + "understanding": { + "asked": 2, + "next": 2, + "where": 2, + "which": 2 + } + } + ], + "steps": 2 + }, + "trenger-hjelp": { + "pages": [ + { + "control": { + "asked": 0, + "next": null, + "where": 0, + "which": 0 + }, + "control_ok": true, + "followup_shown": false, + "lix": 18.860294117647058, + "options": 4, + "overloaded": false, + "page": "/", + "personas": 2, + "required_fields": 0, + "understanding": { + "asked": 0, + "next": null, + "where": 2, + "which": 0 + } + }, + { + "control": { + "asked": 0, + "next": 0, + "where": 1, + "which": 0 + }, + "control_ok": false, + "followup_shown": true, + "lix": 27.11111111111111, + "options": 3, + "overloaded": false, + "page": "/naboer", + "personas": 2, + "required_fields": 4, + "understanding": { + "asked": 2, + "next": 2, + "where": 2, + "which": 2 + } + } + ], + "steps": 2 + }, + "utlegg": { + "pages": [ + { + "control": { + "asked": 0, + "next": 0, + "where": 0, + "which": 0 + }, + "control_ok": true, + "followup_shown": true, + "lix": 29.416666666666664, + "options": 1, + "overloaded": false, + "page": "/komiteer/utlegg", + "personas": 1, + "required_fields": 3, + "understanding": { + "asked": 1, + "next": 1, + "where": 1, + "which": 1 + } + } + ], + "steps": 1 + } +} \ No newline at end of file diff --git a/runs/tomtervel-cards-2026-09-23/rate.txt b/runs/tomtervel-cards-2026-09-23/rate.txt new file mode 100644 index 0000000..0c08588 --- /dev/null +++ b/runs/tomtervel-cards-2026-09-23/rate.txt @@ -0,0 +1,22 @@ +need LIX which where asked next gutted twin says page load +bli-medlem @/ 19 very easy 1/2 2/2 1/2 - 0/0/0/- ok 4 options, 0 required +bli-medlem @/medlem 26 very easy 2/2 2/2 2/2 2/2 0/0/0/0 ok 2 options, 3 required +endre-medlemskap @/ 19 very easy 0/2 2/2 1/2 - 0/0/0/- ok 4 options, 0 required +endre-medlemskap @/medlem 29 very easy 2/2 2/2 2/2 2/2 0/0/0/0 ok 2 options, 3 required +trafikkfare @/ 19 very easy 2/2 2/2 2/2 - 0/0/0/- ok 4 options, 0 required +trafikkfare @/melde-fra 29 very easy 2/2 2/2 2/2 2/2 0/0/0/0 ok 2 options, 2 required +anleggsfeil @/ 19 very easy 2/2 2/2 2/2 - 0/0/0/- ok 4 options, 0 required +anleggsfeil @/melde-fra 28 very easy 2/2 2/2 2/2 2/2 0/0/0/0 ok 2 options, 2 required +horingsinnspill @/ 19 very easy 0/2 2/2 0/2 - 0/0/0/- ok 4 options, 0 required +horingsinnspill @/bidra 25 very easy 1/2 2/2 2/2 2/2 0/0/0/0 ok 3 options, 3 required +hjelpe-til @/ 19 very easy 1/2 2/2 1/2 - 0/0/0/- ok 4 options, 0 required +hjelpe-til @/bidra 25 very easy 2/2 2/2 2/2 2/2 0/0/0/0 ok 3 options, 3 required +komite @/ 19 very easy 1/2 2/2 1/2 - 0/0/0/- ok 4 options, 0 required +komite @/bidra 22 very easy 2/2 2/2 2/2 2/2 0/1/0/0 FAILED: where 3 options, 3 required +trenger-hjelp @/ 19 very easy 0/2 2/2 0/2 - 0/0/0/- ok 4 options, 0 required +trenger-hjelp @/naboer 27 very easy 2/2 2/2 2/2 2/2 0/1/0/0 FAILED: where 3 options, 4 required +kan-hjelpe @/ 19 very easy 2/2 2/2 1/2 - 0/0/0/- ok 4 options, 0 required +kan-hjelpe @/naboer 25 very easy 2/2 2/2 2/2 2/2 0/2/0/0 FAILED: where 3 options, 4 required +dele-utstyr @/ 19 very easy 1/2 2/2 0/2 - 0/0/0/- ok 4 options, 0 required +dele-utstyr @/naboer 24 very easy 2/2 2/2 2/2 2/2 0/0/0/0 ok 3 options, 4 required +utlegg 29 very easy 1/1 1/1 1/1 1/1 0/0/0/0 ok 1 options, 3 required diff --git a/runs/tomtervel-cards-2026-09-23/score-full.txt b/runs/tomtervel-cards-2026-09-23/score-full.txt new file mode 100644 index 0000000..961a903 --- /dev/null +++ b/runs/tomtervel-cards-2026-09-23/score-full.txt @@ -0,0 +1,9 @@ +MISROUTE: busslomme@/: picked "Få hjelp fra naboer, eller gi en hånd" (0.95), the need is met by ["Meld fra om noe som ikke er som det skal"] +MISROUTE: bru@/melde-fra: picked "Gjør trafikken tryggere der du bor" (0.95), the need is met by ["Få fikset noe som er ødelagt"] +MISROUTE: vafler@/: picked "Til naboer" (0.95), the need is met by ["Si din mening eller gi en hånd"] +MISROUTE: motorsag@/: picked "Få hjelp fra naboer, eller gi en hånd" (0.85), the need is met by ["Si din mening eller gi en hånd"] +MISROUTE: planlegger@/: picked "Bidra" (0.95), the need is met by ["Si din mening eller gi en hånd"] +MISROUTE: planlegger@/bidra: picked "Få din mening med i velets høringssvar" (0.95), the need is met by ["Få en plass i komiteen du brenner for"] +MISROUTE: snomaking@/naboer: picked "Be om nabohjelp" (0.95), the need is met by ["Få en nabo til å stille opp"] +MISROUTE: hjemmekontor@/naboer: picked "Få en nabo til å stille opp" (0.95), the need is met by ["Bli spurt når en nabo trenger en hånd"] +wording: 32/40 routed right (80%) diff --git a/runs/tomtervel-cards-2026-09-23/score-skim.txt b/runs/tomtervel-cards-2026-09-23/score-skim.txt new file mode 100644 index 0000000..5363fbb --- /dev/null +++ b/runs/tomtervel-cards-2026-09-23/score-skim.txt @@ -0,0 +1,12 @@ +MISROUTE: ny-epost@/: picked "Si din mening eller gi en hånd" (0.85), the need is met by ["Bli medlem eller endre opplysningene dine"] +MISROUTE: flytter@/: picked "Meld fra om noe som ikke er som det skal" (0.95), the need is met by ["Bli medlem eller endre opplysningene dine"] +MISROUTE: skolevei@/: picked "Si din mening eller gi en hånd" (0.85), the need is met by ["Meld fra om noe som ikke er som det skal"] +MISROUTE: busslomme@/: picked "Si din mening eller gi en hånd" (0.85), the need is met by ["Meld fra om noe som ikke er som det skal"] +MISROUTE: huske@/: picked "Si din mening eller gi en hånd" (0.85), the need is met by ["Meld fra om noe som ikke er som det skal"] +MISROUTE: bru@/: picked "Si din mening eller gi en hånd" (0.85), the need is met by ["Meld fra om noe som ikke er som det skal"] +MISROUTE: togtider@/: picked "Meld fra om noe som ikke er som det skal" (0.95), the need is met by ["Si din mening eller gi en hånd"] +MISROUTE: vafler@/: picked "Få hjelp fra naboer, eller gi en hånd" (0.85), the need is met by ["Si din mening eller gi en hånd"] +MISROUTE: planlegger@/bidra: picked "Få din mening med i velets høringssvar" (0.95), the need is met by ["Få en plass i komiteen du brenner for"] +MISROUTE: snomaking@/naboer: picked "Bli spurt når en nabo trenger en hånd" (0.95), the need is met by ["Få en nabo til å stille opp"] +MISROUTE: hjemmekontor@/: picked "Gi en hånd" (0.95), the need is met by ["Få hjelp fra naboer, eller gi en hånd"] +wording: 29/40 routed right (72%) diff --git a/runs/tomtervel-cards-2026-09-23/site.yaml b/runs/tomtervel-cards-2026-09-23/site.yaml new file mode 100644 index 0000000..9bdc376 --- /dev/null +++ b/runs/tomtervel-cards-2026-09-23/site.yaml @@ -0,0 +1,2 @@ +lang: nb +title: Tomter Vel diff --git a/runs/tomtervel-cards-2026-09-23/tasks-full.jsonl b/runs/tomtervel-cards-2026-09-23/tasks-full.jsonl new file mode 100644 index 0000000..51af7a0 --- /dev/null +++ b/runs/tomtervel-cards-2026-09-23/tasks-full.jsonl @@ -0,0 +1,40 @@ +{"id":"nyinnflyttet@/","persona":"nyinnflyttet","need":"bli-medlem","page":"/","state":{"body":"Vi flyttet til Tomter i mars og har hørt at det finnes et vel. Hvordan blir vi med, og hva koster det?"},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva vil du gjøre i dag?\". Which alternative do they choose?","criteria":{"Bli medlem eller endre opplysningene dine":"Meld deg inn i Tomter Vel, eller gi oss beskjed om noe har endret seg hos deg.","Få hjelp fra naboer, eller gi en hånd":"Trenger du en hånd, kan du stille opp for andre, eller har du noe å låne ut? Her møtes naboer.","Meld fra om noe som ikke er som det skal":"Har du sett noe farlig i trafikken eller noe som er ødelagt på lekeplassen eller stien? Gi oss beskjed.","Si din mening eller gi en hånd":"Har du en mening om en sak, eller lyst til å stille opp for nabolaget? Her kan du si ifra eller melde deg."}}},"expect":["Bli medlem eller endre opplysningene dine"]} +{"id":"nyinnflyttet@/medlem","persona":"nyinnflyttet","need":"bli-medlem","page":"/medlem","state":{"body":"Vi flyttet til Tomter i mars og har hørt at det finnes et vel. Hvordan blir vi med, og hva koster det?"},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Vil du bli medlem, eller endre opplysningene dine?\". Which alternative do they choose?","criteria":{"Bli medlem av velet":"Meld deg inn i Tomter Vel, så tar vi vare på nabolaget sammen. Du får en giro på kontingenten når vi har registrert deg.","Oppdater opplysningene dine":"Har du flyttet, byttet e-post eller vil melde deg ut? Si fra her, så retter vi opp i listene våre."}}},"expect":["Bli medlem av velet"]} +{"id":"glemte-a-betale@/","persona":"glemte-a-betale","need":"bli-medlem","page":"/","state":{"body":"Jeg har vært medlem før men fikk ikke betalt i fjor. Kan jeg bare vippse, og til hvem?"},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva vil du gjøre i dag?\". Which alternative do they choose?","criteria":{"Bli medlem eller endre opplysningene dine":"Meld deg inn i Tomter Vel, eller gi oss beskjed om noe har endret seg hos deg.","Få hjelp fra naboer, eller gi en hånd":"Trenger du en hånd, kan du stille opp for andre, eller har du noe å låne ut? Her møtes naboer.","Meld fra om noe som ikke er som det skal":"Har du sett noe farlig i trafikken eller noe som er ødelagt på lekeplassen eller stien? Gi oss beskjed.","Si din mening eller gi en hånd":"Har du en mening om en sak, eller lyst til å stille opp for nabolaget? Her kan du si ifra eller melde deg."}}},"expect":["Bli medlem eller endre opplysningene dine"]} +{"id":"glemte-a-betale@/medlem","persona":"glemte-a-betale","need":"bli-medlem","page":"/medlem","state":{"body":"Jeg har vært medlem før men fikk ikke betalt i fjor. Kan jeg bare vippse, og til hvem?"},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Vil du bli medlem, eller endre opplysningene dine?\". Which alternative do they choose?","criteria":{"Bli medlem av velet":"Meld deg inn i Tomter Vel, så tar vi vare på nabolaget sammen. Du får en giro på kontingenten når vi har registrert deg.","Oppdater opplysningene dine":"Har du flyttet, byttet e-post eller vil melde deg ut? Si fra her, så retter vi opp i listene våre."}}},"expect":["Bli medlem av velet"]} +{"id":"ny-epost@/","persona":"ny-epost","need":"endre-medlemskap","page":"/","state":{"body":"Vi har byttet e-postadresse og får ikke lenger noe fra dere."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva vil du gjøre i dag?\". Which alternative do they choose?","criteria":{"Bli medlem eller endre opplysningene dine":"Meld deg inn i Tomter Vel, eller gi oss beskjed om noe har endret seg hos deg.","Få hjelp fra naboer, eller gi en hånd":"Trenger du en hånd, kan du stille opp for andre, eller har du noe å låne ut? Her møtes naboer.","Meld fra om noe som ikke er som det skal":"Har du sett noe farlig i trafikken eller noe som er ødelagt på lekeplassen eller stien? Gi oss beskjed.","Si din mening eller gi en hånd":"Har du en mening om en sak, eller lyst til å stille opp for nabolaget? Her kan du si ifra eller melde deg."}}},"expect":["Bli medlem eller endre opplysningene dine"]} +{"id":"ny-epost@/medlem","persona":"ny-epost","need":"endre-medlemskap","page":"/medlem","state":{"body":"Vi har byttet e-postadresse og får ikke lenger noe fra dere."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Vil du bli medlem, eller endre opplysningene dine?\". Which alternative do they choose?","criteria":{"Bli medlem av velet":"Meld deg inn i Tomter Vel, så tar vi vare på nabolaget sammen. Du får en giro på kontingenten når vi har registrert deg.","Oppdater opplysningene dine":"Har du flyttet, byttet e-post eller vil melde deg ut? Si fra her, så retter vi opp i listene våre."}}},"expect":["Oppdater opplysningene dine"]} +{"id":"flytter@/","persona":"flytter","need":"endre-medlemskap","page":"/","state":{"body":"Vi selger huset og flytter til Ski i august, så vi må ut av medlemslista."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva vil du gjøre i dag?\". Which alternative do they choose?","criteria":{"Bli medlem eller endre opplysningene dine":"Meld deg inn i Tomter Vel, eller gi oss beskjed om noe har endret seg hos deg.","Få hjelp fra naboer, eller gi en hånd":"Trenger du en hånd, kan du stille opp for andre, eller har du noe å låne ut? Her møtes naboer.","Meld fra om noe som ikke er som det skal":"Har du sett noe farlig i trafikken eller noe som er ødelagt på lekeplassen eller stien? Gi oss beskjed.","Si din mening eller gi en hånd":"Har du en mening om en sak, eller lyst til å stille opp for nabolaget? Her kan du si ifra eller melde deg."}}},"expect":["Bli medlem eller endre opplysningene dine"]} +{"id":"flytter@/medlem","persona":"flytter","need":"endre-medlemskap","page":"/medlem","state":{"body":"Vi selger huset og flytter til Ski i august, så vi må ut av medlemslista."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Vil du bli medlem, eller endre opplysningene dine?\". Which alternative do they choose?","criteria":{"Bli medlem av velet":"Meld deg inn i Tomter Vel, så tar vi vare på nabolaget sammen. Du får en giro på kontingenten når vi har registrert deg.","Oppdater opplysningene dine":"Har du flyttet, byttet e-post eller vil melde deg ut? Si fra her, så retter vi opp i listene våre."}}},"expect":["Oppdater opplysningene dine"]} +{"id":"skolevei@/","persona":"skolevei","need":"trafikkfare","page":"/","state":{"body":"Bilene kjører altfor fort i svingen ved skolen om morgenen, og det er ikke fortau der ungene går."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva vil du gjøre i dag?\". Which alternative do they choose?","criteria":{"Bli medlem eller endre opplysningene dine":"Meld deg inn i Tomter Vel, eller gi oss beskjed om noe har endret seg hos deg.","Få hjelp fra naboer, eller gi en hånd":"Trenger du en hånd, kan du stille opp for andre, eller har du noe å låne ut? Her møtes naboer.","Meld fra om noe som ikke er som det skal":"Har du sett noe farlig i trafikken eller noe som er ødelagt på lekeplassen eller stien? Gi oss beskjed.","Si din mening eller gi en hånd":"Har du en mening om en sak, eller lyst til å stille opp for nabolaget? Her kan du si ifra eller melde deg."}}},"expect":["Meld fra om noe som ikke er som det skal"]} +{"id":"skolevei@/melde-fra","persona":"skolevei","need":"trafikkfare","page":"/melde-fra","state":{"body":"Bilene kjører altfor fort i svingen ved skolen om morgenen, og det er ikke fortau der ungene går."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Har du sett noe i nabolaget som bør meldes fra om?\". Which alternative do they choose?","criteria":{"Få fikset noe som er ødelagt":"Er noe på lekeplassen eller stien ødelagt eller farlig? Fortell oss hvor og hva, så tar lekeplasskomiteen tak i det.","Gjør trafikken tryggere der du bor":"Har du sett et farlig sted i trafikken, som dårlig sikt eller en vei uten fortau? Fortell oss om det, så tar vi det videre med kommunen."}}},"expect":["Gjør trafikken tryggere der du bor"]} +{"id":"busslomme@/","persona":"busslomme","need":"trafikkfare","page":"/","state":{"body":"Det er umulig å se om det kommer noen når man skal ut fra busslomma ved butikken, hekken har blitt kjempehøy."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva vil du gjøre i dag?\". Which alternative do they choose?","criteria":{"Bli medlem eller endre opplysningene dine":"Meld deg inn i Tomter Vel, eller gi oss beskjed om noe har endret seg hos deg.","Få hjelp fra naboer, eller gi en hånd":"Trenger du en hånd, kan du stille opp for andre, eller har du noe å låne ut? Her møtes naboer.","Meld fra om noe som ikke er som det skal":"Har du sett noe farlig i trafikken eller noe som er ødelagt på lekeplassen eller stien? Gi oss beskjed.","Si din mening eller gi en hånd":"Har du en mening om en sak, eller lyst til å stille opp for nabolaget? Her kan du si ifra eller melde deg."}}},"expect":["Meld fra om noe som ikke er som det skal"]} +{"id":"busslomme@/melde-fra","persona":"busslomme","need":"trafikkfare","page":"/melde-fra","state":{"body":"Det er umulig å se om det kommer noen når man skal ut fra busslomma ved butikken, hekken har blitt kjempehøy."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Har du sett noe i nabolaget som bør meldes fra om?\". Which alternative do they choose?","criteria":{"Få fikset noe som er ødelagt":"Er noe på lekeplassen eller stien ødelagt eller farlig? Fortell oss hvor og hva, så tar lekeplasskomiteen tak i det.","Gjør trafikken tryggere der du bor":"Har du sett et farlig sted i trafikken, som dårlig sikt eller en vei uten fortau? Fortell oss om det, så tar vi det videre med kommunen."}}},"expect":["Gjør trafikken tryggere der du bor"]} +{"id":"huske@/","persona":"huske","need":"anleggsfeil","page":"/","state":{"body":"Huska på lekeplassen henger i én kjetting. Sønnen min dro i den i går og den holdt så vidt."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva vil du gjøre i dag?\". Which alternative do they choose?","criteria":{"Bli medlem eller endre opplysningene dine":"Meld deg inn i Tomter Vel, eller gi oss beskjed om noe har endret seg hos deg.","Få hjelp fra naboer, eller gi en hånd":"Trenger du en hånd, kan du stille opp for andre, eller har du noe å låne ut? Her møtes naboer.","Meld fra om noe som ikke er som det skal":"Har du sett noe farlig i trafikken eller noe som er ødelagt på lekeplassen eller stien? Gi oss beskjed.","Si din mening eller gi en hånd":"Har du en mening om en sak, eller lyst til å stille opp for nabolaget? Her kan du si ifra eller melde deg."}}},"expect":["Meld fra om noe som ikke er som det skal"]} +{"id":"huske@/melde-fra","persona":"huske","need":"anleggsfeil","page":"/melde-fra","state":{"body":"Huska på lekeplassen henger i én kjetting. Sønnen min dro i den i går og den holdt så vidt."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Har du sett noe i nabolaget som bør meldes fra om?\". Which alternative do they choose?","criteria":{"Få fikset noe som er ødelagt":"Er noe på lekeplassen eller stien ødelagt eller farlig? Fortell oss hvor og hva, så tar lekeplasskomiteen tak i det.","Gjør trafikken tryggere der du bor":"Har du sett et farlig sted i trafikken, som dårlig sikt eller en vei uten fortau? Fortell oss om det, så tar vi det videre med kommunen."}}},"expect":["Få fikset noe som er ødelagt"]} +{"id":"bru@/","persona":"bru","need":"anleggsfeil","page":"/","state":{"body":"Planken på den lille brua på stien langs elva er råtten, jeg gikk nesten gjennom."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva vil du gjøre i dag?\". Which alternative do they choose?","criteria":{"Bli medlem eller endre opplysningene dine":"Meld deg inn i Tomter Vel, eller gi oss beskjed om noe har endret seg hos deg.","Få hjelp fra naboer, eller gi en hånd":"Trenger du en hånd, kan du stille opp for andre, eller har du noe å låne ut? Her møtes naboer.","Meld fra om noe som ikke er som det skal":"Har du sett noe farlig i trafikken eller noe som er ødelagt på lekeplassen eller stien? Gi oss beskjed.","Si din mening eller gi en hånd":"Har du en mening om en sak, eller lyst til å stille opp for nabolaget? Her kan du si ifra eller melde deg."}}},"expect":["Meld fra om noe som ikke er som det skal"]} +{"id":"bru@/melde-fra","persona":"bru","need":"anleggsfeil","page":"/melde-fra","state":{"body":"Planken på den lille brua på stien langs elva er råtten, jeg gikk nesten gjennom."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Har du sett noe i nabolaget som bør meldes fra om?\". Which alternative do they choose?","criteria":{"Få fikset noe som er ødelagt":"Er noe på lekeplassen eller stien ødelagt eller farlig? Fortell oss hvor og hva, så tar lekeplasskomiteen tak i det.","Gjør trafikken tryggere der du bor":"Har du sett et farlig sted i trafikken, som dårlig sikt eller en vei uten fortau? Fortell oss om det, så tar vi det videre med kommunen."}}},"expect":["Få fikset noe som er ødelagt"]} +{"id":"blokker@/","persona":"blokker","need":"horingsinnspill","page":"/","state":{"body":"Kommunen skal bygge blokker på jordet bak stasjonen, og jeg synes det er alt for høyt. Kan velet si ifra?"},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva vil du gjøre i dag?\". Which alternative do they choose?","criteria":{"Bli medlem eller endre opplysningene dine":"Meld deg inn i Tomter Vel, eller gi oss beskjed om noe har endret seg hos deg.","Få hjelp fra naboer, eller gi en hånd":"Trenger du en hånd, kan du stille opp for andre, eller har du noe å låne ut? Her møtes naboer.","Meld fra om noe som ikke er som det skal":"Har du sett noe farlig i trafikken eller noe som er ødelagt på lekeplassen eller stien? Gi oss beskjed.","Si din mening eller gi en hånd":"Har du en mening om en sak, eller lyst til å stille opp for nabolaget? Her kan du si ifra eller melde deg."}}},"expect":["Si din mening eller gi en hånd"]} +{"id":"blokker@/bidra","persona":"blokker","need":"horingsinnspill","page":"/bidra","state":{"body":"Kommunen skal bygge blokker på jordet bak stasjonen, og jeg synes det er alt for høyt. Kan velet si ifra?"},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hvordan vil du bidra?\". Which alternative do they choose?","criteria":{"Bli med på et arrangement eller en dugnad":"Vi trenger folk på 17. mai, dugnader og andre arrangementer i løpet av året.","Få din mening med i velets høringssvar":"Har kommunen en sak på høring du mener noe om? Send det til oss, så tar vi det med i vårt svar.","Få en plass i komiteen du brenner for":"Velet drives av sju komiteer på fritida. Er det noe du brenner for, er det plass til deg."}}},"expect":["Få din mening med i velets høringssvar"]} +{"id":"togtider@/","persona":"togtider","need":"horingsinnspill","page":"/","state":{"body":"Ruter vil kutte det tidlige toget. Jeg pendler til Oslo hver dag og vil at velet skriver til dem om det."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva vil du gjøre i dag?\". Which alternative do they choose?","criteria":{"Bli medlem eller endre opplysningene dine":"Meld deg inn i Tomter Vel, eller gi oss beskjed om noe har endret seg hos deg.","Få hjelp fra naboer, eller gi en hånd":"Trenger du en hånd, kan du stille opp for andre, eller har du noe å låne ut? Her møtes naboer.","Meld fra om noe som ikke er som det skal":"Har du sett noe farlig i trafikken eller noe som er ødelagt på lekeplassen eller stien? Gi oss beskjed.","Si din mening eller gi en hånd":"Har du en mening om en sak, eller lyst til å stille opp for nabolaget? Her kan du si ifra eller melde deg."}}},"expect":["Si din mening eller gi en hånd"]} +{"id":"togtider@/bidra","persona":"togtider","need":"horingsinnspill","page":"/bidra","state":{"body":"Ruter vil kutte det tidlige toget. Jeg pendler til Oslo hver dag og vil at velet skriver til dem om det."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hvordan vil du bidra?\". Which alternative do they choose?","criteria":{"Bli med på et arrangement eller en dugnad":"Vi trenger folk på 17. mai, dugnader og andre arrangementer i løpet av året.","Få din mening med i velets høringssvar":"Har kommunen en sak på høring du mener noe om? Send det til oss, så tar vi det med i vårt svar.","Få en plass i komiteen du brenner for":"Velet drives av sju komiteer på fritida. Er det noe du brenner for, er det plass til deg."}}},"expect":["Få din mening med i velets høringssvar"]} +{"id":"vafler@/","persona":"vafler","need":"hjelpe-til","page":"/","state":{"body":"Jeg kan steke vafler på 17. mai-frokosten hvis dere trenger folk."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva vil du gjøre i dag?\". Which alternative do they choose?","criteria":{"Bli medlem eller endre opplysningene dine":"Meld deg inn i Tomter Vel, eller gi oss beskjed om noe har endret seg hos deg.","Få hjelp fra naboer, eller gi en hånd":"Trenger du en hånd, kan du stille opp for andre, eller har du noe å låne ut? Her møtes naboer.","Meld fra om noe som ikke er som det skal":"Har du sett noe farlig i trafikken eller noe som er ødelagt på lekeplassen eller stien? Gi oss beskjed.","Si din mening eller gi en hånd":"Har du en mening om en sak, eller lyst til å stille opp for nabolaget? Her kan du si ifra eller melde deg."}}},"expect":["Si din mening eller gi en hånd"]} +{"id":"vafler@/bidra","persona":"vafler","need":"hjelpe-til","page":"/bidra","state":{"body":"Jeg kan steke vafler på 17. mai-frokosten hvis dere trenger folk."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hvordan vil du bidra?\". Which alternative do they choose?","criteria":{"Bli med på et arrangement eller en dugnad":"Vi trenger folk på 17. mai, dugnader og andre arrangementer i løpet av året.","Få din mening med i velets høringssvar":"Har kommunen en sak på høring du mener noe om? Send det til oss, så tar vi det med i vårt svar.","Få en plass i komiteen du brenner for":"Velet drives av sju komiteer på fritida. Er det noe du brenner for, er det plass til deg."}}},"expect":["Bli med på et arrangement eller en dugnad"]} +{"id":"motorsag@/","persona":"motorsag","need":"hjelpe-til","page":"/","state":{"body":"Har motorsag og ledig helg, kan ta trær langs elvestien hvis det er en dugnad."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva vil du gjøre i dag?\". Which alternative do they choose?","criteria":{"Bli medlem eller endre opplysningene dine":"Meld deg inn i Tomter Vel, eller gi oss beskjed om noe har endret seg hos deg.","Få hjelp fra naboer, eller gi en hånd":"Trenger du en hånd, kan du stille opp for andre, eller har du noe å låne ut? Her møtes naboer.","Meld fra om noe som ikke er som det skal":"Har du sett noe farlig i trafikken eller noe som er ødelagt på lekeplassen eller stien? Gi oss beskjed.","Si din mening eller gi en hånd":"Har du en mening om en sak, eller lyst til å stille opp for nabolaget? Her kan du si ifra eller melde deg."}}},"expect":["Si din mening eller gi en hånd"]} +{"id":"motorsag@/bidra","persona":"motorsag","need":"hjelpe-til","page":"/bidra","state":{"body":"Har motorsag og ledig helg, kan ta trær langs elvestien hvis det er en dugnad."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hvordan vil du bidra?\". Which alternative do they choose?","criteria":{"Bli med på et arrangement eller en dugnad":"Vi trenger folk på 17. mai, dugnader og andre arrangementer i løpet av året.","Få din mening med i velets høringssvar":"Har kommunen en sak på høring du mener noe om? Send det til oss, så tar vi det med i vårt svar.","Få en plass i komiteen du brenner for":"Velet drives av sju komiteer på fritida. Er det noe du brenner for, er det plass til deg."}}},"expect":["Bli med på et arrangement eller en dugnad"]} +{"id":"pendler@/","persona":"pendler","need":"komite","page":"/","state":{"body":"Jeg pendler og er lei av at ingen snakker med Ruter. Jeg vil gjerne være med i gjengen som jobber med det."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva vil du gjøre i dag?\". Which alternative do they choose?","criteria":{"Bli medlem eller endre opplysningene dine":"Meld deg inn i Tomter Vel, eller gi oss beskjed om noe har endret seg hos deg.","Få hjelp fra naboer, eller gi en hånd":"Trenger du en hånd, kan du stille opp for andre, eller har du noe å låne ut? Her møtes naboer.","Meld fra om noe som ikke er som det skal":"Har du sett noe farlig i trafikken eller noe som er ødelagt på lekeplassen eller stien? Gi oss beskjed.","Si din mening eller gi en hånd":"Har du en mening om en sak, eller lyst til å stille opp for nabolaget? Her kan du si ifra eller melde deg."}}},"expect":["Si din mening eller gi en hånd"]} +{"id":"pendler@/bidra","persona":"pendler","need":"komite","page":"/bidra","state":{"body":"Jeg pendler og er lei av at ingen snakker med Ruter. Jeg vil gjerne være med i gjengen som jobber med det."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hvordan vil du bidra?\". Which alternative do they choose?","criteria":{"Bli med på et arrangement eller en dugnad":"Vi trenger folk på 17. mai, dugnader og andre arrangementer i løpet av året.","Få din mening med i velets høringssvar":"Har kommunen en sak på høring du mener noe om? Send det til oss, så tar vi det med i vårt svar.","Få en plass i komiteen du brenner for":"Velet drives av sju komiteer på fritida. Er det noe du brenner for, er det plass til deg."}}},"expect":["Få en plass i komiteen du brenner for"]} +{"id":"planlegger@/","persona":"planlegger","need":"komite","page":"/","state":{"body":"Jeg er arealplanlegger av yrke og kunne bidratt når kommunen sender saker på høring."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva vil du gjøre i dag?\". Which alternative do they choose?","criteria":{"Bli medlem eller endre opplysningene dine":"Meld deg inn i Tomter Vel, eller gi oss beskjed om noe har endret seg hos deg.","Få hjelp fra naboer, eller gi en hånd":"Trenger du en hånd, kan du stille opp for andre, eller har du noe å låne ut? Her møtes naboer.","Meld fra om noe som ikke er som det skal":"Har du sett noe farlig i trafikken eller noe som er ødelagt på lekeplassen eller stien? Gi oss beskjed.","Si din mening eller gi en hånd":"Har du en mening om en sak, eller lyst til å stille opp for nabolaget? Her kan du si ifra eller melde deg."}}},"expect":["Si din mening eller gi en hånd"]} +{"id":"planlegger@/bidra","persona":"planlegger","need":"komite","page":"/bidra","state":{"body":"Jeg er arealplanlegger av yrke og kunne bidratt når kommunen sender saker på høring."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hvordan vil du bidra?\". Which alternative do they choose?","criteria":{"Bli med på et arrangement eller en dugnad":"Vi trenger folk på 17. mai, dugnader og andre arrangementer i løpet av året.","Få din mening med i velets høringssvar":"Har kommunen en sak på høring du mener noe om? Send det til oss, så tar vi det med i vårt svar.","Få en plass i komiteen du brenner for":"Velet drives av sju komiteer på fritida. Er det noe du brenner for, er det plass til deg."}}},"expect":["Få en plass i komiteen du brenner for"]} +{"id":"tilhenger@/","persona":"tilhenger","need":"dele-utstyr","page":"/","state":{"body":"Jeg har en tilhenger som står ubrukt mesteparten av året, naboer kan gjerne låne den for en hundrelapp."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva vil du gjøre i dag?\". Which alternative do they choose?","criteria":{"Bli medlem eller endre opplysningene dine":"Meld deg inn i Tomter Vel, eller gi oss beskjed om noe har endret seg hos deg.","Få hjelp fra naboer, eller gi en hånd":"Trenger du en hånd, kan du stille opp for andre, eller har du noe å låne ut? Her møtes naboer.","Meld fra om noe som ikke er som det skal":"Har du sett noe farlig i trafikken eller noe som er ødelagt på lekeplassen eller stien? Gi oss beskjed.","Si din mening eller gi en hånd":"Har du en mening om en sak, eller lyst til å stille opp for nabolaget? Her kan du si ifra eller melde deg."}}},"expect":["Få hjelp fra naboer, eller gi en hånd"]} +{"id":"tilhenger@/naboer","persona":"tilhenger","need":"dele-utstyr","page":"/naboer","state":{"body":"Jeg har en tilhenger som står ubrukt mesteparten av året, naboer kan gjerne låne den for en hundrelapp."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Trenger du en hånd, eller kan du stille opp for en nabo?\". Which alternative do they choose?","criteria":{"Bli spurt når en nabo trenger en hånd":"Meld deg som nabohjelp, så blir du spurt når noen i nærheten trenger en hånd.","Få en nabo til å stille opp":"Får du ikke til snømåking, handling eller en skyss akkurat nå? Si fra, så finner vi en nabo som kan stille opp.","Lån ut eller lån det naboene trenger":"Har du noe naboene kan låne, eller trenger du å låne noe selv? Legg ut et oppslag så ser de andre i Tomter det."}}},"expect":["Lån ut eller lån det naboene trenger"]} +{"id":"stige@/","persona":"stige","need":"dele-utstyr","page":"/","state":{"body":"Trenger en lang stige en dag i helga for å rense takrenna, er det noen i nærheten som har?"},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva vil du gjøre i dag?\". Which alternative do they choose?","criteria":{"Bli medlem eller endre opplysningene dine":"Meld deg inn i Tomter Vel, eller gi oss beskjed om noe har endret seg hos deg.","Få hjelp fra naboer, eller gi en hånd":"Trenger du en hånd, kan du stille opp for andre, eller har du noe å låne ut? Her møtes naboer.","Meld fra om noe som ikke er som det skal":"Har du sett noe farlig i trafikken eller noe som er ødelagt på lekeplassen eller stien? Gi oss beskjed.","Si din mening eller gi en hånd":"Har du en mening om en sak, eller lyst til å stille opp for nabolaget? Her kan du si ifra eller melde deg."}}},"expect":["Få hjelp fra naboer, eller gi en hånd"]} +{"id":"stige@/naboer","persona":"stige","need":"dele-utstyr","page":"/naboer","state":{"body":"Trenger en lang stige en dag i helga for å rense takrenna, er det noen i nærheten som har?"},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Trenger du en hånd, eller kan du stille opp for en nabo?\". Which alternative do they choose?","criteria":{"Bli spurt når en nabo trenger en hånd":"Meld deg som nabohjelp, så blir du spurt når noen i nærheten trenger en hånd.","Få en nabo til å stille opp":"Får du ikke til snømåking, handling eller en skyss akkurat nå? Si fra, så finner vi en nabo som kan stille opp.","Lån ut eller lån det naboene trenger":"Har du noe naboene kan låne, eller trenger du å låne noe selv? Legg ut et oppslag så ser de andre i Tomter det."}}},"expect":["Lån ut eller lån det naboene trenger"]} +{"id":"snomaking@/","persona":"snomaking","need":"trenger-hjelp","page":"/","state":{"body":"Jeg er 84 og klarer ikke å måke innkjørselen lenger. Er det noen som kan hjelpe meg når det snør?"},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva vil du gjøre i dag?\". Which alternative do they choose?","criteria":{"Bli medlem eller endre opplysningene dine":"Meld deg inn i Tomter Vel, eller gi oss beskjed om noe har endret seg hos deg.","Få hjelp fra naboer, eller gi en hånd":"Trenger du en hånd, kan du stille opp for andre, eller har du noe å låne ut? Her møtes naboer.","Meld fra om noe som ikke er som det skal":"Har du sett noe farlig i trafikken eller noe som er ødelagt på lekeplassen eller stien? Gi oss beskjed.","Si din mening eller gi en hånd":"Har du en mening om en sak, eller lyst til å stille opp for nabolaget? Her kan du si ifra eller melde deg."}}},"expect":["Få hjelp fra naboer, eller gi en hånd"]} +{"id":"snomaking@/naboer","persona":"snomaking","need":"trenger-hjelp","page":"/naboer","state":{"body":"Jeg er 84 og klarer ikke å måke innkjørselen lenger. Er det noen som kan hjelpe meg når det snør?"},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Trenger du en hånd, eller kan du stille opp for en nabo?\". Which alternative do they choose?","criteria":{"Bli spurt når en nabo trenger en hånd":"Meld deg som nabohjelp, så blir du spurt når noen i nærheten trenger en hånd.","Få en nabo til å stille opp":"Får du ikke til snømåking, handling eller en skyss akkurat nå? Si fra, så finner vi en nabo som kan stille opp.","Lån ut eller lån det naboene trenger":"Har du noe naboene kan låne, eller trenger du å låne noe selv? Legg ut et oppslag så ser de andre i Tomter det."}}},"expect":["Få en nabo til å stille opp"]} +{"id":"nyoperert@/","persona":"nyoperert","need":"trenger-hjelp","page":"/","state":{"body":"Jeg er nyoperert i hofta og kommer meg ikke til butikken på noen uker. Kunne noen handlet for meg?"},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva vil du gjøre i dag?\". Which alternative do they choose?","criteria":{"Bli medlem eller endre opplysningene dine":"Meld deg inn i Tomter Vel, eller gi oss beskjed om noe har endret seg hos deg.","Få hjelp fra naboer, eller gi en hånd":"Trenger du en hånd, kan du stille opp for andre, eller har du noe å låne ut? Her møtes naboer.","Meld fra om noe som ikke er som det skal":"Har du sett noe farlig i trafikken eller noe som er ødelagt på lekeplassen eller stien? Gi oss beskjed.","Si din mening eller gi en hånd":"Har du en mening om en sak, eller lyst til å stille opp for nabolaget? Her kan du si ifra eller melde deg."}}},"expect":["Få hjelp fra naboer, eller gi en hånd"]} +{"id":"nyoperert@/naboer","persona":"nyoperert","need":"trenger-hjelp","page":"/naboer","state":{"body":"Jeg er nyoperert i hofta og kommer meg ikke til butikken på noen uker. Kunne noen handlet for meg?"},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Trenger du en hånd, eller kan du stille opp for en nabo?\". Which alternative do they choose?","criteria":{"Bli spurt når en nabo trenger en hånd":"Meld deg som nabohjelp, så blir du spurt når noen i nærheten trenger en hånd.","Få en nabo til å stille opp":"Får du ikke til snømåking, handling eller en skyss akkurat nå? Si fra, så finner vi en nabo som kan stille opp.","Lån ut eller lån det naboene trenger":"Har du noe naboene kan låne, eller trenger du å låne noe selv? Legg ut et oppslag så ser de andre i Tomter det."}}},"expect":["Få en nabo til å stille opp"]} +{"id":"hjemmekontor@/","persona":"hjemmekontor","need":"kan-hjelpe","page":"/","state":{"body":"Jeg jobber hjemmefra og kan godt måke eller handle for noen som ikke får det til selv."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva vil du gjøre i dag?\". Which alternative do they choose?","criteria":{"Bli medlem eller endre opplysningene dine":"Meld deg inn i Tomter Vel, eller gi oss beskjed om noe har endret seg hos deg.","Få hjelp fra naboer, eller gi en hånd":"Trenger du en hånd, kan du stille opp for andre, eller har du noe å låne ut? Her møtes naboer.","Meld fra om noe som ikke er som det skal":"Har du sett noe farlig i trafikken eller noe som er ødelagt på lekeplassen eller stien? Gi oss beskjed.","Si din mening eller gi en hånd":"Har du en mening om en sak, eller lyst til å stille opp for nabolaget? Her kan du si ifra eller melde deg."}}},"expect":["Få hjelp fra naboer, eller gi en hånd"]} +{"id":"hjemmekontor@/naboer","persona":"hjemmekontor","need":"kan-hjelpe","page":"/naboer","state":{"body":"Jeg jobber hjemmefra og kan godt måke eller handle for noen som ikke får det til selv."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Trenger du en hånd, eller kan du stille opp for en nabo?\". Which alternative do they choose?","criteria":{"Bli spurt når en nabo trenger en hånd":"Meld deg som nabohjelp, så blir du spurt når noen i nærheten trenger en hånd.","Få en nabo til å stille opp":"Får du ikke til snømåking, handling eller en skyss akkurat nå? Si fra, så finner vi en nabo som kan stille opp.","Lån ut eller lån det naboene trenger":"Har du noe naboene kan låne, eller trenger du å låne noe selv? Legg ut et oppslag så ser de andre i Tomter det."}}},"expect":["Bli spurt når en nabo trenger en hånd"]} +{"id":"pensjonert-elektriker@/","persona":"pensjonert-elektriker","need":"kan-hjelpe","page":"/","state":{"body":"Pensjonert elektriker, har bil og god tid. Si fra om noen trenger skyss eller en hånd med småting."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva vil du gjøre i dag?\". Which alternative do they choose?","criteria":{"Bli medlem eller endre opplysningene dine":"Meld deg inn i Tomter Vel, eller gi oss beskjed om noe har endret seg hos deg.","Få hjelp fra naboer, eller gi en hånd":"Trenger du en hånd, kan du stille opp for andre, eller har du noe å låne ut? Her møtes naboer.","Meld fra om noe som ikke er som det skal":"Har du sett noe farlig i trafikken eller noe som er ødelagt på lekeplassen eller stien? Gi oss beskjed.","Si din mening eller gi en hånd":"Har du en mening om en sak, eller lyst til å stille opp for nabolaget? Her kan du si ifra eller melde deg."}}},"expect":["Få hjelp fra naboer, eller gi en hånd"]} +{"id":"pensjonert-elektriker@/naboer","persona":"pensjonert-elektriker","need":"kan-hjelpe","page":"/naboer","state":{"body":"Pensjonert elektriker, har bil og god tid. Si fra om noen trenger skyss eller en hånd med småting."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Trenger du en hånd, eller kan du stille opp for en nabo?\". Which alternative do they choose?","criteria":{"Bli spurt når en nabo trenger en hånd":"Meld deg som nabohjelp, så blir du spurt når noen i nærheten trenger en hånd.","Få en nabo til å stille opp":"Får du ikke til snømåking, handling eller en skyss akkurat nå? Si fra, så finner vi en nabo som kan stille opp.","Lån ut eller lån det naboene trenger":"Har du noe naboene kan låne, eller trenger du å låne noe selv? Legg ut et oppslag så ser de andre i Tomter det."}}},"expect":["Bli spurt når en nabo trenger en hånd"]} diff --git a/runs/tomtervel-cards-2026-09-23/tasks-skim.jsonl b/runs/tomtervel-cards-2026-09-23/tasks-skim.jsonl new file mode 100644 index 0000000..f394cd2 --- /dev/null +++ b/runs/tomtervel-cards-2026-09-23/tasks-skim.jsonl @@ -0,0 +1,40 @@ +{"id":"nyinnflyttet@/","persona":"nyinnflyttet","need":"bli-medlem","page":"/","state":{"body":"Vi flyttet til Tomter i mars og har hørt at det finnes et vel. Hvordan blir vi med, og hva koster det?"},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva vil du gjøre i dag?\". Which alternative do they choose?","criteria":{"Bli medlem eller endre opplysningene dine":"Bli medlem eller endre opplysningene dine","Få hjelp fra naboer, eller gi en hånd":"Få hjelp fra naboer, eller gi en hånd","Meld fra om noe som ikke er som det skal":"Meld fra om noe som ikke er som det skal","Si din mening eller gi en hånd":"Si din mening eller gi en hånd"}}},"expect":["Bli medlem eller endre opplysningene dine"]} +{"id":"nyinnflyttet@/medlem","persona":"nyinnflyttet","need":"bli-medlem","page":"/medlem","state":{"body":"Vi flyttet til Tomter i mars og har hørt at det finnes et vel. Hvordan blir vi med, og hva koster det?"},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Vil du bli medlem, eller endre opplysningene dine?\". Which alternative do they choose?","criteria":{"Bli medlem av velet":"Bli medlem av velet","Oppdater opplysningene dine":"Oppdater opplysningene dine"}}},"expect":["Bli medlem av velet"]} +{"id":"glemte-a-betale@/","persona":"glemte-a-betale","need":"bli-medlem","page":"/","state":{"body":"Jeg har vært medlem før men fikk ikke betalt i fjor. Kan jeg bare vippse, og til hvem?"},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva vil du gjøre i dag?\". Which alternative do they choose?","criteria":{"Bli medlem eller endre opplysningene dine":"Bli medlem eller endre opplysningene dine","Få hjelp fra naboer, eller gi en hånd":"Få hjelp fra naboer, eller gi en hånd","Meld fra om noe som ikke er som det skal":"Meld fra om noe som ikke er som det skal","Si din mening eller gi en hånd":"Si din mening eller gi en hånd"}}},"expect":["Bli medlem eller endre opplysningene dine"]} +{"id":"glemte-a-betale@/medlem","persona":"glemte-a-betale","need":"bli-medlem","page":"/medlem","state":{"body":"Jeg har vært medlem før men fikk ikke betalt i fjor. Kan jeg bare vippse, og til hvem?"},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Vil du bli medlem, eller endre opplysningene dine?\". Which alternative do they choose?","criteria":{"Bli medlem av velet":"Bli medlem av velet","Oppdater opplysningene dine":"Oppdater opplysningene dine"}}},"expect":["Bli medlem av velet"]} +{"id":"ny-epost@/","persona":"ny-epost","need":"endre-medlemskap","page":"/","state":{"body":"Vi har byttet e-postadresse og får ikke lenger noe fra dere."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva vil du gjøre i dag?\". Which alternative do they choose?","criteria":{"Bli medlem eller endre opplysningene dine":"Bli medlem eller endre opplysningene dine","Få hjelp fra naboer, eller gi en hånd":"Få hjelp fra naboer, eller gi en hånd","Meld fra om noe som ikke er som det skal":"Meld fra om noe som ikke er som det skal","Si din mening eller gi en hånd":"Si din mening eller gi en hånd"}}},"expect":["Bli medlem eller endre opplysningene dine"]} +{"id":"ny-epost@/medlem","persona":"ny-epost","need":"endre-medlemskap","page":"/medlem","state":{"body":"Vi har byttet e-postadresse og får ikke lenger noe fra dere."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Vil du bli medlem, eller endre opplysningene dine?\". Which alternative do they choose?","criteria":{"Bli medlem av velet":"Bli medlem av velet","Oppdater opplysningene dine":"Oppdater opplysningene dine"}}},"expect":["Oppdater opplysningene dine"]} +{"id":"flytter@/","persona":"flytter","need":"endre-medlemskap","page":"/","state":{"body":"Vi selger huset og flytter til Ski i august, så vi må ut av medlemslista."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva vil du gjøre i dag?\". Which alternative do they choose?","criteria":{"Bli medlem eller endre opplysningene dine":"Bli medlem eller endre opplysningene dine","Få hjelp fra naboer, eller gi en hånd":"Få hjelp fra naboer, eller gi en hånd","Meld fra om noe som ikke er som det skal":"Meld fra om noe som ikke er som det skal","Si din mening eller gi en hånd":"Si din mening eller gi en hånd"}}},"expect":["Bli medlem eller endre opplysningene dine"]} +{"id":"flytter@/medlem","persona":"flytter","need":"endre-medlemskap","page":"/medlem","state":{"body":"Vi selger huset og flytter til Ski i august, så vi må ut av medlemslista."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Vil du bli medlem, eller endre opplysningene dine?\". Which alternative do they choose?","criteria":{"Bli medlem av velet":"Bli medlem av velet","Oppdater opplysningene dine":"Oppdater opplysningene dine"}}},"expect":["Oppdater opplysningene dine"]} +{"id":"skolevei@/","persona":"skolevei","need":"trafikkfare","page":"/","state":{"body":"Bilene kjører altfor fort i svingen ved skolen om morgenen, og det er ikke fortau der ungene går."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva vil du gjøre i dag?\". Which alternative do they choose?","criteria":{"Bli medlem eller endre opplysningene dine":"Bli medlem eller endre opplysningene dine","Få hjelp fra naboer, eller gi en hånd":"Få hjelp fra naboer, eller gi en hånd","Meld fra om noe som ikke er som det skal":"Meld fra om noe som ikke er som det skal","Si din mening eller gi en hånd":"Si din mening eller gi en hånd"}}},"expect":["Meld fra om noe som ikke er som det skal"]} +{"id":"skolevei@/melde-fra","persona":"skolevei","need":"trafikkfare","page":"/melde-fra","state":{"body":"Bilene kjører altfor fort i svingen ved skolen om morgenen, og det er ikke fortau der ungene går."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Har du sett noe i nabolaget som bør meldes fra om?\". Which alternative do they choose?","criteria":{"Få fikset noe som er ødelagt":"Få fikset noe som er ødelagt","Gjør trafikken tryggere der du bor":"Gjør trafikken tryggere der du bor"}}},"expect":["Gjør trafikken tryggere der du bor"]} +{"id":"busslomme@/","persona":"busslomme","need":"trafikkfare","page":"/","state":{"body":"Det er umulig å se om det kommer noen når man skal ut fra busslomma ved butikken, hekken har blitt kjempehøy."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva vil du gjøre i dag?\". Which alternative do they choose?","criteria":{"Bli medlem eller endre opplysningene dine":"Bli medlem eller endre opplysningene dine","Få hjelp fra naboer, eller gi en hånd":"Få hjelp fra naboer, eller gi en hånd","Meld fra om noe som ikke er som det skal":"Meld fra om noe som ikke er som det skal","Si din mening eller gi en hånd":"Si din mening eller gi en hånd"}}},"expect":["Meld fra om noe som ikke er som det skal"]} +{"id":"busslomme@/melde-fra","persona":"busslomme","need":"trafikkfare","page":"/melde-fra","state":{"body":"Det er umulig å se om det kommer noen når man skal ut fra busslomma ved butikken, hekken har blitt kjempehøy."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Har du sett noe i nabolaget som bør meldes fra om?\". Which alternative do they choose?","criteria":{"Få fikset noe som er ødelagt":"Få fikset noe som er ødelagt","Gjør trafikken tryggere der du bor":"Gjør trafikken tryggere der du bor"}}},"expect":["Gjør trafikken tryggere der du bor"]} +{"id":"huske@/","persona":"huske","need":"anleggsfeil","page":"/","state":{"body":"Huska på lekeplassen henger i én kjetting. Sønnen min dro i den i går og den holdt så vidt."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva vil du gjøre i dag?\". Which alternative do they choose?","criteria":{"Bli medlem eller endre opplysningene dine":"Bli medlem eller endre opplysningene dine","Få hjelp fra naboer, eller gi en hånd":"Få hjelp fra naboer, eller gi en hånd","Meld fra om noe som ikke er som det skal":"Meld fra om noe som ikke er som det skal","Si din mening eller gi en hånd":"Si din mening eller gi en hånd"}}},"expect":["Meld fra om noe som ikke er som det skal"]} +{"id":"huske@/melde-fra","persona":"huske","need":"anleggsfeil","page":"/melde-fra","state":{"body":"Huska på lekeplassen henger i én kjetting. Sønnen min dro i den i går og den holdt så vidt."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Har du sett noe i nabolaget som bør meldes fra om?\". Which alternative do they choose?","criteria":{"Få fikset noe som er ødelagt":"Få fikset noe som er ødelagt","Gjør trafikken tryggere der du bor":"Gjør trafikken tryggere der du bor"}}},"expect":["Få fikset noe som er ødelagt"]} +{"id":"bru@/","persona":"bru","need":"anleggsfeil","page":"/","state":{"body":"Planken på den lille brua på stien langs elva er råtten, jeg gikk nesten gjennom."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva vil du gjøre i dag?\". Which alternative do they choose?","criteria":{"Bli medlem eller endre opplysningene dine":"Bli medlem eller endre opplysningene dine","Få hjelp fra naboer, eller gi en hånd":"Få hjelp fra naboer, eller gi en hånd","Meld fra om noe som ikke er som det skal":"Meld fra om noe som ikke er som det skal","Si din mening eller gi en hånd":"Si din mening eller gi en hånd"}}},"expect":["Meld fra om noe som ikke er som det skal"]} +{"id":"bru@/melde-fra","persona":"bru","need":"anleggsfeil","page":"/melde-fra","state":{"body":"Planken på den lille brua på stien langs elva er råtten, jeg gikk nesten gjennom."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Har du sett noe i nabolaget som bør meldes fra om?\". Which alternative do they choose?","criteria":{"Få fikset noe som er ødelagt":"Få fikset noe som er ødelagt","Gjør trafikken tryggere der du bor":"Gjør trafikken tryggere der du bor"}}},"expect":["Få fikset noe som er ødelagt"]} +{"id":"blokker@/","persona":"blokker","need":"horingsinnspill","page":"/","state":{"body":"Kommunen skal bygge blokker på jordet bak stasjonen, og jeg synes det er alt for høyt. Kan velet si ifra?"},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva vil du gjøre i dag?\". Which alternative do they choose?","criteria":{"Bli medlem eller endre opplysningene dine":"Bli medlem eller endre opplysningene dine","Få hjelp fra naboer, eller gi en hånd":"Få hjelp fra naboer, eller gi en hånd","Meld fra om noe som ikke er som det skal":"Meld fra om noe som ikke er som det skal","Si din mening eller gi en hånd":"Si din mening eller gi en hånd"}}},"expect":["Si din mening eller gi en hånd"]} +{"id":"blokker@/bidra","persona":"blokker","need":"horingsinnspill","page":"/bidra","state":{"body":"Kommunen skal bygge blokker på jordet bak stasjonen, og jeg synes det er alt for høyt. Kan velet si ifra?"},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hvordan vil du bidra?\". Which alternative do they choose?","criteria":{"Bli med på et arrangement eller en dugnad":"Bli med på et arrangement eller en dugnad","Få din mening med i velets høringssvar":"Få din mening med i velets høringssvar","Få en plass i komiteen du brenner for":"Få en plass i komiteen du brenner for"}}},"expect":["Få din mening med i velets høringssvar"]} +{"id":"togtider@/","persona":"togtider","need":"horingsinnspill","page":"/","state":{"body":"Ruter vil kutte det tidlige toget. Jeg pendler til Oslo hver dag og vil at velet skriver til dem om det."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva vil du gjøre i dag?\". Which alternative do they choose?","criteria":{"Bli medlem eller endre opplysningene dine":"Bli medlem eller endre opplysningene dine","Få hjelp fra naboer, eller gi en hånd":"Få hjelp fra naboer, eller gi en hånd","Meld fra om noe som ikke er som det skal":"Meld fra om noe som ikke er som det skal","Si din mening eller gi en hånd":"Si din mening eller gi en hånd"}}},"expect":["Si din mening eller gi en hånd"]} +{"id":"togtider@/bidra","persona":"togtider","need":"horingsinnspill","page":"/bidra","state":{"body":"Ruter vil kutte det tidlige toget. Jeg pendler til Oslo hver dag og vil at velet skriver til dem om det."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hvordan vil du bidra?\". Which alternative do they choose?","criteria":{"Bli med på et arrangement eller en dugnad":"Bli med på et arrangement eller en dugnad","Få din mening med i velets høringssvar":"Få din mening med i velets høringssvar","Få en plass i komiteen du brenner for":"Få en plass i komiteen du brenner for"}}},"expect":["Få din mening med i velets høringssvar"]} +{"id":"vafler@/","persona":"vafler","need":"hjelpe-til","page":"/","state":{"body":"Jeg kan steke vafler på 17. mai-frokosten hvis dere trenger folk."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva vil du gjøre i dag?\". Which alternative do they choose?","criteria":{"Bli medlem eller endre opplysningene dine":"Bli medlem eller endre opplysningene dine","Få hjelp fra naboer, eller gi en hånd":"Få hjelp fra naboer, eller gi en hånd","Meld fra om noe som ikke er som det skal":"Meld fra om noe som ikke er som det skal","Si din mening eller gi en hånd":"Si din mening eller gi en hånd"}}},"expect":["Si din mening eller gi en hånd"]} +{"id":"vafler@/bidra","persona":"vafler","need":"hjelpe-til","page":"/bidra","state":{"body":"Jeg kan steke vafler på 17. mai-frokosten hvis dere trenger folk."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hvordan vil du bidra?\". Which alternative do they choose?","criteria":{"Bli med på et arrangement eller en dugnad":"Bli med på et arrangement eller en dugnad","Få din mening med i velets høringssvar":"Få din mening med i velets høringssvar","Få en plass i komiteen du brenner for":"Få en plass i komiteen du brenner for"}}},"expect":["Bli med på et arrangement eller en dugnad"]} +{"id":"motorsag@/","persona":"motorsag","need":"hjelpe-til","page":"/","state":{"body":"Har motorsag og ledig helg, kan ta trær langs elvestien hvis det er en dugnad."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva vil du gjøre i dag?\". Which alternative do they choose?","criteria":{"Bli medlem eller endre opplysningene dine":"Bli medlem eller endre opplysningene dine","Få hjelp fra naboer, eller gi en hånd":"Få hjelp fra naboer, eller gi en hånd","Meld fra om noe som ikke er som det skal":"Meld fra om noe som ikke er som det skal","Si din mening eller gi en hånd":"Si din mening eller gi en hånd"}}},"expect":["Si din mening eller gi en hånd"]} +{"id":"motorsag@/bidra","persona":"motorsag","need":"hjelpe-til","page":"/bidra","state":{"body":"Har motorsag og ledig helg, kan ta trær langs elvestien hvis det er en dugnad."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hvordan vil du bidra?\". Which alternative do they choose?","criteria":{"Bli med på et arrangement eller en dugnad":"Bli med på et arrangement eller en dugnad","Få din mening med i velets høringssvar":"Få din mening med i velets høringssvar","Få en plass i komiteen du brenner for":"Få en plass i komiteen du brenner for"}}},"expect":["Bli med på et arrangement eller en dugnad"]} +{"id":"pendler@/","persona":"pendler","need":"komite","page":"/","state":{"body":"Jeg pendler og er lei av at ingen snakker med Ruter. Jeg vil gjerne være med i gjengen som jobber med det."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva vil du gjøre i dag?\". Which alternative do they choose?","criteria":{"Bli medlem eller endre opplysningene dine":"Bli medlem eller endre opplysningene dine","Få hjelp fra naboer, eller gi en hånd":"Få hjelp fra naboer, eller gi en hånd","Meld fra om noe som ikke er som det skal":"Meld fra om noe som ikke er som det skal","Si din mening eller gi en hånd":"Si din mening eller gi en hånd"}}},"expect":["Si din mening eller gi en hånd"]} +{"id":"pendler@/bidra","persona":"pendler","need":"komite","page":"/bidra","state":{"body":"Jeg pendler og er lei av at ingen snakker med Ruter. Jeg vil gjerne være med i gjengen som jobber med det."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hvordan vil du bidra?\". Which alternative do they choose?","criteria":{"Bli med på et arrangement eller en dugnad":"Bli med på et arrangement eller en dugnad","Få din mening med i velets høringssvar":"Få din mening med i velets høringssvar","Få en plass i komiteen du brenner for":"Få en plass i komiteen du brenner for"}}},"expect":["Få en plass i komiteen du brenner for"]} +{"id":"planlegger@/","persona":"planlegger","need":"komite","page":"/","state":{"body":"Jeg er arealplanlegger av yrke og kunne bidratt når kommunen sender saker på høring."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva vil du gjøre i dag?\". Which alternative do they choose?","criteria":{"Bli medlem eller endre opplysningene dine":"Bli medlem eller endre opplysningene dine","Få hjelp fra naboer, eller gi en hånd":"Få hjelp fra naboer, eller gi en hånd","Meld fra om noe som ikke er som det skal":"Meld fra om noe som ikke er som det skal","Si din mening eller gi en hånd":"Si din mening eller gi en hånd"}}},"expect":["Si din mening eller gi en hånd"]} +{"id":"planlegger@/bidra","persona":"planlegger","need":"komite","page":"/bidra","state":{"body":"Jeg er arealplanlegger av yrke og kunne bidratt når kommunen sender saker på høring."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hvordan vil du bidra?\". Which alternative do they choose?","criteria":{"Bli med på et arrangement eller en dugnad":"Bli med på et arrangement eller en dugnad","Få din mening med i velets høringssvar":"Få din mening med i velets høringssvar","Få en plass i komiteen du brenner for":"Få en plass i komiteen du brenner for"}}},"expect":["Få en plass i komiteen du brenner for"]} +{"id":"tilhenger@/","persona":"tilhenger","need":"dele-utstyr","page":"/","state":{"body":"Jeg har en tilhenger som står ubrukt mesteparten av året, naboer kan gjerne låne den for en hundrelapp."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva vil du gjøre i dag?\". Which alternative do they choose?","criteria":{"Bli medlem eller endre opplysningene dine":"Bli medlem eller endre opplysningene dine","Få hjelp fra naboer, eller gi en hånd":"Få hjelp fra naboer, eller gi en hånd","Meld fra om noe som ikke er som det skal":"Meld fra om noe som ikke er som det skal","Si din mening eller gi en hånd":"Si din mening eller gi en hånd"}}},"expect":["Få hjelp fra naboer, eller gi en hånd"]} +{"id":"tilhenger@/naboer","persona":"tilhenger","need":"dele-utstyr","page":"/naboer","state":{"body":"Jeg har en tilhenger som står ubrukt mesteparten av året, naboer kan gjerne låne den for en hundrelapp."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Trenger du en hånd, eller kan du stille opp for en nabo?\". Which alternative do they choose?","criteria":{"Bli spurt når en nabo trenger en hånd":"Bli spurt når en nabo trenger en hånd","Få en nabo til å stille opp":"Få en nabo til å stille opp","Lån ut eller lån det naboene trenger":"Lån ut eller lån det naboene trenger"}}},"expect":["Lån ut eller lån det naboene trenger"]} +{"id":"stige@/","persona":"stige","need":"dele-utstyr","page":"/","state":{"body":"Trenger en lang stige en dag i helga for å rense takrenna, er det noen i nærheten som har?"},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva vil du gjøre i dag?\". Which alternative do they choose?","criteria":{"Bli medlem eller endre opplysningene dine":"Bli medlem eller endre opplysningene dine","Få hjelp fra naboer, eller gi en hånd":"Få hjelp fra naboer, eller gi en hånd","Meld fra om noe som ikke er som det skal":"Meld fra om noe som ikke er som det skal","Si din mening eller gi en hånd":"Si din mening eller gi en hånd"}}},"expect":["Få hjelp fra naboer, eller gi en hånd"]} +{"id":"stige@/naboer","persona":"stige","need":"dele-utstyr","page":"/naboer","state":{"body":"Trenger en lang stige en dag i helga for å rense takrenna, er det noen i nærheten som har?"},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Trenger du en hånd, eller kan du stille opp for en nabo?\". Which alternative do they choose?","criteria":{"Bli spurt når en nabo trenger en hånd":"Bli spurt når en nabo trenger en hånd","Få en nabo til å stille opp":"Få en nabo til å stille opp","Lån ut eller lån det naboene trenger":"Lån ut eller lån det naboene trenger"}}},"expect":["Lån ut eller lån det naboene trenger"]} +{"id":"snomaking@/","persona":"snomaking","need":"trenger-hjelp","page":"/","state":{"body":"Jeg er 84 og klarer ikke å måke innkjørselen lenger. Er det noen som kan hjelpe meg når det snør?"},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva vil du gjøre i dag?\". Which alternative do they choose?","criteria":{"Bli medlem eller endre opplysningene dine":"Bli medlem eller endre opplysningene dine","Få hjelp fra naboer, eller gi en hånd":"Få hjelp fra naboer, eller gi en hånd","Meld fra om noe som ikke er som det skal":"Meld fra om noe som ikke er som det skal","Si din mening eller gi en hånd":"Si din mening eller gi en hånd"}}},"expect":["Få hjelp fra naboer, eller gi en hånd"]} +{"id":"snomaking@/naboer","persona":"snomaking","need":"trenger-hjelp","page":"/naboer","state":{"body":"Jeg er 84 og klarer ikke å måke innkjørselen lenger. Er det noen som kan hjelpe meg når det snør?"},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Trenger du en hånd, eller kan du stille opp for en nabo?\". Which alternative do they choose?","criteria":{"Bli spurt når en nabo trenger en hånd":"Bli spurt når en nabo trenger en hånd","Få en nabo til å stille opp":"Få en nabo til å stille opp","Lån ut eller lån det naboene trenger":"Lån ut eller lån det naboene trenger"}}},"expect":["Få en nabo til å stille opp"]} +{"id":"nyoperert@/","persona":"nyoperert","need":"trenger-hjelp","page":"/","state":{"body":"Jeg er nyoperert i hofta og kommer meg ikke til butikken på noen uker. Kunne noen handlet for meg?"},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva vil du gjøre i dag?\". Which alternative do they choose?","criteria":{"Bli medlem eller endre opplysningene dine":"Bli medlem eller endre opplysningene dine","Få hjelp fra naboer, eller gi en hånd":"Få hjelp fra naboer, eller gi en hånd","Meld fra om noe som ikke er som det skal":"Meld fra om noe som ikke er som det skal","Si din mening eller gi en hånd":"Si din mening eller gi en hånd"}}},"expect":["Få hjelp fra naboer, eller gi en hånd"]} +{"id":"nyoperert@/naboer","persona":"nyoperert","need":"trenger-hjelp","page":"/naboer","state":{"body":"Jeg er nyoperert i hofta og kommer meg ikke til butikken på noen uker. Kunne noen handlet for meg?"},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Trenger du en hånd, eller kan du stille opp for en nabo?\". Which alternative do they choose?","criteria":{"Bli spurt når en nabo trenger en hånd":"Bli spurt når en nabo trenger en hånd","Få en nabo til å stille opp":"Få en nabo til å stille opp","Lån ut eller lån det naboene trenger":"Lån ut eller lån det naboene trenger"}}},"expect":["Få en nabo til å stille opp"]} +{"id":"hjemmekontor@/","persona":"hjemmekontor","need":"kan-hjelpe","page":"/","state":{"body":"Jeg jobber hjemmefra og kan godt måke eller handle for noen som ikke får det til selv."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva vil du gjøre i dag?\". Which alternative do they choose?","criteria":{"Bli medlem eller endre opplysningene dine":"Bli medlem eller endre opplysningene dine","Få hjelp fra naboer, eller gi en hånd":"Få hjelp fra naboer, eller gi en hånd","Meld fra om noe som ikke er som det skal":"Meld fra om noe som ikke er som det skal","Si din mening eller gi en hånd":"Si din mening eller gi en hånd"}}},"expect":["Få hjelp fra naboer, eller gi en hånd"]} +{"id":"hjemmekontor@/naboer","persona":"hjemmekontor","need":"kan-hjelpe","page":"/naboer","state":{"body":"Jeg jobber hjemmefra og kan godt måke eller handle for noen som ikke får det til selv."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Trenger du en hånd, eller kan du stille opp for en nabo?\". Which alternative do they choose?","criteria":{"Bli spurt når en nabo trenger en hånd":"Bli spurt når en nabo trenger en hånd","Få en nabo til å stille opp":"Få en nabo til å stille opp","Lån ut eller lån det naboene trenger":"Lån ut eller lån det naboene trenger"}}},"expect":["Bli spurt når en nabo trenger en hånd"]} +{"id":"pensjonert-elektriker@/","persona":"pensjonert-elektriker","need":"kan-hjelpe","page":"/","state":{"body":"Pensjonert elektriker, har bil og god tid. Si fra om noen trenger skyss eller en hånd med småting."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva vil du gjøre i dag?\". Which alternative do they choose?","criteria":{"Bli medlem eller endre opplysningene dine":"Bli medlem eller endre opplysningene dine","Få hjelp fra naboer, eller gi en hånd":"Få hjelp fra naboer, eller gi en hånd","Meld fra om noe som ikke er som det skal":"Meld fra om noe som ikke er som det skal","Si din mening eller gi en hånd":"Si din mening eller gi en hånd"}}},"expect":["Få hjelp fra naboer, eller gi en hånd"]} +{"id":"pensjonert-elektriker@/naboer","persona":"pensjonert-elektriker","need":"kan-hjelpe","page":"/naboer","state":{"body":"Pensjonert elektriker, har bil og god tid. Si fra om noen trenger skyss eller en hånd med småting."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Trenger du en hånd, eller kan du stille opp for en nabo?\". Which alternative do they choose?","criteria":{"Bli spurt når en nabo trenger en hånd":"Bli spurt når en nabo trenger en hånd","Få en nabo til å stille opp":"Få en nabo til å stille opp","Lån ut eller lån det naboene trenger":"Lån ut eller lån det naboene trenger"}}},"expect":["Bli spurt når en nabo trenger en hånd"]} diff --git a/runs/tomtervel-claude-2026-09-22/README.md b/runs/tomtervel-claude-2026-09-22/README.md new file mode 100644 index 0000000..8b9e735 --- /dev/null +++ b/runs/tomtervel-claude-2026-09-22/README.md @@ -0,0 +1,55 @@ +# Tomter Vel, built from `plans/tomtervel.yaml`, Claude Sonnet writing the words + +`build` with `MODEL=sonnet engines/claude.sh` (Claude Code's print +mode on a Max subscription), every one of 21 pages worded, first try, +verifier green by construction. Visitor: qwen3:8b, one task per call. +Personas: 17, held out. question_lint from portal at d7f60ea. + +| Visitor could read | Routed right | +|---|---| +| Headings and descriptions | 25 of 30 | +| Headings only | 22 of 30 | + +Thirty tasks because every persona behind a door is asked twice: the +door on `/`, then the form on the door's page. + +## What the misroutes say + +- **"Utstyr" is the wrong word.** The playground form is headed "Få + ødelagt utstyr fikset før noen skader seg". A swing on one chain and + a rotten plank on the river path both went to the traffic form, on + headings alone and with descriptions. To the visitor those are "the + playground" and "the path", not equipment. The plan's `who` says so; + the heading should too. +- **Hearing input is behind the wrong door.** Both hearing personas + ("the municipality wants to build blocks", "Ruter will cut the early + train") chose "Meld fra om noe i nabolaget" on headings alone. A + resident with an opinion on a municipal case is reporting something, + not volunteering. Opus's plan for the same intake put hearing input + straight on the front door; that reads better. +- **The `bidra` door holds three things that blur.** The waffle + volunteer chose the hearing form on headings, the committee form with + descriptions; the planner who wants a committee seat chose the + hearing form both times. "Get a seat on the committee that suits + you" and "get your view into the vel's hearing reply" overlap for + anyone whose interest is planning. Two doors, one for doing and one + for having a say, would separate them. +- **Membership on headings alone.** A newcomer asking "how do we join + and what does it cost" chose "Bli med og gjøre en innsats". "Bli + med" (join) is on the wrong heading: it is the words a newcomer is + looking for, and it sits on the volunteering door. + +None of these is a Norwegian problem; the pages read naturally and +LIX is 23 to 35 throughout. They are heading choices, and each names +one distinction the vel makes that a resident does not. + +## Rate, page by page + +`rate` now scores every page on a path: the front door (`@/`) is +where the door is chosen and carries no form; the door's page is +where the form and the followup are. The front door's "asked" column +is therefore near zero and means nothing there; the door pages all +say what the form asks and what happens next. The control fails on +"asked" for four pages, where one of two personas said yes to the +gutted twin; with two personas the control is strict and one stray +yes fails it. See `rate.txt`. diff --git a/runs/tomtervel-claude-2026-09-22/aggregates.yaml b/runs/tomtervel-claude-2026-09-22/aggregates.yaml new file mode 100644 index 0000000..23af7ad --- /dev/null +++ b/runs/tomtervel-claude-2026-09-22/aggregates.yaml @@ -0,0 +1,131 @@ +aggregates: +- bucket: anleggsfeil + initial: open + states: + open: + event: received + tatt_tak_i: + event: tatt_tak_i + utbedret: + event: utbedret + transitions: + open: + - tatt_tak_i + tatt_tak_i: + - utbedret +- bucket: frivillige + initial: open + states: + kontaktet: + event: kontaktet + open: + event: received + satt_opp: + event: satt_opp + takket_nei: + event: takket_nei + transitions: + kontaktet: + - satt_opp + - takket_nei + open: + - kontaktet + - takket_nei +- bucket: husstander + initial: open + states: + betalt: + event: betalt + open: + event: received + utmeldt: + event: utmeldt + transitions: + open: + - betalt + - utmeldt +- bucket: innspill + initial: open + states: + ikke_tatt_med: + event: ikke_tatt_med + open: + event: received + tatt_med: + event: tatt_med + transitions: + open: + - tatt_med + - ikke_tatt_med +- bucket: komitesoknader + initial: open + states: + avslatt: + event: avslatt + open: + event: received + plassert: + event: plassert + transitions: + open: + - plassert + - avslatt +- bucket: medlemsendringer + initial: open + states: + open: + event: received + oppdatert: + event: oppdatert + transitions: + open: + - oppdatert +- bucket: oppslag + initial: open + states: + lagt_ut: + event: lagt_ut + open: + event: received + tatt_ned: + event: tatt_ned + transitions: + open: + - lagt_ut + - tatt_ned +- bucket: trafikkmeldinger + initial: open + states: + avvist: + event: avvist + open: + event: received + ordnet: + event: ordnet + tatt_opp: + event: tatt_opp + transitions: + open: + - tatt_opp + - avvist + tatt_opp: + - ordnet + - avvist +- bucket: utlegg + initial: open + states: + avvist: + event: avvist + godkjent: + event: godkjent + open: + event: received + utbetalt: + event: utbetalt + transitions: + godkjent: + - utbetalt + - avvist + open: + - godkjent + - avvist diff --git a/runs/tomtervel-claude-2026-09-22/answers-full.jsonl b/runs/tomtervel-claude-2026-09-22/answers-full.jsonl new file mode 100644 index 0000000..c95b43a --- /dev/null +++ b/runs/tomtervel-claude-2026-09-22/answers-full.jsonl @@ -0,0 +1,30 @@ +{"choice":"Meld deg inn eller endre opplysningene dine","confidence":0.95,"id":"nyinnflyttet@/"} +{"choice":"Bli med i velet","confidence":0.95,"id":"nyinnflyttet@/medlem"} +{"choice":"Bli med og gjøre en innsats","confidence":0.85,"id":"glemte-a-betale@/"} +{"choice":"Bli med i velet","confidence":0.85,"id":"glemte-a-betale@/medlem"} +{"choice":"Meld deg inn eller endre opplysningene dine","confidence":0.95,"id":"ny-epost@/"} +{"choice":"Hold opplysningene dine oppdatert","confidence":1.0,"id":"ny-epost@/medlem"} +{"choice":"Meld deg inn eller endre opplysningene dine","confidence":0.95,"id":"flytter@/"} +{"choice":"Hold opplysningene dine oppdatert","confidence":0.95,"id":"flytter@/medlem"} +{"choice":"Meld fra om noe i nabolaget","confidence":0.95,"id":"skolevei@/"} +{"choice":"Få en farlig trafikkplass tatt opp med kommunen","confidence":0.95,"id":"skolevei@/melde-fra"} +{"choice":"Meld fra om noe i nabolaget","confidence":0.95,"id":"busslomme@/"} +{"choice":"Få en farlig trafikkplass tatt opp med kommunen","confidence":0.95,"id":"busslomme@/melde-fra"} +{"choice":"Meld fra om noe i nabolaget","confidence":0.95,"id":"huske@/"} +{"choice":"Få ødelagt utstyr fikset før noen skader seg","confidence":0.95,"id":"huske@/melde-fra"} +{"choice":"Meld fra om noe i nabolaget","confidence":0.95,"id":"bru@/"} +{"choice":"Få en farlig trafikkplass tatt opp med kommunen","confidence":0.85,"id":"bru@/melde-fra"} +{"choice":"Bli med og gjøre en innsats","confidence":0.95,"id":"blokker@/"} +{"choice":"Få din mening med i velets høringssvar","confidence":0.95,"id":"blokker@/bidra"} +{"choice":"Meld deg inn eller endre opplysningene dine","confidence":0.95,"id":"togtider@/"} +{"choice":"Få din mening med i velets høringssvar","confidence":0.95,"id":"togtider@/bidra"} +{"choice":"Bli med og gjøre en innsats","confidence":0.85,"id":"vafler@/"} +{"choice":"Få en plass i komiteen som passer deg","confidence":0.95,"id":"vafler@/bidra"} +{"choice":"Bli med og gjøre en innsats","confidence":0.95,"id":"motorsag@/"} +{"choice":"Bli med på dugnad eller arrangement","confidence":0.95,"id":"motorsag@/bidra"} +{"choice":"Bli med og gjøre en innsats","confidence":0.95,"id":"pendler@/"} +{"choice":"Få en plass i komiteen som passer deg","confidence":0.95,"id":"pendler@/bidra"} +{"choice":"Bli med og gjøre en innsats","confidence":0.95,"id":"planlegger@/"} +{"choice":"Få din mening med i velets høringssvar","confidence":0.95,"id":"planlegger@/bidra"} +{"choice":"Lån eller lån ut utstyr til en nabo","confidence":0.95,"id":"tilhenger@/"} +{"choice":"Lån eller lån ut utstyr til en nabo","confidence":0.95,"id":"stige@/"} diff --git a/runs/tomtervel-claude-2026-09-22/answers-skim.jsonl b/runs/tomtervel-claude-2026-09-22/answers-skim.jsonl new file mode 100644 index 0000000..7d26466 --- /dev/null +++ b/runs/tomtervel-claude-2026-09-22/answers-skim.jsonl @@ -0,0 +1,30 @@ +{"choice":"Bli med og gjøre en innsats","confidence":0.85,"id":"nyinnflyttet@/"} +{"choice":"Bli med i velet","confidence":0.95,"id":"nyinnflyttet@/medlem"} +{"choice":"Meld deg inn eller endre opplysningene dine","confidence":0.85,"id":"glemte-a-betale@/"} +{"choice":"Bli med i velet","confidence":0.95,"id":"glemte-a-betale@/medlem"} +{"choice":"Meld deg inn eller endre opplysningene dine","confidence":0.95,"id":"ny-epost@/"} +{"choice":"Hold opplysningene dine oppdatert","confidence":0.95,"id":"ny-epost@/medlem"} +{"choice":"Meld deg inn eller endre opplysningene dine","confidence":0.95,"id":"flytter@/"} +{"choice":"Hold opplysningene dine oppdatert","confidence":0.95,"id":"flytter@/medlem"} +{"choice":"Meld fra om noe i nabolaget","confidence":0.95,"id":"skolevei@/"} +{"choice":"Få en farlig trafikkplass tatt opp med kommunen","confidence":0.95,"id":"skolevei@/melde-fra"} +{"choice":"Bli med og gjøre en innsats","confidence":0.85,"id":"busslomme@/"} +{"choice":"Få en farlig trafikkplass tatt opp med kommunen","confidence":0.85,"id":"busslomme@/melde-fra"} +{"choice":"Meld fra om noe i nabolaget","confidence":0.95,"id":"huske@/"} +{"choice":"Få en farlig trafikkplass tatt opp med kommunen","confidence":0.85,"id":"huske@/melde-fra"} +{"choice":"Meld fra om noe i nabolaget","confidence":0.95,"id":"bru@/"} +{"choice":"Få en farlig trafikkplass tatt opp med kommunen","confidence":0.85,"id":"bru@/melde-fra"} +{"choice":"Meld fra om noe i nabolaget","confidence":0.95,"id":"blokker@/"} +{"choice":"Få din mening med i velets høringssvar","confidence":0.95,"id":"blokker@/bidra"} +{"choice":"Meld fra om noe i nabolaget","confidence":0.95,"id":"togtider@/"} +{"choice":"Få din mening med i velets høringssvar","confidence":0.95,"id":"togtider@/bidra"} +{"choice":"Bli med og gjøre en innsats","confidence":0.95,"id":"vafler@/"} +{"choice":"Få din mening med i velets høringssvar","confidence":0.95,"id":"vafler@/bidra"} +{"choice":"Bli med og gjøre en innsats","confidence":0.95,"id":"motorsag@/"} +{"choice":"Bli med på dugnad eller arrangement","confidence":0.95,"id":"motorsag@/bidra"} +{"choice":"Bli med og gjøre en innsats","confidence":0.95,"id":"pendler@/"} +{"choice":"Få en plass i komiteen som passer deg","confidence":0.95,"id":"pendler@/bidra"} +{"choice":"Bli med og gjøre en innsats","confidence":0.95,"id":"planlegger@/"} +{"choice":"Få din mening med i velets høringssvar","confidence":0.95,"id":"planlegger@/bidra"} +{"choice":"Lån eller lån ut utstyr til en nabo","confidence":0.95,"id":"tilhenger@/"} +{"choice":"Lån eller lån ut utstyr til en nabo","confidence":0.95,"id":"stige@/"} diff --git a/runs/tomtervel-claude-2026-09-22/build.log b/runs/tomtervel-claude-2026-09-22/build.log new file mode 100644 index 0000000..f65337f --- /dev/null +++ b/runs/tomtervel-claude-2026-09-22/build.log @@ -0,0 +1,33 @@ +words: questions/arrangementskomite/index.yaml +words: questions/bidra/index.yaml +words: questions/decide/dele-utstyr.yaml +words: questions/index.yaml +words: questions/kasserer/index.yaml +words: questions/komiteer/index.yaml +words: questions/komiteer/utlegg-sent.yaml +words: questions/komiteer/utlegg.yaml +words: questions/lekeplasskomite/index.yaml +words: questions/medlem/index.yaml +words: questions/melde-fra/index.yaml +words: questions/received/anleggsfeil.yaml +words: questions/received/bli-medlem.yaml +words: questions/received/dele-utstyr.yaml +words: questions/received/endre-medlemskap.yaml +words: questions/received/hjelpe-til.yaml +words: questions/received/horingsinnspill.yaml +words: questions/received/komite.yaml +words: questions/received/trafikkfare.yaml +words: questions/styret/index.yaml +words: questions/trafikkomite/index.yaml +content repo written to runs/tomtervel-claude-2026-09-22 +OK: 21 question(s), 10 aggregate(s) valid +need "bli-medlem": / [Meld deg inn eller endre opplysningene dine] -> /medlem [Bli med i velet] -> "husstander" +need "endre-medlemskap": / [Meld deg inn eller endre opplysningene dine] -> /medlem [Hold opplysningene dine oppdatert] -> "medlemsendringer" +need "trafikkfare": / [Meld fra om noe i nabolaget] -> /melde-fra [Få en farlig trafikkplass tatt opp med kommunen] -> "trafikkmeldinger" +need "anleggsfeil": / [Meld fra om noe i nabolaget] -> /melde-fra [Få ødelagt utstyr fikset før noen skader seg] -> "anleggsfeil" +need "horingsinnspill": / [Bli med og gjøre en innsats] -> /bidra [Få din mening med i velets høringssvar] -> "innspill" +need "hjelpe-til": / [Bli med og gjøre en innsats] -> /bidra [Bli med på dugnad eller arrangement] -> "frivillige" +need "komite": / [Bli med og gjøre en innsats] -> /bidra [Få en plass i komiteen som passer deg] -> "komitesoknader" +need "dele-utstyr": / [Lån eller lån ut utstyr til en nabo] -> "oppslag" +need "utlegg": /komiteer/utlegg [Få tilbake penger du har lagt ut] -> "utlegg" +OK: 9 need(s) structurally met, 0 planned, 17 persona(s) diff --git a/runs/tomtervel-claude-2026-09-22/llm/01-questions_arrangementskomite_index.yaml.md b/runs/tomtervel-claude-2026-09-22/llm/01-questions_arrangementskomite_index.yaml.md new file mode 100644 index 0000000..c17df38 --- /dev/null +++ b/runs/tomtervel-claude-2026-09-22/llm/01-questions_arrangementskomite_index.yaml.md @@ -0,0 +1,75 @@ +You write the words for one page of a website for this business. + +Business: Tomter Vel +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. +Contact: Styret i Tomter Vel +Language to write in: nb + +Everyone the site serves: +- door medlem: for en husstand i Tomter som vil være med i velet, eller allerede er det; behind it: bli-medlem, endre-medlemskap +- door melde-fra: for noen som har sett noe i nabolaget som ikke er som det skal; behind it: trafikkfare, anleggsfeil +- door bidra: for noen som vil gjøre en innsats, eller si sin mening i en sak; behind it: horingsinnspill, hjelpe-til, komite +- bli-medlem: en husstand i Tomter - wants: å bli medlem og få betalt kontingenten. Handled by kasserer. Stages: open -> betalt -> utmeldt. +- endre-medlemskap: et medlem som har flyttet, byttet e-post eller vil melde seg ut - wants: at velet har riktige opplysninger om dem. Handled by kasserer. Stages: open -> oppdatert. +- trafikkfare: en som har sett et farlig sted i trafikken - wants: at velet tar det opp med kommunen eller den som eier veien. Handled by trafikkomite. Stages: open -> tatt_opp -> ordnet -> avvist. +- anleggsfeil: en som ser at noe på lekeplassen eller stien er ødelagt - wants: at det blir fikset før noen skader seg. Handled by lekeplasskomite. Stages: open -> tatt_tak_i -> utbedret. +- horingsinnspill: en beboer som har en mening om en sak kommunen har på høring - wants: at velet tar det med i sitt svar. Handled by styret. Stages: open -> tatt_med -> ikke_tatt_med. +- hjelpe-til: en som vil hjelpe til på et arrangement eller en dugnad - wants: å bli satt opp på noe som passer dem. Handled by arrangementskomite. Stages: open -> kontaktet -> satt_opp -> takket_nei. +- komite: en som vil sitte i en komité - wants: en plass i den komiteen som driver med det de bryr seg om. Handled by styret. Stages: open -> plassert -> avslatt. +- dele-utstyr: en nabo som har noe å låne ut, eller trenger å låne noe - wants: et oppslag som naboene ser. Handled by styret. Stages: open -> lagt_ut -> tatt_ned. +- utlegg: en i en komité som har lagt ut for noe - wants: pengene tilbake. Handled by kasserer. Stages: open -> godkjent -> utbetalt -> avvist. + +The page: questions/arrangementskomite/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": { + "frivillige": { + "description": "", + "heading": "", + "moves": { + "kontaktet->satt_opp": "satt_opp>", + "kontaktet->takket_nei": "takket_nei>", + "open->kontaktet": "kontaktet>", + "open->takket_nei": "takket_nei>" + } + } + }, + "confirm": "", + "description": "", + "links": {}, + "question": "" +} + +Reply with the JSON object only. + +=== REPLY === +```json +{ + "buckets": { + "frivillige": { + "description": "Alle som har sagt de vil hjelpe til, og hvor langt du har kommet med å sette dem i sving.", + "heading": "Folk som vil hjelpe til", + "moves": { + "kontaktet->satt_opp": "Satt på oppgave", + "kontaktet->takket_nei": "Takket nei", + "open->kontaktet": "Tatt kontakt", + "open->takket_nei": "Takket nei" + } + } + }, + "confirm": "Lagre", + "description": "Her holder du oversikt over frivillige og setter dem opp på arrangementer og dugnader.", + "links": {}, + "question": "Hvem kan jeg sette i sving?" +} +``` diff --git a/runs/tomtervel-claude-2026-09-22/llm/02-questions_bidra_index.yaml.md b/runs/tomtervel-claude-2026-09-22/llm/02-questions_bidra_index.yaml.md new file mode 100644 index 0000000..197667a --- /dev/null +++ b/runs/tomtervel-claude-2026-09-22/llm/02-questions_bidra_index.yaml.md @@ -0,0 +1,117 @@ +You write the words for one page of a website for this business. + +Business: Tomter Vel +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. +Contact: Styret i Tomter Vel +Language to write in: nb + +Everyone the site serves: +- door medlem: for en husstand i Tomter som vil være med i velet, eller allerede er det; behind it: bli-medlem, endre-medlemskap +- door melde-fra: for noen som har sett noe i nabolaget som ikke er som det skal; behind it: trafikkfare, anleggsfeil +- door bidra: for noen som vil gjøre en innsats, eller si sin mening i en sak; behind it: horingsinnspill, hjelpe-til, komite +- bli-medlem: en husstand i Tomter - wants: å bli medlem og få betalt kontingenten. Handled by kasserer. Stages: open -> betalt -> utmeldt. +- endre-medlemskap: et medlem som har flyttet, byttet e-post eller vil melde seg ut - wants: at velet har riktige opplysninger om dem. Handled by kasserer. Stages: open -> oppdatert. +- trafikkfare: en som har sett et farlig sted i trafikken - wants: at velet tar det opp med kommunen eller den som eier veien. Handled by trafikkomite. Stages: open -> tatt_opp -> ordnet -> avvist. +- anleggsfeil: en som ser at noe på lekeplassen eller stien er ødelagt - wants: at det blir fikset før noen skader seg. Handled by lekeplasskomite. Stages: open -> tatt_tak_i -> utbedret. +- horingsinnspill: en beboer som har en mening om en sak kommunen har på høring - wants: at velet tar det med i sitt svar. Handled by styret. Stages: open -> tatt_med -> ikke_tatt_med. +- hjelpe-til: en som vil hjelpe til på et arrangement eller en dugnad - wants: å bli satt opp på noe som passer dem. Handled by arrangementskomite. Stages: open -> kontaktet -> satt_opp -> takket_nei. +- komite: en som vil sitte i en komité - wants: en plass i den komiteen som driver med det de bryr seg om. Handled by styret. Stages: open -> plassert -> avslatt. +- dele-utstyr: en nabo som har noe å låne ut, eller trenger å låne noe - wants: et oppslag som naboene ser. Handled by styret. Stages: open -> lagt_ut -> tatt_ned. +- utlegg: en i en komité som har lagt ut for noe - wants: pengene tilbake. Handled by kasserer. Stages: open -> godkjent -> utbetalt -> avvist. + +The page: questions/bidra/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": "", + "needs": { + "hjelpe-til": { + "button": "", + "description": "", + "form_title": "", + "heading": "", + "labels": { + "hva": "", + "navn": "", + "telefon": "" + } + }, + "horingsinnspill": { + "button": "", + "description": "", + "form_title": "", + "heading": "", + "labels": { + "innspill": "", + "navn": "", + "sak": "" + } + }, + "komite": { + "button": "", + "description": "", + "form_title": "", + "heading": "", + "labels": { + "epost": "", + "komite": "", + "navn": "" + } + } + }, + "question": "" +} + +Reply with the JSON object only. + +=== REPLY === +```json +{ + "description": "Tomter Vel drives på frivillig innsats. Her kan du hjelpe til på et arrangement, si din mening i en høringssak, eller sitte i en komité.", + "needs": { + "hjelpe-til": { + "button": "Meld deg", + "description": "Vi trenger folk til dugnader og arrangementer gjennom året. Si fra hva du kan bidra med, så tar vi kontakt.", + "form_title": "Meld deg som frivillig", + "heading": "Bli med på dugnad eller arrangement", + "labels": { + "hva": "Hva kan du bidra med?", + "navn": "Navn", + "telefon": "Telefon" + } + }, + "horingsinnspill": { + "button": "Send innspill", + "description": "Har kommunen en sak på høring du mener noe om? Send oss innspillet ditt, så vurderer styret det til vårt svar.", + "form_title": "Send høringsinnspill", + "heading": "Få din mening med i velets høringssvar", + "labels": { + "innspill": "Ditt innspill", + "navn": "Navn", + "sak": "Hvilken sak gjelder det?" + } + }, + "komite": { + "button": "Meld interesse", + "description": "Vi har sju komiteer som trenger folk. Fortell hvilken du er interessert i, så tar styret kontakt.", + "form_title": "Bli med i en komité", + "heading": "Få en plass i komiteen som passer deg", + "labels": { + "epost": "E-post", + "komite": "Hvilken komité?", + "navn": "Navn" + } + } + }, + "question": "Vil du hjelpe til eller si din mening?" +} +``` diff --git a/runs/tomtervel-claude-2026-09-22/llm/03-questions_decide_dele-utstyr.yaml.md b/runs/tomtervel-claude-2026-09-22/llm/03-questions_decide_dele-utstyr.yaml.md new file mode 100644 index 0000000..b1371a8 --- /dev/null +++ b/runs/tomtervel-claude-2026-09-22/llm/03-questions_decide_dele-utstyr.yaml.md @@ -0,0 +1,61 @@ +You write the words for one page of a website for this business. + +Business: Tomter Vel +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. +Contact: Styret i Tomter Vel +Language to write in: nb + +Everyone the site serves: +- door medlem: for en husstand i Tomter som vil være med i velet, eller allerede er det; behind it: bli-medlem, endre-medlemskap +- door melde-fra: for noen som har sett noe i nabolaget som ikke er som det skal; behind it: trafikkfare, anleggsfeil +- door bidra: for noen som vil gjøre en innsats, eller si sin mening i en sak; behind it: horingsinnspill, hjelpe-til, komite +- bli-medlem: en husstand i Tomter - wants: å bli medlem og få betalt kontingenten. Handled by kasserer. Stages: open -> betalt -> utmeldt. +- endre-medlemskap: et medlem som har flyttet, byttet e-post eller vil melde seg ut - wants: at velet har riktige opplysninger om dem. Handled by kasserer. Stages: open -> oppdatert. +- trafikkfare: en som har sett et farlig sted i trafikken - wants: at velet tar det opp med kommunen eller den som eier veien. Handled by trafikkomite. Stages: open -> tatt_opp -> ordnet -> avvist. +- anleggsfeil: en som ser at noe på lekeplassen eller stien er ødelagt - wants: at det blir fikset før noen skader seg. Handled by lekeplasskomite. Stages: open -> tatt_tak_i -> utbedret. +- horingsinnspill: en beboer som har en mening om en sak kommunen har på høring - wants: at velet tar det med i sitt svar. Handled by styret. Stages: open -> tatt_med -> ikke_tatt_med. +- hjelpe-til: en som vil hjelpe til på et arrangement eller en dugnad - wants: å bli satt opp på noe som passer dem. Handled by arrangementskomite. Stages: open -> kontaktet -> satt_opp -> takket_nei. +- komite: en som vil sitte i en komité - wants: en plass i den komiteen som driver med det de bryr seg om. Handled by styret. Stages: open -> plassert -> avslatt. +- dele-utstyr: en nabo som har noe å låne ut, eller trenger å låne noe - wants: et oppslag som naboene ser. Handled by styret. Stages: open -> lagt_ut -> tatt_ned. +- utlegg: en i en komité som har lagt ut for noe - wants: pengene tilbake. Handled by kasserer. Stages: open -> godkjent -> utbetalt -> avvist. + +The page: questions/decide/dele-utstyr.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": "", + "moves": { + "tatt_ned": { + "button": "", + "description": "", + "heading": "" + } + }, + "question": "" +} + +Reply with the JSON object only. + +=== REPLY === +```json +{ + "description": "Du la ut noe naboene kunne låne. Her ser du om det er tid for å ta det ned igjen.", + "moves": { + "tatt_ned": { + "button": "Ta ned oppslaget", + "description": "Oppslaget fjernes fra siden. Passer når tingen er lånt bort, hentet tilbake eller ikke lenger aktuell.", + "heading": "Fjern oppslaget om utlånet" + } + }, + "question": "Skal oppslaget om det du delte fortsatt stå ute?" +} +``` diff --git a/runs/tomtervel-claude-2026-09-22/llm/04-questions_index.yaml.md b/runs/tomtervel-claude-2026-09-22/llm/04-questions_index.yaml.md new file mode 100644 index 0000000..f820a67 --- /dev/null +++ b/runs/tomtervel-claude-2026-09-22/llm/04-questions_index.yaml.md @@ -0,0 +1,109 @@ +You write the words for one page of a website for this business. + +Business: Tomter Vel +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. +Contact: Styret i Tomter Vel +Language to write in: nb + +Everyone the site serves: +- door medlem: for en husstand i Tomter som vil være med i velet, eller allerede er det; behind it: bli-medlem, endre-medlemskap +- door melde-fra: for noen som har sett noe i nabolaget som ikke er som det skal; behind it: trafikkfare, anleggsfeil +- door bidra: for noen som vil gjøre en innsats, eller si sin mening i en sak; behind it: horingsinnspill, hjelpe-til, komite +- bli-medlem: en husstand i Tomter - wants: å bli medlem og få betalt kontingenten. Handled by kasserer. Stages: open -> betalt -> utmeldt. +- endre-medlemskap: et medlem som har flyttet, byttet e-post eller vil melde seg ut - wants: at velet har riktige opplysninger om dem. Handled by kasserer. Stages: open -> oppdatert. +- trafikkfare: en som har sett et farlig sted i trafikken - wants: at velet tar det opp med kommunen eller den som eier veien. Handled by trafikkomite. Stages: open -> tatt_opp -> ordnet -> avvist. +- anleggsfeil: en som ser at noe på lekeplassen eller stien er ødelagt - wants: at det blir fikset før noen skader seg. Handled by lekeplasskomite. Stages: open -> tatt_tak_i -> utbedret. +- horingsinnspill: en beboer som har en mening om en sak kommunen har på høring - wants: at velet tar det med i sitt svar. Handled by styret. Stages: open -> tatt_med -> ikke_tatt_med. +- hjelpe-til: en som vil hjelpe til på et arrangement eller en dugnad - wants: å bli satt opp på noe som passer dem. Handled by arrangementskomite. Stages: open -> kontaktet -> satt_opp -> takket_nei. +- komite: en som vil sitte i en komité - wants: en plass i den komiteen som driver med det de bryr seg om. Handled by styret. Stages: open -> plassert -> avslatt. +- dele-utstyr: en nabo som har noe å låne ut, eller trenger å låne noe - wants: et oppslag som naboene ser. Handled by styret. Stages: open -> lagt_ut -> tatt_ned. +- utlegg: en i en komité som har lagt ut for noe - wants: pengene tilbake. Handled by kasserer. Stages: open -> godkjent -> utbetalt -> avvist. + +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": "", + "doors": { + "bidra": { + "button": "", + "description": "", + "heading": "" + }, + "medlem": { + "button": "", + "description": "", + "heading": "" + }, + "melde-fra": { + "button": "", + "description": "", + "heading": "" + } + }, + "needs": { + "dele-utstyr": { + "button": "", + "description": "", + "form_title": "", + "heading": "", + "labels": { + "email": "", + "har_eller_trenger": "", + "hva": "", + "navn": "" + } + } + }, + "question": "" +} + +Reply with the JSON object only. + +=== REPLY === +```json +{ + "description": "Tomter Vel er velforeningen for Tomter, og har jobbet for bygda siden 1947. Her finner du veien videre, enten du vil bli medlem, melde fra om noe, eller bidra selv.", + "doors": { + "bidra": { + "button": "Bidra", + "description": "Meld deg til en komité, still opp på dugnad, eller si din mening om en sak kommunen har på høring.", + "heading": "Bli med og gjøre en innsats" + }, + "medlem": { + "button": "Medlemskap", + "description": "Meld deg inn i velet, eller gi oss beskjed om at noe har endret seg.", + "heading": "Meld deg inn eller endre opplysningene dine" + }, + "melde-fra": { + "button": "Meld fra", + "description": "Har du sett noe farlig i trafikken, eller noe som er ødelagt på lekeplassen eller stien? Fortell oss om det.", + "heading": "Meld fra om noe i nabolaget" + } + }, + "needs": { + "dele-utstyr": { + "button": "Legg ut", + "description": "Har du noe naboene kan få låne, eller trenger du å låne noe selv? Legg ut en melding så andre i Tomter ser den.", + "form_title": "Lån eller lån ut", + "heading": "Lån eller lån ut utstyr til en nabo", + "labels": { + "email": "E-post", + "har_eller_trenger": "Har du noe å låne ut, eller trenger du å låne?", + "hva": "Hva gjelder det?", + "navn": "Navn" + } + } + }, + "question": "Hva vil du gjøre?" +} +``` diff --git a/runs/tomtervel-claude-2026-09-22/llm/05-questions_kasserer_index.yaml.md b/runs/tomtervel-claude-2026-09-22/llm/05-questions_kasserer_index.yaml.md new file mode 100644 index 0000000..d7e37e0 --- /dev/null +++ b/runs/tomtervel-claude-2026-09-22/llm/05-questions_kasserer_index.yaml.md @@ -0,0 +1,105 @@ +You write the words for one page of a website for this business. + +Business: Tomter Vel +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. +Contact: Styret i Tomter Vel +Language to write in: nb + +Everyone the site serves: +- door medlem: for en husstand i Tomter som vil være med i velet, eller allerede er det; behind it: bli-medlem, endre-medlemskap +- door melde-fra: for noen som har sett noe i nabolaget som ikke er som det skal; behind it: trafikkfare, anleggsfeil +- door bidra: for noen som vil gjøre en innsats, eller si sin mening i en sak; behind it: horingsinnspill, hjelpe-til, komite +- bli-medlem: en husstand i Tomter - wants: å bli medlem og få betalt kontingenten. Handled by kasserer. Stages: open -> betalt -> utmeldt. +- endre-medlemskap: et medlem som har flyttet, byttet e-post eller vil melde seg ut - wants: at velet har riktige opplysninger om dem. Handled by kasserer. Stages: open -> oppdatert. +- trafikkfare: en som har sett et farlig sted i trafikken - wants: at velet tar det opp med kommunen eller den som eier veien. Handled by trafikkomite. Stages: open -> tatt_opp -> ordnet -> avvist. +- anleggsfeil: en som ser at noe på lekeplassen eller stien er ødelagt - wants: at det blir fikset før noen skader seg. Handled by lekeplasskomite. Stages: open -> tatt_tak_i -> utbedret. +- horingsinnspill: en beboer som har en mening om en sak kommunen har på høring - wants: at velet tar det med i sitt svar. Handled by styret. Stages: open -> tatt_med -> ikke_tatt_med. +- hjelpe-til: en som vil hjelpe til på et arrangement eller en dugnad - wants: å bli satt opp på noe som passer dem. Handled by arrangementskomite. Stages: open -> kontaktet -> satt_opp -> takket_nei. +- komite: en som vil sitte i en komité - wants: en plass i den komiteen som driver med det de bryr seg om. Handled by styret. Stages: open -> plassert -> avslatt. +- dele-utstyr: en nabo som har noe å låne ut, eller trenger å låne noe - wants: et oppslag som naboene ser. Handled by styret. Stages: open -> lagt_ut -> tatt_ned. +- utlegg: en i en komité som har lagt ut for noe - wants: pengene tilbake. Handled by kasserer. Stages: open -> godkjent -> utbetalt -> avvist. + +The page: questions/kasserer/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": { + "husstander": { + "description": "", + "heading": "", + "moves": { + "open->betalt": "betalt>", + "open->utmeldt": "utmeldt>" + } + }, + "medlemsendringer": { + "description": "", + "heading": "", + "moves": { + "open->oppdatert": "oppdatert>" + } + }, + "utlegg": { + "description": "", + "heading": "", + "moves": { + "godkjent->avvist": "avvist>", + "godkjent->utbetalt": "utbetalt>", + "open->avvist": "avvist>", + "open->godkjent": "godkjent>" + } + } + }, + "confirm": "", + "description": "", + "links": {}, + "question": "" +} + +Reply with the JSON object only. + +=== REPLY === +```json +{ + "buckets": { + "husstander": { + "description": "Husstander som vil bli medlem eller har betalt kontingenten, klare for oppfølging.", + "heading": "Husstander som vil bli medlem", + "moves": { + "open->betalt": "Merk som betalt", + "open->utmeldt": "Meld ut" + } + }, + "medlemsendringer": { + "description": "Medlemmer som har flyttet, byttet e-post eller vil melde seg ut.", + "heading": "Endringer i medlemsopplysninger", + "moves": { + "open->oppdatert": "Oppdater opplysninger" + } + }, + "utlegg": { + "description": "Utlegg fra komiteene som venter på godkjenning eller utbetaling.", + "heading": "Utlegg som skal dekkes", + "moves": { + "godkjent->avvist": "Avvis likevel", + "godkjent->utbetalt": "Merk som utbetalt", + "open->avvist": "Avvis", + "open->godkjent": "Godkjenn" + } + } + }, + "confirm": "Bekreft", + "description": "Her holder du styr på medlemskap, kontingent og utlegg fra komiteene.", + "links": {}, + "question": "Hvem venter på svar fra kasserer?" +} +``` diff --git a/runs/tomtervel-claude-2026-09-22/llm/06-questions_komiteer_index.yaml.md b/runs/tomtervel-claude-2026-09-22/llm/06-questions_komiteer_index.yaml.md new file mode 100644 index 0000000..59bd4e0 --- /dev/null +++ b/runs/tomtervel-claude-2026-09-22/llm/06-questions_komiteer_index.yaml.md @@ -0,0 +1,63 @@ +You write the words for one page of a website for this business. + +Business: Tomter Vel +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. +Contact: Styret i Tomter Vel +Language to write in: nb + +Everyone the site serves: +- door medlem: for en husstand i Tomter som vil være med i velet, eller allerede er det; behind it: bli-medlem, endre-medlemskap +- door melde-fra: for noen som har sett noe i nabolaget som ikke er som det skal; behind it: trafikkfare, anleggsfeil +- door bidra: for noen som vil gjøre en innsats, eller si sin mening i en sak; behind it: horingsinnspill, hjelpe-til, komite +- bli-medlem: en husstand i Tomter - wants: å bli medlem og få betalt kontingenten. Handled by kasserer. Stages: open -> betalt -> utmeldt. +- endre-medlemskap: et medlem som har flyttet, byttet e-post eller vil melde seg ut - wants: at velet har riktige opplysninger om dem. Handled by kasserer. Stages: open -> oppdatert. +- trafikkfare: en som har sett et farlig sted i trafikken - wants: at velet tar det opp med kommunen eller den som eier veien. Handled by trafikkomite. Stages: open -> tatt_opp -> ordnet -> avvist. +- anleggsfeil: en som ser at noe på lekeplassen eller stien er ødelagt - wants: at det blir fikset før noen skader seg. Handled by lekeplasskomite. Stages: open -> tatt_tak_i -> utbedret. +- horingsinnspill: en beboer som har en mening om en sak kommunen har på høring - wants: at velet tar det med i sitt svar. Handled by styret. Stages: open -> tatt_med -> ikke_tatt_med. +- hjelpe-til: en som vil hjelpe til på et arrangement eller en dugnad - wants: å bli satt opp på noe som passer dem. Handled by arrangementskomite. Stages: open -> kontaktet -> satt_opp -> takket_nei. +- komite: en som vil sitte i en komité - wants: en plass i den komiteen som driver med det de bryr seg om. Handled by styret. Stages: open -> plassert -> avslatt. +- dele-utstyr: en nabo som har noe å låne ut, eller trenger å låne noe - wants: et oppslag som naboene ser. Handled by styret. Stages: open -> lagt_ut -> tatt_ned. +- utlegg: en i en komité som har lagt ut for noe - wants: pengene tilbake. Handled by kasserer. Stages: open -> godkjent -> utbetalt -> avvist. + +The page: questions/komiteer/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": "", + "description": "", + "links": { + "utlegg": { + "button": "", + "description": "", + "heading": "" + } + }, + "question": "" +} + +Reply with the JSON object only. + +=== REPLY === +{ + "buckets": {}, + "confirm": "Lagre", + "description": "Her ser komiteen sakene som venter, og kan flytte dem videre etter hvert som dere tar tak i dem.", + "links": { + "utlegg": { + "button": "Legg inn utlegg", + "description": "Har du lagt ut penger for komiteen? Registrer det her, så tar kasserer seg av resten.", + "heading": "Få tilbake penger du har lagt ut" + } + }, + "question": "Hva står på tur for komiteen nå?" +} diff --git a/runs/tomtervel-claude-2026-09-22/llm/07-questions_komiteer_utlegg-sent.yaml.md b/runs/tomtervel-claude-2026-09-22/llm/07-questions_komiteer_utlegg-sent.yaml.md new file mode 100644 index 0000000..baa2b81 --- /dev/null +++ b/runs/tomtervel-claude-2026-09-22/llm/07-questions_komiteer_utlegg-sent.yaml.md @@ -0,0 +1,51 @@ +You write the words for one page of a website for this business. + +Business: Tomter Vel +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. +Contact: Styret i Tomter Vel +Language to write in: nb + +Everyone the site serves: +- door medlem: for en husstand i Tomter som vil være med i velet, eller allerede er det; behind it: bli-medlem, endre-medlemskap +- door melde-fra: for noen som har sett noe i nabolaget som ikke er som det skal; behind it: trafikkfare, anleggsfeil +- door bidra: for noen som vil gjøre en innsats, eller si sin mening i en sak; behind it: horingsinnspill, hjelpe-til, komite +- bli-medlem: en husstand i Tomter - wants: å bli medlem og få betalt kontingenten. Handled by kasserer. Stages: open -> betalt -> utmeldt. +- endre-medlemskap: et medlem som har flyttet, byttet e-post eller vil melde seg ut - wants: at velet har riktige opplysninger om dem. Handled by kasserer. Stages: open -> oppdatert. +- trafikkfare: en som har sett et farlig sted i trafikken - wants: at velet tar det opp med kommunen eller den som eier veien. Handled by trafikkomite. Stages: open -> tatt_opp -> ordnet -> avvist. +- anleggsfeil: en som ser at noe på lekeplassen eller stien er ødelagt - wants: at det blir fikset før noen skader seg. Handled by lekeplasskomite. Stages: open -> tatt_tak_i -> utbedret. +- horingsinnspill: en beboer som har en mening om en sak kommunen har på høring - wants: at velet tar det med i sitt svar. Handled by styret. Stages: open -> tatt_med -> ikke_tatt_med. +- hjelpe-til: en som vil hjelpe til på et arrangement eller en dugnad - wants: å bli satt opp på noe som passer dem. Handled by arrangementskomite. Stages: open -> kontaktet -> satt_opp -> takket_nei. +- komite: en som vil sitte i en komité - wants: en plass i den komiteen som driver med det de bryr seg om. Handled by styret. Stages: open -> plassert -> avslatt. +- dele-utstyr: en nabo som har noe å låne ut, eller trenger å låne noe - wants: et oppslag som naboene ser. Handled by styret. Stages: open -> lagt_ut -> tatt_ned. +- utlegg: en i en komité som har lagt ut for noe - wants: pengene tilbake. Handled by kasserer. Stages: open -> godkjent -> utbetalt -> avvist. + +The page: questions/komiteer/utlegg-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": "", + "description": "", + "next_description": "", + "next_heading": "", + "question": "" +} + +Reply with the JSON object only. + +=== REPLY === +{ + "back": "Til forsiden", + "description": "Takk for at du sender inn utlegget ditt. Vi har mottatt det og sender det videre til kasserer.", + "next_description": "Kasserer ser gjennom utlegget og godkjenner det før pengene blir betalt tilbake til kontoen din.", + "next_heading": "Kasserer godkjenner og betaler tilbake", + "question": "Hva skjer med utlegget mitt nå?" +} diff --git a/runs/tomtervel-claude-2026-09-22/llm/08-questions_komiteer_utlegg.yaml.md b/runs/tomtervel-claude-2026-09-22/llm/08-questions_komiteer_utlegg.yaml.md new file mode 100644 index 0000000..56d5dbd --- /dev/null +++ b/runs/tomtervel-claude-2026-09-22/llm/08-questions_komiteer_utlegg.yaml.md @@ -0,0 +1,65 @@ +You write the words for one page of a website for this business. + +Business: Tomter Vel +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. +Contact: Styret i Tomter Vel +Language to write in: nb + +Everyone the site serves: +- door medlem: for en husstand i Tomter som vil være med i velet, eller allerede er det; behind it: bli-medlem, endre-medlemskap +- door melde-fra: for noen som har sett noe i nabolaget som ikke er som det skal; behind it: trafikkfare, anleggsfeil +- door bidra: for noen som vil gjøre en innsats, eller si sin mening i en sak; behind it: horingsinnspill, hjelpe-til, komite +- bli-medlem: en husstand i Tomter - wants: å bli medlem og få betalt kontingenten. Handled by kasserer. Stages: open -> betalt -> utmeldt. +- endre-medlemskap: et medlem som har flyttet, byttet e-post eller vil melde seg ut - wants: at velet har riktige opplysninger om dem. Handled by kasserer. Stages: open -> oppdatert. +- trafikkfare: en som har sett et farlig sted i trafikken - wants: at velet tar det opp med kommunen eller den som eier veien. Handled by trafikkomite. Stages: open -> tatt_opp -> ordnet -> avvist. +- anleggsfeil: en som ser at noe på lekeplassen eller stien er ødelagt - wants: at det blir fikset før noen skader seg. Handled by lekeplasskomite. Stages: open -> tatt_tak_i -> utbedret. +- horingsinnspill: en beboer som har en mening om en sak kommunen har på høring - wants: at velet tar det med i sitt svar. Handled by styret. Stages: open -> tatt_med -> ikke_tatt_med. +- hjelpe-til: en som vil hjelpe til på et arrangement eller en dugnad - wants: å bli satt opp på noe som passer dem. Handled by arrangementskomite. Stages: open -> kontaktet -> satt_opp -> takket_nei. +- komite: en som vil sitte i en komité - wants: en plass i den komiteen som driver med det de bryr seg om. Handled by styret. Stages: open -> plassert -> avslatt. +- dele-utstyr: en nabo som har noe å låne ut, eller trenger å låne noe - wants: et oppslag som naboene ser. Handled by styret. Stages: open -> lagt_ut -> tatt_ned. +- utlegg: en i en komité som har lagt ut for noe - wants: pengene tilbake. Handled by kasserer. Stages: open -> godkjent -> utbetalt -> avvist. + +The page: questions/komiteer/utlegg.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": "", + "description": "", + "form_title": "", + "heading": "", + "labels": { + "belop": "", + "hva": "", + "navn": "" + }, + "page_description": "", + "question": "" +} + +Reply with the JSON object only. + +=== REPLY === +```json +{ + "button": "Send inn", + "description": "Har du lagt ut for noe til komiteen? Fyll inn hva det gjaldt og hvor mye, så tar kasserer det videre.", + "form_title": "Krav om refusjon", + "heading": "Få tilbake penger du har lagt ut", + "labels": { + "belop": "Beløp (kr)", + "hva": "Hva gjaldt utlegget", + "navn": "Ditt navn" + }, + "page_description": "For deg som sitter i en komité og har betalt noe av egen lomme for velet.", + "question": "Har jeg lagt ut penger for velet som jeg skal ha tilbake?" +} +``` diff --git a/runs/tomtervel-claude-2026-09-22/llm/09-questions_lekeplasskomite_index.yaml.md b/runs/tomtervel-claude-2026-09-22/llm/09-questions_lekeplasskomite_index.yaml.md new file mode 100644 index 0000000..4ef6153 --- /dev/null +++ b/runs/tomtervel-claude-2026-09-22/llm/09-questions_lekeplasskomite_index.yaml.md @@ -0,0 +1,71 @@ +You write the words for one page of a website for this business. + +Business: Tomter Vel +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. +Contact: Styret i Tomter Vel +Language to write in: nb + +Everyone the site serves: +- door medlem: for en husstand i Tomter som vil være med i velet, eller allerede er det; behind it: bli-medlem, endre-medlemskap +- door melde-fra: for noen som har sett noe i nabolaget som ikke er som det skal; behind it: trafikkfare, anleggsfeil +- door bidra: for noen som vil gjøre en innsats, eller si sin mening i en sak; behind it: horingsinnspill, hjelpe-til, komite +- bli-medlem: en husstand i Tomter - wants: å bli medlem og få betalt kontingenten. Handled by kasserer. Stages: open -> betalt -> utmeldt. +- endre-medlemskap: et medlem som har flyttet, byttet e-post eller vil melde seg ut - wants: at velet har riktige opplysninger om dem. Handled by kasserer. Stages: open -> oppdatert. +- trafikkfare: en som har sett et farlig sted i trafikken - wants: at velet tar det opp med kommunen eller den som eier veien. Handled by trafikkomite. Stages: open -> tatt_opp -> ordnet -> avvist. +- anleggsfeil: en som ser at noe på lekeplassen eller stien er ødelagt - wants: at det blir fikset før noen skader seg. Handled by lekeplasskomite. Stages: open -> tatt_tak_i -> utbedret. +- horingsinnspill: en beboer som har en mening om en sak kommunen har på høring - wants: at velet tar det med i sitt svar. Handled by styret. Stages: open -> tatt_med -> ikke_tatt_med. +- hjelpe-til: en som vil hjelpe til på et arrangement eller en dugnad - wants: å bli satt opp på noe som passer dem. Handled by arrangementskomite. Stages: open -> kontaktet -> satt_opp -> takket_nei. +- komite: en som vil sitte i en komité - wants: en plass i den komiteen som driver med det de bryr seg om. Handled by styret. Stages: open -> plassert -> avslatt. +- dele-utstyr: en nabo som har noe å låne ut, eller trenger å låne noe - wants: et oppslag som naboene ser. Handled by styret. Stages: open -> lagt_ut -> tatt_ned. +- utlegg: en i en komité som har lagt ut for noe - wants: pengene tilbake. Handled by kasserer. Stages: open -> godkjent -> utbetalt -> avvist. + +The page: questions/lekeplasskomite/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": { + "anleggsfeil": { + "description": "", + "heading": "", + "moves": { + "open->tatt_tak_i": "tatt_tak_i>", + "tatt_tak_i->utbedret": "utbedret>" + } + } + }, + "confirm": "", + "description": "", + "links": {}, + "question": "" +} + +Reply with the JSON object only. + +=== REPLY === +```json +{ + "buckets": { + "anleggsfeil": { + "description": "Meldinger fra naboer om noe som er ødelagt på lekeplassen eller langs stien.", + "heading": "Feil som er meldt inn", + "moves": { + "open->tatt_tak_i": "Ta tak i den", + "tatt_tak_i->utbedret": "Merk som utbedret" + } + } + }, + "confirm": "Lagre", + "description": "Her holder du oversikt over meldte feil på lekeplassene og elvestien, og følger opp til de er utbedret.", + "links": {}, + "question": "Hva må fikses på lekeplassene og stien nå?" +} +``` diff --git a/runs/tomtervel-claude-2026-09-22/llm/10-questions_medlem_index.yaml.md b/runs/tomtervel-claude-2026-09-22/llm/10-questions_medlem_index.yaml.md new file mode 100644 index 0000000..011ab23 --- /dev/null +++ b/runs/tomtervel-claude-2026-09-22/llm/10-questions_medlem_index.yaml.md @@ -0,0 +1,97 @@ +You write the words for one page of a website for this business. + +Business: Tomter Vel +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. +Contact: Styret i Tomter Vel +Language to write in: nb + +Everyone the site serves: +- door medlem: for en husstand i Tomter som vil være med i velet, eller allerede er det; behind it: bli-medlem, endre-medlemskap +- door melde-fra: for noen som har sett noe i nabolaget som ikke er som det skal; behind it: trafikkfare, anleggsfeil +- door bidra: for noen som vil gjøre en innsats, eller si sin mening i en sak; behind it: horingsinnspill, hjelpe-til, komite +- bli-medlem: en husstand i Tomter - wants: å bli medlem og få betalt kontingenten. Handled by kasserer. Stages: open -> betalt -> utmeldt. +- endre-medlemskap: et medlem som har flyttet, byttet e-post eller vil melde seg ut - wants: at velet har riktige opplysninger om dem. Handled by kasserer. Stages: open -> oppdatert. +- trafikkfare: en som har sett et farlig sted i trafikken - wants: at velet tar det opp med kommunen eller den som eier veien. Handled by trafikkomite. Stages: open -> tatt_opp -> ordnet -> avvist. +- anleggsfeil: en som ser at noe på lekeplassen eller stien er ødelagt - wants: at det blir fikset før noen skader seg. Handled by lekeplasskomite. Stages: open -> tatt_tak_i -> utbedret. +- horingsinnspill: en beboer som har en mening om en sak kommunen har på høring - wants: at velet tar det med i sitt svar. Handled by styret. Stages: open -> tatt_med -> ikke_tatt_med. +- hjelpe-til: en som vil hjelpe til på et arrangement eller en dugnad - wants: å bli satt opp på noe som passer dem. Handled by arrangementskomite. Stages: open -> kontaktet -> satt_opp -> takket_nei. +- komite: en som vil sitte i en komité - wants: en plass i den komiteen som driver med det de bryr seg om. Handled by styret. Stages: open -> plassert -> avslatt. +- dele-utstyr: en nabo som har noe å låne ut, eller trenger å låne noe - wants: et oppslag som naboene ser. Handled by styret. Stages: open -> lagt_ut -> tatt_ned. +- utlegg: en i en komité som har lagt ut for noe - wants: pengene tilbake. Handled by kasserer. Stages: open -> godkjent -> utbetalt -> avvist. + +The page: questions/medlem/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": "", + "needs": { + "bli-medlem": { + "button": "", + "description": "", + "form_title": "", + "heading": "", + "labels": { + "adresse": "", + "epost": "", + "navn": "", + "telefon": "" + } + }, + "endre-medlemskap": { + "button": "", + "description": "", + "form_title": "", + "heading": "", + "labels": { + "adresse": "", + "hva_er_nytt": "", + "navn": "" + } + } + }, + "question": "" +} + +Reply with the JSON object only. + +=== REPLY === +```json +{ + "description": "Velet holder oversikt over hvem som bor på Tomter, slik at vi vet hvem vi jobber for.", + "needs": { + "bli-medlem": { + "button": "Meld deg inn", + "description": "157 husstander er med allerede. Fyll ut skjemaet, så sender kasserer deg giroen.", + "form_title": "Bli medlem", + "heading": "Bli med i velet", + "labels": { + "adresse": "Adresse", + "epost": "E-post", + "navn": "Navn", + "telefon": "Telefon" + } + }, + "endre-medlemskap": { + "button": "Send endring", + "description": "Flyttet, byttet e-post, eller vil melde deg ut? Si fra, så retter kasserer det opp.", + "form_title": "Endre medlemskap", + "heading": "Hold opplysningene dine oppdatert", + "labels": { + "adresse": "Adresse", + "hva_er_nytt": "Hva har endret seg", + "navn": "Navn" + } + } + }, + "question": "Vil du bli medlem, eller endre noe ved medlemskapet ditt?" +} +``` diff --git a/runs/tomtervel-claude-2026-09-22/llm/11-questions_melde-fra_index.yaml.md b/runs/tomtervel-claude-2026-09-22/llm/11-questions_melde-fra_index.yaml.md new file mode 100644 index 0000000..aeacb39 --- /dev/null +++ b/runs/tomtervel-claude-2026-09-22/llm/11-questions_melde-fra_index.yaml.md @@ -0,0 +1,93 @@ +You write the words for one page of a website for this business. + +Business: Tomter Vel +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. +Contact: Styret i Tomter Vel +Language to write in: nb + +Everyone the site serves: +- door medlem: for en husstand i Tomter som vil være med i velet, eller allerede er det; behind it: bli-medlem, endre-medlemskap +- door melde-fra: for noen som har sett noe i nabolaget som ikke er som det skal; behind it: trafikkfare, anleggsfeil +- door bidra: for noen som vil gjøre en innsats, eller si sin mening i en sak; behind it: horingsinnspill, hjelpe-til, komite +- bli-medlem: en husstand i Tomter - wants: å bli medlem og få betalt kontingenten. Handled by kasserer. Stages: open -> betalt -> utmeldt. +- endre-medlemskap: et medlem som har flyttet, byttet e-post eller vil melde seg ut - wants: at velet har riktige opplysninger om dem. Handled by kasserer. Stages: open -> oppdatert. +- trafikkfare: en som har sett et farlig sted i trafikken - wants: at velet tar det opp med kommunen eller den som eier veien. Handled by trafikkomite. Stages: open -> tatt_opp -> ordnet -> avvist. +- anleggsfeil: en som ser at noe på lekeplassen eller stien er ødelagt - wants: at det blir fikset før noen skader seg. Handled by lekeplasskomite. Stages: open -> tatt_tak_i -> utbedret. +- horingsinnspill: en beboer som har en mening om en sak kommunen har på høring - wants: at velet tar det med i sitt svar. Handled by styret. Stages: open -> tatt_med -> ikke_tatt_med. +- hjelpe-til: en som vil hjelpe til på et arrangement eller en dugnad - wants: å bli satt opp på noe som passer dem. Handled by arrangementskomite. Stages: open -> kontaktet -> satt_opp -> takket_nei. +- komite: en som vil sitte i en komité - wants: en plass i den komiteen som driver med det de bryr seg om. Handled by styret. Stages: open -> plassert -> avslatt. +- dele-utstyr: en nabo som har noe å låne ut, eller trenger å låne noe - wants: et oppslag som naboene ser. Handled by styret. Stages: open -> lagt_ut -> tatt_ned. +- utlegg: en i en komité som har lagt ut for noe - wants: pengene tilbake. Handled by kasserer. Stages: open -> godkjent -> utbetalt -> avvist. + +The page: questions/melde-fra/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": "", + "needs": { + "anleggsfeil": { + "button": "", + "description": "", + "form_title": "", + "heading": "", + "labels": { + "hva": "", + "hvor": "" + } + }, + "trafikkfare": { + "button": "", + "description": "", + "form_title": "", + "heading": "", + "labels": { + "epost": "", + "hva": "", + "hvor": "" + } + } + }, + "question": "" +} + +Reply with the JSON object only. + +=== REPLY === +```json +{ + "description": "Har du sett noe farlig i trafikken eller noe ødelagt på lekeplassen eller stien? Si fra her, så tar rett komité tak i det.", + "needs": { + "anleggsfeil": { + "button": "Meld fra", + "description": "Er noe på lekeplassen eller langs stien ødelagt eller farlig? Lekeplasskomiteen rykker ut og ser på det.", + "form_title": "Meld fra om feil", + "heading": "Få ødelagt utstyr fikset før noen skader seg", + "labels": { + "hva": "Hva er ødelagt eller farlig?", + "hvor": "Hvor på lekeplassen eller stien?" + } + }, + "trafikkfare": { + "button": "Meld fra", + "description": "Sett en farlig plass i trafikken, for eksempel dårlig sikt eller for høy fart? Vi tar det videre til kommunen eller veieier.", + "form_title": "Meld fra om trafikkfare", + "heading": "Få en farlig trafikkplass tatt opp med kommunen", + "labels": { + "epost": "E-post", + "hva": "Hva er problemet?", + "hvor": "Hvor er dette?" + } + } + }, + "question": "Hva har du sett i nabolaget som ikke er som det skal?" +} +``` diff --git a/runs/tomtervel-claude-2026-09-22/llm/12-questions_received_anleggsfeil.yaml.md b/runs/tomtervel-claude-2026-09-22/llm/12-questions_received_anleggsfeil.yaml.md new file mode 100644 index 0000000..4eaf6a4 --- /dev/null +++ b/runs/tomtervel-claude-2026-09-22/llm/12-questions_received_anleggsfeil.yaml.md @@ -0,0 +1,53 @@ +You write the words for one page of a website for this business. + +Business: Tomter Vel +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. +Contact: Styret i Tomter Vel +Language to write in: nb + +Everyone the site serves: +- door medlem: for en husstand i Tomter som vil være med i velet, eller allerede er det; behind it: bli-medlem, endre-medlemskap +- door melde-fra: for noen som har sett noe i nabolaget som ikke er som det skal; behind it: trafikkfare, anleggsfeil +- door bidra: for noen som vil gjøre en innsats, eller si sin mening i en sak; behind it: horingsinnspill, hjelpe-til, komite +- bli-medlem: en husstand i Tomter - wants: å bli medlem og få betalt kontingenten. Handled by kasserer. Stages: open -> betalt -> utmeldt. +- endre-medlemskap: et medlem som har flyttet, byttet e-post eller vil melde seg ut - wants: at velet har riktige opplysninger om dem. Handled by kasserer. Stages: open -> oppdatert. +- trafikkfare: en som har sett et farlig sted i trafikken - wants: at velet tar det opp med kommunen eller den som eier veien. Handled by trafikkomite. Stages: open -> tatt_opp -> ordnet -> avvist. +- anleggsfeil: en som ser at noe på lekeplassen eller stien er ødelagt - wants: at det blir fikset før noen skader seg. Handled by lekeplasskomite. Stages: open -> tatt_tak_i -> utbedret. +- horingsinnspill: en beboer som har en mening om en sak kommunen har på høring - wants: at velet tar det med i sitt svar. Handled by styret. Stages: open -> tatt_med -> ikke_tatt_med. +- hjelpe-til: en som vil hjelpe til på et arrangement eller en dugnad - wants: å bli satt opp på noe som passer dem. Handled by arrangementskomite. Stages: open -> kontaktet -> satt_opp -> takket_nei. +- komite: en som vil sitte i en komité - wants: en plass i den komiteen som driver med det de bryr seg om. Handled by styret. Stages: open -> plassert -> avslatt. +- dele-utstyr: en nabo som har noe å låne ut, eller trenger å låne noe - wants: et oppslag som naboene ser. Handled by styret. Stages: open -> lagt_ut -> tatt_ned. +- utlegg: en i en komité som har lagt ut for noe - wants: pengene tilbake. Handled by kasserer. Stages: open -> godkjent -> utbetalt -> avvist. + +The page: questions/received/anleggsfeil.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": "", + "description": "", + "next_description": "", + "next_heading": "", + "question": "" +} + +Reply with the JSON object only. + +=== REPLY === +```json +{ + "back": "Til forsiden", + "description": "Meldingen din om lekeplassen eller stien er sendt til lekeplasskomiteen.", + "next_description": "Lekeplasskomiteen ser over meldinger jevnlig og tar tak i det som haster mest først.", + "next_heading": "Komiteen tar tak i det", + "question": "Hva skjer med meldingen min nå?" +} +``` diff --git a/runs/tomtervel-claude-2026-09-22/llm/13-questions_received_bli-medlem.yaml.md b/runs/tomtervel-claude-2026-09-22/llm/13-questions_received_bli-medlem.yaml.md new file mode 100644 index 0000000..6b66092 --- /dev/null +++ b/runs/tomtervel-claude-2026-09-22/llm/13-questions_received_bli-medlem.yaml.md @@ -0,0 +1,51 @@ +You write the words for one page of a website for this business. + +Business: Tomter Vel +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. +Contact: Styret i Tomter Vel +Language to write in: nb + +Everyone the site serves: +- door medlem: for en husstand i Tomter som vil være med i velet, eller allerede er det; behind it: bli-medlem, endre-medlemskap +- door melde-fra: for noen som har sett noe i nabolaget som ikke er som det skal; behind it: trafikkfare, anleggsfeil +- door bidra: for noen som vil gjøre en innsats, eller si sin mening i en sak; behind it: horingsinnspill, hjelpe-til, komite +- bli-medlem: en husstand i Tomter - wants: å bli medlem og få betalt kontingenten. Handled by kasserer. Stages: open -> betalt -> utmeldt. +- endre-medlemskap: et medlem som har flyttet, byttet e-post eller vil melde seg ut - wants: at velet har riktige opplysninger om dem. Handled by kasserer. Stages: open -> oppdatert. +- trafikkfare: en som har sett et farlig sted i trafikken - wants: at velet tar det opp med kommunen eller den som eier veien. Handled by trafikkomite. Stages: open -> tatt_opp -> ordnet -> avvist. +- anleggsfeil: en som ser at noe på lekeplassen eller stien er ødelagt - wants: at det blir fikset før noen skader seg. Handled by lekeplasskomite. Stages: open -> tatt_tak_i -> utbedret. +- horingsinnspill: en beboer som har en mening om en sak kommunen har på høring - wants: at velet tar det med i sitt svar. Handled by styret. Stages: open -> tatt_med -> ikke_tatt_med. +- hjelpe-til: en som vil hjelpe til på et arrangement eller en dugnad - wants: å bli satt opp på noe som passer dem. Handled by arrangementskomite. Stages: open -> kontaktet -> satt_opp -> takket_nei. +- komite: en som vil sitte i en komité - wants: en plass i den komiteen som driver med det de bryr seg om. Handled by styret. Stages: open -> plassert -> avslatt. +- dele-utstyr: en nabo som har noe å låne ut, eller trenger å låne noe - wants: et oppslag som naboene ser. Handled by styret. Stages: open -> lagt_ut -> tatt_ned. +- utlegg: en i en komité som har lagt ut for noe - wants: pengene tilbake. Handled by kasserer. Stages: open -> godkjent -> utbetalt -> avvist. + +The page: questions/received/bli-medlem.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": "", + "description": "", + "next_description": "", + "next_heading": "", + "question": "" +} + +Reply with the JSON object only. + +=== REPLY === +{ + "back": "Til forsiden", + "description": "Innmeldingen din er registrert og sendt til kasserer.", + "next_description": "Kasserer sjekker innmeldingen og sender deg kontonummer for kontingenten.", + "next_heading": "Kasserer tar kontakt om betaling", + "question": "Hva skjer nå med innmeldingen min?" +} diff --git a/runs/tomtervel-claude-2026-09-22/llm/14-questions_received_dele-utstyr.yaml.md b/runs/tomtervel-claude-2026-09-22/llm/14-questions_received_dele-utstyr.yaml.md new file mode 100644 index 0000000..4631b42 --- /dev/null +++ b/runs/tomtervel-claude-2026-09-22/llm/14-questions_received_dele-utstyr.yaml.md @@ -0,0 +1,53 @@ +You write the words for one page of a website for this business. + +Business: Tomter Vel +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. +Contact: Styret i Tomter Vel +Language to write in: nb + +Everyone the site serves: +- door medlem: for en husstand i Tomter som vil være med i velet, eller allerede er det; behind it: bli-medlem, endre-medlemskap +- door melde-fra: for noen som har sett noe i nabolaget som ikke er som det skal; behind it: trafikkfare, anleggsfeil +- door bidra: for noen som vil gjøre en innsats, eller si sin mening i en sak; behind it: horingsinnspill, hjelpe-til, komite +- bli-medlem: en husstand i Tomter - wants: å bli medlem og få betalt kontingenten. Handled by kasserer. Stages: open -> betalt -> utmeldt. +- endre-medlemskap: et medlem som har flyttet, byttet e-post eller vil melde seg ut - wants: at velet har riktige opplysninger om dem. Handled by kasserer. Stages: open -> oppdatert. +- trafikkfare: en som har sett et farlig sted i trafikken - wants: at velet tar det opp med kommunen eller den som eier veien. Handled by trafikkomite. Stages: open -> tatt_opp -> ordnet -> avvist. +- anleggsfeil: en som ser at noe på lekeplassen eller stien er ødelagt - wants: at det blir fikset før noen skader seg. Handled by lekeplasskomite. Stages: open -> tatt_tak_i -> utbedret. +- horingsinnspill: en beboer som har en mening om en sak kommunen har på høring - wants: at velet tar det med i sitt svar. Handled by styret. Stages: open -> tatt_med -> ikke_tatt_med. +- hjelpe-til: en som vil hjelpe til på et arrangement eller en dugnad - wants: å bli satt opp på noe som passer dem. Handled by arrangementskomite. Stages: open -> kontaktet -> satt_opp -> takket_nei. +- komite: en som vil sitte i en komité - wants: en plass i den komiteen som driver med det de bryr seg om. Handled by styret. Stages: open -> plassert -> avslatt. +- dele-utstyr: en nabo som har noe å låne ut, eller trenger å låne noe - wants: et oppslag som naboene ser. Handled by styret. Stages: open -> lagt_ut -> tatt_ned. +- utlegg: en i en komité som har lagt ut for noe - wants: pengene tilbake. Handled by kasserer. Stages: open -> godkjent -> utbetalt -> avvist. + +The page: questions/received/dele-utstyr.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": "", + "description": "", + "next_description": "", + "next_heading": "", + "question": "" +} + +Reply with the JSON object only. + +=== REPLY === +```json +{ + "back": "Til forsiden", + "description": "Oppslaget ditt er sendt til styret. Vi legger det ut eller svarer deg så snart vi rekker det.", + "next_description": "Styret legger ut oppslaget slik at naboene kan se det, eller tar kontakt hvis noe er uklart.", + "next_heading": "Oppslaget kommer opp", + "question": "Hva skjer nå med det jeg vil låne ut eller trenger å låne?" +} +``` diff --git a/runs/tomtervel-claude-2026-09-22/llm/15-questions_received_endre-medlemskap.yaml.md b/runs/tomtervel-claude-2026-09-22/llm/15-questions_received_endre-medlemskap.yaml.md new file mode 100644 index 0000000..54265aa --- /dev/null +++ b/runs/tomtervel-claude-2026-09-22/llm/15-questions_received_endre-medlemskap.yaml.md @@ -0,0 +1,53 @@ +You write the words for one page of a website for this business. + +Business: Tomter Vel +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. +Contact: Styret i Tomter Vel +Language to write in: nb + +Everyone the site serves: +- door medlem: for en husstand i Tomter som vil være med i velet, eller allerede er det; behind it: bli-medlem, endre-medlemskap +- door melde-fra: for noen som har sett noe i nabolaget som ikke er som det skal; behind it: trafikkfare, anleggsfeil +- door bidra: for noen som vil gjøre en innsats, eller si sin mening i en sak; behind it: horingsinnspill, hjelpe-til, komite +- bli-medlem: en husstand i Tomter - wants: å bli medlem og få betalt kontingenten. Handled by kasserer. Stages: open -> betalt -> utmeldt. +- endre-medlemskap: et medlem som har flyttet, byttet e-post eller vil melde seg ut - wants: at velet har riktige opplysninger om dem. Handled by kasserer. Stages: open -> oppdatert. +- trafikkfare: en som har sett et farlig sted i trafikken - wants: at velet tar det opp med kommunen eller den som eier veien. Handled by trafikkomite. Stages: open -> tatt_opp -> ordnet -> avvist. +- anleggsfeil: en som ser at noe på lekeplassen eller stien er ødelagt - wants: at det blir fikset før noen skader seg. Handled by lekeplasskomite. Stages: open -> tatt_tak_i -> utbedret. +- horingsinnspill: en beboer som har en mening om en sak kommunen har på høring - wants: at velet tar det med i sitt svar. Handled by styret. Stages: open -> tatt_med -> ikke_tatt_med. +- hjelpe-til: en som vil hjelpe til på et arrangement eller en dugnad - wants: å bli satt opp på noe som passer dem. Handled by arrangementskomite. Stages: open -> kontaktet -> satt_opp -> takket_nei. +- komite: en som vil sitte i en komité - wants: en plass i den komiteen som driver med det de bryr seg om. Handled by styret. Stages: open -> plassert -> avslatt. +- dele-utstyr: en nabo som har noe å låne ut, eller trenger å låne noe - wants: et oppslag som naboene ser. Handled by styret. Stages: open -> lagt_ut -> tatt_ned. +- utlegg: en i en komité som har lagt ut for noe - wants: pengene tilbake. Handled by kasserer. Stages: open -> godkjent -> utbetalt -> avvist. + +The page: questions/received/endre-medlemskap.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": "", + "description": "", + "next_description": "", + "next_heading": "", + "question": "" +} + +Reply with the JSON object only. + +=== REPLY === +```json +{ + "back": "Til forsiden", + "description": "Du har sendt inn endringer til medlemskapet ditt. Kasserer oppdaterer opplysningene så snart de får sett gjennom det som er kommet inn.", + "next_description": "Kasserer går gjennom endringen og oppdaterer medlemslista. Du hører fra oss bare hvis noe er uklart.", + "next_heading": "Kasserer oppdaterer opplysningene dine", + "question": "Hva skjer nå som jeg har sendt inn endringen?" +} +``` diff --git a/runs/tomtervel-claude-2026-09-22/llm/16-questions_received_hjelpe-til.yaml.md b/runs/tomtervel-claude-2026-09-22/llm/16-questions_received_hjelpe-til.yaml.md new file mode 100644 index 0000000..2f69de5 --- /dev/null +++ b/runs/tomtervel-claude-2026-09-22/llm/16-questions_received_hjelpe-til.yaml.md @@ -0,0 +1,53 @@ +You write the words for one page of a website for this business. + +Business: Tomter Vel +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. +Contact: Styret i Tomter Vel +Language to write in: nb + +Everyone the site serves: +- door medlem: for en husstand i Tomter som vil være med i velet, eller allerede er det; behind it: bli-medlem, endre-medlemskap +- door melde-fra: for noen som har sett noe i nabolaget som ikke er som det skal; behind it: trafikkfare, anleggsfeil +- door bidra: for noen som vil gjøre en innsats, eller si sin mening i en sak; behind it: horingsinnspill, hjelpe-til, komite +- bli-medlem: en husstand i Tomter - wants: å bli medlem og få betalt kontingenten. Handled by kasserer. Stages: open -> betalt -> utmeldt. +- endre-medlemskap: et medlem som har flyttet, byttet e-post eller vil melde seg ut - wants: at velet har riktige opplysninger om dem. Handled by kasserer. Stages: open -> oppdatert. +- trafikkfare: en som har sett et farlig sted i trafikken - wants: at velet tar det opp med kommunen eller den som eier veien. Handled by trafikkomite. Stages: open -> tatt_opp -> ordnet -> avvist. +- anleggsfeil: en som ser at noe på lekeplassen eller stien er ødelagt - wants: at det blir fikset før noen skader seg. Handled by lekeplasskomite. Stages: open -> tatt_tak_i -> utbedret. +- horingsinnspill: en beboer som har en mening om en sak kommunen har på høring - wants: at velet tar det med i sitt svar. Handled by styret. Stages: open -> tatt_med -> ikke_tatt_med. +- hjelpe-til: en som vil hjelpe til på et arrangement eller en dugnad - wants: å bli satt opp på noe som passer dem. Handled by arrangementskomite. Stages: open -> kontaktet -> satt_opp -> takket_nei. +- komite: en som vil sitte i en komité - wants: en plass i den komiteen som driver med det de bryr seg om. Handled by styret. Stages: open -> plassert -> avslatt. +- dele-utstyr: en nabo som har noe å låne ut, eller trenger å låne noe - wants: et oppslag som naboene ser. Handled by styret. Stages: open -> lagt_ut -> tatt_ned. +- utlegg: en i en komité som har lagt ut for noe - wants: pengene tilbake. Handled by kasserer. Stages: open -> godkjent -> utbetalt -> avvist. + +The page: questions/received/hjelpe-til.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": "", + "description": "", + "next_description": "", + "next_heading": "", + "question": "" +} + +Reply with the JSON object only. + +=== REPLY === +```json +{ + "back": "Tilbake til forsiden", + "description": "Takk for at du vil hjelpe til! Meldingen din er sendt til arrangementskomiteen.", + "next_description": "Noen i arrangementskomiteen tar kontakt med deg når det nærmer seg noe du kan bidra på.", + "next_heading": "Komiteen tar kontakt", + "question": "Hva skjer nå som jeg har meldt meg?" +} +``` diff --git a/runs/tomtervel-claude-2026-09-22/llm/17-questions_received_horingsinnspill.yaml.md b/runs/tomtervel-claude-2026-09-22/llm/17-questions_received_horingsinnspill.yaml.md new file mode 100644 index 0000000..b5df8de --- /dev/null +++ b/runs/tomtervel-claude-2026-09-22/llm/17-questions_received_horingsinnspill.yaml.md @@ -0,0 +1,45 @@ +You write the words for one page of a website for this business. + +Business: Tomter Vel +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. +Contact: Styret i Tomter Vel +Language to write in: nb + +Everyone the site serves: +- door medlem: for en husstand i Tomter som vil være med i velet, eller allerede er det; behind it: bli-medlem, endre-medlemskap +- door melde-fra: for noen som har sett noe i nabolaget som ikke er som det skal; behind it: trafikkfare, anleggsfeil +- door bidra: for noen som vil gjøre en innsats, eller si sin mening i en sak; behind it: horingsinnspill, hjelpe-til, komite +- bli-medlem: en husstand i Tomter - wants: å bli medlem og få betalt kontingenten. Handled by kasserer. Stages: open -> betalt -> utmeldt. +- endre-medlemskap: et medlem som har flyttet, byttet e-post eller vil melde seg ut - wants: at velet har riktige opplysninger om dem. Handled by kasserer. Stages: open -> oppdatert. +- trafikkfare: en som har sett et farlig sted i trafikken - wants: at velet tar det opp med kommunen eller den som eier veien. Handled by trafikkomite. Stages: open -> tatt_opp -> ordnet -> avvist. +- anleggsfeil: en som ser at noe på lekeplassen eller stien er ødelagt - wants: at det blir fikset før noen skader seg. Handled by lekeplasskomite. Stages: open -> tatt_tak_i -> utbedret. +- horingsinnspill: en beboer som har en mening om en sak kommunen har på høring - wants: at velet tar det med i sitt svar. Handled by styret. Stages: open -> tatt_med -> ikke_tatt_med. +- hjelpe-til: en som vil hjelpe til på et arrangement eller en dugnad - wants: å bli satt opp på noe som passer dem. Handled by arrangementskomite. Stages: open -> kontaktet -> satt_opp -> takket_nei. +- komite: en som vil sitte i en komité - wants: en plass i den komiteen som driver med det de bryr seg om. Handled by styret. Stages: open -> plassert -> avslatt. +- dele-utstyr: en nabo som har noe å låne ut, eller trenger å låne noe - wants: et oppslag som naboene ser. Handled by styret. Stages: open -> lagt_ut -> tatt_ned. +- utlegg: en i en komité som har lagt ut for noe - wants: pengene tilbake. Handled by kasserer. Stages: open -> godkjent -> utbetalt -> avvist. + +The page: questions/received/horingsinnspill.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": "", + "description": "", + "next_description": "", + "next_heading": "", + "question": "" +} + +Reply with the JSON object only. + +=== REPLY === +{"back": "Til forsiden", "description": "Takk for at du sendte inn høringsinnspillet ditt. Styret tar det med når de skriver velets høringssvar.", "next_description": "Styret samler alle innspill før fristen og vurderer hva som blir med i svaret til kommunen.", "next_heading": "Innspillet ditt vurderes av styret", "question": "Hva skjer med innspillet mitt nå?"} diff --git a/runs/tomtervel-claude-2026-09-22/llm/18-questions_received_komite.yaml.md b/runs/tomtervel-claude-2026-09-22/llm/18-questions_received_komite.yaml.md new file mode 100644 index 0000000..fdc97d2 --- /dev/null +++ b/runs/tomtervel-claude-2026-09-22/llm/18-questions_received_komite.yaml.md @@ -0,0 +1,53 @@ +You write the words for one page of a website for this business. + +Business: Tomter Vel +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. +Contact: Styret i Tomter Vel +Language to write in: nb + +Everyone the site serves: +- door medlem: for en husstand i Tomter som vil være med i velet, eller allerede er det; behind it: bli-medlem, endre-medlemskap +- door melde-fra: for noen som har sett noe i nabolaget som ikke er som det skal; behind it: trafikkfare, anleggsfeil +- door bidra: for noen som vil gjøre en innsats, eller si sin mening i en sak; behind it: horingsinnspill, hjelpe-til, komite +- bli-medlem: en husstand i Tomter - wants: å bli medlem og få betalt kontingenten. Handled by kasserer. Stages: open -> betalt -> utmeldt. +- endre-medlemskap: et medlem som har flyttet, byttet e-post eller vil melde seg ut - wants: at velet har riktige opplysninger om dem. Handled by kasserer. Stages: open -> oppdatert. +- trafikkfare: en som har sett et farlig sted i trafikken - wants: at velet tar det opp med kommunen eller den som eier veien. Handled by trafikkomite. Stages: open -> tatt_opp -> ordnet -> avvist. +- anleggsfeil: en som ser at noe på lekeplassen eller stien er ødelagt - wants: at det blir fikset før noen skader seg. Handled by lekeplasskomite. Stages: open -> tatt_tak_i -> utbedret. +- horingsinnspill: en beboer som har en mening om en sak kommunen har på høring - wants: at velet tar det med i sitt svar. Handled by styret. Stages: open -> tatt_med -> ikke_tatt_med. +- hjelpe-til: en som vil hjelpe til på et arrangement eller en dugnad - wants: å bli satt opp på noe som passer dem. Handled by arrangementskomite. Stages: open -> kontaktet -> satt_opp -> takket_nei. +- komite: en som vil sitte i en komité - wants: en plass i den komiteen som driver med det de bryr seg om. Handled by styret. Stages: open -> plassert -> avslatt. +- dele-utstyr: en nabo som har noe å låne ut, eller trenger å låne noe - wants: et oppslag som naboene ser. Handled by styret. Stages: open -> lagt_ut -> tatt_ned. +- utlegg: en i en komité som har lagt ut for noe - wants: pengene tilbake. Handled by kasserer. Stages: open -> godkjent -> utbetalt -> avvist. + +The page: questions/received/komite.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": "", + "description": "", + "next_description": "", + "next_heading": "", + "question": "" +} + +Reply with the JSON object only. + +=== REPLY === +```json +{ + "back": "Til forsiden", + "description": "Takk for at du vil bidra i en komité. Meldingen din har gått til styret.", + "next_description": "Styret tar det opp på neste møte og finner ut hvilken komité som passer best. Du hører fra oss uansett hva vi lander på.", + "next_heading": "Styret finner en plass til deg", + "question": "Hva skjer nå som jeg har meldt interesse for en komité?" +} +``` diff --git a/runs/tomtervel-claude-2026-09-22/llm/19-questions_received_trafikkfare.yaml.md b/runs/tomtervel-claude-2026-09-22/llm/19-questions_received_trafikkfare.yaml.md new file mode 100644 index 0000000..5d0b71d --- /dev/null +++ b/runs/tomtervel-claude-2026-09-22/llm/19-questions_received_trafikkfare.yaml.md @@ -0,0 +1,53 @@ +You write the words for one page of a website for this business. + +Business: Tomter Vel +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. +Contact: Styret i Tomter Vel +Language to write in: nb + +Everyone the site serves: +- door medlem: for en husstand i Tomter som vil være med i velet, eller allerede er det; behind it: bli-medlem, endre-medlemskap +- door melde-fra: for noen som har sett noe i nabolaget som ikke er som det skal; behind it: trafikkfare, anleggsfeil +- door bidra: for noen som vil gjøre en innsats, eller si sin mening i en sak; behind it: horingsinnspill, hjelpe-til, komite +- bli-medlem: en husstand i Tomter - wants: å bli medlem og få betalt kontingenten. Handled by kasserer. Stages: open -> betalt -> utmeldt. +- endre-medlemskap: et medlem som har flyttet, byttet e-post eller vil melde seg ut - wants: at velet har riktige opplysninger om dem. Handled by kasserer. Stages: open -> oppdatert. +- trafikkfare: en som har sett et farlig sted i trafikken - wants: at velet tar det opp med kommunen eller den som eier veien. Handled by trafikkomite. Stages: open -> tatt_opp -> ordnet -> avvist. +- anleggsfeil: en som ser at noe på lekeplassen eller stien er ødelagt - wants: at det blir fikset før noen skader seg. Handled by lekeplasskomite. Stages: open -> tatt_tak_i -> utbedret. +- horingsinnspill: en beboer som har en mening om en sak kommunen har på høring - wants: at velet tar det med i sitt svar. Handled by styret. Stages: open -> tatt_med -> ikke_tatt_med. +- hjelpe-til: en som vil hjelpe til på et arrangement eller en dugnad - wants: å bli satt opp på noe som passer dem. Handled by arrangementskomite. Stages: open -> kontaktet -> satt_opp -> takket_nei. +- komite: en som vil sitte i en komité - wants: en plass i den komiteen som driver med det de bryr seg om. Handled by styret. Stages: open -> plassert -> avslatt. +- dele-utstyr: en nabo som har noe å låne ut, eller trenger å låne noe - wants: et oppslag som naboene ser. Handled by styret. Stages: open -> lagt_ut -> tatt_ned. +- utlegg: en i en komité som har lagt ut for noe - wants: pengene tilbake. Handled by kasserer. Stages: open -> godkjent -> utbetalt -> avvist. + +The page: questions/received/trafikkfare.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": "", + "description": "", + "next_description": "", + "next_heading": "", + "question": "" +} + +Reply with the JSON object only. + +=== REPLY === +```json +{ + "back": "Til forsiden", + "description": "Trafikkfaren du meldte inn er registrert hos oss.", + "next_description": "Trafikkomiteen ser gjennom meldingen og tar den videre med kommunen eller veieier når det er nødvendig.", + "next_heading": "Trafikkomiteen tar det videre", + "question": "Hva skjer med det jeg har meldt inn?" +} +``` diff --git a/runs/tomtervel-claude-2026-09-22/llm/20-questions_styret_index.yaml.md b/runs/tomtervel-claude-2026-09-22/llm/20-questions_styret_index.yaml.md new file mode 100644 index 0000000..7d175c0 --- /dev/null +++ b/runs/tomtervel-claude-2026-09-22/llm/20-questions_styret_index.yaml.md @@ -0,0 +1,113 @@ +You write the words for one page of a website for this business. + +Business: Tomter Vel +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. +Contact: Styret i Tomter Vel +Language to write in: nb + +Everyone the site serves: +- door medlem: for en husstand i Tomter som vil være med i velet, eller allerede er det; behind it: bli-medlem, endre-medlemskap +- door melde-fra: for noen som har sett noe i nabolaget som ikke er som det skal; behind it: trafikkfare, anleggsfeil +- door bidra: for noen som vil gjøre en innsats, eller si sin mening i en sak; behind it: horingsinnspill, hjelpe-til, komite +- bli-medlem: en husstand i Tomter - wants: å bli medlem og få betalt kontingenten. Handled by kasserer. Stages: open -> betalt -> utmeldt. +- endre-medlemskap: et medlem som har flyttet, byttet e-post eller vil melde seg ut - wants: at velet har riktige opplysninger om dem. Handled by kasserer. Stages: open -> oppdatert. +- trafikkfare: en som har sett et farlig sted i trafikken - wants: at velet tar det opp med kommunen eller den som eier veien. Handled by trafikkomite. Stages: open -> tatt_opp -> ordnet -> avvist. +- anleggsfeil: en som ser at noe på lekeplassen eller stien er ødelagt - wants: at det blir fikset før noen skader seg. Handled by lekeplasskomite. Stages: open -> tatt_tak_i -> utbedret. +- horingsinnspill: en beboer som har en mening om en sak kommunen har på høring - wants: at velet tar det med i sitt svar. Handled by styret. Stages: open -> tatt_med -> ikke_tatt_med. +- hjelpe-til: en som vil hjelpe til på et arrangement eller en dugnad - wants: å bli satt opp på noe som passer dem. Handled by arrangementskomite. Stages: open -> kontaktet -> satt_opp -> takket_nei. +- komite: en som vil sitte i en komité - wants: en plass i den komiteen som driver med det de bryr seg om. Handled by styret. Stages: open -> plassert -> avslatt. +- dele-utstyr: en nabo som har noe å låne ut, eller trenger å låne noe - wants: et oppslag som naboene ser. Handled by styret. Stages: open -> lagt_ut -> tatt_ned. +- utlegg: en i en komité som har lagt ut for noe - wants: pengene tilbake. Handled by kasserer. Stages: open -> godkjent -> utbetalt -> avvist. + +The page: questions/styret/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": { + "innspill": { + "description": "", + "heading": "", + "moves": { + "open->ikke_tatt_med": "ikke_tatt_med>", + "open->tatt_med": "tatt_med>" + } + }, + "komitesoknader": { + "description": "", + "heading": "", + "moves": { + "open->avslatt": "avslatt>", + "open->plassert": "plassert>" + } + }, + "oppslag": { + "description": "", + "heading": "", + "moves": { + "open->lagt_ut": "lagt_ut>", + "open->tatt_ned": "tatt_ned>" + } + }, + "trafikkmeldinger": { + "description": "", + "heading": "", + "moves": {} + } + }, + "confirm": "", + "description": "", + "links": {}, + "question": "" +} + +Reply with the JSON object only. + +=== REPLY === +```json +{ + "buckets": { + "innspill": { + "description": "Meninger fra naboer om saker kommunen har på høring, klare til å bli med i velets svar.", + "heading": "Innspill til høringssvar", + "moves": { + "open->ikke_tatt_med": "Tas ikke med", + "open->tatt_med": "Tas med i svaret" + } + }, + "komitesoknader": { + "description": "Naboer som vil sitte i en komité, klare til å bli plassert.", + "heading": "Søknader til komiteene", + "moves": { + "open->avslatt": "Avslå søknad", + "open->plassert": "Plasser i komité" + } + }, + "oppslag": { + "description": "Utstyr naboer vil låne ut eller låne, klart til å legges ut.", + "heading": "Oppslag om utlån", + "moves": { + "open->lagt_ut": "Legg ut", + "open->tatt_ned": "Ta ned" + } + }, + "trafikkmeldinger": { + "description": "Farlige steder i trafikken som naboer har meldt fra om.", + "heading": "Meldte trafikkfarer", + "moves": {} + } + }, + "confirm": "Lagre", + "description": "Skrivebordet der styret behandler høringsinnspill, komitésøknader og oppslag, og holder oversikt over trafikkmeldinger.", + "links": {}, + "question": "Hva venter på styret?" +} +``` diff --git a/runs/tomtervel-claude-2026-09-22/llm/21-questions_trafikkomite_index.yaml.md b/runs/tomtervel-claude-2026-09-22/llm/21-questions_trafikkomite_index.yaml.md new file mode 100644 index 0000000..22b0e03 --- /dev/null +++ b/runs/tomtervel-claude-2026-09-22/llm/21-questions_trafikkomite_index.yaml.md @@ -0,0 +1,73 @@ +You write the words for one page of a website for this business. + +Business: Tomter Vel +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. +Contact: Styret i Tomter Vel +Language to write in: nb + +Everyone the site serves: +- door medlem: for en husstand i Tomter som vil være med i velet, eller allerede er det; behind it: bli-medlem, endre-medlemskap +- door melde-fra: for noen som har sett noe i nabolaget som ikke er som det skal; behind it: trafikkfare, anleggsfeil +- door bidra: for noen som vil gjøre en innsats, eller si sin mening i en sak; behind it: horingsinnspill, hjelpe-til, komite +- bli-medlem: en husstand i Tomter - wants: å bli medlem og få betalt kontingenten. Handled by kasserer. Stages: open -> betalt -> utmeldt. +- endre-medlemskap: et medlem som har flyttet, byttet e-post eller vil melde seg ut - wants: at velet har riktige opplysninger om dem. Handled by kasserer. Stages: open -> oppdatert. +- trafikkfare: en som har sett et farlig sted i trafikken - wants: at velet tar det opp med kommunen eller den som eier veien. Handled by trafikkomite. Stages: open -> tatt_opp -> ordnet -> avvist. +- anleggsfeil: en som ser at noe på lekeplassen eller stien er ødelagt - wants: at det blir fikset før noen skader seg. Handled by lekeplasskomite. Stages: open -> tatt_tak_i -> utbedret. +- horingsinnspill: en beboer som har en mening om en sak kommunen har på høring - wants: at velet tar det med i sitt svar. Handled by styret. Stages: open -> tatt_med -> ikke_tatt_med. +- hjelpe-til: en som vil hjelpe til på et arrangement eller en dugnad - wants: å bli satt opp på noe som passer dem. Handled by arrangementskomite. Stages: open -> kontaktet -> satt_opp -> takket_nei. +- komite: en som vil sitte i en komité - wants: en plass i den komiteen som driver med det de bryr seg om. Handled by styret. Stages: open -> plassert -> avslatt. +- dele-utstyr: en nabo som har noe å låne ut, eller trenger å låne noe - wants: et oppslag som naboene ser. Handled by styret. Stages: open -> lagt_ut -> tatt_ned. +- utlegg: en i en komité som har lagt ut for noe - wants: pengene tilbake. Handled by kasserer. Stages: open -> godkjent -> utbetalt -> avvist. + +The page: questions/trafikkomite/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": { + "trafikkmeldinger": { + "description": "", + "heading": "", + "moves": { + "open->avvist": "avvist>", + "open->tatt_opp": "tatt_opp>", + "tatt_opp->avvist": "avvist>", + "tatt_opp->ordnet": "ordnet>" + } + } + }, + "confirm": "", + "description": "", + "links": {}, + "question": "" +} + +Reply with the JSON object only. + +=== REPLY === +{ + "buckets": { + "trafikkmeldinger": { + "description": "Meldinger om utrygge steder i trafikken, sendt inn av naboer.", + "heading": "Meldte trafikkfarer", + "moves": { + "open->avvist": "Avvis meldingen", + "open->tatt_opp": "Ta den opp", + "tatt_opp->avvist": "Avvis saken", + "tatt_opp->ordnet": "Meld som ordnet" + } + } + }, + "confirm": "Lagre", + "description": "Her følger trafikkomiteen opp meldinger om farlige steder i trafikken, fra de kommer inn til de er tatt opp eller ordnet.", + "links": {}, + "question": "Hvilke trafikkfarer må vi følge opp nå?" +} diff --git a/runs/tomtervel-claude-2026-09-22/model.json b/runs/tomtervel-claude-2026-09-22/model.json new file mode 100644 index 0000000..8faa119 --- /dev/null +++ b/runs/tomtervel-claude-2026-09-22/model.json @@ -0,0 +1,1144 @@ +{ + "buckets": { + "anleggsfeil": { + "desks": [ + { + "group": "lekeplasskomite", + "moves": [ + { + "from": "open", + "label": "Ta tak i den", + "to": "tatt_tak_i" + }, + { + "from": "tatt_tak_i", + "label": "Merk som utbedret", + "to": "utbedret" + } + ], + "page": "/lekeplasskomite" + } + ], + "initial": "open", + "self_moves": [], + "transitions": { + "open": [ + "tatt_tak_i" + ], + "tatt_tak_i": [ + "utbedret" + ] + } + }, + "frivillige": { + "desks": [ + { + "group": "arrangementskomite", + "moves": [ + { + "from": "kontaktet", + "label": "Satt på oppgave", + "to": "satt_opp" + }, + { + "from": "kontaktet", + "label": "Takket nei", + "to": "takket_nei" + }, + { + "from": "open", + "label": "Tatt kontakt", + "to": "kontaktet" + }, + { + "from": "open", + "label": "Takket nei", + "to": "takket_nei" + } + ], + "page": "/arrangementskomite" + } + ], + "initial": "open", + "self_moves": [], + "transitions": { + "kontaktet": [ + "satt_opp", + "takket_nei" + ], + "open": [ + "kontaktet", + "takket_nei" + ] + } + }, + "husstander": { + "desks": [ + { + "group": "kasserer", + "moves": [ + { + "from": "open", + "label": "Merk som betalt", + "to": "betalt" + }, + { + "from": "open", + "label": "Meld ut", + "to": "utmeldt" + } + ], + "page": "/kasserer" + } + ], + "initial": "open", + "self_moves": [], + "transitions": { + "open": [ + "betalt", + "utmeldt" + ] + } + }, + "innspill": { + "desks": [ + { + "group": "styret", + "moves": [ + { + "from": "open", + "label": "Tas med i svaret", + "to": "tatt_med" + }, + { + "from": "open", + "label": "Tas ikke med", + "to": "ikke_tatt_med" + } + ], + "page": "/styret" + } + ], + "initial": "open", + "self_moves": [], + "transitions": { + "open": [ + "tatt_med", + "ikke_tatt_med" + ] + } + }, + "komitesoknader": { + "desks": [ + { + "group": "styret", + "moves": [ + { + "from": "open", + "label": "Plasser i komité", + "to": "plassert" + }, + { + "from": "open", + "label": "Avslå søknad", + "to": "avslatt" + } + ], + "page": "/styret" + } + ], + "initial": "open", + "self_moves": [], + "transitions": { + "open": [ + "plassert", + "avslatt" + ] + } + }, + "medlemsendringer": { + "desks": [ + { + "group": "kasserer", + "moves": [ + { + "from": "open", + "label": "Oppdater opplysninger", + "to": "oppdatert" + } + ], + "page": "/kasserer" + } + ], + "initial": "open", + "self_moves": [], + "transitions": { + "open": [ + "oppdatert" + ] + } + }, + "oppslag": { + "desks": [ + { + "group": "styret", + "moves": [ + { + "from": "open", + "label": "Legg ut", + "to": "lagt_ut" + }, + { + "from": "open", + "label": "Ta ned", + "to": "tatt_ned" + } + ], + "page": "/styret" + } + ], + "initial": "open", + "self_moves": [ + "tatt_ned" + ], + "transitions": { + "open": [ + "lagt_ut", + "tatt_ned" + ] + } + }, + "trafikkmeldinger": { + "desks": [ + { + "group": "styret", + "moves": [], + "page": "/styret" + }, + { + "group": "trafikkomite", + "moves": [ + { + "from": "open", + "label": "Ta den opp", + "to": "tatt_opp" + }, + { + "from": "open", + "label": "Avvis meldingen", + "to": "avvist" + }, + { + "from": "tatt_opp", + "label": "Meld som ordnet", + "to": "ordnet" + }, + { + "from": "tatt_opp", + "label": "Avvis saken", + "to": "avvist" + } + ], + "page": "/trafikkomite" + } + ], + "initial": "open", + "self_moves": [], + "transitions": { + "open": [ + "tatt_opp", + "avvist" + ], + "tatt_opp": [ + "ordnet", + "avvist" + ] + } + }, + "utlegg": { + "desks": [ + { + "group": "kasserer", + "moves": [ + { + "from": "godkjent", + "label": "Merk som utbetalt", + "to": "utbetalt" + }, + { + "from": "godkjent", + "label": "Avvis likevel", + "to": "avvist" + }, + { + "from": "open", + "label": "Godkjenn", + "to": "godkjent" + }, + { + "from": "open", + "label": "Avvis", + "to": "avvist" + } + ], + "page": "/kasserer" + } + ], + "initial": "open", + "self_moves": [], + "transitions": { + "godkjent": [ + "utbetalt", + "avvist" + ], + "open": [ + "godkjent", + "avvist" + ] + } + } + }, + "needs": [ + { + "done_when": [ + "betalt", + "utmeldt" + ], + "enters_as": null, + "handled_by": "kasserer", + "id": "bli-medlem", + "lands_in": "husstander", + "steps": [ + { + "alternative": "Meld deg inn eller endre opplysningene dine", + "expect": [ + "Meld deg inn eller endre opplysningene dine" + ], + "fields": [], + "options": [ + { + "description": "Meld deg inn i velet, eller gi oss beskjed om at noe har endret seg.", + "name": "Meld deg inn eller endre opplysningene dine" + }, + { + "description": "Har du sett noe farlig i trafikken, eller noe som er ødelagt på lekeplassen eller stien? Fortell oss om det.", + "name": "Meld fra om noe i nabolaget" + }, + { + "description": "Meld deg til en komité, still opp på dugnad, eller si din mening om en sak kommunen har på høring.", + "name": "Bli med og gjøre en innsats" + }, + { + "description": "Har du noe naboene kan få låne, eller trenger du å låne noe selv? Legg ut en melding så andre i Tomter ser den.", + "name": "Lån eller lån ut utstyr til en nabo" + } + ], + "page": "/", + "question": "Hva vil du gjøre?" + }, + { + "alternative": "Bli med i velet", + "expect": [ + "Bli med i velet" + ], + "fields": [ + { + "label": "Navn", + "name": "navn", + "optional": false, + "options": [], + "type": "text" + }, + { + "label": "Adresse", + "name": "adresse", + "optional": false, + "options": [], + "type": "text" + }, + { + "label": "E-post", + "name": "epost", + "optional": false, + "options": [], + "type": "email" + }, + { + "label": "Telefon", + "name": "telefon", + "optional": true, + "options": [], + "type": "tel" + } + ], + "options": [ + { + "description": "157 husstander er med allerede. Fyll ut skjemaet, så sender kasserer deg giroen.", + "name": "Bli med i velet" + }, + { + "description": "Flyttet, byttet e-post, eller vil melde deg ut? Si fra, så retter kasserer det opp.", + "name": "Hold opplysningene dine oppdatert" + } + ], + "page": "/medlem", + "question": "Vil du bli medlem, eller endre noe ved medlemskapet ditt?" + } + ], + "success": [ + "betalt" + ], + "wants": "å bli medlem og få betalt kontingenten", + "who": "en husstand i Tomter" + }, + { + "done_when": [ + "oppdatert" + ], + "enters_as": null, + "handled_by": "kasserer", + "id": "endre-medlemskap", + "lands_in": "medlemsendringer", + "steps": [ + { + "alternative": "Meld deg inn eller endre opplysningene dine", + "expect": [ + "Meld deg inn eller endre opplysningene dine" + ], + "fields": [], + "options": [ + { + "description": "Meld deg inn i velet, eller gi oss beskjed om at noe har endret seg.", + "name": "Meld deg inn eller endre opplysningene dine" + }, + { + "description": "Har du sett noe farlig i trafikken, eller noe som er ødelagt på lekeplassen eller stien? Fortell oss om det.", + "name": "Meld fra om noe i nabolaget" + }, + { + "description": "Meld deg til en komité, still opp på dugnad, eller si din mening om en sak kommunen har på høring.", + "name": "Bli med og gjøre en innsats" + }, + { + "description": "Har du noe naboene kan få låne, eller trenger du å låne noe selv? Legg ut en melding så andre i Tomter ser den.", + "name": "Lån eller lån ut utstyr til en nabo" + } + ], + "page": "/", + "question": "Hva vil du gjøre?" + }, + { + "alternative": "Hold opplysningene dine oppdatert", + "expect": [ + "Hold opplysningene dine oppdatert" + ], + "fields": [ + { + "label": "Navn", + "name": "navn", + "optional": false, + "options": [], + "type": "text" + }, + { + "label": "Adresse", + "name": "adresse", + "optional": false, + "options": [], + "type": "text" + }, + { + "label": "Hva har endret seg", + "name": "hva_er_nytt", + "optional": false, + "options": [], + "type": "textarea" + } + ], + "options": [ + { + "description": "157 husstander er med allerede. Fyll ut skjemaet, så sender kasserer deg giroen.", + "name": "Bli med i velet" + }, + { + "description": "Flyttet, byttet e-post, eller vil melde deg ut? Si fra, så retter kasserer det opp.", + "name": "Hold opplysningene dine oppdatert" + } + ], + "page": "/medlem", + "question": "Vil du bli medlem, eller endre noe ved medlemskapet ditt?" + } + ], + "success": [ + "oppdatert" + ], + "wants": "at velet har riktige opplysninger om dem", + "who": "et medlem som har flyttet, byttet e-post eller vil melde seg ut" + }, + { + "done_when": [ + "ordnet", + "avvist" + ], + "enters_as": null, + "handled_by": "trafikkomite", + "id": "trafikkfare", + "lands_in": "trafikkmeldinger", + "steps": [ + { + "alternative": "Meld fra om noe i nabolaget", + "expect": [ + "Meld fra om noe i nabolaget" + ], + "fields": [], + "options": [ + { + "description": "Meld deg inn i velet, eller gi oss beskjed om at noe har endret seg.", + "name": "Meld deg inn eller endre opplysningene dine" + }, + { + "description": "Har du sett noe farlig i trafikken, eller noe som er ødelagt på lekeplassen eller stien? Fortell oss om det.", + "name": "Meld fra om noe i nabolaget" + }, + { + "description": "Meld deg til en komité, still opp på dugnad, eller si din mening om en sak kommunen har på høring.", + "name": "Bli med og gjøre en innsats" + }, + { + "description": "Har du noe naboene kan få låne, eller trenger du å låne noe selv? Legg ut en melding så andre i Tomter ser den.", + "name": "Lån eller lån ut utstyr til en nabo" + } + ], + "page": "/", + "question": "Hva vil du gjøre?" + }, + { + "alternative": "Få en farlig trafikkplass tatt opp med kommunen", + "expect": [ + "Få en farlig trafikkplass tatt opp med kommunen" + ], + "fields": [ + { + "label": "Hvor er dette?", + "name": "hvor", + "optional": false, + "options": [], + "type": "text" + }, + { + "label": "Hva er problemet?", + "name": "hva", + "optional": false, + "options": [], + "type": "textarea" + }, + { + "label": "E-post", + "name": "epost", + "optional": true, + "options": [], + "type": "email" + } + ], + "options": [ + { + "description": "Sett en farlig plass i trafikken, for eksempel dårlig sikt eller for høy fart? Vi tar det videre til kommunen eller veieier.", + "name": "Få en farlig trafikkplass tatt opp med kommunen" + }, + { + "description": "Er noe på lekeplassen eller langs stien ødelagt eller farlig? Lekeplasskomiteen rykker ut og ser på det.", + "name": "Få ødelagt utstyr fikset før noen skader seg" + } + ], + "page": "/melde-fra", + "question": "Hva har du sett i nabolaget som ikke er som det skal?" + } + ], + "success": [ + "ordnet" + ], + "wants": "at velet tar det opp med kommunen eller den som eier veien", + "who": "en som har sett et farlig sted i trafikken" + }, + { + "done_when": [ + "utbedret" + ], + "enters_as": null, + "handled_by": "lekeplasskomite", + "id": "anleggsfeil", + "lands_in": "anleggsfeil", + "steps": [ + { + "alternative": "Meld fra om noe i nabolaget", + "expect": [ + "Meld fra om noe i nabolaget" + ], + "fields": [], + "options": [ + { + "description": "Meld deg inn i velet, eller gi oss beskjed om at noe har endret seg.", + "name": "Meld deg inn eller endre opplysningene dine" + }, + { + "description": "Har du sett noe farlig i trafikken, eller noe som er ødelagt på lekeplassen eller stien? Fortell oss om det.", + "name": "Meld fra om noe i nabolaget" + }, + { + "description": "Meld deg til en komité, still opp på dugnad, eller si din mening om en sak kommunen har på høring.", + "name": "Bli med og gjøre en innsats" + }, + { + "description": "Har du noe naboene kan få låne, eller trenger du å låne noe selv? Legg ut en melding så andre i Tomter ser den.", + "name": "Lån eller lån ut utstyr til en nabo" + } + ], + "page": "/", + "question": "Hva vil du gjøre?" + }, + { + "alternative": "Få ødelagt utstyr fikset før noen skader seg", + "expect": [ + "Få ødelagt utstyr fikset før noen skader seg" + ], + "fields": [ + { + "label": "Hvor på lekeplassen eller stien?", + "name": "hvor", + "optional": false, + "options": [ + "Lekeplassen", + "Elvestien", + "Skøytebanen", + "Et annet sted" + ], + "type": "select" + }, + { + "label": "Hva er ødelagt eller farlig?", + "name": "hva", + "optional": false, + "options": [], + "type": "textarea" + } + ], + "options": [ + { + "description": "Sett en farlig plass i trafikken, for eksempel dårlig sikt eller for høy fart? Vi tar det videre til kommunen eller veieier.", + "name": "Få en farlig trafikkplass tatt opp med kommunen" + }, + { + "description": "Er noe på lekeplassen eller langs stien ødelagt eller farlig? Lekeplasskomiteen rykker ut og ser på det.", + "name": "Få ødelagt utstyr fikset før noen skader seg" + } + ], + "page": "/melde-fra", + "question": "Hva har du sett i nabolaget som ikke er som det skal?" + } + ], + "success": [ + "utbedret" + ], + "wants": "at det blir fikset før noen skader seg", + "who": "en som ser at noe på lekeplassen eller stien er ødelagt" + }, + { + "done_when": [ + "tatt_med", + "ikke_tatt_med" + ], + "enters_as": null, + "handled_by": "styret", + "id": "horingsinnspill", + "lands_in": "innspill", + "steps": [ + { + "alternative": "Bli med og gjøre en innsats", + "expect": [ + "Bli med og gjøre en innsats" + ], + "fields": [], + "options": [ + { + "description": "Meld deg inn i velet, eller gi oss beskjed om at noe har endret seg.", + "name": "Meld deg inn eller endre opplysningene dine" + }, + { + "description": "Har du sett noe farlig i trafikken, eller noe som er ødelagt på lekeplassen eller stien? Fortell oss om det.", + "name": "Meld fra om noe i nabolaget" + }, + { + "description": "Meld deg til en komité, still opp på dugnad, eller si din mening om en sak kommunen har på høring.", + "name": "Bli med og gjøre en innsats" + }, + { + "description": "Har du noe naboene kan få låne, eller trenger du å låne noe selv? Legg ut en melding så andre i Tomter ser den.", + "name": "Lån eller lån ut utstyr til en nabo" + } + ], + "page": "/", + "question": "Hva vil du gjøre?" + }, + { + "alternative": "Få din mening med i velets høringssvar", + "expect": [ + "Få din mening med i velets høringssvar" + ], + "fields": [ + { + "label": "Navn", + "name": "navn", + "optional": false, + "options": [], + "type": "text" + }, + { + "label": "Hvilken sak gjelder det?", + "name": "sak", + "optional": false, + "options": [], + "type": "text" + }, + { + "label": "Ditt innspill", + "name": "innspill", + "optional": false, + "options": [], + "type": "textarea" + } + ], + "options": [ + { + "description": "Har kommunen en sak på høring du mener noe om? Send oss innspillet ditt, så vurderer styret det til vårt svar.", + "name": "Få din mening med i velets høringssvar" + }, + { + "description": "Vi trenger folk til dugnader og arrangementer gjennom året. Si fra hva du kan bidra med, så tar vi kontakt.", + "name": "Bli med på dugnad eller arrangement" + }, + { + "description": "Vi har sju komiteer som trenger folk. Fortell hvilken du er interessert i, så tar styret kontakt.", + "name": "Få en plass i komiteen som passer deg" + } + ], + "page": "/bidra", + "question": "Vil du hjelpe til eller si din mening?" + } + ], + "success": [ + "tatt_med" + ], + "wants": "at velet tar det med i sitt svar", + "who": "en beboer som har en mening om en sak kommunen har på høring" + }, + { + "done_when": [ + "satt_opp", + "takket_nei" + ], + "enters_as": null, + "handled_by": "arrangementskomite", + "id": "hjelpe-til", + "lands_in": "frivillige", + "steps": [ + { + "alternative": "Bli med og gjøre en innsats", + "expect": [ + "Bli med og gjøre en innsats" + ], + "fields": [], + "options": [ + { + "description": "Meld deg inn i velet, eller gi oss beskjed om at noe har endret seg.", + "name": "Meld deg inn eller endre opplysningene dine" + }, + { + "description": "Har du sett noe farlig i trafikken, eller noe som er ødelagt på lekeplassen eller stien? Fortell oss om det.", + "name": "Meld fra om noe i nabolaget" + }, + { + "description": "Meld deg til en komité, still opp på dugnad, eller si din mening om en sak kommunen har på høring.", + "name": "Bli med og gjøre en innsats" + }, + { + "description": "Har du noe naboene kan få låne, eller trenger du å låne noe selv? Legg ut en melding så andre i Tomter ser den.", + "name": "Lån eller lån ut utstyr til en nabo" + } + ], + "page": "/", + "question": "Hva vil du gjøre?" + }, + { + "alternative": "Bli med på dugnad eller arrangement", + "expect": [ + "Bli med på dugnad eller arrangement" + ], + "fields": [ + { + "label": "Navn", + "name": "navn", + "optional": false, + "options": [], + "type": "text" + }, + { + "label": "Telefon", + "name": "telefon", + "optional": false, + "options": [], + "type": "tel" + }, + { + "label": "Hva kan du bidra med?", + "name": "hva", + "optional": false, + "options": [ + "17. mai", + "Juletregranstenning", + "Skøytedag", + "Dugnad på elvestien", + "Det som trengs" + ], + "type": "select" + } + ], + "options": [ + { + "description": "Har kommunen en sak på høring du mener noe om? Send oss innspillet ditt, så vurderer styret det til vårt svar.", + "name": "Få din mening med i velets høringssvar" + }, + { + "description": "Vi trenger folk til dugnader og arrangementer gjennom året. Si fra hva du kan bidra med, så tar vi kontakt.", + "name": "Bli med på dugnad eller arrangement" + }, + { + "description": "Vi har sju komiteer som trenger folk. Fortell hvilken du er interessert i, så tar styret kontakt.", + "name": "Få en plass i komiteen som passer deg" + } + ], + "page": "/bidra", + "question": "Vil du hjelpe til eller si din mening?" + } + ], + "success": [ + "satt_opp" + ], + "wants": "å bli satt opp på noe som passer dem", + "who": "en som vil hjelpe til på et arrangement eller en dugnad" + }, + { + "done_when": [ + "plassert", + "avslatt" + ], + "enters_as": null, + "handled_by": "styret", + "id": "komite", + "lands_in": "komitesoknader", + "steps": [ + { + "alternative": "Bli med og gjøre en innsats", + "expect": [ + "Bli med og gjøre en innsats" + ], + "fields": [], + "options": [ + { + "description": "Meld deg inn i velet, eller gi oss beskjed om at noe har endret seg.", + "name": "Meld deg inn eller endre opplysningene dine" + }, + { + "description": "Har du sett noe farlig i trafikken, eller noe som er ødelagt på lekeplassen eller stien? Fortell oss om det.", + "name": "Meld fra om noe i nabolaget" + }, + { + "description": "Meld deg til en komité, still opp på dugnad, eller si din mening om en sak kommunen har på høring.", + "name": "Bli med og gjøre en innsats" + }, + { + "description": "Har du noe naboene kan få låne, eller trenger du å låne noe selv? Legg ut en melding så andre i Tomter ser den.", + "name": "Lån eller lån ut utstyr til en nabo" + } + ], + "page": "/", + "question": "Hva vil du gjøre?" + }, + { + "alternative": "Få en plass i komiteen som passer deg", + "expect": [ + "Få en plass i komiteen som passer deg" + ], + "fields": [ + { + "label": "Navn", + "name": "navn", + "optional": false, + "options": [], + "type": "text" + }, + { + "label": "E-post", + "name": "epost", + "optional": false, + "options": [], + "type": "email" + }, + { + "label": "Hvilken komité?", + "name": "komite", + "optional": false, + "options": [ + "Arrangementer", + "Elvesti", + "Høringsinstans", + "Leke- og møteplasser", + "Miljøgate", + "Pendlerforhold", + "Trafikkforhold" + ], + "type": "select" + } + ], + "options": [ + { + "description": "Har kommunen en sak på høring du mener noe om? Send oss innspillet ditt, så vurderer styret det til vårt svar.", + "name": "Få din mening med i velets høringssvar" + }, + { + "description": "Vi trenger folk til dugnader og arrangementer gjennom året. Si fra hva du kan bidra med, så tar vi kontakt.", + "name": "Bli med på dugnad eller arrangement" + }, + { + "description": "Vi har sju komiteer som trenger folk. Fortell hvilken du er interessert i, så tar styret kontakt.", + "name": "Få en plass i komiteen som passer deg" + } + ], + "page": "/bidra", + "question": "Vil du hjelpe til eller si din mening?" + } + ], + "success": [ + "plassert" + ], + "wants": "en plass i den komiteen som driver med det de bryr seg om", + "who": "en som vil sitte i en komité" + }, + { + "done_when": [ + "lagt_ut", + "tatt_ned" + ], + "enters_as": null, + "handled_by": "styret", + "id": "dele-utstyr", + "lands_in": "oppslag", + "steps": [ + { + "alternative": "Lån eller lån ut utstyr til en nabo", + "expect": [ + "Lån eller lån ut utstyr til en nabo" + ], + "fields": [ + { + "label": "Navn", + "name": "navn", + "optional": false, + "options": [], + "type": "text" + }, + { + "label": "E-post", + "name": "email", + "optional": false, + "options": [], + "type": "email" + }, + { + "label": "Har du noe å låne ut, eller trenger du å låne?", + "name": "har_eller_trenger", + "optional": false, + "options": [ + "Jeg har noe å låne ut", + "Jeg trenger å låne noe" + ], + "type": "select" + }, + { + "label": "Hva gjelder det?", + "name": "hva", + "optional": false, + "options": [], + "type": "textarea" + } + ], + "options": [ + { + "description": "Meld deg inn i velet, eller gi oss beskjed om at noe har endret seg.", + "name": "Meld deg inn eller endre opplysningene dine" + }, + { + "description": "Har du sett noe farlig i trafikken, eller noe som er ødelagt på lekeplassen eller stien? Fortell oss om det.", + "name": "Meld fra om noe i nabolaget" + }, + { + "description": "Meld deg til en komité, still opp på dugnad, eller si din mening om en sak kommunen har på høring.", + "name": "Bli med og gjøre en innsats" + }, + { + "description": "Har du noe naboene kan få låne, eller trenger du å låne noe selv? Legg ut en melding så andre i Tomter ser den.", + "name": "Lån eller lån ut utstyr til en nabo" + } + ], + "page": "/", + "question": "Hva vil du gjøre?" + } + ], + "success": [ + "lagt_ut" + ], + "wants": "et oppslag som naboene ser", + "who": "en nabo som har noe å låne ut, eller trenger å låne noe" + }, + { + "done_when": [ + "utbetalt", + "avvist" + ], + "enters_as": "komiteer", + "handled_by": "kasserer", + "id": "utlegg", + "lands_in": "utlegg", + "steps": [ + { + "alternative": "Få tilbake penger du har lagt ut", + "expect": [ + "Få tilbake penger du har lagt ut" + ], + "fields": [ + { + "label": "Ditt navn", + "name": "navn", + "optional": false, + "options": [], + "type": "text" + }, + { + "label": "Beløp (kr)", + "name": "belop", + "optional": false, + "options": [], + "type": "text" + }, + { + "label": "Hva gjaldt utlegget", + "name": "hva", + "optional": false, + "options": [], + "type": "textarea" + } + ], + "options": [ + { + "description": "Har du lagt ut for noe til komiteen? Fyll inn hva det gjaldt og hvor mye, så tar kasserer det videre.", + "name": "Få tilbake penger du har lagt ut" + } + ], + "page": "/komiteer/utlegg", + "question": "Har jeg lagt ut penger for velet som jeg skal ha tilbake?" + } + ], + "success": [ + "utbetalt" + ], + "wants": "pengene tilbake", + "who": "en i en komité som har lagt ut for noe" + } + ], + "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": "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." + } + ] +} \ No newline at end of file diff --git a/runs/tomtervel-claude-2026-09-22/needs.yaml b/runs/tomtervel-claude-2026-09-22/needs.yaml new file mode 100644 index 0000000..f449b2b --- /dev/null +++ b/runs/tomtervel-claude-2026-09-22/needs.yaml @@ -0,0 +1,216 @@ +needs: +- done_when: + - betalt + - utmeldt + enters: / + handled_by: kasserer + id: bli-medlem + lands_in: husstander + max_fields: 3 + max_steps: 2 + stages: + - open + - betalt + - utmeldt + success: + - betalt + via: Meld deg inn eller endre opplysningene dine + wants: å bli medlem og få betalt kontingenten + who: en husstand i Tomter +- done_when: + - oppdatert + enters: / + handled_by: kasserer + id: endre-medlemskap + lands_in: medlemsendringer + max_fields: 3 + max_steps: 2 + stages: + - open + - oppdatert + success: + - oppdatert + via: Meld deg inn eller endre opplysningene dine + wants: at velet har riktige opplysninger om dem + who: et medlem som har flyttet, byttet e-post eller vil melde seg ut +- done_when: + - ordnet + - avvist + enters: / + handled_by: trafikkomite + id: trafikkfare + lands_in: trafikkmeldinger + max_fields: 2 + max_steps: 2 + stages: + - open + - tatt_opp + - ordnet + - avvist + success: + - ordnet + via: Meld fra om noe i nabolaget + wants: at velet tar det opp med kommunen eller den som eier veien + who: en som har sett et farlig sted i trafikken +- done_when: + - utbedret + enters: / + handled_by: lekeplasskomite + id: anleggsfeil + lands_in: anleggsfeil + max_fields: 2 + max_steps: 2 + stages: + - open + - tatt_tak_i + - utbedret + success: + - utbedret + via: Meld fra om noe i nabolaget + wants: at det blir fikset før noen skader seg + who: en som ser at noe på lekeplassen eller stien er ødelagt +- done_when: + - tatt_med + - ikke_tatt_med + enters: / + handled_by: styret + id: horingsinnspill + lands_in: innspill + max_fields: 3 + max_steps: 2 + stages: + - open + - tatt_med + - ikke_tatt_med + success: + - tatt_med + via: Bli med og gjøre en innsats + wants: at velet tar det med i sitt svar + who: en beboer som har en mening om en sak kommunen har på høring +- done_when: + - satt_opp + - takket_nei + enters: / + handled_by: arrangementskomite + id: hjelpe-til + lands_in: frivillige + max_fields: 3 + max_steps: 2 + stages: + - open + - kontaktet + - satt_opp + - takket_nei + success: + - satt_opp + via: Bli med og gjøre en innsats + wants: å bli satt opp på noe som passer dem + who: en som vil hjelpe til på et arrangement eller en dugnad +- done_when: + - plassert + - avslatt + enters: / + handled_by: styret + id: komite + lands_in: komitesoknader + max_fields: 3 + max_steps: 2 + stages: + - open + - plassert + - avslatt + success: + - plassert + via: Bli med og gjøre en innsats + wants: en plass i den komiteen som driver med det de bryr seg om + who: en som vil sitte i en komité +- done_when: + - lagt_ut + - tatt_ned + enters: / + handled_by: styret + id: dele-utstyr + lands_in: oppslag + max_fields: 4 + max_steps: 1 + stages: + - open + - lagt_ut + - tatt_ned + success: + - lagt_ut + via: Lån eller lån ut utstyr til en nabo + wants: et oppslag som naboene ser + who: en nabo som har noe å låne ut, eller trenger å låne noe +- done_when: + - utbetalt + - avvist + enters: /komiteer/utlegg + enters_as: komiteer + handled_by: kasserer + id: utlegg + lands_in: utlegg + max_fields: 3 + max_steps: 1 + stages: + - open + - godkjent + - utbetalt + - avvist + success: + - utbetalt + via: Få tilbake penger du har lagt ut + wants: pengene tilbake + who: en i en komité som har lagt ut for noe +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: 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. diff --git a/runs/tomtervel-claude-2026-09-22/questions/arrangementskomite/_section.yaml b/runs/tomtervel-claude-2026-09-22/questions/arrangementskomite/_section.yaml new file mode 100644 index 0000000..7c3b4ae --- /dev/null +++ b/runs/tomtervel-claude-2026-09-22/questions/arrangementskomite/_section.yaml @@ -0,0 +1 @@ +qualifies: arrangementskomite diff --git a/runs/tomtervel-claude-2026-09-22/questions/arrangementskomite/index.yaml b/runs/tomtervel-claude-2026-09-22/questions/arrangementskomite/index.yaml new file mode 100644 index 0000000..93e6858 --- /dev/null +++ b/runs/tomtervel-claude-2026-09-22/questions/arrangementskomite/index.yaml @@ -0,0 +1,32 @@ +alternatives: +- action: /arrangementskomite + consequence: + - Lagre + description: Alle som har sagt de vil hjelpe til, og hvor langt du har kommet med å sette dem i sving. + features: + - description: '' + name: '' + resource: + requires_group: arrangementskomite + source: + bucket: frivillige + kind: kv + transitions: + - from: kontaktet + label: Satt på oppgave + to: satt_opp + - from: kontaktet + label: Takket nei + to: takket_nei + - from: open + label: Tatt kontakt + to: kontaktet + - from: open + label: Takket nei + to: takket_nei + name: Folk som vil hjelpe til +description: Her holder du oversikt over frivillige og setter dem opp på arrangementer og dugnader. +name: Hvem kan jeg sette i sving? +responsible: + contact: post@tomtervel.example + name: Styret i Tomter Vel diff --git a/runs/tomtervel-claude-2026-09-22/questions/bidra/index.yaml b/runs/tomtervel-claude-2026-09-22/questions/bidra/index.yaml new file mode 100644 index 0000000..10598a8 --- /dev/null +++ b/runs/tomtervel-claude-2026-09-22/questions/bidra/index.yaml @@ -0,0 +1,74 @@ +alternatives: +- action: /received/horingsinnspill + consequence: + - Send innspill + description: Har kommunen en sak på høring du mener noe om? Send oss innspillet ditt, så vurderer styret det til vårt svar. + features: + - name: Send høringsinnspill + requirements: + - label: Navn + name: navn + type: text + - label: Hvilken sak gjelder det? + name: sak + type: text + - label: Ditt innspill + name: innspill + type: textarea + name: Få din mening med i velets høringssvar + record_as: innspill +- action: /received/hjelpe-til + consequence: + - Meld deg + description: Vi trenger folk til dugnader og arrangementer gjennom året. Si fra hva du kan bidra med, så tar vi kontakt. + features: + - name: Meld deg som frivillig + requirements: + - label: Navn + name: navn + type: text + - label: Telefon + name: telefon + type: tel + - label: Hva kan du bidra med? + name: hva + options: + - 17. mai + - Juletregranstenning + - Skøytedag + - Dugnad på elvestien + - Det som trengs + type: select + name: Bli med på dugnad eller arrangement + record_as: frivillige +- action: /received/komite + consequence: + - Meld interesse + description: Vi har sju komiteer som trenger folk. Fortell hvilken du er interessert i, så tar styret kontakt. + features: + - name: Bli med i en komité + requirements: + - label: Navn + name: navn + type: text + - label: E-post + name: epost + type: email + - label: Hvilken komité? + name: komite + options: + - Arrangementer + - Elvesti + - Høringsinstans + - Leke- og møteplasser + - Miljøgate + - Pendlerforhold + - Trafikkforhold + type: select + name: Få en plass i komiteen som passer deg + record_as: komitesoknader +description: Tomter Vel drives på frivillig innsats. Her kan du hjelpe til på et arrangement, si din mening i en høringssak, eller sitte i en komité. +name: Vil du hjelpe til eller si din mening? +responsible: + contact: post@tomtervel.example + name: Styret i Tomter Vel diff --git a/runs/tomtervel-claude-2026-09-22/questions/decide/dele-utstyr.yaml b/runs/tomtervel-claude-2026-09-22/questions/decide/dele-utstyr.yaml new file mode 100644 index 0000000..3ac55fd --- /dev/null +++ b/runs/tomtervel-claude-2026-09-22/questions/decide/dele-utstyr.yaml @@ -0,0 +1,9 @@ +alternatives: +- description: Oppslaget fjernes fra siden. Passer når tingen er lånt bort, hentet tilbake eller ikke lenger aktuell. + name: Fjern oppslaget om utlånet + self_transition: + bucket: oppslag + label: Ta ned oppslaget + to: tatt_ned +description: Du la ut noe naboene kunne låne. Her ser du om det er tid for å ta det ned igjen. +name: Skal oppslaget om det du delte fortsatt stå ute? diff --git a/runs/tomtervel-claude-2026-09-22/questions/index.yaml b/runs/tomtervel-claude-2026-09-22/questions/index.yaml new file mode 100644 index 0000000..4e627ca --- /dev/null +++ b/runs/tomtervel-claude-2026-09-22/questions/index.yaml @@ -0,0 +1,45 @@ +alternatives: +- action: /medlem + consequence: + - Medlemskap + description: Meld deg inn i velet, eller gi oss beskjed om at noe har endret seg. + name: Meld deg inn eller endre opplysningene dine +- action: /melde-fra + consequence: + - Meld fra + description: Har du sett noe farlig i trafikken, eller noe som er ødelagt på lekeplassen eller stien? Fortell oss om det. + name: Meld fra om noe i nabolaget +- action: /bidra + consequence: + - Bidra + description: Meld deg til en komité, still opp på dugnad, eller si din mening om en sak kommunen har på høring. + name: Bli med og gjøre en innsats +- action: /received/dele-utstyr + consequence: + - Legg ut + description: Har du noe naboene kan få låne, eller trenger du å låne noe selv? Legg ut en melding så andre i Tomter ser den. + features: + - name: Lån eller lån ut + requirements: + - label: Navn + name: navn + type: text + - label: E-post + name: email + type: email + - label: Har du noe å låne ut, eller trenger du å låne? + name: har_eller_trenger + options: + - Jeg har noe å låne ut + - Jeg trenger å låne noe + type: select + - label: Hva gjelder det? + name: hva + type: textarea + name: Lån eller lån ut utstyr til en nabo + record_as: oppslag +description: Tomter Vel er velforeningen for Tomter, og har jobbet for bygda siden 1947. Her finner du veien videre, enten du vil bli medlem, melde fra om noe, eller bidra selv. +name: Hva vil du gjøre? +responsible: + contact: post@tomtervel.example + name: Styret i Tomter Vel diff --git a/runs/tomtervel-claude-2026-09-22/questions/kasserer/_section.yaml b/runs/tomtervel-claude-2026-09-22/questions/kasserer/_section.yaml new file mode 100644 index 0000000..2f8af2f --- /dev/null +++ b/runs/tomtervel-claude-2026-09-22/questions/kasserer/_section.yaml @@ -0,0 +1 @@ +qualifies: kasserer diff --git a/runs/tomtervel-claude-2026-09-22/questions/kasserer/index.yaml b/runs/tomtervel-claude-2026-09-22/questions/kasserer/index.yaml new file mode 100644 index 0000000..9a7e670 --- /dev/null +++ b/runs/tomtervel-claude-2026-09-22/questions/kasserer/index.yaml @@ -0,0 +1,69 @@ +alternatives: +- action: /kasserer + consequence: + - Bekreft + description: Husstander som vil bli medlem eller har betalt kontingenten, klare for oppfølging. + features: + - description: '' + name: '' + resource: + requires_group: kasserer + source: + bucket: husstander + kind: kv + transitions: + - from: open + label: Merk som betalt + to: betalt + - from: open + label: Meld ut + to: utmeldt + name: Husstander som vil bli medlem +- action: /kasserer + consequence: + - Bekreft + description: Medlemmer som har flyttet, byttet e-post eller vil melde seg ut. + features: + - description: '' + name: '' + resource: + requires_group: kasserer + source: + bucket: medlemsendringer + kind: kv + transitions: + - from: open + label: Oppdater opplysninger + to: oppdatert + name: Endringer i medlemsopplysninger +- action: /kasserer + consequence: + - Bekreft + description: Utlegg fra komiteene som venter på godkjenning eller utbetaling. + features: + - description: '' + name: '' + resource: + requires_group: kasserer + source: + bucket: utlegg + kind: kv + transitions: + - from: godkjent + label: Merk som utbetalt + to: utbetalt + - from: godkjent + label: Avvis likevel + to: avvist + - from: open + label: Godkjenn + to: godkjent + - from: open + label: Avvis + to: avvist + name: Utlegg som skal dekkes +description: Her holder du styr på medlemskap, kontingent og utlegg fra komiteene. +name: Hvem venter på svar fra kasserer? +responsible: + contact: post@tomtervel.example + name: Styret i Tomter Vel diff --git a/runs/tomtervel-claude-2026-09-22/questions/komiteer/_section.yaml b/runs/tomtervel-claude-2026-09-22/questions/komiteer/_section.yaml new file mode 100644 index 0000000..57e3295 --- /dev/null +++ b/runs/tomtervel-claude-2026-09-22/questions/komiteer/_section.yaml @@ -0,0 +1 @@ +qualifies: komiteer diff --git a/runs/tomtervel-claude-2026-09-22/questions/komiteer/index.yaml b/runs/tomtervel-claude-2026-09-22/questions/komiteer/index.yaml new file mode 100644 index 0000000..7d6f26d --- /dev/null +++ b/runs/tomtervel-claude-2026-09-22/questions/komiteer/index.yaml @@ -0,0 +1,11 @@ +alternatives: +- action: /komiteer/utlegg + consequence: + - Legg inn utlegg + description: Har du lagt ut penger for komiteen? Registrer det her, så tar kasserer seg av resten. + name: Få tilbake penger du har lagt ut +description: Her ser komiteen sakene som venter, og kan flytte dem videre etter hvert som dere tar tak i dem. +name: Hva står på tur for komiteen nå? +responsible: + contact: post@tomtervel.example + name: Styret i Tomter Vel diff --git a/runs/tomtervel-claude-2026-09-22/questions/komiteer/utlegg-sent.yaml b/runs/tomtervel-claude-2026-09-22/questions/komiteer/utlegg-sent.yaml new file mode 100644 index 0000000..8dd0c4c --- /dev/null +++ b/runs/tomtervel-claude-2026-09-22/questions/komiteer/utlegg-sent.yaml @@ -0,0 +1,10 @@ +alternatives: +- description: Kasserer ser gjennom utlegget og godkjenner det før pengene blir betalt tilbake til kontoen din. + name: Kasserer godkjenner og betaler tilbake +- action: /komiteer + consequence: + - Til forsiden + description: '' + name: Til forsiden +description: Takk for at du sender inn utlegget ditt. Vi har mottatt det og sender det videre til kasserer. +name: Hva skjer med utlegget mitt nå? diff --git a/runs/tomtervel-claude-2026-09-22/questions/komiteer/utlegg.yaml b/runs/tomtervel-claude-2026-09-22/questions/komiteer/utlegg.yaml new file mode 100644 index 0000000..8ab2d98 --- /dev/null +++ b/runs/tomtervel-claude-2026-09-22/questions/komiteer/utlegg.yaml @@ -0,0 +1,25 @@ +alternatives: +- action: /komiteer/utlegg-sent + consequence: + - Send inn + description: Har du lagt ut for noe til komiteen? Fyll inn hva det gjaldt og hvor mye, så tar kasserer det videre. + features: + - name: Krav om refusjon + requirements: + - label: Ditt navn + name: navn + type: text + - label: Beløp (kr) + name: belop + type: text + - label: Hva gjaldt utlegget + name: hva + type: textarea + name: Få tilbake penger du har lagt ut + record_as: utlegg +description: For deg som sitter i en komité og har betalt noe av egen lomme for velet. +followup: false +name: Har jeg lagt ut penger for velet som jeg skal ha tilbake? +responsible: + contact: post@tomtervel.example + name: Styret i Tomter Vel diff --git a/runs/tomtervel-claude-2026-09-22/questions/lekeplasskomite/_section.yaml b/runs/tomtervel-claude-2026-09-22/questions/lekeplasskomite/_section.yaml new file mode 100644 index 0000000..ca64c92 --- /dev/null +++ b/runs/tomtervel-claude-2026-09-22/questions/lekeplasskomite/_section.yaml @@ -0,0 +1 @@ +qualifies: lekeplasskomite diff --git a/runs/tomtervel-claude-2026-09-22/questions/lekeplasskomite/index.yaml b/runs/tomtervel-claude-2026-09-22/questions/lekeplasskomite/index.yaml new file mode 100644 index 0000000..62f15b9 --- /dev/null +++ b/runs/tomtervel-claude-2026-09-22/questions/lekeplasskomite/index.yaml @@ -0,0 +1,26 @@ +alternatives: +- action: /lekeplasskomite + consequence: + - Lagre + description: Meldinger fra naboer om noe som er ødelagt på lekeplassen eller langs stien. + features: + - description: '' + name: '' + resource: + requires_group: lekeplasskomite + source: + bucket: anleggsfeil + kind: kv + transitions: + - from: open + label: Ta tak i den + to: tatt_tak_i + - from: tatt_tak_i + label: Merk som utbedret + to: utbedret + name: Feil som er meldt inn +description: Her holder du oversikt over meldte feil på lekeplassene og elvestien, og følger opp til de er utbedret. +name: Hva må fikses på lekeplassene og stien nå? +responsible: + contact: post@tomtervel.example + name: Styret i Tomter Vel diff --git a/runs/tomtervel-claude-2026-09-22/questions/medlem/index.yaml b/runs/tomtervel-claude-2026-09-22/questions/medlem/index.yaml new file mode 100644 index 0000000..b083f77 --- /dev/null +++ b/runs/tomtervel-claude-2026-09-22/questions/medlem/index.yaml @@ -0,0 +1,46 @@ +alternatives: +- action: /received/bli-medlem + consequence: + - Meld deg inn + description: 157 husstander er med allerede. Fyll ut skjemaet, så sender kasserer deg giroen. + features: + - name: Bli medlem + requirements: + - label: Navn + name: navn + type: text + - label: Adresse + name: adresse + type: text + - label: E-post + name: epost + type: email + - label: Telefon + name: telefon + optional: true + type: tel + name: Bli med i velet + record_as: husstander +- action: /received/endre-medlemskap + consequence: + - Send endring + description: Flyttet, byttet e-post, eller vil melde deg ut? Si fra, så retter kasserer det opp. + features: + - name: Endre medlemskap + requirements: + - label: Navn + name: navn + type: text + - label: Adresse + name: adresse + type: text + - label: Hva har endret seg + name: hva_er_nytt + type: textarea + name: Hold opplysningene dine oppdatert + record_as: medlemsendringer +description: Velet holder oversikt over hvem som bor på Tomter, slik at vi vet hvem vi jobber for. +name: Vil du bli medlem, eller endre noe ved medlemskapet ditt? +responsible: + contact: post@tomtervel.example + name: Styret i Tomter Vel diff --git a/runs/tomtervel-claude-2026-09-22/questions/melde-fra/index.yaml b/runs/tomtervel-claude-2026-09-22/questions/melde-fra/index.yaml new file mode 100644 index 0000000..6b040d0 --- /dev/null +++ b/runs/tomtervel-claude-2026-09-22/questions/melde-fra/index.yaml @@ -0,0 +1,45 @@ +alternatives: +- action: /received/trafikkfare + consequence: + - Meld fra + description: Sett en farlig plass i trafikken, for eksempel dårlig sikt eller for høy fart? Vi tar det videre til kommunen eller veieier. + features: + - name: Meld fra om trafikkfare + requirements: + - label: Hvor er dette? + name: hvor + type: text + - label: Hva er problemet? + name: hva + type: textarea + - label: E-post + name: epost + optional: true + type: email + name: Få en farlig trafikkplass tatt opp med kommunen + record_as: trafikkmeldinger +- action: /received/anleggsfeil + consequence: + - Meld fra + description: Er noe på lekeplassen eller langs stien ødelagt eller farlig? Lekeplasskomiteen rykker ut og ser på det. + features: + - name: Meld fra om feil + requirements: + - label: Hvor på lekeplassen eller stien? + name: hvor + options: + - Lekeplassen + - Elvestien + - Skøytebanen + - Et annet sted + type: select + - label: Hva er ødelagt eller farlig? + name: hva + type: textarea + name: Få ødelagt utstyr fikset før noen skader seg + record_as: anleggsfeil +description: Har du sett noe farlig i trafikken eller noe ødelagt på lekeplassen eller stien? Si fra her, så tar rett komité tak i det. +name: Hva har du sett i nabolaget som ikke er som det skal? +responsible: + contact: post@tomtervel.example + name: Styret i Tomter Vel diff --git a/runs/tomtervel-claude-2026-09-22/questions/received/anleggsfeil.yaml b/runs/tomtervel-claude-2026-09-22/questions/received/anleggsfeil.yaml new file mode 100644 index 0000000..51d4998 --- /dev/null +++ b/runs/tomtervel-claude-2026-09-22/questions/received/anleggsfeil.yaml @@ -0,0 +1,10 @@ +alternatives: +- description: Lekeplasskomiteen ser over meldinger jevnlig og tar tak i det som haster mest først. + name: Komiteen tar tak i det +- action: / + consequence: + - Til forsiden + description: '' + name: Til forsiden +description: Meldingen din om lekeplassen eller stien er sendt til lekeplasskomiteen. +name: Hva skjer med meldingen min nå? diff --git a/runs/tomtervel-claude-2026-09-22/questions/received/bli-medlem.yaml b/runs/tomtervel-claude-2026-09-22/questions/received/bli-medlem.yaml new file mode 100644 index 0000000..d52103c --- /dev/null +++ b/runs/tomtervel-claude-2026-09-22/questions/received/bli-medlem.yaml @@ -0,0 +1,10 @@ +alternatives: +- description: Kasserer sjekker innmeldingen og sender deg kontonummer for kontingenten. + name: Kasserer tar kontakt om betaling +- action: / + consequence: + - Til forsiden + description: '' + name: Til forsiden +description: Innmeldingen din er registrert og sendt til kasserer. +name: Hva skjer nå med innmeldingen min? diff --git a/runs/tomtervel-claude-2026-09-22/questions/received/dele-utstyr.yaml b/runs/tomtervel-claude-2026-09-22/questions/received/dele-utstyr.yaml new file mode 100644 index 0000000..2b21614 --- /dev/null +++ b/runs/tomtervel-claude-2026-09-22/questions/received/dele-utstyr.yaml @@ -0,0 +1,10 @@ +alternatives: +- description: Styret legger ut oppslaget slik at naboene kan se det, eller tar kontakt hvis noe er uklart. + name: Oppslaget kommer opp +- action: / + consequence: + - Til forsiden + description: '' + name: Til forsiden +description: Oppslaget ditt er sendt til styret. Vi legger det ut eller svarer deg så snart vi rekker det. +name: Hva skjer nå med det jeg vil låne ut eller trenger å låne? diff --git a/runs/tomtervel-claude-2026-09-22/questions/received/endre-medlemskap.yaml b/runs/tomtervel-claude-2026-09-22/questions/received/endre-medlemskap.yaml new file mode 100644 index 0000000..0d2125f --- /dev/null +++ b/runs/tomtervel-claude-2026-09-22/questions/received/endre-medlemskap.yaml @@ -0,0 +1,10 @@ +alternatives: +- description: Kasserer går gjennom endringen og oppdaterer medlemslista. Du hører fra oss bare hvis noe er uklart. + name: Kasserer oppdaterer opplysningene dine +- action: / + consequence: + - Til forsiden + description: '' + name: Til forsiden +description: Du har sendt inn endringer til medlemskapet ditt. Kasserer oppdaterer opplysningene så snart de får sett gjennom det som er kommet inn. +name: Hva skjer nå som jeg har sendt inn endringen? diff --git a/runs/tomtervel-claude-2026-09-22/questions/received/hjelpe-til.yaml b/runs/tomtervel-claude-2026-09-22/questions/received/hjelpe-til.yaml new file mode 100644 index 0000000..1ae249c --- /dev/null +++ b/runs/tomtervel-claude-2026-09-22/questions/received/hjelpe-til.yaml @@ -0,0 +1,10 @@ +alternatives: +- description: Noen i arrangementskomiteen tar kontakt med deg når det nærmer seg noe du kan bidra på. + name: Komiteen tar kontakt +- action: / + consequence: + - Tilbake til forsiden + description: '' + name: Tilbake til forsiden +description: Takk for at du vil hjelpe til! Meldingen din er sendt til arrangementskomiteen. +name: Hva skjer nå som jeg har meldt meg? diff --git a/runs/tomtervel-claude-2026-09-22/questions/received/horingsinnspill.yaml b/runs/tomtervel-claude-2026-09-22/questions/received/horingsinnspill.yaml new file mode 100644 index 0000000..26916f1 --- /dev/null +++ b/runs/tomtervel-claude-2026-09-22/questions/received/horingsinnspill.yaml @@ -0,0 +1,10 @@ +alternatives: +- description: Styret samler alle innspill før fristen og vurderer hva som blir med i svaret til kommunen. + name: Innspillet ditt vurderes av styret +- action: / + consequence: + - Til forsiden + description: '' + name: Til forsiden +description: Takk for at du sendte inn høringsinnspillet ditt. Styret tar det med når de skriver velets høringssvar. +name: Hva skjer med innspillet mitt nå? diff --git a/runs/tomtervel-claude-2026-09-22/questions/received/komite.yaml b/runs/tomtervel-claude-2026-09-22/questions/received/komite.yaml new file mode 100644 index 0000000..cbe0659 --- /dev/null +++ b/runs/tomtervel-claude-2026-09-22/questions/received/komite.yaml @@ -0,0 +1,10 @@ +alternatives: +- description: Styret tar det opp på neste møte og finner ut hvilken komité som passer best. Du hører fra oss uansett hva vi lander på. + name: Styret finner en plass til deg +- action: / + consequence: + - Til forsiden + description: '' + name: Til forsiden +description: Takk for at du vil bidra i en komité. Meldingen din har gått til styret. +name: Hva skjer nå som jeg har meldt interesse for en komité? diff --git a/runs/tomtervel-claude-2026-09-22/questions/received/trafikkfare.yaml b/runs/tomtervel-claude-2026-09-22/questions/received/trafikkfare.yaml new file mode 100644 index 0000000..84f26fa --- /dev/null +++ b/runs/tomtervel-claude-2026-09-22/questions/received/trafikkfare.yaml @@ -0,0 +1,10 @@ +alternatives: +- description: Trafikkomiteen ser gjennom meldingen og tar den videre med kommunen eller veieier når det er nødvendig. + name: Trafikkomiteen tar det videre +- action: / + consequence: + - Til forsiden + description: '' + name: Til forsiden +description: Trafikkfaren du meldte inn er registrert hos oss. +name: Hva skjer med det jeg har meldt inn? diff --git a/runs/tomtervel-claude-2026-09-22/questions/styret/_section.yaml b/runs/tomtervel-claude-2026-09-22/questions/styret/_section.yaml new file mode 100644 index 0000000..5a34160 --- /dev/null +++ b/runs/tomtervel-claude-2026-09-22/questions/styret/_section.yaml @@ -0,0 +1 @@ +qualifies: styret diff --git a/runs/tomtervel-claude-2026-09-22/questions/styret/index.yaml b/runs/tomtervel-claude-2026-09-22/questions/styret/index.yaml new file mode 100644 index 0000000..c986683 --- /dev/null +++ b/runs/tomtervel-claude-2026-09-22/questions/styret/index.yaml @@ -0,0 +1,80 @@ +alternatives: +- action: /styret + consequence: + - Lagre + description: Meninger fra naboer om saker kommunen har på høring, klare til å bli med i velets svar. + features: + - description: '' + name: '' + resource: + requires_group: styret + source: + bucket: innspill + kind: kv + transitions: + - from: open + label: Tas med i svaret + to: tatt_med + - from: open + label: Tas ikke med + to: ikke_tatt_med + name: Innspill til høringssvar +- action: /styret + consequence: + - Lagre + description: Naboer som vil sitte i en komité, klare til å bli plassert. + features: + - description: '' + name: '' + resource: + requires_group: styret + source: + bucket: komitesoknader + kind: kv + transitions: + - from: open + label: Plasser i komité + to: plassert + - from: open + label: Avslå søknad + to: avslatt + name: Søknader til komiteene +- action: /styret + consequence: + - Lagre + description: Utstyr naboer vil låne ut eller låne, klart til å legges ut. + features: + - description: '' + name: '' + resource: + requires_group: styret + source: + bucket: oppslag + kind: kv + transitions: + - from: open + label: Legg ut + to: lagt_ut + - from: open + label: Ta ned + to: tatt_ned + name: Oppslag om utlån +- action: /styret + consequence: + - Lagre + description: Farlige steder i trafikken som naboer har meldt fra om. + features: + - description: '' + name: '' + resource: + requires_group: styret + source: + bucket: trafikkmeldinger + kind: kv + transitions: [] + name: Meldte trafikkfarer +description: Skrivebordet der styret behandler høringsinnspill, komitésøknader og oppslag, og holder oversikt over trafikkmeldinger. +name: Hva venter på styret? +responsible: + contact: post@tomtervel.example + name: Styret i Tomter Vel diff --git a/runs/tomtervel-claude-2026-09-22/questions/trafikkomite/_section.yaml b/runs/tomtervel-claude-2026-09-22/questions/trafikkomite/_section.yaml new file mode 100644 index 0000000..bf946ea --- /dev/null +++ b/runs/tomtervel-claude-2026-09-22/questions/trafikkomite/_section.yaml @@ -0,0 +1 @@ +qualifies: trafikkomite diff --git a/runs/tomtervel-claude-2026-09-22/questions/trafikkomite/index.yaml b/runs/tomtervel-claude-2026-09-22/questions/trafikkomite/index.yaml new file mode 100644 index 0000000..122abbe --- /dev/null +++ b/runs/tomtervel-claude-2026-09-22/questions/trafikkomite/index.yaml @@ -0,0 +1,32 @@ +alternatives: +- action: /trafikkomite + consequence: + - Lagre + description: Meldinger om utrygge steder i trafikken, sendt inn av naboer. + features: + - description: '' + name: '' + resource: + requires_group: trafikkomite + source: + bucket: trafikkmeldinger + kind: kv + transitions: + - from: open + label: Ta den opp + to: tatt_opp + - from: open + label: Avvis meldingen + to: avvist + - from: tatt_opp + label: Meld som ordnet + to: ordnet + - from: tatt_opp + label: Avvis saken + to: avvist + name: Meldte trafikkfarer +description: Her følger trafikkomiteen opp meldinger om farlige steder i trafikken, fra de kommer inn til de er tatt opp eller ordnet. +name: Hvilke trafikkfarer må vi følge opp nå? +responsible: + contact: post@tomtervel.example + name: Styret i Tomter Vel diff --git a/runs/tomtervel-claude-2026-09-22/rate.json b/runs/tomtervel-claude-2026-09-22/rate.json new file mode 100644 index 0000000..f416ffa --- /dev/null +++ b/runs/tomtervel-claude-2026-09-22/rate.json @@ -0,0 +1,367 @@ +{ + "anleggsfeil": { + "pages": [ + { + "control": { + "asked": 0, + "next": null, + "which": 0 + }, + "control_ok": true, + "followup_shown": false, + "lix": 22.70051635111876, + "options": 4, + "overloaded": false, + "page": "/", + "personas": 2, + "required_fields": 0, + "understanding": { + "asked": 1, + "next": null, + "which": 2 + } + }, + { + "control": { + "asked": 1, + "next": 0, + "which": 0 + }, + "control_ok": false, + "followup_shown": true, + "lix": 29.38095238095238, + "options": 2, + "overloaded": false, + "page": "/melde-fra", + "personas": 2, + "required_fields": 2, + "understanding": { + "asked": 2, + "next": 2, + "which": 2 + } + } + ], + "steps": 2 + }, + "bli-medlem": { + "pages": [ + { + "control": { + "asked": 0, + "next": null, + "which": 0 + }, + "control_ok": true, + "followup_shown": false, + "lix": 22.70051635111876, + "options": 4, + "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": 35.492063492063494, + "options": 2, + "overloaded": false, + "page": "/medlem", + "personas": 2, + "required_fields": 3, + "understanding": { + "asked": 2, + "next": 2, + "which": 2 + } + } + ], + "steps": 2 + }, + "dele-utstyr": { + "pages": [ + { + "control": { + "asked": 0, + "next": 0, + "which": 0 + }, + "control_ok": true, + "followup_shown": true, + "lix": 22.816949152542374, + "options": 4, + "overloaded": false, + "page": "/", + "personas": 2, + "required_fields": 4, + "understanding": { + "asked": 2, + "next": 2, + "which": 2 + } + } + ], + "steps": 1 + }, + "endre-medlemskap": { + "pages": [ + { + "control": { + "asked": 0, + "next": null, + "which": 0 + }, + "control_ok": true, + "followup_shown": false, + "lix": 22.70051635111876, + "options": 4, + "overloaded": false, + "page": "/", + "personas": 2, + "required_fields": 0, + "understanding": { + "asked": 1, + "next": null, + "which": 2 + } + }, + { + "control": { + "asked": 0, + "next": 0, + "which": 0 + }, + "control_ok": true, + "followup_shown": true, + "lix": 32.333333333333336, + "options": 2, + "overloaded": false, + "page": "/medlem", + "personas": 2, + "required_fields": 3, + "understanding": { + "asked": 2, + "next": 2, + "which": 2 + } + } + ], + "steps": 2 + }, + "hjelpe-til": { + "pages": [ + { + "control": { + "asked": 0, + "next": null, + "which": 0 + }, + "control_ok": true, + "followup_shown": false, + "lix": 22.70051635111876, + "options": 4, + "overloaded": false, + "page": "/", + "personas": 2, + "required_fields": 0, + "understanding": { + "asked": 2, + "next": null, + "which": 2 + } + }, + { + "control": { + "asked": 0, + "next": 0, + "which": 0 + }, + "control_ok": true, + "followup_shown": true, + "lix": 28.44736842105263, + "options": 3, + "overloaded": false, + "page": "/bidra", + "personas": 2, + "required_fields": 3, + "understanding": { + "asked": 2, + "next": 2, + "which": 2 + } + } + ], + "steps": 2 + }, + "horingsinnspill": { + "pages": [ + { + "control": { + "asked": 0, + "next": null, + "which": 0 + }, + "control_ok": true, + "followup_shown": false, + "lix": 22.70051635111876, + "options": 4, + "overloaded": false, + "page": "/", + "personas": 2, + "required_fields": 0, + "understanding": { + "asked": 0, + "next": null, + "which": 1 + } + }, + { + "control": { + "asked": 1, + "next": 0, + "which": 0 + }, + "control_ok": false, + "followup_shown": true, + "lix": 31.11212121212121, + "options": 3, + "overloaded": false, + "page": "/bidra", + "personas": 2, + "required_fields": 3, + "understanding": { + "asked": 2, + "next": 2, + "which": 2 + } + } + ], + "steps": 2 + }, + "komite": { + "pages": [ + { + "control": { + "asked": 0, + "next": null, + "which": 0 + }, + "control_ok": true, + "followup_shown": false, + "lix": 22.70051635111876, + "options": 4, + "overloaded": false, + "page": "/", + "personas": 2, + "required_fields": 0, + "understanding": { + "asked": 1, + "next": null, + "which": 2 + } + }, + { + "control": { + "asked": 0, + "next": 0, + "which": 0 + }, + "control_ok": true, + "followup_shown": true, + "lix": 25.735930735930737, + "options": 3, + "overloaded": false, + "page": "/bidra", + "personas": 2, + "required_fields": 3, + "understanding": { + "asked": 2, + "next": 2, + "which": 2 + } + } + ], + "steps": 2 + }, + "trafikkfare": { + "pages": [ + { + "control": { + "asked": 0, + "next": null, + "which": 0 + }, + "control_ok": true, + "followup_shown": false, + "lix": 22.70051635111876, + "options": 4, + "overloaded": false, + "page": "/", + "personas": 2, + "required_fields": 0, + "understanding": { + "asked": 0, + "next": null, + "which": 1 + } + }, + { + "control": { + "asked": 1, + "next": 0, + "which": 0 + }, + "control_ok": false, + "followup_shown": true, + "lix": 32.047619047619044, + "options": 2, + "overloaded": false, + "page": "/melde-fra", + "personas": 2, + "required_fields": 2, + "understanding": { + "asked": 2, + "next": 2, + "which": 2 + } + } + ], + "steps": 2 + }, + "utlegg": { + "pages": [ + { + "control": { + "asked": 1, + "next": 0, + "which": 0 + }, + "control_ok": false, + "followup_shown": true, + "lix": 30.696969696969695, + "options": 1, + "overloaded": false, + "page": "/komiteer/utlegg", + "personas": 1, + "required_fields": 3, + "understanding": { + "asked": 1, + "next": 1, + "which": 1 + } + } + ], + "steps": 1 + } +} \ No newline at end of file diff --git a/runs/tomtervel-claude-2026-09-22/rate.txt b/runs/tomtervel-claude-2026-09-22/rate.txt new file mode 100644 index 0000000..8543bab --- /dev/null +++ b/runs/tomtervel-claude-2026-09-22/rate.txt @@ -0,0 +1,17 @@ +need LIX which asked next gutted twin says page load +bli-medlem @/ 23 very easy 1/2 0/2 - 0/0/- ok 4 options, 0 required +bli-medlem @/medlem 35 easy 2/2 2/2 2/2 0/0/0 ok 2 options, 3 required +endre-medlemskap @/ 23 very easy 2/2 1/2 - 0/0/- ok 4 options, 0 required +endre-medlemskap @/medlem 32 easy 2/2 2/2 2/2 0/0/0 ok 2 options, 3 required +trafikkfare @/ 23 very easy 1/2 0/2 - 0/0/- ok 4 options, 0 required +trafikkfare @/melde-fra 32 easy 2/2 2/2 2/2 0/1/0 FAILED: asked 2 options, 2 required +anleggsfeil @/ 23 very easy 2/2 1/2 - 0/0/- ok 4 options, 0 required +anleggsfeil @/melde-fra 29 very easy 2/2 2/2 2/2 0/1/0 FAILED: asked 2 options, 2 required +horingsinnspill @/ 23 very easy 1/2 0/2 - 0/0/- ok 4 options, 0 required +horingsinnspill @/bidra 31 easy 2/2 2/2 2/2 0/1/0 FAILED: asked 3 options, 3 required +hjelpe-til @/ 23 very easy 2/2 2/2 - 0/0/- ok 4 options, 0 required +hjelpe-til @/bidra 28 very easy 2/2 2/2 2/2 0/0/0 ok 3 options, 3 required +komite @/ 23 very easy 2/2 1/2 - 0/0/- ok 4 options, 0 required +komite @/bidra 26 very easy 2/2 2/2 2/2 0/0/0 ok 3 options, 3 required +dele-utstyr 23 very easy 2/2 2/2 2/2 0/0/0 ok 4 options, 4 required +utlegg 31 easy 1/1 1/1 1/1 0/1/0 FAILED: asked 1 options, 3 required diff --git a/runs/tomtervel-claude-2026-09-22/score-full.txt b/runs/tomtervel-claude-2026-09-22/score-full.txt new file mode 100644 index 0000000..d11dbe3 --- /dev/null +++ b/runs/tomtervel-claude-2026-09-22/score-full.txt @@ -0,0 +1,6 @@ +MISROUTE: glemte-a-betale@/: picked "Bli med og gjøre en innsats" (0.85), the need is met by ["Meld deg inn eller endre opplysningene dine"] +MISROUTE: bru@/melde-fra: picked "Få en farlig trafikkplass tatt opp med kommunen" (0.85), the need is met by ["Få ødelagt utstyr fikset før noen skader seg"] +MISROUTE: togtider@/: picked "Meld deg inn eller endre opplysningene dine" (0.95), the need is met by ["Bli med og gjøre en innsats"] +MISROUTE: vafler@/bidra: picked "Få en plass i komiteen som passer deg" (0.95), the need is met by ["Bli med på dugnad eller arrangement"] +MISROUTE: planlegger@/bidra: picked "Få din mening med i velets høringssvar" (0.95), the need is met by ["Få en plass i komiteen som passer deg"] +wording: 25/30 routed right (83%) diff --git a/runs/tomtervel-claude-2026-09-22/score-skim.txt b/runs/tomtervel-claude-2026-09-22/score-skim.txt new file mode 100644 index 0000000..0ea4acc --- /dev/null +++ b/runs/tomtervel-claude-2026-09-22/score-skim.txt @@ -0,0 +1,9 @@ +MISROUTE: nyinnflyttet@/: picked "Bli med og gjøre en innsats" (0.85), the need is met by ["Meld deg inn eller endre opplysningene dine"] +MISROUTE: busslomme@/: picked "Bli med og gjøre en innsats" (0.85), the need is met by ["Meld fra om noe i nabolaget"] +MISROUTE: huske@/melde-fra: picked "Få en farlig trafikkplass tatt opp med kommunen" (0.85), the need is met by ["Få ødelagt utstyr fikset før noen skader seg"] +MISROUTE: bru@/melde-fra: picked "Få en farlig trafikkplass tatt opp med kommunen" (0.85), the need is met by ["Få ødelagt utstyr fikset før noen skader seg"] +MISROUTE: blokker@/: picked "Meld fra om noe i nabolaget" (0.95), the need is met by ["Bli med og gjøre en innsats"] +MISROUTE: togtider@/: picked "Meld fra om noe i nabolaget" (0.95), the need is met by ["Bli med og gjøre en innsats"] +MISROUTE: vafler@/bidra: picked "Få din mening med i velets høringssvar" (0.95), the need is met by ["Bli med på dugnad eller arrangement"] +MISROUTE: planlegger@/bidra: picked "Få din mening med i velets høringssvar" (0.95), the need is met by ["Få en plass i komiteen som passer deg"] +wording: 22/30 routed right (73%) diff --git a/runs/tomtervel-claude-2026-09-22/site.yaml b/runs/tomtervel-claude-2026-09-22/site.yaml new file mode 100644 index 0000000..9bdc376 --- /dev/null +++ b/runs/tomtervel-claude-2026-09-22/site.yaml @@ -0,0 +1,2 @@ +lang: nb +title: Tomter Vel diff --git a/runs/tomtervel-claude-2026-09-22/tasks-full.jsonl b/runs/tomtervel-claude-2026-09-22/tasks-full.jsonl new file mode 100644 index 0000000..012e96e --- /dev/null +++ b/runs/tomtervel-claude-2026-09-22/tasks-full.jsonl @@ -0,0 +1,30 @@ +{"id":"nyinnflyttet@/","persona":"nyinnflyttet","need":"bli-medlem","page":"/","state":{"body":"Vi flyttet til Tomter i mars og har hørt at det finnes et vel. Hvordan blir vi med, og hva koster det?"},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva vil du gjøre?\". Which alternative do they choose?","criteria":{"Bli med og gjøre en innsats":"Meld deg til en komité, still opp på dugnad, eller si din mening om en sak kommunen har på høring.","Lån eller lån ut utstyr til en nabo":"Har du noe naboene kan få låne, eller trenger du å låne noe selv? Legg ut en melding så andre i Tomter ser den.","Meld deg inn eller endre opplysningene dine":"Meld deg inn i velet, eller gi oss beskjed om at noe har endret seg.","Meld fra om noe i nabolaget":"Har du sett noe farlig i trafikken, eller noe som er ødelagt på lekeplassen eller stien? Fortell oss om det."}}},"expect":["Meld deg inn eller endre opplysningene dine"]} +{"id":"nyinnflyttet@/medlem","persona":"nyinnflyttet","need":"bli-medlem","page":"/medlem","state":{"body":"Vi flyttet til Tomter i mars og har hørt at det finnes et vel. Hvordan blir vi med, og hva koster det?"},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Vil du bli medlem, eller endre noe ved medlemskapet ditt?\". Which alternative do they choose?","criteria":{"Bli med i velet":"157 husstander er med allerede. Fyll ut skjemaet, så sender kasserer deg giroen.","Hold opplysningene dine oppdatert":"Flyttet, byttet e-post, eller vil melde deg ut? Si fra, så retter kasserer det opp."}}},"expect":["Bli med i velet"]} +{"id":"glemte-a-betale@/","persona":"glemte-a-betale","need":"bli-medlem","page":"/","state":{"body":"Jeg har vært medlem før men fikk ikke betalt i fjor. Kan jeg bare vippse, og til hvem?"},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva vil du gjøre?\". Which alternative do they choose?","criteria":{"Bli med og gjøre en innsats":"Meld deg til en komité, still opp på dugnad, eller si din mening om en sak kommunen har på høring.","Lån eller lån ut utstyr til en nabo":"Har du noe naboene kan få låne, eller trenger du å låne noe selv? Legg ut en melding så andre i Tomter ser den.","Meld deg inn eller endre opplysningene dine":"Meld deg inn i velet, eller gi oss beskjed om at noe har endret seg.","Meld fra om noe i nabolaget":"Har du sett noe farlig i trafikken, eller noe som er ødelagt på lekeplassen eller stien? Fortell oss om det."}}},"expect":["Meld deg inn eller endre opplysningene dine"]} +{"id":"glemte-a-betale@/medlem","persona":"glemte-a-betale","need":"bli-medlem","page":"/medlem","state":{"body":"Jeg har vært medlem før men fikk ikke betalt i fjor. Kan jeg bare vippse, og til hvem?"},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Vil du bli medlem, eller endre noe ved medlemskapet ditt?\". Which alternative do they choose?","criteria":{"Bli med i velet":"157 husstander er med allerede. Fyll ut skjemaet, så sender kasserer deg giroen.","Hold opplysningene dine oppdatert":"Flyttet, byttet e-post, eller vil melde deg ut? Si fra, så retter kasserer det opp."}}},"expect":["Bli med i velet"]} +{"id":"ny-epost@/","persona":"ny-epost","need":"endre-medlemskap","page":"/","state":{"body":"Vi har byttet e-postadresse og får ikke lenger noe fra dere."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva vil du gjøre?\". Which alternative do they choose?","criteria":{"Bli med og gjøre en innsats":"Meld deg til en komité, still opp på dugnad, eller si din mening om en sak kommunen har på høring.","Lån eller lån ut utstyr til en nabo":"Har du noe naboene kan få låne, eller trenger du å låne noe selv? Legg ut en melding så andre i Tomter ser den.","Meld deg inn eller endre opplysningene dine":"Meld deg inn i velet, eller gi oss beskjed om at noe har endret seg.","Meld fra om noe i nabolaget":"Har du sett noe farlig i trafikken, eller noe som er ødelagt på lekeplassen eller stien? Fortell oss om det."}}},"expect":["Meld deg inn eller endre opplysningene dine"]} +{"id":"ny-epost@/medlem","persona":"ny-epost","need":"endre-medlemskap","page":"/medlem","state":{"body":"Vi har byttet e-postadresse og får ikke lenger noe fra dere."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Vil du bli medlem, eller endre noe ved medlemskapet ditt?\". Which alternative do they choose?","criteria":{"Bli med i velet":"157 husstander er med allerede. Fyll ut skjemaet, så sender kasserer deg giroen.","Hold opplysningene dine oppdatert":"Flyttet, byttet e-post, eller vil melde deg ut? Si fra, så retter kasserer det opp."}}},"expect":["Hold opplysningene dine oppdatert"]} +{"id":"flytter@/","persona":"flytter","need":"endre-medlemskap","page":"/","state":{"body":"Vi selger huset og flytter til Ski i august, så vi må ut av medlemslista."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva vil du gjøre?\". Which alternative do they choose?","criteria":{"Bli med og gjøre en innsats":"Meld deg til en komité, still opp på dugnad, eller si din mening om en sak kommunen har på høring.","Lån eller lån ut utstyr til en nabo":"Har du noe naboene kan få låne, eller trenger du å låne noe selv? Legg ut en melding så andre i Tomter ser den.","Meld deg inn eller endre opplysningene dine":"Meld deg inn i velet, eller gi oss beskjed om at noe har endret seg.","Meld fra om noe i nabolaget":"Har du sett noe farlig i trafikken, eller noe som er ødelagt på lekeplassen eller stien? Fortell oss om det."}}},"expect":["Meld deg inn eller endre opplysningene dine"]} +{"id":"flytter@/medlem","persona":"flytter","need":"endre-medlemskap","page":"/medlem","state":{"body":"Vi selger huset og flytter til Ski i august, så vi må ut av medlemslista."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Vil du bli medlem, eller endre noe ved medlemskapet ditt?\". Which alternative do they choose?","criteria":{"Bli med i velet":"157 husstander er med allerede. Fyll ut skjemaet, så sender kasserer deg giroen.","Hold opplysningene dine oppdatert":"Flyttet, byttet e-post, eller vil melde deg ut? Si fra, så retter kasserer det opp."}}},"expect":["Hold opplysningene dine oppdatert"]} +{"id":"skolevei@/","persona":"skolevei","need":"trafikkfare","page":"/","state":{"body":"Bilene kjører altfor fort i svingen ved skolen om morgenen, og det er ikke fortau der ungene går."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva vil du gjøre?\". Which alternative do they choose?","criteria":{"Bli med og gjøre en innsats":"Meld deg til en komité, still opp på dugnad, eller si din mening om en sak kommunen har på høring.","Lån eller lån ut utstyr til en nabo":"Har du noe naboene kan få låne, eller trenger du å låne noe selv? Legg ut en melding så andre i Tomter ser den.","Meld deg inn eller endre opplysningene dine":"Meld deg inn i velet, eller gi oss beskjed om at noe har endret seg.","Meld fra om noe i nabolaget":"Har du sett noe farlig i trafikken, eller noe som er ødelagt på lekeplassen eller stien? Fortell oss om det."}}},"expect":["Meld fra om noe i nabolaget"]} +{"id":"skolevei@/melde-fra","persona":"skolevei","need":"trafikkfare","page":"/melde-fra","state":{"body":"Bilene kjører altfor fort i svingen ved skolen om morgenen, og det er ikke fortau der ungene går."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva har du sett i nabolaget som ikke er som det skal?\". Which alternative do they choose?","criteria":{"Få en farlig trafikkplass tatt opp med kommunen":"Sett en farlig plass i trafikken, for eksempel dårlig sikt eller for høy fart? Vi tar det videre til kommunen eller veieier.","Få ødelagt utstyr fikset før noen skader seg":"Er noe på lekeplassen eller langs stien ødelagt eller farlig? Lekeplasskomiteen rykker ut og ser på det."}}},"expect":["Få en farlig trafikkplass tatt opp med kommunen"]} +{"id":"busslomme@/","persona":"busslomme","need":"trafikkfare","page":"/","state":{"body":"Det er umulig å se om det kommer noen når man skal ut fra busslomma ved butikken, hekken har blitt kjempehøy."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva vil du gjøre?\". Which alternative do they choose?","criteria":{"Bli med og gjøre en innsats":"Meld deg til en komité, still opp på dugnad, eller si din mening om en sak kommunen har på høring.","Lån eller lån ut utstyr til en nabo":"Har du noe naboene kan få låne, eller trenger du å låne noe selv? Legg ut en melding så andre i Tomter ser den.","Meld deg inn eller endre opplysningene dine":"Meld deg inn i velet, eller gi oss beskjed om at noe har endret seg.","Meld fra om noe i nabolaget":"Har du sett noe farlig i trafikken, eller noe som er ødelagt på lekeplassen eller stien? Fortell oss om det."}}},"expect":["Meld fra om noe i nabolaget"]} +{"id":"busslomme@/melde-fra","persona":"busslomme","need":"trafikkfare","page":"/melde-fra","state":{"body":"Det er umulig å se om det kommer noen når man skal ut fra busslomma ved butikken, hekken har blitt kjempehøy."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva har du sett i nabolaget som ikke er som det skal?\". Which alternative do they choose?","criteria":{"Få en farlig trafikkplass tatt opp med kommunen":"Sett en farlig plass i trafikken, for eksempel dårlig sikt eller for høy fart? Vi tar det videre til kommunen eller veieier.","Få ødelagt utstyr fikset før noen skader seg":"Er noe på lekeplassen eller langs stien ødelagt eller farlig? Lekeplasskomiteen rykker ut og ser på det."}}},"expect":["Få en farlig trafikkplass tatt opp med kommunen"]} +{"id":"huske@/","persona":"huske","need":"anleggsfeil","page":"/","state":{"body":"Huska på lekeplassen henger i én kjetting. Sønnen min dro i den i går og den holdt så vidt."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva vil du gjøre?\". Which alternative do they choose?","criteria":{"Bli med og gjøre en innsats":"Meld deg til en komité, still opp på dugnad, eller si din mening om en sak kommunen har på høring.","Lån eller lån ut utstyr til en nabo":"Har du noe naboene kan få låne, eller trenger du å låne noe selv? Legg ut en melding så andre i Tomter ser den.","Meld deg inn eller endre opplysningene dine":"Meld deg inn i velet, eller gi oss beskjed om at noe har endret seg.","Meld fra om noe i nabolaget":"Har du sett noe farlig i trafikken, eller noe som er ødelagt på lekeplassen eller stien? Fortell oss om det."}}},"expect":["Meld fra om noe i nabolaget"]} +{"id":"huske@/melde-fra","persona":"huske","need":"anleggsfeil","page":"/melde-fra","state":{"body":"Huska på lekeplassen henger i én kjetting. Sønnen min dro i den i går og den holdt så vidt."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva har du sett i nabolaget som ikke er som det skal?\". Which alternative do they choose?","criteria":{"Få en farlig trafikkplass tatt opp med kommunen":"Sett en farlig plass i trafikken, for eksempel dårlig sikt eller for høy fart? Vi tar det videre til kommunen eller veieier.","Få ødelagt utstyr fikset før noen skader seg":"Er noe på lekeplassen eller langs stien ødelagt eller farlig? Lekeplasskomiteen rykker ut og ser på det."}}},"expect":["Få ødelagt utstyr fikset før noen skader seg"]} +{"id":"bru@/","persona":"bru","need":"anleggsfeil","page":"/","state":{"body":"Planken på den lille brua på stien langs elva er råtten, jeg gikk nesten gjennom."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva vil du gjøre?\". Which alternative do they choose?","criteria":{"Bli med og gjøre en innsats":"Meld deg til en komité, still opp på dugnad, eller si din mening om en sak kommunen har på høring.","Lån eller lån ut utstyr til en nabo":"Har du noe naboene kan få låne, eller trenger du å låne noe selv? Legg ut en melding så andre i Tomter ser den.","Meld deg inn eller endre opplysningene dine":"Meld deg inn i velet, eller gi oss beskjed om at noe har endret seg.","Meld fra om noe i nabolaget":"Har du sett noe farlig i trafikken, eller noe som er ødelagt på lekeplassen eller stien? Fortell oss om det."}}},"expect":["Meld fra om noe i nabolaget"]} +{"id":"bru@/melde-fra","persona":"bru","need":"anleggsfeil","page":"/melde-fra","state":{"body":"Planken på den lille brua på stien langs elva er råtten, jeg gikk nesten gjennom."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva har du sett i nabolaget som ikke er som det skal?\". Which alternative do they choose?","criteria":{"Få en farlig trafikkplass tatt opp med kommunen":"Sett en farlig plass i trafikken, for eksempel dårlig sikt eller for høy fart? Vi tar det videre til kommunen eller veieier.","Få ødelagt utstyr fikset før noen skader seg":"Er noe på lekeplassen eller langs stien ødelagt eller farlig? Lekeplasskomiteen rykker ut og ser på det."}}},"expect":["Få ødelagt utstyr fikset før noen skader seg"]} +{"id":"blokker@/","persona":"blokker","need":"horingsinnspill","page":"/","state":{"body":"Kommunen skal bygge blokker på jordet bak stasjonen, og jeg synes det er alt for høyt. Kan velet si ifra?"},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva vil du gjøre?\". Which alternative do they choose?","criteria":{"Bli med og gjøre en innsats":"Meld deg til en komité, still opp på dugnad, eller si din mening om en sak kommunen har på høring.","Lån eller lån ut utstyr til en nabo":"Har du noe naboene kan få låne, eller trenger du å låne noe selv? Legg ut en melding så andre i Tomter ser den.","Meld deg inn eller endre opplysningene dine":"Meld deg inn i velet, eller gi oss beskjed om at noe har endret seg.","Meld fra om noe i nabolaget":"Har du sett noe farlig i trafikken, eller noe som er ødelagt på lekeplassen eller stien? Fortell oss om det."}}},"expect":["Bli med og gjøre en innsats"]} +{"id":"blokker@/bidra","persona":"blokker","need":"horingsinnspill","page":"/bidra","state":{"body":"Kommunen skal bygge blokker på jordet bak stasjonen, og jeg synes det er alt for høyt. Kan velet si ifra?"},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Vil du hjelpe til eller si din mening?\". Which alternative do they choose?","criteria":{"Bli med på dugnad eller arrangement":"Vi trenger folk til dugnader og arrangementer gjennom året. Si fra hva du kan bidra med, så tar vi kontakt.","Få din mening med i velets høringssvar":"Har kommunen en sak på høring du mener noe om? Send oss innspillet ditt, så vurderer styret det til vårt svar.","Få en plass i komiteen som passer deg":"Vi har sju komiteer som trenger folk. Fortell hvilken du er interessert i, så tar styret kontakt."}}},"expect":["Få din mening med i velets høringssvar"]} +{"id":"togtider@/","persona":"togtider","need":"horingsinnspill","page":"/","state":{"body":"Ruter vil kutte det tidlige toget. Jeg pendler til Oslo hver dag og vil at velet skriver til dem om det."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva vil du gjøre?\". Which alternative do they choose?","criteria":{"Bli med og gjøre en innsats":"Meld deg til en komité, still opp på dugnad, eller si din mening om en sak kommunen har på høring.","Lån eller lån ut utstyr til en nabo":"Har du noe naboene kan få låne, eller trenger du å låne noe selv? Legg ut en melding så andre i Tomter ser den.","Meld deg inn eller endre opplysningene dine":"Meld deg inn i velet, eller gi oss beskjed om at noe har endret seg.","Meld fra om noe i nabolaget":"Har du sett noe farlig i trafikken, eller noe som er ødelagt på lekeplassen eller stien? Fortell oss om det."}}},"expect":["Bli med og gjøre en innsats"]} +{"id":"togtider@/bidra","persona":"togtider","need":"horingsinnspill","page":"/bidra","state":{"body":"Ruter vil kutte det tidlige toget. Jeg pendler til Oslo hver dag og vil at velet skriver til dem om det."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Vil du hjelpe til eller si din mening?\". Which alternative do they choose?","criteria":{"Bli med på dugnad eller arrangement":"Vi trenger folk til dugnader og arrangementer gjennom året. Si fra hva du kan bidra med, så tar vi kontakt.","Få din mening med i velets høringssvar":"Har kommunen en sak på høring du mener noe om? Send oss innspillet ditt, så vurderer styret det til vårt svar.","Få en plass i komiteen som passer deg":"Vi har sju komiteer som trenger folk. Fortell hvilken du er interessert i, så tar styret kontakt."}}},"expect":["Få din mening med i velets høringssvar"]} +{"id":"vafler@/","persona":"vafler","need":"hjelpe-til","page":"/","state":{"body":"Jeg kan steke vafler på 17. mai-frokosten hvis dere trenger folk."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva vil du gjøre?\". Which alternative do they choose?","criteria":{"Bli med og gjøre en innsats":"Meld deg til en komité, still opp på dugnad, eller si din mening om en sak kommunen har på høring.","Lån eller lån ut utstyr til en nabo":"Har du noe naboene kan få låne, eller trenger du å låne noe selv? Legg ut en melding så andre i Tomter ser den.","Meld deg inn eller endre opplysningene dine":"Meld deg inn i velet, eller gi oss beskjed om at noe har endret seg.","Meld fra om noe i nabolaget":"Har du sett noe farlig i trafikken, eller noe som er ødelagt på lekeplassen eller stien? Fortell oss om det."}}},"expect":["Bli med og gjøre en innsats"]} +{"id":"vafler@/bidra","persona":"vafler","need":"hjelpe-til","page":"/bidra","state":{"body":"Jeg kan steke vafler på 17. mai-frokosten hvis dere trenger folk."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Vil du hjelpe til eller si din mening?\". Which alternative do they choose?","criteria":{"Bli med på dugnad eller arrangement":"Vi trenger folk til dugnader og arrangementer gjennom året. Si fra hva du kan bidra med, så tar vi kontakt.","Få din mening med i velets høringssvar":"Har kommunen en sak på høring du mener noe om? Send oss innspillet ditt, så vurderer styret det til vårt svar.","Få en plass i komiteen som passer deg":"Vi har sju komiteer som trenger folk. Fortell hvilken du er interessert i, så tar styret kontakt."}}},"expect":["Bli med på dugnad eller arrangement"]} +{"id":"motorsag@/","persona":"motorsag","need":"hjelpe-til","page":"/","state":{"body":"Har motorsag og ledig helg, kan ta trær langs elvestien hvis det er en dugnad."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva vil du gjøre?\". Which alternative do they choose?","criteria":{"Bli med og gjøre en innsats":"Meld deg til en komité, still opp på dugnad, eller si din mening om en sak kommunen har på høring.","Lån eller lån ut utstyr til en nabo":"Har du noe naboene kan få låne, eller trenger du å låne noe selv? Legg ut en melding så andre i Tomter ser den.","Meld deg inn eller endre opplysningene dine":"Meld deg inn i velet, eller gi oss beskjed om at noe har endret seg.","Meld fra om noe i nabolaget":"Har du sett noe farlig i trafikken, eller noe som er ødelagt på lekeplassen eller stien? Fortell oss om det."}}},"expect":["Bli med og gjøre en innsats"]} +{"id":"motorsag@/bidra","persona":"motorsag","need":"hjelpe-til","page":"/bidra","state":{"body":"Har motorsag og ledig helg, kan ta trær langs elvestien hvis det er en dugnad."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Vil du hjelpe til eller si din mening?\". Which alternative do they choose?","criteria":{"Bli med på dugnad eller arrangement":"Vi trenger folk til dugnader og arrangementer gjennom året. Si fra hva du kan bidra med, så tar vi kontakt.","Få din mening med i velets høringssvar":"Har kommunen en sak på høring du mener noe om? Send oss innspillet ditt, så vurderer styret det til vårt svar.","Få en plass i komiteen som passer deg":"Vi har sju komiteer som trenger folk. Fortell hvilken du er interessert i, så tar styret kontakt."}}},"expect":["Bli med på dugnad eller arrangement"]} +{"id":"pendler@/","persona":"pendler","need":"komite","page":"/","state":{"body":"Jeg pendler og er lei av at ingen snakker med Ruter. Jeg vil gjerne være med i gjengen som jobber med det."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva vil du gjøre?\". Which alternative do they choose?","criteria":{"Bli med og gjøre en innsats":"Meld deg til en komité, still opp på dugnad, eller si din mening om en sak kommunen har på høring.","Lån eller lån ut utstyr til en nabo":"Har du noe naboene kan få låne, eller trenger du å låne noe selv? Legg ut en melding så andre i Tomter ser den.","Meld deg inn eller endre opplysningene dine":"Meld deg inn i velet, eller gi oss beskjed om at noe har endret seg.","Meld fra om noe i nabolaget":"Har du sett noe farlig i trafikken, eller noe som er ødelagt på lekeplassen eller stien? Fortell oss om det."}}},"expect":["Bli med og gjøre en innsats"]} +{"id":"pendler@/bidra","persona":"pendler","need":"komite","page":"/bidra","state":{"body":"Jeg pendler og er lei av at ingen snakker med Ruter. Jeg vil gjerne være med i gjengen som jobber med det."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Vil du hjelpe til eller si din mening?\". Which alternative do they choose?","criteria":{"Bli med på dugnad eller arrangement":"Vi trenger folk til dugnader og arrangementer gjennom året. Si fra hva du kan bidra med, så tar vi kontakt.","Få din mening med i velets høringssvar":"Har kommunen en sak på høring du mener noe om? Send oss innspillet ditt, så vurderer styret det til vårt svar.","Få en plass i komiteen som passer deg":"Vi har sju komiteer som trenger folk. Fortell hvilken du er interessert i, så tar styret kontakt."}}},"expect":["Få en plass i komiteen som passer deg"]} +{"id":"planlegger@/","persona":"planlegger","need":"komite","page":"/","state":{"body":"Jeg er arealplanlegger av yrke og kunne bidratt når kommunen sender saker på høring."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva vil du gjøre?\". Which alternative do they choose?","criteria":{"Bli med og gjøre en innsats":"Meld deg til en komité, still opp på dugnad, eller si din mening om en sak kommunen har på høring.","Lån eller lån ut utstyr til en nabo":"Har du noe naboene kan få låne, eller trenger du å låne noe selv? Legg ut en melding så andre i Tomter ser den.","Meld deg inn eller endre opplysningene dine":"Meld deg inn i velet, eller gi oss beskjed om at noe har endret seg.","Meld fra om noe i nabolaget":"Har du sett noe farlig i trafikken, eller noe som er ødelagt på lekeplassen eller stien? Fortell oss om det."}}},"expect":["Bli med og gjøre en innsats"]} +{"id":"planlegger@/bidra","persona":"planlegger","need":"komite","page":"/bidra","state":{"body":"Jeg er arealplanlegger av yrke og kunne bidratt når kommunen sender saker på høring."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Vil du hjelpe til eller si din mening?\". Which alternative do they choose?","criteria":{"Bli med på dugnad eller arrangement":"Vi trenger folk til dugnader og arrangementer gjennom året. Si fra hva du kan bidra med, så tar vi kontakt.","Få din mening med i velets høringssvar":"Har kommunen en sak på høring du mener noe om? Send oss innspillet ditt, så vurderer styret det til vårt svar.","Få en plass i komiteen som passer deg":"Vi har sju komiteer som trenger folk. Fortell hvilken du er interessert i, så tar styret kontakt."}}},"expect":["Få en plass i komiteen som passer deg"]} +{"id":"tilhenger@/","persona":"tilhenger","need":"dele-utstyr","page":"/","state":{"body":"Jeg har en tilhenger som står ubrukt mesteparten av året, naboer kan gjerne låne den for en hundrelapp."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva vil du gjøre?\". Which alternative do they choose?","criteria":{"Bli med og gjøre en innsats":"Meld deg til en komité, still opp på dugnad, eller si din mening om en sak kommunen har på høring.","Lån eller lån ut utstyr til en nabo":"Har du noe naboene kan få låne, eller trenger du å låne noe selv? Legg ut en melding så andre i Tomter ser den.","Meld deg inn eller endre opplysningene dine":"Meld deg inn i velet, eller gi oss beskjed om at noe har endret seg.","Meld fra om noe i nabolaget":"Har du sett noe farlig i trafikken, eller noe som er ødelagt på lekeplassen eller stien? Fortell oss om det."}}},"expect":["Lån eller lån ut utstyr til en nabo"]} +{"id":"stige@/","persona":"stige","need":"dele-utstyr","page":"/","state":{"body":"Trenger en lang stige en dag i helga for å rense takrenna, er det noen i nærheten som har?"},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva vil du gjøre?\". Which alternative do they choose?","criteria":{"Bli med og gjøre en innsats":"Meld deg til en komité, still opp på dugnad, eller si din mening om en sak kommunen har på høring.","Lån eller lån ut utstyr til en nabo":"Har du noe naboene kan få låne, eller trenger du å låne noe selv? Legg ut en melding så andre i Tomter ser den.","Meld deg inn eller endre opplysningene dine":"Meld deg inn i velet, eller gi oss beskjed om at noe har endret seg.","Meld fra om noe i nabolaget":"Har du sett noe farlig i trafikken, eller noe som er ødelagt på lekeplassen eller stien? Fortell oss om det."}}},"expect":["Lån eller lån ut utstyr til en nabo"]} diff --git a/runs/tomtervel-claude-2026-09-22/tasks-skim.jsonl b/runs/tomtervel-claude-2026-09-22/tasks-skim.jsonl new file mode 100644 index 0000000..2cf0705 --- /dev/null +++ b/runs/tomtervel-claude-2026-09-22/tasks-skim.jsonl @@ -0,0 +1,30 @@ +{"id":"nyinnflyttet@/","persona":"nyinnflyttet","need":"bli-medlem","page":"/","state":{"body":"Vi flyttet til Tomter i mars og har hørt at det finnes et vel. Hvordan blir vi med, og hva koster det?"},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva vil du gjøre?\". Which alternative do they choose?","criteria":{"Bli med og gjøre en innsats":"Bli med og gjøre en innsats","Lån eller lån ut utstyr til en nabo":"Lån eller lån ut utstyr til en nabo","Meld deg inn eller endre opplysningene dine":"Meld deg inn eller endre opplysningene dine","Meld fra om noe i nabolaget":"Meld fra om noe i nabolaget"}}},"expect":["Meld deg inn eller endre opplysningene dine"]} +{"id":"nyinnflyttet@/medlem","persona":"nyinnflyttet","need":"bli-medlem","page":"/medlem","state":{"body":"Vi flyttet til Tomter i mars og har hørt at det finnes et vel. Hvordan blir vi med, og hva koster det?"},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Vil du bli medlem, eller endre noe ved medlemskapet ditt?\". Which alternative do they choose?","criteria":{"Bli med i velet":"Bli med i velet","Hold opplysningene dine oppdatert":"Hold opplysningene dine oppdatert"}}},"expect":["Bli med i velet"]} +{"id":"glemte-a-betale@/","persona":"glemte-a-betale","need":"bli-medlem","page":"/","state":{"body":"Jeg har vært medlem før men fikk ikke betalt i fjor. Kan jeg bare vippse, og til hvem?"},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva vil du gjøre?\". Which alternative do they choose?","criteria":{"Bli med og gjøre en innsats":"Bli med og gjøre en innsats","Lån eller lån ut utstyr til en nabo":"Lån eller lån ut utstyr til en nabo","Meld deg inn eller endre opplysningene dine":"Meld deg inn eller endre opplysningene dine","Meld fra om noe i nabolaget":"Meld fra om noe i nabolaget"}}},"expect":["Meld deg inn eller endre opplysningene dine"]} +{"id":"glemte-a-betale@/medlem","persona":"glemte-a-betale","need":"bli-medlem","page":"/medlem","state":{"body":"Jeg har vært medlem før men fikk ikke betalt i fjor. Kan jeg bare vippse, og til hvem?"},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Vil du bli medlem, eller endre noe ved medlemskapet ditt?\". Which alternative do they choose?","criteria":{"Bli med i velet":"Bli med i velet","Hold opplysningene dine oppdatert":"Hold opplysningene dine oppdatert"}}},"expect":["Bli med i velet"]} +{"id":"ny-epost@/","persona":"ny-epost","need":"endre-medlemskap","page":"/","state":{"body":"Vi har byttet e-postadresse og får ikke lenger noe fra dere."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva vil du gjøre?\". Which alternative do they choose?","criteria":{"Bli med og gjøre en innsats":"Bli med og gjøre en innsats","Lån eller lån ut utstyr til en nabo":"Lån eller lån ut utstyr til en nabo","Meld deg inn eller endre opplysningene dine":"Meld deg inn eller endre opplysningene dine","Meld fra om noe i nabolaget":"Meld fra om noe i nabolaget"}}},"expect":["Meld deg inn eller endre opplysningene dine"]} +{"id":"ny-epost@/medlem","persona":"ny-epost","need":"endre-medlemskap","page":"/medlem","state":{"body":"Vi har byttet e-postadresse og får ikke lenger noe fra dere."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Vil du bli medlem, eller endre noe ved medlemskapet ditt?\". Which alternative do they choose?","criteria":{"Bli med i velet":"Bli med i velet","Hold opplysningene dine oppdatert":"Hold opplysningene dine oppdatert"}}},"expect":["Hold opplysningene dine oppdatert"]} +{"id":"flytter@/","persona":"flytter","need":"endre-medlemskap","page":"/","state":{"body":"Vi selger huset og flytter til Ski i august, så vi må ut av medlemslista."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva vil du gjøre?\". Which alternative do they choose?","criteria":{"Bli med og gjøre en innsats":"Bli med og gjøre en innsats","Lån eller lån ut utstyr til en nabo":"Lån eller lån ut utstyr til en nabo","Meld deg inn eller endre opplysningene dine":"Meld deg inn eller endre opplysningene dine","Meld fra om noe i nabolaget":"Meld fra om noe i nabolaget"}}},"expect":["Meld deg inn eller endre opplysningene dine"]} +{"id":"flytter@/medlem","persona":"flytter","need":"endre-medlemskap","page":"/medlem","state":{"body":"Vi selger huset og flytter til Ski i august, så vi må ut av medlemslista."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Vil du bli medlem, eller endre noe ved medlemskapet ditt?\". Which alternative do they choose?","criteria":{"Bli med i velet":"Bli med i velet","Hold opplysningene dine oppdatert":"Hold opplysningene dine oppdatert"}}},"expect":["Hold opplysningene dine oppdatert"]} +{"id":"skolevei@/","persona":"skolevei","need":"trafikkfare","page":"/","state":{"body":"Bilene kjører altfor fort i svingen ved skolen om morgenen, og det er ikke fortau der ungene går."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva vil du gjøre?\". Which alternative do they choose?","criteria":{"Bli med og gjøre en innsats":"Bli med og gjøre en innsats","Lån eller lån ut utstyr til en nabo":"Lån eller lån ut utstyr til en nabo","Meld deg inn eller endre opplysningene dine":"Meld deg inn eller endre opplysningene dine","Meld fra om noe i nabolaget":"Meld fra om noe i nabolaget"}}},"expect":["Meld fra om noe i nabolaget"]} +{"id":"skolevei@/melde-fra","persona":"skolevei","need":"trafikkfare","page":"/melde-fra","state":{"body":"Bilene kjører altfor fort i svingen ved skolen om morgenen, og det er ikke fortau der ungene går."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva har du sett i nabolaget som ikke er som det skal?\". Which alternative do they choose?","criteria":{"Få en farlig trafikkplass tatt opp med kommunen":"Få en farlig trafikkplass tatt opp med kommunen","Få ødelagt utstyr fikset før noen skader seg":"Få ødelagt utstyr fikset før noen skader seg"}}},"expect":["Få en farlig trafikkplass tatt opp med kommunen"]} +{"id":"busslomme@/","persona":"busslomme","need":"trafikkfare","page":"/","state":{"body":"Det er umulig å se om det kommer noen når man skal ut fra busslomma ved butikken, hekken har blitt kjempehøy."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva vil du gjøre?\". Which alternative do they choose?","criteria":{"Bli med og gjøre en innsats":"Bli med og gjøre en innsats","Lån eller lån ut utstyr til en nabo":"Lån eller lån ut utstyr til en nabo","Meld deg inn eller endre opplysningene dine":"Meld deg inn eller endre opplysningene dine","Meld fra om noe i nabolaget":"Meld fra om noe i nabolaget"}}},"expect":["Meld fra om noe i nabolaget"]} +{"id":"busslomme@/melde-fra","persona":"busslomme","need":"trafikkfare","page":"/melde-fra","state":{"body":"Det er umulig å se om det kommer noen når man skal ut fra busslomma ved butikken, hekken har blitt kjempehøy."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva har du sett i nabolaget som ikke er som det skal?\". Which alternative do they choose?","criteria":{"Få en farlig trafikkplass tatt opp med kommunen":"Få en farlig trafikkplass tatt opp med kommunen","Få ødelagt utstyr fikset før noen skader seg":"Få ødelagt utstyr fikset før noen skader seg"}}},"expect":["Få en farlig trafikkplass tatt opp med kommunen"]} +{"id":"huske@/","persona":"huske","need":"anleggsfeil","page":"/","state":{"body":"Huska på lekeplassen henger i én kjetting. Sønnen min dro i den i går og den holdt så vidt."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva vil du gjøre?\". Which alternative do they choose?","criteria":{"Bli med og gjøre en innsats":"Bli med og gjøre en innsats","Lån eller lån ut utstyr til en nabo":"Lån eller lån ut utstyr til en nabo","Meld deg inn eller endre opplysningene dine":"Meld deg inn eller endre opplysningene dine","Meld fra om noe i nabolaget":"Meld fra om noe i nabolaget"}}},"expect":["Meld fra om noe i nabolaget"]} +{"id":"huske@/melde-fra","persona":"huske","need":"anleggsfeil","page":"/melde-fra","state":{"body":"Huska på lekeplassen henger i én kjetting. Sønnen min dro i den i går og den holdt så vidt."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva har du sett i nabolaget som ikke er som det skal?\". Which alternative do they choose?","criteria":{"Få en farlig trafikkplass tatt opp med kommunen":"Få en farlig trafikkplass tatt opp med kommunen","Få ødelagt utstyr fikset før noen skader seg":"Få ødelagt utstyr fikset før noen skader seg"}}},"expect":["Få ødelagt utstyr fikset før noen skader seg"]} +{"id":"bru@/","persona":"bru","need":"anleggsfeil","page":"/","state":{"body":"Planken på den lille brua på stien langs elva er råtten, jeg gikk nesten gjennom."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva vil du gjøre?\". Which alternative do they choose?","criteria":{"Bli med og gjøre en innsats":"Bli med og gjøre en innsats","Lån eller lån ut utstyr til en nabo":"Lån eller lån ut utstyr til en nabo","Meld deg inn eller endre opplysningene dine":"Meld deg inn eller endre opplysningene dine","Meld fra om noe i nabolaget":"Meld fra om noe i nabolaget"}}},"expect":["Meld fra om noe i nabolaget"]} +{"id":"bru@/melde-fra","persona":"bru","need":"anleggsfeil","page":"/melde-fra","state":{"body":"Planken på den lille brua på stien langs elva er råtten, jeg gikk nesten gjennom."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva har du sett i nabolaget som ikke er som det skal?\". Which alternative do they choose?","criteria":{"Få en farlig trafikkplass tatt opp med kommunen":"Få en farlig trafikkplass tatt opp med kommunen","Få ødelagt utstyr fikset før noen skader seg":"Få ødelagt utstyr fikset før noen skader seg"}}},"expect":["Få ødelagt utstyr fikset før noen skader seg"]} +{"id":"blokker@/","persona":"blokker","need":"horingsinnspill","page":"/","state":{"body":"Kommunen skal bygge blokker på jordet bak stasjonen, og jeg synes det er alt for høyt. Kan velet si ifra?"},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva vil du gjøre?\". Which alternative do they choose?","criteria":{"Bli med og gjøre en innsats":"Bli med og gjøre en innsats","Lån eller lån ut utstyr til en nabo":"Lån eller lån ut utstyr til en nabo","Meld deg inn eller endre opplysningene dine":"Meld deg inn eller endre opplysningene dine","Meld fra om noe i nabolaget":"Meld fra om noe i nabolaget"}}},"expect":["Bli med og gjøre en innsats"]} +{"id":"blokker@/bidra","persona":"blokker","need":"horingsinnspill","page":"/bidra","state":{"body":"Kommunen skal bygge blokker på jordet bak stasjonen, og jeg synes det er alt for høyt. Kan velet si ifra?"},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Vil du hjelpe til eller si din mening?\". Which alternative do they choose?","criteria":{"Bli med på dugnad eller arrangement":"Bli med på dugnad eller arrangement","Få din mening med i velets høringssvar":"Få din mening med i velets høringssvar","Få en plass i komiteen som passer deg":"Få en plass i komiteen som passer deg"}}},"expect":["Få din mening med i velets høringssvar"]} +{"id":"togtider@/","persona":"togtider","need":"horingsinnspill","page":"/","state":{"body":"Ruter vil kutte det tidlige toget. Jeg pendler til Oslo hver dag og vil at velet skriver til dem om det."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva vil du gjøre?\". Which alternative do they choose?","criteria":{"Bli med og gjøre en innsats":"Bli med og gjøre en innsats","Lån eller lån ut utstyr til en nabo":"Lån eller lån ut utstyr til en nabo","Meld deg inn eller endre opplysningene dine":"Meld deg inn eller endre opplysningene dine","Meld fra om noe i nabolaget":"Meld fra om noe i nabolaget"}}},"expect":["Bli med og gjøre en innsats"]} +{"id":"togtider@/bidra","persona":"togtider","need":"horingsinnspill","page":"/bidra","state":{"body":"Ruter vil kutte det tidlige toget. Jeg pendler til Oslo hver dag og vil at velet skriver til dem om det."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Vil du hjelpe til eller si din mening?\". Which alternative do they choose?","criteria":{"Bli med på dugnad eller arrangement":"Bli med på dugnad eller arrangement","Få din mening med i velets høringssvar":"Få din mening med i velets høringssvar","Få en plass i komiteen som passer deg":"Få en plass i komiteen som passer deg"}}},"expect":["Få din mening med i velets høringssvar"]} +{"id":"vafler@/","persona":"vafler","need":"hjelpe-til","page":"/","state":{"body":"Jeg kan steke vafler på 17. mai-frokosten hvis dere trenger folk."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva vil du gjøre?\". Which alternative do they choose?","criteria":{"Bli med og gjøre en innsats":"Bli med og gjøre en innsats","Lån eller lån ut utstyr til en nabo":"Lån eller lån ut utstyr til en nabo","Meld deg inn eller endre opplysningene dine":"Meld deg inn eller endre opplysningene dine","Meld fra om noe i nabolaget":"Meld fra om noe i nabolaget"}}},"expect":["Bli med og gjøre en innsats"]} +{"id":"vafler@/bidra","persona":"vafler","need":"hjelpe-til","page":"/bidra","state":{"body":"Jeg kan steke vafler på 17. mai-frokosten hvis dere trenger folk."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Vil du hjelpe til eller si din mening?\". Which alternative do they choose?","criteria":{"Bli med på dugnad eller arrangement":"Bli med på dugnad eller arrangement","Få din mening med i velets høringssvar":"Få din mening med i velets høringssvar","Få en plass i komiteen som passer deg":"Få en plass i komiteen som passer deg"}}},"expect":["Bli med på dugnad eller arrangement"]} +{"id":"motorsag@/","persona":"motorsag","need":"hjelpe-til","page":"/","state":{"body":"Har motorsag og ledig helg, kan ta trær langs elvestien hvis det er en dugnad."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva vil du gjøre?\". Which alternative do they choose?","criteria":{"Bli med og gjøre en innsats":"Bli med og gjøre en innsats","Lån eller lån ut utstyr til en nabo":"Lån eller lån ut utstyr til en nabo","Meld deg inn eller endre opplysningene dine":"Meld deg inn eller endre opplysningene dine","Meld fra om noe i nabolaget":"Meld fra om noe i nabolaget"}}},"expect":["Bli med og gjøre en innsats"]} +{"id":"motorsag@/bidra","persona":"motorsag","need":"hjelpe-til","page":"/bidra","state":{"body":"Har motorsag og ledig helg, kan ta trær langs elvestien hvis det er en dugnad."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Vil du hjelpe til eller si din mening?\". Which alternative do they choose?","criteria":{"Bli med på dugnad eller arrangement":"Bli med på dugnad eller arrangement","Få din mening med i velets høringssvar":"Få din mening med i velets høringssvar","Få en plass i komiteen som passer deg":"Få en plass i komiteen som passer deg"}}},"expect":["Bli med på dugnad eller arrangement"]} +{"id":"pendler@/","persona":"pendler","need":"komite","page":"/","state":{"body":"Jeg pendler og er lei av at ingen snakker med Ruter. Jeg vil gjerne være med i gjengen som jobber med det."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva vil du gjøre?\". Which alternative do they choose?","criteria":{"Bli med og gjøre en innsats":"Bli med og gjøre en innsats","Lån eller lån ut utstyr til en nabo":"Lån eller lån ut utstyr til en nabo","Meld deg inn eller endre opplysningene dine":"Meld deg inn eller endre opplysningene dine","Meld fra om noe i nabolaget":"Meld fra om noe i nabolaget"}}},"expect":["Bli med og gjøre en innsats"]} +{"id":"pendler@/bidra","persona":"pendler","need":"komite","page":"/bidra","state":{"body":"Jeg pendler og er lei av at ingen snakker med Ruter. Jeg vil gjerne være med i gjengen som jobber med det."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Vil du hjelpe til eller si din mening?\". Which alternative do they choose?","criteria":{"Bli med på dugnad eller arrangement":"Bli med på dugnad eller arrangement","Få din mening med i velets høringssvar":"Få din mening med i velets høringssvar","Få en plass i komiteen som passer deg":"Få en plass i komiteen som passer deg"}}},"expect":["Få en plass i komiteen som passer deg"]} +{"id":"planlegger@/","persona":"planlegger","need":"komite","page":"/","state":{"body":"Jeg er arealplanlegger av yrke og kunne bidratt når kommunen sender saker på høring."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva vil du gjøre?\". Which alternative do they choose?","criteria":{"Bli med og gjøre en innsats":"Bli med og gjøre en innsats","Lån eller lån ut utstyr til en nabo":"Lån eller lån ut utstyr til en nabo","Meld deg inn eller endre opplysningene dine":"Meld deg inn eller endre opplysningene dine","Meld fra om noe i nabolaget":"Meld fra om noe i nabolaget"}}},"expect":["Bli med og gjøre en innsats"]} +{"id":"planlegger@/bidra","persona":"planlegger","need":"komite","page":"/bidra","state":{"body":"Jeg er arealplanlegger av yrke og kunne bidratt når kommunen sender saker på høring."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Vil du hjelpe til eller si din mening?\". Which alternative do they choose?","criteria":{"Bli med på dugnad eller arrangement":"Bli med på dugnad eller arrangement","Få din mening med i velets høringssvar":"Få din mening med i velets høringssvar","Få en plass i komiteen som passer deg":"Få en plass i komiteen som passer deg"}}},"expect":["Få en plass i komiteen som passer deg"]} +{"id":"tilhenger@/","persona":"tilhenger","need":"dele-utstyr","page":"/","state":{"body":"Jeg har en tilhenger som står ubrukt mesteparten av året, naboer kan gjerne låne den for en hundrelapp."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva vil du gjøre?\". Which alternative do they choose?","criteria":{"Bli med og gjøre en innsats":"Bli med og gjøre en innsats","Lån eller lån ut utstyr til en nabo":"Lån eller lån ut utstyr til en nabo","Meld deg inn eller endre opplysningene dine":"Meld deg inn eller endre opplysningene dine","Meld fra om noe i nabolaget":"Meld fra om noe i nabolaget"}}},"expect":["Lån eller lån ut utstyr til en nabo"]} +{"id":"stige@/","persona":"stige","need":"dele-utstyr","page":"/","state":{"body":"Trenger en lang stige en dag i helga for å rense takrenna, er det noen i nærheten som har?"},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva vil du gjøre?\". Which alternative do they choose?","criteria":{"Bli med og gjøre en innsats":"Bli med og gjøre en innsats","Lån eller lån ut utstyr til en nabo":"Lån eller lån ut utstyr til en nabo","Meld deg inn eller endre opplysningene dine":"Meld deg inn eller endre opplysningene dine","Meld fra om noe i nabolaget":"Meld fra om noe i nabolaget"}}},"expect":["Lån eller lån ut utstyr til en nabo"]} diff --git a/runs/tomtervel-committees-2026-09-23/README.md b/runs/tomtervel-committees-2026-09-23/README.md new file mode 100644 index 0000000..38058b3 --- /dev/null +++ b/runs/tomtervel-committees-2026-09-23/README.md @@ -0,0 +1,50 @@ +# Tomter Vel, the plan updated: committees as groups, public lists, multi-choice + +`plans/tomtervel.yaml` after the 2026-09-23 revision, built with +Claude Sonnet writing every part of the card (322 s, 31 pages, +verifier green by construction). This is what vel.klingenbergbygg.no +serves from the afternoon of 2026-09-23. Visitor: qwen3:8b, one task +per call, shown each option as its whole card, answering by number. + +What changed in the plan: + +- The seven committees are the desk groups, named as the site names + them, and the committee application draws its options from that + list (`options_from: groups`), ticking any number. +- Traffic reports, playground faults and the noticeboard have a + public read-only list at `/status/`, linked from the page + after sending. Emails, phone numbers and the poster's name are + projected away. +- Volunteers tick several events; helpers tick several things they + can do. +- Hearing input sits on the front door: a resident with an opinion is + not a volunteer. +- Door lines (`who`) name concrete things: snow, shopping, a lift; a + dangerous bend, a broken swing. + +| Visitor could read | Card build, 2026-09-23 morning | This build | +|---|---|---| +| Headings and descriptions | 32 of 40 | 31 of 38 | +| Headings only | 29 of 40 | 30 of 38 | + +Two fewer tasks, since hearing input is now one step, not two. The +misses that remain: + +- "Bli medlem av Tomter Vel" against "Oppdater eller avslutt + medlemskapet": the lapsed member ("I was a member but did not pay + last year") reads themselves as an existing member. Both builds, + both modes. One form for join-and-pay would end it. +- The two hearing personas and the planner still cross between "Få + din mening med i høringssvaret" and "Bli med og gjør en innsats" on + the front door, in both directions. The planner who wants a + committee seat *because* of planning is genuinely between them. +- On the neighbours' page, "Få en nabo til å stille opp" and "Bli + spurt når en nabo trenger en hånd" are still crossed by one persona + each way. "Trenger du hjelp" and "Kan du hjelpe" would be plainer. + +An instrument note: the first scoring of this build read 24 of 38 +with cards, worse than headings alone, because the visitor model, +shown the page's description above the options, copied that +description as its "choice" six times. The answerer now numbers the +options and asks for the number; that is the 31 of 38 above, on the +same site and personas. The old answers are not kept. diff --git a/runs/tomtervel-committees-2026-09-23/aggregates.yaml b/runs/tomtervel-committees-2026-09-23/aggregates.yaml new file mode 100644 index 0000000..73a8eaa --- /dev/null +++ b/runs/tomtervel-committees-2026-09-23/aggregates.yaml @@ -0,0 +1,162 @@ +aggregates: +- bucket: anleggsfeil + initial: open + states: + open: + event: received + tatt_tak_i: + event: tatt_tak_i + utbedret: + event: utbedret + transitions: + open: + - tatt_tak_i + tatt_tak_i: + - utbedret +- bucket: frivillige + initial: open + states: + kontaktet: + event: kontaktet + open: + event: received + satt_opp: + event: satt_opp + takket_nei: + event: takket_nei + transitions: + kontaktet: + - satt_opp + - takket_nei + open: + - kontaktet + - takket_nei +- bucket: hjelpebehov + initial: open + states: + formidlet: + event: formidlet + ikke_lost: + event: ikke_lost + open: + event: received + ordnet: + event: ordnet + transitions: + formidlet: + - ordnet + - ikke_lost + open: + - formidlet + - ikke_lost +- bucket: hjelpere + initial: open + states: + open: + event: received + registrert: + event: registrert + trukket: + event: trukket + transitions: + open: + - registrert + - trukket +- bucket: husstander + initial: open + states: + betalt: + event: betalt + open: + event: received + utmeldt: + event: utmeldt + transitions: + open: + - betalt + - utmeldt +- bucket: innspill + initial: open + states: + ikke_tatt_med: + event: ikke_tatt_med + open: + event: received + tatt_med: + event: tatt_med + transitions: + open: + - tatt_med + - ikke_tatt_med +- bucket: komitesoknader + initial: open + states: + avslatt: + event: avslatt + open: + event: received + plassert: + event: plassert + transitions: + open: + - plassert + - avslatt +- bucket: medlemsendringer + initial: open + states: + open: + event: received + oppdatert: + event: oppdatert + transitions: + open: + - oppdatert +- bucket: oppslag + initial: open + states: + lagt_ut: + event: lagt_ut + open: + event: received + tatt_ned: + event: tatt_ned + transitions: + open: + - lagt_ut + - tatt_ned +- bucket: trafikkmeldinger + initial: open + states: + avvist: + event: avvist + open: + event: received + ordnet: + event: ordnet + tatt_opp: + event: tatt_opp + transitions: + open: + - tatt_opp + - avvist + tatt_opp: + - ordnet + - avvist +- bucket: utlegg + initial: open + states: + avvist: + event: avvist + godkjent: + event: godkjent + open: + event: received + utbetalt: + event: utbetalt + transitions: + godkjent: + - utbetalt + - avvist + open: + - godkjent + - avvist diff --git a/runs/tomtervel-committees-2026-09-23/answers-full.jsonl b/runs/tomtervel-committees-2026-09-23/answers-full.jsonl new file mode 100644 index 0000000..2d1e4ac --- /dev/null +++ b/runs/tomtervel-committees-2026-09-23/answers-full.jsonl @@ -0,0 +1,38 @@ +{"choice":"Bli medlem eller endre opplysningene dine","confidence":0.95,"id":"nyinnflyttet@/"} +{"choice":"Bli medlem av Tomter Vel","confidence":0.95,"id":"nyinnflyttet@/medlem"} +{"choice":"Bli medlem eller endre opplysningene dine","confidence":0.95,"id":"glemte-a-betale@/"} +{"choice":"Oppdater eller avslutt medlemskapet","confidence":0.95,"id":"glemte-a-betale@/medlem"} +{"choice":"Bli medlem eller endre opplysningene dine","confidence":0.95,"id":"ny-epost@/"} +{"choice":"Oppdater eller avslutt medlemskapet","confidence":0.95,"id":"ny-epost@/medlem"} +{"choice":"Bli medlem eller endre opplysningene dine","confidence":0.95,"id":"flytter@/"} +{"choice":"Oppdater eller avslutt medlemskapet","confidence":1.0,"id":"flytter@/medlem"} +{"choice":"Meld fra om noe som bør fikses","confidence":0.95,"id":"skolevei@/"} +{"choice":"Meld fra om en trafikkfare","confidence":0.95,"id":"skolevei@/melde-fra"} +{"choice":"Meld fra om noe som bør fikses","confidence":0.95,"id":"busslomme@/"} +{"choice":"Meld fra om noe ødelagt","confidence":0.95,"id":"busslomme@/melde-fra"} +{"choice":"Meld fra om noe som bør fikses","confidence":0.95,"id":"huske@/"} +{"choice":"Meld fra om noe ødelagt","confidence":0.95,"id":"huske@/melde-fra"} +{"choice":"Meld fra om noe som bør fikses","confidence":0.95,"id":"bru@/"} +{"choice":"Meld fra om noe ødelagt","confidence":0.95,"id":"bru@/melde-fra"} +{"choice":"Få din mening med i høringssvaret","confidence":0.95,"id":"blokker@/"} +{"choice":"Meld fra om noe som bør fikses","confidence":0.95,"id":"togtider@/"} +{"choice":"Bli med og gjør en innsats","confidence":0.95,"id":"vafler@/"} +{"choice":"Bli med på dugnad eller arrangement","confidence":0.95,"id":"vafler@/bidra"} +{"choice":"Meld fra om noe som bør fikses","confidence":0.95,"id":"motorsag@/"} +{"choice":"Bli med på dugnad eller arrangement","confidence":0.95,"id":"motorsag@/bidra"} +{"choice":"Få din mening med i høringssvaret","confidence":0.95,"id":"pendler@/"} +{"choice":"Sitt i en komité som betyr noe for deg","confidence":0.95,"id":"pendler@/bidra"} +{"choice":"Få din mening med i høringssvaret","confidence":0.95,"id":"planlegger@/"} +{"choice":"Sitt i en komité som betyr noe for deg","confidence":0.95,"id":"planlegger@/bidra"} +{"choice":"Få hjelp av naboer, eller gi en hånd selv","confidence":0.95,"id":"tilhenger@/"} +{"choice":"Lån ut eller lån av naboen","confidence":0.95,"id":"tilhenger@/naboer"} +{"choice":"Få hjelp av naboer, eller gi en hånd selv","confidence":0.95,"id":"stige@/"} +{"choice":"Lån ut eller lån av naboen","confidence":0.95,"id":"stige@/naboer"} +{"choice":"Få hjelp av naboer, eller gi en hånd selv","confidence":0.95,"id":"snomaking@/"} +{"choice":"Få en nabo til å stille opp","confidence":0.95,"id":"snomaking@/naboer"} +{"choice":"Få hjelp av naboer, eller gi en hånd selv","confidence":0.95,"id":"nyoperert@/"} +{"choice":"Få en nabo til å stille opp","confidence":0.95,"id":"nyoperert@/naboer"} +{"choice":"Få hjelp av naboer, eller gi en hånd selv","confidence":0.95,"id":"hjemmekontor@/"} +{"choice":"Få en nabo til å stille opp","confidence":0.95,"id":"hjemmekontor@/naboer"} +{"choice":"Få hjelp av naboer, eller gi en hånd selv","confidence":1.0,"id":"pensjonert-elektriker@/"} +{"choice":"Bli spurt når en nabo trenger en hånd","confidence":0.95,"id":"pensjonert-elektriker@/naboer"} diff --git a/runs/tomtervel-committees-2026-09-23/answers-skim.jsonl b/runs/tomtervel-committees-2026-09-23/answers-skim.jsonl new file mode 100644 index 0000000..7cf3011 --- /dev/null +++ b/runs/tomtervel-committees-2026-09-23/answers-skim.jsonl @@ -0,0 +1,38 @@ +{"choice":"Bli medlem eller endre opplysningene dine","confidence":0.85,"id":"nyinnflyttet@/"} +{"choice":"Bli medlem av Tomter Vel","confidence":0.95,"id":"nyinnflyttet@/medlem"} +{"choice":"Bli medlem eller endre opplysningene dine","confidence":0.95,"id":"glemte-a-betale@/"} +{"choice":"Oppdater eller avslutt medlemskapet","confidence":0.95,"id":"glemte-a-betale@/medlem"} +{"choice":"Bli medlem eller endre opplysningene dine","confidence":0.95,"id":"ny-epost@/"} +{"choice":"Oppdater eller avslutt medlemskapet","confidence":0.95,"id":"ny-epost@/medlem"} +{"choice":"Bli medlem eller endre opplysningene dine","confidence":0.95,"id":"flytter@/"} +{"choice":"Oppdater eller avslutt medlemskapet","confidence":0.95,"id":"flytter@/medlem"} +{"choice":"Meld fra om noe som bør fikses","confidence":0.95,"id":"skolevei@/"} +{"choice":"Meld fra om en trafikkfare","confidence":0.95,"id":"skolevei@/melde-fra"} +{"choice":"Meld fra om noe som bør fikses","confidence":0.85,"id":"busslomme@/"} +{"choice":"Meld fra om en trafikkfare","confidence":0.95,"id":"busslomme@/melde-fra"} +{"choice":"Meld fra om noe som bør fikses","confidence":0.85,"id":"huske@/"} +{"choice":"Meld fra om noe ødelagt","confidence":0.95,"id":"huske@/melde-fra"} +{"choice":"Meld fra om noe som bør fikses","confidence":0.95,"id":"bru@/"} +{"choice":"Meld fra om noe ødelagt","confidence":0.95,"id":"bru@/melde-fra"} +{"choice":"Meld fra om noe som bør fikses","confidence":0.85,"id":"blokker@/"} +{"choice":"Få din mening med i høringssvaret","confidence":0.95,"id":"togtider@/"} +{"choice":"Få hjelp av naboer, eller gi en hånd selv","confidence":0.95,"id":"vafler@/"} +{"choice":"Bli med på dugnad eller arrangement","confidence":0.95,"id":"vafler@/bidra"} +{"choice":"Bli med og gjør en innsats","confidence":0.95,"id":"motorsag@/"} +{"choice":"Bli med på dugnad eller arrangement","confidence":0.95,"id":"motorsag@/bidra"} +{"choice":"Bli med og gjør en innsats","confidence":0.85,"id":"pendler@/"} +{"choice":"Bli med på dugnad eller arrangement","confidence":0.95,"id":"pendler@/bidra"} +{"choice":"Få din mening med i høringssvaret","confidence":0.95,"id":"planlegger@/"} +{"choice":"Sitt i en komité som betyr noe for deg","confidence":0.95,"id":"planlegger@/bidra"} +{"choice":"Få hjelp av naboer, eller gi en hånd selv","confidence":0.95,"id":"tilhenger@/"} +{"choice":"Lån ut eller lån av naboen","confidence":0.95,"id":"tilhenger@/naboer"} +{"choice":"Få hjelp av naboer, eller gi en hånd selv","confidence":0.95,"id":"stige@/"} +{"choice":"Lån ut eller lån av naboen","confidence":0.95,"id":"stige@/naboer"} +{"choice":"Få hjelp av naboer, eller gi en hånd selv","confidence":0.95,"id":"snomaking@/"} +{"choice":"Bli spurt når en nabo trenger en hånd","confidence":0.95,"id":"snomaking@/naboer"} +{"choice":"Få hjelp av naboer, eller gi en hånd selv","confidence":0.95,"id":"nyoperert@/"} +{"choice":"Lån ut eller lån av naboen","confidence":0.95,"id":"nyoperert@/naboer"} +{"choice":"Få hjelp av naboer, eller gi en hånd selv","confidence":0.95,"id":"hjemmekontor@/"} +{"choice":"Bli spurt når en nabo trenger en hånd","confidence":0.95,"id":"hjemmekontor@/naboer"} +{"choice":"Få hjelp av naboer, eller gi en hånd selv","confidence":0.95,"id":"pensjonert-elektriker@/"} +{"choice":"Lån ut eller lån av naboen","confidence":0.95,"id":"pensjonert-elektriker@/naboer"} diff --git a/runs/tomtervel-committees-2026-09-23/build.log b/runs/tomtervel-committees-2026-09-23/build.log new file mode 100644 index 0000000..0dd2398 --- /dev/null +++ b/runs/tomtervel-committees-2026-09-23/build.log @@ -0,0 +1,45 @@ +words: questions/arrangementer/index.yaml +words: questions/bidra/index.yaml +words: questions/decide/dele-utstyr.yaml +words: questions/decide/kan-hjelpe.yaml +words: questions/decide/trenger-hjelp.yaml +words: questions/horingsinstans/index.yaml +words: questions/index.yaml +words: questions/kasserer/index.yaml +words: questions/komiteer/index.yaml +words: questions/komiteer/utlegg-sent.yaml +words: questions/komiteer/utlegg.yaml +words: questions/lekeplasser/index.yaml +words: questions/medlem/index.yaml +words: questions/melde-fra/index.yaml +words: questions/naboer/index.yaml +words: questions/nabohjelp/index.yaml +words: questions/received/anleggsfeil.yaml +words: questions/received/bli-medlem.yaml +words: questions/received/dele-utstyr.yaml +words: questions/received/endre-medlemskap.yaml +words: questions/received/hjelpe-til.yaml +words: questions/received/horingsinnspill.yaml +words: questions/received/kan-hjelpe.yaml +words: questions/received/komite.yaml +words: questions/received/trafikkfare.yaml +words: questions/received/trenger-hjelp.yaml +words: questions/status/anleggsfeil/index.yaml +words: questions/status/oppslag/index.yaml +words: questions/status/trafikkmeldinger/index.yaml +words: questions/styret/index.yaml +words: questions/trafikk/index.yaml +content repo written to runs/tomtervel-committees-2026-09-23 +OK: 31 question(s), 12 aggregate(s) valid +need "bli-medlem": / [Bli medlem eller endre opplysningene dine] -> /medlem [Bli medlem av Tomter Vel] -> "husstander" +need "endre-medlemskap": / [Bli medlem eller endre opplysningene dine] -> /medlem [Oppdater eller avslutt medlemskapet] -> "medlemsendringer" +need "trafikkfare": / [Meld fra om noe som bør fikses] -> /melde-fra [Meld fra om en trafikkfare] -> "trafikkmeldinger" +need "anleggsfeil": / [Meld fra om noe som bør fikses] -> /melde-fra [Meld fra om noe ødelagt] -> "anleggsfeil" +need "horingsinnspill": / [Få din mening med i høringssvaret] -> "innspill" +need "hjelpe-til": / [Bli med og gjør en innsats] -> /bidra [Bli med på dugnad eller arrangement] -> "frivillige" +need "komite": / [Bli med og gjør en innsats] -> /bidra [Sitt i en komité som betyr noe for deg] -> "komitesoknader" +need "trenger-hjelp": / [Få hjelp av naboer, eller gi en hånd selv] -> /naboer [Få en nabo til å stille opp] -> "hjelpebehov" +need "kan-hjelpe": / [Få hjelp av naboer, eller gi en hånd selv] -> /naboer [Bli spurt når en nabo trenger en hånd] -> "hjelpere" +need "dele-utstyr": / [Få hjelp av naboer, eller gi en hånd selv] -> /naboer [Lån ut eller lån av naboen] -> "oppslag" +need "utlegg": /komiteer/utlegg [Få pengene tilbake] -> "utlegg" +OK: 11 need(s) structurally met, 0 planned, 21 persona(s) diff --git a/runs/tomtervel-committees-2026-09-23/llm/01-questions_arrangementer_index.yaml.md b/runs/tomtervel-committees-2026-09-23/llm/01-questions_arrangementer_index.yaml.md new file mode 100644 index 0000000..e0236ea --- /dev/null +++ b/runs/tomtervel-committees-2026-09-23/llm/01-questions_arrangementer_index.yaml.md @@ -0,0 +1,80 @@ +You write the words for one page of a website for this business. + +Business: Tomter Vel +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. +Contact: Styret i Tomter Vel +Language to write in: no + +Everyone the site serves: +- door medlem: for en husstand i Tomter som vil bli medlem, betale kontingent, eller melde flytting, ny e-post eller utmelding; behind it: bli-medlem, endre-medlemskap +- door melde-fra: for noen som har sett noe farlig i trafikken, eller noe ødelagt på lekeplassen eller stien; behind it: trafikkfare, anleggsfeil +- door bidra: for noen som vil stille opp på 17. mai, dugnad eller et arrangement, eller sitte i en komité; behind it: hjelpe-til, komite +- door naboer: for en nabo som trenger en hånd med snømåking, handling eller skyss, kan gi en, eller har noe å låne ut; behind it: trenger-hjelp, kan-hjelpe, dele-utstyr +- bli-medlem: en husstand i Tomter - wants: å bli medlem og få betalt kontingenten. Handled by kasserer. Stages: open -> betalt -> utmeldt. +- endre-medlemskap: et medlem som har flyttet, byttet e-post eller vil melde seg ut - wants: at velet har riktige opplysninger om dem. Handled by kasserer. Stages: open -> oppdatert. +- trafikkfare: en som har sett et farlig sted i trafikken - wants: at velet tar det opp med kommunen eller den som eier veien. Handled by trafikk. Stages: open -> tatt_opp -> ordnet -> avvist. +- anleggsfeil: en som ser at noe på lekeplassen eller stien er ødelagt - wants: at det blir fikset før noen skader seg. Handled by lekeplasser. Stages: open -> tatt_tak_i -> utbedret. +- horingsinnspill: en beboer som har en mening om en sak kommunen har på høring - wants: at velet tar det med i sitt svar. Handled by horingsinstans. Stages: open -> tatt_med -> ikke_tatt_med. +- hjelpe-til: en som vil hjelpe til på et arrangement eller en dugnad - wants: å bli satt opp på noe som passer dem. Handled by arrangementer. Stages: open -> kontaktet -> satt_opp -> takket_nei. +- komite: en som vil sitte i en komité - wants: en plass i den komiteen som driver med det de bryr seg om. Handled by styret. Stages: open -> plassert -> avslatt. +- trenger-hjelp: 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. Handled by nabohjelp. Stages: open -> formidlet -> ordnet -> ikke_lost. +- kan-hjelpe: en nabo som kan stille opp når noen trenger det - wants: å bli spurt når det passer. Handled by nabohjelp. Stages: open -> registrert -> trukket. +- dele-utstyr: en nabo som har noe å låne ut, eller trenger å låne noe - wants: et oppslag som naboene ser. Handled by styret. Stages: open -> lagt_ut -> tatt_ned. +- utlegg: en i en komité som har lagt ut for noe - wants: pengene tilbake. Handled by kasserer. Stages: open -> godkjent -> utbetalt -> avvist. + +The page: questions/arrangementer/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. +- The button says what pressing it does; the encouragement says what happens next or how little it takes; the form's guidance line says what to have ready. Placeholders are example answers in the reader's words. +- An icon is one name from this list, chosen for what the reader is doing, or empty: house, building-2, store, school, map-pin, route, footprints, trees, leaf, snowflake, sun, users, user, user-plus, user-check, baby, heart-handshake, hand-helping, handshake, smile, mail, phone, message-circle, megaphone, bell, send, inbox, alert-triangle, siren, shield, construction, hammer, wrench, ruler, package, truck, car, bus, train-front, bike, calendar, clock, file-text, clipboard-list, receipt, wallet, coins, banknote, credit-card, key, lock, search, star, gift, shopping-cart, lightbulb, flag, thumbs-up, check-circle, briefcase, stethoscope, activity, camera, pencil, refresh-cw, list, layers, vote, scale +- Write the way people in this trade and country actually speak. + +{ + "buckets": { + "frivillige": { + "description": "", + "heading": "", + "moves": { + "kontaktet->satt_opp": "satt_opp>", + "kontaktet->takket_nei": "takket_nei>", + "open->kontaktet": "kontaktet>", + "open->takket_nei": "takket_nei>" + } + } + }, + "confirm": "", + "description": "", + "links": {}, + "question": "" +} + +Reply with the JSON object only. + +=== REPLY === +```json +{ + "buckets": { + "frivillige": { + "description": "Her ser du hvem som har meldt seg til dugnad, 17. mai eller andre arrangementer, og hvor langt du har kommet med hver av dem.", + "heading": "Frivillige til arrangementer og dugnad", + "moves": { + "kontaktet->satt_opp": "Sett opp", + "kontaktet->takket_nei": "Takket nei", + "open->kontaktet": "Merk som kontaktet", + "open->takket_nei": "Takket nei" + } + } + }, + "confirm": "Lagre", + "description": "Oversikt over folk som vil hjelpe til, slik at du kan følge opp og sette dem opp på noe som passer.", + "links": {}, + "question": "Hvem har meldt seg, og hvor langt har jeg kommet med å sette dem opp?" +} +``` diff --git a/runs/tomtervel-committees-2026-09-23/llm/02-questions_bidra_index.yaml.md b/runs/tomtervel-committees-2026-09-23/llm/02-questions_bidra_index.yaml.md new file mode 100644 index 0000000..f5cf08c --- /dev/null +++ b/runs/tomtervel-committees-2026-09-23/llm/02-questions_bidra_index.yaml.md @@ -0,0 +1,156 @@ +You write the words for one page of a website for this business. + +Business: Tomter Vel +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. +Contact: Styret i Tomter Vel +Language to write in: no + +Everyone the site serves: +- door medlem: for en husstand i Tomter som vil bli medlem, betale kontingent, eller melde flytting, ny e-post eller utmelding; behind it: bli-medlem, endre-medlemskap +- door melde-fra: for noen som har sett noe farlig i trafikken, eller noe ødelagt på lekeplassen eller stien; behind it: trafikkfare, anleggsfeil +- door bidra: for noen som vil stille opp på 17. mai, dugnad eller et arrangement, eller sitte i en komité; behind it: hjelpe-til, komite +- door naboer: for en nabo som trenger en hånd med snømåking, handling eller skyss, kan gi en, eller har noe å låne ut; behind it: trenger-hjelp, kan-hjelpe, dele-utstyr +- bli-medlem: en husstand i Tomter - wants: å bli medlem og få betalt kontingenten. Handled by kasserer. Stages: open -> betalt -> utmeldt. +- endre-medlemskap: et medlem som har flyttet, byttet e-post eller vil melde seg ut - wants: at velet har riktige opplysninger om dem. Handled by kasserer. Stages: open -> oppdatert. +- trafikkfare: en som har sett et farlig sted i trafikken - wants: at velet tar det opp med kommunen eller den som eier veien. Handled by trafikk. Stages: open -> tatt_opp -> ordnet -> avvist. +- anleggsfeil: en som ser at noe på lekeplassen eller stien er ødelagt - wants: at det blir fikset før noen skader seg. Handled by lekeplasser. Stages: open -> tatt_tak_i -> utbedret. +- horingsinnspill: en beboer som har en mening om en sak kommunen har på høring - wants: at velet tar det med i sitt svar. Handled by horingsinstans. Stages: open -> tatt_med -> ikke_tatt_med. +- hjelpe-til: en som vil hjelpe til på et arrangement eller en dugnad - wants: å bli satt opp på noe som passer dem. Handled by arrangementer. Stages: open -> kontaktet -> satt_opp -> takket_nei. +- komite: en som vil sitte i en komité - wants: en plass i den komiteen som driver med det de bryr seg om. Handled by styret. Stages: open -> plassert -> avslatt. +- trenger-hjelp: 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. Handled by nabohjelp. Stages: open -> formidlet -> ordnet -> ikke_lost. +- kan-hjelpe: en nabo som kan stille opp når noen trenger det - wants: å bli spurt når det passer. Handled by nabohjelp. Stages: open -> registrert -> trukket. +- dele-utstyr: en nabo som har noe å låne ut, eller trenger å låne noe - wants: et oppslag som naboene ser. Handled by styret. Stages: open -> lagt_ut -> tatt_ned. +- utlegg: en i en komité som har lagt ut for noe - wants: pengene tilbake. Handled by kasserer. Stages: open -> godkjent -> utbetalt -> avvist. + +The page: questions/bidra/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. +- The button says what pressing it does; the encouragement says what happens next or how little it takes; the form's guidance line says what to have ready. Placeholders are example answers in the reader's words. +- An icon is one name from this list, chosen for what the reader is doing, or empty: house, building-2, store, school, map-pin, route, footprints, trees, leaf, snowflake, sun, users, user, user-plus, user-check, baby, heart-handshake, hand-helping, handshake, smile, mail, phone, message-circle, megaphone, bell, send, inbox, alert-triangle, siren, shield, construction, hammer, wrench, ruler, package, truck, car, bus, train-front, bike, calendar, clock, file-text, clipboard-list, receipt, wallet, coins, banknote, credit-card, key, lock, search, star, gift, shopping-cart, lightbulb, flag, thumbs-up, check-circle, briefcase, stethoscope, activity, camera, pencil, refresh-cw, list, layers, vote, scale +- Write the way people in this trade and country actually speak. + +{ + "description": "", + "needs": { + "hjelpe-til": { + "button": "", + "description": "", + "encouragement": "", + "form_description": "", + "form_title": "", + "heading": "", + "hints": { + "hva": "", + "navn": "", + "telefon": "" + }, + "icon": "", + "labels": { + "hva": "", + "navn": "", + "telefon": "" + }, + "road_description": "", + "road_icon": "", + "road_title": "", + "who_description": "", + "who_icon": "", + "who_title": "" + }, + "komite": { + "button": "", + "description": "", + "encouragement": "", + "form_description": "", + "form_title": "", + "heading": "", + "hints": { + "epost": "", + "komite": "", + "navn": "" + }, + "icon": "", + "labels": { + "epost": "", + "komite": "", + "navn": "" + }, + "road_description": "", + "road_icon": "", + "road_title": "", + "who_description": "", + "who_icon": "", + "who_title": "" + } + }, + "question": "" +} + +Reply with the JSON object only. + +=== REPLY === +```json +{ + "description": "Vil du stille opp for nabolaget? Her melder du deg til dugnad og arrangementer, eller til en av komiteene.", + "needs": { + "hjelpe-til": { + "button": "Meld meg på", + "description": "17. mai, dugnad eller andre arrangementer trenger folk som stiller opp. Si fra hva du kan bidra med, så setter vi deg opp på noe som passer.", + "encouragement": "Det holder med noen ord om hva du kan tenke deg – vi tar kontakt når det nærmer seg.", + "form_description": "Fortell kort hva du kan hjelpe til med.", + "form_title": "Meld deg som hjelper", + "heading": "Bli med på dugnad eller arrangement", + "hints": { + "hva": "Kan hjelpe til på 17. mai, eller stille på dugnad i mai", + "navn": "Kari Nordmann", + "telefon": "912 34 567" + }, + "icon": "hand-helping", + "labels": { + "hva": "Hva kan du hjelpe til med?", + "navn": "Navn", + "telefon": "Telefon" + }, + "road_description": "Arrangementskomiteen tar kontakt og finner ut hva som passer for deg. Sier du ja, blir du satt opp på en oppgave – sier du nei takk, er det helt greit.", + "road_icon": "clipboard-list", + "road_title": "Hva skjer videre", + "who_description": "Arrangementskomiteen leser det du sender, og du kan nå dem på post@tomtervel.no i mellomtiden.", + "who_icon": "users", + "who_title": "Hvem leser dette" + }, + "komite": { + "button": "Meld interesse", + "description": "Velet drives av sju komiteer på fritida, og alle trenger flere hender. Si hvilken komité du har lyst til å være med i.", + "encouragement": "Det tar bare et minutt, og noen fra styret svarer deg.", + "form_description": "Skriv hvilken komité du er interessert i.", + "form_title": "Meld deg til en komité", + "heading": "Sitt i en komité som betyr noe for deg", + "hints": { + "epost": "kari@eksempel.no", + "komite": "Elvestien, eller lekeplassene", + "navn": "Kari Nordmann" + }, + "icon": "users", + "labels": { + "epost": "E-post", + "komite": "Hvilken komité?", + "navn": "Navn" + }, + "road_description": "Styret ser på ønsket ditt og finner en plass i komiteen du har meldt deg til, eller sier fra hvis det ikke er rom akkurat nå.", + "road_icon": "clipboard-list", + "road_title": "Hva skjer videre", + "who_description": "Styret leser det du sender, og du kan nå dem på post@tomtervel.no i mellomtiden.", + "who_icon": "handshake", + "who_title": "Hvem leser dette" + } + }, + "question": "Vil du hjelpe til i nabolaget?" +} +``` diff --git a/runs/tomtervel-committees-2026-09-23/llm/03-questions_decide_dele-utstyr.yaml.md b/runs/tomtervel-committees-2026-09-23/llm/03-questions_decide_dele-utstyr.yaml.md new file mode 100644 index 0000000..a080316 --- /dev/null +++ b/runs/tomtervel-committees-2026-09-23/llm/03-questions_decide_dele-utstyr.yaml.md @@ -0,0 +1,66 @@ +You write the words for one page of a website for this business. + +Business: Tomter Vel +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. +Contact: Styret i Tomter Vel +Language to write in: no + +Everyone the site serves: +- door medlem: for en husstand i Tomter som vil bli medlem, betale kontingent, eller melde flytting, ny e-post eller utmelding; behind it: bli-medlem, endre-medlemskap +- door melde-fra: for noen som har sett noe farlig i trafikken, eller noe ødelagt på lekeplassen eller stien; behind it: trafikkfare, anleggsfeil +- door bidra: for noen som vil stille opp på 17. mai, dugnad eller et arrangement, eller sitte i en komité; behind it: hjelpe-til, komite +- door naboer: for en nabo som trenger en hånd med snømåking, handling eller skyss, kan gi en, eller har noe å låne ut; behind it: trenger-hjelp, kan-hjelpe, dele-utstyr +- bli-medlem: en husstand i Tomter - wants: å bli medlem og få betalt kontingenten. Handled by kasserer. Stages: open -> betalt -> utmeldt. +- endre-medlemskap: et medlem som har flyttet, byttet e-post eller vil melde seg ut - wants: at velet har riktige opplysninger om dem. Handled by kasserer. Stages: open -> oppdatert. +- trafikkfare: en som har sett et farlig sted i trafikken - wants: at velet tar det opp med kommunen eller den som eier veien. Handled by trafikk. Stages: open -> tatt_opp -> ordnet -> avvist. +- anleggsfeil: en som ser at noe på lekeplassen eller stien er ødelagt - wants: at det blir fikset før noen skader seg. Handled by lekeplasser. Stages: open -> tatt_tak_i -> utbedret. +- horingsinnspill: en beboer som har en mening om en sak kommunen har på høring - wants: at velet tar det med i sitt svar. Handled by horingsinstans. Stages: open -> tatt_med -> ikke_tatt_med. +- hjelpe-til: en som vil hjelpe til på et arrangement eller en dugnad - wants: å bli satt opp på noe som passer dem. Handled by arrangementer. Stages: open -> kontaktet -> satt_opp -> takket_nei. +- komite: en som vil sitte i en komité - wants: en plass i den komiteen som driver med det de bryr seg om. Handled by styret. Stages: open -> plassert -> avslatt. +- trenger-hjelp: 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. Handled by nabohjelp. Stages: open -> formidlet -> ordnet -> ikke_lost. +- kan-hjelpe: en nabo som kan stille opp når noen trenger det - wants: å bli spurt når det passer. Handled by nabohjelp. Stages: open -> registrert -> trukket. +- dele-utstyr: en nabo som har noe å låne ut, eller trenger å låne noe - wants: et oppslag som naboene ser. Handled by styret. Stages: open -> lagt_ut -> tatt_ned. +- utlegg: en i en komité som har lagt ut for noe - wants: pengene tilbake. Handled by kasserer. Stages: open -> godkjent -> utbetalt -> avvist. + +The page: questions/decide/dele-utstyr.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. +- The button says what pressing it does; the encouragement says what happens next or how little it takes; the form's guidance line says what to have ready. Placeholders are example answers in the reader's words. +- An icon is one name from this list, chosen for what the reader is doing, or empty: house, building-2, store, school, map-pin, route, footprints, trees, leaf, snowflake, sun, users, user, user-plus, user-check, baby, heart-handshake, hand-helping, handshake, smile, mail, phone, message-circle, megaphone, bell, send, inbox, alert-triangle, siren, shield, construction, hammer, wrench, ruler, package, truck, car, bus, train-front, bike, calendar, clock, file-text, clipboard-list, receipt, wallet, coins, banknote, credit-card, key, lock, search, star, gift, shopping-cart, lightbulb, flag, thumbs-up, check-circle, briefcase, stethoscope, activity, camera, pencil, refresh-cw, list, layers, vote, scale +- Write the way people in this trade and country actually speak. + +{ + "description": "", + "moves": { + "tatt_ned": { + "button": "", + "description": "", + "heading": "" + } + }, + "question": "" +} + +Reply with the JSON object only. + +=== REPLY === +```json +{ + "description": "Her sier du fra at utstyret er hentet eller ikke lenger tilgjengelig for utlån.", + "moves": { + "tatt_ned": { + "button": "Ta ned oppslaget", + "description": "Oppslaget fjernes fra siden, så ingen flere spør om å låne det.", + "heading": "Meld at utstyret er tatt ned" + } + }, + "question": "Skal oppslaget om utstyret fortsatt stå ute?" +} +``` diff --git a/runs/tomtervel-committees-2026-09-23/llm/04-questions_decide_kan-hjelpe.yaml.md b/runs/tomtervel-committees-2026-09-23/llm/04-questions_decide_kan-hjelpe.yaml.md new file mode 100644 index 0000000..7d38117 --- /dev/null +++ b/runs/tomtervel-committees-2026-09-23/llm/04-questions_decide_kan-hjelpe.yaml.md @@ -0,0 +1,66 @@ +You write the words for one page of a website for this business. + +Business: Tomter Vel +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. +Contact: Styret i Tomter Vel +Language to write in: no + +Everyone the site serves: +- door medlem: for en husstand i Tomter som vil bli medlem, betale kontingent, eller melde flytting, ny e-post eller utmelding; behind it: bli-medlem, endre-medlemskap +- door melde-fra: for noen som har sett noe farlig i trafikken, eller noe ødelagt på lekeplassen eller stien; behind it: trafikkfare, anleggsfeil +- door bidra: for noen som vil stille opp på 17. mai, dugnad eller et arrangement, eller sitte i en komité; behind it: hjelpe-til, komite +- door naboer: for en nabo som trenger en hånd med snømåking, handling eller skyss, kan gi en, eller har noe å låne ut; behind it: trenger-hjelp, kan-hjelpe, dele-utstyr +- bli-medlem: en husstand i Tomter - wants: å bli medlem og få betalt kontingenten. Handled by kasserer. Stages: open -> betalt -> utmeldt. +- endre-medlemskap: et medlem som har flyttet, byttet e-post eller vil melde seg ut - wants: at velet har riktige opplysninger om dem. Handled by kasserer. Stages: open -> oppdatert. +- trafikkfare: en som har sett et farlig sted i trafikken - wants: at velet tar det opp med kommunen eller den som eier veien. Handled by trafikk. Stages: open -> tatt_opp -> ordnet -> avvist. +- anleggsfeil: en som ser at noe på lekeplassen eller stien er ødelagt - wants: at det blir fikset før noen skader seg. Handled by lekeplasser. Stages: open -> tatt_tak_i -> utbedret. +- horingsinnspill: en beboer som har en mening om en sak kommunen har på høring - wants: at velet tar det med i sitt svar. Handled by horingsinstans. Stages: open -> tatt_med -> ikke_tatt_med. +- hjelpe-til: en som vil hjelpe til på et arrangement eller en dugnad - wants: å bli satt opp på noe som passer dem. Handled by arrangementer. Stages: open -> kontaktet -> satt_opp -> takket_nei. +- komite: en som vil sitte i en komité - wants: en plass i den komiteen som driver med det de bryr seg om. Handled by styret. Stages: open -> plassert -> avslatt. +- trenger-hjelp: 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. Handled by nabohjelp. Stages: open -> formidlet -> ordnet -> ikke_lost. +- kan-hjelpe: en nabo som kan stille opp når noen trenger det - wants: å bli spurt når det passer. Handled by nabohjelp. Stages: open -> registrert -> trukket. +- dele-utstyr: en nabo som har noe å låne ut, eller trenger å låne noe - wants: et oppslag som naboene ser. Handled by styret. Stages: open -> lagt_ut -> tatt_ned. +- utlegg: en i en komité som har lagt ut for noe - wants: pengene tilbake. Handled by kasserer. Stages: open -> godkjent -> utbetalt -> avvist. + +The page: questions/decide/kan-hjelpe.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. +- The button says what pressing it does; the encouragement says what happens next or how little it takes; the form's guidance line says what to have ready. Placeholders are example answers in the reader's words. +- An icon is one name from this list, chosen for what the reader is doing, or empty: house, building-2, store, school, map-pin, route, footprints, trees, leaf, snowflake, sun, users, user, user-plus, user-check, baby, heart-handshake, hand-helping, handshake, smile, mail, phone, message-circle, megaphone, bell, send, inbox, alert-triangle, siren, shield, construction, hammer, wrench, ruler, package, truck, car, bus, train-front, bike, calendar, clock, file-text, clipboard-list, receipt, wallet, coins, banknote, credit-card, key, lock, search, star, gift, shopping-cart, lightbulb, flag, thumbs-up, check-circle, briefcase, stethoscope, activity, camera, pencil, refresh-cw, list, layers, vote, scale +- Write the way people in this trade and country actually speak. + +{ + "description": "", + "moves": { + "trukket": { + "button": "", + "description": "", + "heading": "" + } + }, + "question": "" +} + +Reply with the JSON object only. + +=== REPLY === +```json +{ + "description": "Her ser du naboer som har bedt om en hånd, og kan velge om du fortsatt kan bidra eller trekke deg for nå.", + "moves": { + "trukket": { + "button": "Trekk meg", + "description": "Du blir tatt av lista over naboer som kan spørres, men kan melde deg på igjen når det passer bedre.", + "heading": "Ta en pause fra nabohjelpen" + } + }, + "question": "Vil du fortsatt kunne bli spurt om å hjelpe en nabo?" +} +``` diff --git a/runs/tomtervel-committees-2026-09-23/llm/05-questions_decide_trenger-hjelp.yaml.md b/runs/tomtervel-committees-2026-09-23/llm/05-questions_decide_trenger-hjelp.yaml.md new file mode 100644 index 0000000..4bb81af --- /dev/null +++ b/runs/tomtervel-committees-2026-09-23/llm/05-questions_decide_trenger-hjelp.yaml.md @@ -0,0 +1,66 @@ +You write the words for one page of a website for this business. + +Business: Tomter Vel +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. +Contact: Styret i Tomter Vel +Language to write in: no + +Everyone the site serves: +- door medlem: for en husstand i Tomter som vil bli medlem, betale kontingent, eller melde flytting, ny e-post eller utmelding; behind it: bli-medlem, endre-medlemskap +- door melde-fra: for noen som har sett noe farlig i trafikken, eller noe ødelagt på lekeplassen eller stien; behind it: trafikkfare, anleggsfeil +- door bidra: for noen som vil stille opp på 17. mai, dugnad eller et arrangement, eller sitte i en komité; behind it: hjelpe-til, komite +- door naboer: for en nabo som trenger en hånd med snømåking, handling eller skyss, kan gi en, eller har noe å låne ut; behind it: trenger-hjelp, kan-hjelpe, dele-utstyr +- bli-medlem: en husstand i Tomter - wants: å bli medlem og få betalt kontingenten. Handled by kasserer. Stages: open -> betalt -> utmeldt. +- endre-medlemskap: et medlem som har flyttet, byttet e-post eller vil melde seg ut - wants: at velet har riktige opplysninger om dem. Handled by kasserer. Stages: open -> oppdatert. +- trafikkfare: en som har sett et farlig sted i trafikken - wants: at velet tar det opp med kommunen eller den som eier veien. Handled by trafikk. Stages: open -> tatt_opp -> ordnet -> avvist. +- anleggsfeil: en som ser at noe på lekeplassen eller stien er ødelagt - wants: at det blir fikset før noen skader seg. Handled by lekeplasser. Stages: open -> tatt_tak_i -> utbedret. +- horingsinnspill: en beboer som har en mening om en sak kommunen har på høring - wants: at velet tar det med i sitt svar. Handled by horingsinstans. Stages: open -> tatt_med -> ikke_tatt_med. +- hjelpe-til: en som vil hjelpe til på et arrangement eller en dugnad - wants: å bli satt opp på noe som passer dem. Handled by arrangementer. Stages: open -> kontaktet -> satt_opp -> takket_nei. +- komite: en som vil sitte i en komité - wants: en plass i den komiteen som driver med det de bryr seg om. Handled by styret. Stages: open -> plassert -> avslatt. +- trenger-hjelp: 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. Handled by nabohjelp. Stages: open -> formidlet -> ordnet -> ikke_lost. +- kan-hjelpe: en nabo som kan stille opp når noen trenger det - wants: å bli spurt når det passer. Handled by nabohjelp. Stages: open -> registrert -> trukket. +- dele-utstyr: en nabo som har noe å låne ut, eller trenger å låne noe - wants: et oppslag som naboene ser. Handled by styret. Stages: open -> lagt_ut -> tatt_ned. +- utlegg: en i en komité som har lagt ut for noe - wants: pengene tilbake. Handled by kasserer. Stages: open -> godkjent -> utbetalt -> avvist. + +The page: questions/decide/trenger-hjelp.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. +- The button says what pressing it does; the encouragement says what happens next or how little it takes; the form's guidance line says what to have ready. Placeholders are example answers in the reader's words. +- An icon is one name from this list, chosen for what the reader is doing, or empty: house, building-2, store, school, map-pin, route, footprints, trees, leaf, snowflake, sun, users, user, user-plus, user-check, baby, heart-handshake, hand-helping, handshake, smile, mail, phone, message-circle, megaphone, bell, send, inbox, alert-triangle, siren, shield, construction, hammer, wrench, ruler, package, truck, car, bus, train-front, bike, calendar, clock, file-text, clipboard-list, receipt, wallet, coins, banknote, credit-card, key, lock, search, star, gift, shopping-cart, lightbulb, flag, thumbs-up, check-circle, briefcase, stethoscope, activity, camera, pencil, refresh-cw, list, layers, vote, scale +- Write the way people in this trade and country actually speak. + +{ + "description": "", + "moves": { + "ordnet": { + "button": "", + "description": "", + "heading": "" + } + }, + "question": "" +} + +Reply with the JSON object only. + +=== REPLY === +```json +{ + "description": "Her ser du henvendelsen fra naboen som trengte en hånd, og kan si fra når det er ordnet.", + "moves": { + "ordnet": { + "button": "Merk som ordnet", + "description": "Da vet vi at naboen har fått hjelpen sin, og saken lukkes.", + "heading": "Meld fra at hjelpen er gitt" + } + }, + "question": "Har naboen fått hjelpen de trengte?" +} +``` diff --git a/runs/tomtervel-committees-2026-09-23/llm/06-questions_horingsinstans_index.yaml.md b/runs/tomtervel-committees-2026-09-23/llm/06-questions_horingsinstans_index.yaml.md new file mode 100644 index 0000000..2887144 --- /dev/null +++ b/runs/tomtervel-committees-2026-09-23/llm/06-questions_horingsinstans_index.yaml.md @@ -0,0 +1,76 @@ +You write the words for one page of a website for this business. + +Business: Tomter Vel +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. +Contact: Styret i Tomter Vel +Language to write in: no + +Everyone the site serves: +- door medlem: for en husstand i Tomter som vil bli medlem, betale kontingent, eller melde flytting, ny e-post eller utmelding; behind it: bli-medlem, endre-medlemskap +- door melde-fra: for noen som har sett noe farlig i trafikken, eller noe ødelagt på lekeplassen eller stien; behind it: trafikkfare, anleggsfeil +- door bidra: for noen som vil stille opp på 17. mai, dugnad eller et arrangement, eller sitte i en komité; behind it: hjelpe-til, komite +- door naboer: for en nabo som trenger en hånd med snømåking, handling eller skyss, kan gi en, eller har noe å låne ut; behind it: trenger-hjelp, kan-hjelpe, dele-utstyr +- bli-medlem: en husstand i Tomter - wants: å bli medlem og få betalt kontingenten. Handled by kasserer. Stages: open -> betalt -> utmeldt. +- endre-medlemskap: et medlem som har flyttet, byttet e-post eller vil melde seg ut - wants: at velet har riktige opplysninger om dem. Handled by kasserer. Stages: open -> oppdatert. +- trafikkfare: en som har sett et farlig sted i trafikken - wants: at velet tar det opp med kommunen eller den som eier veien. Handled by trafikk. Stages: open -> tatt_opp -> ordnet -> avvist. +- anleggsfeil: en som ser at noe på lekeplassen eller stien er ødelagt - wants: at det blir fikset før noen skader seg. Handled by lekeplasser. Stages: open -> tatt_tak_i -> utbedret. +- horingsinnspill: en beboer som har en mening om en sak kommunen har på høring - wants: at velet tar det med i sitt svar. Handled by horingsinstans. Stages: open -> tatt_med -> ikke_tatt_med. +- hjelpe-til: en som vil hjelpe til på et arrangement eller en dugnad - wants: å bli satt opp på noe som passer dem. Handled by arrangementer. Stages: open -> kontaktet -> satt_opp -> takket_nei. +- komite: en som vil sitte i en komité - wants: en plass i den komiteen som driver med det de bryr seg om. Handled by styret. Stages: open -> plassert -> avslatt. +- trenger-hjelp: 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. Handled by nabohjelp. Stages: open -> formidlet -> ordnet -> ikke_lost. +- kan-hjelpe: en nabo som kan stille opp når noen trenger det - wants: å bli spurt når det passer. Handled by nabohjelp. Stages: open -> registrert -> trukket. +- dele-utstyr: en nabo som har noe å låne ut, eller trenger å låne noe - wants: et oppslag som naboene ser. Handled by styret. Stages: open -> lagt_ut -> tatt_ned. +- utlegg: en i en komité som har lagt ut for noe - wants: pengene tilbake. Handled by kasserer. Stages: open -> godkjent -> utbetalt -> avvist. + +The page: questions/horingsinstans/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. +- The button says what pressing it does; the encouragement says what happens next or how little it takes; the form's guidance line says what to have ready. Placeholders are example answers in the reader's words. +- An icon is one name from this list, chosen for what the reader is doing, or empty: house, building-2, store, school, map-pin, route, footprints, trees, leaf, snowflake, sun, users, user, user-plus, user-check, baby, heart-handshake, hand-helping, handshake, smile, mail, phone, message-circle, megaphone, bell, send, inbox, alert-triangle, siren, shield, construction, hammer, wrench, ruler, package, truck, car, bus, train-front, bike, calendar, clock, file-text, clipboard-list, receipt, wallet, coins, banknote, credit-card, key, lock, search, star, gift, shopping-cart, lightbulb, flag, thumbs-up, check-circle, briefcase, stethoscope, activity, camera, pencil, refresh-cw, list, layers, vote, scale +- Write the way people in this trade and country actually speak. + +{ + "buckets": { + "innspill": { + "description": "", + "heading": "", + "moves": { + "open->ikke_tatt_med": "ikke_tatt_med>", + "open->tatt_med": "tatt_med>" + } + } + }, + "confirm": "", + "description": "", + "links": {}, + "question": "" +} + +Reply with the JSON object only. + +=== REPLY === +```json +{ + "buckets": { + "innspill": { + "description": "Her ligger innspill fra beboere til saker kommunen har på høring.", + "heading": "Innspill til høringssvar", + "moves": { + "open->ikke_tatt_med": "Ikke tatt med", + "open->tatt_med": "Tatt med i svaret" + } + } + }, + "confirm": "Send svar", + "description": "Her samler du innspillene og ser hva som er tatt med i velets høringssvar.", + "links": {}, + "question": "Hva sier vi i høringssvaret?" +} +``` diff --git a/runs/tomtervel-committees-2026-09-23/llm/07-questions_index.yaml.md b/runs/tomtervel-committees-2026-09-23/llm/07-questions_index.yaml.md new file mode 100644 index 0000000..161b332 --- /dev/null +++ b/runs/tomtervel-committees-2026-09-23/llm/07-questions_index.yaml.md @@ -0,0 +1,166 @@ +You write the words for one page of a website for this business. + +Business: Tomter Vel +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. +Contact: Styret i Tomter Vel +Language to write in: no + +Everyone the site serves: +- door medlem: for en husstand i Tomter som vil bli medlem, betale kontingent, eller melde flytting, ny e-post eller utmelding; behind it: bli-medlem, endre-medlemskap +- door melde-fra: for noen som har sett noe farlig i trafikken, eller noe ødelagt på lekeplassen eller stien; behind it: trafikkfare, anleggsfeil +- door bidra: for noen som vil stille opp på 17. mai, dugnad eller et arrangement, eller sitte i en komité; behind it: hjelpe-til, komite +- door naboer: for en nabo som trenger en hånd med snømåking, handling eller skyss, kan gi en, eller har noe å låne ut; behind it: trenger-hjelp, kan-hjelpe, dele-utstyr +- bli-medlem: en husstand i Tomter - wants: å bli medlem og få betalt kontingenten. Handled by kasserer. Stages: open -> betalt -> utmeldt. +- endre-medlemskap: et medlem som har flyttet, byttet e-post eller vil melde seg ut - wants: at velet har riktige opplysninger om dem. Handled by kasserer. Stages: open -> oppdatert. +- trafikkfare: en som har sett et farlig sted i trafikken - wants: at velet tar det opp med kommunen eller den som eier veien. Handled by trafikk. Stages: open -> tatt_opp -> ordnet -> avvist. +- anleggsfeil: en som ser at noe på lekeplassen eller stien er ødelagt - wants: at det blir fikset før noen skader seg. Handled by lekeplasser. Stages: open -> tatt_tak_i -> utbedret. +- horingsinnspill: en beboer som har en mening om en sak kommunen har på høring - wants: at velet tar det med i sitt svar. Handled by horingsinstans. Stages: open -> tatt_med -> ikke_tatt_med. +- hjelpe-til: en som vil hjelpe til på et arrangement eller en dugnad - wants: å bli satt opp på noe som passer dem. Handled by arrangementer. Stages: open -> kontaktet -> satt_opp -> takket_nei. +- komite: en som vil sitte i en komité - wants: en plass i den komiteen som driver med det de bryr seg om. Handled by styret. Stages: open -> plassert -> avslatt. +- trenger-hjelp: 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. Handled by nabohjelp. Stages: open -> formidlet -> ordnet -> ikke_lost. +- kan-hjelpe: en nabo som kan stille opp når noen trenger det - wants: å bli spurt når det passer. Handled by nabohjelp. Stages: open -> registrert -> trukket. +- dele-utstyr: en nabo som har noe å låne ut, eller trenger å låne noe - wants: et oppslag som naboene ser. Handled by styret. Stages: open -> lagt_ut -> tatt_ned. +- utlegg: en i en komité som har lagt ut for noe - wants: pengene tilbake. Handled by kasserer. Stages: open -> godkjent -> utbetalt -> avvist. + +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. +- The button says what pressing it does; the encouragement says what happens next or how little it takes; the form's guidance line says what to have ready. Placeholders are example answers in the reader's words. +- An icon is one name from this list, chosen for what the reader is doing, or empty: house, building-2, store, school, map-pin, route, footprints, trees, leaf, snowflake, sun, users, user, user-plus, user-check, baby, heart-handshake, hand-helping, handshake, smile, mail, phone, message-circle, megaphone, bell, send, inbox, alert-triangle, siren, shield, construction, hammer, wrench, ruler, package, truck, car, bus, train-front, bike, calendar, clock, file-text, clipboard-list, receipt, wallet, coins, banknote, credit-card, key, lock, search, star, gift, shopping-cart, lightbulb, flag, thumbs-up, check-circle, briefcase, stethoscope, activity, camera, pencil, refresh-cw, list, layers, vote, scale +- Write the way people in this trade and country actually speak. + +{ + "description": "", + "doors": { + "bidra": { + "button": "", + "description": "", + "for_whom": "", + "heading": "", + "icon": "" + }, + "medlem": { + "button": "", + "description": "", + "for_whom": "", + "heading": "", + "icon": "" + }, + "melde-fra": { + "button": "", + "description": "", + "for_whom": "", + "heading": "", + "icon": "" + }, + "naboer": { + "button": "", + "description": "", + "for_whom": "", + "heading": "", + "icon": "" + } + }, + "needs": { + "horingsinnspill": { + "button": "", + "description": "", + "encouragement": "", + "form_description": "", + "form_title": "", + "heading": "", + "hints": { + "innspill": "", + "navn": "", + "sak": "" + }, + "icon": "", + "labels": { + "innspill": "", + "navn": "", + "sak": "" + }, + "road_description": "", + "road_icon": "", + "road_title": "", + "who_description": "", + "who_icon": "", + "who_title": "" + } + }, + "question": "" +} + +Reply with the JSON object only. + +=== REPLY === +```json +{ + "description": "Tomter Vel tar vare på nærmiljøet – fra elvestien og lekeplassene til trafikksikkerhet og naboskap. Finn det som gjelder deg.", + "doors": { + "bidra": { + "button": "Bli med", + "description": "Vi trenger folk på 17. mai, dugnader og i komiteene. Det trengs ikke mer enn litt tid du har å avse.", + "for_whom": "Deg som vil gjøre en innsats", + "heading": "Bli med og gjør en innsats", + "icon": "hand-helping" + }, + "medlem": { + "button": "Til medlemskap", + "description": "Meld deg inn, betal kontingenten, eller gi beskjed om flytting, ny e-post eller utmelding.", + "for_whom": "Deg som bor i Tomter", + "heading": "Bli medlem eller endre opplysningene dine", + "icon": "house" + }, + "melde-fra": { + "button": "Meld fra", + "description": "Sett du noe farlig i trafikken, eller noe ødelagt på lekeplassen eller elvestien? Gi oss beskjed.", + "for_whom": "Deg som har sett noe som bør fikses", + "heading": "Meld fra om noe som bør fikses", + "icon": "alert-triangle" + }, + "naboer": { + "button": "Til nabohjelp", + "description": "Trenger du en hånd med snømåking, handling eller skyss? Eller kan du stille opp for en nabo? Her møtes dere.", + "for_whom": "Deg som trenger hjelp eller kan gi en hånd", + "heading": "Få hjelp av naboer, eller gi en hånd selv", + "icon": "heart-handshake" + } + }, + "needs": { + "horingsinnspill": { + "button": "Send innspill", + "description": "Har kommunen en sak på høring du mener noe om? Send oss innspillet ditt, så tar vi det med i velets svar.", + "encouragement": "Innspillet ditt blir lest av høringsutvalget vårt og veier inn i svaret vi sender kommunen.", + "form_description": "Fortell hvilken sak det gjelder og hva du mener.", + "form_title": "Send et høringsinnspill", + "heading": "Få din mening med i høringssvaret", + "hints": { + "innspill": "Jeg mener det bør settes opp fartsdumper langs den nye traseen, for barna krysser der til skolen.", + "navn": "Kari Nordmann", + "sak": "Reguleringsplan for Tomterveien" + }, + "icon": "megaphone", + "labels": { + "innspill": "Hva mener du?", + "navn": "Navn", + "sak": "Hvilken sak gjelder det?" + }, + "road_description": "Innspillet ditt kommer inn hos høringsutvalget. De vurderer om det tas med i velets svar til kommunen, eller om det ikke passer inn denne gangen.", + "road_icon": "route", + "road_title": "Hva skjer videre", + "who_description": "Høringsutvalget i Tomter Vel leser innspillet ditt; i mellomtiden kan du nå styret på post@tomtervel.no.", + "who_icon": "users", + "who_title": "Hvem leser dette" + } + }, + "question": "Hva gjelder det for deg?" +} +``` diff --git a/runs/tomtervel-committees-2026-09-23/llm/08-questions_kasserer_index.yaml.md b/runs/tomtervel-committees-2026-09-23/llm/08-questions_kasserer_index.yaml.md new file mode 100644 index 0000000..69635a8 --- /dev/null +++ b/runs/tomtervel-committees-2026-09-23/llm/08-questions_kasserer_index.yaml.md @@ -0,0 +1,110 @@ +You write the words for one page of a website for this business. + +Business: Tomter Vel +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. +Contact: Styret i Tomter Vel +Language to write in: no + +Everyone the site serves: +- door medlem: for en husstand i Tomter som vil bli medlem, betale kontingent, eller melde flytting, ny e-post eller utmelding; behind it: bli-medlem, endre-medlemskap +- door melde-fra: for noen som har sett noe farlig i trafikken, eller noe ødelagt på lekeplassen eller stien; behind it: trafikkfare, anleggsfeil +- door bidra: for noen som vil stille opp på 17. mai, dugnad eller et arrangement, eller sitte i en komité; behind it: hjelpe-til, komite +- door naboer: for en nabo som trenger en hånd med snømåking, handling eller skyss, kan gi en, eller har noe å låne ut; behind it: trenger-hjelp, kan-hjelpe, dele-utstyr +- bli-medlem: en husstand i Tomter - wants: å bli medlem og få betalt kontingenten. Handled by kasserer. Stages: open -> betalt -> utmeldt. +- endre-medlemskap: et medlem som har flyttet, byttet e-post eller vil melde seg ut - wants: at velet har riktige opplysninger om dem. Handled by kasserer. Stages: open -> oppdatert. +- trafikkfare: en som har sett et farlig sted i trafikken - wants: at velet tar det opp med kommunen eller den som eier veien. Handled by trafikk. Stages: open -> tatt_opp -> ordnet -> avvist. +- anleggsfeil: en som ser at noe på lekeplassen eller stien er ødelagt - wants: at det blir fikset før noen skader seg. Handled by lekeplasser. Stages: open -> tatt_tak_i -> utbedret. +- horingsinnspill: en beboer som har en mening om en sak kommunen har på høring - wants: at velet tar det med i sitt svar. Handled by horingsinstans. Stages: open -> tatt_med -> ikke_tatt_med. +- hjelpe-til: en som vil hjelpe til på et arrangement eller en dugnad - wants: å bli satt opp på noe som passer dem. Handled by arrangementer. Stages: open -> kontaktet -> satt_opp -> takket_nei. +- komite: en som vil sitte i en komité - wants: en plass i den komiteen som driver med det de bryr seg om. Handled by styret. Stages: open -> plassert -> avslatt. +- trenger-hjelp: 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. Handled by nabohjelp. Stages: open -> formidlet -> ordnet -> ikke_lost. +- kan-hjelpe: en nabo som kan stille opp når noen trenger det - wants: å bli spurt når det passer. Handled by nabohjelp. Stages: open -> registrert -> trukket. +- dele-utstyr: en nabo som har noe å låne ut, eller trenger å låne noe - wants: et oppslag som naboene ser. Handled by styret. Stages: open -> lagt_ut -> tatt_ned. +- utlegg: en i en komité som har lagt ut for noe - wants: pengene tilbake. Handled by kasserer. Stages: open -> godkjent -> utbetalt -> avvist. + +The page: questions/kasserer/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. +- The button says what pressing it does; the encouragement says what happens next or how little it takes; the form's guidance line says what to have ready. Placeholders are example answers in the reader's words. +- An icon is one name from this list, chosen for what the reader is doing, or empty: house, building-2, store, school, map-pin, route, footprints, trees, leaf, snowflake, sun, users, user, user-plus, user-check, baby, heart-handshake, hand-helping, handshake, smile, mail, phone, message-circle, megaphone, bell, send, inbox, alert-triangle, siren, shield, construction, hammer, wrench, ruler, package, truck, car, bus, train-front, bike, calendar, clock, file-text, clipboard-list, receipt, wallet, coins, banknote, credit-card, key, lock, search, star, gift, shopping-cart, lightbulb, flag, thumbs-up, check-circle, briefcase, stethoscope, activity, camera, pencil, refresh-cw, list, layers, vote, scale +- Write the way people in this trade and country actually speak. + +{ + "buckets": { + "husstander": { + "description": "", + "heading": "", + "moves": { + "open->betalt": "betalt>", + "open->utmeldt": "utmeldt>" + } + }, + "medlemsendringer": { + "description": "", + "heading": "", + "moves": { + "open->oppdatert": "oppdatert>" + } + }, + "utlegg": { + "description": "", + "heading": "", + "moves": { + "godkjent->avvist": "avvist>", + "godkjent->utbetalt": "utbetalt>", + "open->avvist": "avvist>", + "open->godkjent": "godkjent>" + } + } + }, + "confirm": "", + "description": "", + "links": {}, + "question": "" +} + +Reply with the JSON object only. + +=== REPLY === +```json +{ + "buckets": { + "husstander": { + "description": "Husstander som har meldt seg inn og venter på å bli registrert som betalende medlem.", + "heading": "Nye medlemmer som venter på registrering", + "moves": { + "open->betalt": "Registrer betaling", + "open->utmeldt": "Meld ut" + } + }, + "medlemsendringer": { + "description": "Medlemmer som har flyttet, byttet e-post eller vil melde seg ut, og venter på at opplysningene blir oppdatert.", + "heading": "Endringer som venter på å bli registrert", + "moves": { + "open->oppdatert": "Registrer endring" + } + }, + "utlegg": { + "description": "Utlegg fra komitémedlemmer som venter på godkjenning eller utbetaling.", + "heading": "Utlegg som venter på deg", + "moves": { + "godkjent->avvist": "Avvis likevel", + "godkjent->utbetalt": "Merk som utbetalt", + "open->avvist": "Avvis utlegg", + "open->godkjent": "Godkjenn utlegg" + } + } + }, + "confirm": "Lagre", + "description": "Her har du oversikt over medlemmer, endringer og utlegg som venter på deg som kasserer.", + "links": {}, + "question": "Hva venter på meg som kasserer akkurat nå?" +} +``` diff --git a/runs/tomtervel-committees-2026-09-23/llm/09-questions_komiteer_index.yaml.md b/runs/tomtervel-committees-2026-09-23/llm/09-questions_komiteer_index.yaml.md new file mode 100644 index 0000000..0ef8881 --- /dev/null +++ b/runs/tomtervel-committees-2026-09-23/llm/09-questions_komiteer_index.yaml.md @@ -0,0 +1,70 @@ +You write the words for one page of a website for this business. + +Business: Tomter Vel +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. +Contact: Styret i Tomter Vel +Language to write in: no + +Everyone the site serves: +- door medlem: for en husstand i Tomter som vil bli medlem, betale kontingent, eller melde flytting, ny e-post eller utmelding; behind it: bli-medlem, endre-medlemskap +- door melde-fra: for noen som har sett noe farlig i trafikken, eller noe ødelagt på lekeplassen eller stien; behind it: trafikkfare, anleggsfeil +- door bidra: for noen som vil stille opp på 17. mai, dugnad eller et arrangement, eller sitte i en komité; behind it: hjelpe-til, komite +- door naboer: for en nabo som trenger en hånd med snømåking, handling eller skyss, kan gi en, eller har noe å låne ut; behind it: trenger-hjelp, kan-hjelpe, dele-utstyr +- bli-medlem: en husstand i Tomter - wants: å bli medlem og få betalt kontingenten. Handled by kasserer. Stages: open -> betalt -> utmeldt. +- endre-medlemskap: et medlem som har flyttet, byttet e-post eller vil melde seg ut - wants: at velet har riktige opplysninger om dem. Handled by kasserer. Stages: open -> oppdatert. +- trafikkfare: en som har sett et farlig sted i trafikken - wants: at velet tar det opp med kommunen eller den som eier veien. Handled by trafikk. Stages: open -> tatt_opp -> ordnet -> avvist. +- anleggsfeil: en som ser at noe på lekeplassen eller stien er ødelagt - wants: at det blir fikset før noen skader seg. Handled by lekeplasser. Stages: open -> tatt_tak_i -> utbedret. +- horingsinnspill: en beboer som har en mening om en sak kommunen har på høring - wants: at velet tar det med i sitt svar. Handled by horingsinstans. Stages: open -> tatt_med -> ikke_tatt_med. +- hjelpe-til: en som vil hjelpe til på et arrangement eller en dugnad - wants: å bli satt opp på noe som passer dem. Handled by arrangementer. Stages: open -> kontaktet -> satt_opp -> takket_nei. +- komite: en som vil sitte i en komité - wants: en plass i den komiteen som driver med det de bryr seg om. Handled by styret. Stages: open -> plassert -> avslatt. +- trenger-hjelp: 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. Handled by nabohjelp. Stages: open -> formidlet -> ordnet -> ikke_lost. +- kan-hjelpe: en nabo som kan stille opp når noen trenger det - wants: å bli spurt når det passer. Handled by nabohjelp. Stages: open -> registrert -> trukket. +- dele-utstyr: en nabo som har noe å låne ut, eller trenger å låne noe - wants: et oppslag som naboene ser. Handled by styret. Stages: open -> lagt_ut -> tatt_ned. +- utlegg: en i en komité som har lagt ut for noe - wants: pengene tilbake. Handled by kasserer. Stages: open -> godkjent -> utbetalt -> avvist. + +The page: questions/komiteer/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. +- The button says what pressing it does; the encouragement says what happens next or how little it takes; the form's guidance line says what to have ready. Placeholders are example answers in the reader's words. +- An icon is one name from this list, chosen for what the reader is doing, or empty: house, building-2, store, school, map-pin, route, footprints, trees, leaf, snowflake, sun, users, user, user-plus, user-check, baby, heart-handshake, hand-helping, handshake, smile, mail, phone, message-circle, megaphone, bell, send, inbox, alert-triangle, siren, shield, construction, hammer, wrench, ruler, package, truck, car, bus, train-front, bike, calendar, clock, file-text, clipboard-list, receipt, wallet, coins, banknote, credit-card, key, lock, search, star, gift, shopping-cart, lightbulb, flag, thumbs-up, check-circle, briefcase, stethoscope, activity, camera, pencil, refresh-cw, list, layers, vote, scale +- Write the way people in this trade and country actually speak. + +{ + "buckets": {}, + "confirm": "", + "description": "", + "links": { + "utlegg": { + "button": "", + "description": "", + "heading": "" + } + }, + "question": "" +} + +Reply with the JSON object only. + +=== REPLY === +```json +{ + "buckets": {}, + "confirm": "Lagre endring", + "description": "Her holder du oversikt over sakene komiteen din har ansvar for, og flytter dem videre etter hvert som de blir fulgt opp.", + "links": { + "utlegg": { + "button": "Send utlegg", + "description": "Har du lagt ut for noe til komiteen? Send det inn så kasserer kan betale deg tilbake.", + "heading": "Få tilbake det du har lagt ut" + } + }, + "question": "Hva står ubehandlet i komiteen din nå?" +} +``` diff --git a/runs/tomtervel-committees-2026-09-23/llm/10-questions_komiteer_utlegg-sent.yaml.md b/runs/tomtervel-committees-2026-09-23/llm/10-questions_komiteer_utlegg-sent.yaml.md new file mode 100644 index 0000000..350f2a2 --- /dev/null +++ b/runs/tomtervel-committees-2026-09-23/llm/10-questions_komiteer_utlegg-sent.yaml.md @@ -0,0 +1,58 @@ +You write the words for one page of a website for this business. + +Business: Tomter Vel +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. +Contact: Styret i Tomter Vel +Language to write in: no + +Everyone the site serves: +- door medlem: for en husstand i Tomter som vil bli medlem, betale kontingent, eller melde flytting, ny e-post eller utmelding; behind it: bli-medlem, endre-medlemskap +- door melde-fra: for noen som har sett noe farlig i trafikken, eller noe ødelagt på lekeplassen eller stien; behind it: trafikkfare, anleggsfeil +- door bidra: for noen som vil stille opp på 17. mai, dugnad eller et arrangement, eller sitte i en komité; behind it: hjelpe-til, komite +- door naboer: for en nabo som trenger en hånd med snømåking, handling eller skyss, kan gi en, eller har noe å låne ut; behind it: trenger-hjelp, kan-hjelpe, dele-utstyr +- bli-medlem: en husstand i Tomter - wants: å bli medlem og få betalt kontingenten. Handled by kasserer. Stages: open -> betalt -> utmeldt. +- endre-medlemskap: et medlem som har flyttet, byttet e-post eller vil melde seg ut - wants: at velet har riktige opplysninger om dem. Handled by kasserer. Stages: open -> oppdatert. +- trafikkfare: en som har sett et farlig sted i trafikken - wants: at velet tar det opp med kommunen eller den som eier veien. Handled by trafikk. Stages: open -> tatt_opp -> ordnet -> avvist. +- anleggsfeil: en som ser at noe på lekeplassen eller stien er ødelagt - wants: at det blir fikset før noen skader seg. Handled by lekeplasser. Stages: open -> tatt_tak_i -> utbedret. +- horingsinnspill: en beboer som har en mening om en sak kommunen har på høring - wants: at velet tar det med i sitt svar. Handled by horingsinstans. Stages: open -> tatt_med -> ikke_tatt_med. +- hjelpe-til: en som vil hjelpe til på et arrangement eller en dugnad - wants: å bli satt opp på noe som passer dem. Handled by arrangementer. Stages: open -> kontaktet -> satt_opp -> takket_nei. +- komite: en som vil sitte i en komité - wants: en plass i den komiteen som driver med det de bryr seg om. Handled by styret. Stages: open -> plassert -> avslatt. +- trenger-hjelp: 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. Handled by nabohjelp. Stages: open -> formidlet -> ordnet -> ikke_lost. +- kan-hjelpe: en nabo som kan stille opp når noen trenger det - wants: å bli spurt når det passer. Handled by nabohjelp. Stages: open -> registrert -> trukket. +- dele-utstyr: en nabo som har noe å låne ut, eller trenger å låne noe - wants: et oppslag som naboene ser. Handled by styret. Stages: open -> lagt_ut -> tatt_ned. +- utlegg: en i en komité som har lagt ut for noe - wants: pengene tilbake. Handled by kasserer. Stages: open -> godkjent -> utbetalt -> avvist. + +The page: questions/komiteer/utlegg-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. +- The button says what pressing it does; the encouragement says what happens next or how little it takes; the form's guidance line says what to have ready. Placeholders are example answers in the reader's words. +- An icon is one name from this list, chosen for what the reader is doing, or empty: house, building-2, store, school, map-pin, route, footprints, trees, leaf, snowflake, sun, users, user, user-plus, user-check, baby, heart-handshake, hand-helping, handshake, smile, mail, phone, message-circle, megaphone, bell, send, inbox, alert-triangle, siren, shield, construction, hammer, wrench, ruler, package, truck, car, bus, train-front, bike, calendar, clock, file-text, clipboard-list, receipt, wallet, coins, banknote, credit-card, key, lock, search, star, gift, shopping-cart, lightbulb, flag, thumbs-up, check-circle, briefcase, stethoscope, activity, camera, pencil, refresh-cw, list, layers, vote, scale +- Write the way people in this trade and country actually speak. + +{ + "back": "", + "description": "", + "next_description": "", + "next_heading": "", + "question": "" +} + +Reply with the JSON object only. + +=== REPLY === +```json +{ + "back": "Til forsiden", + "description": "Utlegget er sendt til kasserer. Du får beskjed når det er sjekket.", + "next_description": "Kasserer ser gjennom kvitteringen og overfører pengene til kontoen du oppga.", + "next_heading": "Pengene kommer på konto", + "question": "Hva skjer med utlegget mitt nå?" +} +``` diff --git a/runs/tomtervel-committees-2026-09-23/llm/11-questions_komiteer_utlegg.yaml.md b/runs/tomtervel-committees-2026-09-23/llm/11-questions_komiteer_utlegg.yaml.md new file mode 100644 index 0000000..29afa32 --- /dev/null +++ b/runs/tomtervel-committees-2026-09-23/llm/11-questions_komiteer_utlegg.yaml.md @@ -0,0 +1,98 @@ +You write the words for one page of a website for this business. + +Business: Tomter Vel +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. +Contact: Styret i Tomter Vel +Language to write in: no + +Everyone the site serves: +- door medlem: for en husstand i Tomter som vil bli medlem, betale kontingent, eller melde flytting, ny e-post eller utmelding; behind it: bli-medlem, endre-medlemskap +- door melde-fra: for noen som har sett noe farlig i trafikken, eller noe ødelagt på lekeplassen eller stien; behind it: trafikkfare, anleggsfeil +- door bidra: for noen som vil stille opp på 17. mai, dugnad eller et arrangement, eller sitte i en komité; behind it: hjelpe-til, komite +- door naboer: for en nabo som trenger en hånd med snømåking, handling eller skyss, kan gi en, eller har noe å låne ut; behind it: trenger-hjelp, kan-hjelpe, dele-utstyr +- bli-medlem: en husstand i Tomter - wants: å bli medlem og få betalt kontingenten. Handled by kasserer. Stages: open -> betalt -> utmeldt. +- endre-medlemskap: et medlem som har flyttet, byttet e-post eller vil melde seg ut - wants: at velet har riktige opplysninger om dem. Handled by kasserer. Stages: open -> oppdatert. +- trafikkfare: en som har sett et farlig sted i trafikken - wants: at velet tar det opp med kommunen eller den som eier veien. Handled by trafikk. Stages: open -> tatt_opp -> ordnet -> avvist. +- anleggsfeil: en som ser at noe på lekeplassen eller stien er ødelagt - wants: at det blir fikset før noen skader seg. Handled by lekeplasser. Stages: open -> tatt_tak_i -> utbedret. +- horingsinnspill: en beboer som har en mening om en sak kommunen har på høring - wants: at velet tar det med i sitt svar. Handled by horingsinstans. Stages: open -> tatt_med -> ikke_tatt_med. +- hjelpe-til: en som vil hjelpe til på et arrangement eller en dugnad - wants: å bli satt opp på noe som passer dem. Handled by arrangementer. Stages: open -> kontaktet -> satt_opp -> takket_nei. +- komite: en som vil sitte i en komité - wants: en plass i den komiteen som driver med det de bryr seg om. Handled by styret. Stages: open -> plassert -> avslatt. +- trenger-hjelp: 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. Handled by nabohjelp. Stages: open -> formidlet -> ordnet -> ikke_lost. +- kan-hjelpe: en nabo som kan stille opp når noen trenger det - wants: å bli spurt når det passer. Handled by nabohjelp. Stages: open -> registrert -> trukket. +- dele-utstyr: en nabo som har noe å låne ut, eller trenger å låne noe - wants: et oppslag som naboene ser. Handled by styret. Stages: open -> lagt_ut -> tatt_ned. +- utlegg: en i en komité som har lagt ut for noe - wants: pengene tilbake. Handled by kasserer. Stages: open -> godkjent -> utbetalt -> avvist. + +The page: questions/komiteer/utlegg.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. +- The button says what pressing it does; the encouragement says what happens next or how little it takes; the form's guidance line says what to have ready. Placeholders are example answers in the reader's words. +- An icon is one name from this list, chosen for what the reader is doing, or empty: house, building-2, store, school, map-pin, route, footprints, trees, leaf, snowflake, sun, users, user, user-plus, user-check, baby, heart-handshake, hand-helping, handshake, smile, mail, phone, message-circle, megaphone, bell, send, inbox, alert-triangle, siren, shield, construction, hammer, wrench, ruler, package, truck, car, bus, train-front, bike, calendar, clock, file-text, clipboard-list, receipt, wallet, coins, banknote, credit-card, key, lock, search, star, gift, shopping-cart, lightbulb, flag, thumbs-up, check-circle, briefcase, stethoscope, activity, camera, pencil, refresh-cw, list, layers, vote, scale +- Write the way people in this trade and country actually speak. + +{ + "button": "", + "description": "", + "encouragement": "", + "form_description": "", + "form_title": "", + "heading": "", + "hints": { + "belop": "", + "hva": "", + "navn": "" + }, + "icon": "", + "labels": { + "belop": "", + "hva": "", + "navn": "" + }, + "page_description": "", + "question": "", + "road_description": "", + "road_icon": "", + "road_title": "", + "who_description": "", + "who_icon": "", + "who_title": "" +} + +Reply with the JSON object only. + +=== REPLY === +```json +{ + "button": "Send inn", + "description": "Har du lagt ut for noe til komiteen? Send det inn, så ordner kasserer resten.", + "encouragement": "Legg ved bilag om du har det, så går det raskere.", + "form_description": "Ha kvittering eller bilag klart før du fyller ut.", + "form_title": "Krav om refusjon", + "heading": "Få pengene tilbake", + "hints": { + "belop": "450 kr", + "hva": "Kaffe og kjeks til dugnaden", + "navn": "Kari Nordmann" + }, + "icon": "receipt", + "labels": { + "belop": "Beløp", + "hva": "Hva gjaldt det", + "navn": "Navn" + }, + "page_description": "Har du betalt for noe på vegne av en komité? Send inn utlegget, så får du pengene tilbake.", + "question": "Har du lagt ut penger for komiteen og vil ha dem tilbake?", + "road_description": "Kasserer ser gjennom kravet og godkjenner det, og deretter blir pengene utbetalt til deg. Blir det avvist, hører du hvorfor.", + "road_icon": "wallet", + "road_title": "Fra krav til utbetaling", + "who_description": "Kasserer i styret leser kravet ditt, og kan nås på post@tomtervel.no om det haster.", + "who_icon": "coins", + "who_title": "Kasserer ser dette" +} +``` diff --git a/runs/tomtervel-committees-2026-09-23/llm/12-questions_lekeplasser_index.yaml.md b/runs/tomtervel-committees-2026-09-23/llm/12-questions_lekeplasser_index.yaml.md new file mode 100644 index 0000000..8a3681a --- /dev/null +++ b/runs/tomtervel-committees-2026-09-23/llm/12-questions_lekeplasser_index.yaml.md @@ -0,0 +1,76 @@ +You write the words for one page of a website for this business. + +Business: Tomter Vel +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. +Contact: Styret i Tomter Vel +Language to write in: no + +Everyone the site serves: +- door medlem: for en husstand i Tomter som vil bli medlem, betale kontingent, eller melde flytting, ny e-post eller utmelding; behind it: bli-medlem, endre-medlemskap +- door melde-fra: for noen som har sett noe farlig i trafikken, eller noe ødelagt på lekeplassen eller stien; behind it: trafikkfare, anleggsfeil +- door bidra: for noen som vil stille opp på 17. mai, dugnad eller et arrangement, eller sitte i en komité; behind it: hjelpe-til, komite +- door naboer: for en nabo som trenger en hånd med snømåking, handling eller skyss, kan gi en, eller har noe å låne ut; behind it: trenger-hjelp, kan-hjelpe, dele-utstyr +- bli-medlem: en husstand i Tomter - wants: å bli medlem og få betalt kontingenten. Handled by kasserer. Stages: open -> betalt -> utmeldt. +- endre-medlemskap: et medlem som har flyttet, byttet e-post eller vil melde seg ut - wants: at velet har riktige opplysninger om dem. Handled by kasserer. Stages: open -> oppdatert. +- trafikkfare: en som har sett et farlig sted i trafikken - wants: at velet tar det opp med kommunen eller den som eier veien. Handled by trafikk. Stages: open -> tatt_opp -> ordnet -> avvist. +- anleggsfeil: en som ser at noe på lekeplassen eller stien er ødelagt - wants: at det blir fikset før noen skader seg. Handled by lekeplasser. Stages: open -> tatt_tak_i -> utbedret. +- horingsinnspill: en beboer som har en mening om en sak kommunen har på høring - wants: at velet tar det med i sitt svar. Handled by horingsinstans. Stages: open -> tatt_med -> ikke_tatt_med. +- hjelpe-til: en som vil hjelpe til på et arrangement eller en dugnad - wants: å bli satt opp på noe som passer dem. Handled by arrangementer. Stages: open -> kontaktet -> satt_opp -> takket_nei. +- komite: en som vil sitte i en komité - wants: en plass i den komiteen som driver med det de bryr seg om. Handled by styret. Stages: open -> plassert -> avslatt. +- trenger-hjelp: 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. Handled by nabohjelp. Stages: open -> formidlet -> ordnet -> ikke_lost. +- kan-hjelpe: en nabo som kan stille opp når noen trenger det - wants: å bli spurt når det passer. Handled by nabohjelp. Stages: open -> registrert -> trukket. +- dele-utstyr: en nabo som har noe å låne ut, eller trenger å låne noe - wants: et oppslag som naboene ser. Handled by styret. Stages: open -> lagt_ut -> tatt_ned. +- utlegg: en i en komité som har lagt ut for noe - wants: pengene tilbake. Handled by kasserer. Stages: open -> godkjent -> utbetalt -> avvist. + +The page: questions/lekeplasser/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. +- The button says what pressing it does; the encouragement says what happens next or how little it takes; the form's guidance line says what to have ready. Placeholders are example answers in the reader's words. +- An icon is one name from this list, chosen for what the reader is doing, or empty: house, building-2, store, school, map-pin, route, footprints, trees, leaf, snowflake, sun, users, user, user-plus, user-check, baby, heart-handshake, hand-helping, handshake, smile, mail, phone, message-circle, megaphone, bell, send, inbox, alert-triangle, siren, shield, construction, hammer, wrench, ruler, package, truck, car, bus, train-front, bike, calendar, clock, file-text, clipboard-list, receipt, wallet, coins, banknote, credit-card, key, lock, search, star, gift, shopping-cart, lightbulb, flag, thumbs-up, check-circle, briefcase, stethoscope, activity, camera, pencil, refresh-cw, list, layers, vote, scale +- Write the way people in this trade and country actually speak. + +{ + "buckets": { + "anleggsfeil": { + "description": "", + "heading": "", + "moves": { + "open->tatt_tak_i": "tatt_tak_i>", + "tatt_tak_i->utbedret": "utbedret>" + } + } + }, + "confirm": "", + "description": "", + "links": {}, + "question": "" +} + +Reply with the JSON object only. + +=== REPLY === +```json +{ + "buckets": { + "anleggsfeil": { + "description": "Meldinger om noe som er ødelagt på lekeplassen eller langs stien, og som bør fikses.", + "heading": "Det som er meldt inn av skader", + "moves": { + "open->tatt_tak_i": "Ta tak i saken", + "tatt_tak_i->utbedret": "Merk som utbedret" + } + } + }, + "confirm": "Lagre", + "description": "Her følger komiteen for lekeplassene opp det som er meldt inn av skader, til det er fikset.", + "links": {}, + "question": "Hva må fikses på lekeplassene og stien nå?" +} +``` diff --git a/runs/tomtervel-committees-2026-09-23/llm/13-questions_medlem_index.yaml.md b/runs/tomtervel-committees-2026-09-23/llm/13-questions_medlem_index.yaml.md new file mode 100644 index 0000000..ae66041 --- /dev/null +++ b/runs/tomtervel-committees-2026-09-23/llm/13-questions_medlem_index.yaml.md @@ -0,0 +1,160 @@ +You write the words for one page of a website for this business. + +Business: Tomter Vel +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. +Contact: Styret i Tomter Vel +Language to write in: no + +Everyone the site serves: +- door medlem: for en husstand i Tomter som vil bli medlem, betale kontingent, eller melde flytting, ny e-post eller utmelding; behind it: bli-medlem, endre-medlemskap +- door melde-fra: for noen som har sett noe farlig i trafikken, eller noe ødelagt på lekeplassen eller stien; behind it: trafikkfare, anleggsfeil +- door bidra: for noen som vil stille opp på 17. mai, dugnad eller et arrangement, eller sitte i en komité; behind it: hjelpe-til, komite +- door naboer: for en nabo som trenger en hånd med snømåking, handling eller skyss, kan gi en, eller har noe å låne ut; behind it: trenger-hjelp, kan-hjelpe, dele-utstyr +- bli-medlem: en husstand i Tomter - wants: å bli medlem og få betalt kontingenten. Handled by kasserer. Stages: open -> betalt -> utmeldt. +- endre-medlemskap: et medlem som har flyttet, byttet e-post eller vil melde seg ut - wants: at velet har riktige opplysninger om dem. Handled by kasserer. Stages: open -> oppdatert. +- trafikkfare: en som har sett et farlig sted i trafikken - wants: at velet tar det opp med kommunen eller den som eier veien. Handled by trafikk. Stages: open -> tatt_opp -> ordnet -> avvist. +- anleggsfeil: en som ser at noe på lekeplassen eller stien er ødelagt - wants: at det blir fikset før noen skader seg. Handled by lekeplasser. Stages: open -> tatt_tak_i -> utbedret. +- horingsinnspill: en beboer som har en mening om en sak kommunen har på høring - wants: at velet tar det med i sitt svar. Handled by horingsinstans. Stages: open -> tatt_med -> ikke_tatt_med. +- hjelpe-til: en som vil hjelpe til på et arrangement eller en dugnad - wants: å bli satt opp på noe som passer dem. Handled by arrangementer. Stages: open -> kontaktet -> satt_opp -> takket_nei. +- komite: en som vil sitte i en komité - wants: en plass i den komiteen som driver med det de bryr seg om. Handled by styret. Stages: open -> plassert -> avslatt. +- trenger-hjelp: 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. Handled by nabohjelp. Stages: open -> formidlet -> ordnet -> ikke_lost. +- kan-hjelpe: en nabo som kan stille opp når noen trenger det - wants: å bli spurt når det passer. Handled by nabohjelp. Stages: open -> registrert -> trukket. +- dele-utstyr: en nabo som har noe å låne ut, eller trenger å låne noe - wants: et oppslag som naboene ser. Handled by styret. Stages: open -> lagt_ut -> tatt_ned. +- utlegg: en i en komité som har lagt ut for noe - wants: pengene tilbake. Handled by kasserer. Stages: open -> godkjent -> utbetalt -> avvist. + +The page: questions/medlem/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. +- The button says what pressing it does; the encouragement says what happens next or how little it takes; the form's guidance line says what to have ready. Placeholders are example answers in the reader's words. +- An icon is one name from this list, chosen for what the reader is doing, or empty: house, building-2, store, school, map-pin, route, footprints, trees, leaf, snowflake, sun, users, user, user-plus, user-check, baby, heart-handshake, hand-helping, handshake, smile, mail, phone, message-circle, megaphone, bell, send, inbox, alert-triangle, siren, shield, construction, hammer, wrench, ruler, package, truck, car, bus, train-front, bike, calendar, clock, file-text, clipboard-list, receipt, wallet, coins, banknote, credit-card, key, lock, search, star, gift, shopping-cart, lightbulb, flag, thumbs-up, check-circle, briefcase, stethoscope, activity, camera, pencil, refresh-cw, list, layers, vote, scale +- Write the way people in this trade and country actually speak. + +{ + "description": "", + "needs": { + "bli-medlem": { + "button": "", + "description": "", + "encouragement": "", + "form_description": "", + "form_title": "", + "heading": "", + "hints": { + "adresse": "", + "epost": "", + "navn": "", + "telefon": "" + }, + "icon": "", + "labels": { + "adresse": "", + "epost": "", + "navn": "", + "telefon": "" + }, + "road_description": "", + "road_icon": "", + "road_title": "", + "who_description": "", + "who_icon": "", + "who_title": "" + }, + "endre-medlemskap": { + "button": "", + "description": "", + "encouragement": "", + "form_description": "", + "form_title": "", + "heading": "", + "hints": { + "adresse": "", + "hva_er_nytt": "", + "navn": "" + }, + "icon": "", + "labels": { + "adresse": "", + "hva_er_nytt": "", + "navn": "" + }, + "road_description": "", + "road_icon": "", + "road_title": "", + "who_description": "", + "who_icon": "", + "who_title": "" + } + }, + "question": "" +} + +Reply with the JSON object only. + +=== REPLY === +```json +{ + "description": "Bli medlem av Tomter Vel, eller oppdater opplysningene dine hvis du allerede er medlem.", + "needs": { + "bli-medlem": { + "button": "Bli medlem", + "description": "Meld deg inn i velet, så holder vi deg oppdatert og du støtter arbeidet i nærmiljøet.", + "encouragement": "Kasserer sender deg kontingenten på e-post rett etterpå.", + "form_description": "Ha adressen i Tomter og en e-post du bruker klar.", + "form_title": "Meld deg inn", + "heading": "Bli medlem av Tomter Vel", + "hints": { + "adresse": "Tomterveien 12", + "epost": "ola.nordmann@epost.no", + "navn": "Ola Nordmann", + "telefon": "123 45 678" + }, + "icon": "user-plus", + "labels": { + "adresse": "Adresse", + "epost": "E-post", + "navn": "Navn", + "telefon": "Telefon" + }, + "road_description": "Meldingen går til kasserer, som registrerer deg og sender deg kontingenten på e-post. Når den er betalt er du medlem.", + "road_icon": "coins", + "road_title": "Etter innmelding", + "who_description": "Kasserer i styret leser dette, og du kan nå oss på post@tomtervel.no i mellomtiden.", + "who_icon": "user", + "who_title": "Hvem svarer deg" + }, + "endre-medlemskap": { + "button": "Send endring", + "description": "Har du flyttet, byttet e-post eller vil melde deg ut? Gi oss beskjed så vi har riktige opplysninger.", + "encouragement": "Det tar bare et par minutter, og kasserer ordner resten.", + "form_description": "Skriv navnet ditt og hva som er nytt.", + "form_title": "Endre medlemskap", + "heading": "Oppdater eller avslutt medlemskapet", + "hints": { + "adresse": "Ny adresse i Tomter", + "hva_er_nytt": "Ny e-post, ny adresse, eller ønske om utmelding", + "navn": "Ola Nordmann" + }, + "icon": "pencil", + "labels": { + "adresse": "Adresse", + "hva_er_nytt": "Hva vil du endre?", + "navn": "Navn" + }, + "road_description": "Kasserer får beskjeden og oppdaterer medlemslisten, eller melder deg ut om det er det du ber om.", + "road_icon": "refresh-cw", + "road_title": "Etter du sender inn", + "who_description": "Kasserer i styret leser dette, og du kan nå oss på post@tomtervel.no i mellomtiden.", + "who_icon": "user", + "who_title": "Hvem svarer deg" + } + }, + "question": "Vil du bli medlem, eller endre medlemskapet ditt?" +} +``` diff --git a/runs/tomtervel-committees-2026-09-23/llm/14-questions_melde-fra_index.yaml.md b/runs/tomtervel-committees-2026-09-23/llm/14-questions_melde-fra_index.yaml.md new file mode 100644 index 0000000..ab2687d --- /dev/null +++ b/runs/tomtervel-committees-2026-09-23/llm/14-questions_melde-fra_index.yaml.md @@ -0,0 +1,152 @@ +You write the words for one page of a website for this business. + +Business: Tomter Vel +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. +Contact: Styret i Tomter Vel +Language to write in: no + +Everyone the site serves: +- door medlem: for en husstand i Tomter som vil bli medlem, betale kontingent, eller melde flytting, ny e-post eller utmelding; behind it: bli-medlem, endre-medlemskap +- door melde-fra: for noen som har sett noe farlig i trafikken, eller noe ødelagt på lekeplassen eller stien; behind it: trafikkfare, anleggsfeil +- door bidra: for noen som vil stille opp på 17. mai, dugnad eller et arrangement, eller sitte i en komité; behind it: hjelpe-til, komite +- door naboer: for en nabo som trenger en hånd med snømåking, handling eller skyss, kan gi en, eller har noe å låne ut; behind it: trenger-hjelp, kan-hjelpe, dele-utstyr +- bli-medlem: en husstand i Tomter - wants: å bli medlem og få betalt kontingenten. Handled by kasserer. Stages: open -> betalt -> utmeldt. +- endre-medlemskap: et medlem som har flyttet, byttet e-post eller vil melde seg ut - wants: at velet har riktige opplysninger om dem. Handled by kasserer. Stages: open -> oppdatert. +- trafikkfare: en som har sett et farlig sted i trafikken - wants: at velet tar det opp med kommunen eller den som eier veien. Handled by trafikk. Stages: open -> tatt_opp -> ordnet -> avvist. +- anleggsfeil: en som ser at noe på lekeplassen eller stien er ødelagt - wants: at det blir fikset før noen skader seg. Handled by lekeplasser. Stages: open -> tatt_tak_i -> utbedret. +- horingsinnspill: en beboer som har en mening om en sak kommunen har på høring - wants: at velet tar det med i sitt svar. Handled by horingsinstans. Stages: open -> tatt_med -> ikke_tatt_med. +- hjelpe-til: en som vil hjelpe til på et arrangement eller en dugnad - wants: å bli satt opp på noe som passer dem. Handled by arrangementer. Stages: open -> kontaktet -> satt_opp -> takket_nei. +- komite: en som vil sitte i en komité - wants: en plass i den komiteen som driver med det de bryr seg om. Handled by styret. Stages: open -> plassert -> avslatt. +- trenger-hjelp: 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. Handled by nabohjelp. Stages: open -> formidlet -> ordnet -> ikke_lost. +- kan-hjelpe: en nabo som kan stille opp når noen trenger det - wants: å bli spurt når det passer. Handled by nabohjelp. Stages: open -> registrert -> trukket. +- dele-utstyr: en nabo som har noe å låne ut, eller trenger å låne noe - wants: et oppslag som naboene ser. Handled by styret. Stages: open -> lagt_ut -> tatt_ned. +- utlegg: en i en komité som har lagt ut for noe - wants: pengene tilbake. Handled by kasserer. Stages: open -> godkjent -> utbetalt -> avvist. + +The page: questions/melde-fra/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. +- The button says what pressing it does; the encouragement says what happens next or how little it takes; the form's guidance line says what to have ready. Placeholders are example answers in the reader's words. +- An icon is one name from this list, chosen for what the reader is doing, or empty: house, building-2, store, school, map-pin, route, footprints, trees, leaf, snowflake, sun, users, user, user-plus, user-check, baby, heart-handshake, hand-helping, handshake, smile, mail, phone, message-circle, megaphone, bell, send, inbox, alert-triangle, siren, shield, construction, hammer, wrench, ruler, package, truck, car, bus, train-front, bike, calendar, clock, file-text, clipboard-list, receipt, wallet, coins, banknote, credit-card, key, lock, search, star, gift, shopping-cart, lightbulb, flag, thumbs-up, check-circle, briefcase, stethoscope, activity, camera, pencil, refresh-cw, list, layers, vote, scale +- Write the way people in this trade and country actually speak. + +{ + "description": "", + "needs": { + "anleggsfeil": { + "button": "", + "description": "", + "encouragement": "", + "form_description": "", + "form_title": "", + "heading": "", + "hints": { + "hva": "", + "hvor": "" + }, + "icon": "", + "labels": { + "hva": "", + "hvor": "" + }, + "road_description": "", + "road_icon": "", + "road_title": "", + "who_description": "", + "who_icon": "", + "who_title": "" + }, + "trafikkfare": { + "button": "", + "description": "", + "encouragement": "", + "form_description": "", + "form_title": "", + "heading": "", + "hints": { + "epost": "", + "hva": "", + "hvor": "" + }, + "icon": "", + "labels": { + "epost": "", + "hva": "", + "hvor": "" + }, + "road_description": "", + "road_icon": "", + "road_title": "", + "who_description": "", + "who_icon": "", + "who_title": "" + } + }, + "question": "" +} + +Reply with the JSON object only. + +=== REPLY === +```json +{ + "description": "Har du sett noe farlig i trafikken, eller noe ødelagt på lekeplassen eller stien? Her sier du fra til velet.", + "needs": { + "anleggsfeil": { + "button": "Send inn", + "description": "Se noe ødelagt på en lekeplass eller langs elvestien, så tar lekeplasskomiteen tak i det.", + "encouragement": "Det holder med noen ord om hva du så og hvor.", + "form_description": "Fortell hva som er ødelagt og omtrent hvor det er.", + "form_title": "Meld anleggsfeil", + "heading": "Meld fra om noe ødelagt", + "hints": { + "hva": "Løs planke på gjerdet ved husken", + "hvor": "Lekeplassen ved Tomterveien, ved husken" + }, + "icon": "construction", + "labels": { + "hva": "Hva er ødelagt", + "hvor": "Hvor er det" + }, + "road_description": "Meldingen går til lekeplasskomiteen, som ser på den og tar tak i saken. Når feilen er utbedret, er saken avsluttet.", + "road_icon": "wrench", + "road_title": "Hva skjer videre", + "who_description": "Lekeplasskomiteen leser meldingen din; til det haster kan du nå styret på post@tomtervel.no.", + "who_icon": "hammer", + "who_title": "Hvem leser dette" + }, + "trafikkfare": { + "button": "Send inn", + "description": "Sett du noe farlig i trafikken? Fortell trafikkomiteen om det, så tar de det videre.", + "encouragement": "Bare noen linjer om hva og hvor er nok til at vi kan følge opp.", + "form_description": "Fortell hva du så, hvor det var, og legg gjerne igjen e-posten din hvis vi trenger å spørre mer.", + "form_title": "Meld trafikkfare", + "heading": "Meld fra om en trafikkfare", + "hints": { + "epost": "ola.nordmann@epost.no", + "hva": "Dårlig sikt i krysset, biler kjører fort", + "hvor": "Krysset Tomterveien / Elvestien" + }, + "icon": "alert-triangle", + "labels": { + "epost": "E-post (valgfritt)", + "hva": "Hva så du", + "hvor": "Hvor var det" + }, + "road_description": "Trafikkomiteen tar meldingen din opp med kommunen eller den som eier veien. Du får vite om saken blir ordnet eller avvist.", + "road_icon": "route", + "road_title": "Hva skjer videre", + "who_description": "Trafikkomiteen leser meldingen din; haster det, kan du nå styret på post@tomtervel.no.", + "who_icon": "car", + "who_title": "Hvem leser dette" + } + }, + "question": "Hva vil du melde fra om?" +} +``` diff --git a/runs/tomtervel-committees-2026-09-23/llm/15-questions_naboer_index.yaml.md b/runs/tomtervel-committees-2026-09-23/llm/15-questions_naboer_index.yaml.md new file mode 100644 index 0000000..138bfd6 --- /dev/null +++ b/runs/tomtervel-committees-2026-09-23/llm/15-questions_naboer_index.yaml.md @@ -0,0 +1,222 @@ +You write the words for one page of a website for this business. + +Business: Tomter Vel +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. +Contact: Styret i Tomter Vel +Language to write in: no + +Everyone the site serves: +- door medlem: for en husstand i Tomter som vil bli medlem, betale kontingent, eller melde flytting, ny e-post eller utmelding; behind it: bli-medlem, endre-medlemskap +- door melde-fra: for noen som har sett noe farlig i trafikken, eller noe ødelagt på lekeplassen eller stien; behind it: trafikkfare, anleggsfeil +- door bidra: for noen som vil stille opp på 17. mai, dugnad eller et arrangement, eller sitte i en komité; behind it: hjelpe-til, komite +- door naboer: for en nabo som trenger en hånd med snømåking, handling eller skyss, kan gi en, eller har noe å låne ut; behind it: trenger-hjelp, kan-hjelpe, dele-utstyr +- bli-medlem: en husstand i Tomter - wants: å bli medlem og få betalt kontingenten. Handled by kasserer. Stages: open -> betalt -> utmeldt. +- endre-medlemskap: et medlem som har flyttet, byttet e-post eller vil melde seg ut - wants: at velet har riktige opplysninger om dem. Handled by kasserer. Stages: open -> oppdatert. +- trafikkfare: en som har sett et farlig sted i trafikken - wants: at velet tar det opp med kommunen eller den som eier veien. Handled by trafikk. Stages: open -> tatt_opp -> ordnet -> avvist. +- anleggsfeil: en som ser at noe på lekeplassen eller stien er ødelagt - wants: at det blir fikset før noen skader seg. Handled by lekeplasser. Stages: open -> tatt_tak_i -> utbedret. +- horingsinnspill: en beboer som har en mening om en sak kommunen har på høring - wants: at velet tar det med i sitt svar. Handled by horingsinstans. Stages: open -> tatt_med -> ikke_tatt_med. +- hjelpe-til: en som vil hjelpe til på et arrangement eller en dugnad - wants: å bli satt opp på noe som passer dem. Handled by arrangementer. Stages: open -> kontaktet -> satt_opp -> takket_nei. +- komite: en som vil sitte i en komité - wants: en plass i den komiteen som driver med det de bryr seg om. Handled by styret. Stages: open -> plassert -> avslatt. +- trenger-hjelp: 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. Handled by nabohjelp. Stages: open -> formidlet -> ordnet -> ikke_lost. +- kan-hjelpe: en nabo som kan stille opp når noen trenger det - wants: å bli spurt når det passer. Handled by nabohjelp. Stages: open -> registrert -> trukket. +- dele-utstyr: en nabo som har noe å låne ut, eller trenger å låne noe - wants: et oppslag som naboene ser. Handled by styret. Stages: open -> lagt_ut -> tatt_ned. +- utlegg: en i en komité som har lagt ut for noe - wants: pengene tilbake. Handled by kasserer. Stages: open -> godkjent -> utbetalt -> avvist. + +The page: questions/naboer/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. +- The button says what pressing it does; the encouragement says what happens next or how little it takes; the form's guidance line says what to have ready. Placeholders are example answers in the reader's words. +- An icon is one name from this list, chosen for what the reader is doing, or empty: house, building-2, store, school, map-pin, route, footprints, trees, leaf, snowflake, sun, users, user, user-plus, user-check, baby, heart-handshake, hand-helping, handshake, smile, mail, phone, message-circle, megaphone, bell, send, inbox, alert-triangle, siren, shield, construction, hammer, wrench, ruler, package, truck, car, bus, train-front, bike, calendar, clock, file-text, clipboard-list, receipt, wallet, coins, banknote, credit-card, key, lock, search, star, gift, shopping-cart, lightbulb, flag, thumbs-up, check-circle, briefcase, stethoscope, activity, camera, pencil, refresh-cw, list, layers, vote, scale +- Write the way people in this trade and country actually speak. + +{ + "description": "", + "needs": { + "dele-utstyr": { + "button": "", + "description": "", + "encouragement": "", + "form_description": "", + "form_title": "", + "heading": "", + "hints": { + "email": "", + "har_eller_trenger": "", + "hva": "", + "navn": "" + }, + "icon": "", + "labels": { + "email": "", + "har_eller_trenger": "", + "hva": "", + "navn": "" + }, + "road_description": "", + "road_icon": "", + "road_title": "", + "who_description": "", + "who_icon": "", + "who_title": "" + }, + "kan-hjelpe": { + "button": "", + "description": "", + "encouragement": "", + "form_description": "", + "form_title": "", + "heading": "", + "hints": { + "email": "", + "kan": "", + "navn": "", + "telefon": "" + }, + "icon": "", + "labels": { + "email": "", + "kan": "", + "navn": "", + "telefon": "" + }, + "road_description": "", + "road_icon": "", + "road_title": "", + "who_description": "", + "who_icon": "", + "who_title": "" + }, + "trenger-hjelp": { + "button": "", + "description": "", + "encouragement": "", + "form_description": "", + "form_title": "", + "heading": "", + "hints": { + "adresse": "", + "email": "", + "hva": "", + "navn": "", + "telefon": "" + }, + "icon": "", + "labels": { + "adresse": "", + "email": "", + "hva": "", + "navn": "", + "telefon": "" + }, + "road_description": "", + "road_icon": "", + "road_title": "", + "who_description": "", + "who_icon": "", + "who_title": "" + } + }, + "question": "" +} + +Reply with the JSON object only. + +=== REPLY === +```json +{ + "description": "Godt naboskap gjør hverdagen lettere. Trenger du en hånd, kan gi en, eller har noe å låne bort?", + "needs": { + "dele-utstyr": { + "button": "Legg ut oppslag", + "description": "Har du noe naboene kan få låne, eller trenger du å låne noe selv? Legg ut et oppslag så ser de andre på Tomter det.", + "encouragement": "Vi legger det ut så naboene kan se det.", + "form_description": "Skriv kort hva det gjelder, så folk skjønner det med en gang.", + "form_title": "Lån eller utlån", + "heading": "Lån ut eller lån av naboen", + "hints": { + "email": "ola@eksempel.no", + "har_eller_trenger": "Har til utlån", + "hva": "Hengerfeste til bil, tilhenger, stige", + "navn": "Ola Nordmann" + }, + "icon": "package", + "labels": { + "email": "E-post", + "har_eller_trenger": "Har du eller trenger du", + "hva": "Hva gjelder det", + "navn": "Navn" + }, + "road_description": "Oppslaget legges ut for naboene å se. Når det er ordnet eller ikke lenger aktuelt, tas det ned igjen.", + "road_icon": "clipboard-list", + "road_title": "Fra oppslag til avtale", + "who_description": "Styret legger ut oppslaget og kan nås på post@tomtervel.no i mellomtiden.", + "who_icon": "users", + "who_title": "Hvem ser dette" + }, + "kan-hjelpe": { + "button": "Meld deg", + "description": "Kan du stille opp med snømåking, en handletur eller skyss når en nabo trenger det? Meld deg, så blir du spurt når det passer.", + "encouragement": "Du blir bare kontaktet når noe passer for deg.", + "form_description": "Fortell kort hva du kan bidra med.", + "form_title": "Meld deg som hjelper", + "heading": "Bli spurt når en nabo trenger en hånd", + "hints": { + "email": "kari@eksempel.no", + "kan": "Måke snø, kjøre til butikken, gi skyss til legen", + "navn": "Kari Nordmann", + "telefon": "123 45 678" + }, + "icon": "hand-helping", + "labels": { + "email": "E-post", + "kan": "Hva kan du hjelpe med", + "navn": "Navn", + "telefon": "Telefon" + }, + "road_description": "Du blir registrert som hjelper. Trekker du deg tilbake senere, er det bare å si fra.", + "road_icon": "user-check", + "road_title": "Fra påmelding til spørsmål", + "who_description": "Nabohjelpen har oversikten og ringer deg direkte når det er noe, eller nås på post@tomtervel.no.", + "who_icon": "heart-handshake", + "who_title": "Hvem ser dette" + }, + "trenger-hjelp": { + "button": "Be om hjelp", + "description": "Får du ikke til snømåking, en handletur eller skyss for tiden? Si fra, så finner vi en nabo som kan stille opp.", + "encouragement": "Vi finner en nabo som kan stille opp så fort som mulig.", + "form_description": "Skriv kort hva du trenger hjelp til.", + "form_title": "Be om en hånd", + "heading": "Få en nabo til å stille opp", + "hints": { + "adresse": "Tomterveien 12", + "email": "kari@eksempel.no", + "hva": "Måke snø på trappa, handle inn litt mat", + "navn": "Kari Nordmann", + "telefon": "123 45 678" + }, + "icon": "heart-handshake", + "labels": { + "adresse": "Adresse", + "email": "E-post", + "hva": "Hva trenger du hjelp til", + "navn": "Navn", + "telefon": "Telefon" + }, + "road_description": "Nabohjelpen finner en nabo som kan stille opp. Er det ordnet, eller om det ikke lot seg løse, får du beskjed.", + "road_icon": "hand-helping", + "road_title": "Fra melding til hjelp", + "who_description": "Nabohjelpen tar imot og finner noen til deg, eller ring post@tomtervel.no i mellomtiden.", + "who_icon": "users", + "who_title": "Hvem ser dette" + } + }, + "question": "Trenger du en hånd, eller kan du gi en?" +} +``` diff --git a/runs/tomtervel-committees-2026-09-23/llm/16-questions_nabohjelp_index.yaml.md b/runs/tomtervel-committees-2026-09-23/llm/16-questions_nabohjelp_index.yaml.md new file mode 100644 index 0000000..b39e66c --- /dev/null +++ b/runs/tomtervel-committees-2026-09-23/llm/16-questions_nabohjelp_index.yaml.md @@ -0,0 +1,96 @@ +You write the words for one page of a website for this business. + +Business: Tomter Vel +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. +Contact: Styret i Tomter Vel +Language to write in: no + +Everyone the site serves: +- door medlem: for en husstand i Tomter som vil bli medlem, betale kontingent, eller melde flytting, ny e-post eller utmelding; behind it: bli-medlem, endre-medlemskap +- door melde-fra: for noen som har sett noe farlig i trafikken, eller noe ødelagt på lekeplassen eller stien; behind it: trafikkfare, anleggsfeil +- door bidra: for noen som vil stille opp på 17. mai, dugnad eller et arrangement, eller sitte i en komité; behind it: hjelpe-til, komite +- door naboer: for en nabo som trenger en hånd med snømåking, handling eller skyss, kan gi en, eller har noe å låne ut; behind it: trenger-hjelp, kan-hjelpe, dele-utstyr +- bli-medlem: en husstand i Tomter - wants: å bli medlem og få betalt kontingenten. Handled by kasserer. Stages: open -> betalt -> utmeldt. +- endre-medlemskap: et medlem som har flyttet, byttet e-post eller vil melde seg ut - wants: at velet har riktige opplysninger om dem. Handled by kasserer. Stages: open -> oppdatert. +- trafikkfare: en som har sett et farlig sted i trafikken - wants: at velet tar det opp med kommunen eller den som eier veien. Handled by trafikk. Stages: open -> tatt_opp -> ordnet -> avvist. +- anleggsfeil: en som ser at noe på lekeplassen eller stien er ødelagt - wants: at det blir fikset før noen skader seg. Handled by lekeplasser. Stages: open -> tatt_tak_i -> utbedret. +- horingsinnspill: en beboer som har en mening om en sak kommunen har på høring - wants: at velet tar det med i sitt svar. Handled by horingsinstans. Stages: open -> tatt_med -> ikke_tatt_med. +- hjelpe-til: en som vil hjelpe til på et arrangement eller en dugnad - wants: å bli satt opp på noe som passer dem. Handled by arrangementer. Stages: open -> kontaktet -> satt_opp -> takket_nei. +- komite: en som vil sitte i en komité - wants: en plass i den komiteen som driver med det de bryr seg om. Handled by styret. Stages: open -> plassert -> avslatt. +- trenger-hjelp: 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. Handled by nabohjelp. Stages: open -> formidlet -> ordnet -> ikke_lost. +- kan-hjelpe: en nabo som kan stille opp når noen trenger det - wants: å bli spurt når det passer. Handled by nabohjelp. Stages: open -> registrert -> trukket. +- dele-utstyr: en nabo som har noe å låne ut, eller trenger å låne noe - wants: et oppslag som naboene ser. Handled by styret. Stages: open -> lagt_ut -> tatt_ned. +- utlegg: en i en komité som har lagt ut for noe - wants: pengene tilbake. Handled by kasserer. Stages: open -> godkjent -> utbetalt -> avvist. + +The page: questions/nabohjelp/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. +- The button says what pressing it does; the encouragement says what happens next or how little it takes; the form's guidance line says what to have ready. Placeholders are example answers in the reader's words. +- An icon is one name from this list, chosen for what the reader is doing, or empty: house, building-2, store, school, map-pin, route, footprints, trees, leaf, snowflake, sun, users, user, user-plus, user-check, baby, heart-handshake, hand-helping, handshake, smile, mail, phone, message-circle, megaphone, bell, send, inbox, alert-triangle, siren, shield, construction, hammer, wrench, ruler, package, truck, car, bus, train-front, bike, calendar, clock, file-text, clipboard-list, receipt, wallet, coins, banknote, credit-card, key, lock, search, star, gift, shopping-cart, lightbulb, flag, thumbs-up, check-circle, briefcase, stethoscope, activity, camera, pencil, refresh-cw, list, layers, vote, scale +- Write the way people in this trade and country actually speak. + +{ + "buckets": { + "hjelpebehov": { + "description": "", + "heading": "", + "moves": { + "formidlet->ikke_lost": "ikke_lost>", + "formidlet->ordnet": "ordnet>", + "open->formidlet": "formidlet>", + "open->ikke_lost": "ikke_lost>" + } + }, + "hjelpere": { + "description": "", + "heading": "", + "moves": { + "open->registrert": "registrert>", + "open->trukket": "trukket>" + } + } + }, + "confirm": "", + "description": "", + "links": {}, + "question": "" +} + +Reply with the JSON object only. + +=== REPLY === +```json +{ + "buckets": { + "hjelpebehov": { + "description": "Naboer som trenger en hånd med snømåking, handling eller skyss – klare til å bli koblet med noen som kan hjelpe.", + "heading": "Naboer som trenger en hånd", + "moves": { + "formidlet->ikke_lost": "Meld ikke løst", + "formidlet->ordnet": "Meld ordnet", + "open->formidlet": "Koble til nabo", + "open->ikke_lost": "Meld ikke løst" + } + }, + "hjelpere": { + "description": "Naboer som har sagt de kan stille opp – klare til å bli spurt når noen trenger dem.", + "heading": "Naboer som kan stille opp", + "moves": { + "open->registrert": "Registrer som hjelper", + "open->trukket": "Meld trukket" + } + } + }, + "confirm": "Lagre", + "description": "Her kobler du naboer som trenger hjelp med dem som kan stille opp.", + "links": {}, + "question": "Hvem trenger hjelp, og hvem kan stille opp?" +} +``` diff --git a/runs/tomtervel-committees-2026-09-23/llm/17-questions_received_anleggsfeil.yaml.md b/runs/tomtervel-committees-2026-09-23/llm/17-questions_received_anleggsfeil.yaml.md new file mode 100644 index 0000000..5e0f48a --- /dev/null +++ b/runs/tomtervel-committees-2026-09-23/llm/17-questions_received_anleggsfeil.yaml.md @@ -0,0 +1,68 @@ +You write the words for one page of a website for this business. + +Business: Tomter Vel +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. +Contact: Styret i Tomter Vel +Language to write in: no + +Everyone the site serves: +- door medlem: for en husstand i Tomter som vil bli medlem, betale kontingent, eller melde flytting, ny e-post eller utmelding; behind it: bli-medlem, endre-medlemskap +- door melde-fra: for noen som har sett noe farlig i trafikken, eller noe ødelagt på lekeplassen eller stien; behind it: trafikkfare, anleggsfeil +- door bidra: for noen som vil stille opp på 17. mai, dugnad eller et arrangement, eller sitte i en komité; behind it: hjelpe-til, komite +- door naboer: for en nabo som trenger en hånd med snømåking, handling eller skyss, kan gi en, eller har noe å låne ut; behind it: trenger-hjelp, kan-hjelpe, dele-utstyr +- bli-medlem: en husstand i Tomter - wants: å bli medlem og få betalt kontingenten. Handled by kasserer. Stages: open -> betalt -> utmeldt. +- endre-medlemskap: et medlem som har flyttet, byttet e-post eller vil melde seg ut - wants: at velet har riktige opplysninger om dem. Handled by kasserer. Stages: open -> oppdatert. +- trafikkfare: en som har sett et farlig sted i trafikken - wants: at velet tar det opp med kommunen eller den som eier veien. Handled by trafikk. Stages: open -> tatt_opp -> ordnet -> avvist. +- anleggsfeil: en som ser at noe på lekeplassen eller stien er ødelagt - wants: at det blir fikset før noen skader seg. Handled by lekeplasser. Stages: open -> tatt_tak_i -> utbedret. +- horingsinnspill: en beboer som har en mening om en sak kommunen har på høring - wants: at velet tar det med i sitt svar. Handled by horingsinstans. Stages: open -> tatt_med -> ikke_tatt_med. +- hjelpe-til: en som vil hjelpe til på et arrangement eller en dugnad - wants: å bli satt opp på noe som passer dem. Handled by arrangementer. Stages: open -> kontaktet -> satt_opp -> takket_nei. +- komite: en som vil sitte i en komité - wants: en plass i den komiteen som driver med det de bryr seg om. Handled by styret. Stages: open -> plassert -> avslatt. +- trenger-hjelp: 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. Handled by nabohjelp. Stages: open -> formidlet -> ordnet -> ikke_lost. +- kan-hjelpe: en nabo som kan stille opp når noen trenger det - wants: å bli spurt når det passer. Handled by nabohjelp. Stages: open -> registrert -> trukket. +- dele-utstyr: en nabo som har noe å låne ut, eller trenger å låne noe - wants: et oppslag som naboene ser. Handled by styret. Stages: open -> lagt_ut -> tatt_ned. +- utlegg: en i en komité som har lagt ut for noe - wants: pengene tilbake. Handled by kasserer. Stages: open -> godkjent -> utbetalt -> avvist. + +The page: questions/received/anleggsfeil.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. +- The button says what pressing it does; the encouragement says what happens next or how little it takes; the form's guidance line says what to have ready. Placeholders are example answers in the reader's words. +- An icon is one name from this list, chosen for what the reader is doing, or empty: house, building-2, store, school, map-pin, route, footprints, trees, leaf, snowflake, sun, users, user, user-plus, user-check, baby, heart-handshake, hand-helping, handshake, smile, mail, phone, message-circle, megaphone, bell, send, inbox, alert-triangle, siren, shield, construction, hammer, wrench, ruler, package, truck, car, bus, train-front, bike, calendar, clock, file-text, clipboard-list, receipt, wallet, coins, banknote, credit-card, key, lock, search, star, gift, shopping-cart, lightbulb, flag, thumbs-up, check-circle, briefcase, stethoscope, activity, camera, pencil, refresh-cw, list, layers, vote, scale +- Write the way people in this trade and country actually speak. + +{ + "back": "", + "description": "", + "next_description": "", + "next_heading": "", + "question": "", + "see_all": { + "button": "", + "description": "", + "heading": "" + } +} + +Reply with the JSON object only. + +=== REPLY === +```json +{ + "back": "Tilbake til forsiden", + "description": "Meldingen din om skaden er sendt til lekeplasskomiteen. De ser over det du har sendt.", + "next_description": "Lekeplasskomiteen ser på meldingen og tar tak i det som må fikses før noen skader seg.", + "next_heading": "Komiteen tar tak i det", + "question": "Hva skjer med meldingen min nå?", + "see_all": { + "button": "Se meldte feil", + "description": "Se hva andre har meldt inn av skader på lekeplassene og stien, og hvor langt det har kommet.", + "heading": "Se andre meldte feil" + } +} +``` diff --git a/runs/tomtervel-committees-2026-09-23/llm/18-questions_received_bli-medlem.yaml.md b/runs/tomtervel-committees-2026-09-23/llm/18-questions_received_bli-medlem.yaml.md new file mode 100644 index 0000000..bc8f04b --- /dev/null +++ b/runs/tomtervel-committees-2026-09-23/llm/18-questions_received_bli-medlem.yaml.md @@ -0,0 +1,58 @@ +You write the words for one page of a website for this business. + +Business: Tomter Vel +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. +Contact: Styret i Tomter Vel +Language to write in: no + +Everyone the site serves: +- door medlem: for en husstand i Tomter som vil bli medlem, betale kontingent, eller melde flytting, ny e-post eller utmelding; behind it: bli-medlem, endre-medlemskap +- door melde-fra: for noen som har sett noe farlig i trafikken, eller noe ødelagt på lekeplassen eller stien; behind it: trafikkfare, anleggsfeil +- door bidra: for noen som vil stille opp på 17. mai, dugnad eller et arrangement, eller sitte i en komité; behind it: hjelpe-til, komite +- door naboer: for en nabo som trenger en hånd med snømåking, handling eller skyss, kan gi en, eller har noe å låne ut; behind it: trenger-hjelp, kan-hjelpe, dele-utstyr +- bli-medlem: en husstand i Tomter - wants: å bli medlem og få betalt kontingenten. Handled by kasserer. Stages: open -> betalt -> utmeldt. +- endre-medlemskap: et medlem som har flyttet, byttet e-post eller vil melde seg ut - wants: at velet har riktige opplysninger om dem. Handled by kasserer. Stages: open -> oppdatert. +- trafikkfare: en som har sett et farlig sted i trafikken - wants: at velet tar det opp med kommunen eller den som eier veien. Handled by trafikk. Stages: open -> tatt_opp -> ordnet -> avvist. +- anleggsfeil: en som ser at noe på lekeplassen eller stien er ødelagt - wants: at det blir fikset før noen skader seg. Handled by lekeplasser. Stages: open -> tatt_tak_i -> utbedret. +- horingsinnspill: en beboer som har en mening om en sak kommunen har på høring - wants: at velet tar det med i sitt svar. Handled by horingsinstans. Stages: open -> tatt_med -> ikke_tatt_med. +- hjelpe-til: en som vil hjelpe til på et arrangement eller en dugnad - wants: å bli satt opp på noe som passer dem. Handled by arrangementer. Stages: open -> kontaktet -> satt_opp -> takket_nei. +- komite: en som vil sitte i en komité - wants: en plass i den komiteen som driver med det de bryr seg om. Handled by styret. Stages: open -> plassert -> avslatt. +- trenger-hjelp: 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. Handled by nabohjelp. Stages: open -> formidlet -> ordnet -> ikke_lost. +- kan-hjelpe: en nabo som kan stille opp når noen trenger det - wants: å bli spurt når det passer. Handled by nabohjelp. Stages: open -> registrert -> trukket. +- dele-utstyr: en nabo som har noe å låne ut, eller trenger å låne noe - wants: et oppslag som naboene ser. Handled by styret. Stages: open -> lagt_ut -> tatt_ned. +- utlegg: en i en komité som har lagt ut for noe - wants: pengene tilbake. Handled by kasserer. Stages: open -> godkjent -> utbetalt -> avvist. + +The page: questions/received/bli-medlem.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. +- The button says what pressing it does; the encouragement says what happens next or how little it takes; the form's guidance line says what to have ready. Placeholders are example answers in the reader's words. +- An icon is one name from this list, chosen for what the reader is doing, or empty: house, building-2, store, school, map-pin, route, footprints, trees, leaf, snowflake, sun, users, user, user-plus, user-check, baby, heart-handshake, hand-helping, handshake, smile, mail, phone, message-circle, megaphone, bell, send, inbox, alert-triangle, siren, shield, construction, hammer, wrench, ruler, package, truck, car, bus, train-front, bike, calendar, clock, file-text, clipboard-list, receipt, wallet, coins, banknote, credit-card, key, lock, search, star, gift, shopping-cart, lightbulb, flag, thumbs-up, check-circle, briefcase, stethoscope, activity, camera, pencil, refresh-cw, list, layers, vote, scale +- Write the way people in this trade and country actually speak. + +{ + "back": "", + "description": "", + "next_description": "", + "next_heading": "", + "question": "" +} + +Reply with the JSON object only. + +=== REPLY === +```json +{ + "back": "Tilbake til forsiden", + "description": "Vi har mottatt innmeldingen din. Kasserer tar kontakt med betalingsinfo så snart medlemskapet er registrert.", + "next_description": "Kasserer går gjennom nye innmeldinger og sender deg kontonummer og beløp for kontingenten.", + "next_heading": "Kasserer sender deg betalingsinfo", + "question": "Hva skjer etter at jeg har meldt meg inn?" +} +``` diff --git a/runs/tomtervel-committees-2026-09-23/llm/19-questions_received_dele-utstyr.yaml.md b/runs/tomtervel-committees-2026-09-23/llm/19-questions_received_dele-utstyr.yaml.md new file mode 100644 index 0000000..e1b0ad7 --- /dev/null +++ b/runs/tomtervel-committees-2026-09-23/llm/19-questions_received_dele-utstyr.yaml.md @@ -0,0 +1,68 @@ +You write the words for one page of a website for this business. + +Business: Tomter Vel +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. +Contact: Styret i Tomter Vel +Language to write in: no + +Everyone the site serves: +- door medlem: for en husstand i Tomter som vil bli medlem, betale kontingent, eller melde flytting, ny e-post eller utmelding; behind it: bli-medlem, endre-medlemskap +- door melde-fra: for noen som har sett noe farlig i trafikken, eller noe ødelagt på lekeplassen eller stien; behind it: trafikkfare, anleggsfeil +- door bidra: for noen som vil stille opp på 17. mai, dugnad eller et arrangement, eller sitte i en komité; behind it: hjelpe-til, komite +- door naboer: for en nabo som trenger en hånd med snømåking, handling eller skyss, kan gi en, eller har noe å låne ut; behind it: trenger-hjelp, kan-hjelpe, dele-utstyr +- bli-medlem: en husstand i Tomter - wants: å bli medlem og få betalt kontingenten. Handled by kasserer. Stages: open -> betalt -> utmeldt. +- endre-medlemskap: et medlem som har flyttet, byttet e-post eller vil melde seg ut - wants: at velet har riktige opplysninger om dem. Handled by kasserer. Stages: open -> oppdatert. +- trafikkfare: en som har sett et farlig sted i trafikken - wants: at velet tar det opp med kommunen eller den som eier veien. Handled by trafikk. Stages: open -> tatt_opp -> ordnet -> avvist. +- anleggsfeil: en som ser at noe på lekeplassen eller stien er ødelagt - wants: at det blir fikset før noen skader seg. Handled by lekeplasser. Stages: open -> tatt_tak_i -> utbedret. +- horingsinnspill: en beboer som har en mening om en sak kommunen har på høring - wants: at velet tar det med i sitt svar. Handled by horingsinstans. Stages: open -> tatt_med -> ikke_tatt_med. +- hjelpe-til: en som vil hjelpe til på et arrangement eller en dugnad - wants: å bli satt opp på noe som passer dem. Handled by arrangementer. Stages: open -> kontaktet -> satt_opp -> takket_nei. +- komite: en som vil sitte i en komité - wants: en plass i den komiteen som driver med det de bryr seg om. Handled by styret. Stages: open -> plassert -> avslatt. +- trenger-hjelp: 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. Handled by nabohjelp. Stages: open -> formidlet -> ordnet -> ikke_lost. +- kan-hjelpe: en nabo som kan stille opp når noen trenger det - wants: å bli spurt når det passer. Handled by nabohjelp. Stages: open -> registrert -> trukket. +- dele-utstyr: en nabo som har noe å låne ut, eller trenger å låne noe - wants: et oppslag som naboene ser. Handled by styret. Stages: open -> lagt_ut -> tatt_ned. +- utlegg: en i en komité som har lagt ut for noe - wants: pengene tilbake. Handled by kasserer. Stages: open -> godkjent -> utbetalt -> avvist. + +The page: questions/received/dele-utstyr.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. +- The button says what pressing it does; the encouragement says what happens next or how little it takes; the form's guidance line says what to have ready. Placeholders are example answers in the reader's words. +- An icon is one name from this list, chosen for what the reader is doing, or empty: house, building-2, store, school, map-pin, route, footprints, trees, leaf, snowflake, sun, users, user, user-plus, user-check, baby, heart-handshake, hand-helping, handshake, smile, mail, phone, message-circle, megaphone, bell, send, inbox, alert-triangle, siren, shield, construction, hammer, wrench, ruler, package, truck, car, bus, train-front, bike, calendar, clock, file-text, clipboard-list, receipt, wallet, coins, banknote, credit-card, key, lock, search, star, gift, shopping-cart, lightbulb, flag, thumbs-up, check-circle, briefcase, stethoscope, activity, camera, pencil, refresh-cw, list, layers, vote, scale +- Write the way people in this trade and country actually speak. + +{ + "back": "", + "description": "", + "next_description": "", + "next_heading": "", + "question": "", + "see_all": { + "button": "", + "description": "", + "heading": "" + } +} + +Reply with the JSON object only. + +=== REPLY === +```json +{ + "back": "Tilbake til forsiden", + "description": "Takk for at du la ut noe naboene kan låne. Vi legger det ut på oppslaget så snart vi kan.", + "next_description": "En i styret legger utstyret ut på naboenes oppslag, så andre kan se det og spørre om å låne.", + "next_heading": "Styret legger det ut for deg", + "question": "Hva skjer med det jeg har lagt ut?", + "see_all": { + "button": "Se hva naboer deler", + "description": "Se hva andre i Tomter har lagt ut til utlån akkurat nå.", + "heading": "Se alt naboene deler" + } +} +``` diff --git a/runs/tomtervel-committees-2026-09-23/llm/20-questions_received_endre-medlemskap.yaml.md b/runs/tomtervel-committees-2026-09-23/llm/20-questions_received_endre-medlemskap.yaml.md new file mode 100644 index 0000000..dad9a11 --- /dev/null +++ b/runs/tomtervel-committees-2026-09-23/llm/20-questions_received_endre-medlemskap.yaml.md @@ -0,0 +1,58 @@ +You write the words for one page of a website for this business. + +Business: Tomter Vel +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. +Contact: Styret i Tomter Vel +Language to write in: no + +Everyone the site serves: +- door medlem: for en husstand i Tomter som vil bli medlem, betale kontingent, eller melde flytting, ny e-post eller utmelding; behind it: bli-medlem, endre-medlemskap +- door melde-fra: for noen som har sett noe farlig i trafikken, eller noe ødelagt på lekeplassen eller stien; behind it: trafikkfare, anleggsfeil +- door bidra: for noen som vil stille opp på 17. mai, dugnad eller et arrangement, eller sitte i en komité; behind it: hjelpe-til, komite +- door naboer: for en nabo som trenger en hånd med snømåking, handling eller skyss, kan gi en, eller har noe å låne ut; behind it: trenger-hjelp, kan-hjelpe, dele-utstyr +- bli-medlem: en husstand i Tomter - wants: å bli medlem og få betalt kontingenten. Handled by kasserer. Stages: open -> betalt -> utmeldt. +- endre-medlemskap: et medlem som har flyttet, byttet e-post eller vil melde seg ut - wants: at velet har riktige opplysninger om dem. Handled by kasserer. Stages: open -> oppdatert. +- trafikkfare: en som har sett et farlig sted i trafikken - wants: at velet tar det opp med kommunen eller den som eier veien. Handled by trafikk. Stages: open -> tatt_opp -> ordnet -> avvist. +- anleggsfeil: en som ser at noe på lekeplassen eller stien er ødelagt - wants: at det blir fikset før noen skader seg. Handled by lekeplasser. Stages: open -> tatt_tak_i -> utbedret. +- horingsinnspill: en beboer som har en mening om en sak kommunen har på høring - wants: at velet tar det med i sitt svar. Handled by horingsinstans. Stages: open -> tatt_med -> ikke_tatt_med. +- hjelpe-til: en som vil hjelpe til på et arrangement eller en dugnad - wants: å bli satt opp på noe som passer dem. Handled by arrangementer. Stages: open -> kontaktet -> satt_opp -> takket_nei. +- komite: en som vil sitte i en komité - wants: en plass i den komiteen som driver med det de bryr seg om. Handled by styret. Stages: open -> plassert -> avslatt. +- trenger-hjelp: 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. Handled by nabohjelp. Stages: open -> formidlet -> ordnet -> ikke_lost. +- kan-hjelpe: en nabo som kan stille opp når noen trenger det - wants: å bli spurt når det passer. Handled by nabohjelp. Stages: open -> registrert -> trukket. +- dele-utstyr: en nabo som har noe å låne ut, eller trenger å låne noe - wants: et oppslag som naboene ser. Handled by styret. Stages: open -> lagt_ut -> tatt_ned. +- utlegg: en i en komité som har lagt ut for noe - wants: pengene tilbake. Handled by kasserer. Stages: open -> godkjent -> utbetalt -> avvist. + +The page: questions/received/endre-medlemskap.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. +- The button says what pressing it does; the encouragement says what happens next or how little it takes; the form's guidance line says what to have ready. Placeholders are example answers in the reader's words. +- An icon is one name from this list, chosen for what the reader is doing, or empty: house, building-2, store, school, map-pin, route, footprints, trees, leaf, snowflake, sun, users, user, user-plus, user-check, baby, heart-handshake, hand-helping, handshake, smile, mail, phone, message-circle, megaphone, bell, send, inbox, alert-triangle, siren, shield, construction, hammer, wrench, ruler, package, truck, car, bus, train-front, bike, calendar, clock, file-text, clipboard-list, receipt, wallet, coins, banknote, credit-card, key, lock, search, star, gift, shopping-cart, lightbulb, flag, thumbs-up, check-circle, briefcase, stethoscope, activity, camera, pencil, refresh-cw, list, layers, vote, scale +- Write the way people in this trade and country actually speak. + +{ + "back": "", + "description": "", + "next_description": "", + "next_heading": "", + "question": "" +} + +Reply with the JSON object only. + +=== REPLY === +```json +{ + "back": "Tilbake til forsiden", + "description": "Vi har mottatt beskjeden om at du har flyttet, byttet e-post eller vil melde deg ut.", + "next_description": "Kasserer oppdaterer medlemslista og gir deg beskjed hvis det er noe mer vi trenger fra deg.", + "next_heading": "Kasserer retter opp opplysningene", + "question": "Hva skjer nå med det jeg meldte inn?" +} +``` diff --git a/runs/tomtervel-committees-2026-09-23/llm/21-questions_received_hjelpe-til.yaml.md b/runs/tomtervel-committees-2026-09-23/llm/21-questions_received_hjelpe-til.yaml.md new file mode 100644 index 0000000..f54bf3b --- /dev/null +++ b/runs/tomtervel-committees-2026-09-23/llm/21-questions_received_hjelpe-til.yaml.md @@ -0,0 +1,58 @@ +You write the words for one page of a website for this business. + +Business: Tomter Vel +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. +Contact: Styret i Tomter Vel +Language to write in: no + +Everyone the site serves: +- door medlem: for en husstand i Tomter som vil bli medlem, betale kontingent, eller melde flytting, ny e-post eller utmelding; behind it: bli-medlem, endre-medlemskap +- door melde-fra: for noen som har sett noe farlig i trafikken, eller noe ødelagt på lekeplassen eller stien; behind it: trafikkfare, anleggsfeil +- door bidra: for noen som vil stille opp på 17. mai, dugnad eller et arrangement, eller sitte i en komité; behind it: hjelpe-til, komite +- door naboer: for en nabo som trenger en hånd med snømåking, handling eller skyss, kan gi en, eller har noe å låne ut; behind it: trenger-hjelp, kan-hjelpe, dele-utstyr +- bli-medlem: en husstand i Tomter - wants: å bli medlem og få betalt kontingenten. Handled by kasserer. Stages: open -> betalt -> utmeldt. +- endre-medlemskap: et medlem som har flyttet, byttet e-post eller vil melde seg ut - wants: at velet har riktige opplysninger om dem. Handled by kasserer. Stages: open -> oppdatert. +- trafikkfare: en som har sett et farlig sted i trafikken - wants: at velet tar det opp med kommunen eller den som eier veien. Handled by trafikk. Stages: open -> tatt_opp -> ordnet -> avvist. +- anleggsfeil: en som ser at noe på lekeplassen eller stien er ødelagt - wants: at det blir fikset før noen skader seg. Handled by lekeplasser. Stages: open -> tatt_tak_i -> utbedret. +- horingsinnspill: en beboer som har en mening om en sak kommunen har på høring - wants: at velet tar det med i sitt svar. Handled by horingsinstans. Stages: open -> tatt_med -> ikke_tatt_med. +- hjelpe-til: en som vil hjelpe til på et arrangement eller en dugnad - wants: å bli satt opp på noe som passer dem. Handled by arrangementer. Stages: open -> kontaktet -> satt_opp -> takket_nei. +- komite: en som vil sitte i en komité - wants: en plass i den komiteen som driver med det de bryr seg om. Handled by styret. Stages: open -> plassert -> avslatt. +- trenger-hjelp: 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. Handled by nabohjelp. Stages: open -> formidlet -> ordnet -> ikke_lost. +- kan-hjelpe: en nabo som kan stille opp når noen trenger det - wants: å bli spurt når det passer. Handled by nabohjelp. Stages: open -> registrert -> trukket. +- dele-utstyr: en nabo som har noe å låne ut, eller trenger å låne noe - wants: et oppslag som naboene ser. Handled by styret. Stages: open -> lagt_ut -> tatt_ned. +- utlegg: en i en komité som har lagt ut for noe - wants: pengene tilbake. Handled by kasserer. Stages: open -> godkjent -> utbetalt -> avvist. + +The page: questions/received/hjelpe-til.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. +- The button says what pressing it does; the encouragement says what happens next or how little it takes; the form's guidance line says what to have ready. Placeholders are example answers in the reader's words. +- An icon is one name from this list, chosen for what the reader is doing, or empty: house, building-2, store, school, map-pin, route, footprints, trees, leaf, snowflake, sun, users, user, user-plus, user-check, baby, heart-handshake, hand-helping, handshake, smile, mail, phone, message-circle, megaphone, bell, send, inbox, alert-triangle, siren, shield, construction, hammer, wrench, ruler, package, truck, car, bus, train-front, bike, calendar, clock, file-text, clipboard-list, receipt, wallet, coins, banknote, credit-card, key, lock, search, star, gift, shopping-cart, lightbulb, flag, thumbs-up, check-circle, briefcase, stethoscope, activity, camera, pencil, refresh-cw, list, layers, vote, scale +- Write the way people in this trade and country actually speak. + +{ + "back": "", + "description": "", + "next_description": "", + "next_heading": "", + "question": "" +} + +Reply with the JSON object only. + +=== REPLY === +```json +{ + "back": "Tilbake til forsiden", + "description": "Takk for at du vil hjelpe til. Arrangementskomiteen har fått beskjed og tar kontakt med deg.", + "next_description": "Du hører fra noen i komiteen når de vet hva de trenger hjelp til, gjerne noen dager før arrangementet eller dugnaden.", + "next_heading": "Komiteen tar kontakt", + "question": "Hva skjer nå som jeg har meldt meg?" +} +``` diff --git a/runs/tomtervel-committees-2026-09-23/llm/22-questions_received_horingsinnspill.yaml.md b/runs/tomtervel-committees-2026-09-23/llm/22-questions_received_horingsinnspill.yaml.md new file mode 100644 index 0000000..c3da711 --- /dev/null +++ b/runs/tomtervel-committees-2026-09-23/llm/22-questions_received_horingsinnspill.yaml.md @@ -0,0 +1,50 @@ +You write the words for one page of a website for this business. + +Business: Tomter Vel +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. +Contact: Styret i Tomter Vel +Language to write in: no + +Everyone the site serves: +- door medlem: for en husstand i Tomter som vil bli medlem, betale kontingent, eller melde flytting, ny e-post eller utmelding; behind it: bli-medlem, endre-medlemskap +- door melde-fra: for noen som har sett noe farlig i trafikken, eller noe ødelagt på lekeplassen eller stien; behind it: trafikkfare, anleggsfeil +- door bidra: for noen som vil stille opp på 17. mai, dugnad eller et arrangement, eller sitte i en komité; behind it: hjelpe-til, komite +- door naboer: for en nabo som trenger en hånd med snømåking, handling eller skyss, kan gi en, eller har noe å låne ut; behind it: trenger-hjelp, kan-hjelpe, dele-utstyr +- bli-medlem: en husstand i Tomter - wants: å bli medlem og få betalt kontingenten. Handled by kasserer. Stages: open -> betalt -> utmeldt. +- endre-medlemskap: et medlem som har flyttet, byttet e-post eller vil melde seg ut - wants: at velet har riktige opplysninger om dem. Handled by kasserer. Stages: open -> oppdatert. +- trafikkfare: en som har sett et farlig sted i trafikken - wants: at velet tar det opp med kommunen eller den som eier veien. Handled by trafikk. Stages: open -> tatt_opp -> ordnet -> avvist. +- anleggsfeil: en som ser at noe på lekeplassen eller stien er ødelagt - wants: at det blir fikset før noen skader seg. Handled by lekeplasser. Stages: open -> tatt_tak_i -> utbedret. +- horingsinnspill: en beboer som har en mening om en sak kommunen har på høring - wants: at velet tar det med i sitt svar. Handled by horingsinstans. Stages: open -> tatt_med -> ikke_tatt_med. +- hjelpe-til: en som vil hjelpe til på et arrangement eller en dugnad - wants: å bli satt opp på noe som passer dem. Handled by arrangementer. Stages: open -> kontaktet -> satt_opp -> takket_nei. +- komite: en som vil sitte i en komité - wants: en plass i den komiteen som driver med det de bryr seg om. Handled by styret. Stages: open -> plassert -> avslatt. +- trenger-hjelp: 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. Handled by nabohjelp. Stages: open -> formidlet -> ordnet -> ikke_lost. +- kan-hjelpe: en nabo som kan stille opp når noen trenger det - wants: å bli spurt når det passer. Handled by nabohjelp. Stages: open -> registrert -> trukket. +- dele-utstyr: en nabo som har noe å låne ut, eller trenger å låne noe - wants: et oppslag som naboene ser. Handled by styret. Stages: open -> lagt_ut -> tatt_ned. +- utlegg: en i en komité som har lagt ut for noe - wants: pengene tilbake. Handled by kasserer. Stages: open -> godkjent -> utbetalt -> avvist. + +The page: questions/received/horingsinnspill.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. +- The button says what pressing it does; the encouragement says what happens next or how little it takes; the form's guidance line says what to have ready. Placeholders are example answers in the reader's words. +- An icon is one name from this list, chosen for what the reader is doing, or empty: house, building-2, store, school, map-pin, route, footprints, trees, leaf, snowflake, sun, users, user, user-plus, user-check, baby, heart-handshake, hand-helping, handshake, smile, mail, phone, message-circle, megaphone, bell, send, inbox, alert-triangle, siren, shield, construction, hammer, wrench, ruler, package, truck, car, bus, train-front, bike, calendar, clock, file-text, clipboard-list, receipt, wallet, coins, banknote, credit-card, key, lock, search, star, gift, shopping-cart, lightbulb, flag, thumbs-up, check-circle, briefcase, stethoscope, activity, camera, pencil, refresh-cw, list, layers, vote, scale +- Write the way people in this trade and country actually speak. + +{ + "back": "", + "description": "", + "next_description": "", + "next_heading": "", + "question": "" +} + +Reply with the JSON object only. + +=== REPLY === +{"back": "Tilbake til forsiden", "description": "Innspillet ditt er sendt til høringsinstansen i velet.", "next_description": "De ser på om det kan tas med i velets høringssvar til kommunen, og gir beskjed om det blir med.", "next_heading": "Innspillet ditt inn i vurderingen", "question": "Hva skjer med det jeg har sagt om saken?"} diff --git a/runs/tomtervel-committees-2026-09-23/llm/23-questions_received_kan-hjelpe.yaml.md b/runs/tomtervel-committees-2026-09-23/llm/23-questions_received_kan-hjelpe.yaml.md new file mode 100644 index 0000000..156ae19 --- /dev/null +++ b/runs/tomtervel-committees-2026-09-23/llm/23-questions_received_kan-hjelpe.yaml.md @@ -0,0 +1,58 @@ +You write the words for one page of a website for this business. + +Business: Tomter Vel +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. +Contact: Styret i Tomter Vel +Language to write in: no + +Everyone the site serves: +- door medlem: for en husstand i Tomter som vil bli medlem, betale kontingent, eller melde flytting, ny e-post eller utmelding; behind it: bli-medlem, endre-medlemskap +- door melde-fra: for noen som har sett noe farlig i trafikken, eller noe ødelagt på lekeplassen eller stien; behind it: trafikkfare, anleggsfeil +- door bidra: for noen som vil stille opp på 17. mai, dugnad eller et arrangement, eller sitte i en komité; behind it: hjelpe-til, komite +- door naboer: for en nabo som trenger en hånd med snømåking, handling eller skyss, kan gi en, eller har noe å låne ut; behind it: trenger-hjelp, kan-hjelpe, dele-utstyr +- bli-medlem: en husstand i Tomter - wants: å bli medlem og få betalt kontingenten. Handled by kasserer. Stages: open -> betalt -> utmeldt. +- endre-medlemskap: et medlem som har flyttet, byttet e-post eller vil melde seg ut - wants: at velet har riktige opplysninger om dem. Handled by kasserer. Stages: open -> oppdatert. +- trafikkfare: en som har sett et farlig sted i trafikken - wants: at velet tar det opp med kommunen eller den som eier veien. Handled by trafikk. Stages: open -> tatt_opp -> ordnet -> avvist. +- anleggsfeil: en som ser at noe på lekeplassen eller stien er ødelagt - wants: at det blir fikset før noen skader seg. Handled by lekeplasser. Stages: open -> tatt_tak_i -> utbedret. +- horingsinnspill: en beboer som har en mening om en sak kommunen har på høring - wants: at velet tar det med i sitt svar. Handled by horingsinstans. Stages: open -> tatt_med -> ikke_tatt_med. +- hjelpe-til: en som vil hjelpe til på et arrangement eller en dugnad - wants: å bli satt opp på noe som passer dem. Handled by arrangementer. Stages: open -> kontaktet -> satt_opp -> takket_nei. +- komite: en som vil sitte i en komité - wants: en plass i den komiteen som driver med det de bryr seg om. Handled by styret. Stages: open -> plassert -> avslatt. +- trenger-hjelp: 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. Handled by nabohjelp. Stages: open -> formidlet -> ordnet -> ikke_lost. +- kan-hjelpe: en nabo som kan stille opp når noen trenger det - wants: å bli spurt når det passer. Handled by nabohjelp. Stages: open -> registrert -> trukket. +- dele-utstyr: en nabo som har noe å låne ut, eller trenger å låne noe - wants: et oppslag som naboene ser. Handled by styret. Stages: open -> lagt_ut -> tatt_ned. +- utlegg: en i en komité som har lagt ut for noe - wants: pengene tilbake. Handled by kasserer. Stages: open -> godkjent -> utbetalt -> avvist. + +The page: questions/received/kan-hjelpe.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. +- The button says what pressing it does; the encouragement says what happens next or how little it takes; the form's guidance line says what to have ready. Placeholders are example answers in the reader's words. +- An icon is one name from this list, chosen for what the reader is doing, or empty: house, building-2, store, school, map-pin, route, footprints, trees, leaf, snowflake, sun, users, user, user-plus, user-check, baby, heart-handshake, hand-helping, handshake, smile, mail, phone, message-circle, megaphone, bell, send, inbox, alert-triangle, siren, shield, construction, hammer, wrench, ruler, package, truck, car, bus, train-front, bike, calendar, clock, file-text, clipboard-list, receipt, wallet, coins, banknote, credit-card, key, lock, search, star, gift, shopping-cart, lightbulb, flag, thumbs-up, check-circle, briefcase, stethoscope, activity, camera, pencil, refresh-cw, list, layers, vote, scale +- Write the way people in this trade and country actually speak. + +{ + "back": "", + "description": "", + "next_description": "", + "next_heading": "", + "question": "" +} + +Reply with the JSON object only. + +=== REPLY === +```json +{ + "back": "Tilbake til forsiden", + "description": "Takk for at du sier fra at du kan stille opp. Nabohjelp-komiteen tar imot meldingen og legger deg inn på lista over naboer som kan hjelpe.", + "next_description": "Når en nabo trenger hjelp med noe du har sagt du kan bidra med, tar komiteen kontakt med deg direkte.", + "next_heading": "Du blir kontaktet ved behov", + "question": "Hva skjer nå som jeg har registrert meg?" +} +``` diff --git a/runs/tomtervel-committees-2026-09-23/llm/24-questions_received_komite.yaml.md b/runs/tomtervel-committees-2026-09-23/llm/24-questions_received_komite.yaml.md new file mode 100644 index 0000000..51d1b6b --- /dev/null +++ b/runs/tomtervel-committees-2026-09-23/llm/24-questions_received_komite.yaml.md @@ -0,0 +1,58 @@ +You write the words for one page of a website for this business. + +Business: Tomter Vel +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. +Contact: Styret i Tomter Vel +Language to write in: no + +Everyone the site serves: +- door medlem: for en husstand i Tomter som vil bli medlem, betale kontingent, eller melde flytting, ny e-post eller utmelding; behind it: bli-medlem, endre-medlemskap +- door melde-fra: for noen som har sett noe farlig i trafikken, eller noe ødelagt på lekeplassen eller stien; behind it: trafikkfare, anleggsfeil +- door bidra: for noen som vil stille opp på 17. mai, dugnad eller et arrangement, eller sitte i en komité; behind it: hjelpe-til, komite +- door naboer: for en nabo som trenger en hånd med snømåking, handling eller skyss, kan gi en, eller har noe å låne ut; behind it: trenger-hjelp, kan-hjelpe, dele-utstyr +- bli-medlem: en husstand i Tomter - wants: å bli medlem og få betalt kontingenten. Handled by kasserer. Stages: open -> betalt -> utmeldt. +- endre-medlemskap: et medlem som har flyttet, byttet e-post eller vil melde seg ut - wants: at velet har riktige opplysninger om dem. Handled by kasserer. Stages: open -> oppdatert. +- trafikkfare: en som har sett et farlig sted i trafikken - wants: at velet tar det opp med kommunen eller den som eier veien. Handled by trafikk. Stages: open -> tatt_opp -> ordnet -> avvist. +- anleggsfeil: en som ser at noe på lekeplassen eller stien er ødelagt - wants: at det blir fikset før noen skader seg. Handled by lekeplasser. Stages: open -> tatt_tak_i -> utbedret. +- horingsinnspill: en beboer som har en mening om en sak kommunen har på høring - wants: at velet tar det med i sitt svar. Handled by horingsinstans. Stages: open -> tatt_med -> ikke_tatt_med. +- hjelpe-til: en som vil hjelpe til på et arrangement eller en dugnad - wants: å bli satt opp på noe som passer dem. Handled by arrangementer. Stages: open -> kontaktet -> satt_opp -> takket_nei. +- komite: en som vil sitte i en komité - wants: en plass i den komiteen som driver med det de bryr seg om. Handled by styret. Stages: open -> plassert -> avslatt. +- trenger-hjelp: 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. Handled by nabohjelp. Stages: open -> formidlet -> ordnet -> ikke_lost. +- kan-hjelpe: en nabo som kan stille opp når noen trenger det - wants: å bli spurt når det passer. Handled by nabohjelp. Stages: open -> registrert -> trukket. +- dele-utstyr: en nabo som har noe å låne ut, eller trenger å låne noe - wants: et oppslag som naboene ser. Handled by styret. Stages: open -> lagt_ut -> tatt_ned. +- utlegg: en i en komité som har lagt ut for noe - wants: pengene tilbake. Handled by kasserer. Stages: open -> godkjent -> utbetalt -> avvist. + +The page: questions/received/komite.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. +- The button says what pressing it does; the encouragement says what happens next or how little it takes; the form's guidance line says what to have ready. Placeholders are example answers in the reader's words. +- An icon is one name from this list, chosen for what the reader is doing, or empty: house, building-2, store, school, map-pin, route, footprints, trees, leaf, snowflake, sun, users, user, user-plus, user-check, baby, heart-handshake, hand-helping, handshake, smile, mail, phone, message-circle, megaphone, bell, send, inbox, alert-triangle, siren, shield, construction, hammer, wrench, ruler, package, truck, car, bus, train-front, bike, calendar, clock, file-text, clipboard-list, receipt, wallet, coins, banknote, credit-card, key, lock, search, star, gift, shopping-cart, lightbulb, flag, thumbs-up, check-circle, briefcase, stethoscope, activity, camera, pencil, refresh-cw, list, layers, vote, scale +- Write the way people in this trade and country actually speak. + +{ + "back": "", + "description": "", + "next_description": "", + "next_heading": "", + "question": "" +} + +Reply with the JSON object only. + +=== REPLY === +```json +{ + "back": "Tilbake til forsiden", + "description": "Takk for at du vil bidra! Styret har fått beskjed og ser på hvilken komité som passer best for deg.", + "next_description": "Noen fra styret tar kontakt for å høre mer om hva du liker å drive med, og finner en komité som passer.", + "next_heading": "Vi finner riktig komité til deg", + "question": "Hva skjer nå som jeg har meldt interesse for en komité?" +} +``` diff --git a/runs/tomtervel-committees-2026-09-23/llm/25-questions_received_trafikkfare.yaml.md b/runs/tomtervel-committees-2026-09-23/llm/25-questions_received_trafikkfare.yaml.md new file mode 100644 index 0000000..4789567 --- /dev/null +++ b/runs/tomtervel-committees-2026-09-23/llm/25-questions_received_trafikkfare.yaml.md @@ -0,0 +1,68 @@ +You write the words for one page of a website for this business. + +Business: Tomter Vel +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. +Contact: Styret i Tomter Vel +Language to write in: no + +Everyone the site serves: +- door medlem: for en husstand i Tomter som vil bli medlem, betale kontingent, eller melde flytting, ny e-post eller utmelding; behind it: bli-medlem, endre-medlemskap +- door melde-fra: for noen som har sett noe farlig i trafikken, eller noe ødelagt på lekeplassen eller stien; behind it: trafikkfare, anleggsfeil +- door bidra: for noen som vil stille opp på 17. mai, dugnad eller et arrangement, eller sitte i en komité; behind it: hjelpe-til, komite +- door naboer: for en nabo som trenger en hånd med snømåking, handling eller skyss, kan gi en, eller har noe å låne ut; behind it: trenger-hjelp, kan-hjelpe, dele-utstyr +- bli-medlem: en husstand i Tomter - wants: å bli medlem og få betalt kontingenten. Handled by kasserer. Stages: open -> betalt -> utmeldt. +- endre-medlemskap: et medlem som har flyttet, byttet e-post eller vil melde seg ut - wants: at velet har riktige opplysninger om dem. Handled by kasserer. Stages: open -> oppdatert. +- trafikkfare: en som har sett et farlig sted i trafikken - wants: at velet tar det opp med kommunen eller den som eier veien. Handled by trafikk. Stages: open -> tatt_opp -> ordnet -> avvist. +- anleggsfeil: en som ser at noe på lekeplassen eller stien er ødelagt - wants: at det blir fikset før noen skader seg. Handled by lekeplasser. Stages: open -> tatt_tak_i -> utbedret. +- horingsinnspill: en beboer som har en mening om en sak kommunen har på høring - wants: at velet tar det med i sitt svar. Handled by horingsinstans. Stages: open -> tatt_med -> ikke_tatt_med. +- hjelpe-til: en som vil hjelpe til på et arrangement eller en dugnad - wants: å bli satt opp på noe som passer dem. Handled by arrangementer. Stages: open -> kontaktet -> satt_opp -> takket_nei. +- komite: en som vil sitte i en komité - wants: en plass i den komiteen som driver med det de bryr seg om. Handled by styret. Stages: open -> plassert -> avslatt. +- trenger-hjelp: 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. Handled by nabohjelp. Stages: open -> formidlet -> ordnet -> ikke_lost. +- kan-hjelpe: en nabo som kan stille opp når noen trenger det - wants: å bli spurt når det passer. Handled by nabohjelp. Stages: open -> registrert -> trukket. +- dele-utstyr: en nabo som har noe å låne ut, eller trenger å låne noe - wants: et oppslag som naboene ser. Handled by styret. Stages: open -> lagt_ut -> tatt_ned. +- utlegg: en i en komité som har lagt ut for noe - wants: pengene tilbake. Handled by kasserer. Stages: open -> godkjent -> utbetalt -> avvist. + +The page: questions/received/trafikkfare.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. +- The button says what pressing it does; the encouragement says what happens next or how little it takes; the form's guidance line says what to have ready. Placeholders are example answers in the reader's words. +- An icon is one name from this list, chosen for what the reader is doing, or empty: house, building-2, store, school, map-pin, route, footprints, trees, leaf, snowflake, sun, users, user, user-plus, user-check, baby, heart-handshake, hand-helping, handshake, smile, mail, phone, message-circle, megaphone, bell, send, inbox, alert-triangle, siren, shield, construction, hammer, wrench, ruler, package, truck, car, bus, train-front, bike, calendar, clock, file-text, clipboard-list, receipt, wallet, coins, banknote, credit-card, key, lock, search, star, gift, shopping-cart, lightbulb, flag, thumbs-up, check-circle, briefcase, stethoscope, activity, camera, pencil, refresh-cw, list, layers, vote, scale +- Write the way people in this trade and country actually speak. + +{ + "back": "", + "description": "", + "next_description": "", + "next_heading": "", + "question": "", + "see_all": { + "button": "", + "description": "", + "heading": "" + } +} + +Reply with the JSON object only. + +=== REPLY === +```json +{ + "back": "Tilbake til forsiden", + "description": "Meldingen din om trafikkfaren er sendt til komiteen for trafikk.", + "next_description": "Trafikkomiteen ser gjennom meldinger jevnlig og tar det videre med kommunen eller den som eier veien der det trengs.", + "next_heading": "Trafikkomiteen tar den videre", + "question": "Hva skjer med meldingen min nå?", + "see_all": { + "button": "Se andre trafikkfarer", + "description": "Se hva andre har meldt inn, og status på sakene.", + "heading": "Andre meldte trafikkfarer" + } +} +``` diff --git a/runs/tomtervel-committees-2026-09-23/llm/26-questions_received_trenger-hjelp.yaml.md b/runs/tomtervel-committees-2026-09-23/llm/26-questions_received_trenger-hjelp.yaml.md new file mode 100644 index 0000000..3a00c20 --- /dev/null +++ b/runs/tomtervel-committees-2026-09-23/llm/26-questions_received_trenger-hjelp.yaml.md @@ -0,0 +1,58 @@ +You write the words for one page of a website for this business. + +Business: Tomter Vel +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. +Contact: Styret i Tomter Vel +Language to write in: no + +Everyone the site serves: +- door medlem: for en husstand i Tomter som vil bli medlem, betale kontingent, eller melde flytting, ny e-post eller utmelding; behind it: bli-medlem, endre-medlemskap +- door melde-fra: for noen som har sett noe farlig i trafikken, eller noe ødelagt på lekeplassen eller stien; behind it: trafikkfare, anleggsfeil +- door bidra: for noen som vil stille opp på 17. mai, dugnad eller et arrangement, eller sitte i en komité; behind it: hjelpe-til, komite +- door naboer: for en nabo som trenger en hånd med snømåking, handling eller skyss, kan gi en, eller har noe å låne ut; behind it: trenger-hjelp, kan-hjelpe, dele-utstyr +- bli-medlem: en husstand i Tomter - wants: å bli medlem og få betalt kontingenten. Handled by kasserer. Stages: open -> betalt -> utmeldt. +- endre-medlemskap: et medlem som har flyttet, byttet e-post eller vil melde seg ut - wants: at velet har riktige opplysninger om dem. Handled by kasserer. Stages: open -> oppdatert. +- trafikkfare: en som har sett et farlig sted i trafikken - wants: at velet tar det opp med kommunen eller den som eier veien. Handled by trafikk. Stages: open -> tatt_opp -> ordnet -> avvist. +- anleggsfeil: en som ser at noe på lekeplassen eller stien er ødelagt - wants: at det blir fikset før noen skader seg. Handled by lekeplasser. Stages: open -> tatt_tak_i -> utbedret. +- horingsinnspill: en beboer som har en mening om en sak kommunen har på høring - wants: at velet tar det med i sitt svar. Handled by horingsinstans. Stages: open -> tatt_med -> ikke_tatt_med. +- hjelpe-til: en som vil hjelpe til på et arrangement eller en dugnad - wants: å bli satt opp på noe som passer dem. Handled by arrangementer. Stages: open -> kontaktet -> satt_opp -> takket_nei. +- komite: en som vil sitte i en komité - wants: en plass i den komiteen som driver med det de bryr seg om. Handled by styret. Stages: open -> plassert -> avslatt. +- trenger-hjelp: 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. Handled by nabohjelp. Stages: open -> formidlet -> ordnet -> ikke_lost. +- kan-hjelpe: en nabo som kan stille opp når noen trenger det - wants: å bli spurt når det passer. Handled by nabohjelp. Stages: open -> registrert -> trukket. +- dele-utstyr: en nabo som har noe å låne ut, eller trenger å låne noe - wants: et oppslag som naboene ser. Handled by styret. Stages: open -> lagt_ut -> tatt_ned. +- utlegg: en i en komité som har lagt ut for noe - wants: pengene tilbake. Handled by kasserer. Stages: open -> godkjent -> utbetalt -> avvist. + +The page: questions/received/trenger-hjelp.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. +- The button says what pressing it does; the encouragement says what happens next or how little it takes; the form's guidance line says what to have ready. Placeholders are example answers in the reader's words. +- An icon is one name from this list, chosen for what the reader is doing, or empty: house, building-2, store, school, map-pin, route, footprints, trees, leaf, snowflake, sun, users, user, user-plus, user-check, baby, heart-handshake, hand-helping, handshake, smile, mail, phone, message-circle, megaphone, bell, send, inbox, alert-triangle, siren, shield, construction, hammer, wrench, ruler, package, truck, car, bus, train-front, bike, calendar, clock, file-text, clipboard-list, receipt, wallet, coins, banknote, credit-card, key, lock, search, star, gift, shopping-cart, lightbulb, flag, thumbs-up, check-circle, briefcase, stethoscope, activity, camera, pencil, refresh-cw, list, layers, vote, scale +- Write the way people in this trade and country actually speak. + +{ + "back": "", + "description": "", + "next_description": "", + "next_heading": "", + "question": "" +} + +Reply with the JSON object only. + +=== REPLY === +```json +{ + "back": "Til forsiden", + "description": "Meldingen din er sendt til nabohjelpa. Vi ser etter en nabo som kan stille opp.", + "next_description": "Vi tar kontakt med noen som kan hjelpe, så snart vi finner en som passer.", + "next_heading": "Vi finner en nabo til deg", + "question": "Hva skjer nå som jeg har bedt om hjelp?" +} +``` diff --git a/runs/tomtervel-committees-2026-09-23/llm/27-questions_status_anleggsfeil_index.yaml.md b/runs/tomtervel-committees-2026-09-23/llm/27-questions_status_anleggsfeil_index.yaml.md new file mode 100644 index 0000000..9fdeed0 --- /dev/null +++ b/runs/tomtervel-committees-2026-09-23/llm/27-questions_status_anleggsfeil_index.yaml.md @@ -0,0 +1,56 @@ +You write the words for one page of a website for this business. + +Business: Tomter Vel +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. +Contact: Styret i Tomter Vel +Language to write in: no + +Everyone the site serves: +- door medlem: for en husstand i Tomter som vil bli medlem, betale kontingent, eller melde flytting, ny e-post eller utmelding; behind it: bli-medlem, endre-medlemskap +- door melde-fra: for noen som har sett noe farlig i trafikken, eller noe ødelagt på lekeplassen eller stien; behind it: trafikkfare, anleggsfeil +- door bidra: for noen som vil stille opp på 17. mai, dugnad eller et arrangement, eller sitte i en komité; behind it: hjelpe-til, komite +- door naboer: for en nabo som trenger en hånd med snømåking, handling eller skyss, kan gi en, eller har noe å låne ut; behind it: trenger-hjelp, kan-hjelpe, dele-utstyr +- bli-medlem: en husstand i Tomter - wants: å bli medlem og få betalt kontingenten. Handled by kasserer. Stages: open -> betalt -> utmeldt. +- endre-medlemskap: et medlem som har flyttet, byttet e-post eller vil melde seg ut - wants: at velet har riktige opplysninger om dem. Handled by kasserer. Stages: open -> oppdatert. +- trafikkfare: en som har sett et farlig sted i trafikken - wants: at velet tar det opp med kommunen eller den som eier veien. Handled by trafikk. Stages: open -> tatt_opp -> ordnet -> avvist. +- anleggsfeil: en som ser at noe på lekeplassen eller stien er ødelagt - wants: at det blir fikset før noen skader seg. Handled by lekeplasser. Stages: open -> tatt_tak_i -> utbedret. +- horingsinnspill: en beboer som har en mening om en sak kommunen har på høring - wants: at velet tar det med i sitt svar. Handled by horingsinstans. Stages: open -> tatt_med -> ikke_tatt_med. +- hjelpe-til: en som vil hjelpe til på et arrangement eller en dugnad - wants: å bli satt opp på noe som passer dem. Handled by arrangementer. Stages: open -> kontaktet -> satt_opp -> takket_nei. +- komite: en som vil sitte i en komité - wants: en plass i den komiteen som driver med det de bryr seg om. Handled by styret. Stages: open -> plassert -> avslatt. +- trenger-hjelp: 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. Handled by nabohjelp. Stages: open -> formidlet -> ordnet -> ikke_lost. +- kan-hjelpe: en nabo som kan stille opp når noen trenger det - wants: å bli spurt når det passer. Handled by nabohjelp. Stages: open -> registrert -> trukket. +- dele-utstyr: en nabo som har noe å låne ut, eller trenger å låne noe - wants: et oppslag som naboene ser. Handled by styret. Stages: open -> lagt_ut -> tatt_ned. +- utlegg: en i en komité som har lagt ut for noe - wants: pengene tilbake. Handled by kasserer. Stages: open -> godkjent -> utbetalt -> avvist. + +The page: questions/status/anleggsfeil/index.yaml +It is a public page anyone can open, listing everything sent in to one bucket and where each one stands, read-only. `question` is what this page asks; `heading` names the list. + +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. +- The button says what pressing it does; the encouragement says what happens next or how little it takes; the form's guidance line says what to have ready. Placeholders are example answers in the reader's words. +- An icon is one name from this list, chosen for what the reader is doing, or empty: house, building-2, store, school, map-pin, route, footprints, trees, leaf, snowflake, sun, users, user, user-plus, user-check, baby, heart-handshake, hand-helping, handshake, smile, mail, phone, message-circle, megaphone, bell, send, inbox, alert-triangle, siren, shield, construction, hammer, wrench, ruler, package, truck, car, bus, train-front, bike, calendar, clock, file-text, clipboard-list, receipt, wallet, coins, banknote, credit-card, key, lock, search, star, gift, shopping-cart, lightbulb, flag, thumbs-up, check-circle, briefcase, stethoscope, activity, camera, pencil, refresh-cw, list, layers, vote, scale +- Write the way people in this trade and country actually speak. + +{ + "back": "", + "description": "", + "heading": "", + "list_description": "", + "question": "" +} + +Reply with the JSON object only. + +=== REPLY === +{ + "back": "Tilbake til meldinger", + "description": "Her ser du meldinger om ødelagt lekeutstyr og skader på elvestien, og hvor langt hver sak har kommet.", + "heading": "Status på meldte anleggsfeil", + "list_description": "Alle meldinger er åpne for alle å se.", + "question": "Hva skjer med det jeg har meldt fra om?" +} diff --git a/runs/tomtervel-committees-2026-09-23/llm/28-questions_status_oppslag_index.yaml.md b/runs/tomtervel-committees-2026-09-23/llm/28-questions_status_oppslag_index.yaml.md new file mode 100644 index 0000000..3064f15 --- /dev/null +++ b/runs/tomtervel-committees-2026-09-23/llm/28-questions_status_oppslag_index.yaml.md @@ -0,0 +1,58 @@ +You write the words for one page of a website for this business. + +Business: Tomter Vel +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. +Contact: Styret i Tomter Vel +Language to write in: no + +Everyone the site serves: +- door medlem: for en husstand i Tomter som vil bli medlem, betale kontingent, eller melde flytting, ny e-post eller utmelding; behind it: bli-medlem, endre-medlemskap +- door melde-fra: for noen som har sett noe farlig i trafikken, eller noe ødelagt på lekeplassen eller stien; behind it: trafikkfare, anleggsfeil +- door bidra: for noen som vil stille opp på 17. mai, dugnad eller et arrangement, eller sitte i en komité; behind it: hjelpe-til, komite +- door naboer: for en nabo som trenger en hånd med snømåking, handling eller skyss, kan gi en, eller har noe å låne ut; behind it: trenger-hjelp, kan-hjelpe, dele-utstyr +- bli-medlem: en husstand i Tomter - wants: å bli medlem og få betalt kontingenten. Handled by kasserer. Stages: open -> betalt -> utmeldt. +- endre-medlemskap: et medlem som har flyttet, byttet e-post eller vil melde seg ut - wants: at velet har riktige opplysninger om dem. Handled by kasserer. Stages: open -> oppdatert. +- trafikkfare: en som har sett et farlig sted i trafikken - wants: at velet tar det opp med kommunen eller den som eier veien. Handled by trafikk. Stages: open -> tatt_opp -> ordnet -> avvist. +- anleggsfeil: en som ser at noe på lekeplassen eller stien er ødelagt - wants: at det blir fikset før noen skader seg. Handled by lekeplasser. Stages: open -> tatt_tak_i -> utbedret. +- horingsinnspill: en beboer som har en mening om en sak kommunen har på høring - wants: at velet tar det med i sitt svar. Handled by horingsinstans. Stages: open -> tatt_med -> ikke_tatt_med. +- hjelpe-til: en som vil hjelpe til på et arrangement eller en dugnad - wants: å bli satt opp på noe som passer dem. Handled by arrangementer. Stages: open -> kontaktet -> satt_opp -> takket_nei. +- komite: en som vil sitte i en komité - wants: en plass i den komiteen som driver med det de bryr seg om. Handled by styret. Stages: open -> plassert -> avslatt. +- trenger-hjelp: 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. Handled by nabohjelp. Stages: open -> formidlet -> ordnet -> ikke_lost. +- kan-hjelpe: en nabo som kan stille opp når noen trenger det - wants: å bli spurt når det passer. Handled by nabohjelp. Stages: open -> registrert -> trukket. +- dele-utstyr: en nabo som har noe å låne ut, eller trenger å låne noe - wants: et oppslag som naboene ser. Handled by styret. Stages: open -> lagt_ut -> tatt_ned. +- utlegg: en i en komité som har lagt ut for noe - wants: pengene tilbake. Handled by kasserer. Stages: open -> godkjent -> utbetalt -> avvist. + +The page: questions/status/oppslag/index.yaml +It is a public page anyone can open, listing everything sent in to one bucket and where each one stands, read-only. `question` is what this page asks; `heading` names the list. + +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. +- The button says what pressing it does; the encouragement says what happens next or how little it takes; the form's guidance line says what to have ready. Placeholders are example answers in the reader's words. +- An icon is one name from this list, chosen for what the reader is doing, or empty: house, building-2, store, school, map-pin, route, footprints, trees, leaf, snowflake, sun, users, user, user-plus, user-check, baby, heart-handshake, hand-helping, handshake, smile, mail, phone, message-circle, megaphone, bell, send, inbox, alert-triangle, siren, shield, construction, hammer, wrench, ruler, package, truck, car, bus, train-front, bike, calendar, clock, file-text, clipboard-list, receipt, wallet, coins, banknote, credit-card, key, lock, search, star, gift, shopping-cart, lightbulb, flag, thumbs-up, check-circle, briefcase, stethoscope, activity, camera, pencil, refresh-cw, list, layers, vote, scale +- Write the way people in this trade and country actually speak. + +{ + "back": "", + "description": "", + "heading": "", + "list_description": "", + "question": "" +} + +Reply with the JSON object only. + +=== REPLY === +```json +{ + "back": "Tilbake", + "description": "Her ser du alt som er sendt inn og hvor langt hvert oppslag har kommet.", + "heading": "Oversikt over det som er meldt inn", + "list_description": "Åpen liste – navn og detaljer vises ikke.", + "question": "Hva er sendt inn, og hvor langt har det kommet?" +} +``` diff --git a/runs/tomtervel-committees-2026-09-23/llm/29-questions_status_trafikkmeldinger_index.yaml.md b/runs/tomtervel-committees-2026-09-23/llm/29-questions_status_trafikkmeldinger_index.yaml.md new file mode 100644 index 0000000..1b4dadd --- /dev/null +++ b/runs/tomtervel-committees-2026-09-23/llm/29-questions_status_trafikkmeldinger_index.yaml.md @@ -0,0 +1,56 @@ +You write the words for one page of a website for this business. + +Business: Tomter Vel +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. +Contact: Styret i Tomter Vel +Language to write in: no + +Everyone the site serves: +- door medlem: for en husstand i Tomter som vil bli medlem, betale kontingent, eller melde flytting, ny e-post eller utmelding; behind it: bli-medlem, endre-medlemskap +- door melde-fra: for noen som har sett noe farlig i trafikken, eller noe ødelagt på lekeplassen eller stien; behind it: trafikkfare, anleggsfeil +- door bidra: for noen som vil stille opp på 17. mai, dugnad eller et arrangement, eller sitte i en komité; behind it: hjelpe-til, komite +- door naboer: for en nabo som trenger en hånd med snømåking, handling eller skyss, kan gi en, eller har noe å låne ut; behind it: trenger-hjelp, kan-hjelpe, dele-utstyr +- bli-medlem: en husstand i Tomter - wants: å bli medlem og få betalt kontingenten. Handled by kasserer. Stages: open -> betalt -> utmeldt. +- endre-medlemskap: et medlem som har flyttet, byttet e-post eller vil melde seg ut - wants: at velet har riktige opplysninger om dem. Handled by kasserer. Stages: open -> oppdatert. +- trafikkfare: en som har sett et farlig sted i trafikken - wants: at velet tar det opp med kommunen eller den som eier veien. Handled by trafikk. Stages: open -> tatt_opp -> ordnet -> avvist. +- anleggsfeil: en som ser at noe på lekeplassen eller stien er ødelagt - wants: at det blir fikset før noen skader seg. Handled by lekeplasser. Stages: open -> tatt_tak_i -> utbedret. +- horingsinnspill: en beboer som har en mening om en sak kommunen har på høring - wants: at velet tar det med i sitt svar. Handled by horingsinstans. Stages: open -> tatt_med -> ikke_tatt_med. +- hjelpe-til: en som vil hjelpe til på et arrangement eller en dugnad - wants: å bli satt opp på noe som passer dem. Handled by arrangementer. Stages: open -> kontaktet -> satt_opp -> takket_nei. +- komite: en som vil sitte i en komité - wants: en plass i den komiteen som driver med det de bryr seg om. Handled by styret. Stages: open -> plassert -> avslatt. +- trenger-hjelp: 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. Handled by nabohjelp. Stages: open -> formidlet -> ordnet -> ikke_lost. +- kan-hjelpe: en nabo som kan stille opp når noen trenger det - wants: å bli spurt når det passer. Handled by nabohjelp. Stages: open -> registrert -> trukket. +- dele-utstyr: en nabo som har noe å låne ut, eller trenger å låne noe - wants: et oppslag som naboene ser. Handled by styret. Stages: open -> lagt_ut -> tatt_ned. +- utlegg: en i en komité som har lagt ut for noe - wants: pengene tilbake. Handled by kasserer. Stages: open -> godkjent -> utbetalt -> avvist. + +The page: questions/status/trafikkmeldinger/index.yaml +It is a public page anyone can open, listing everything sent in to one bucket and where each one stands, read-only. `question` is what this page asks; `heading` names the list. + +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. +- The button says what pressing it does; the encouragement says what happens next or how little it takes; the form's guidance line says what to have ready. Placeholders are example answers in the reader's words. +- An icon is one name from this list, chosen for what the reader is doing, or empty: house, building-2, store, school, map-pin, route, footprints, trees, leaf, snowflake, sun, users, user, user-plus, user-check, baby, heart-handshake, hand-helping, handshake, smile, mail, phone, message-circle, megaphone, bell, send, inbox, alert-triangle, siren, shield, construction, hammer, wrench, ruler, package, truck, car, bus, train-front, bike, calendar, clock, file-text, clipboard-list, receipt, wallet, coins, banknote, credit-card, key, lock, search, star, gift, shopping-cart, lightbulb, flag, thumbs-up, check-circle, briefcase, stethoscope, activity, camera, pencil, refresh-cw, list, layers, vote, scale +- Write the way people in this trade and country actually speak. + +{ + "back": "", + "description": "", + "heading": "", + "list_description": "", + "question": "" +} + +Reply with the JSON object only. + +=== REPLY === +{ + "back": "Tilbake", + "description": "Her ser du farlige steder i trafikken som er meldt inn, og hvor langt saken har kommet.", + "heading": "Trafikkmeldinger og status", + "list_description": "Alle meldinger som er sendt inn, og hvor de står nå.", + "question": "Er det meldt fra om noe farlig i trafikken der jeg bor?" +} diff --git a/runs/tomtervel-committees-2026-09-23/llm/30-questions_styret_index.yaml.md b/runs/tomtervel-committees-2026-09-23/llm/30-questions_styret_index.yaml.md new file mode 100644 index 0000000..1c366ad --- /dev/null +++ b/runs/tomtervel-committees-2026-09-23/llm/30-questions_styret_index.yaml.md @@ -0,0 +1,112 @@ +You write the words for one page of a website for this business. + +Business: Tomter Vel +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. +Contact: Styret i Tomter Vel +Language to write in: no + +Everyone the site serves: +- door medlem: for en husstand i Tomter som vil bli medlem, betale kontingent, eller melde flytting, ny e-post eller utmelding; behind it: bli-medlem, endre-medlemskap +- door melde-fra: for noen som har sett noe farlig i trafikken, eller noe ødelagt på lekeplassen eller stien; behind it: trafikkfare, anleggsfeil +- door bidra: for noen som vil stille opp på 17. mai, dugnad eller et arrangement, eller sitte i en komité; behind it: hjelpe-til, komite +- door naboer: for en nabo som trenger en hånd med snømåking, handling eller skyss, kan gi en, eller har noe å låne ut; behind it: trenger-hjelp, kan-hjelpe, dele-utstyr +- bli-medlem: en husstand i Tomter - wants: å bli medlem og få betalt kontingenten. Handled by kasserer. Stages: open -> betalt -> utmeldt. +- endre-medlemskap: et medlem som har flyttet, byttet e-post eller vil melde seg ut - wants: at velet har riktige opplysninger om dem. Handled by kasserer. Stages: open -> oppdatert. +- trafikkfare: en som har sett et farlig sted i trafikken - wants: at velet tar det opp med kommunen eller den som eier veien. Handled by trafikk. Stages: open -> tatt_opp -> ordnet -> avvist. +- anleggsfeil: en som ser at noe på lekeplassen eller stien er ødelagt - wants: at det blir fikset før noen skader seg. Handled by lekeplasser. Stages: open -> tatt_tak_i -> utbedret. +- horingsinnspill: en beboer som har en mening om en sak kommunen har på høring - wants: at velet tar det med i sitt svar. Handled by horingsinstans. Stages: open -> tatt_med -> ikke_tatt_med. +- hjelpe-til: en som vil hjelpe til på et arrangement eller en dugnad - wants: å bli satt opp på noe som passer dem. Handled by arrangementer. Stages: open -> kontaktet -> satt_opp -> takket_nei. +- komite: en som vil sitte i en komité - wants: en plass i den komiteen som driver med det de bryr seg om. Handled by styret. Stages: open -> plassert -> avslatt. +- trenger-hjelp: 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. Handled by nabohjelp. Stages: open -> formidlet -> ordnet -> ikke_lost. +- kan-hjelpe: en nabo som kan stille opp når noen trenger det - wants: å bli spurt når det passer. Handled by nabohjelp. Stages: open -> registrert -> trukket. +- dele-utstyr: en nabo som har noe å låne ut, eller trenger å låne noe - wants: et oppslag som naboene ser. Handled by styret. Stages: open -> lagt_ut -> tatt_ned. +- utlegg: en i en komité som har lagt ut for noe - wants: pengene tilbake. Handled by kasserer. Stages: open -> godkjent -> utbetalt -> avvist. + +The page: questions/styret/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. +- The button says what pressing it does; the encouragement says what happens next or how little it takes; the form's guidance line says what to have ready. Placeholders are example answers in the reader's words. +- An icon is one name from this list, chosen for what the reader is doing, or empty: house, building-2, store, school, map-pin, route, footprints, trees, leaf, snowflake, sun, users, user, user-plus, user-check, baby, heart-handshake, hand-helping, handshake, smile, mail, phone, message-circle, megaphone, bell, send, inbox, alert-triangle, siren, shield, construction, hammer, wrench, ruler, package, truck, car, bus, train-front, bike, calendar, clock, file-text, clipboard-list, receipt, wallet, coins, banknote, credit-card, key, lock, search, star, gift, shopping-cart, lightbulb, flag, thumbs-up, check-circle, briefcase, stethoscope, activity, camera, pencil, refresh-cw, list, layers, vote, scale +- Write the way people in this trade and country actually speak. + +{ + "buckets": { + "innspill": { + "description": "", + "heading": "", + "moves": {} + }, + "komitesoknader": { + "description": "", + "heading": "", + "moves": { + "open->avslatt": "avslatt>", + "open->plassert": "plassert>" + } + }, + "oppslag": { + "description": "", + "heading": "", + "moves": { + "open->lagt_ut": "lagt_ut>", + "open->tatt_ned": "tatt_ned>" + } + }, + "trafikkmeldinger": { + "description": "", + "heading": "", + "moves": {} + } + }, + "confirm": "", + "description": "", + "links": {}, + "question": "" +} + +Reply with the JSON object only. + +=== REPLY === +```json +{ + "buckets": { + "innspill": { + "description": "Her samles meninger fra beboerne om saker kommunen har på høring, klare til å tas med i velets svar.", + "heading": "Høringsinnspill fra beboerne", + "moves": {} + }, + "komitesoknader": { + "description": "Her ligger alle som har meldt seg til en komité og venter på en plass.", + "heading": "Søknader til komiteene", + "moves": { + "open->avslatt": "Avslå søknaden", + "open->plassert": "Sett i komité" + } + }, + "oppslag": { + "description": "Her ligger det naboer har å låne ut eller trenger å låne, klart til å legges ut.", + "heading": "Utstyr til utlån blant naboer", + "moves": { + "open->lagt_ut": "Legg ut oppslaget", + "open->tatt_ned": "Ta ned oppslaget" + } + }, + "trafikkmeldinger": { + "description": "Her samles meldinger om farlige steder i trafikken, klare til å tas videre med kommunen eller veieier.", + "heading": "Meldinger om trafikkfarer", + "moves": {} + } + }, + "confirm": "Lagre", + "description": "Herfra følger styret opp det som ikke hører under en enkelt komité: høringssvar, komitéplasser og oppslag fra naboer.", + "links": {}, + "question": "Hva venter på styret akkurat nå?" +} +``` diff --git a/runs/tomtervel-committees-2026-09-23/llm/31-questions_trafikk_index.yaml.md b/runs/tomtervel-committees-2026-09-23/llm/31-questions_trafikk_index.yaml.md new file mode 100644 index 0000000..61c3685 --- /dev/null +++ b/runs/tomtervel-committees-2026-09-23/llm/31-questions_trafikk_index.yaml.md @@ -0,0 +1,80 @@ +You write the words for one page of a website for this business. + +Business: Tomter Vel +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. +Contact: Styret i Tomter Vel +Language to write in: no + +Everyone the site serves: +- door medlem: for en husstand i Tomter som vil bli medlem, betale kontingent, eller melde flytting, ny e-post eller utmelding; behind it: bli-medlem, endre-medlemskap +- door melde-fra: for noen som har sett noe farlig i trafikken, eller noe ødelagt på lekeplassen eller stien; behind it: trafikkfare, anleggsfeil +- door bidra: for noen som vil stille opp på 17. mai, dugnad eller et arrangement, eller sitte i en komité; behind it: hjelpe-til, komite +- door naboer: for en nabo som trenger en hånd med snømåking, handling eller skyss, kan gi en, eller har noe å låne ut; behind it: trenger-hjelp, kan-hjelpe, dele-utstyr +- bli-medlem: en husstand i Tomter - wants: å bli medlem og få betalt kontingenten. Handled by kasserer. Stages: open -> betalt -> utmeldt. +- endre-medlemskap: et medlem som har flyttet, byttet e-post eller vil melde seg ut - wants: at velet har riktige opplysninger om dem. Handled by kasserer. Stages: open -> oppdatert. +- trafikkfare: en som har sett et farlig sted i trafikken - wants: at velet tar det opp med kommunen eller den som eier veien. Handled by trafikk. Stages: open -> tatt_opp -> ordnet -> avvist. +- anleggsfeil: en som ser at noe på lekeplassen eller stien er ødelagt - wants: at det blir fikset før noen skader seg. Handled by lekeplasser. Stages: open -> tatt_tak_i -> utbedret. +- horingsinnspill: en beboer som har en mening om en sak kommunen har på høring - wants: at velet tar det med i sitt svar. Handled by horingsinstans. Stages: open -> tatt_med -> ikke_tatt_med. +- hjelpe-til: en som vil hjelpe til på et arrangement eller en dugnad - wants: å bli satt opp på noe som passer dem. Handled by arrangementer. Stages: open -> kontaktet -> satt_opp -> takket_nei. +- komite: en som vil sitte i en komité - wants: en plass i den komiteen som driver med det de bryr seg om. Handled by styret. Stages: open -> plassert -> avslatt. +- trenger-hjelp: 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. Handled by nabohjelp. Stages: open -> formidlet -> ordnet -> ikke_lost. +- kan-hjelpe: en nabo som kan stille opp når noen trenger det - wants: å bli spurt når det passer. Handled by nabohjelp. Stages: open -> registrert -> trukket. +- dele-utstyr: en nabo som har noe å låne ut, eller trenger å låne noe - wants: et oppslag som naboene ser. Handled by styret. Stages: open -> lagt_ut -> tatt_ned. +- utlegg: en i en komité som har lagt ut for noe - wants: pengene tilbake. Handled by kasserer. Stages: open -> godkjent -> utbetalt -> avvist. + +The page: questions/trafikk/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. +- The button says what pressing it does; the encouragement says what happens next or how little it takes; the form's guidance line says what to have ready. Placeholders are example answers in the reader's words. +- An icon is one name from this list, chosen for what the reader is doing, or empty: house, building-2, store, school, map-pin, route, footprints, trees, leaf, snowflake, sun, users, user, user-plus, user-check, baby, heart-handshake, hand-helping, handshake, smile, mail, phone, message-circle, megaphone, bell, send, inbox, alert-triangle, siren, shield, construction, hammer, wrench, ruler, package, truck, car, bus, train-front, bike, calendar, clock, file-text, clipboard-list, receipt, wallet, coins, banknote, credit-card, key, lock, search, star, gift, shopping-cart, lightbulb, flag, thumbs-up, check-circle, briefcase, stethoscope, activity, camera, pencil, refresh-cw, list, layers, vote, scale +- Write the way people in this trade and country actually speak. + +{ + "buckets": { + "trafikkmeldinger": { + "description": "", + "heading": "", + "moves": { + "open->avvist": "avvist>", + "open->tatt_opp": "tatt_opp>", + "tatt_opp->avvist": "avvist>", + "tatt_opp->ordnet": "ordnet>" + } + } + }, + "confirm": "", + "description": "", + "links": {}, + "question": "" +} + +Reply with the JSON object only. + +=== REPLY === +```json +{ + "buckets": { + "trafikkmeldinger": { + "description": "Farlige steder i trafikken som naboer har meldt inn.", + "heading": "Farlige steder i trafikken", + "moves": { + "open->avvist": "Avvis meldingen", + "open->tatt_opp": "Ta opp med kommunen", + "tatt_opp->avvist": "Avvis meldingen", + "tatt_opp->ordnet": "Meld ordnet" + } + } + }, + "confirm": "Lagre", + "description": "Her ser du meldinger om farlige steder i trafikken og følger dem opp overfor kommunen eller veieier.", + "links": {}, + "question": "Hvilke trafikkfarer må følges opp?" +} +``` diff --git a/runs/tomtervel-committees-2026-09-23/model.json b/runs/tomtervel-committees-2026-09-23/model.json new file mode 100644 index 0000000..95732e2 --- /dev/null +++ b/runs/tomtervel-committees-2026-09-23/model.json @@ -0,0 +1,1496 @@ +{ + "buckets": { + "anleggsfeil": { + "desks": [ + { + "group": "lekeplasser", + "moves": [ + { + "from": "open", + "label": "Ta tak i saken", + "to": "tatt_tak_i" + }, + { + "from": "tatt_tak_i", + "label": "Merk som utbedret", + "to": "utbedret" + } + ], + "page": "/lekeplasser" + }, + { + "group": null, + "moves": [], + "page": "/status/anleggsfeil" + } + ], + "initial": "open", + "self_moves": [], + "transitions": { + "open": [ + "tatt_tak_i" + ], + "tatt_tak_i": [ + "utbedret" + ] + } + }, + "frivillige": { + "desks": [ + { + "group": "arrangementer", + "moves": [ + { + "from": "kontaktet", + "label": "Sett opp", + "to": "satt_opp" + }, + { + "from": "kontaktet", + "label": "Takket nei", + "to": "takket_nei" + }, + { + "from": "open", + "label": "Merk som kontaktet", + "to": "kontaktet" + }, + { + "from": "open", + "label": "Takket nei", + "to": "takket_nei" + } + ], + "page": "/arrangementer" + } + ], + "initial": "open", + "self_moves": [], + "transitions": { + "kontaktet": [ + "satt_opp", + "takket_nei" + ], + "open": [ + "kontaktet", + "takket_nei" + ] + } + }, + "hjelpebehov": { + "desks": [ + { + "group": "nabohjelp", + "moves": [ + { + "from": "formidlet", + "label": "Meld ordnet", + "to": "ordnet" + }, + { + "from": "formidlet", + "label": "Meld ikke løst", + "to": "ikke_lost" + }, + { + "from": "open", + "label": "Koble til nabo", + "to": "formidlet" + }, + { + "from": "open", + "label": "Meld ikke løst", + "to": "ikke_lost" + } + ], + "page": "/nabohjelp" + } + ], + "initial": "open", + "self_moves": [ + "ordnet" + ], + "transitions": { + "formidlet": [ + "ordnet", + "ikke_lost" + ], + "open": [ + "formidlet", + "ikke_lost" + ] + } + }, + "hjelpere": { + "desks": [ + { + "group": "nabohjelp", + "moves": [ + { + "from": "open", + "label": "Registrer som hjelper", + "to": "registrert" + }, + { + "from": "open", + "label": "Meld trukket", + "to": "trukket" + } + ], + "page": "/nabohjelp" + } + ], + "initial": "open", + "self_moves": [ + "trukket" + ], + "transitions": { + "open": [ + "registrert", + "trukket" + ] + } + }, + "husstander": { + "desks": [ + { + "group": "kasserer", + "moves": [ + { + "from": "open", + "label": "Registrer betaling", + "to": "betalt" + }, + { + "from": "open", + "label": "Meld ut", + "to": "utmeldt" + } + ], + "page": "/kasserer" + } + ], + "initial": "open", + "self_moves": [], + "transitions": { + "open": [ + "betalt", + "utmeldt" + ] + } + }, + "innspill": { + "desks": [ + { + "group": "horingsinstans", + "moves": [ + { + "from": "open", + "label": "Tatt med i svaret", + "to": "tatt_med" + }, + { + "from": "open", + "label": "Ikke tatt med", + "to": "ikke_tatt_med" + } + ], + "page": "/horingsinstans" + }, + { + "group": "styret", + "moves": [], + "page": "/styret" + } + ], + "initial": "open", + "self_moves": [], + "transitions": { + "open": [ + "tatt_med", + "ikke_tatt_med" + ] + } + }, + "komitesoknader": { + "desks": [ + { + "group": "styret", + "moves": [ + { + "from": "open", + "label": "Sett i komité", + "to": "plassert" + }, + { + "from": "open", + "label": "Avslå søknaden", + "to": "avslatt" + } + ], + "page": "/styret" + } + ], + "initial": "open", + "self_moves": [], + "transitions": { + "open": [ + "plassert", + "avslatt" + ] + } + }, + "medlemsendringer": { + "desks": [ + { + "group": "kasserer", + "moves": [ + { + "from": "open", + "label": "Registrer endring", + "to": "oppdatert" + } + ], + "page": "/kasserer" + } + ], + "initial": "open", + "self_moves": [], + "transitions": { + "open": [ + "oppdatert" + ] + } + }, + "oppslag": { + "desks": [ + { + "group": null, + "moves": [], + "page": "/status/oppslag" + }, + { + "group": "styret", + "moves": [ + { + "from": "open", + "label": "Legg ut oppslaget", + "to": "lagt_ut" + }, + { + "from": "open", + "label": "Ta ned oppslaget", + "to": "tatt_ned" + } + ], + "page": "/styret" + } + ], + "initial": "open", + "self_moves": [ + "tatt_ned" + ], + "transitions": { + "open": [ + "lagt_ut", + "tatt_ned" + ] + } + }, + "trafikkmeldinger": { + "desks": [ + { + "group": null, + "moves": [], + "page": "/status/trafikkmeldinger" + }, + { + "group": "styret", + "moves": [], + "page": "/styret" + }, + { + "group": "trafikk", + "moves": [ + { + "from": "open", + "label": "Ta opp med kommunen", + "to": "tatt_opp" + }, + { + "from": "open", + "label": "Avvis meldingen", + "to": "avvist" + }, + { + "from": "tatt_opp", + "label": "Meld ordnet", + "to": "ordnet" + }, + { + "from": "tatt_opp", + "label": "Avvis meldingen", + "to": "avvist" + } + ], + "page": "/trafikk" + } + ], + "initial": "open", + "self_moves": [], + "transitions": { + "open": [ + "tatt_opp", + "avvist" + ], + "tatt_opp": [ + "ordnet", + "avvist" + ] + } + }, + "utlegg": { + "desks": [ + { + "group": "kasserer", + "moves": [ + { + "from": "godkjent", + "label": "Merk som utbetalt", + "to": "utbetalt" + }, + { + "from": "godkjent", + "label": "Avvis likevel", + "to": "avvist" + }, + { + "from": "open", + "label": "Godkjenn utlegg", + "to": "godkjent" + }, + { + "from": "open", + "label": "Avvis utlegg", + "to": "avvist" + } + ], + "page": "/kasserer" + } + ], + "initial": "open", + "self_moves": [], + "transitions": { + "godkjent": [ + "utbetalt", + "avvist" + ], + "open": [ + "godkjent", + "avvist" + ] + } + } + }, + "needs": [ + { + "done_when": [ + "betalt", + "utmeldt" + ], + "enters_as": null, + "handled_by": "kasserer", + "id": "bli-medlem", + "lands_in": "husstander", + "steps": [ + { + "alternative": "Bli medlem eller endre opplysningene dine", + "expect": [ + "Bli medlem eller endre opplysningene dine" + ], + "fields": [], + "options": [ + { + "description": "Meld deg inn, betal kontingenten, eller gi beskjed om flytting, ny e-post eller utmelding.", + "name": "Bli medlem eller endre opplysningene dine" + }, + { + "description": "Sett du noe farlig i trafikken, eller noe ødelagt på lekeplassen eller elvestien? Gi oss beskjed.", + "name": "Meld fra om noe som bør fikses" + }, + { + "description": "Vi trenger folk på 17. mai, dugnader og i komiteene. Det trengs ikke mer enn litt tid du har å avse.", + "name": "Bli med og gjør en innsats" + }, + { + "description": "Trenger du en hånd med snømåking, handling eller skyss? Eller kan du stille opp for en nabo? Her møtes dere.", + "name": "Få hjelp av naboer, eller gi en hånd selv" + }, + { + "description": "Har kommunen en sak på høring du mener noe om? Send oss innspillet ditt, så tar vi det med i velets svar.", + "name": "Få din mening med i høringssvaret" + } + ], + "page": "/", + "question": "Hva gjelder det for deg?" + }, + { + "alternative": "Bli medlem av Tomter Vel", + "expect": [ + "Bli medlem av Tomter Vel" + ], + "fields": [ + { + "label": "Navn", + "name": "navn", + "optional": false, + "options": [], + "type": "text" + }, + { + "label": "Adresse", + "name": "adresse", + "optional": false, + "options": [], + "type": "text" + }, + { + "label": "E-post", + "name": "epost", + "optional": false, + "options": [], + "type": "email" + }, + { + "label": "Telefon", + "name": "telefon", + "optional": true, + "options": [], + "type": "tel" + } + ], + "options": [ + { + "description": "Meld deg inn i velet, så holder vi deg oppdatert og du støtter arbeidet i nærmiljøet.", + "name": "Bli medlem av Tomter Vel" + }, + { + "description": "Har du flyttet, byttet e-post eller vil melde deg ut? Gi oss beskjed så vi har riktige opplysninger.", + "name": "Oppdater eller avslutt medlemskapet" + } + ], + "page": "/medlem", + "question": "Vil du bli medlem, eller endre medlemskapet ditt?" + } + ], + "success": [ + "betalt" + ], + "wants": "å bli medlem og få betalt kontingenten", + "who": "en husstand i Tomter" + }, + { + "done_when": [ + "oppdatert" + ], + "enters_as": null, + "handled_by": "kasserer", + "id": "endre-medlemskap", + "lands_in": "medlemsendringer", + "steps": [ + { + "alternative": "Bli medlem eller endre opplysningene dine", + "expect": [ + "Bli medlem eller endre opplysningene dine" + ], + "fields": [], + "options": [ + { + "description": "Meld deg inn, betal kontingenten, eller gi beskjed om flytting, ny e-post eller utmelding.", + "name": "Bli medlem eller endre opplysningene dine" + }, + { + "description": "Sett du noe farlig i trafikken, eller noe ødelagt på lekeplassen eller elvestien? Gi oss beskjed.", + "name": "Meld fra om noe som bør fikses" + }, + { + "description": "Vi trenger folk på 17. mai, dugnader og i komiteene. Det trengs ikke mer enn litt tid du har å avse.", + "name": "Bli med og gjør en innsats" + }, + { + "description": "Trenger du en hånd med snømåking, handling eller skyss? Eller kan du stille opp for en nabo? Her møtes dere.", + "name": "Få hjelp av naboer, eller gi en hånd selv" + }, + { + "description": "Har kommunen en sak på høring du mener noe om? Send oss innspillet ditt, så tar vi det med i velets svar.", + "name": "Få din mening med i høringssvaret" + } + ], + "page": "/", + "question": "Hva gjelder det for deg?" + }, + { + "alternative": "Oppdater eller avslutt medlemskapet", + "expect": [ + "Oppdater eller avslutt medlemskapet" + ], + "fields": [ + { + "label": "Navn", + "name": "navn", + "optional": false, + "options": [], + "type": "text" + }, + { + "label": "Adresse", + "name": "adresse", + "optional": false, + "options": [], + "type": "text" + }, + { + "label": "Hva vil du endre?", + "name": "hva_er_nytt", + "optional": false, + "options": [], + "type": "textarea" + } + ], + "options": [ + { + "description": "Meld deg inn i velet, så holder vi deg oppdatert og du støtter arbeidet i nærmiljøet.", + "name": "Bli medlem av Tomter Vel" + }, + { + "description": "Har du flyttet, byttet e-post eller vil melde deg ut? Gi oss beskjed så vi har riktige opplysninger.", + "name": "Oppdater eller avslutt medlemskapet" + } + ], + "page": "/medlem", + "question": "Vil du bli medlem, eller endre medlemskapet ditt?" + } + ], + "success": [ + "oppdatert" + ], + "wants": "at velet har riktige opplysninger om dem", + "who": "et medlem som har flyttet, byttet e-post eller vil melde seg ut" + }, + { + "done_when": [ + "ordnet", + "avvist" + ], + "enters_as": null, + "handled_by": "trafikk", + "id": "trafikkfare", + "lands_in": "trafikkmeldinger", + "steps": [ + { + "alternative": "Meld fra om noe som bør fikses", + "expect": [ + "Meld fra om noe som bør fikses" + ], + "fields": [], + "options": [ + { + "description": "Meld deg inn, betal kontingenten, eller gi beskjed om flytting, ny e-post eller utmelding.", + "name": "Bli medlem eller endre opplysningene dine" + }, + { + "description": "Sett du noe farlig i trafikken, eller noe ødelagt på lekeplassen eller elvestien? Gi oss beskjed.", + "name": "Meld fra om noe som bør fikses" + }, + { + "description": "Vi trenger folk på 17. mai, dugnader og i komiteene. Det trengs ikke mer enn litt tid du har å avse.", + "name": "Bli med og gjør en innsats" + }, + { + "description": "Trenger du en hånd med snømåking, handling eller skyss? Eller kan du stille opp for en nabo? Her møtes dere.", + "name": "Få hjelp av naboer, eller gi en hånd selv" + }, + { + "description": "Har kommunen en sak på høring du mener noe om? Send oss innspillet ditt, så tar vi det med i velets svar.", + "name": "Få din mening med i høringssvaret" + } + ], + "page": "/", + "question": "Hva gjelder det for deg?" + }, + { + "alternative": "Meld fra om en trafikkfare", + "expect": [ + "Meld fra om en trafikkfare" + ], + "fields": [ + { + "label": "Hvor var det", + "name": "hvor", + "optional": false, + "options": [], + "type": "text" + }, + { + "label": "Hva så du", + "name": "hva", + "optional": false, + "options": [], + "type": "textarea" + }, + { + "label": "E-post (valgfritt)", + "name": "epost", + "optional": true, + "options": [], + "type": "email" + } + ], + "options": [ + { + "description": "Sett du noe farlig i trafikken? Fortell trafikkomiteen om det, så tar de det videre.", + "name": "Meld fra om en trafikkfare" + }, + { + "description": "Se noe ødelagt på en lekeplass eller langs elvestien, så tar lekeplasskomiteen tak i det.", + "name": "Meld fra om noe ødelagt" + } + ], + "page": "/melde-fra", + "question": "Hva vil du melde fra om?" + } + ], + "success": [ + "ordnet" + ], + "wants": "at velet tar det opp med kommunen eller den som eier veien", + "who": "en som har sett et farlig sted i trafikken" + }, + { + "done_when": [ + "utbedret" + ], + "enters_as": null, + "handled_by": "lekeplasser", + "id": "anleggsfeil", + "lands_in": "anleggsfeil", + "steps": [ + { + "alternative": "Meld fra om noe som bør fikses", + "expect": [ + "Meld fra om noe som bør fikses" + ], + "fields": [], + "options": [ + { + "description": "Meld deg inn, betal kontingenten, eller gi beskjed om flytting, ny e-post eller utmelding.", + "name": "Bli medlem eller endre opplysningene dine" + }, + { + "description": "Sett du noe farlig i trafikken, eller noe ødelagt på lekeplassen eller elvestien? Gi oss beskjed.", + "name": "Meld fra om noe som bør fikses" + }, + { + "description": "Vi trenger folk på 17. mai, dugnader og i komiteene. Det trengs ikke mer enn litt tid du har å avse.", + "name": "Bli med og gjør en innsats" + }, + { + "description": "Trenger du en hånd med snømåking, handling eller skyss? Eller kan du stille opp for en nabo? Her møtes dere.", + "name": "Få hjelp av naboer, eller gi en hånd selv" + }, + { + "description": "Har kommunen en sak på høring du mener noe om? Send oss innspillet ditt, så tar vi det med i velets svar.", + "name": "Få din mening med i høringssvaret" + } + ], + "page": "/", + "question": "Hva gjelder det for deg?" + }, + { + "alternative": "Meld fra om noe ødelagt", + "expect": [ + "Meld fra om noe ødelagt" + ], + "fields": [ + { + "label": "Hvor er det", + "name": "hvor", + "optional": false, + "options": [ + "Lekeplassen", + "Elvestien", + "Skøytebanen", + "Et annet sted" + ], + "type": "select" + }, + { + "label": "Hva er ødelagt", + "name": "hva", + "optional": false, + "options": [], + "type": "textarea" + } + ], + "options": [ + { + "description": "Sett du noe farlig i trafikken? Fortell trafikkomiteen om det, så tar de det videre.", + "name": "Meld fra om en trafikkfare" + }, + { + "description": "Se noe ødelagt på en lekeplass eller langs elvestien, så tar lekeplasskomiteen tak i det.", + "name": "Meld fra om noe ødelagt" + } + ], + "page": "/melde-fra", + "question": "Hva vil du melde fra om?" + } + ], + "success": [ + "utbedret" + ], + "wants": "at det blir fikset før noen skader seg", + "who": "en som ser at noe på lekeplassen eller stien er ødelagt" + }, + { + "done_when": [ + "tatt_med", + "ikke_tatt_med" + ], + "enters_as": null, + "handled_by": "horingsinstans", + "id": "horingsinnspill", + "lands_in": "innspill", + "steps": [ + { + "alternative": "Få din mening med i høringssvaret", + "expect": [ + "Få din mening med i høringssvaret" + ], + "fields": [ + { + "label": "Navn", + "name": "navn", + "optional": false, + "options": [], + "type": "text" + }, + { + "label": "Hvilken sak gjelder det?", + "name": "sak", + "optional": false, + "options": [], + "type": "text" + }, + { + "label": "Hva mener du?", + "name": "innspill", + "optional": false, + "options": [], + "type": "textarea" + } + ], + "options": [ + { + "description": "Meld deg inn, betal kontingenten, eller gi beskjed om flytting, ny e-post eller utmelding.", + "name": "Bli medlem eller endre opplysningene dine" + }, + { + "description": "Sett du noe farlig i trafikken, eller noe ødelagt på lekeplassen eller elvestien? Gi oss beskjed.", + "name": "Meld fra om noe som bør fikses" + }, + { + "description": "Vi trenger folk på 17. mai, dugnader og i komiteene. Det trengs ikke mer enn litt tid du har å avse.", + "name": "Bli med og gjør en innsats" + }, + { + "description": "Trenger du en hånd med snømåking, handling eller skyss? Eller kan du stille opp for en nabo? Her møtes dere.", + "name": "Få hjelp av naboer, eller gi en hånd selv" + }, + { + "description": "Har kommunen en sak på høring du mener noe om? Send oss innspillet ditt, så tar vi det med i velets svar.", + "name": "Få din mening med i høringssvaret" + } + ], + "page": "/", + "question": "Hva gjelder det for deg?" + } + ], + "success": [ + "tatt_med" + ], + "wants": "at velet tar det med i sitt svar", + "who": "en beboer som har en mening om en sak kommunen har på høring" + }, + { + "done_when": [ + "satt_opp", + "takket_nei" + ], + "enters_as": null, + "handled_by": "arrangementer", + "id": "hjelpe-til", + "lands_in": "frivillige", + "steps": [ + { + "alternative": "Bli med og gjør en innsats", + "expect": [ + "Bli med og gjør en innsats" + ], + "fields": [], + "options": [ + { + "description": "Meld deg inn, betal kontingenten, eller gi beskjed om flytting, ny e-post eller utmelding.", + "name": "Bli medlem eller endre opplysningene dine" + }, + { + "description": "Sett du noe farlig i trafikken, eller noe ødelagt på lekeplassen eller elvestien? Gi oss beskjed.", + "name": "Meld fra om noe som bør fikses" + }, + { + "description": "Vi trenger folk på 17. mai, dugnader og i komiteene. Det trengs ikke mer enn litt tid du har å avse.", + "name": "Bli med og gjør en innsats" + }, + { + "description": "Trenger du en hånd med snømåking, handling eller skyss? Eller kan du stille opp for en nabo? Her møtes dere.", + "name": "Få hjelp av naboer, eller gi en hånd selv" + }, + { + "description": "Har kommunen en sak på høring du mener noe om? Send oss innspillet ditt, så tar vi det med i velets svar.", + "name": "Få din mening med i høringssvaret" + } + ], + "page": "/", + "question": "Hva gjelder det for deg?" + }, + { + "alternative": "Bli med på dugnad eller arrangement", + "expect": [ + "Bli med på dugnad eller arrangement" + ], + "fields": [ + { + "label": "Navn", + "name": "navn", + "optional": false, + "options": [], + "type": "text" + }, + { + "label": "Telefon", + "name": "telefon", + "optional": false, + "options": [], + "type": "tel" + }, + { + "label": "Hva kan du hjelpe til med?", + "name": "hva", + "optional": false, + "options": [ + "17. mai", + "Juletregranstenning", + "Skøytedag", + "Dugnad på elvestien", + "Det som trengs" + ], + "type": "select" + } + ], + "options": [ + { + "description": "17. mai, dugnad eller andre arrangementer trenger folk som stiller opp. Si fra hva du kan bidra med, så setter vi deg opp på noe som passer.", + "name": "Bli med på dugnad eller arrangement" + }, + { + "description": "Velet drives av sju komiteer på fritida, og alle trenger flere hender. Si hvilken komité du har lyst til å være med i.", + "name": "Sitt i en komité som betyr noe for deg" + } + ], + "page": "/bidra", + "question": "Vil du hjelpe til i nabolaget?" + } + ], + "success": [ + "satt_opp" + ], + "wants": "å bli satt opp på noe som passer dem", + "who": "en som vil hjelpe til på et arrangement eller en dugnad" + }, + { + "done_when": [ + "plassert", + "avslatt" + ], + "enters_as": null, + "handled_by": "styret", + "id": "komite", + "lands_in": "komitesoknader", + "steps": [ + { + "alternative": "Bli med og gjør en innsats", + "expect": [ + "Bli med og gjør en innsats" + ], + "fields": [], + "options": [ + { + "description": "Meld deg inn, betal kontingenten, eller gi beskjed om flytting, ny e-post eller utmelding.", + "name": "Bli medlem eller endre opplysningene dine" + }, + { + "description": "Sett du noe farlig i trafikken, eller noe ødelagt på lekeplassen eller elvestien? Gi oss beskjed.", + "name": "Meld fra om noe som bør fikses" + }, + { + "description": "Vi trenger folk på 17. mai, dugnader og i komiteene. Det trengs ikke mer enn litt tid du har å avse.", + "name": "Bli med og gjør en innsats" + }, + { + "description": "Trenger du en hånd med snømåking, handling eller skyss? Eller kan du stille opp for en nabo? Her møtes dere.", + "name": "Få hjelp av naboer, eller gi en hånd selv" + }, + { + "description": "Har kommunen en sak på høring du mener noe om? Send oss innspillet ditt, så tar vi det med i velets svar.", + "name": "Få din mening med i høringssvaret" + } + ], + "page": "/", + "question": "Hva gjelder det for deg?" + }, + { + "alternative": "Sitt i en komité som betyr noe for deg", + "expect": [ + "Sitt i en komité som betyr noe for deg" + ], + "fields": [ + { + "label": "Navn", + "name": "navn", + "optional": false, + "options": [], + "type": "text" + }, + { + "label": "E-post", + "name": "epost", + "optional": false, + "options": [], + "type": "email" + }, + { + "label": "Hvilken komité?", + "name": "komite", + "optional": false, + "options": [ + "Arrangementer", + "Elvesti", + "Høringsinstans", + "Leke- og møteplasser", + "Miljøgate", + "Pendlerforhold", + "Trafikkforhold" + ], + "type": "select" + } + ], + "options": [ + { + "description": "17. mai, dugnad eller andre arrangementer trenger folk som stiller opp. Si fra hva du kan bidra med, så setter vi deg opp på noe som passer.", + "name": "Bli med på dugnad eller arrangement" + }, + { + "description": "Velet drives av sju komiteer på fritida, og alle trenger flere hender. Si hvilken komité du har lyst til å være med i.", + "name": "Sitt i en komité som betyr noe for deg" + } + ], + "page": "/bidra", + "question": "Vil du hjelpe til i nabolaget?" + } + ], + "success": [ + "plassert" + ], + "wants": "en plass i den komiteen som driver med det de bryr seg om", + "who": "en som vil sitte i en komité" + }, + { + "done_when": [ + "ordnet", + "ikke_lost" + ], + "enters_as": null, + "handled_by": "nabohjelp", + "id": "trenger-hjelp", + "lands_in": "hjelpebehov", + "steps": [ + { + "alternative": "Få hjelp av naboer, eller gi en hånd selv", + "expect": [ + "Få hjelp av naboer, eller gi en hånd selv" + ], + "fields": [], + "options": [ + { + "description": "Meld deg inn, betal kontingenten, eller gi beskjed om flytting, ny e-post eller utmelding.", + "name": "Bli medlem eller endre opplysningene dine" + }, + { + "description": "Sett du noe farlig i trafikken, eller noe ødelagt på lekeplassen eller elvestien? Gi oss beskjed.", + "name": "Meld fra om noe som bør fikses" + }, + { + "description": "Vi trenger folk på 17. mai, dugnader og i komiteene. Det trengs ikke mer enn litt tid du har å avse.", + "name": "Bli med og gjør en innsats" + }, + { + "description": "Trenger du en hånd med snømåking, handling eller skyss? Eller kan du stille opp for en nabo? Her møtes dere.", + "name": "Få hjelp av naboer, eller gi en hånd selv" + }, + { + "description": "Har kommunen en sak på høring du mener noe om? Send oss innspillet ditt, så tar vi det med i velets svar.", + "name": "Få din mening med i høringssvaret" + } + ], + "page": "/", + "question": "Hva gjelder det for deg?" + }, + { + "alternative": "Få en nabo til å stille opp", + "expect": [ + "Få en nabo til å stille opp" + ], + "fields": [ + { + "label": "Navn", + "name": "navn", + "optional": false, + "options": [], + "type": "text" + }, + { + "label": "E-post", + "name": "email", + "optional": false, + "options": [], + "type": "email" + }, + { + "label": "Adresse", + "name": "adresse", + "optional": false, + "options": [], + "type": "text" + }, + { + "label": "Hva trenger du hjelp til", + "name": "hva", + "optional": false, + "options": [], + "type": "textarea" + }, + { + "label": "Telefon", + "name": "telefon", + "optional": true, + "options": [], + "type": "tel" + } + ], + "options": [ + { + "description": "Får du ikke til snømåking, en handletur eller skyss for tiden? Si fra, så finner vi en nabo som kan stille opp.", + "name": "Få en nabo til å stille opp" + }, + { + "description": "Kan du stille opp med snømåking, en handletur eller skyss når en nabo trenger det? Meld deg, så blir du spurt når det passer.", + "name": "Bli spurt når en nabo trenger en hånd" + }, + { + "description": "Har du noe naboene kan få låne, eller trenger du å låne noe selv? Legg ut et oppslag så ser de andre på Tomter det.", + "name": "Lån ut eller lån av naboen" + } + ], + "page": "/naboer", + "question": "Trenger du en hånd, eller kan du gi en?" + } + ], + "success": [ + "ordnet" + ], + "wants": "at en nabo stiller opp", + "who": "en beboer som ikke får til noe selv for tiden, som snømåking, handling eller en skyss" + }, + { + "done_when": [ + "registrert", + "trukket" + ], + "enters_as": null, + "handled_by": "nabohjelp", + "id": "kan-hjelpe", + "lands_in": "hjelpere", + "steps": [ + { + "alternative": "Få hjelp av naboer, eller gi en hånd selv", + "expect": [ + "Få hjelp av naboer, eller gi en hånd selv" + ], + "fields": [], + "options": [ + { + "description": "Meld deg inn, betal kontingenten, eller gi beskjed om flytting, ny e-post eller utmelding.", + "name": "Bli medlem eller endre opplysningene dine" + }, + { + "description": "Sett du noe farlig i trafikken, eller noe ødelagt på lekeplassen eller elvestien? Gi oss beskjed.", + "name": "Meld fra om noe som bør fikses" + }, + { + "description": "Vi trenger folk på 17. mai, dugnader og i komiteene. Det trengs ikke mer enn litt tid du har å avse.", + "name": "Bli med og gjør en innsats" + }, + { + "description": "Trenger du en hånd med snømåking, handling eller skyss? Eller kan du stille opp for en nabo? Her møtes dere.", + "name": "Få hjelp av naboer, eller gi en hånd selv" + }, + { + "description": "Har kommunen en sak på høring du mener noe om? Send oss innspillet ditt, så tar vi det med i velets svar.", + "name": "Få din mening med i høringssvaret" + } + ], + "page": "/", + "question": "Hva gjelder det for deg?" + }, + { + "alternative": "Bli spurt når en nabo trenger en hånd", + "expect": [ + "Bli spurt når en nabo trenger en hånd" + ], + "fields": [ + { + "label": "Navn", + "name": "navn", + "optional": false, + "options": [], + "type": "text" + }, + { + "label": "E-post", + "name": "email", + "optional": false, + "options": [], + "type": "email" + }, + { + "label": "Telefon", + "name": "telefon", + "optional": false, + "options": [], + "type": "tel" + }, + { + "label": "Hva kan du hjelpe med", + "name": "kan", + "optional": false, + "options": [ + "Snømåking", + "Handling", + "Kjøring", + "Småfiks i huset", + "En prat og litt selskap", + "Det som trengs" + ], + "type": "select" + } + ], + "options": [ + { + "description": "Får du ikke til snømåking, en handletur eller skyss for tiden? Si fra, så finner vi en nabo som kan stille opp.", + "name": "Få en nabo til å stille opp" + }, + { + "description": "Kan du stille opp med snømåking, en handletur eller skyss når en nabo trenger det? Meld deg, så blir du spurt når det passer.", + "name": "Bli spurt når en nabo trenger en hånd" + }, + { + "description": "Har du noe naboene kan få låne, eller trenger du å låne noe selv? Legg ut et oppslag så ser de andre på Tomter det.", + "name": "Lån ut eller lån av naboen" + } + ], + "page": "/naboer", + "question": "Trenger du en hånd, eller kan du gi en?" + } + ], + "success": [ + "registrert" + ], + "wants": "å bli spurt når det passer", + "who": "en nabo som kan stille opp når noen trenger det" + }, + { + "done_when": [ + "lagt_ut", + "tatt_ned" + ], + "enters_as": null, + "handled_by": "styret", + "id": "dele-utstyr", + "lands_in": "oppslag", + "steps": [ + { + "alternative": "Få hjelp av naboer, eller gi en hånd selv", + "expect": [ + "Få hjelp av naboer, eller gi en hånd selv" + ], + "fields": [], + "options": [ + { + "description": "Meld deg inn, betal kontingenten, eller gi beskjed om flytting, ny e-post eller utmelding.", + "name": "Bli medlem eller endre opplysningene dine" + }, + { + "description": "Sett du noe farlig i trafikken, eller noe ødelagt på lekeplassen eller elvestien? Gi oss beskjed.", + "name": "Meld fra om noe som bør fikses" + }, + { + "description": "Vi trenger folk på 17. mai, dugnader og i komiteene. Det trengs ikke mer enn litt tid du har å avse.", + "name": "Bli med og gjør en innsats" + }, + { + "description": "Trenger du en hånd med snømåking, handling eller skyss? Eller kan du stille opp for en nabo? Her møtes dere.", + "name": "Få hjelp av naboer, eller gi en hånd selv" + }, + { + "description": "Har kommunen en sak på høring du mener noe om? Send oss innspillet ditt, så tar vi det med i velets svar.", + "name": "Få din mening med i høringssvaret" + } + ], + "page": "/", + "question": "Hva gjelder det for deg?" + }, + { + "alternative": "Lån ut eller lån av naboen", + "expect": [ + "Lån ut eller lån av naboen" + ], + "fields": [ + { + "label": "Navn", + "name": "navn", + "optional": false, + "options": [], + "type": "text" + }, + { + "label": "E-post", + "name": "email", + "optional": false, + "options": [], + "type": "email" + }, + { + "label": "Har du eller trenger du", + "name": "har_eller_trenger", + "optional": false, + "options": [ + "Jeg har noe å låne ut", + "Jeg trenger å låne noe" + ], + "type": "select" + }, + { + "label": "Hva gjelder det", + "name": "hva", + "optional": false, + "options": [], + "type": "textarea" + } + ], + "options": [ + { + "description": "Får du ikke til snømåking, en handletur eller skyss for tiden? Si fra, så finner vi en nabo som kan stille opp.", + "name": "Få en nabo til å stille opp" + }, + { + "description": "Kan du stille opp med snømåking, en handletur eller skyss når en nabo trenger det? Meld deg, så blir du spurt når det passer.", + "name": "Bli spurt når en nabo trenger en hånd" + }, + { + "description": "Har du noe naboene kan få låne, eller trenger du å låne noe selv? Legg ut et oppslag så ser de andre på Tomter det.", + "name": "Lån ut eller lån av naboen" + } + ], + "page": "/naboer", + "question": "Trenger du en hånd, eller kan du gi en?" + } + ], + "success": [ + "lagt_ut" + ], + "wants": "et oppslag som naboene ser", + "who": "en nabo som har noe å låne ut, eller trenger å låne noe" + }, + { + "done_when": [ + "utbetalt", + "avvist" + ], + "enters_as": "komiteer", + "handled_by": "kasserer", + "id": "utlegg", + "lands_in": "utlegg", + "steps": [ + { + "alternative": "Få pengene tilbake", + "expect": [ + "Få pengene tilbake" + ], + "fields": [ + { + "label": "Navn", + "name": "navn", + "optional": false, + "options": [], + "type": "text" + }, + { + "label": "Beløp", + "name": "belop", + "optional": false, + "options": [], + "type": "text" + }, + { + "label": "Hva gjaldt det", + "name": "hva", + "optional": false, + "options": [], + "type": "textarea" + } + ], + "options": [ + { + "description": "Har du lagt ut for noe til komiteen? Send det inn, så ordner kasserer resten.", + "name": "Få pengene tilbake" + } + ], + "page": "/komiteer/utlegg", + "question": "Har du lagt ut penger for komiteen og vil ha dem tilbake?" + } + ], + "success": [ + "utbetalt" + ], + "wants": "pengene tilbake", + "who": "en i en komité som har lagt ut for noe" + } + ], + "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." + } + ] +} \ No newline at end of file diff --git a/runs/tomtervel-committees-2026-09-23/needs.yaml b/runs/tomtervel-committees-2026-09-23/needs.yaml new file mode 100644 index 0000000..f741b40 --- /dev/null +++ b/runs/tomtervel-committees-2026-09-23/needs.yaml @@ -0,0 +1,265 @@ +needs: +- done_when: + - betalt + - utmeldt + enters: / + handled_by: kasserer + id: bli-medlem + lands_in: husstander + max_fields: 3 + max_steps: 2 + stages: + - open + - betalt + - utmeldt + success: + - betalt + via: Bli medlem eller endre opplysningene dine + wants: å bli medlem og få betalt kontingenten + who: en husstand i Tomter +- done_when: + - oppdatert + enters: / + handled_by: kasserer + id: endre-medlemskap + lands_in: medlemsendringer + max_fields: 3 + max_steps: 2 + stages: + - open + - oppdatert + success: + - oppdatert + via: Bli medlem eller endre opplysningene dine + wants: at velet har riktige opplysninger om dem + who: et medlem som har flyttet, byttet e-post eller vil melde seg ut +- done_when: + - ordnet + - avvist + enters: / + handled_by: trafikk + id: trafikkfare + lands_in: trafikkmeldinger + max_fields: 2 + max_steps: 2 + stages: + - open + - tatt_opp + - ordnet + - avvist + success: + - ordnet + via: Meld fra om noe som bør fikses + wants: at velet tar det opp med kommunen eller den som eier veien + who: en som har sett et farlig sted i trafikken +- done_when: + - utbedret + enters: / + handled_by: lekeplasser + id: anleggsfeil + lands_in: anleggsfeil + max_fields: 2 + max_steps: 2 + stages: + - open + - tatt_tak_i + - utbedret + success: + - utbedret + via: Meld fra om noe som bør fikses + wants: at det blir fikset før noen skader seg + who: en som ser at noe på lekeplassen eller stien er ødelagt +- done_when: + - tatt_med + - ikke_tatt_med + enters: / + handled_by: horingsinstans + id: horingsinnspill + lands_in: innspill + max_fields: 3 + max_steps: 1 + stages: + - open + - tatt_med + - ikke_tatt_med + success: + - tatt_med + via: Få din mening med i høringssvaret + wants: at velet tar det med i sitt svar + who: en beboer som har en mening om en sak kommunen har på høring +- done_when: + - satt_opp + - takket_nei + enters: / + handled_by: arrangementer + id: hjelpe-til + lands_in: frivillige + max_fields: 3 + max_steps: 2 + stages: + - open + - kontaktet + - satt_opp + - takket_nei + success: + - satt_opp + via: Bli med og gjør en innsats + wants: å bli satt opp på noe som passer dem + who: en som vil hjelpe til på et arrangement eller en dugnad +- done_when: + - plassert + - avslatt + enters: / + handled_by: styret + id: komite + lands_in: komitesoknader + max_fields: 3 + max_steps: 2 + stages: + - open + - plassert + - avslatt + success: + - plassert + via: Bli med og gjør en innsats + wants: en plass i den komiteen som driver med det de bryr seg om + who: en som vil sitte i en komité +- done_when: + - ordnet + - ikke_lost + enters: / + handled_by: nabohjelp + id: trenger-hjelp + lands_in: hjelpebehov + max_fields: 4 + max_steps: 2 + stages: + - open + - formidlet + - ordnet + - ikke_lost + success: + - ordnet + via: Få hjelp av naboer, eller gi en hånd selv + wants: at en nabo stiller opp + who: en beboer som ikke får til noe selv for tiden, som snømåking, handling eller en skyss +- done_when: + - registrert + - trukket + enters: / + handled_by: nabohjelp + id: kan-hjelpe + lands_in: hjelpere + max_fields: 4 + max_steps: 2 + stages: + - open + - registrert + - trukket + success: + - registrert + via: Få hjelp av naboer, eller gi en hånd selv + wants: å bli spurt når det passer + who: en nabo som kan stille opp når noen trenger det +- done_when: + - lagt_ut + - tatt_ned + enters: / + handled_by: styret + id: dele-utstyr + lands_in: oppslag + max_fields: 4 + max_steps: 2 + stages: + - open + - lagt_ut + - tatt_ned + success: + - lagt_ut + via: Få hjelp av naboer, eller gi en hånd selv + wants: et oppslag som naboene ser + who: en nabo som har noe å låne ut, eller trenger å låne noe +- done_when: + - utbetalt + - avvist + enters: /komiteer/utlegg + enters_as: komiteer + handled_by: kasserer + id: utlegg + lands_in: utlegg + max_fields: 3 + max_steps: 1 + stages: + - open + - godkjent + - utbetalt + - avvist + success: + - utbetalt + via: Få pengene tilbake + wants: pengene tilbake + who: en i en komité som har lagt ut for noe +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. diff --git a/runs/tomtervel-committees-2026-09-23/questions/arrangementer/_section.yaml b/runs/tomtervel-committees-2026-09-23/questions/arrangementer/_section.yaml new file mode 100644 index 0000000..94afa0f --- /dev/null +++ b/runs/tomtervel-committees-2026-09-23/questions/arrangementer/_section.yaml @@ -0,0 +1 @@ +qualifies: arrangementer diff --git a/runs/tomtervel-committees-2026-09-23/questions/arrangementer/index.yaml b/runs/tomtervel-committees-2026-09-23/questions/arrangementer/index.yaml new file mode 100644 index 0000000..00eb3a9 --- /dev/null +++ b/runs/tomtervel-committees-2026-09-23/questions/arrangementer/index.yaml @@ -0,0 +1,32 @@ +alternatives: +- action: /arrangementer + consequence: + - Lagre + description: Her ser du hvem som har meldt seg til dugnad, 17. mai eller andre arrangementer, og hvor langt du har kommet med hver av dem. + features: + - description: '' + name: '' + resource: + requires_group: arrangementer + source: + bucket: frivillige + kind: kv + transitions: + - from: kontaktet + label: Sett opp + to: satt_opp + - from: kontaktet + label: Takket nei + to: takket_nei + - from: open + label: Merk som kontaktet + to: kontaktet + - from: open + label: Takket nei + to: takket_nei + name: Frivillige til arrangementer og dugnad +description: Oversikt over folk som vil hjelpe til, slik at du kan følge opp og sette dem opp på noe som passer. +name: Hvem har meldt seg, og hvor langt har jeg kommet med å sette dem opp? +responsible: + contact: post@tomtervel.no + name: Styret i Tomter Vel diff --git a/runs/tomtervel-committees-2026-09-23/questions/bidra/index.yaml b/runs/tomtervel-committees-2026-09-23/questions/bidra/index.yaml new file mode 100644 index 0000000..7d24674 --- /dev/null +++ b/runs/tomtervel-committees-2026-09-23/questions/bidra/index.yaml @@ -0,0 +1,82 @@ +alternatives: +- action: /received/hjelpe-til + consequence: + - Meld meg på + description: 17. mai, dugnad eller andre arrangementer trenger folk som stiller opp. Si fra hva du kan bidra med, så setter vi deg opp på noe som passer. + encouragements: + - Det holder med noen ord om hva du kan tenke deg – vi tar kontakt når det nærmer seg. + features: + - description: Arrangementskomiteen tar kontakt og finner ut hva som passer for deg. Sier du ja, blir du satt opp på en oppgave – sier du nei takk, er det helt greit. + icon: lucide:clipboard-list + name: Hva skjer videre + - description: Arrangementskomiteen leser det du sender, og du kan nå dem på post@tomtervel.no i mellomtiden. + icon: lucide:users + name: Hvem leser dette + - description: Fortell kort hva du kan hjelpe til med. + icon: lucide:hand-helping + name: Meld deg som hjelper + requirements: + - label: Navn + name: navn + placeholder: Kari Nordmann + type: text + - label: Telefon + name: telefon + placeholder: 912 34 567 + type: tel + - label: Hva kan du hjelpe til med? + multiple: true + name: hva + options: + - 17. mai + - Juletregranstenning + - Skøytedag + - Dugnad på elvestien + - Det som trengs + type: select + name: Bli med på dugnad eller arrangement + record_as: frivillige +- action: /received/komite + consequence: + - Meld interesse + description: Velet drives av sju komiteer på fritida, og alle trenger flere hender. Si hvilken komité du har lyst til å være med i. + encouragements: + - Det tar bare et minutt, og noen fra styret svarer deg. + features: + - description: Styret ser på ønsket ditt og finner en plass i komiteen du har meldt deg til, eller sier fra hvis det ikke er rom akkurat nå. + icon: lucide:clipboard-list + name: Hva skjer videre + - description: Styret leser det du sender, og du kan nå dem på post@tomtervel.no i mellomtiden. + icon: lucide:handshake + name: Hvem leser dette + - description: Skriv hvilken komité du er interessert i. + icon: lucide:users + name: Meld deg til en komité + requirements: + - label: Navn + name: navn + placeholder: Kari Nordmann + type: text + - label: E-post + name: epost + placeholder: kari@eksempel.no + type: email + - label: Hvilken komité? + multiple: true + name: komite + options: + - Arrangementer + - Elvesti + - Høringsinstans + - Leke- og møteplasser + - Miljøgate + - Pendlerforhold + - Trafikkforhold + type: select + name: Sitt i en komité som betyr noe for deg + record_as: komitesoknader +description: Vil du stille opp for nabolaget? Her melder du deg til dugnad og arrangementer, eller til en av komiteene. +name: Vil du hjelpe til i nabolaget? +responsible: + contact: post@tomtervel.no + name: Styret i Tomter Vel diff --git a/runs/tomtervel-committees-2026-09-23/questions/decide/dele-utstyr.yaml b/runs/tomtervel-committees-2026-09-23/questions/decide/dele-utstyr.yaml new file mode 100644 index 0000000..dfece00 --- /dev/null +++ b/runs/tomtervel-committees-2026-09-23/questions/decide/dele-utstyr.yaml @@ -0,0 +1,9 @@ +alternatives: +- description: Oppslaget fjernes fra siden, så ingen flere spør om å låne det. + name: Meld at utstyret er tatt ned + self_transition: + bucket: oppslag + label: Ta ned oppslaget + to: tatt_ned +description: Her sier du fra at utstyret er hentet eller ikke lenger tilgjengelig for utlån. +name: Skal oppslaget om utstyret fortsatt stå ute? diff --git a/runs/tomtervel-committees-2026-09-23/questions/decide/kan-hjelpe.yaml b/runs/tomtervel-committees-2026-09-23/questions/decide/kan-hjelpe.yaml new file mode 100644 index 0000000..2598b32 --- /dev/null +++ b/runs/tomtervel-committees-2026-09-23/questions/decide/kan-hjelpe.yaml @@ -0,0 +1,9 @@ +alternatives: +- description: Du blir tatt av lista over naboer som kan spørres, men kan melde deg på igjen når det passer bedre. + name: Ta en pause fra nabohjelpen + self_transition: + bucket: hjelpere + label: Trekk meg + to: trukket +description: Her ser du naboer som har bedt om en hånd, og kan velge om du fortsatt kan bidra eller trekke deg for nå. +name: Vil du fortsatt kunne bli spurt om å hjelpe en nabo? diff --git a/runs/tomtervel-committees-2026-09-23/questions/decide/trenger-hjelp.yaml b/runs/tomtervel-committees-2026-09-23/questions/decide/trenger-hjelp.yaml new file mode 100644 index 0000000..7aad76e --- /dev/null +++ b/runs/tomtervel-committees-2026-09-23/questions/decide/trenger-hjelp.yaml @@ -0,0 +1,9 @@ +alternatives: +- description: Da vet vi at naboen har fått hjelpen sin, og saken lukkes. + name: Meld fra at hjelpen er gitt + self_transition: + bucket: hjelpebehov + label: Merk som ordnet + to: ordnet +description: Her ser du henvendelsen fra naboen som trengte en hånd, og kan si fra når det er ordnet. +name: Har naboen fått hjelpen de trengte? diff --git a/runs/tomtervel-committees-2026-09-23/questions/horingsinstans/_section.yaml b/runs/tomtervel-committees-2026-09-23/questions/horingsinstans/_section.yaml new file mode 100644 index 0000000..ad97e31 --- /dev/null +++ b/runs/tomtervel-committees-2026-09-23/questions/horingsinstans/_section.yaml @@ -0,0 +1 @@ +qualifies: horingsinstans diff --git a/runs/tomtervel-committees-2026-09-23/questions/horingsinstans/index.yaml b/runs/tomtervel-committees-2026-09-23/questions/horingsinstans/index.yaml new file mode 100644 index 0000000..baff123 --- /dev/null +++ b/runs/tomtervel-committees-2026-09-23/questions/horingsinstans/index.yaml @@ -0,0 +1,26 @@ +alternatives: +- action: /horingsinstans + consequence: + - Send svar + description: Her ligger innspill fra beboere til saker kommunen har på høring. + features: + - description: '' + name: '' + resource: + requires_group: horingsinstans + source: + bucket: innspill + kind: kv + transitions: + - from: open + label: Tatt med i svaret + to: tatt_med + - from: open + label: Ikke tatt med + to: ikke_tatt_med + name: Innspill til høringssvar +description: Her samler du innspillene og ser hva som er tatt med i velets høringssvar. +name: Hva sier vi i høringssvaret? +responsible: + contact: post@tomtervel.no + name: Styret i Tomter Vel diff --git a/runs/tomtervel-committees-2026-09-23/questions/index.yaml b/runs/tomtervel-committees-2026-09-23/questions/index.yaml new file mode 100644 index 0000000..eec23ff --- /dev/null +++ b/runs/tomtervel-committees-2026-09-23/questions/index.yaml @@ -0,0 +1,73 @@ +alternatives: +- action: /medlem + consequence: + - Til medlemskap + description: Meld deg inn, betal kontingenten, eller gi beskjed om flytting, ny e-post eller utmelding. + features: + - description: '' + icon: lucide:house + name: Deg som bor i Tomter + name: Bli medlem eller endre opplysningene dine +- action: /melde-fra + consequence: + - Meld fra + description: Sett du noe farlig i trafikken, eller noe ødelagt på lekeplassen eller elvestien? Gi oss beskjed. + features: + - description: '' + icon: lucide:alert-triangle + name: Deg som har sett noe som bør fikses + name: Meld fra om noe som bør fikses +- action: /bidra + consequence: + - Bli med + description: Vi trenger folk på 17. mai, dugnader og i komiteene. Det trengs ikke mer enn litt tid du har å avse. + features: + - description: '' + icon: lucide:hand-helping + name: Deg som vil gjøre en innsats + name: Bli med og gjør en innsats +- action: /naboer + consequence: + - Til nabohjelp + description: Trenger du en hånd med snømåking, handling eller skyss? Eller kan du stille opp for en nabo? Her møtes dere. + features: + - description: '' + icon: lucide:heart-handshake + name: Deg som trenger hjelp eller kan gi en hånd + name: Få hjelp av naboer, eller gi en hånd selv +- action: /received/horingsinnspill + consequence: + - Send innspill + description: Har kommunen en sak på høring du mener noe om? Send oss innspillet ditt, så tar vi det med i velets svar. + encouragements: + - Innspillet ditt blir lest av høringsutvalget vårt og veier inn i svaret vi sender kommunen. + features: + - description: Innspillet ditt kommer inn hos høringsutvalget. De vurderer om det tas med i velets svar til kommunen, eller om det ikke passer inn denne gangen. + icon: lucide:route + name: Hva skjer videre + - description: Høringsutvalget i Tomter Vel leser innspillet ditt; i mellomtiden kan du nå styret på post@tomtervel.no. + icon: lucide:users + name: Hvem leser dette + - description: Fortell hvilken sak det gjelder og hva du mener. + icon: lucide:megaphone + name: Send et høringsinnspill + requirements: + - label: Navn + name: navn + placeholder: Kari Nordmann + type: text + - label: Hvilken sak gjelder det? + name: sak + placeholder: Reguleringsplan for Tomterveien + type: text + - label: Hva mener du? + name: innspill + placeholder: Jeg mener det bør settes opp fartsdumper langs den nye traseen, for barna krysser der til skolen. + type: textarea + name: Få din mening med i høringssvaret + record_as: innspill +description: Tomter Vel tar vare på nærmiljøet – fra elvestien og lekeplassene til trafikksikkerhet og naboskap. Finn det som gjelder deg. +name: Hva gjelder det for deg? +responsible: + contact: post@tomtervel.no + name: Styret i Tomter Vel diff --git a/runs/tomtervel-committees-2026-09-23/questions/kasserer/_section.yaml b/runs/tomtervel-committees-2026-09-23/questions/kasserer/_section.yaml new file mode 100644 index 0000000..2f8af2f --- /dev/null +++ b/runs/tomtervel-committees-2026-09-23/questions/kasserer/_section.yaml @@ -0,0 +1 @@ +qualifies: kasserer diff --git a/runs/tomtervel-committees-2026-09-23/questions/kasserer/index.yaml b/runs/tomtervel-committees-2026-09-23/questions/kasserer/index.yaml new file mode 100644 index 0000000..1143154 --- /dev/null +++ b/runs/tomtervel-committees-2026-09-23/questions/kasserer/index.yaml @@ -0,0 +1,69 @@ +alternatives: +- action: /kasserer + consequence: + - Lagre + description: Husstander som har meldt seg inn og venter på å bli registrert som betalende medlem. + features: + - description: '' + name: '' + resource: + requires_group: kasserer + source: + bucket: husstander + kind: kv + transitions: + - from: open + label: Registrer betaling + to: betalt + - from: open + label: Meld ut + to: utmeldt + name: Nye medlemmer som venter på registrering +- action: /kasserer + consequence: + - Lagre + description: Medlemmer som har flyttet, byttet e-post eller vil melde seg ut, og venter på at opplysningene blir oppdatert. + features: + - description: '' + name: '' + resource: + requires_group: kasserer + source: + bucket: medlemsendringer + kind: kv + transitions: + - from: open + label: Registrer endring + to: oppdatert + name: Endringer som venter på å bli registrert +- action: /kasserer + consequence: + - Lagre + description: Utlegg fra komitémedlemmer som venter på godkjenning eller utbetaling. + features: + - description: '' + name: '' + resource: + requires_group: kasserer + source: + bucket: utlegg + kind: kv + transitions: + - from: godkjent + label: Merk som utbetalt + to: utbetalt + - from: godkjent + label: Avvis likevel + to: avvist + - from: open + label: Godkjenn utlegg + to: godkjent + - from: open + label: Avvis utlegg + to: avvist + name: Utlegg som venter på deg +description: Her har du oversikt over medlemmer, endringer og utlegg som venter på deg som kasserer. +name: Hva venter på meg som kasserer akkurat nå? +responsible: + contact: post@tomtervel.no + name: Styret i Tomter Vel diff --git a/runs/tomtervel-committees-2026-09-23/questions/komiteer/_section.yaml b/runs/tomtervel-committees-2026-09-23/questions/komiteer/_section.yaml new file mode 100644 index 0000000..57e3295 --- /dev/null +++ b/runs/tomtervel-committees-2026-09-23/questions/komiteer/_section.yaml @@ -0,0 +1 @@ +qualifies: komiteer diff --git a/runs/tomtervel-committees-2026-09-23/questions/komiteer/index.yaml b/runs/tomtervel-committees-2026-09-23/questions/komiteer/index.yaml new file mode 100644 index 0000000..1375cf1 --- /dev/null +++ b/runs/tomtervel-committees-2026-09-23/questions/komiteer/index.yaml @@ -0,0 +1,11 @@ +alternatives: +- action: /komiteer/utlegg + consequence: + - Send utlegg + description: Har du lagt ut for noe til komiteen? Send det inn så kasserer kan betale deg tilbake. + name: Få tilbake det du har lagt ut +description: Her holder du oversikt over sakene komiteen din har ansvar for, og flytter dem videre etter hvert som de blir fulgt opp. +name: Hva står ubehandlet i komiteen din nå? +responsible: + contact: post@tomtervel.no + name: Styret i Tomter Vel diff --git a/runs/tomtervel-committees-2026-09-23/questions/komiteer/utlegg-sent.yaml b/runs/tomtervel-committees-2026-09-23/questions/komiteer/utlegg-sent.yaml new file mode 100644 index 0000000..e347ad3 --- /dev/null +++ b/runs/tomtervel-committees-2026-09-23/questions/komiteer/utlegg-sent.yaml @@ -0,0 +1,10 @@ +alternatives: +- description: Kasserer ser gjennom kvitteringen og overfører pengene til kontoen du oppga. + name: Pengene kommer på konto +- action: /komiteer + consequence: + - Til forsiden + description: '' + name: Til forsiden +description: Utlegget er sendt til kasserer. Du får beskjed når det er sjekket. +name: Hva skjer med utlegget mitt nå? diff --git a/runs/tomtervel-committees-2026-09-23/questions/komiteer/utlegg.yaml b/runs/tomtervel-committees-2026-09-23/questions/komiteer/utlegg.yaml new file mode 100644 index 0000000..5d94ad3 --- /dev/null +++ b/runs/tomtervel-committees-2026-09-23/questions/komiteer/utlegg.yaml @@ -0,0 +1,38 @@ +alternatives: +- action: /komiteer/utlegg-sent + consequence: + - Send inn + description: Har du lagt ut for noe til komiteen? Send det inn, så ordner kasserer resten. + encouragements: + - Legg ved bilag om du har det, så går det raskere. + features: + - description: Kasserer ser gjennom kravet og godkjenner det, og deretter blir pengene utbetalt til deg. Blir det avvist, hører du hvorfor. + icon: lucide:wallet + name: Fra krav til utbetaling + - description: Kasserer i styret leser kravet ditt, og kan nås på post@tomtervel.no om det haster. + icon: lucide:coins + name: Kasserer ser dette + - description: Ha kvittering eller bilag klart før du fyller ut. + icon: lucide:receipt + name: Krav om refusjon + requirements: + - label: Navn + name: navn + placeholder: Kari Nordmann + type: text + - label: Beløp + name: belop + placeholder: 450 kr + type: text + - label: Hva gjaldt det + name: hva + placeholder: Kaffe og kjeks til dugnaden + type: textarea + name: Få pengene tilbake + record_as: utlegg +description: Har du betalt for noe på vegne av en komité? Send inn utlegget, så får du pengene tilbake. +followup: false +name: Har du lagt ut penger for komiteen og vil ha dem tilbake? +responsible: + contact: post@tomtervel.no + name: Styret i Tomter Vel diff --git a/runs/tomtervel-committees-2026-09-23/questions/lekeplasser/_section.yaml b/runs/tomtervel-committees-2026-09-23/questions/lekeplasser/_section.yaml new file mode 100644 index 0000000..1652221 --- /dev/null +++ b/runs/tomtervel-committees-2026-09-23/questions/lekeplasser/_section.yaml @@ -0,0 +1 @@ +qualifies: lekeplasser diff --git a/runs/tomtervel-committees-2026-09-23/questions/lekeplasser/index.yaml b/runs/tomtervel-committees-2026-09-23/questions/lekeplasser/index.yaml new file mode 100644 index 0000000..3f9dd93 --- /dev/null +++ b/runs/tomtervel-committees-2026-09-23/questions/lekeplasser/index.yaml @@ -0,0 +1,26 @@ +alternatives: +- action: /lekeplasser + consequence: + - Lagre + description: Meldinger om noe som er ødelagt på lekeplassen eller langs stien, og som bør fikses. + features: + - description: '' + name: '' + resource: + requires_group: lekeplasser + source: + bucket: anleggsfeil + kind: kv + transitions: + - from: open + label: Ta tak i saken + to: tatt_tak_i + - from: tatt_tak_i + label: Merk som utbedret + to: utbedret + name: Det som er meldt inn av skader +description: Her følger komiteen for lekeplassene opp det som er meldt inn av skader, til det er fikset. +name: Hva må fikses på lekeplassene og stien nå? +responsible: + contact: post@tomtervel.no + name: Styret i Tomter Vel diff --git a/runs/tomtervel-committees-2026-09-23/questions/medlem/index.yaml b/runs/tomtervel-committees-2026-09-23/questions/medlem/index.yaml new file mode 100644 index 0000000..6bbab74 --- /dev/null +++ b/runs/tomtervel-committees-2026-09-23/questions/medlem/index.yaml @@ -0,0 +1,73 @@ +alternatives: +- action: /received/bli-medlem + consequence: + - Bli medlem + description: Meld deg inn i velet, så holder vi deg oppdatert og du støtter arbeidet i nærmiljøet. + encouragements: + - Kasserer sender deg kontingenten på e-post rett etterpå. + features: + - description: Meldingen går til kasserer, som registrerer deg og sender deg kontingenten på e-post. Når den er betalt er du medlem. + icon: lucide:coins + name: Etter innmelding + - description: Kasserer i styret leser dette, og du kan nå oss på post@tomtervel.no i mellomtiden. + icon: lucide:user + name: Hvem svarer deg + - description: Ha adressen i Tomter og en e-post du bruker klar. + icon: lucide:user-plus + name: Meld deg inn + requirements: + - label: Navn + name: navn + placeholder: Ola Nordmann + type: text + - label: Adresse + name: adresse + placeholder: Tomterveien 12 + type: text + - label: E-post + name: epost + placeholder: ola.nordmann@epost.no + type: email + - label: Telefon + name: telefon + optional: true + placeholder: 123 45 678 + type: tel + name: Bli medlem av Tomter Vel + record_as: husstander +- action: /received/endre-medlemskap + consequence: + - Send endring + description: Har du flyttet, byttet e-post eller vil melde deg ut? Gi oss beskjed så vi har riktige opplysninger. + encouragements: + - Det tar bare et par minutter, og kasserer ordner resten. + features: + - description: Kasserer får beskjeden og oppdaterer medlemslisten, eller melder deg ut om det er det du ber om. + icon: lucide:refresh-cw + name: Etter du sender inn + - description: Kasserer i styret leser dette, og du kan nå oss på post@tomtervel.no i mellomtiden. + icon: lucide:user + name: Hvem svarer deg + - description: Skriv navnet ditt og hva som er nytt. + icon: lucide:pencil + name: Endre medlemskap + requirements: + - label: Navn + name: navn + placeholder: Ola Nordmann + type: text + - label: Adresse + name: adresse + placeholder: Ny adresse i Tomter + type: text + - label: Hva vil du endre? + name: hva_er_nytt + placeholder: Ny e-post, ny adresse, eller ønske om utmelding + type: textarea + name: Oppdater eller avslutt medlemskapet + record_as: medlemsendringer +description: Bli medlem av Tomter Vel, eller oppdater opplysningene dine hvis du allerede er medlem. +name: Vil du bli medlem, eller endre medlemskapet ditt? +responsible: + contact: post@tomtervel.no + name: Styret i Tomter Vel diff --git a/runs/tomtervel-committees-2026-09-23/questions/melde-fra/index.yaml b/runs/tomtervel-committees-2026-09-23/questions/melde-fra/index.yaml new file mode 100644 index 0000000..560dd8f --- /dev/null +++ b/runs/tomtervel-committees-2026-09-23/questions/melde-fra/index.yaml @@ -0,0 +1,69 @@ +alternatives: +- action: /received/trafikkfare + consequence: + - Send inn + description: Sett du noe farlig i trafikken? Fortell trafikkomiteen om det, så tar de det videre. + encouragements: + - Bare noen linjer om hva og hvor er nok til at vi kan følge opp. + features: + - description: Trafikkomiteen tar meldingen din opp med kommunen eller den som eier veien. Du får vite om saken blir ordnet eller avvist. + icon: lucide:route + name: Hva skjer videre + - description: Trafikkomiteen leser meldingen din; haster det, kan du nå styret på post@tomtervel.no. + icon: lucide:car + name: Hvem leser dette + - description: Fortell hva du så, hvor det var, og legg gjerne igjen e-posten din hvis vi trenger å spørre mer. + icon: lucide:alert-triangle + name: Meld trafikkfare + requirements: + - label: Hvor var det + name: hvor + placeholder: Krysset Tomterveien / Elvestien + type: text + - label: Hva så du + name: hva + placeholder: Dårlig sikt i krysset, biler kjører fort + type: textarea + - label: E-post (valgfritt) + name: epost + optional: true + placeholder: ola.nordmann@epost.no + type: email + name: Meld fra om en trafikkfare + record_as: trafikkmeldinger +- action: /received/anleggsfeil + consequence: + - Send inn + description: Se noe ødelagt på en lekeplass eller langs elvestien, så tar lekeplasskomiteen tak i det. + encouragements: + - Det holder med noen ord om hva du så og hvor. + features: + - description: Meldingen går til lekeplasskomiteen, som ser på den og tar tak i saken. Når feilen er utbedret, er saken avsluttet. + icon: lucide:wrench + name: Hva skjer videre + - description: Lekeplasskomiteen leser meldingen din; til det haster kan du nå styret på post@tomtervel.no. + icon: lucide:hammer + name: Hvem leser dette + - description: Fortell hva som er ødelagt og omtrent hvor det er. + icon: lucide:construction + name: Meld anleggsfeil + requirements: + - label: Hvor er det + name: hvor + options: + - Lekeplassen + - Elvestien + - Skøytebanen + - Et annet sted + type: select + - label: Hva er ødelagt + name: hva + placeholder: Løs planke på gjerdet ved husken + type: textarea + name: Meld fra om noe ødelagt + record_as: anleggsfeil +description: Har du sett noe farlig i trafikken, eller noe ødelagt på lekeplassen eller stien? Her sier du fra til velet. +name: Hva vil du melde fra om? +responsible: + contact: post@tomtervel.no + name: Styret i Tomter Vel diff --git a/runs/tomtervel-committees-2026-09-23/questions/naboer/index.yaml b/runs/tomtervel-committees-2026-09-23/questions/naboer/index.yaml new file mode 100644 index 0000000..d8efcd4 --- /dev/null +++ b/runs/tomtervel-committees-2026-09-23/questions/naboer/index.yaml @@ -0,0 +1,125 @@ +alternatives: +- action: /received/trenger-hjelp + consequence: + - Be om hjelp + description: Får du ikke til snømåking, en handletur eller skyss for tiden? Si fra, så finner vi en nabo som kan stille opp. + encouragements: + - Vi finner en nabo som kan stille opp så fort som mulig. + features: + - description: Nabohjelpen finner en nabo som kan stille opp. Er det ordnet, eller om det ikke lot seg løse, får du beskjed. + icon: lucide:hand-helping + name: Fra melding til hjelp + - description: Nabohjelpen tar imot og finner noen til deg, eller ring post@tomtervel.no i mellomtiden. + icon: lucide:users + name: Hvem ser dette + - description: Skriv kort hva du trenger hjelp til. + icon: lucide:heart-handshake + name: Be om en hånd + requirements: + - label: Navn + name: navn + placeholder: Kari Nordmann + type: text + - label: E-post + name: email + placeholder: kari@eksempel.no + type: email + - label: Adresse + name: adresse + placeholder: Tomterveien 12 + type: text + - label: Hva trenger du hjelp til + name: hva + placeholder: Måke snø på trappa, handle inn litt mat + type: textarea + - label: Telefon + name: telefon + optional: true + placeholder: 123 45 678 + type: tel + name: Få en nabo til å stille opp + record_as: hjelpebehov +- action: /received/kan-hjelpe + consequence: + - Meld deg + description: Kan du stille opp med snømåking, en handletur eller skyss når en nabo trenger det? Meld deg, så blir du spurt når det passer. + encouragements: + - Du blir bare kontaktet når noe passer for deg. + features: + - description: Du blir registrert som hjelper. Trekker du deg tilbake senere, er det bare å si fra. + icon: lucide:user-check + name: Fra påmelding til spørsmål + - description: Nabohjelpen har oversikten og ringer deg direkte når det er noe, eller nås på post@tomtervel.no. + icon: lucide:heart-handshake + name: Hvem ser dette + - description: Fortell kort hva du kan bidra med. + icon: lucide:hand-helping + name: Meld deg som hjelper + requirements: + - label: Navn + name: navn + placeholder: Kari Nordmann + type: text + - label: E-post + name: email + placeholder: kari@eksempel.no + type: email + - label: Telefon + name: telefon + placeholder: 123 45 678 + type: tel + - label: Hva kan du hjelpe med + multiple: true + name: kan + options: + - Snømåking + - Handling + - Kjøring + - Småfiks i huset + - En prat og litt selskap + - Det som trengs + type: select + name: Bli spurt når en nabo trenger en hånd + record_as: hjelpere +- action: /received/dele-utstyr + consequence: + - Legg ut oppslag + description: Har du noe naboene kan få låne, eller trenger du å låne noe selv? Legg ut et oppslag så ser de andre på Tomter det. + encouragements: + - Vi legger det ut så naboene kan se det. + features: + - description: Oppslaget legges ut for naboene å se. Når det er ordnet eller ikke lenger aktuelt, tas det ned igjen. + icon: lucide:clipboard-list + name: Fra oppslag til avtale + - description: Styret legger ut oppslaget og kan nås på post@tomtervel.no i mellomtiden. + icon: lucide:users + name: Hvem ser dette + - description: Skriv kort hva det gjelder, så folk skjønner det med en gang. + icon: lucide:package + name: Lån eller utlån + requirements: + - label: Navn + name: navn + placeholder: Ola Nordmann + type: text + - label: E-post + name: email + placeholder: ola@eksempel.no + type: email + - label: Har du eller trenger du + name: har_eller_trenger + options: + - Jeg har noe å låne ut + - Jeg trenger å låne noe + type: select + - label: Hva gjelder det + name: hva + placeholder: Hengerfeste til bil, tilhenger, stige + type: textarea + name: Lån ut eller lån av naboen + record_as: oppslag +description: Godt naboskap gjør hverdagen lettere. Trenger du en hånd, kan gi en, eller har noe å låne bort? +name: Trenger du en hånd, eller kan du gi en? +responsible: + contact: post@tomtervel.no + name: Styret i Tomter Vel diff --git a/runs/tomtervel-committees-2026-09-23/questions/nabohjelp/_section.yaml b/runs/tomtervel-committees-2026-09-23/questions/nabohjelp/_section.yaml new file mode 100644 index 0000000..5b3a2ad --- /dev/null +++ b/runs/tomtervel-committees-2026-09-23/questions/nabohjelp/_section.yaml @@ -0,0 +1 @@ +qualifies: nabohjelp diff --git a/runs/tomtervel-committees-2026-09-23/questions/nabohjelp/index.yaml b/runs/tomtervel-committees-2026-09-23/questions/nabohjelp/index.yaml new file mode 100644 index 0000000..f4fa53f --- /dev/null +++ b/runs/tomtervel-committees-2026-09-23/questions/nabohjelp/index.yaml @@ -0,0 +1,52 @@ +alternatives: +- action: /nabohjelp + consequence: + - Lagre + description: Naboer som trenger en hånd med snømåking, handling eller skyss – klare til å bli koblet med noen som kan hjelpe. + features: + - description: '' + name: '' + resource: + requires_group: nabohjelp + source: + bucket: hjelpebehov + kind: kv + transitions: + - from: formidlet + label: Meld ordnet + to: ordnet + - from: formidlet + label: Meld ikke løst + to: ikke_lost + - from: open + label: Koble til nabo + to: formidlet + - from: open + label: Meld ikke løst + to: ikke_lost + name: Naboer som trenger en hånd +- action: /nabohjelp + consequence: + - Lagre + description: Naboer som har sagt de kan stille opp – klare til å bli spurt når noen trenger dem. + features: + - description: '' + name: '' + resource: + requires_group: nabohjelp + source: + bucket: hjelpere + kind: kv + transitions: + - from: open + label: Registrer som hjelper + to: registrert + - from: open + label: Meld trukket + to: trukket + name: Naboer som kan stille opp +description: Her kobler du naboer som trenger hjelp med dem som kan stille opp. +name: Hvem trenger hjelp, og hvem kan stille opp? +responsible: + contact: post@tomtervel.no + name: Styret i Tomter Vel diff --git a/runs/tomtervel-committees-2026-09-23/questions/received/anleggsfeil.yaml b/runs/tomtervel-committees-2026-09-23/questions/received/anleggsfeil.yaml new file mode 100644 index 0000000..09d4976 --- /dev/null +++ b/runs/tomtervel-committees-2026-09-23/questions/received/anleggsfeil.yaml @@ -0,0 +1,15 @@ +alternatives: +- description: Lekeplasskomiteen ser på meldingen og tar tak i det som må fikses før noen skader seg. + name: Komiteen tar tak i det +- action: /status/anleggsfeil + consequence: + - Se meldte feil + description: Se hva andre har meldt inn av skader på lekeplassene og stien, og hvor langt det har kommet. + name: Se andre meldte feil +- action: / + consequence: + - Tilbake til forsiden + description: '' + name: Tilbake til forsiden +description: Meldingen din om skaden er sendt til lekeplasskomiteen. De ser over det du har sendt. +name: Hva skjer med meldingen min nå? diff --git a/runs/tomtervel-committees-2026-09-23/questions/received/bli-medlem.yaml b/runs/tomtervel-committees-2026-09-23/questions/received/bli-medlem.yaml new file mode 100644 index 0000000..533f8a6 --- /dev/null +++ b/runs/tomtervel-committees-2026-09-23/questions/received/bli-medlem.yaml @@ -0,0 +1,10 @@ +alternatives: +- description: Kasserer går gjennom nye innmeldinger og sender deg kontonummer og beløp for kontingenten. + name: Kasserer sender deg betalingsinfo +- action: / + consequence: + - Tilbake til forsiden + description: '' + name: Tilbake til forsiden +description: Vi har mottatt innmeldingen din. Kasserer tar kontakt med betalingsinfo så snart medlemskapet er registrert. +name: Hva skjer etter at jeg har meldt meg inn? diff --git a/runs/tomtervel-committees-2026-09-23/questions/received/dele-utstyr.yaml b/runs/tomtervel-committees-2026-09-23/questions/received/dele-utstyr.yaml new file mode 100644 index 0000000..761313b --- /dev/null +++ b/runs/tomtervel-committees-2026-09-23/questions/received/dele-utstyr.yaml @@ -0,0 +1,15 @@ +alternatives: +- description: En i styret legger utstyret ut på naboenes oppslag, så andre kan se det og spørre om å låne. + name: Styret legger det ut for deg +- action: /status/oppslag + consequence: + - Se hva naboer deler + description: Se hva andre i Tomter har lagt ut til utlån akkurat nå. + name: Se alt naboene deler +- action: / + consequence: + - Tilbake til forsiden + description: '' + name: Tilbake til forsiden +description: Takk for at du la ut noe naboene kan låne. Vi legger det ut på oppslaget så snart vi kan. +name: Hva skjer med det jeg har lagt ut? diff --git a/runs/tomtervel-committees-2026-09-23/questions/received/endre-medlemskap.yaml b/runs/tomtervel-committees-2026-09-23/questions/received/endre-medlemskap.yaml new file mode 100644 index 0000000..c58d676 --- /dev/null +++ b/runs/tomtervel-committees-2026-09-23/questions/received/endre-medlemskap.yaml @@ -0,0 +1,10 @@ +alternatives: +- description: Kasserer oppdaterer medlemslista og gir deg beskjed hvis det er noe mer vi trenger fra deg. + name: Kasserer retter opp opplysningene +- action: / + consequence: + - Tilbake til forsiden + description: '' + name: Tilbake til forsiden +description: Vi har mottatt beskjeden om at du har flyttet, byttet e-post eller vil melde deg ut. +name: Hva skjer nå med det jeg meldte inn? diff --git a/runs/tomtervel-committees-2026-09-23/questions/received/hjelpe-til.yaml b/runs/tomtervel-committees-2026-09-23/questions/received/hjelpe-til.yaml new file mode 100644 index 0000000..3c61af4 --- /dev/null +++ b/runs/tomtervel-committees-2026-09-23/questions/received/hjelpe-til.yaml @@ -0,0 +1,10 @@ +alternatives: +- description: Du hører fra noen i komiteen når de vet hva de trenger hjelp til, gjerne noen dager før arrangementet eller dugnaden. + name: Komiteen tar kontakt +- action: / + consequence: + - Tilbake til forsiden + description: '' + name: Tilbake til forsiden +description: Takk for at du vil hjelpe til. Arrangementskomiteen har fått beskjed og tar kontakt med deg. +name: Hva skjer nå som jeg har meldt meg? diff --git a/runs/tomtervel-committees-2026-09-23/questions/received/horingsinnspill.yaml b/runs/tomtervel-committees-2026-09-23/questions/received/horingsinnspill.yaml new file mode 100644 index 0000000..bf87c92 --- /dev/null +++ b/runs/tomtervel-committees-2026-09-23/questions/received/horingsinnspill.yaml @@ -0,0 +1,10 @@ +alternatives: +- description: De ser på om det kan tas med i velets høringssvar til kommunen, og gir beskjed om det blir med. + name: Innspillet ditt inn i vurderingen +- action: / + consequence: + - Tilbake til forsiden + description: '' + name: Tilbake til forsiden +description: Innspillet ditt er sendt til høringsinstansen i velet. +name: Hva skjer med det jeg har sagt om saken? diff --git a/runs/tomtervel-committees-2026-09-23/questions/received/kan-hjelpe.yaml b/runs/tomtervel-committees-2026-09-23/questions/received/kan-hjelpe.yaml new file mode 100644 index 0000000..0ac67b5 --- /dev/null +++ b/runs/tomtervel-committees-2026-09-23/questions/received/kan-hjelpe.yaml @@ -0,0 +1,10 @@ +alternatives: +- description: Når en nabo trenger hjelp med noe du har sagt du kan bidra med, tar komiteen kontakt med deg direkte. + name: Du blir kontaktet ved behov +- action: / + consequence: + - Tilbake til forsiden + description: '' + name: Tilbake til forsiden +description: Takk for at du sier fra at du kan stille opp. Nabohjelp-komiteen tar imot meldingen og legger deg inn på lista over naboer som kan hjelpe. +name: Hva skjer nå som jeg har registrert meg? diff --git a/runs/tomtervel-committees-2026-09-23/questions/received/komite.yaml b/runs/tomtervel-committees-2026-09-23/questions/received/komite.yaml new file mode 100644 index 0000000..a36dfda --- /dev/null +++ b/runs/tomtervel-committees-2026-09-23/questions/received/komite.yaml @@ -0,0 +1,10 @@ +alternatives: +- description: Noen fra styret tar kontakt for å høre mer om hva du liker å drive med, og finner en komité som passer. + name: Vi finner riktig komité til deg +- action: / + consequence: + - Tilbake til forsiden + description: '' + name: Tilbake til forsiden +description: Takk for at du vil bidra! Styret har fått beskjed og ser på hvilken komité som passer best for deg. +name: Hva skjer nå som jeg har meldt interesse for en komité? diff --git a/runs/tomtervel-committees-2026-09-23/questions/received/trafikkfare.yaml b/runs/tomtervel-committees-2026-09-23/questions/received/trafikkfare.yaml new file mode 100644 index 0000000..82da494 --- /dev/null +++ b/runs/tomtervel-committees-2026-09-23/questions/received/trafikkfare.yaml @@ -0,0 +1,15 @@ +alternatives: +- description: Trafikkomiteen ser gjennom meldinger jevnlig og tar det videre med kommunen eller den som eier veien der det trengs. + name: Trafikkomiteen tar den videre +- action: /status/trafikkmeldinger + consequence: + - Se andre trafikkfarer + description: Se hva andre har meldt inn, og status på sakene. + name: Andre meldte trafikkfarer +- action: / + consequence: + - Tilbake til forsiden + description: '' + name: Tilbake til forsiden +description: Meldingen din om trafikkfaren er sendt til komiteen for trafikk. +name: Hva skjer med meldingen min nå? diff --git a/runs/tomtervel-committees-2026-09-23/questions/received/trenger-hjelp.yaml b/runs/tomtervel-committees-2026-09-23/questions/received/trenger-hjelp.yaml new file mode 100644 index 0000000..beec6e5 --- /dev/null +++ b/runs/tomtervel-committees-2026-09-23/questions/received/trenger-hjelp.yaml @@ -0,0 +1,10 @@ +alternatives: +- description: Vi tar kontakt med noen som kan hjelpe, så snart vi finner en som passer. + name: Vi finner en nabo til deg +- action: / + consequence: + - Til forsiden + description: '' + name: Til forsiden +description: Meldingen din er sendt til nabohjelpa. Vi ser etter en nabo som kan stille opp. +name: Hva skjer nå som jeg har bedt om hjelp? diff --git a/runs/tomtervel-committees-2026-09-23/questions/status/anleggsfeil/index.yaml b/runs/tomtervel-committees-2026-09-23/questions/status/anleggsfeil/index.yaml new file mode 100644 index 0000000..805a464 --- /dev/null +++ b/runs/tomtervel-committees-2026-09-23/questions/status/anleggsfeil/index.yaml @@ -0,0 +1,22 @@ +alternatives: +- description: Alle meldinger er åpne for alle å se. + features: + - description: '' + name: '' + resource: + jq: '.[] | .responses |= {hva: .hva, hvor: .hvor}' + public: true + source: + bucket: anleggsfeil + kind: kv + name: Status på meldte anleggsfeil +- action: / + consequence: + - Tilbake til meldinger + description: '' + name: Tilbake til meldinger +description: Her ser du meldinger om ødelagt lekeutstyr og skader på elvestien, og hvor langt hver sak har kommet. +name: Hva skjer med det jeg har meldt fra om? +responsible: + contact: post@tomtervel.no + name: Styret i Tomter Vel diff --git a/runs/tomtervel-committees-2026-09-23/questions/status/oppslag/index.yaml b/runs/tomtervel-committees-2026-09-23/questions/status/oppslag/index.yaml new file mode 100644 index 0000000..cf172af --- /dev/null +++ b/runs/tomtervel-committees-2026-09-23/questions/status/oppslag/index.yaml @@ -0,0 +1,22 @@ +alternatives: +- description: Åpen liste – navn og detaljer vises ikke. + features: + - description: '' + name: '' + resource: + jq: '.[] | .responses |= {har_eller_trenger: .har_eller_trenger, hva: .hva}' + public: true + source: + bucket: oppslag + kind: kv + name: Oversikt over det som er meldt inn +- action: / + consequence: + - Tilbake + description: '' + name: Tilbake +description: Her ser du alt som er sendt inn og hvor langt hvert oppslag har kommet. +name: Hva er sendt inn, og hvor langt har det kommet? +responsible: + contact: post@tomtervel.no + name: Styret i Tomter Vel diff --git a/runs/tomtervel-committees-2026-09-23/questions/status/trafikkmeldinger/index.yaml b/runs/tomtervel-committees-2026-09-23/questions/status/trafikkmeldinger/index.yaml new file mode 100644 index 0000000..7444f44 --- /dev/null +++ b/runs/tomtervel-committees-2026-09-23/questions/status/trafikkmeldinger/index.yaml @@ -0,0 +1,22 @@ +alternatives: +- description: Alle meldinger som er sendt inn, og hvor de står nå. + features: + - description: '' + name: '' + resource: + jq: '.[] | .responses |= {hva: .hva, hvor: .hvor}' + public: true + source: + bucket: trafikkmeldinger + kind: kv + name: Trafikkmeldinger og status +- action: / + consequence: + - Tilbake + description: '' + name: Tilbake +description: Her ser du farlige steder i trafikken som er meldt inn, og hvor langt saken har kommet. +name: Er det meldt fra om noe farlig i trafikken der jeg bor? +responsible: + contact: post@tomtervel.no + name: Styret i Tomter Vel diff --git a/runs/tomtervel-committees-2026-09-23/questions/styret/_section.yaml b/runs/tomtervel-committees-2026-09-23/questions/styret/_section.yaml new file mode 100644 index 0000000..5a34160 --- /dev/null +++ b/runs/tomtervel-committees-2026-09-23/questions/styret/_section.yaml @@ -0,0 +1 @@ +qualifies: styret diff --git a/runs/tomtervel-committees-2026-09-23/questions/styret/index.yaml b/runs/tomtervel-committees-2026-09-23/questions/styret/index.yaml new file mode 100644 index 0000000..bfad0cd --- /dev/null +++ b/runs/tomtervel-committees-2026-09-23/questions/styret/index.yaml @@ -0,0 +1,74 @@ +alternatives: +- action: /styret + consequence: + - Lagre + description: Her samles meninger fra beboerne om saker kommunen har på høring, klare til å tas med i velets svar. + features: + - description: '' + name: '' + resource: + requires_group: styret + source: + bucket: innspill + kind: kv + transitions: [] + name: Høringsinnspill fra beboerne +- action: /styret + consequence: + - Lagre + description: Her ligger alle som har meldt seg til en komité og venter på en plass. + features: + - description: '' + name: '' + resource: + requires_group: styret + source: + bucket: komitesoknader + kind: kv + transitions: + - from: open + label: Sett i komité + to: plassert + - from: open + label: Avslå søknaden + to: avslatt + name: Søknader til komiteene +- action: /styret + consequence: + - Lagre + description: Her ligger det naboer har å låne ut eller trenger å låne, klart til å legges ut. + features: + - description: '' + name: '' + resource: + requires_group: styret + source: + bucket: oppslag + kind: kv + transitions: + - from: open + label: Legg ut oppslaget + to: lagt_ut + - from: open + label: Ta ned oppslaget + to: tatt_ned + name: Utstyr til utlån blant naboer +- action: /styret + consequence: + - Lagre + description: Her samles meldinger om farlige steder i trafikken, klare til å tas videre med kommunen eller veieier. + features: + - description: '' + name: '' + resource: + requires_group: styret + source: + bucket: trafikkmeldinger + kind: kv + transitions: [] + name: Meldinger om trafikkfarer +description: 'Herfra følger styret opp det som ikke hører under en enkelt komité: høringssvar, komitéplasser og oppslag fra naboer.' +name: Hva venter på styret akkurat nå? +responsible: + contact: post@tomtervel.no + name: Styret i Tomter Vel diff --git a/runs/tomtervel-committees-2026-09-23/questions/trafikk/_section.yaml b/runs/tomtervel-committees-2026-09-23/questions/trafikk/_section.yaml new file mode 100644 index 0000000..dbe5246 --- /dev/null +++ b/runs/tomtervel-committees-2026-09-23/questions/trafikk/_section.yaml @@ -0,0 +1 @@ +qualifies: trafikk diff --git a/runs/tomtervel-committees-2026-09-23/questions/trafikk/index.yaml b/runs/tomtervel-committees-2026-09-23/questions/trafikk/index.yaml new file mode 100644 index 0000000..fa01bbc --- /dev/null +++ b/runs/tomtervel-committees-2026-09-23/questions/trafikk/index.yaml @@ -0,0 +1,32 @@ +alternatives: +- action: /trafikk + consequence: + - Lagre + description: Farlige steder i trafikken som naboer har meldt inn. + features: + - description: '' + name: '' + resource: + requires_group: trafikk + source: + bucket: trafikkmeldinger + kind: kv + transitions: + - from: open + label: Ta opp med kommunen + to: tatt_opp + - from: open + label: Avvis meldingen + to: avvist + - from: tatt_opp + label: Meld ordnet + to: ordnet + - from: tatt_opp + label: Avvis meldingen + to: avvist + name: Farlige steder i trafikken +description: Her ser du meldinger om farlige steder i trafikken og følger dem opp overfor kommunen eller veieier. +name: Hvilke trafikkfarer må følges opp? +responsible: + contact: post@tomtervel.no + name: Styret i Tomter Vel diff --git a/runs/tomtervel-committees-2026-09-23/rate.json b/runs/tomtervel-committees-2026-09-23/rate.json new file mode 100644 index 0000000..2548e2a --- /dev/null +++ b/runs/tomtervel-committees-2026-09-23/rate.json @@ -0,0 +1,497 @@ +{ + "anleggsfeil": { + "pages": [ + { + "control": { + "asked": 0, + "next": null, + "where": 0, + "which": 0 + }, + "control_ok": true, + "followup_shown": false, + "lix": 26.64003436426117, + "options": 5, + "overloaded": false, + "page": "/", + "personas": 2, + "required_fields": 0, + "understanding": { + "asked": 2, + "next": null, + "where": 2, + "which": 2 + } + }, + { + "control": { + "asked": 0, + "next": 0, + "where": 0, + "which": 0 + }, + "control_ok": true, + "followup_shown": true, + "lix": 24.74264705882353, + "options": 2, + "overloaded": false, + "page": "/melde-fra", + "personas": 2, + "required_fields": 2, + "understanding": { + "asked": 2, + "next": 2, + "where": 2, + "which": 2 + } + } + ], + "steps": 2 + }, + "bli-medlem": { + "pages": [ + { + "control": { + "asked": 0, + "next": null, + "where": 0, + "which": 0 + }, + "control_ok": true, + "followup_shown": false, + "lix": 26.64003436426117, + "options": 5, + "overloaded": false, + "page": "/", + "personas": 2, + "required_fields": 0, + "understanding": { + "asked": 2, + "next": null, + "where": 2, + "which": 1 + } + }, + { + "control": { + "asked": 0, + "next": 0, + "where": 0, + "which": 0 + }, + "control_ok": true, + "followup_shown": true, + "lix": 40.0, + "options": 2, + "overloaded": false, + "page": "/medlem", + "personas": 2, + "required_fields": 3, + "understanding": { + "asked": 2, + "next": 2, + "where": 2, + "which": 2 + } + } + ], + "steps": 2 + }, + "dele-utstyr": { + "pages": [ + { + "control": { + "asked": 0, + "next": null, + "where": 0, + "which": 0 + }, + "control_ok": true, + "followup_shown": false, + "lix": 26.64003436426117, + "options": 5, + "overloaded": false, + "page": "/", + "personas": 2, + "required_fields": 0, + "understanding": { + "asked": 2, + "next": null, + "where": 2, + "which": 2 + } + }, + { + "control": { + "asked": 0, + "next": 0, + "where": 0, + "which": 0 + }, + "control_ok": true, + "followup_shown": true, + "lix": 23.359472588480223, + "options": 3, + "overloaded": false, + "page": "/naboer", + "personas": 2, + "required_fields": 4, + "understanding": { + "asked": 2, + "next": 2, + "where": 2, + "which": 2 + } + } + ], + "steps": 2 + }, + "endre-medlemskap": { + "pages": [ + { + "control": { + "asked": 0, + "next": null, + "where": 0, + "which": 0 + }, + "control_ok": true, + "followup_shown": false, + "lix": 26.64003436426117, + "options": 5, + "overloaded": false, + "page": "/", + "personas": 2, + "required_fields": 0, + "understanding": { + "asked": 2, + "next": null, + "where": 2, + "which": 2 + } + }, + { + "control": { + "asked": 0, + "next": 0, + "where": 0, + "which": 0 + }, + "control_ok": true, + "followup_shown": true, + "lix": 35.306306306306304, + "options": 2, + "overloaded": false, + "page": "/medlem", + "personas": 2, + "required_fields": 3, + "understanding": { + "asked": 2, + "next": 2, + "where": 2, + "which": 2 + } + } + ], + "steps": 2 + }, + "hjelpe-til": { + "pages": [ + { + "control": { + "asked": 0, + "next": null, + "where": 0, + "which": 0 + }, + "control_ok": true, + "followup_shown": false, + "lix": 26.64003436426117, + "options": 5, + "overloaded": false, + "page": "/", + "personas": 2, + "required_fields": 0, + "understanding": { + "asked": 2, + "next": null, + "where": 2, + "which": 2 + } + }, + { + "control": { + "asked": 0, + "next": 0, + "where": 0, + "which": 0 + }, + "control_ok": true, + "followup_shown": true, + "lix": 27.804347826086957, + "options": 2, + "overloaded": false, + "page": "/bidra", + "personas": 2, + "required_fields": 3, + "understanding": { + "asked": 2, + "next": 2, + "where": 2, + "which": 2 + } + } + ], + "steps": 2 + }, + "horingsinnspill": { + "pages": [ + { + "control": { + "asked": 0, + "next": 0, + "where": 0, + "which": 0 + }, + "control_ok": true, + "followup_shown": true, + "lix": 27.32857142857143, + "options": 5, + "overloaded": false, + "page": "/", + "personas": 2, + "required_fields": 3, + "understanding": { + "asked": 2, + "next": 2, + "where": 2, + "which": 1 + } + } + ], + "steps": 1 + }, + "kan-hjelpe": { + "pages": [ + { + "control": { + "asked": 0, + "next": null, + "where": 0, + "which": 0 + }, + "control_ok": true, + "followup_shown": false, + "lix": 26.64003436426117, + "options": 5, + "overloaded": false, + "page": "/", + "personas": 2, + "required_fields": 0, + "understanding": { + "asked": 2, + "next": null, + "where": 2, + "which": 2 + } + }, + { + "control": { + "asked": 0, + "next": 0, + "where": 1, + "which": 0 + }, + "control_ok": false, + "followup_shown": true, + "lix": 24.504761904761907, + "options": 3, + "overloaded": false, + "page": "/naboer", + "personas": 2, + "required_fields": 4, + "understanding": { + "asked": 2, + "next": 2, + "where": 2, + "which": 2 + } + } + ], + "steps": 2 + }, + "komite": { + "pages": [ + { + "control": { + "asked": 0, + "next": null, + "where": 0, + "which": 0 + }, + "control_ok": true, + "followup_shown": false, + "lix": 26.64003436426117, + "options": 5, + "overloaded": false, + "page": "/", + "personas": 2, + "required_fields": 0, + "understanding": { + "asked": 2, + "next": null, + "where": 2, + "which": 2 + } + }, + { + "control": { + "asked": 0, + "next": 0, + "where": 1, + "which": 0 + }, + "control_ok": false, + "followup_shown": true, + "lix": 23.465206185567013, + "options": 2, + "overloaded": false, + "page": "/bidra", + "personas": 2, + "required_fields": 3, + "understanding": { + "asked": 2, + "next": 2, + "where": 2, + "which": 2 + } + } + ], + "steps": 2 + }, + "trafikkfare": { + "pages": [ + { + "control": { + "asked": 0, + "next": null, + "where": 0, + "which": 0 + }, + "control_ok": true, + "followup_shown": false, + "lix": 26.64003436426117, + "options": 5, + "overloaded": false, + "page": "/", + "personas": 2, + "required_fields": 0, + "understanding": { + "asked": 2, + "next": null, + "where": 2, + "which": 1 + } + }, + { + "control": { + "asked": 0, + "next": 0, + "where": 0, + "which": 0 + }, + "control_ok": true, + "followup_shown": true, + "lix": 32.047619047619044, + "options": 2, + "overloaded": false, + "page": "/melde-fra", + "personas": 2, + "required_fields": 2, + "understanding": { + "asked": 2, + "next": 2, + "where": 2, + "which": 2 + } + } + ], + "steps": 2 + }, + "trenger-hjelp": { + "pages": [ + { + "control": { + "asked": 0, + "next": null, + "where": 0, + "which": 0 + }, + "control_ok": true, + "followup_shown": false, + "lix": 26.64003436426117, + "options": 5, + "overloaded": false, + "page": "/", + "personas": 2, + "required_fields": 0, + "understanding": { + "asked": 2, + "next": null, + "where": 2, + "which": 1 + } + }, + { + "control": { + "asked": 0, + "next": 0, + "where": 1, + "which": 0 + }, + "control_ok": false, + "followup_shown": true, + "lix": 21.909090909090907, + "options": 3, + "overloaded": false, + "page": "/naboer", + "personas": 2, + "required_fields": 4, + "understanding": { + "asked": 2, + "next": 2, + "where": 2, + "which": 2 + } + } + ], + "steps": 2 + }, + "utlegg": { + "pages": [ + { + "control": { + "asked": 0, + "next": 0, + "where": 0, + "which": 0 + }, + "control_ok": true, + "followup_shown": true, + "lix": 36.333333333333336, + "options": 1, + "overloaded": false, + "page": "/komiteer/utlegg", + "personas": 1, + "required_fields": 3, + "understanding": { + "asked": 1, + "next": 1, + "where": 1, + "which": 1 + } + } + ], + "steps": 1 + } +} \ No newline at end of file diff --git a/runs/tomtervel-committees-2026-09-23/rate.txt b/runs/tomtervel-committees-2026-09-23/rate.txt new file mode 100644 index 0000000..ce627f2 --- /dev/null +++ b/runs/tomtervel-committees-2026-09-23/rate.txt @@ -0,0 +1,21 @@ +need LIX which where asked next gutted twin says page load +bli-medlem @/ 27 very easy 1/2 2/2 2/2 - 0/0/0/- ok 5 options, 0 required +bli-medlem @/medlem 40 takes effort 2/2 2/2 2/2 2/2 0/0/0/0 ok 2 options, 3 required +endre-medlemskap @/ 27 very easy 2/2 2/2 2/2 - 0/0/0/- ok 5 options, 0 required +endre-medlemskap @/medlem 35 easy 2/2 2/2 2/2 2/2 0/0/0/0 ok 2 options, 3 required +trafikkfare @/ 27 very easy 1/2 2/2 2/2 - 0/0/0/- ok 5 options, 0 required +trafikkfare @/melde-fra 32 easy 2/2 2/2 2/2 2/2 0/0/0/0 ok 2 options, 2 required +anleggsfeil @/ 27 very easy 2/2 2/2 2/2 - 0/0/0/- ok 5 options, 0 required +anleggsfeil @/melde-fra 25 very easy 2/2 2/2 2/2 2/2 0/0/0/0 ok 2 options, 2 required +horingsinnspill 27 very easy 1/2 2/2 2/2 2/2 0/0/0/0 ok 5 options, 3 required +hjelpe-til @/ 27 very easy 2/2 2/2 2/2 - 0/0/0/- ok 5 options, 0 required +hjelpe-til @/bidra 28 very easy 2/2 2/2 2/2 2/2 0/0/0/0 ok 2 options, 3 required +komite @/ 27 very easy 2/2 2/2 2/2 - 0/0/0/- ok 5 options, 0 required +komite @/bidra 23 very easy 2/2 2/2 2/2 2/2 0/1/0/0 FAILED: where 2 options, 3 required +trenger-hjelp @/ 27 very easy 1/2 2/2 2/2 - 0/0/0/- ok 5 options, 0 required +trenger-hjelp @/naboer 22 very easy 2/2 2/2 2/2 2/2 0/1/0/0 FAILED: where 3 options, 4 required +kan-hjelpe @/ 27 very easy 2/2 2/2 2/2 - 0/0/0/- ok 5 options, 0 required +kan-hjelpe @/naboer 25 very easy 2/2 2/2 2/2 2/2 0/1/0/0 FAILED: where 3 options, 4 required +dele-utstyr @/ 27 very easy 2/2 2/2 2/2 - 0/0/0/- ok 5 options, 0 required +dele-utstyr @/naboer 23 very easy 2/2 2/2 2/2 2/2 0/0/0/0 ok 3 options, 4 required +utlegg 36 easy 1/1 1/1 1/1 1/1 0/0/0/0 ok 1 options, 3 required diff --git a/runs/tomtervel-committees-2026-09-23/score-full.txt b/runs/tomtervel-committees-2026-09-23/score-full.txt new file mode 100644 index 0000000..a2262a6 --- /dev/null +++ b/runs/tomtervel-committees-2026-09-23/score-full.txt @@ -0,0 +1,8 @@ +MISROUTE: glemte-a-betale@/medlem: picked "Oppdater eller avslutt medlemskapet" (0.95), the need is met by ["Bli medlem av Tomter Vel"] +MISROUTE: busslomme@/melde-fra: picked "Meld fra om noe ødelagt" (0.95), the need is met by ["Meld fra om en trafikkfare"] +MISROUTE: togtider@/: picked "Meld fra om noe som bør fikses" (0.95), the need is met by ["Få din mening med i høringssvaret"] +MISROUTE: motorsag@/: picked "Meld fra om noe som bør fikses" (0.95), the need is met by ["Bli med og gjør en innsats"] +MISROUTE: pendler@/: picked "Få din mening med i høringssvaret" (0.95), the need is met by ["Bli med og gjør en innsats"] +MISROUTE: planlegger@/: picked "Få din mening med i høringssvaret" (0.95), the need is met by ["Bli med og gjør en innsats"] +MISROUTE: hjemmekontor@/naboer: picked "Få en nabo til å stille opp" (0.95), the need is met by ["Bli spurt når en nabo trenger en hånd"] +wording: 31/38 routed right (82%) diff --git a/runs/tomtervel-committees-2026-09-23/score-skim.txt b/runs/tomtervel-committees-2026-09-23/score-skim.txt new file mode 100644 index 0000000..5e623db --- /dev/null +++ b/runs/tomtervel-committees-2026-09-23/score-skim.txt @@ -0,0 +1,9 @@ +MISROUTE: glemte-a-betale@/medlem: picked "Oppdater eller avslutt medlemskapet" (0.95), the need is met by ["Bli medlem av Tomter Vel"] +MISROUTE: blokker@/: picked "Meld fra om noe som bør fikses" (0.85), the need is met by ["Få din mening med i høringssvaret"] +MISROUTE: vafler@/: picked "Få hjelp av naboer, eller gi en hånd selv" (0.95), the need is met by ["Bli med og gjør en innsats"] +MISROUTE: pendler@/bidra: picked "Bli med på dugnad eller arrangement" (0.95), the need is met by ["Sitt i en komité som betyr noe for deg"] +MISROUTE: planlegger@/: picked "Få din mening med i høringssvaret" (0.95), the need is met by ["Bli med og gjør en innsats"] +MISROUTE: snomaking@/naboer: picked "Bli spurt når en nabo trenger en hånd" (0.95), the need is met by ["Få en nabo til å stille opp"] +MISROUTE: nyoperert@/naboer: picked "Lån ut eller lån av naboen" (0.95), the need is met by ["Få en nabo til å stille opp"] +MISROUTE: pensjonert-elektriker@/naboer: picked "Lån ut eller lån av naboen" (0.95), the need is met by ["Bli spurt når en nabo trenger en hånd"] +wording: 30/38 routed right (79%) diff --git a/runs/tomtervel-committees-2026-09-23/site.yaml b/runs/tomtervel-committees-2026-09-23/site.yaml new file mode 100644 index 0000000..e1c5866 --- /dev/null +++ b/runs/tomtervel-committees-2026-09-23/site.yaml @@ -0,0 +1,2 @@ +lang: no +title: Tomter Vel diff --git a/runs/tomtervel-committees-2026-09-23/tasks-full.jsonl b/runs/tomtervel-committees-2026-09-23/tasks-full.jsonl new file mode 100644 index 0000000..0799a40 --- /dev/null +++ b/runs/tomtervel-committees-2026-09-23/tasks-full.jsonl @@ -0,0 +1,38 @@ +{"id":"nyinnflyttet@/","persona":"nyinnflyttet","need":"bli-medlem","page":"/","state":{"body":"Vi flyttet til Tomter i mars og har hørt at det finnes et vel. Hvordan blir vi med, og hva koster det?"},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva gjelder det for deg?\". Which alternative do they choose?","criteria":{"Bli med og gjør en innsats":"Vi trenger folk på 17. mai, dugnader og i komiteene. Det trengs ikke mer enn litt tid du har å avse.","Bli medlem eller endre opplysningene dine":"Meld deg inn, betal kontingenten, eller gi beskjed om flytting, ny e-post eller utmelding.","Få din mening med i høringssvaret":"Har kommunen en sak på høring du mener noe om? Send oss innspillet ditt, så tar vi det med i velets svar.","Få hjelp av naboer, eller gi en hånd selv":"Trenger du en hånd med snømåking, handling eller skyss? Eller kan du stille opp for en nabo? Her møtes dere.","Meld fra om noe som bør fikses":"Sett du noe farlig i trafikken, eller noe ødelagt på lekeplassen eller elvestien? Gi oss beskjed."}}},"expect":["Bli medlem eller endre opplysningene dine"]} +{"id":"nyinnflyttet@/medlem","persona":"nyinnflyttet","need":"bli-medlem","page":"/medlem","state":{"body":"Vi flyttet til Tomter i mars og har hørt at det finnes et vel. Hvordan blir vi med, og hva koster det?"},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Vil du bli medlem, eller endre medlemskapet ditt?\". Which alternative do they choose?","criteria":{"Bli medlem av Tomter Vel":"Meld deg inn i velet, så holder vi deg oppdatert og du støtter arbeidet i nærmiljøet.","Oppdater eller avslutt medlemskapet":"Har du flyttet, byttet e-post eller vil melde deg ut? Gi oss beskjed så vi har riktige opplysninger."}}},"expect":["Bli medlem av Tomter Vel"]} +{"id":"glemte-a-betale@/","persona":"glemte-a-betale","need":"bli-medlem","page":"/","state":{"body":"Jeg har vært medlem før men fikk ikke betalt i fjor. Kan jeg bare vippse, og til hvem?"},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva gjelder det for deg?\". Which alternative do they choose?","criteria":{"Bli med og gjør en innsats":"Vi trenger folk på 17. mai, dugnader og i komiteene. Det trengs ikke mer enn litt tid du har å avse.","Bli medlem eller endre opplysningene dine":"Meld deg inn, betal kontingenten, eller gi beskjed om flytting, ny e-post eller utmelding.","Få din mening med i høringssvaret":"Har kommunen en sak på høring du mener noe om? Send oss innspillet ditt, så tar vi det med i velets svar.","Få hjelp av naboer, eller gi en hånd selv":"Trenger du en hånd med snømåking, handling eller skyss? Eller kan du stille opp for en nabo? Her møtes dere.","Meld fra om noe som bør fikses":"Sett du noe farlig i trafikken, eller noe ødelagt på lekeplassen eller elvestien? Gi oss beskjed."}}},"expect":["Bli medlem eller endre opplysningene dine"]} +{"id":"glemte-a-betale@/medlem","persona":"glemte-a-betale","need":"bli-medlem","page":"/medlem","state":{"body":"Jeg har vært medlem før men fikk ikke betalt i fjor. Kan jeg bare vippse, og til hvem?"},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Vil du bli medlem, eller endre medlemskapet ditt?\". Which alternative do they choose?","criteria":{"Bli medlem av Tomter Vel":"Meld deg inn i velet, så holder vi deg oppdatert og du støtter arbeidet i nærmiljøet.","Oppdater eller avslutt medlemskapet":"Har du flyttet, byttet e-post eller vil melde deg ut? Gi oss beskjed så vi har riktige opplysninger."}}},"expect":["Bli medlem av Tomter Vel"]} +{"id":"ny-epost@/","persona":"ny-epost","need":"endre-medlemskap","page":"/","state":{"body":"Vi har byttet e-postadresse og får ikke lenger noe fra dere."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva gjelder det for deg?\". Which alternative do they choose?","criteria":{"Bli med og gjør en innsats":"Vi trenger folk på 17. mai, dugnader og i komiteene. Det trengs ikke mer enn litt tid du har å avse.","Bli medlem eller endre opplysningene dine":"Meld deg inn, betal kontingenten, eller gi beskjed om flytting, ny e-post eller utmelding.","Få din mening med i høringssvaret":"Har kommunen en sak på høring du mener noe om? Send oss innspillet ditt, så tar vi det med i velets svar.","Få hjelp av naboer, eller gi en hånd selv":"Trenger du en hånd med snømåking, handling eller skyss? Eller kan du stille opp for en nabo? Her møtes dere.","Meld fra om noe som bør fikses":"Sett du noe farlig i trafikken, eller noe ødelagt på lekeplassen eller elvestien? Gi oss beskjed."}}},"expect":["Bli medlem eller endre opplysningene dine"]} +{"id":"ny-epost@/medlem","persona":"ny-epost","need":"endre-medlemskap","page":"/medlem","state":{"body":"Vi har byttet e-postadresse og får ikke lenger noe fra dere."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Vil du bli medlem, eller endre medlemskapet ditt?\". Which alternative do they choose?","criteria":{"Bli medlem av Tomter Vel":"Meld deg inn i velet, så holder vi deg oppdatert og du støtter arbeidet i nærmiljøet.","Oppdater eller avslutt medlemskapet":"Har du flyttet, byttet e-post eller vil melde deg ut? Gi oss beskjed så vi har riktige opplysninger."}}},"expect":["Oppdater eller avslutt medlemskapet"]} +{"id":"flytter@/","persona":"flytter","need":"endre-medlemskap","page":"/","state":{"body":"Vi selger huset og flytter til Ski i august, så vi må ut av medlemslista."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva gjelder det for deg?\". Which alternative do they choose?","criteria":{"Bli med og gjør en innsats":"Vi trenger folk på 17. mai, dugnader og i komiteene. Det trengs ikke mer enn litt tid du har å avse.","Bli medlem eller endre opplysningene dine":"Meld deg inn, betal kontingenten, eller gi beskjed om flytting, ny e-post eller utmelding.","Få din mening med i høringssvaret":"Har kommunen en sak på høring du mener noe om? Send oss innspillet ditt, så tar vi det med i velets svar.","Få hjelp av naboer, eller gi en hånd selv":"Trenger du en hånd med snømåking, handling eller skyss? Eller kan du stille opp for en nabo? Her møtes dere.","Meld fra om noe som bør fikses":"Sett du noe farlig i trafikken, eller noe ødelagt på lekeplassen eller elvestien? Gi oss beskjed."}}},"expect":["Bli medlem eller endre opplysningene dine"]} +{"id":"flytter@/medlem","persona":"flytter","need":"endre-medlemskap","page":"/medlem","state":{"body":"Vi selger huset og flytter til Ski i august, så vi må ut av medlemslista."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Vil du bli medlem, eller endre medlemskapet ditt?\". Which alternative do they choose?","criteria":{"Bli medlem av Tomter Vel":"Meld deg inn i velet, så holder vi deg oppdatert og du støtter arbeidet i nærmiljøet.","Oppdater eller avslutt medlemskapet":"Har du flyttet, byttet e-post eller vil melde deg ut? Gi oss beskjed så vi har riktige opplysninger."}}},"expect":["Oppdater eller avslutt medlemskapet"]} +{"id":"skolevei@/","persona":"skolevei","need":"trafikkfare","page":"/","state":{"body":"Bilene kjører altfor fort i svingen ved skolen om morgenen, og det er ikke fortau der ungene går."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva gjelder det for deg?\". Which alternative do they choose?","criteria":{"Bli med og gjør en innsats":"Vi trenger folk på 17. mai, dugnader og i komiteene. Det trengs ikke mer enn litt tid du har å avse.","Bli medlem eller endre opplysningene dine":"Meld deg inn, betal kontingenten, eller gi beskjed om flytting, ny e-post eller utmelding.","Få din mening med i høringssvaret":"Har kommunen en sak på høring du mener noe om? Send oss innspillet ditt, så tar vi det med i velets svar.","Få hjelp av naboer, eller gi en hånd selv":"Trenger du en hånd med snømåking, handling eller skyss? Eller kan du stille opp for en nabo? Her møtes dere.","Meld fra om noe som bør fikses":"Sett du noe farlig i trafikken, eller noe ødelagt på lekeplassen eller elvestien? Gi oss beskjed."}}},"expect":["Meld fra om noe som bør fikses"]} +{"id":"skolevei@/melde-fra","persona":"skolevei","need":"trafikkfare","page":"/melde-fra","state":{"body":"Bilene kjører altfor fort i svingen ved skolen om morgenen, og det er ikke fortau der ungene går."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva vil du melde fra om?\". Which alternative do they choose?","criteria":{"Meld fra om en trafikkfare":"Sett du noe farlig i trafikken? Fortell trafikkomiteen om det, så tar de det videre.","Meld fra om noe ødelagt":"Se noe ødelagt på en lekeplass eller langs elvestien, så tar lekeplasskomiteen tak i det."}}},"expect":["Meld fra om en trafikkfare"]} +{"id":"busslomme@/","persona":"busslomme","need":"trafikkfare","page":"/","state":{"body":"Det er umulig å se om det kommer noen når man skal ut fra busslomma ved butikken, hekken har blitt kjempehøy."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva gjelder det for deg?\". Which alternative do they choose?","criteria":{"Bli med og gjør en innsats":"Vi trenger folk på 17. mai, dugnader og i komiteene. Det trengs ikke mer enn litt tid du har å avse.","Bli medlem eller endre opplysningene dine":"Meld deg inn, betal kontingenten, eller gi beskjed om flytting, ny e-post eller utmelding.","Få din mening med i høringssvaret":"Har kommunen en sak på høring du mener noe om? Send oss innspillet ditt, så tar vi det med i velets svar.","Få hjelp av naboer, eller gi en hånd selv":"Trenger du en hånd med snømåking, handling eller skyss? Eller kan du stille opp for en nabo? Her møtes dere.","Meld fra om noe som bør fikses":"Sett du noe farlig i trafikken, eller noe ødelagt på lekeplassen eller elvestien? Gi oss beskjed."}}},"expect":["Meld fra om noe som bør fikses"]} +{"id":"busslomme@/melde-fra","persona":"busslomme","need":"trafikkfare","page":"/melde-fra","state":{"body":"Det er umulig å se om det kommer noen når man skal ut fra busslomma ved butikken, hekken har blitt kjempehøy."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva vil du melde fra om?\". Which alternative do they choose?","criteria":{"Meld fra om en trafikkfare":"Sett du noe farlig i trafikken? Fortell trafikkomiteen om det, så tar de det videre.","Meld fra om noe ødelagt":"Se noe ødelagt på en lekeplass eller langs elvestien, så tar lekeplasskomiteen tak i det."}}},"expect":["Meld fra om en trafikkfare"]} +{"id":"huske@/","persona":"huske","need":"anleggsfeil","page":"/","state":{"body":"Huska på lekeplassen henger i én kjetting. Sønnen min dro i den i går og den holdt så vidt."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva gjelder det for deg?\". Which alternative do they choose?","criteria":{"Bli med og gjør en innsats":"Vi trenger folk på 17. mai, dugnader og i komiteene. Det trengs ikke mer enn litt tid du har å avse.","Bli medlem eller endre opplysningene dine":"Meld deg inn, betal kontingenten, eller gi beskjed om flytting, ny e-post eller utmelding.","Få din mening med i høringssvaret":"Har kommunen en sak på høring du mener noe om? Send oss innspillet ditt, så tar vi det med i velets svar.","Få hjelp av naboer, eller gi en hånd selv":"Trenger du en hånd med snømåking, handling eller skyss? Eller kan du stille opp for en nabo? Her møtes dere.","Meld fra om noe som bør fikses":"Sett du noe farlig i trafikken, eller noe ødelagt på lekeplassen eller elvestien? Gi oss beskjed."}}},"expect":["Meld fra om noe som bør fikses"]} +{"id":"huske@/melde-fra","persona":"huske","need":"anleggsfeil","page":"/melde-fra","state":{"body":"Huska på lekeplassen henger i én kjetting. Sønnen min dro i den i går og den holdt så vidt."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva vil du melde fra om?\". Which alternative do they choose?","criteria":{"Meld fra om en trafikkfare":"Sett du noe farlig i trafikken? Fortell trafikkomiteen om det, så tar de det videre.","Meld fra om noe ødelagt":"Se noe ødelagt på en lekeplass eller langs elvestien, så tar lekeplasskomiteen tak i det."}}},"expect":["Meld fra om noe ødelagt"]} +{"id":"bru@/","persona":"bru","need":"anleggsfeil","page":"/","state":{"body":"Planken på den lille brua på stien langs elva er råtten, jeg gikk nesten gjennom."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva gjelder det for deg?\". Which alternative do they choose?","criteria":{"Bli med og gjør en innsats":"Vi trenger folk på 17. mai, dugnader og i komiteene. Det trengs ikke mer enn litt tid du har å avse.","Bli medlem eller endre opplysningene dine":"Meld deg inn, betal kontingenten, eller gi beskjed om flytting, ny e-post eller utmelding.","Få din mening med i høringssvaret":"Har kommunen en sak på høring du mener noe om? Send oss innspillet ditt, så tar vi det med i velets svar.","Få hjelp av naboer, eller gi en hånd selv":"Trenger du en hånd med snømåking, handling eller skyss? Eller kan du stille opp for en nabo? Her møtes dere.","Meld fra om noe som bør fikses":"Sett du noe farlig i trafikken, eller noe ødelagt på lekeplassen eller elvestien? Gi oss beskjed."}}},"expect":["Meld fra om noe som bør fikses"]} +{"id":"bru@/melde-fra","persona":"bru","need":"anleggsfeil","page":"/melde-fra","state":{"body":"Planken på den lille brua på stien langs elva er råtten, jeg gikk nesten gjennom."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva vil du melde fra om?\". Which alternative do they choose?","criteria":{"Meld fra om en trafikkfare":"Sett du noe farlig i trafikken? Fortell trafikkomiteen om det, så tar de det videre.","Meld fra om noe ødelagt":"Se noe ødelagt på en lekeplass eller langs elvestien, så tar lekeplasskomiteen tak i det."}}},"expect":["Meld fra om noe ødelagt"]} +{"id":"blokker@/","persona":"blokker","need":"horingsinnspill","page":"/","state":{"body":"Kommunen skal bygge blokker på jordet bak stasjonen, og jeg synes det er alt for høyt. Kan velet si ifra?"},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva gjelder det for deg?\". Which alternative do they choose?","criteria":{"Bli med og gjør en innsats":"Vi trenger folk på 17. mai, dugnader og i komiteene. Det trengs ikke mer enn litt tid du har å avse.","Bli medlem eller endre opplysningene dine":"Meld deg inn, betal kontingenten, eller gi beskjed om flytting, ny e-post eller utmelding.","Få din mening med i høringssvaret":"Har kommunen en sak på høring du mener noe om? Send oss innspillet ditt, så tar vi det med i velets svar.","Få hjelp av naboer, eller gi en hånd selv":"Trenger du en hånd med snømåking, handling eller skyss? Eller kan du stille opp for en nabo? Her møtes dere.","Meld fra om noe som bør fikses":"Sett du noe farlig i trafikken, eller noe ødelagt på lekeplassen eller elvestien? Gi oss beskjed."}}},"expect":["Få din mening med i høringssvaret"]} +{"id":"togtider@/","persona":"togtider","need":"horingsinnspill","page":"/","state":{"body":"Ruter vil kutte det tidlige toget. Jeg pendler til Oslo hver dag og vil at velet skriver til dem om det."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva gjelder det for deg?\". Which alternative do they choose?","criteria":{"Bli med og gjør en innsats":"Vi trenger folk på 17. mai, dugnader og i komiteene. Det trengs ikke mer enn litt tid du har å avse.","Bli medlem eller endre opplysningene dine":"Meld deg inn, betal kontingenten, eller gi beskjed om flytting, ny e-post eller utmelding.","Få din mening med i høringssvaret":"Har kommunen en sak på høring du mener noe om? Send oss innspillet ditt, så tar vi det med i velets svar.","Få hjelp av naboer, eller gi en hånd selv":"Trenger du en hånd med snømåking, handling eller skyss? Eller kan du stille opp for en nabo? Her møtes dere.","Meld fra om noe som bør fikses":"Sett du noe farlig i trafikken, eller noe ødelagt på lekeplassen eller elvestien? Gi oss beskjed."}}},"expect":["Få din mening med i høringssvaret"]} +{"id":"vafler@/","persona":"vafler","need":"hjelpe-til","page":"/","state":{"body":"Jeg kan steke vafler på 17. mai-frokosten hvis dere trenger folk."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva gjelder det for deg?\". Which alternative do they choose?","criteria":{"Bli med og gjør en innsats":"Vi trenger folk på 17. mai, dugnader og i komiteene. Det trengs ikke mer enn litt tid du har å avse.","Bli medlem eller endre opplysningene dine":"Meld deg inn, betal kontingenten, eller gi beskjed om flytting, ny e-post eller utmelding.","Få din mening med i høringssvaret":"Har kommunen en sak på høring du mener noe om? Send oss innspillet ditt, så tar vi det med i velets svar.","Få hjelp av naboer, eller gi en hånd selv":"Trenger du en hånd med snømåking, handling eller skyss? Eller kan du stille opp for en nabo? Her møtes dere.","Meld fra om noe som bør fikses":"Sett du noe farlig i trafikken, eller noe ødelagt på lekeplassen eller elvestien? Gi oss beskjed."}}},"expect":["Bli med og gjør en innsats"]} +{"id":"vafler@/bidra","persona":"vafler","need":"hjelpe-til","page":"/bidra","state":{"body":"Jeg kan steke vafler på 17. mai-frokosten hvis dere trenger folk."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Vil du hjelpe til i nabolaget?\". Which alternative do they choose?","criteria":{"Bli med på dugnad eller arrangement":"17. mai, dugnad eller andre arrangementer trenger folk som stiller opp. Si fra hva du kan bidra med, så setter vi deg opp på noe som passer.","Sitt i en komité som betyr noe for deg":"Velet drives av sju komiteer på fritida, og alle trenger flere hender. Si hvilken komité du har lyst til å være med i."}}},"expect":["Bli med på dugnad eller arrangement"]} +{"id":"motorsag@/","persona":"motorsag","need":"hjelpe-til","page":"/","state":{"body":"Har motorsag og ledig helg, kan ta trær langs elvestien hvis det er en dugnad."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva gjelder det for deg?\". Which alternative do they choose?","criteria":{"Bli med og gjør en innsats":"Vi trenger folk på 17. mai, dugnader og i komiteene. Det trengs ikke mer enn litt tid du har å avse.","Bli medlem eller endre opplysningene dine":"Meld deg inn, betal kontingenten, eller gi beskjed om flytting, ny e-post eller utmelding.","Få din mening med i høringssvaret":"Har kommunen en sak på høring du mener noe om? Send oss innspillet ditt, så tar vi det med i velets svar.","Få hjelp av naboer, eller gi en hånd selv":"Trenger du en hånd med snømåking, handling eller skyss? Eller kan du stille opp for en nabo? Her møtes dere.","Meld fra om noe som bør fikses":"Sett du noe farlig i trafikken, eller noe ødelagt på lekeplassen eller elvestien? Gi oss beskjed."}}},"expect":["Bli med og gjør en innsats"]} +{"id":"motorsag@/bidra","persona":"motorsag","need":"hjelpe-til","page":"/bidra","state":{"body":"Har motorsag og ledig helg, kan ta trær langs elvestien hvis det er en dugnad."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Vil du hjelpe til i nabolaget?\". Which alternative do they choose?","criteria":{"Bli med på dugnad eller arrangement":"17. mai, dugnad eller andre arrangementer trenger folk som stiller opp. Si fra hva du kan bidra med, så setter vi deg opp på noe som passer.","Sitt i en komité som betyr noe for deg":"Velet drives av sju komiteer på fritida, og alle trenger flere hender. Si hvilken komité du har lyst til å være med i."}}},"expect":["Bli med på dugnad eller arrangement"]} +{"id":"pendler@/","persona":"pendler","need":"komite","page":"/","state":{"body":"Jeg pendler og er lei av at ingen snakker med Ruter. Jeg vil gjerne være med i gjengen som jobber med det."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva gjelder det for deg?\". Which alternative do they choose?","criteria":{"Bli med og gjør en innsats":"Vi trenger folk på 17. mai, dugnader og i komiteene. Det trengs ikke mer enn litt tid du har å avse.","Bli medlem eller endre opplysningene dine":"Meld deg inn, betal kontingenten, eller gi beskjed om flytting, ny e-post eller utmelding.","Få din mening med i høringssvaret":"Har kommunen en sak på høring du mener noe om? Send oss innspillet ditt, så tar vi det med i velets svar.","Få hjelp av naboer, eller gi en hånd selv":"Trenger du en hånd med snømåking, handling eller skyss? Eller kan du stille opp for en nabo? Her møtes dere.","Meld fra om noe som bør fikses":"Sett du noe farlig i trafikken, eller noe ødelagt på lekeplassen eller elvestien? Gi oss beskjed."}}},"expect":["Bli med og gjør en innsats"]} +{"id":"pendler@/bidra","persona":"pendler","need":"komite","page":"/bidra","state":{"body":"Jeg pendler og er lei av at ingen snakker med Ruter. Jeg vil gjerne være med i gjengen som jobber med det."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Vil du hjelpe til i nabolaget?\". Which alternative do they choose?","criteria":{"Bli med på dugnad eller arrangement":"17. mai, dugnad eller andre arrangementer trenger folk som stiller opp. Si fra hva du kan bidra med, så setter vi deg opp på noe som passer.","Sitt i en komité som betyr noe for deg":"Velet drives av sju komiteer på fritida, og alle trenger flere hender. Si hvilken komité du har lyst til å være med i."}}},"expect":["Sitt i en komité som betyr noe for deg"]} +{"id":"planlegger@/","persona":"planlegger","need":"komite","page":"/","state":{"body":"Jeg er arealplanlegger av yrke og kunne bidratt når kommunen sender saker på høring."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva gjelder det for deg?\". Which alternative do they choose?","criteria":{"Bli med og gjør en innsats":"Vi trenger folk på 17. mai, dugnader og i komiteene. Det trengs ikke mer enn litt tid du har å avse.","Bli medlem eller endre opplysningene dine":"Meld deg inn, betal kontingenten, eller gi beskjed om flytting, ny e-post eller utmelding.","Få din mening med i høringssvaret":"Har kommunen en sak på høring du mener noe om? Send oss innspillet ditt, så tar vi det med i velets svar.","Få hjelp av naboer, eller gi en hånd selv":"Trenger du en hånd med snømåking, handling eller skyss? Eller kan du stille opp for en nabo? Her møtes dere.","Meld fra om noe som bør fikses":"Sett du noe farlig i trafikken, eller noe ødelagt på lekeplassen eller elvestien? Gi oss beskjed."}}},"expect":["Bli med og gjør en innsats"]} +{"id":"planlegger@/bidra","persona":"planlegger","need":"komite","page":"/bidra","state":{"body":"Jeg er arealplanlegger av yrke og kunne bidratt når kommunen sender saker på høring."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Vil du hjelpe til i nabolaget?\". Which alternative do they choose?","criteria":{"Bli med på dugnad eller arrangement":"17. mai, dugnad eller andre arrangementer trenger folk som stiller opp. Si fra hva du kan bidra med, så setter vi deg opp på noe som passer.","Sitt i en komité som betyr noe for deg":"Velet drives av sju komiteer på fritida, og alle trenger flere hender. Si hvilken komité du har lyst til å være med i."}}},"expect":["Sitt i en komité som betyr noe for deg"]} +{"id":"tilhenger@/","persona":"tilhenger","need":"dele-utstyr","page":"/","state":{"body":"Jeg har en tilhenger som står ubrukt mesteparten av året, naboer kan gjerne låne den for en hundrelapp."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva gjelder det for deg?\". Which alternative do they choose?","criteria":{"Bli med og gjør en innsats":"Vi trenger folk på 17. mai, dugnader og i komiteene. Det trengs ikke mer enn litt tid du har å avse.","Bli medlem eller endre opplysningene dine":"Meld deg inn, betal kontingenten, eller gi beskjed om flytting, ny e-post eller utmelding.","Få din mening med i høringssvaret":"Har kommunen en sak på høring du mener noe om? Send oss innspillet ditt, så tar vi det med i velets svar.","Få hjelp av naboer, eller gi en hånd selv":"Trenger du en hånd med snømåking, handling eller skyss? Eller kan du stille opp for en nabo? Her møtes dere.","Meld fra om noe som bør fikses":"Sett du noe farlig i trafikken, eller noe ødelagt på lekeplassen eller elvestien? Gi oss beskjed."}}},"expect":["Få hjelp av naboer, eller gi en hånd selv"]} +{"id":"tilhenger@/naboer","persona":"tilhenger","need":"dele-utstyr","page":"/naboer","state":{"body":"Jeg har en tilhenger som står ubrukt mesteparten av året, naboer kan gjerne låne den for en hundrelapp."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Trenger du en hånd, eller kan du gi en?\". Which alternative do they choose?","criteria":{"Bli spurt når en nabo trenger en hånd":"Kan du stille opp med snømåking, en handletur eller skyss når en nabo trenger det? Meld deg, så blir du spurt når det passer.","Få en nabo til å stille opp":"Får du ikke til snømåking, en handletur eller skyss for tiden? Si fra, så finner vi en nabo som kan stille opp.","Lån ut eller lån av naboen":"Har du noe naboene kan få låne, eller trenger du å låne noe selv? Legg ut et oppslag så ser de andre på Tomter det."}}},"expect":["Lån ut eller lån av naboen"]} +{"id":"stige@/","persona":"stige","need":"dele-utstyr","page":"/","state":{"body":"Trenger en lang stige en dag i helga for å rense takrenna, er det noen i nærheten som har?"},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva gjelder det for deg?\". Which alternative do they choose?","criteria":{"Bli med og gjør en innsats":"Vi trenger folk på 17. mai, dugnader og i komiteene. Det trengs ikke mer enn litt tid du har å avse.","Bli medlem eller endre opplysningene dine":"Meld deg inn, betal kontingenten, eller gi beskjed om flytting, ny e-post eller utmelding.","Få din mening med i høringssvaret":"Har kommunen en sak på høring du mener noe om? Send oss innspillet ditt, så tar vi det med i velets svar.","Få hjelp av naboer, eller gi en hånd selv":"Trenger du en hånd med snømåking, handling eller skyss? Eller kan du stille opp for en nabo? Her møtes dere.","Meld fra om noe som bør fikses":"Sett du noe farlig i trafikken, eller noe ødelagt på lekeplassen eller elvestien? Gi oss beskjed."}}},"expect":["Få hjelp av naboer, eller gi en hånd selv"]} +{"id":"stige@/naboer","persona":"stige","need":"dele-utstyr","page":"/naboer","state":{"body":"Trenger en lang stige en dag i helga for å rense takrenna, er det noen i nærheten som har?"},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Trenger du en hånd, eller kan du gi en?\". Which alternative do they choose?","criteria":{"Bli spurt når en nabo trenger en hånd":"Kan du stille opp med snømåking, en handletur eller skyss når en nabo trenger det? Meld deg, så blir du spurt når det passer.","Få en nabo til å stille opp":"Får du ikke til snømåking, en handletur eller skyss for tiden? Si fra, så finner vi en nabo som kan stille opp.","Lån ut eller lån av naboen":"Har du noe naboene kan få låne, eller trenger du å låne noe selv? Legg ut et oppslag så ser de andre på Tomter det."}}},"expect":["Lån ut eller lån av naboen"]} +{"id":"snomaking@/","persona":"snomaking","need":"trenger-hjelp","page":"/","state":{"body":"Jeg er 84 og klarer ikke å måke innkjørselen lenger. Er det noen som kan hjelpe meg når det snør?"},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva gjelder det for deg?\". Which alternative do they choose?","criteria":{"Bli med og gjør en innsats":"Vi trenger folk på 17. mai, dugnader og i komiteene. Det trengs ikke mer enn litt tid du har å avse.","Bli medlem eller endre opplysningene dine":"Meld deg inn, betal kontingenten, eller gi beskjed om flytting, ny e-post eller utmelding.","Få din mening med i høringssvaret":"Har kommunen en sak på høring du mener noe om? Send oss innspillet ditt, så tar vi det med i velets svar.","Få hjelp av naboer, eller gi en hånd selv":"Trenger du en hånd med snømåking, handling eller skyss? Eller kan du stille opp for en nabo? Her møtes dere.","Meld fra om noe som bør fikses":"Sett du noe farlig i trafikken, eller noe ødelagt på lekeplassen eller elvestien? Gi oss beskjed."}}},"expect":["Få hjelp av naboer, eller gi en hånd selv"]} +{"id":"snomaking@/naboer","persona":"snomaking","need":"trenger-hjelp","page":"/naboer","state":{"body":"Jeg er 84 og klarer ikke å måke innkjørselen lenger. Er det noen som kan hjelpe meg når det snør?"},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Trenger du en hånd, eller kan du gi en?\". Which alternative do they choose?","criteria":{"Bli spurt når en nabo trenger en hånd":"Kan du stille opp med snømåking, en handletur eller skyss når en nabo trenger det? Meld deg, så blir du spurt når det passer.","Få en nabo til å stille opp":"Får du ikke til snømåking, en handletur eller skyss for tiden? Si fra, så finner vi en nabo som kan stille opp.","Lån ut eller lån av naboen":"Har du noe naboene kan få låne, eller trenger du å låne noe selv? Legg ut et oppslag så ser de andre på Tomter det."}}},"expect":["Få en nabo til å stille opp"]} +{"id":"nyoperert@/","persona":"nyoperert","need":"trenger-hjelp","page":"/","state":{"body":"Jeg er nyoperert i hofta og kommer meg ikke til butikken på noen uker. Kunne noen handlet for meg?"},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva gjelder det for deg?\". Which alternative do they choose?","criteria":{"Bli med og gjør en innsats":"Vi trenger folk på 17. mai, dugnader og i komiteene. Det trengs ikke mer enn litt tid du har å avse.","Bli medlem eller endre opplysningene dine":"Meld deg inn, betal kontingenten, eller gi beskjed om flytting, ny e-post eller utmelding.","Få din mening med i høringssvaret":"Har kommunen en sak på høring du mener noe om? Send oss innspillet ditt, så tar vi det med i velets svar.","Få hjelp av naboer, eller gi en hånd selv":"Trenger du en hånd med snømåking, handling eller skyss? Eller kan du stille opp for en nabo? Her møtes dere.","Meld fra om noe som bør fikses":"Sett du noe farlig i trafikken, eller noe ødelagt på lekeplassen eller elvestien? Gi oss beskjed."}}},"expect":["Få hjelp av naboer, eller gi en hånd selv"]} +{"id":"nyoperert@/naboer","persona":"nyoperert","need":"trenger-hjelp","page":"/naboer","state":{"body":"Jeg er nyoperert i hofta og kommer meg ikke til butikken på noen uker. Kunne noen handlet for meg?"},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Trenger du en hånd, eller kan du gi en?\". Which alternative do they choose?","criteria":{"Bli spurt når en nabo trenger en hånd":"Kan du stille opp med snømåking, en handletur eller skyss når en nabo trenger det? Meld deg, så blir du spurt når det passer.","Få en nabo til å stille opp":"Får du ikke til snømåking, en handletur eller skyss for tiden? Si fra, så finner vi en nabo som kan stille opp.","Lån ut eller lån av naboen":"Har du noe naboene kan få låne, eller trenger du å låne noe selv? Legg ut et oppslag så ser de andre på Tomter det."}}},"expect":["Få en nabo til å stille opp"]} +{"id":"hjemmekontor@/","persona":"hjemmekontor","need":"kan-hjelpe","page":"/","state":{"body":"Jeg jobber hjemmefra og kan godt måke eller handle for noen som ikke får det til selv."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva gjelder det for deg?\". Which alternative do they choose?","criteria":{"Bli med og gjør en innsats":"Vi trenger folk på 17. mai, dugnader og i komiteene. Det trengs ikke mer enn litt tid du har å avse.","Bli medlem eller endre opplysningene dine":"Meld deg inn, betal kontingenten, eller gi beskjed om flytting, ny e-post eller utmelding.","Få din mening med i høringssvaret":"Har kommunen en sak på høring du mener noe om? Send oss innspillet ditt, så tar vi det med i velets svar.","Få hjelp av naboer, eller gi en hånd selv":"Trenger du en hånd med snømåking, handling eller skyss? Eller kan du stille opp for en nabo? Her møtes dere.","Meld fra om noe som bør fikses":"Sett du noe farlig i trafikken, eller noe ødelagt på lekeplassen eller elvestien? Gi oss beskjed."}}},"expect":["Få hjelp av naboer, eller gi en hånd selv"]} +{"id":"hjemmekontor@/naboer","persona":"hjemmekontor","need":"kan-hjelpe","page":"/naboer","state":{"body":"Jeg jobber hjemmefra og kan godt måke eller handle for noen som ikke får det til selv."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Trenger du en hånd, eller kan du gi en?\". Which alternative do they choose?","criteria":{"Bli spurt når en nabo trenger en hånd":"Kan du stille opp med snømåking, en handletur eller skyss når en nabo trenger det? Meld deg, så blir du spurt når det passer.","Få en nabo til å stille opp":"Får du ikke til snømåking, en handletur eller skyss for tiden? Si fra, så finner vi en nabo som kan stille opp.","Lån ut eller lån av naboen":"Har du noe naboene kan få låne, eller trenger du å låne noe selv? Legg ut et oppslag så ser de andre på Tomter det."}}},"expect":["Bli spurt når en nabo trenger en hånd"]} +{"id":"pensjonert-elektriker@/","persona":"pensjonert-elektriker","need":"kan-hjelpe","page":"/","state":{"body":"Pensjonert elektriker, har bil og god tid. Si fra om noen trenger skyss eller en hånd med småting."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva gjelder det for deg?\". Which alternative do they choose?","criteria":{"Bli med og gjør en innsats":"Vi trenger folk på 17. mai, dugnader og i komiteene. Det trengs ikke mer enn litt tid du har å avse.","Bli medlem eller endre opplysningene dine":"Meld deg inn, betal kontingenten, eller gi beskjed om flytting, ny e-post eller utmelding.","Få din mening med i høringssvaret":"Har kommunen en sak på høring du mener noe om? Send oss innspillet ditt, så tar vi det med i velets svar.","Få hjelp av naboer, eller gi en hånd selv":"Trenger du en hånd med snømåking, handling eller skyss? Eller kan du stille opp for en nabo? Her møtes dere.","Meld fra om noe som bør fikses":"Sett du noe farlig i trafikken, eller noe ødelagt på lekeplassen eller elvestien? Gi oss beskjed."}}},"expect":["Få hjelp av naboer, eller gi en hånd selv"]} +{"id":"pensjonert-elektriker@/naboer","persona":"pensjonert-elektriker","need":"kan-hjelpe","page":"/naboer","state":{"body":"Pensjonert elektriker, har bil og god tid. Si fra om noen trenger skyss eller en hånd med småting."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Trenger du en hånd, eller kan du gi en?\". Which alternative do they choose?","criteria":{"Bli spurt når en nabo trenger en hånd":"Kan du stille opp med snømåking, en handletur eller skyss når en nabo trenger det? Meld deg, så blir du spurt når det passer.","Få en nabo til å stille opp":"Får du ikke til snømåking, en handletur eller skyss for tiden? Si fra, så finner vi en nabo som kan stille opp.","Lån ut eller lån av naboen":"Har du noe naboene kan få låne, eller trenger du å låne noe selv? Legg ut et oppslag så ser de andre på Tomter det."}}},"expect":["Bli spurt når en nabo trenger en hånd"]} diff --git a/runs/tomtervel-committees-2026-09-23/tasks-skim.jsonl b/runs/tomtervel-committees-2026-09-23/tasks-skim.jsonl new file mode 100644 index 0000000..88d7ab6 --- /dev/null +++ b/runs/tomtervel-committees-2026-09-23/tasks-skim.jsonl @@ -0,0 +1,38 @@ +{"id":"nyinnflyttet@/","persona":"nyinnflyttet","need":"bli-medlem","page":"/","state":{"body":"Vi flyttet til Tomter i mars og har hørt at det finnes et vel. Hvordan blir vi med, og hva koster det?"},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva gjelder det for deg?\". Which alternative do they choose?","criteria":{"Bli med og gjør en innsats":"Bli med og gjør en innsats","Bli medlem eller endre opplysningene dine":"Bli medlem eller endre opplysningene dine","Få din mening med i høringssvaret":"Få din mening med i høringssvaret","Få hjelp av naboer, eller gi en hånd selv":"Få hjelp av naboer, eller gi en hånd selv","Meld fra om noe som bør fikses":"Meld fra om noe som bør fikses"}}},"expect":["Bli medlem eller endre opplysningene dine"]} +{"id":"nyinnflyttet@/medlem","persona":"nyinnflyttet","need":"bli-medlem","page":"/medlem","state":{"body":"Vi flyttet til Tomter i mars og har hørt at det finnes et vel. Hvordan blir vi med, og hva koster det?"},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Vil du bli medlem, eller endre medlemskapet ditt?\". Which alternative do they choose?","criteria":{"Bli medlem av Tomter Vel":"Bli medlem av Tomter Vel","Oppdater eller avslutt medlemskapet":"Oppdater eller avslutt medlemskapet"}}},"expect":["Bli medlem av Tomter Vel"]} +{"id":"glemte-a-betale@/","persona":"glemte-a-betale","need":"bli-medlem","page":"/","state":{"body":"Jeg har vært medlem før men fikk ikke betalt i fjor. Kan jeg bare vippse, og til hvem?"},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva gjelder det for deg?\". Which alternative do they choose?","criteria":{"Bli med og gjør en innsats":"Bli med og gjør en innsats","Bli medlem eller endre opplysningene dine":"Bli medlem eller endre opplysningene dine","Få din mening med i høringssvaret":"Få din mening med i høringssvaret","Få hjelp av naboer, eller gi en hånd selv":"Få hjelp av naboer, eller gi en hånd selv","Meld fra om noe som bør fikses":"Meld fra om noe som bør fikses"}}},"expect":["Bli medlem eller endre opplysningene dine"]} +{"id":"glemte-a-betale@/medlem","persona":"glemte-a-betale","need":"bli-medlem","page":"/medlem","state":{"body":"Jeg har vært medlem før men fikk ikke betalt i fjor. Kan jeg bare vippse, og til hvem?"},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Vil du bli medlem, eller endre medlemskapet ditt?\". Which alternative do they choose?","criteria":{"Bli medlem av Tomter Vel":"Bli medlem av Tomter Vel","Oppdater eller avslutt medlemskapet":"Oppdater eller avslutt medlemskapet"}}},"expect":["Bli medlem av Tomter Vel"]} +{"id":"ny-epost@/","persona":"ny-epost","need":"endre-medlemskap","page":"/","state":{"body":"Vi har byttet e-postadresse og får ikke lenger noe fra dere."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva gjelder det for deg?\". Which alternative do they choose?","criteria":{"Bli med og gjør en innsats":"Bli med og gjør en innsats","Bli medlem eller endre opplysningene dine":"Bli medlem eller endre opplysningene dine","Få din mening med i høringssvaret":"Få din mening med i høringssvaret","Få hjelp av naboer, eller gi en hånd selv":"Få hjelp av naboer, eller gi en hånd selv","Meld fra om noe som bør fikses":"Meld fra om noe som bør fikses"}}},"expect":["Bli medlem eller endre opplysningene dine"]} +{"id":"ny-epost@/medlem","persona":"ny-epost","need":"endre-medlemskap","page":"/medlem","state":{"body":"Vi har byttet e-postadresse og får ikke lenger noe fra dere."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Vil du bli medlem, eller endre medlemskapet ditt?\". Which alternative do they choose?","criteria":{"Bli medlem av Tomter Vel":"Bli medlem av Tomter Vel","Oppdater eller avslutt medlemskapet":"Oppdater eller avslutt medlemskapet"}}},"expect":["Oppdater eller avslutt medlemskapet"]} +{"id":"flytter@/","persona":"flytter","need":"endre-medlemskap","page":"/","state":{"body":"Vi selger huset og flytter til Ski i august, så vi må ut av medlemslista."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva gjelder det for deg?\". Which alternative do they choose?","criteria":{"Bli med og gjør en innsats":"Bli med og gjør en innsats","Bli medlem eller endre opplysningene dine":"Bli medlem eller endre opplysningene dine","Få din mening med i høringssvaret":"Få din mening med i høringssvaret","Få hjelp av naboer, eller gi en hånd selv":"Få hjelp av naboer, eller gi en hånd selv","Meld fra om noe som bør fikses":"Meld fra om noe som bør fikses"}}},"expect":["Bli medlem eller endre opplysningene dine"]} +{"id":"flytter@/medlem","persona":"flytter","need":"endre-medlemskap","page":"/medlem","state":{"body":"Vi selger huset og flytter til Ski i august, så vi må ut av medlemslista."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Vil du bli medlem, eller endre medlemskapet ditt?\". Which alternative do they choose?","criteria":{"Bli medlem av Tomter Vel":"Bli medlem av Tomter Vel","Oppdater eller avslutt medlemskapet":"Oppdater eller avslutt medlemskapet"}}},"expect":["Oppdater eller avslutt medlemskapet"]} +{"id":"skolevei@/","persona":"skolevei","need":"trafikkfare","page":"/","state":{"body":"Bilene kjører altfor fort i svingen ved skolen om morgenen, og det er ikke fortau der ungene går."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva gjelder det for deg?\". Which alternative do they choose?","criteria":{"Bli med og gjør en innsats":"Bli med og gjør en innsats","Bli medlem eller endre opplysningene dine":"Bli medlem eller endre opplysningene dine","Få din mening med i høringssvaret":"Få din mening med i høringssvaret","Få hjelp av naboer, eller gi en hånd selv":"Få hjelp av naboer, eller gi en hånd selv","Meld fra om noe som bør fikses":"Meld fra om noe som bør fikses"}}},"expect":["Meld fra om noe som bør fikses"]} +{"id":"skolevei@/melde-fra","persona":"skolevei","need":"trafikkfare","page":"/melde-fra","state":{"body":"Bilene kjører altfor fort i svingen ved skolen om morgenen, og det er ikke fortau der ungene går."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva vil du melde fra om?\". Which alternative do they choose?","criteria":{"Meld fra om en trafikkfare":"Meld fra om en trafikkfare","Meld fra om noe ødelagt":"Meld fra om noe ødelagt"}}},"expect":["Meld fra om en trafikkfare"]} +{"id":"busslomme@/","persona":"busslomme","need":"trafikkfare","page":"/","state":{"body":"Det er umulig å se om det kommer noen når man skal ut fra busslomma ved butikken, hekken har blitt kjempehøy."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva gjelder det for deg?\". Which alternative do they choose?","criteria":{"Bli med og gjør en innsats":"Bli med og gjør en innsats","Bli medlem eller endre opplysningene dine":"Bli medlem eller endre opplysningene dine","Få din mening med i høringssvaret":"Få din mening med i høringssvaret","Få hjelp av naboer, eller gi en hånd selv":"Få hjelp av naboer, eller gi en hånd selv","Meld fra om noe som bør fikses":"Meld fra om noe som bør fikses"}}},"expect":["Meld fra om noe som bør fikses"]} +{"id":"busslomme@/melde-fra","persona":"busslomme","need":"trafikkfare","page":"/melde-fra","state":{"body":"Det er umulig å se om det kommer noen når man skal ut fra busslomma ved butikken, hekken har blitt kjempehøy."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva vil du melde fra om?\". Which alternative do they choose?","criteria":{"Meld fra om en trafikkfare":"Meld fra om en trafikkfare","Meld fra om noe ødelagt":"Meld fra om noe ødelagt"}}},"expect":["Meld fra om en trafikkfare"]} +{"id":"huske@/","persona":"huske","need":"anleggsfeil","page":"/","state":{"body":"Huska på lekeplassen henger i én kjetting. Sønnen min dro i den i går og den holdt så vidt."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva gjelder det for deg?\". Which alternative do they choose?","criteria":{"Bli med og gjør en innsats":"Bli med og gjør en innsats","Bli medlem eller endre opplysningene dine":"Bli medlem eller endre opplysningene dine","Få din mening med i høringssvaret":"Få din mening med i høringssvaret","Få hjelp av naboer, eller gi en hånd selv":"Få hjelp av naboer, eller gi en hånd selv","Meld fra om noe som bør fikses":"Meld fra om noe som bør fikses"}}},"expect":["Meld fra om noe som bør fikses"]} +{"id":"huske@/melde-fra","persona":"huske","need":"anleggsfeil","page":"/melde-fra","state":{"body":"Huska på lekeplassen henger i én kjetting. Sønnen min dro i den i går og den holdt så vidt."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva vil du melde fra om?\". Which alternative do they choose?","criteria":{"Meld fra om en trafikkfare":"Meld fra om en trafikkfare","Meld fra om noe ødelagt":"Meld fra om noe ødelagt"}}},"expect":["Meld fra om noe ødelagt"]} +{"id":"bru@/","persona":"bru","need":"anleggsfeil","page":"/","state":{"body":"Planken på den lille brua på stien langs elva er råtten, jeg gikk nesten gjennom."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva gjelder det for deg?\". Which alternative do they choose?","criteria":{"Bli med og gjør en innsats":"Bli med og gjør en innsats","Bli medlem eller endre opplysningene dine":"Bli medlem eller endre opplysningene dine","Få din mening med i høringssvaret":"Få din mening med i høringssvaret","Få hjelp av naboer, eller gi en hånd selv":"Få hjelp av naboer, eller gi en hånd selv","Meld fra om noe som bør fikses":"Meld fra om noe som bør fikses"}}},"expect":["Meld fra om noe som bør fikses"]} +{"id":"bru@/melde-fra","persona":"bru","need":"anleggsfeil","page":"/melde-fra","state":{"body":"Planken på den lille brua på stien langs elva er råtten, jeg gikk nesten gjennom."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva vil du melde fra om?\". Which alternative do they choose?","criteria":{"Meld fra om en trafikkfare":"Meld fra om en trafikkfare","Meld fra om noe ødelagt":"Meld fra om noe ødelagt"}}},"expect":["Meld fra om noe ødelagt"]} +{"id":"blokker@/","persona":"blokker","need":"horingsinnspill","page":"/","state":{"body":"Kommunen skal bygge blokker på jordet bak stasjonen, og jeg synes det er alt for høyt. Kan velet si ifra?"},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva gjelder det for deg?\". Which alternative do they choose?","criteria":{"Bli med og gjør en innsats":"Bli med og gjør en innsats","Bli medlem eller endre opplysningene dine":"Bli medlem eller endre opplysningene dine","Få din mening med i høringssvaret":"Få din mening med i høringssvaret","Få hjelp av naboer, eller gi en hånd selv":"Få hjelp av naboer, eller gi en hånd selv","Meld fra om noe som bør fikses":"Meld fra om noe som bør fikses"}}},"expect":["Få din mening med i høringssvaret"]} +{"id":"togtider@/","persona":"togtider","need":"horingsinnspill","page":"/","state":{"body":"Ruter vil kutte det tidlige toget. Jeg pendler til Oslo hver dag og vil at velet skriver til dem om det."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva gjelder det for deg?\". Which alternative do they choose?","criteria":{"Bli med og gjør en innsats":"Bli med og gjør en innsats","Bli medlem eller endre opplysningene dine":"Bli medlem eller endre opplysningene dine","Få din mening med i høringssvaret":"Få din mening med i høringssvaret","Få hjelp av naboer, eller gi en hånd selv":"Få hjelp av naboer, eller gi en hånd selv","Meld fra om noe som bør fikses":"Meld fra om noe som bør fikses"}}},"expect":["Få din mening med i høringssvaret"]} +{"id":"vafler@/","persona":"vafler","need":"hjelpe-til","page":"/","state":{"body":"Jeg kan steke vafler på 17. mai-frokosten hvis dere trenger folk."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva gjelder det for deg?\". Which alternative do they choose?","criteria":{"Bli med og gjør en innsats":"Bli med og gjør en innsats","Bli medlem eller endre opplysningene dine":"Bli medlem eller endre opplysningene dine","Få din mening med i høringssvaret":"Få din mening med i høringssvaret","Få hjelp av naboer, eller gi en hånd selv":"Få hjelp av naboer, eller gi en hånd selv","Meld fra om noe som bør fikses":"Meld fra om noe som bør fikses"}}},"expect":["Bli med og gjør en innsats"]} +{"id":"vafler@/bidra","persona":"vafler","need":"hjelpe-til","page":"/bidra","state":{"body":"Jeg kan steke vafler på 17. mai-frokosten hvis dere trenger folk."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Vil du hjelpe til i nabolaget?\". Which alternative do they choose?","criteria":{"Bli med på dugnad eller arrangement":"Bli med på dugnad eller arrangement","Sitt i en komité som betyr noe for deg":"Sitt i en komité som betyr noe for deg"}}},"expect":["Bli med på dugnad eller arrangement"]} +{"id":"motorsag@/","persona":"motorsag","need":"hjelpe-til","page":"/","state":{"body":"Har motorsag og ledig helg, kan ta trær langs elvestien hvis det er en dugnad."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva gjelder det for deg?\". Which alternative do they choose?","criteria":{"Bli med og gjør en innsats":"Bli med og gjør en innsats","Bli medlem eller endre opplysningene dine":"Bli medlem eller endre opplysningene dine","Få din mening med i høringssvaret":"Få din mening med i høringssvaret","Få hjelp av naboer, eller gi en hånd selv":"Få hjelp av naboer, eller gi en hånd selv","Meld fra om noe som bør fikses":"Meld fra om noe som bør fikses"}}},"expect":["Bli med og gjør en innsats"]} +{"id":"motorsag@/bidra","persona":"motorsag","need":"hjelpe-til","page":"/bidra","state":{"body":"Har motorsag og ledig helg, kan ta trær langs elvestien hvis det er en dugnad."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Vil du hjelpe til i nabolaget?\". Which alternative do they choose?","criteria":{"Bli med på dugnad eller arrangement":"Bli med på dugnad eller arrangement","Sitt i en komité som betyr noe for deg":"Sitt i en komité som betyr noe for deg"}}},"expect":["Bli med på dugnad eller arrangement"]} +{"id":"pendler@/","persona":"pendler","need":"komite","page":"/","state":{"body":"Jeg pendler og er lei av at ingen snakker med Ruter. Jeg vil gjerne være med i gjengen som jobber med det."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva gjelder det for deg?\". Which alternative do they choose?","criteria":{"Bli med og gjør en innsats":"Bli med og gjør en innsats","Bli medlem eller endre opplysningene dine":"Bli medlem eller endre opplysningene dine","Få din mening med i høringssvaret":"Få din mening med i høringssvaret","Få hjelp av naboer, eller gi en hånd selv":"Få hjelp av naboer, eller gi en hånd selv","Meld fra om noe som bør fikses":"Meld fra om noe som bør fikses"}}},"expect":["Bli med og gjør en innsats"]} +{"id":"pendler@/bidra","persona":"pendler","need":"komite","page":"/bidra","state":{"body":"Jeg pendler og er lei av at ingen snakker med Ruter. Jeg vil gjerne være med i gjengen som jobber med det."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Vil du hjelpe til i nabolaget?\". Which alternative do they choose?","criteria":{"Bli med på dugnad eller arrangement":"Bli med på dugnad eller arrangement","Sitt i en komité som betyr noe for deg":"Sitt i en komité som betyr noe for deg"}}},"expect":["Sitt i en komité som betyr noe for deg"]} +{"id":"planlegger@/","persona":"planlegger","need":"komite","page":"/","state":{"body":"Jeg er arealplanlegger av yrke og kunne bidratt når kommunen sender saker på høring."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva gjelder det for deg?\". Which alternative do they choose?","criteria":{"Bli med og gjør en innsats":"Bli med og gjør en innsats","Bli medlem eller endre opplysningene dine":"Bli medlem eller endre opplysningene dine","Få din mening med i høringssvaret":"Få din mening med i høringssvaret","Få hjelp av naboer, eller gi en hånd selv":"Få hjelp av naboer, eller gi en hånd selv","Meld fra om noe som bør fikses":"Meld fra om noe som bør fikses"}}},"expect":["Bli med og gjør en innsats"]} +{"id":"planlegger@/bidra","persona":"planlegger","need":"komite","page":"/bidra","state":{"body":"Jeg er arealplanlegger av yrke og kunne bidratt når kommunen sender saker på høring."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Vil du hjelpe til i nabolaget?\". Which alternative do they choose?","criteria":{"Bli med på dugnad eller arrangement":"Bli med på dugnad eller arrangement","Sitt i en komité som betyr noe for deg":"Sitt i en komité som betyr noe for deg"}}},"expect":["Sitt i en komité som betyr noe for deg"]} +{"id":"tilhenger@/","persona":"tilhenger","need":"dele-utstyr","page":"/","state":{"body":"Jeg har en tilhenger som står ubrukt mesteparten av året, naboer kan gjerne låne den for en hundrelapp."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva gjelder det for deg?\". Which alternative do they choose?","criteria":{"Bli med og gjør en innsats":"Bli med og gjør en innsats","Bli medlem eller endre opplysningene dine":"Bli medlem eller endre opplysningene dine","Få din mening med i høringssvaret":"Få din mening med i høringssvaret","Få hjelp av naboer, eller gi en hånd selv":"Få hjelp av naboer, eller gi en hånd selv","Meld fra om noe som bør fikses":"Meld fra om noe som bør fikses"}}},"expect":["Få hjelp av naboer, eller gi en hånd selv"]} +{"id":"tilhenger@/naboer","persona":"tilhenger","need":"dele-utstyr","page":"/naboer","state":{"body":"Jeg har en tilhenger som står ubrukt mesteparten av året, naboer kan gjerne låne den for en hundrelapp."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Trenger du en hånd, eller kan du gi en?\". Which alternative do they choose?","criteria":{"Bli spurt når en nabo trenger en hånd":"Bli spurt når en nabo trenger en hånd","Få en nabo til å stille opp":"Få en nabo til å stille opp","Lån ut eller lån av naboen":"Lån ut eller lån av naboen"}}},"expect":["Lån ut eller lån av naboen"]} +{"id":"stige@/","persona":"stige","need":"dele-utstyr","page":"/","state":{"body":"Trenger en lang stige en dag i helga for å rense takrenna, er det noen i nærheten som har?"},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva gjelder det for deg?\". Which alternative do they choose?","criteria":{"Bli med og gjør en innsats":"Bli med og gjør en innsats","Bli medlem eller endre opplysningene dine":"Bli medlem eller endre opplysningene dine","Få din mening med i høringssvaret":"Få din mening med i høringssvaret","Få hjelp av naboer, eller gi en hånd selv":"Få hjelp av naboer, eller gi en hånd selv","Meld fra om noe som bør fikses":"Meld fra om noe som bør fikses"}}},"expect":["Få hjelp av naboer, eller gi en hånd selv"]} +{"id":"stige@/naboer","persona":"stige","need":"dele-utstyr","page":"/naboer","state":{"body":"Trenger en lang stige en dag i helga for å rense takrenna, er det noen i nærheten som har?"},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Trenger du en hånd, eller kan du gi en?\". Which alternative do they choose?","criteria":{"Bli spurt når en nabo trenger en hånd":"Bli spurt når en nabo trenger en hånd","Få en nabo til å stille opp":"Få en nabo til å stille opp","Lån ut eller lån av naboen":"Lån ut eller lån av naboen"}}},"expect":["Lån ut eller lån av naboen"]} +{"id":"snomaking@/","persona":"snomaking","need":"trenger-hjelp","page":"/","state":{"body":"Jeg er 84 og klarer ikke å måke innkjørselen lenger. Er det noen som kan hjelpe meg når det snør?"},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva gjelder det for deg?\". Which alternative do they choose?","criteria":{"Bli med og gjør en innsats":"Bli med og gjør en innsats","Bli medlem eller endre opplysningene dine":"Bli medlem eller endre opplysningene dine","Få din mening med i høringssvaret":"Få din mening med i høringssvaret","Få hjelp av naboer, eller gi en hånd selv":"Få hjelp av naboer, eller gi en hånd selv","Meld fra om noe som bør fikses":"Meld fra om noe som bør fikses"}}},"expect":["Få hjelp av naboer, eller gi en hånd selv"]} +{"id":"snomaking@/naboer","persona":"snomaking","need":"trenger-hjelp","page":"/naboer","state":{"body":"Jeg er 84 og klarer ikke å måke innkjørselen lenger. Er det noen som kan hjelpe meg når det snør?"},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Trenger du en hånd, eller kan du gi en?\". Which alternative do they choose?","criteria":{"Bli spurt når en nabo trenger en hånd":"Bli spurt når en nabo trenger en hånd","Få en nabo til å stille opp":"Få en nabo til å stille opp","Lån ut eller lån av naboen":"Lån ut eller lån av naboen"}}},"expect":["Få en nabo til å stille opp"]} +{"id":"nyoperert@/","persona":"nyoperert","need":"trenger-hjelp","page":"/","state":{"body":"Jeg er nyoperert i hofta og kommer meg ikke til butikken på noen uker. Kunne noen handlet for meg?"},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva gjelder det for deg?\". Which alternative do they choose?","criteria":{"Bli med og gjør en innsats":"Bli med og gjør en innsats","Bli medlem eller endre opplysningene dine":"Bli medlem eller endre opplysningene dine","Få din mening med i høringssvaret":"Få din mening med i høringssvaret","Få hjelp av naboer, eller gi en hånd selv":"Få hjelp av naboer, eller gi en hånd selv","Meld fra om noe som bør fikses":"Meld fra om noe som bør fikses"}}},"expect":["Få hjelp av naboer, eller gi en hånd selv"]} +{"id":"nyoperert@/naboer","persona":"nyoperert","need":"trenger-hjelp","page":"/naboer","state":{"body":"Jeg er nyoperert i hofta og kommer meg ikke til butikken på noen uker. Kunne noen handlet for meg?"},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Trenger du en hånd, eller kan du gi en?\". Which alternative do they choose?","criteria":{"Bli spurt når en nabo trenger en hånd":"Bli spurt når en nabo trenger en hånd","Få en nabo til å stille opp":"Få en nabo til å stille opp","Lån ut eller lån av naboen":"Lån ut eller lån av naboen"}}},"expect":["Få en nabo til å stille opp"]} +{"id":"hjemmekontor@/","persona":"hjemmekontor","need":"kan-hjelpe","page":"/","state":{"body":"Jeg jobber hjemmefra og kan godt måke eller handle for noen som ikke får det til selv."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva gjelder det for deg?\". Which alternative do they choose?","criteria":{"Bli med og gjør en innsats":"Bli med og gjør en innsats","Bli medlem eller endre opplysningene dine":"Bli medlem eller endre opplysningene dine","Få din mening med i høringssvaret":"Få din mening med i høringssvaret","Få hjelp av naboer, eller gi en hånd selv":"Få hjelp av naboer, eller gi en hånd selv","Meld fra om noe som bør fikses":"Meld fra om noe som bør fikses"}}},"expect":["Få hjelp av naboer, eller gi en hånd selv"]} +{"id":"hjemmekontor@/naboer","persona":"hjemmekontor","need":"kan-hjelpe","page":"/naboer","state":{"body":"Jeg jobber hjemmefra og kan godt måke eller handle for noen som ikke får det til selv."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Trenger du en hånd, eller kan du gi en?\". Which alternative do they choose?","criteria":{"Bli spurt når en nabo trenger en hånd":"Bli spurt når en nabo trenger en hånd","Få en nabo til å stille opp":"Få en nabo til å stille opp","Lån ut eller lån av naboen":"Lån ut eller lån av naboen"}}},"expect":["Bli spurt når en nabo trenger en hånd"]} +{"id":"pensjonert-elektriker@/","persona":"pensjonert-elektriker","need":"kan-hjelpe","page":"/","state":{"body":"Pensjonert elektriker, har bil og god tid. Si fra om noen trenger skyss eller en hånd med småting."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva gjelder det for deg?\". Which alternative do they choose?","criteria":{"Bli med og gjør en innsats":"Bli med og gjør en innsats","Bli medlem eller endre opplysningene dine":"Bli medlem eller endre opplysningene dine","Få din mening med i høringssvaret":"Få din mening med i høringssvaret","Få hjelp av naboer, eller gi en hånd selv":"Få hjelp av naboer, eller gi en hånd selv","Meld fra om noe som bør fikses":"Meld fra om noe som bør fikses"}}},"expect":["Få hjelp av naboer, eller gi en hånd selv"]} +{"id":"pensjonert-elektriker@/naboer","persona":"pensjonert-elektriker","need":"kan-hjelpe","page":"/naboer","state":{"body":"Pensjonert elektriker, har bil og god tid. Si fra om noen trenger skyss eller en hånd med småting."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Trenger du en hånd, eller kan du gi en?\". Which alternative do they choose?","criteria":{"Bli spurt når en nabo trenger en hånd":"Bli spurt når en nabo trenger en hånd","Få en nabo til å stille opp":"Få en nabo til å stille opp","Lån ut eller lån av naboen":"Lån ut eller lån av naboen"}}},"expect":["Bli spurt når en nabo trenger en hånd"]} diff --git a/runs/tomtervel-nabohjelp-2026-09-22/aggregates.yaml b/runs/tomtervel-nabohjelp-2026-09-22/aggregates.yaml new file mode 100644 index 0000000..73a8eaa --- /dev/null +++ b/runs/tomtervel-nabohjelp-2026-09-22/aggregates.yaml @@ -0,0 +1,162 @@ +aggregates: +- bucket: anleggsfeil + initial: open + states: + open: + event: received + tatt_tak_i: + event: tatt_tak_i + utbedret: + event: utbedret + transitions: + open: + - tatt_tak_i + tatt_tak_i: + - utbedret +- bucket: frivillige + initial: open + states: + kontaktet: + event: kontaktet + open: + event: received + satt_opp: + event: satt_opp + takket_nei: + event: takket_nei + transitions: + kontaktet: + - satt_opp + - takket_nei + open: + - kontaktet + - takket_nei +- bucket: hjelpebehov + initial: open + states: + formidlet: + event: formidlet + ikke_lost: + event: ikke_lost + open: + event: received + ordnet: + event: ordnet + transitions: + formidlet: + - ordnet + - ikke_lost + open: + - formidlet + - ikke_lost +- bucket: hjelpere + initial: open + states: + open: + event: received + registrert: + event: registrert + trukket: + event: trukket + transitions: + open: + - registrert + - trukket +- bucket: husstander + initial: open + states: + betalt: + event: betalt + open: + event: received + utmeldt: + event: utmeldt + transitions: + open: + - betalt + - utmeldt +- bucket: innspill + initial: open + states: + ikke_tatt_med: + event: ikke_tatt_med + open: + event: received + tatt_med: + event: tatt_med + transitions: + open: + - tatt_med + - ikke_tatt_med +- bucket: komitesoknader + initial: open + states: + avslatt: + event: avslatt + open: + event: received + plassert: + event: plassert + transitions: + open: + - plassert + - avslatt +- bucket: medlemsendringer + initial: open + states: + open: + event: received + oppdatert: + event: oppdatert + transitions: + open: + - oppdatert +- bucket: oppslag + initial: open + states: + lagt_ut: + event: lagt_ut + open: + event: received + tatt_ned: + event: tatt_ned + transitions: + open: + - lagt_ut + - tatt_ned +- bucket: trafikkmeldinger + initial: open + states: + avvist: + event: avvist + open: + event: received + ordnet: + event: ordnet + tatt_opp: + event: tatt_opp + transitions: + open: + - tatt_opp + - avvist + tatt_opp: + - ordnet + - avvist +- bucket: utlegg + initial: open + states: + avvist: + event: avvist + godkjent: + event: godkjent + open: + event: received + utbetalt: + event: utbetalt + transitions: + godkjent: + - utbetalt + - avvist + open: + - godkjent + - avvist diff --git a/runs/tomtervel-nabohjelp-2026-09-22/answers-full.jsonl b/runs/tomtervel-nabohjelp-2026-09-22/answers-full.jsonl new file mode 100644 index 0000000..5941c87 --- /dev/null +++ b/runs/tomtervel-nabohjelp-2026-09-22/answers-full.jsonl @@ -0,0 +1,40 @@ +{"choice":"Vil du bli medlem eller endre medlemskapet?","confidence":0.95,"id":"nyinnflyttet@/"} +{"choice":"Meld deg inn i Tomter Vel","confidence":0.95,"id":"nyinnflyttet@/medlem"} +{"choice":"Vil du bli medlem eller endre medlemskapet?","confidence":0.95,"id":"glemte-a-betale@/"} +{"choice":"Meld deg inn i Tomter Vel","confidence":0.95,"id":"glemte-a-betale@/medlem"} +{"choice":"Vil du hjelpe eller få hjelp av naboer?","confidence":0.95,"id":"ny-epost@/"} +{"choice":"Oppdater opplysningene dine","confidence":0.95,"id":"ny-epost@/medlem"} +{"choice":"Vil du bli medlem eller endre medlemskapet?","confidence":0.95,"id":"flytter@/"} +{"choice":"Oppdater opplysningene dine","confidence":0.95,"id":"flytter@/medlem"} +{"choice":"Har du sett noe som bør fikses?","confidence":0.95,"id":"skolevei@/"} +{"choice":"Få gjort noe med en farlig vei","confidence":0.95,"id":"skolevei@/melde-fra"} +{"choice":"Har du sett noe som bør fikses?","confidence":0.85,"id":"busslomme@/"} +{"choice":"Få gjort noe med en farlig vei","confidence":0.95,"id":"busslomme@/melde-fra"} +{"choice":"Har du sett noe som bør fikses?","confidence":0.95,"id":"huske@/"} +{"choice":"Få fikset det som er ødelagt","confidence":0.95,"id":"huske@/melde-fra"} +{"choice":"Har du sett noe som bør fikses?","confidence":0.95,"id":"bru@/"} +{"choice":"Få gjort noe med en farlig vei","confidence":0.95,"id":"bru@/melde-fra"} +{"choice":"Har du sett noe som bør fikses?","confidence":0.95,"id":"blokker@/"} +{"choice":"Få din mening med i velets høringssvar","confidence":0.95,"id":"blokker@/bidra"} +{"choice":"Vil du bidra eller si din mening?","confidence":0.85,"id":"togtider@/"} +{"choice":"Få din mening med i velets høringssvar","confidence":0.95,"id":"togtider@/bidra"} +{"choice":"Vil du hjelpe eller få hjelp av naboer?","confidence":0.95,"id":"vafler@/"} +{"choice":"Gi en hånd på neste arrangement eller dugnad","confidence":0.95,"id":"vafler@/bidra"} +{"choice":"Har du sett noe som bør fikses?","confidence":0.95,"id":"motorsag@/"} +{"choice":"Gi en hånd på neste arrangement eller dugnad","confidence":0.95,"id":"motorsag@/bidra"} +{"choice":"Vil du bidra eller si din mening?","confidence":0.95,"id":"pendler@/"} +{"choice":"Få en plass i komiteen som passer deg","confidence":0.95,"id":"pendler@/bidra"} +{"choice":"Vil du bidra eller si din mening?","confidence":0.95,"id":"planlegger@/"} +{"choice":"Få din mening med i velets høringssvar","confidence":0.95,"id":"planlegger@/bidra"} +{"choice":"Vil du hjelpe eller få hjelp av naboer?","confidence":0.95,"id":"tilhenger@/"} +{"choice":"Del utstyr med naboene","confidence":0.95,"id":"tilhenger@/naboer"} +{"choice":"Vil du hjelpe eller få hjelp av naboer?","confidence":0.95,"id":"stige@/"} +{"choice":"Få en nabo til å stille opp","confidence":0.95,"id":"stige@/naboer"} +{"choice":"Har du sett noe som bør fikses?","confidence":0.85,"id":"snomaking@/"} +{"choice":"Få en nabo til å stille opp","confidence":0.95,"id":"snomaking@/naboer"} +{"choice":"Vil du hjelpe eller få hjelp av naboer?","confidence":0.95,"id":"nyoperert@/"} +{"choice":"Få en nabo til å stille opp","confidence":0.95,"id":"nyoperert@/naboer"} +{"choice":"Vil du hjelpe eller få hjelp av naboer?","confidence":0.95,"id":"hjemmekontor@/"} +{"choice":"Få en nabo til å stille opp","confidence":1.0,"id":"hjemmekontor@/naboer"} +{"choice":"Vil du hjelpe eller få hjelp av naboer?","confidence":0.95,"id":"pensjonert-elektriker@/"} +{"choice":"Få en nabo til å stille opp","confidence":0.95,"id":"pensjonert-elektriker@/naboer"} diff --git a/runs/tomtervel-nabohjelp-2026-09-22/answers-skim.jsonl b/runs/tomtervel-nabohjelp-2026-09-22/answers-skim.jsonl new file mode 100644 index 0000000..d5738c6 --- /dev/null +++ b/runs/tomtervel-nabohjelp-2026-09-22/answers-skim.jsonl @@ -0,0 +1,40 @@ +{"choice":"Vil du bli medlem eller endre medlemskapet?","confidence":0.95,"id":"nyinnflyttet@/"} +{"choice":"Meld deg inn i Tomter Vel","confidence":0.95,"id":"nyinnflyttet@/medlem"} +{"choice":"Vil du bli medlem eller endre medlemskapet?","confidence":0.95,"id":"glemte-a-betale@/"} +{"choice":"Meld deg inn i Tomter Vel","confidence":0.95,"id":"glemte-a-betale@/medlem"} +{"choice":"Har du sett noe som bør fikses?","confidence":0.95,"id":"ny-epost@/"} +{"choice":"Oppdater opplysningene dine","confidence":0.95,"id":"ny-epost@/medlem"} +{"choice":"Vil du bli medlem eller endre medlemskapet?","confidence":1.0,"id":"flytter@/"} +{"choice":"Oppdater opplysningene dine","confidence":0.95,"id":"flytter@/medlem"} +{"choice":"Har du sett noe som bør fikses?","confidence":0.95,"id":"skolevei@/"} +{"choice":"Få gjort noe med en farlig vei","confidence":0.95,"id":"skolevei@/melde-fra"} +{"choice":"Har du sett noe som bør fikses?","confidence":0.95,"id":"busslomme@/"} +{"choice":"Få fikset det som er ødelagt","confidence":0.85,"id":"busslomme@/melde-fra"} +{"choice":"Har du sett noe som bør fikses?","confidence":0.95,"id":"huske@/"} +{"choice":"Få gjort noe med en farlig vei","confidence":0.95,"id":"huske@/melde-fra"} +{"choice":"Vil du bidra eller si din mening?","confidence":0.95,"id":"bru@/"} +{"choice":"Få gjort noe med en farlig vei","confidence":0.95,"id":"bru@/melde-fra"} +{"choice":"Har du sett noe som bør fikses?","confidence":0.95,"id":"blokker@/"} +{"choice":"Få din mening med i velets høringssvar","confidence":0.95,"id":"blokker@/bidra"} +{"choice":"Vil du bidra eller si din mening?","confidence":0.95,"id":"togtider@/"} +{"choice":"Få din mening med i velets høringssvar","confidence":0.95,"id":"togtider@/bidra"} +{"choice":"Vil du bli medlem eller endre medlemskapet?","confidence":0.95,"id":"vafler@/"} +{"choice":"Gi en hånd på neste arrangement eller dugnad","confidence":0.95,"id":"vafler@/bidra"} +{"choice":"Har du sett noe som bør fikses?","confidence":0.95,"id":"motorsag@/"} +{"choice":"Gi en hånd på neste arrangement eller dugnad","confidence":0.95,"id":"motorsag@/bidra"} +{"choice":"Vil du bidra eller si din mening?","confidence":0.95,"id":"pendler@/"} +{"choice":"Få en plass i komiteen som passer deg","confidence":0.95,"id":"pendler@/bidra"} +{"choice":"Vil du bidra eller si din mening?","confidence":0.95,"id":"planlegger@/"} +{"choice":"Få din mening med i velets høringssvar","confidence":0.95,"id":"planlegger@/bidra"} +{"choice":"Vil du hjelpe eller få hjelp av naboer?","confidence":0.95,"id":"tilhenger@/"} +{"choice":"Bli en nabo andre kan spørre","confidence":0.95,"id":"tilhenger@/naboer"} +{"choice":"Vil du hjelpe eller få hjelp av naboer?","confidence":0.95,"id":"stige@/"} +{"choice":"Bli en nabo andre kan spørre","confidence":0.95,"id":"stige@/naboer"} +{"choice":"Vil du hjelpe eller få hjelp av naboer?","confidence":0.95,"id":"snomaking@/"} +{"choice":"Bli en nabo andre kan spørre","confidence":0.95,"id":"snomaking@/naboer"} +{"choice":"Vil du hjelpe eller få hjelp av naboer?","confidence":0.95,"id":"nyoperert@/"} +{"choice":"Få en nabo til å stille opp","confidence":0.95,"id":"nyoperert@/naboer"} +{"choice":"Vil du hjelpe eller få hjelp av naboer?","confidence":0.95,"id":"hjemmekontor@/"} +{"choice":"Bli en nabo andre kan spørre","confidence":0.95,"id":"hjemmekontor@/naboer"} +{"choice":"Vil du hjelpe eller få hjelp av naboer?","confidence":0.95,"id":"pensjonert-elektriker@/"} +{"choice":"Bli en nabo andre kan spørre","confidence":0.95,"id":"pensjonert-elektriker@/naboer"} diff --git a/runs/tomtervel-nabohjelp-2026-09-22/build.log b/runs/tomtervel-nabohjelp-2026-09-22/build.log new file mode 100644 index 0000000..89191ba --- /dev/null +++ b/runs/tomtervel-nabohjelp-2026-09-22/build.log @@ -0,0 +1,41 @@ +words: questions/arrangementskomite/index.yaml +words: questions/bidra/index.yaml +words: questions/decide/dele-utstyr.yaml +words: questions/decide/kan-hjelpe.yaml +words: questions/decide/trenger-hjelp.yaml +words: questions/index.yaml +words: questions/kasserer/index.yaml +words: questions/komiteer/index.yaml +words: questions/komiteer/utlegg-sent.yaml +words: questions/komiteer/utlegg.yaml +words: questions/lekeplasskomite/index.yaml +words: questions/medlem/index.yaml +words: questions/melde-fra/index.yaml +words: questions/naboer/index.yaml +words: questions/nabohjelp/index.yaml +words: questions/received/anleggsfeil.yaml +words: questions/received/bli-medlem.yaml +words: questions/received/dele-utstyr.yaml +words: questions/received/endre-medlemskap.yaml +words: questions/received/hjelpe-til.yaml +words: questions/received/horingsinnspill.yaml +words: questions/received/kan-hjelpe.yaml +words: questions/received/komite.yaml +words: questions/received/trafikkfare.yaml +words: questions/received/trenger-hjelp.yaml +words: questions/styret/index.yaml +words: questions/trafikkomite/index.yaml +content repo written to runs/tomtervel-nabohjelp-2026-09-22 +OK: 27 question(s), 12 aggregate(s) valid +need "bli-medlem": / [Vil du bli medlem eller endre medlemskapet?] -> /medlem [Meld deg inn i Tomter Vel] -> "husstander" +need "endre-medlemskap": / [Vil du bli medlem eller endre medlemskapet?] -> /medlem [Oppdater opplysningene dine] -> "medlemsendringer" +need "trafikkfare": / [Har du sett noe som bør fikses?] -> /melde-fra [Få gjort noe med en farlig vei] -> "trafikkmeldinger" +need "anleggsfeil": / [Har du sett noe som bør fikses?] -> /melde-fra [Få fikset det som er ødelagt] -> "anleggsfeil" +need "horingsinnspill": / [Vil du bidra eller si din mening?] -> /bidra [Få din mening med i velets høringssvar] -> "innspill" +need "hjelpe-til": / [Vil du bidra eller si din mening?] -> /bidra [Gi en hånd på neste arrangement eller dugnad] -> "frivillige" +need "komite": / [Vil du bidra eller si din mening?] -> /bidra [Få en plass i komiteen som passer deg] -> "komitesoknader" +need "trenger-hjelp": / [Vil du hjelpe eller få hjelp av naboer?] -> /naboer [Få en nabo til å stille opp] -> "hjelpebehov" +need "kan-hjelpe": / [Vil du hjelpe eller få hjelp av naboer?] -> /naboer [Bli en nabo andre kan spørre] -> "hjelpere" +need "dele-utstyr": / [Vil du hjelpe eller få hjelp av naboer?] -> /naboer [Del utstyr med naboene] -> "oppslag" +need "utlegg": /komiteer/utlegg [Få tilbake det du har lagt ut for] -> "utlegg" +OK: 11 need(s) structurally met, 0 planned, 21 persona(s) diff --git a/runs/tomtervel-nabohjelp-2026-09-22/kanidm-client.sh b/runs/tomtervel-nabohjelp-2026-09-22/kanidm-client.sh new file mode 100755 index 0000000..edea365 --- /dev/null +++ b/runs/tomtervel-nabohjelp-2026-09-22/kanidm-client.sh @@ -0,0 +1,53 @@ +#!/bin/sh +# The Kanidm side of vel.klingenbergbygg.no: one OAuth2 client and one +# group per desk, each group mapped into the `groups` claim under the +# name the content uses in `qualifies`. Portal reads that claim at +# login (portal src/auth.rs) and gates each group's directory on it. +# +# Needs an admin session first, from a terminal: +# +# kanidm login -D idm_admin -H https://id.klingenbergbygg.no +# +# then: +# +# sh runs/tomtervel-nabohjelp-2026-09-22/kanidm-client.sh +# +# The client secret it prints at the end goes into /etc/app/tomtervel-portal.env +# on kasse together with KANIDM_URL and OAUTH2_CLIENT_ID, then +# `sudo systemctl restart app@tomtervel-portal`. +set -eu +K="kanidm -D idm_admin -H https://id.klingenbergbygg.no" +C=tomtervel-portal + +# Every create skips what is already there, so the script can be rerun. +# `get` exits 0 whether or not the item exists, so the output is read. +has_client() { $K system oauth2 get "$1" 2>/dev/null | grep -q '^name:'; } +has_group() { $K group get "$1" 2>/dev/null | grep -q '^name:'; } +has_client $C || $K system oauth2 create $C "Tomter Vel" https://vel.klingenbergbygg.no +$K system oauth2 add-redirect-url $C https://vel.klingenbergbygg.no/auth/callback || true + +# One Kanidm group per desk, created before anything refers to them. +has_group tomtervel_members || $K group create tomtervel_members +for g in kasserer styret komiteer nabohjelp arrangementer elvesti horingsinstans lekeplasser miljogate pendlerforhold trafikk; do + has_group tomtervel_$g || $K group create tomtervel_$g + $K group add-members tomtervel_members tomtervel_$g +done + +# Portal asks for openid, profile and email (portal src/server/oidc.rs); +# the groups come through the claim map, not a scope. +$K system oauth2 update-scope-map $C tomtervel_members openid profile email + +# The claim value is the plain name the pages use in `qualifies`. +for g in kasserer styret komiteer nabohjelp arrangementer elvesti horingsinstans lekeplasser miljogate pendlerforhold trafikk; do + $K system oauth2 update-claim-map $C groups tomtervel_$g $g +done +$K system oauth2 update-claim-map-join $C groups array + +# Each desk group is a member of tomtervel_members, and Kanidm resolves +# membership transitively, so a person only needs their desk group: +# kanidm -D idm_admin -H https://id.klingenbergbygg.no group add-members tomtervel_kasserer + +echo "--- client ---" +$K system oauth2 get $C +echo "--- secret (put in OAUTH2_CLIENT_SECRET on kasse) ---" +$K system oauth2 show-basic-secret $C diff --git a/runs/tomtervel-nabohjelp-2026-09-22/kasse-instance.sh b/runs/tomtervel-nabohjelp-2026-09-22/kasse-instance.sh new file mode 100755 index 0000000..9260972 --- /dev/null +++ b/runs/tomtervel-nabohjelp-2026-09-22/kasse-instance.sh @@ -0,0 +1,34 @@ +#!/bin/sh +# Bring up app@tomtervel-portal on kasse, serving vel.klingenbergbygg.no +# from tomtervel/questions. Run from this machine as: +# +# ssh kasse sh -s < runs/tomtervel-nabohjelp-2026-09-22/kasse-instance.sh +# +# Mirrors how westra-portal is set up on the host (2026-09-22): the same +# v0.3.36 release, an env file under /etc/app, a Caddy site file under +# /etc/caddy/conf.d, the app@ template unit. Port 3050 (westra 3030, +# klingenberg 3040). Login is left out until the Kanidm client exists; +# add KANIDM_URL, OAUTH2_CLIENT_ID and OAUTH2_CLIENT_SECRET to the env +# file then and restart the unit (see kanidm-client.sh beside this). +set -eu +I=tomtervel-portal; V=v0.3.36 + +sudo mkdir -p /srv/app/$I/releases +[ -d /srv/app/$I/releases/$V ] || sudo cp -a /srv/app/westra-portal/releases/$V /srv/app/$I/releases/ +sudo rm -f /srv/app/$I/releases/$V/westra-portal +sudo ln -sfn portal /srv/app/$I/releases/$V/$I +sudo ln -sfn /srv/app/$I/releases/$V /srv/app/$I/current + +# Env: westra's minus its instance and client lines, plus ours. +sudo sh -c "grep -vE '^(LEPTOS_SITE_ADDR|CONTENT_REPO|PUBLIC_URL|KANIDM_URL|OAUTH2_CLIENT_ID|OAUTH2_CLIENT_SECRET)=' /etc/app/westra-portal.env > /etc/app/$I.env" +sudo sh -c "printf 'LEPTOS_SITE_ADDR=127.0.0.1:3050\nCONTENT_REPO=https://prosjekt.klingenbergbygg.no/tomtervel/questions\nPUBLIC_URL=https://vel.klingenbergbygg.no\n' >> /etc/app/$I.env" +sudo chmod --reference=/etc/app/westra-portal.env /etc/app/$I.env +echo "env keys: $(sudo sed 's/=.*//' /etc/app/$I.env | tr '\n' ' ')" + +sudo sh -c "printf 'vel.klingenbergbygg.no {\n\treverse_proxy 127.0.0.1:3050\n}\n' > /etc/caddy/conf.d/vel.klingenbergbygg.no" +sudo systemctl reload caddy && echo "caddy reloaded" + +sudo systemctl enable --now app@$I.service +sleep 5 +echo "app@$I: $(systemctl is-active app@$I.service)" +sudo journalctl -u app@$I.service --no-pager -n 15 -o cat | cut -c1-160 diff --git a/runs/tomtervel-nabohjelp-2026-09-22/kasse-login.sh b/runs/tomtervel-nabohjelp-2026-09-22/kasse-login.sh new file mode 100755 index 0000000..c84f1f2 --- /dev/null +++ b/runs/tomtervel-nabohjelp-2026-09-22/kasse-login.sh @@ -0,0 +1,23 @@ +#!/bin/sh +# Add the Kanidm client to app@tomtervel-portal on kasse and restart it. +# The secret is the script's one argument. From this machine, in fish: +# +# ssh kasse sh -s (kanidm -D idm_admin -H https://id.klingenbergbygg.no system oauth2 show-basic-secret tomtervel-portal 2>/dev/null) < runs/tomtervel-nabohjelp-2026-09-22/kasse-login.sh +# +# (in bash: `ssh kasse sh -s "$(kanidm ... show-basic-secret tomtervel-portal 2>/dev/null)" < ...`). +# Run kasse-instance.sh first; this refuses to run before it. +set -eu +I=tomtervel-portal +[ -n "${1:-}" ] || { echo "no secret given as argument"; exit 1; } +[ -f /etc/app/$I.env ] || { echo "/etc/app/$I.env is missing: run kasse-instance.sh first"; exit 1; } +if sudo grep -q '^OAUTH2_CLIENT_ID=' /etc/app/$I.env; then + echo "client already in /etc/app/$I.env; replacing the secret" + sudo sed -i '/^OAUTH2_CLIENT_SECRET=/d' /etc/app/$I.env +else + sudo sh -c "printf 'KANIDM_URL=https://id.klingenbergbygg.no\nOAUTH2_CLIENT_ID=$I\n' >> /etc/app/$I.env" +fi +sudo sh -c "printf 'OAUTH2_CLIENT_SECRET=%s\n' '$1' >> /etc/app/$I.env" +sudo systemctl restart app@$I.service +sleep 4 +echo "app@$I: $(systemctl is-active app@$I.service)" +sudo journalctl -u app@$I.service --no-pager -n 8 -o cat | cut -c1-160 diff --git a/runs/tomtervel-nabohjelp-2026-09-22/llm/01-questions_arrangementskomite_index.yaml.md b/runs/tomtervel-nabohjelp-2026-09-22/llm/01-questions_arrangementskomite_index.yaml.md new file mode 100644 index 0000000..00e95ef --- /dev/null +++ b/runs/tomtervel-nabohjelp-2026-09-22/llm/01-questions_arrangementskomite_index.yaml.md @@ -0,0 +1,78 @@ +You write the words for one page of a website for this business. + +Business: Tomter Vel +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. +Contact: Styret i Tomter Vel +Language to write in: nb + +Everyone the site serves: +- door medlem: for en husstand i Tomter som vil være med i velet, eller allerede er det; behind it: bli-medlem, endre-medlemskap +- door melde-fra: for noen som har sett noe i nabolaget som ikke er som det skal; behind it: trafikkfare, anleggsfeil +- door bidra: for noen som vil gjøre en innsats, eller si sin mening i en sak; behind it: horingsinnspill, hjelpe-til, komite +- door naboer: for en nabo som trenger en hånd, kan gi en, eller har noe å låne ut; behind it: trenger-hjelp, kan-hjelpe, dele-utstyr +- bli-medlem: en husstand i Tomter - wants: å bli medlem og få betalt kontingenten. Handled by kasserer. Stages: open -> betalt -> utmeldt. +- endre-medlemskap: et medlem som har flyttet, byttet e-post eller vil melde seg ut - wants: at velet har riktige opplysninger om dem. Handled by kasserer. Stages: open -> oppdatert. +- trafikkfare: en som har sett et farlig sted i trafikken - wants: at velet tar det opp med kommunen eller den som eier veien. Handled by trafikkomite. Stages: open -> tatt_opp -> ordnet -> avvist. +- anleggsfeil: en som ser at noe på lekeplassen eller stien er ødelagt - wants: at det blir fikset før noen skader seg. Handled by lekeplasskomite. Stages: open -> tatt_tak_i -> utbedret. +- horingsinnspill: en beboer som har en mening om en sak kommunen har på høring - wants: at velet tar det med i sitt svar. Handled by styret. Stages: open -> tatt_med -> ikke_tatt_med. +- hjelpe-til: en som vil hjelpe til på et arrangement eller en dugnad - wants: å bli satt opp på noe som passer dem. Handled by arrangementskomite. Stages: open -> kontaktet -> satt_opp -> takket_nei. +- komite: en som vil sitte i en komité - wants: en plass i den komiteen som driver med det de bryr seg om. Handled by styret. Stages: open -> plassert -> avslatt. +- trenger-hjelp: 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. Handled by nabohjelp. Stages: open -> formidlet -> ordnet -> ikke_lost. +- kan-hjelpe: en nabo som kan stille opp når noen trenger det - wants: å bli spurt når det passer. Handled by nabohjelp. Stages: open -> registrert -> trukket. +- dele-utstyr: en nabo som har noe å låne ut, eller trenger å låne noe - wants: et oppslag som naboene ser. Handled by styret. Stages: open -> lagt_ut -> tatt_ned. +- utlegg: en i en komité som har lagt ut for noe - wants: pengene tilbake. Handled by kasserer. Stages: open -> godkjent -> utbetalt -> avvist. + +The page: questions/arrangementskomite/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": { + "frivillige": { + "description": "", + "heading": "", + "moves": { + "kontaktet->satt_opp": "satt_opp>", + "kontaktet->takket_nei": "takket_nei>", + "open->kontaktet": "kontaktet>", + "open->takket_nei": "takket_nei>" + } + } + }, + "confirm": "", + "description": "", + "links": {}, + "question": "" +} + +Reply with the JSON object only. + +=== REPLY === +```json +{ + "buckets": { + "frivillige": { + "description": "Her ser du hvem som har sagt de vil hjelpe til, og hva de er satt opp på.", + "heading": "Frivillige til arrangementer og dugnad", + "moves": { + "kontaktet->satt_opp": "Sett på oppgave", + "kontaktet->takket_nei": "Takket nei", + "open->kontaktet": "Har tatt kontakt", + "open->takket_nei": "Takket nei" + } + } + }, + "confirm": "Lagre", + "description": "Oversikt over frivillige som vil hjelpe til, så du kan sette dem opp på noe som passer.", + "links": {}, + "question": "Hvem kan hjelpe til, og hva skal de gjøre?" +} +``` diff --git a/runs/tomtervel-nabohjelp-2026-09-22/llm/02-questions_bidra_index.yaml.md b/runs/tomtervel-nabohjelp-2026-09-22/llm/02-questions_bidra_index.yaml.md new file mode 100644 index 0000000..16635c9 --- /dev/null +++ b/runs/tomtervel-nabohjelp-2026-09-22/llm/02-questions_bidra_index.yaml.md @@ -0,0 +1,118 @@ +You write the words for one page of a website for this business. + +Business: Tomter Vel +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. +Contact: Styret i Tomter Vel +Language to write in: nb + +Everyone the site serves: +- door medlem: for en husstand i Tomter som vil være med i velet, eller allerede er det; behind it: bli-medlem, endre-medlemskap +- door melde-fra: for noen som har sett noe i nabolaget som ikke er som det skal; behind it: trafikkfare, anleggsfeil +- door bidra: for noen som vil gjøre en innsats, eller si sin mening i en sak; behind it: horingsinnspill, hjelpe-til, komite +- door naboer: for en nabo som trenger en hånd, kan gi en, eller har noe å låne ut; behind it: trenger-hjelp, kan-hjelpe, dele-utstyr +- bli-medlem: en husstand i Tomter - wants: å bli medlem og få betalt kontingenten. Handled by kasserer. Stages: open -> betalt -> utmeldt. +- endre-medlemskap: et medlem som har flyttet, byttet e-post eller vil melde seg ut - wants: at velet har riktige opplysninger om dem. Handled by kasserer. Stages: open -> oppdatert. +- trafikkfare: en som har sett et farlig sted i trafikken - wants: at velet tar det opp med kommunen eller den som eier veien. Handled by trafikkomite. Stages: open -> tatt_opp -> ordnet -> avvist. +- anleggsfeil: en som ser at noe på lekeplassen eller stien er ødelagt - wants: at det blir fikset før noen skader seg. Handled by lekeplasskomite. Stages: open -> tatt_tak_i -> utbedret. +- horingsinnspill: en beboer som har en mening om en sak kommunen har på høring - wants: at velet tar det med i sitt svar. Handled by styret. Stages: open -> tatt_med -> ikke_tatt_med. +- hjelpe-til: en som vil hjelpe til på et arrangement eller en dugnad - wants: å bli satt opp på noe som passer dem. Handled by arrangementskomite. Stages: open -> kontaktet -> satt_opp -> takket_nei. +- komite: en som vil sitte i en komité - wants: en plass i den komiteen som driver med det de bryr seg om. Handled by styret. Stages: open -> plassert -> avslatt. +- trenger-hjelp: 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. Handled by nabohjelp. Stages: open -> formidlet -> ordnet -> ikke_lost. +- kan-hjelpe: en nabo som kan stille opp når noen trenger det - wants: å bli spurt når det passer. Handled by nabohjelp. Stages: open -> registrert -> trukket. +- dele-utstyr: en nabo som har noe å låne ut, eller trenger å låne noe - wants: et oppslag som naboene ser. Handled by styret. Stages: open -> lagt_ut -> tatt_ned. +- utlegg: en i en komité som har lagt ut for noe - wants: pengene tilbake. Handled by kasserer. Stages: open -> godkjent -> utbetalt -> avvist. + +The page: questions/bidra/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": "", + "needs": { + "hjelpe-til": { + "button": "", + "description": "", + "form_title": "", + "heading": "", + "labels": { + "hva": "", + "navn": "", + "telefon": "" + } + }, + "horingsinnspill": { + "button": "", + "description": "", + "form_title": "", + "heading": "", + "labels": { + "innspill": "", + "navn": "", + "sak": "" + } + }, + "komite": { + "button": "", + "description": "", + "form_title": "", + "heading": "", + "labels": { + "epost": "", + "komite": "", + "navn": "" + } + } + }, + "question": "" +} + +Reply with the JSON object only. + +=== REPLY === +{ + "description": "Vil du bidra med noe for Tomter? Her finner du veien inn, enten det er en dugnadsøkt, en mening om en høringssak eller en plass i en komité.", + "needs": { + "hjelpe-til": { + "button": "Meld meg på", + "description": "Sett av litt tid på et arrangement eller en dugnad. Vi finner noe som passer deg.", + "form_title": "Bli med å hjelpe", + "heading": "Gi en hånd på neste arrangement eller dugnad", + "labels": { + "hva": "Hva kan du tenke deg å hjelpe til med?", + "navn": "Navn", + "telefon": "Telefon" + } + }, + "horingsinnspill": { + "button": "Send innspill", + "description": "Har kommunen en sak på høring du mener noe om? Send oss innspillet, så tar vi det med i velets svar.", + "form_title": "Send et høringsinnspill", + "heading": "Få din mening med i velets høringssvar", + "labels": { + "innspill": "Hva mener du?", + "navn": "Navn", + "sak": "Hvilken sak gjelder det?" + } + }, + "komite": { + "button": "Meld interesse", + "description": "Vi er sju komiteer som trenger folk. Si hvilken som passer deg, så tar vi kontakt.", + "form_title": "Bli med i en komité", + "heading": "Få en plass i komiteen som passer deg", + "labels": { + "epost": "E-post", + "komite": "Hvilken komité har du lyst til å bli med i?", + "navn": "Navn" + } + } + }, + "question": "Hva har du lyst til å bidra med?" +} diff --git a/runs/tomtervel-nabohjelp-2026-09-22/llm/03-questions_decide_dele-utstyr.yaml.md b/runs/tomtervel-nabohjelp-2026-09-22/llm/03-questions_decide_dele-utstyr.yaml.md new file mode 100644 index 0000000..34bff5f --- /dev/null +++ b/runs/tomtervel-nabohjelp-2026-09-22/llm/03-questions_decide_dele-utstyr.yaml.md @@ -0,0 +1,64 @@ +You write the words for one page of a website for this business. + +Business: Tomter Vel +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. +Contact: Styret i Tomter Vel +Language to write in: nb + +Everyone the site serves: +- door medlem: for en husstand i Tomter som vil være med i velet, eller allerede er det; behind it: bli-medlem, endre-medlemskap +- door melde-fra: for noen som har sett noe i nabolaget som ikke er som det skal; behind it: trafikkfare, anleggsfeil +- door bidra: for noen som vil gjøre en innsats, eller si sin mening i en sak; behind it: horingsinnspill, hjelpe-til, komite +- door naboer: for en nabo som trenger en hånd, kan gi en, eller har noe å låne ut; behind it: trenger-hjelp, kan-hjelpe, dele-utstyr +- bli-medlem: en husstand i Tomter - wants: å bli medlem og få betalt kontingenten. Handled by kasserer. Stages: open -> betalt -> utmeldt. +- endre-medlemskap: et medlem som har flyttet, byttet e-post eller vil melde seg ut - wants: at velet har riktige opplysninger om dem. Handled by kasserer. Stages: open -> oppdatert. +- trafikkfare: en som har sett et farlig sted i trafikken - wants: at velet tar det opp med kommunen eller den som eier veien. Handled by trafikkomite. Stages: open -> tatt_opp -> ordnet -> avvist. +- anleggsfeil: en som ser at noe på lekeplassen eller stien er ødelagt - wants: at det blir fikset før noen skader seg. Handled by lekeplasskomite. Stages: open -> tatt_tak_i -> utbedret. +- horingsinnspill: en beboer som har en mening om en sak kommunen har på høring - wants: at velet tar det med i sitt svar. Handled by styret. Stages: open -> tatt_med -> ikke_tatt_med. +- hjelpe-til: en som vil hjelpe til på et arrangement eller en dugnad - wants: å bli satt opp på noe som passer dem. Handled by arrangementskomite. Stages: open -> kontaktet -> satt_opp -> takket_nei. +- komite: en som vil sitte i en komité - wants: en plass i den komiteen som driver med det de bryr seg om. Handled by styret. Stages: open -> plassert -> avslatt. +- trenger-hjelp: 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. Handled by nabohjelp. Stages: open -> formidlet -> ordnet -> ikke_lost. +- kan-hjelpe: en nabo som kan stille opp når noen trenger det - wants: å bli spurt når det passer. Handled by nabohjelp. Stages: open -> registrert -> trukket. +- dele-utstyr: en nabo som har noe å låne ut, eller trenger å låne noe - wants: et oppslag som naboene ser. Handled by styret. Stages: open -> lagt_ut -> tatt_ned. +- utlegg: en i en komité som har lagt ut for noe - wants: pengene tilbake. Handled by kasserer. Stages: open -> godkjent -> utbetalt -> avvist. + +The page: questions/decide/dele-utstyr.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": "", + "moves": { + "tatt_ned": { + "button": "", + "description": "", + "heading": "" + } + }, + "question": "" +} + +Reply with the JSON object only. + +=== REPLY === +```json +{ + "description": "Her styrer du oppslaget om det du har lånt ut.", + "moves": { + "tatt_ned": { + "button": "Ta ned oppslaget", + "description": "Oppslaget forsvinner fra siden. Bruk denne når det er lånt bort eller du ikke vil låne det ut lenger.", + "heading": "Ta ned oppslaget ditt" + } + }, + "question": "Vil du ta ned oppslaget?" +} +``` diff --git a/runs/tomtervel-nabohjelp-2026-09-22/llm/04-questions_decide_kan-hjelpe.yaml.md b/runs/tomtervel-nabohjelp-2026-09-22/llm/04-questions_decide_kan-hjelpe.yaml.md new file mode 100644 index 0000000..d4c5c68 --- /dev/null +++ b/runs/tomtervel-nabohjelp-2026-09-22/llm/04-questions_decide_kan-hjelpe.yaml.md @@ -0,0 +1,62 @@ +You write the words for one page of a website for this business. + +Business: Tomter Vel +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. +Contact: Styret i Tomter Vel +Language to write in: nb + +Everyone the site serves: +- door medlem: for en husstand i Tomter som vil være med i velet, eller allerede er det; behind it: bli-medlem, endre-medlemskap +- door melde-fra: for noen som har sett noe i nabolaget som ikke er som det skal; behind it: trafikkfare, anleggsfeil +- door bidra: for noen som vil gjøre en innsats, eller si sin mening i en sak; behind it: horingsinnspill, hjelpe-til, komite +- door naboer: for en nabo som trenger en hånd, kan gi en, eller har noe å låne ut; behind it: trenger-hjelp, kan-hjelpe, dele-utstyr +- bli-medlem: en husstand i Tomter - wants: å bli medlem og få betalt kontingenten. Handled by kasserer. Stages: open -> betalt -> utmeldt. +- endre-medlemskap: et medlem som har flyttet, byttet e-post eller vil melde seg ut - wants: at velet har riktige opplysninger om dem. Handled by kasserer. Stages: open -> oppdatert. +- trafikkfare: en som har sett et farlig sted i trafikken - wants: at velet tar det opp med kommunen eller den som eier veien. Handled by trafikkomite. Stages: open -> tatt_opp -> ordnet -> avvist. +- anleggsfeil: en som ser at noe på lekeplassen eller stien er ødelagt - wants: at det blir fikset før noen skader seg. Handled by lekeplasskomite. Stages: open -> tatt_tak_i -> utbedret. +- horingsinnspill: en beboer som har en mening om en sak kommunen har på høring - wants: at velet tar det med i sitt svar. Handled by styret. Stages: open -> tatt_med -> ikke_tatt_med. +- hjelpe-til: en som vil hjelpe til på et arrangement eller en dugnad - wants: å bli satt opp på noe som passer dem. Handled by arrangementskomite. Stages: open -> kontaktet -> satt_opp -> takket_nei. +- komite: en som vil sitte i en komité - wants: en plass i den komiteen som driver med det de bryr seg om. Handled by styret. Stages: open -> plassert -> avslatt. +- trenger-hjelp: 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. Handled by nabohjelp. Stages: open -> formidlet -> ordnet -> ikke_lost. +- kan-hjelpe: en nabo som kan stille opp når noen trenger det - wants: å bli spurt når det passer. Handled by nabohjelp. Stages: open -> registrert -> trukket. +- dele-utstyr: en nabo som har noe å låne ut, eller trenger å låne noe - wants: et oppslag som naboene ser. Handled by styret. Stages: open -> lagt_ut -> tatt_ned. +- utlegg: en i en komité som har lagt ut for noe - wants: pengene tilbake. Handled by kasserer. Stages: open -> godkjent -> utbetalt -> avvist. + +The page: questions/decide/kan-hjelpe.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": "", + "moves": { + "trukket": { + "button": "", + "description": "", + "heading": "" + } + }, + "question": "" +} + +Reply with the JSON object only. + +=== REPLY === +{ + "description": "Her ser du hvem som har fått beskjed om at du kan hjelpe, og kan trekke deg om det ikke passer lenger.", + "moves": { + "trukket": { + "button": "Trekk meg", + "description": "Da fjerner vi deg fra lista over naboer nabohjelpa kan spørre.", + "heading": "Slutt å bli spurt" + } + }, + "question": "Vil du fortsatt stå på lista over naboer som kan hjelpe?" +} diff --git a/runs/tomtervel-nabohjelp-2026-09-22/llm/05-questions_decide_trenger-hjelp.yaml.md b/runs/tomtervel-nabohjelp-2026-09-22/llm/05-questions_decide_trenger-hjelp.yaml.md new file mode 100644 index 0000000..ff3f88b --- /dev/null +++ b/runs/tomtervel-nabohjelp-2026-09-22/llm/05-questions_decide_trenger-hjelp.yaml.md @@ -0,0 +1,64 @@ +You write the words for one page of a website for this business. + +Business: Tomter Vel +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. +Contact: Styret i Tomter Vel +Language to write in: nb + +Everyone the site serves: +- door medlem: for en husstand i Tomter som vil være med i velet, eller allerede er det; behind it: bli-medlem, endre-medlemskap +- door melde-fra: for noen som har sett noe i nabolaget som ikke er som det skal; behind it: trafikkfare, anleggsfeil +- door bidra: for noen som vil gjøre en innsats, eller si sin mening i en sak; behind it: horingsinnspill, hjelpe-til, komite +- door naboer: for en nabo som trenger en hånd, kan gi en, eller har noe å låne ut; behind it: trenger-hjelp, kan-hjelpe, dele-utstyr +- bli-medlem: en husstand i Tomter - wants: å bli medlem og få betalt kontingenten. Handled by kasserer. Stages: open -> betalt -> utmeldt. +- endre-medlemskap: et medlem som har flyttet, byttet e-post eller vil melde seg ut - wants: at velet har riktige opplysninger om dem. Handled by kasserer. Stages: open -> oppdatert. +- trafikkfare: en som har sett et farlig sted i trafikken - wants: at velet tar det opp med kommunen eller den som eier veien. Handled by trafikkomite. Stages: open -> tatt_opp -> ordnet -> avvist. +- anleggsfeil: en som ser at noe på lekeplassen eller stien er ødelagt - wants: at det blir fikset før noen skader seg. Handled by lekeplasskomite. Stages: open -> tatt_tak_i -> utbedret. +- horingsinnspill: en beboer som har en mening om en sak kommunen har på høring - wants: at velet tar det med i sitt svar. Handled by styret. Stages: open -> tatt_med -> ikke_tatt_med. +- hjelpe-til: en som vil hjelpe til på et arrangement eller en dugnad - wants: å bli satt opp på noe som passer dem. Handled by arrangementskomite. Stages: open -> kontaktet -> satt_opp -> takket_nei. +- komite: en som vil sitte i en komité - wants: en plass i den komiteen som driver med det de bryr seg om. Handled by styret. Stages: open -> plassert -> avslatt. +- trenger-hjelp: 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. Handled by nabohjelp. Stages: open -> formidlet -> ordnet -> ikke_lost. +- kan-hjelpe: en nabo som kan stille opp når noen trenger det - wants: å bli spurt når det passer. Handled by nabohjelp. Stages: open -> registrert -> trukket. +- dele-utstyr: en nabo som har noe å låne ut, eller trenger å låne noe - wants: et oppslag som naboene ser. Handled by styret. Stages: open -> lagt_ut -> tatt_ned. +- utlegg: en i en komité som har lagt ut for noe - wants: pengene tilbake. Handled by kasserer. Stages: open -> godkjent -> utbetalt -> avvist. + +The page: questions/decide/trenger-hjelp.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": "", + "moves": { + "ordnet": { + "button": "", + "description": "", + "heading": "" + } + }, + "question": "" +} + +Reply with the JSON object only. + +=== REPLY === +```json +{ + "description": "Her sier du fra om hva som skjedde med hjelpen naboen tilbød.", + "moves": { + "ordnet": { + "button": "Ja, det ordnet seg", + "description": "Du fikk hjelpen du trengte. Vi merker saken som løst og gir beskjed til den som hjalp til.", + "heading": "Meld at hjelpen kom fram" + } + }, + "question": "Ordnet det seg?" +} +``` diff --git a/runs/tomtervel-nabohjelp-2026-09-22/llm/06-questions_index.yaml.md b/runs/tomtervel-nabohjelp-2026-09-22/llm/06-questions_index.yaml.md new file mode 100644 index 0000000..923df75 --- /dev/null +++ b/runs/tomtervel-nabohjelp-2026-09-22/llm/06-questions_index.yaml.md @@ -0,0 +1,94 @@ +You write the words for one page of a website for this business. + +Business: Tomter Vel +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. +Contact: Styret i Tomter Vel +Language to write in: nb + +Everyone the site serves: +- door medlem: for en husstand i Tomter som vil være med i velet, eller allerede er det; behind it: bli-medlem, endre-medlemskap +- door melde-fra: for noen som har sett noe i nabolaget som ikke er som det skal; behind it: trafikkfare, anleggsfeil +- door bidra: for noen som vil gjøre en innsats, eller si sin mening i en sak; behind it: horingsinnspill, hjelpe-til, komite +- door naboer: for en nabo som trenger en hånd, kan gi en, eller har noe å låne ut; behind it: trenger-hjelp, kan-hjelpe, dele-utstyr +- bli-medlem: en husstand i Tomter - wants: å bli medlem og få betalt kontingenten. Handled by kasserer. Stages: open -> betalt -> utmeldt. +- endre-medlemskap: et medlem som har flyttet, byttet e-post eller vil melde seg ut - wants: at velet har riktige opplysninger om dem. Handled by kasserer. Stages: open -> oppdatert. +- trafikkfare: en som har sett et farlig sted i trafikken - wants: at velet tar det opp med kommunen eller den som eier veien. Handled by trafikkomite. Stages: open -> tatt_opp -> ordnet -> avvist. +- anleggsfeil: en som ser at noe på lekeplassen eller stien er ødelagt - wants: at det blir fikset før noen skader seg. Handled by lekeplasskomite. Stages: open -> tatt_tak_i -> utbedret. +- horingsinnspill: en beboer som har en mening om en sak kommunen har på høring - wants: at velet tar det med i sitt svar. Handled by styret. Stages: open -> tatt_med -> ikke_tatt_med. +- hjelpe-til: en som vil hjelpe til på et arrangement eller en dugnad - wants: å bli satt opp på noe som passer dem. Handled by arrangementskomite. Stages: open -> kontaktet -> satt_opp -> takket_nei. +- komite: en som vil sitte i en komité - wants: en plass i den komiteen som driver med det de bryr seg om. Handled by styret. Stages: open -> plassert -> avslatt. +- trenger-hjelp: 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. Handled by nabohjelp. Stages: open -> formidlet -> ordnet -> ikke_lost. +- kan-hjelpe: en nabo som kan stille opp når noen trenger det - wants: å bli spurt når det passer. Handled by nabohjelp. Stages: open -> registrert -> trukket. +- dele-utstyr: en nabo som har noe å låne ut, eller trenger å låne noe - wants: et oppslag som naboene ser. Handled by styret. Stages: open -> lagt_ut -> tatt_ned. +- utlegg: en i en komité som har lagt ut for noe - wants: pengene tilbake. Handled by kasserer. Stages: open -> godkjent -> utbetalt -> avvist. + +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": "", + "doors": { + "bidra": { + "button": "", + "description": "", + "heading": "" + }, + "medlem": { + "button": "", + "description": "", + "heading": "" + }, + "melde-fra": { + "button": "", + "description": "", + "heading": "" + }, + "naboer": { + "button": "", + "description": "", + "heading": "" + } + }, + "needs": {}, + "question": "" +} + +Reply with the JSON object only. + +=== REPLY === +{ + "description": "Hva vil du hjelpe oss med i dag?", + "doors": { + "bidra": { + "button": "Bidra", + "description": "Si din mening om en høringssak, eller meld deg til en dugnad eller en komité.", + "heading": "Vil du bidra eller si din mening?" + }, + "medlem": { + "button": "Bli medlem", + "description": "Meld deg inn i Tomter Vel, eller endre opplysningene dine som medlem.", + "heading": "Vil du bli medlem eller endre medlemskapet?" + }, + "melde-fra": { + "button": "Meld fra", + "description": "Har du sett en trafikkfarlig plass eller noe ødelagt på lekeplassen eller stien? Meld fra her.", + "heading": "Har du sett noe som bør fikses?" + }, + "naboer": { + "button": "Naboer", + "description": "Trenger du en hånd, kan du stille opp for andre, eller har du noe å låne ut? Her møtes naboer.", + "heading": "Vil du hjelpe eller få hjelp av naboer?" + } + }, + "needs": {}, + "question": "Hva vil du gjøre?" +} diff --git a/runs/tomtervel-nabohjelp-2026-09-22/llm/07-questions_kasserer_index.yaml.md b/runs/tomtervel-nabohjelp-2026-09-22/llm/07-questions_kasserer_index.yaml.md new file mode 100644 index 0000000..3f1a7eb --- /dev/null +++ b/runs/tomtervel-nabohjelp-2026-09-22/llm/07-questions_kasserer_index.yaml.md @@ -0,0 +1,108 @@ +You write the words for one page of a website for this business. + +Business: Tomter Vel +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. +Contact: Styret i Tomter Vel +Language to write in: nb + +Everyone the site serves: +- door medlem: for en husstand i Tomter som vil være med i velet, eller allerede er det; behind it: bli-medlem, endre-medlemskap +- door melde-fra: for noen som har sett noe i nabolaget som ikke er som det skal; behind it: trafikkfare, anleggsfeil +- door bidra: for noen som vil gjøre en innsats, eller si sin mening i en sak; behind it: horingsinnspill, hjelpe-til, komite +- door naboer: for en nabo som trenger en hånd, kan gi en, eller har noe å låne ut; behind it: trenger-hjelp, kan-hjelpe, dele-utstyr +- bli-medlem: en husstand i Tomter - wants: å bli medlem og få betalt kontingenten. Handled by kasserer. Stages: open -> betalt -> utmeldt. +- endre-medlemskap: et medlem som har flyttet, byttet e-post eller vil melde seg ut - wants: at velet har riktige opplysninger om dem. Handled by kasserer. Stages: open -> oppdatert. +- trafikkfare: en som har sett et farlig sted i trafikken - wants: at velet tar det opp med kommunen eller den som eier veien. Handled by trafikkomite. Stages: open -> tatt_opp -> ordnet -> avvist. +- anleggsfeil: en som ser at noe på lekeplassen eller stien er ødelagt - wants: at det blir fikset før noen skader seg. Handled by lekeplasskomite. Stages: open -> tatt_tak_i -> utbedret. +- horingsinnspill: en beboer som har en mening om en sak kommunen har på høring - wants: at velet tar det med i sitt svar. Handled by styret. Stages: open -> tatt_med -> ikke_tatt_med. +- hjelpe-til: en som vil hjelpe til på et arrangement eller en dugnad - wants: å bli satt opp på noe som passer dem. Handled by arrangementskomite. Stages: open -> kontaktet -> satt_opp -> takket_nei. +- komite: en som vil sitte i en komité - wants: en plass i den komiteen som driver med det de bryr seg om. Handled by styret. Stages: open -> plassert -> avslatt. +- trenger-hjelp: 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. Handled by nabohjelp. Stages: open -> formidlet -> ordnet -> ikke_lost. +- kan-hjelpe: en nabo som kan stille opp når noen trenger det - wants: å bli spurt når det passer. Handled by nabohjelp. Stages: open -> registrert -> trukket. +- dele-utstyr: en nabo som har noe å låne ut, eller trenger å låne noe - wants: et oppslag som naboene ser. Handled by styret. Stages: open -> lagt_ut -> tatt_ned. +- utlegg: en i en komité som har lagt ut for noe - wants: pengene tilbake. Handled by kasserer. Stages: open -> godkjent -> utbetalt -> avvist. + +The page: questions/kasserer/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": { + "husstander": { + "description": "", + "heading": "", + "moves": { + "open->betalt": "betalt>", + "open->utmeldt": "utmeldt>" + } + }, + "medlemsendringer": { + "description": "", + "heading": "", + "moves": { + "open->oppdatert": "oppdatert>" + } + }, + "utlegg": { + "description": "", + "heading": "", + "moves": { + "godkjent->avvist": "avvist>", + "godkjent->utbetalt": "utbetalt>", + "open->avvist": "avvist>", + "open->godkjent": "godkjent>" + } + } + }, + "confirm": "", + "description": "", + "links": {}, + "question": "" +} + +Reply with the JSON object only. + +=== REPLY === +```json +{ + "buckets": { + "husstander": { + "description": "Husstander som har meldt seg inn eller vil ut av velet.", + "heading": "Husstander som venter på deg", + "moves": { + "open->betalt": "Kontingent betalt", + "open->utmeldt": "Meld ut" + } + }, + "medlemsendringer": { + "description": "Medlemmer som har flyttet, byttet e-post eller vil melde seg ut.", + "heading": "Opplysninger som skal endres", + "moves": { + "open->oppdatert": "Opplysninger oppdatert" + } + }, + "utlegg": { + "description": "Utlegg fra komiteene som venter på godkjenning eller utbetaling.", + "heading": "Utlegg som venter på deg", + "moves": { + "godkjent->avvist": "Avvis likevel", + "godkjent->utbetalt": "Merk som utbetalt", + "open->avvist": "Avvis utlegg", + "open->godkjent": "Godkjenn utlegg" + } + } + }, + "confirm": "Utført", + "description": "Her har du oversikt over medlemskap og utlegg som venter på deg som kasserer.", + "links": {}, + "question": "Hva må jeg som kasserer ta tak i nå?" +} +``` diff --git a/runs/tomtervel-nabohjelp-2026-09-22/llm/08-questions_komiteer_index.yaml.md b/runs/tomtervel-nabohjelp-2026-09-22/llm/08-questions_komiteer_index.yaml.md new file mode 100644 index 0000000..fba4788 --- /dev/null +++ b/runs/tomtervel-nabohjelp-2026-09-22/llm/08-questions_komiteer_index.yaml.md @@ -0,0 +1,68 @@ +You write the words for one page of a website for this business. + +Business: Tomter Vel +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. +Contact: Styret i Tomter Vel +Language to write in: nb + +Everyone the site serves: +- door medlem: for en husstand i Tomter som vil være med i velet, eller allerede er det; behind it: bli-medlem, endre-medlemskap +- door melde-fra: for noen som har sett noe i nabolaget som ikke er som det skal; behind it: trafikkfare, anleggsfeil +- door bidra: for noen som vil gjøre en innsats, eller si sin mening i en sak; behind it: horingsinnspill, hjelpe-til, komite +- door naboer: for en nabo som trenger en hånd, kan gi en, eller har noe å låne ut; behind it: trenger-hjelp, kan-hjelpe, dele-utstyr +- bli-medlem: en husstand i Tomter - wants: å bli medlem og få betalt kontingenten. Handled by kasserer. Stages: open -> betalt -> utmeldt. +- endre-medlemskap: et medlem som har flyttet, byttet e-post eller vil melde seg ut - wants: at velet har riktige opplysninger om dem. Handled by kasserer. Stages: open -> oppdatert. +- trafikkfare: en som har sett et farlig sted i trafikken - wants: at velet tar det opp med kommunen eller den som eier veien. Handled by trafikkomite. Stages: open -> tatt_opp -> ordnet -> avvist. +- anleggsfeil: en som ser at noe på lekeplassen eller stien er ødelagt - wants: at det blir fikset før noen skader seg. Handled by lekeplasskomite. Stages: open -> tatt_tak_i -> utbedret. +- horingsinnspill: en beboer som har en mening om en sak kommunen har på høring - wants: at velet tar det med i sitt svar. Handled by styret. Stages: open -> tatt_med -> ikke_tatt_med. +- hjelpe-til: en som vil hjelpe til på et arrangement eller en dugnad - wants: å bli satt opp på noe som passer dem. Handled by arrangementskomite. Stages: open -> kontaktet -> satt_opp -> takket_nei. +- komite: en som vil sitte i en komité - wants: en plass i den komiteen som driver med det de bryr seg om. Handled by styret. Stages: open -> plassert -> avslatt. +- trenger-hjelp: 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. Handled by nabohjelp. Stages: open -> formidlet -> ordnet -> ikke_lost. +- kan-hjelpe: en nabo som kan stille opp når noen trenger det - wants: å bli spurt når det passer. Handled by nabohjelp. Stages: open -> registrert -> trukket. +- dele-utstyr: en nabo som har noe å låne ut, eller trenger å låne noe - wants: et oppslag som naboene ser. Handled by styret. Stages: open -> lagt_ut -> tatt_ned. +- utlegg: en i en komité som har lagt ut for noe - wants: pengene tilbake. Handled by kasserer. Stages: open -> godkjent -> utbetalt -> avvist. + +The page: questions/komiteer/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": "", + "description": "", + "links": { + "utlegg": { + "button": "", + "description": "", + "heading": "" + } + }, + "question": "" +} + +Reply with the JSON object only. + +=== REPLY === +```json +{ + "buckets": {}, + "confirm": "Registrer", + "description": "Her ser du sakene komiteen din har fått inn, og kan flytte dem videre etter hvert som dere følger dem opp.", + "links": { + "utlegg": { + "button": "Legg inn utlegg", + "description": "Har du lagt ut for noe til komiteen? Registrer det her, så tar kasserer seg av resten.", + "heading": "Få igjen penger du har lagt ut" + } + }, + "question": "Hva står på til komiteen min nå?" +} +``` diff --git a/runs/tomtervel-nabohjelp-2026-09-22/llm/09-questions_komiteer_utlegg-sent.yaml.md b/runs/tomtervel-nabohjelp-2026-09-22/llm/09-questions_komiteer_utlegg-sent.yaml.md new file mode 100644 index 0000000..94fd190 --- /dev/null +++ b/runs/tomtervel-nabohjelp-2026-09-22/llm/09-questions_komiteer_utlegg-sent.yaml.md @@ -0,0 +1,48 @@ +You write the words for one page of a website for this business. + +Business: Tomter Vel +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. +Contact: Styret i Tomter Vel +Language to write in: nb + +Everyone the site serves: +- door medlem: for en husstand i Tomter som vil være med i velet, eller allerede er det; behind it: bli-medlem, endre-medlemskap +- door melde-fra: for noen som har sett noe i nabolaget som ikke er som det skal; behind it: trafikkfare, anleggsfeil +- door bidra: for noen som vil gjøre en innsats, eller si sin mening i en sak; behind it: horingsinnspill, hjelpe-til, komite +- door naboer: for en nabo som trenger en hånd, kan gi en, eller har noe å låne ut; behind it: trenger-hjelp, kan-hjelpe, dele-utstyr +- bli-medlem: en husstand i Tomter - wants: å bli medlem og få betalt kontingenten. Handled by kasserer. Stages: open -> betalt -> utmeldt. +- endre-medlemskap: et medlem som har flyttet, byttet e-post eller vil melde seg ut - wants: at velet har riktige opplysninger om dem. Handled by kasserer. Stages: open -> oppdatert. +- trafikkfare: en som har sett et farlig sted i trafikken - wants: at velet tar det opp med kommunen eller den som eier veien. Handled by trafikkomite. Stages: open -> tatt_opp -> ordnet -> avvist. +- anleggsfeil: en som ser at noe på lekeplassen eller stien er ødelagt - wants: at det blir fikset før noen skader seg. Handled by lekeplasskomite. Stages: open -> tatt_tak_i -> utbedret. +- horingsinnspill: en beboer som har en mening om en sak kommunen har på høring - wants: at velet tar det med i sitt svar. Handled by styret. Stages: open -> tatt_med -> ikke_tatt_med. +- hjelpe-til: en som vil hjelpe til på et arrangement eller en dugnad - wants: å bli satt opp på noe som passer dem. Handled by arrangementskomite. Stages: open -> kontaktet -> satt_opp -> takket_nei. +- komite: en som vil sitte i en komité - wants: en plass i den komiteen som driver med det de bryr seg om. Handled by styret. Stages: open -> plassert -> avslatt. +- trenger-hjelp: 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. Handled by nabohjelp. Stages: open -> formidlet -> ordnet -> ikke_lost. +- kan-hjelpe: en nabo som kan stille opp når noen trenger det - wants: å bli spurt når det passer. Handled by nabohjelp. Stages: open -> registrert -> trukket. +- dele-utstyr: en nabo som har noe å låne ut, eller trenger å låne noe - wants: et oppslag som naboene ser. Handled by styret. Stages: open -> lagt_ut -> tatt_ned. +- utlegg: en i en komité som har lagt ut for noe - wants: pengene tilbake. Handled by kasserer. Stages: open -> godkjent -> utbetalt -> avvist. + +The page: questions/komiteer/utlegg-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": "", + "description": "", + "next_description": "", + "next_heading": "", + "question": "" +} + +Reply with the JSON object only. + +=== REPLY === +{"back": "Til forsiden", "description": "Utlegget ditt er sendt til kasserer.", "next_description": "Kasserer ser gjennom utlegget og godkjenner det, så blir pengene satt inn på kontoen du har oppgitt.", "next_heading": "Pengene dine tilbake", "question": "Hva skjer nå med utlegget mitt?"} diff --git a/runs/tomtervel-nabohjelp-2026-09-22/llm/10-questions_komiteer_utlegg.yaml.md b/runs/tomtervel-nabohjelp-2026-09-22/llm/10-questions_komiteer_utlegg.yaml.md new file mode 100644 index 0000000..363fd0e --- /dev/null +++ b/runs/tomtervel-nabohjelp-2026-09-22/llm/10-questions_komiteer_utlegg.yaml.md @@ -0,0 +1,68 @@ +You write the words for one page of a website for this business. + +Business: Tomter Vel +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. +Contact: Styret i Tomter Vel +Language to write in: nb + +Everyone the site serves: +- door medlem: for en husstand i Tomter som vil være med i velet, eller allerede er det; behind it: bli-medlem, endre-medlemskap +- door melde-fra: for noen som har sett noe i nabolaget som ikke er som det skal; behind it: trafikkfare, anleggsfeil +- door bidra: for noen som vil gjøre en innsats, eller si sin mening i en sak; behind it: horingsinnspill, hjelpe-til, komite +- door naboer: for en nabo som trenger en hånd, kan gi en, eller har noe å låne ut; behind it: trenger-hjelp, kan-hjelpe, dele-utstyr +- bli-medlem: en husstand i Tomter - wants: å bli medlem og få betalt kontingenten. Handled by kasserer. Stages: open -> betalt -> utmeldt. +- endre-medlemskap: et medlem som har flyttet, byttet e-post eller vil melde seg ut - wants: at velet har riktige opplysninger om dem. Handled by kasserer. Stages: open -> oppdatert. +- trafikkfare: en som har sett et farlig sted i trafikken - wants: at velet tar det opp med kommunen eller den som eier veien. Handled by trafikkomite. Stages: open -> tatt_opp -> ordnet -> avvist. +- anleggsfeil: en som ser at noe på lekeplassen eller stien er ødelagt - wants: at det blir fikset før noen skader seg. Handled by lekeplasskomite. Stages: open -> tatt_tak_i -> utbedret. +- horingsinnspill: en beboer som har en mening om en sak kommunen har på høring - wants: at velet tar det med i sitt svar. Handled by styret. Stages: open -> tatt_med -> ikke_tatt_med. +- hjelpe-til: en som vil hjelpe til på et arrangement eller en dugnad - wants: å bli satt opp på noe som passer dem. Handled by arrangementskomite. Stages: open -> kontaktet -> satt_opp -> takket_nei. +- komite: en som vil sitte i en komité - wants: en plass i den komiteen som driver med det de bryr seg om. Handled by styret. Stages: open -> plassert -> avslatt. +- trenger-hjelp: 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. Handled by nabohjelp. Stages: open -> formidlet -> ordnet -> ikke_lost. +- kan-hjelpe: en nabo som kan stille opp når noen trenger det - wants: å bli spurt når det passer. Handled by nabohjelp. Stages: open -> registrert -> trukket. +- dele-utstyr: en nabo som har noe å låne ut, eller trenger å låne noe - wants: et oppslag som naboene ser. Handled by styret. Stages: open -> lagt_ut -> tatt_ned. +- utlegg: en i en komité som har lagt ut for noe - wants: pengene tilbake. Handled by kasserer. Stages: open -> godkjent -> utbetalt -> avvist. + +The page: questions/komiteer/utlegg.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": "", + "description": "", + "form_title": "", + "heading": "", + "labels": { + "belop": "", + "hva": "", + "navn": "" + }, + "page_description": "", + "question": "" +} + +Reply with the JSON object only. + +=== REPLY === +```json +{ + "button": "Send krav", + "description": "Har du lagt ut for noe til komiteen, kan du melde det inn her, så ordner kasserer utbetaling.", + "form_title": "Krav om utlegg", + "heading": "Få tilbake det du har lagt ut for", + "labels": { + "belop": "Beløp", + "hva": "Hva gjaldt det", + "navn": "Navn" + }, + "page_description": "For deg som har betalt noe for komiteen din og skal ha pengene tilbake.", + "question": "Har du lagt ut for noe komiteen skal betale?" +} +``` diff --git a/runs/tomtervel-nabohjelp-2026-09-22/llm/11-questions_lekeplasskomite_index.yaml.md b/runs/tomtervel-nabohjelp-2026-09-22/llm/11-questions_lekeplasskomite_index.yaml.md new file mode 100644 index 0000000..bd6f47f --- /dev/null +++ b/runs/tomtervel-nabohjelp-2026-09-22/llm/11-questions_lekeplasskomite_index.yaml.md @@ -0,0 +1,74 @@ +You write the words for one page of a website for this business. + +Business: Tomter Vel +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. +Contact: Styret i Tomter Vel +Language to write in: nb + +Everyone the site serves: +- door medlem: for en husstand i Tomter som vil være med i velet, eller allerede er det; behind it: bli-medlem, endre-medlemskap +- door melde-fra: for noen som har sett noe i nabolaget som ikke er som det skal; behind it: trafikkfare, anleggsfeil +- door bidra: for noen som vil gjøre en innsats, eller si sin mening i en sak; behind it: horingsinnspill, hjelpe-til, komite +- door naboer: for en nabo som trenger en hånd, kan gi en, eller har noe å låne ut; behind it: trenger-hjelp, kan-hjelpe, dele-utstyr +- bli-medlem: en husstand i Tomter - wants: å bli medlem og få betalt kontingenten. Handled by kasserer. Stages: open -> betalt -> utmeldt. +- endre-medlemskap: et medlem som har flyttet, byttet e-post eller vil melde seg ut - wants: at velet har riktige opplysninger om dem. Handled by kasserer. Stages: open -> oppdatert. +- trafikkfare: en som har sett et farlig sted i trafikken - wants: at velet tar det opp med kommunen eller den som eier veien. Handled by trafikkomite. Stages: open -> tatt_opp -> ordnet -> avvist. +- anleggsfeil: en som ser at noe på lekeplassen eller stien er ødelagt - wants: at det blir fikset før noen skader seg. Handled by lekeplasskomite. Stages: open -> tatt_tak_i -> utbedret. +- horingsinnspill: en beboer som har en mening om en sak kommunen har på høring - wants: at velet tar det med i sitt svar. Handled by styret. Stages: open -> tatt_med -> ikke_tatt_med. +- hjelpe-til: en som vil hjelpe til på et arrangement eller en dugnad - wants: å bli satt opp på noe som passer dem. Handled by arrangementskomite. Stages: open -> kontaktet -> satt_opp -> takket_nei. +- komite: en som vil sitte i en komité - wants: en plass i den komiteen som driver med det de bryr seg om. Handled by styret. Stages: open -> plassert -> avslatt. +- trenger-hjelp: 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. Handled by nabohjelp. Stages: open -> formidlet -> ordnet -> ikke_lost. +- kan-hjelpe: en nabo som kan stille opp når noen trenger det - wants: å bli spurt når det passer. Handled by nabohjelp. Stages: open -> registrert -> trukket. +- dele-utstyr: en nabo som har noe å låne ut, eller trenger å låne noe - wants: et oppslag som naboene ser. Handled by styret. Stages: open -> lagt_ut -> tatt_ned. +- utlegg: en i en komité som har lagt ut for noe - wants: pengene tilbake. Handled by kasserer. Stages: open -> godkjent -> utbetalt -> avvist. + +The page: questions/lekeplasskomite/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": { + "anleggsfeil": { + "description": "", + "heading": "", + "moves": { + "open->tatt_tak_i": "tatt_tak_i>", + "tatt_tak_i->utbedret": "utbedret>" + } + } + }, + "confirm": "", + "description": "", + "links": {}, + "question": "" +} + +Reply with the JSON object only. + +=== REPLY === +```json +{ + "buckets": { + "anleggsfeil": { + "description": "Meldinger om noe som er ødelagt på lekeplassen eller stien, og som må fikses før noen skader seg.", + "heading": "Skader meldt inn av naboer", + "moves": { + "open->tatt_tak_i": "Ta tak i dette", + "tatt_tak_i->utbedret": "Meld som utbedret" + } + } + }, + "confirm": "Lagre", + "description": "Her har lekeplasskomiteen oversikt over meldte feil på lekeplassene og stien, og kan følge dem opp fram til de er utbedret.", + "links": {}, + "question": "Hva må lekeplasskomiteen følge opp nå?" +} +``` diff --git a/runs/tomtervel-nabohjelp-2026-09-22/llm/12-questions_medlem_index.yaml.md b/runs/tomtervel-nabohjelp-2026-09-22/llm/12-questions_medlem_index.yaml.md new file mode 100644 index 0000000..992d0ff --- /dev/null +++ b/runs/tomtervel-nabohjelp-2026-09-22/llm/12-questions_medlem_index.yaml.md @@ -0,0 +1,100 @@ +You write the words for one page of a website for this business. + +Business: Tomter Vel +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. +Contact: Styret i Tomter Vel +Language to write in: nb + +Everyone the site serves: +- door medlem: for en husstand i Tomter som vil være med i velet, eller allerede er det; behind it: bli-medlem, endre-medlemskap +- door melde-fra: for noen som har sett noe i nabolaget som ikke er som det skal; behind it: trafikkfare, anleggsfeil +- door bidra: for noen som vil gjøre en innsats, eller si sin mening i en sak; behind it: horingsinnspill, hjelpe-til, komite +- door naboer: for en nabo som trenger en hånd, kan gi en, eller har noe å låne ut; behind it: trenger-hjelp, kan-hjelpe, dele-utstyr +- bli-medlem: en husstand i Tomter - wants: å bli medlem og få betalt kontingenten. Handled by kasserer. Stages: open -> betalt -> utmeldt. +- endre-medlemskap: et medlem som har flyttet, byttet e-post eller vil melde seg ut - wants: at velet har riktige opplysninger om dem. Handled by kasserer. Stages: open -> oppdatert. +- trafikkfare: en som har sett et farlig sted i trafikken - wants: at velet tar det opp med kommunen eller den som eier veien. Handled by trafikkomite. Stages: open -> tatt_opp -> ordnet -> avvist. +- anleggsfeil: en som ser at noe på lekeplassen eller stien er ødelagt - wants: at det blir fikset før noen skader seg. Handled by lekeplasskomite. Stages: open -> tatt_tak_i -> utbedret. +- horingsinnspill: en beboer som har en mening om en sak kommunen har på høring - wants: at velet tar det med i sitt svar. Handled by styret. Stages: open -> tatt_med -> ikke_tatt_med. +- hjelpe-til: en som vil hjelpe til på et arrangement eller en dugnad - wants: å bli satt opp på noe som passer dem. Handled by arrangementskomite. Stages: open -> kontaktet -> satt_opp -> takket_nei. +- komite: en som vil sitte i en komité - wants: en plass i den komiteen som driver med det de bryr seg om. Handled by styret. Stages: open -> plassert -> avslatt. +- trenger-hjelp: 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. Handled by nabohjelp. Stages: open -> formidlet -> ordnet -> ikke_lost. +- kan-hjelpe: en nabo som kan stille opp når noen trenger det - wants: å bli spurt når det passer. Handled by nabohjelp. Stages: open -> registrert -> trukket. +- dele-utstyr: en nabo som har noe å låne ut, eller trenger å låne noe - wants: et oppslag som naboene ser. Handled by styret. Stages: open -> lagt_ut -> tatt_ned. +- utlegg: en i en komité som har lagt ut for noe - wants: pengene tilbake. Handled by kasserer. Stages: open -> godkjent -> utbetalt -> avvist. + +The page: questions/medlem/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": "", + "needs": { + "bli-medlem": { + "button": "", + "description": "", + "form_title": "", + "heading": "", + "labels": { + "adresse": "", + "epost": "", + "navn": "", + "telefon": "" + } + }, + "endre-medlemskap": { + "button": "", + "description": "", + "form_title": "", + "heading": "", + "labels": { + "adresse": "", + "hva_er_nytt": "", + "navn": "" + } + } + }, + "question": "" +} + +Reply with the JSON object only. + +=== REPLY === +```json +{ + "description": "Bli medlem av Tomter Vel, eller oppdater opplysningene dine hvis noe har endret seg.", + "needs": { + "bli-medlem": { + "button": "Bli medlem", + "description": "Meld deg inn og betal kontingenten, så er du med.", + "form_title": "Bli medlem", + "heading": "Meld deg inn i Tomter Vel", + "labels": { + "adresse": "Adresse", + "epost": "E-post", + "navn": "Navn", + "telefon": "Telefon" + } + }, + "endre-medlemskap": { + "button": "Meld endring", + "description": "Har du flyttet, byttet e-post eller vil melde deg ut? Si fra her.", + "form_title": "Endre medlemskap", + "heading": "Oppdater opplysningene dine", + "labels": { + "adresse": "Adresse", + "hva_er_nytt": "Hva vil du endre?", + "navn": "Navn" + } + } + }, + "question": "Vil du bli medlem, eller endre medlemskapet ditt?" +} +``` diff --git a/runs/tomtervel-nabohjelp-2026-09-22/llm/13-questions_melde-fra_index.yaml.md b/runs/tomtervel-nabohjelp-2026-09-22/llm/13-questions_melde-fra_index.yaml.md new file mode 100644 index 0000000..ec31dec --- /dev/null +++ b/runs/tomtervel-nabohjelp-2026-09-22/llm/13-questions_melde-fra_index.yaml.md @@ -0,0 +1,96 @@ +You write the words for one page of a website for this business. + +Business: Tomter Vel +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. +Contact: Styret i Tomter Vel +Language to write in: nb + +Everyone the site serves: +- door medlem: for en husstand i Tomter som vil være med i velet, eller allerede er det; behind it: bli-medlem, endre-medlemskap +- door melde-fra: for noen som har sett noe i nabolaget som ikke er som det skal; behind it: trafikkfare, anleggsfeil +- door bidra: for noen som vil gjøre en innsats, eller si sin mening i en sak; behind it: horingsinnspill, hjelpe-til, komite +- door naboer: for en nabo som trenger en hånd, kan gi en, eller har noe å låne ut; behind it: trenger-hjelp, kan-hjelpe, dele-utstyr +- bli-medlem: en husstand i Tomter - wants: å bli medlem og få betalt kontingenten. Handled by kasserer. Stages: open -> betalt -> utmeldt. +- endre-medlemskap: et medlem som har flyttet, byttet e-post eller vil melde seg ut - wants: at velet har riktige opplysninger om dem. Handled by kasserer. Stages: open -> oppdatert. +- trafikkfare: en som har sett et farlig sted i trafikken - wants: at velet tar det opp med kommunen eller den som eier veien. Handled by trafikkomite. Stages: open -> tatt_opp -> ordnet -> avvist. +- anleggsfeil: en som ser at noe på lekeplassen eller stien er ødelagt - wants: at det blir fikset før noen skader seg. Handled by lekeplasskomite. Stages: open -> tatt_tak_i -> utbedret. +- horingsinnspill: en beboer som har en mening om en sak kommunen har på høring - wants: at velet tar det med i sitt svar. Handled by styret. Stages: open -> tatt_med -> ikke_tatt_med. +- hjelpe-til: en som vil hjelpe til på et arrangement eller en dugnad - wants: å bli satt opp på noe som passer dem. Handled by arrangementskomite. Stages: open -> kontaktet -> satt_opp -> takket_nei. +- komite: en som vil sitte i en komité - wants: en plass i den komiteen som driver med det de bryr seg om. Handled by styret. Stages: open -> plassert -> avslatt. +- trenger-hjelp: 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. Handled by nabohjelp. Stages: open -> formidlet -> ordnet -> ikke_lost. +- kan-hjelpe: en nabo som kan stille opp når noen trenger det - wants: å bli spurt når det passer. Handled by nabohjelp. Stages: open -> registrert -> trukket. +- dele-utstyr: en nabo som har noe å låne ut, eller trenger å låne noe - wants: et oppslag som naboene ser. Handled by styret. Stages: open -> lagt_ut -> tatt_ned. +- utlegg: en i en komité som har lagt ut for noe - wants: pengene tilbake. Handled by kasserer. Stages: open -> godkjent -> utbetalt -> avvist. + +The page: questions/melde-fra/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": "", + "needs": { + "anleggsfeil": { + "button": "", + "description": "", + "form_title": "", + "heading": "", + "labels": { + "hva": "", + "hvor": "" + } + }, + "trafikkfare": { + "button": "", + "description": "", + "form_title": "", + "heading": "", + "labels": { + "epost": "", + "hva": "", + "hvor": "" + } + } + }, + "question": "" +} + +Reply with the JSON object only. + +=== REPLY === +```json +{ + "description": "Sett du noe i nabolaget som ikke er som det skal? Fortell oss om det, så følger vi det opp.", + "needs": { + "anleggsfeil": { + "button": "Meld fra", + "description": "Er noe på lekeplassen eller stien ødelagt? Si ifra, så tar vi tak i det før noen skader seg.", + "form_title": "Meld skade", + "heading": "Få fikset det som er ødelagt", + "labels": { + "hva": "Hva er ødelagt?", + "hvor": "Hvor er det?" + } + }, + "trafikkfare": { + "button": "Meld fra", + "description": "Sett du et farlig sted i trafikken? Meld fra, så tar vi det opp med kommunen eller veieier.", + "form_title": "Meld trafikkfare", + "heading": "Få gjort noe med en farlig vei", + "labels": { + "epost": "E-post", + "hva": "Hva er farlig?", + "hvor": "Hvor er det?" + } + } + }, + "question": "Hva har du sett?" +} +``` diff --git a/runs/tomtervel-nabohjelp-2026-09-22/llm/14-questions_naboer_index.yaml.md b/runs/tomtervel-nabohjelp-2026-09-22/llm/14-questions_naboer_index.yaml.md new file mode 100644 index 0000000..c865583 --- /dev/null +++ b/runs/tomtervel-nabohjelp-2026-09-22/llm/14-questions_naboer_index.yaml.md @@ -0,0 +1,126 @@ +You write the words for one page of a website for this business. + +Business: Tomter Vel +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. +Contact: Styret i Tomter Vel +Language to write in: nb + +Everyone the site serves: +- door medlem: for en husstand i Tomter som vil være med i velet, eller allerede er det; behind it: bli-medlem, endre-medlemskap +- door melde-fra: for noen som har sett noe i nabolaget som ikke er som det skal; behind it: trafikkfare, anleggsfeil +- door bidra: for noen som vil gjøre en innsats, eller si sin mening i en sak; behind it: horingsinnspill, hjelpe-til, komite +- door naboer: for en nabo som trenger en hånd, kan gi en, eller har noe å låne ut; behind it: trenger-hjelp, kan-hjelpe, dele-utstyr +- bli-medlem: en husstand i Tomter - wants: å bli medlem og få betalt kontingenten. Handled by kasserer. Stages: open -> betalt -> utmeldt. +- endre-medlemskap: et medlem som har flyttet, byttet e-post eller vil melde seg ut - wants: at velet har riktige opplysninger om dem. Handled by kasserer. Stages: open -> oppdatert. +- trafikkfare: en som har sett et farlig sted i trafikken - wants: at velet tar det opp med kommunen eller den som eier veien. Handled by trafikkomite. Stages: open -> tatt_opp -> ordnet -> avvist. +- anleggsfeil: en som ser at noe på lekeplassen eller stien er ødelagt - wants: at det blir fikset før noen skader seg. Handled by lekeplasskomite. Stages: open -> tatt_tak_i -> utbedret. +- horingsinnspill: en beboer som har en mening om en sak kommunen har på høring - wants: at velet tar det med i sitt svar. Handled by styret. Stages: open -> tatt_med -> ikke_tatt_med. +- hjelpe-til: en som vil hjelpe til på et arrangement eller en dugnad - wants: å bli satt opp på noe som passer dem. Handled by arrangementskomite. Stages: open -> kontaktet -> satt_opp -> takket_nei. +- komite: en som vil sitte i en komité - wants: en plass i den komiteen som driver med det de bryr seg om. Handled by styret. Stages: open -> plassert -> avslatt. +- trenger-hjelp: 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. Handled by nabohjelp. Stages: open -> formidlet -> ordnet -> ikke_lost. +- kan-hjelpe: en nabo som kan stille opp når noen trenger det - wants: å bli spurt når det passer. Handled by nabohjelp. Stages: open -> registrert -> trukket. +- dele-utstyr: en nabo som har noe å låne ut, eller trenger å låne noe - wants: et oppslag som naboene ser. Handled by styret. Stages: open -> lagt_ut -> tatt_ned. +- utlegg: en i en komité som har lagt ut for noe - wants: pengene tilbake. Handled by kasserer. Stages: open -> godkjent -> utbetalt -> avvist. + +The page: questions/naboer/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": "", + "needs": { + "dele-utstyr": { + "button": "", + "description": "", + "form_title": "", + "heading": "", + "labels": { + "email": "", + "har_eller_trenger": "", + "hva": "", + "navn": "" + } + }, + "kan-hjelpe": { + "button": "", + "description": "", + "form_title": "", + "heading": "", + "labels": { + "email": "", + "kan": "", + "navn": "", + "telefon": "" + } + }, + "trenger-hjelp": { + "button": "", + "description": "", + "form_title": "", + "heading": "", + "labels": { + "adresse": "", + "email": "", + "hva": "", + "navn": "", + "telefon": "" + } + } + }, + "question": "" +} + +Reply with the JSON object only. + +=== REPLY === +{ + "description": "Nabolag er godt naboskap. Trenger du en hånd, kan du stille opp, eller har du noe andre kan låne?", + "needs": { + "dele-utstyr": { + "button": "Lag oppslag", + "description": "Legg ut det du har til overs, eller si fra om noe du gjerne vil låne av naboene.", + "form_title": "Lån eller lån ut", + "heading": "Del utstyr med naboene", + "labels": { + "email": "E-post", + "har_eller_trenger": "Har du, eller trenger du?", + "hva": "Hva gjelder det?", + "navn": "Navn" + } + }, + "kan-hjelpe": { + "button": "Meld deg", + "description": "Si fra om hva du kan bidra med, så tar nabohjelpa kontakt når det trengs.", + "form_title": "Meld deg som hjelper", + "heading": "Bli en nabo andre kan spørre", + "labels": { + "email": "E-post", + "kan": "Hva kan du hjelpe med?", + "navn": "Navn", + "telefon": "Telefon" + } + }, + "trenger-hjelp": { + "button": "Be om hjelp", + "description": "Trenger du en hånd med snømåking, handling eller skyss? Fortell hva du trenger, så finner vi en nabo.", + "form_title": "Be om en hånd", + "heading": "Få en nabo til å stille opp", + "labels": { + "adresse": "Adresse", + "email": "E-post", + "hva": "Hva trenger du hjelp med?", + "navn": "Navn", + "telefon": "Telefon" + } + } + }, + "question": "Trenger du en nabo, eller vil du være en?" +} diff --git a/runs/tomtervel-nabohjelp-2026-09-22/llm/15-questions_nabohjelp_index.yaml.md b/runs/tomtervel-nabohjelp-2026-09-22/llm/15-questions_nabohjelp_index.yaml.md new file mode 100644 index 0000000..7505b60 --- /dev/null +++ b/runs/tomtervel-nabohjelp-2026-09-22/llm/15-questions_nabohjelp_index.yaml.md @@ -0,0 +1,94 @@ +You write the words for one page of a website for this business. + +Business: Tomter Vel +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. +Contact: Styret i Tomter Vel +Language to write in: nb + +Everyone the site serves: +- door medlem: for en husstand i Tomter som vil være med i velet, eller allerede er det; behind it: bli-medlem, endre-medlemskap +- door melde-fra: for noen som har sett noe i nabolaget som ikke er som det skal; behind it: trafikkfare, anleggsfeil +- door bidra: for noen som vil gjøre en innsats, eller si sin mening i en sak; behind it: horingsinnspill, hjelpe-til, komite +- door naboer: for en nabo som trenger en hånd, kan gi en, eller har noe å låne ut; behind it: trenger-hjelp, kan-hjelpe, dele-utstyr +- bli-medlem: en husstand i Tomter - wants: å bli medlem og få betalt kontingenten. Handled by kasserer. Stages: open -> betalt -> utmeldt. +- endre-medlemskap: et medlem som har flyttet, byttet e-post eller vil melde seg ut - wants: at velet har riktige opplysninger om dem. Handled by kasserer. Stages: open -> oppdatert. +- trafikkfare: en som har sett et farlig sted i trafikken - wants: at velet tar det opp med kommunen eller den som eier veien. Handled by trafikkomite. Stages: open -> tatt_opp -> ordnet -> avvist. +- anleggsfeil: en som ser at noe på lekeplassen eller stien er ødelagt - wants: at det blir fikset før noen skader seg. Handled by lekeplasskomite. Stages: open -> tatt_tak_i -> utbedret. +- horingsinnspill: en beboer som har en mening om en sak kommunen har på høring - wants: at velet tar det med i sitt svar. Handled by styret. Stages: open -> tatt_med -> ikke_tatt_med. +- hjelpe-til: en som vil hjelpe til på et arrangement eller en dugnad - wants: å bli satt opp på noe som passer dem. Handled by arrangementskomite. Stages: open -> kontaktet -> satt_opp -> takket_nei. +- komite: en som vil sitte i en komité - wants: en plass i den komiteen som driver med det de bryr seg om. Handled by styret. Stages: open -> plassert -> avslatt. +- trenger-hjelp: 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. Handled by nabohjelp. Stages: open -> formidlet -> ordnet -> ikke_lost. +- kan-hjelpe: en nabo som kan stille opp når noen trenger det - wants: å bli spurt når det passer. Handled by nabohjelp. Stages: open -> registrert -> trukket. +- dele-utstyr: en nabo som har noe å låne ut, eller trenger å låne noe - wants: et oppslag som naboene ser. Handled by styret. Stages: open -> lagt_ut -> tatt_ned. +- utlegg: en i en komité som har lagt ut for noe - wants: pengene tilbake. Handled by kasserer. Stages: open -> godkjent -> utbetalt -> avvist. + +The page: questions/nabohjelp/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": { + "hjelpebehov": { + "description": "", + "heading": "", + "moves": { + "formidlet->ikke_lost": "ikke_lost>", + "formidlet->ordnet": "ordnet>", + "open->formidlet": "formidlet>", + "open->ikke_lost": "ikke_lost>" + } + }, + "hjelpere": { + "description": "", + "heading": "", + "moves": { + "open->registrert": "registrert>", + "open->trukket": "trukket>" + } + } + }, + "confirm": "", + "description": "", + "links": {}, + "question": "" +} + +Reply with the JSON object only. + +=== REPLY === +```json +{ + "buckets": { + "hjelpebehov": { + "description": "Naboer som trenger en hånd med noe akkurat nå, som snømåking, handling eller skyss.", + "heading": "Naboer som trenger en hånd", + "moves": { + "formidlet->ikke_lost": "Fikk ingen til å hjelpe", + "formidlet->ordnet": "Hjelpen er gitt", + "open->formidlet": "Satt nabo på saken", + "open->ikke_lost": "Fant ingen som kan" + } + }, + "hjelpere": { + "description": "Naboer som har sagt de stiller opp når noen trenger en hånd.", + "heading": "Naboer som kan stille opp", + "moves": { + "open->registrert": "Tatt imot", + "open->trukket": "Trukket seg" + } + } + }, + "confirm": "Lagre", + "description": "Her ser du hvem som trenger hjelp og hvem som kan hjelpe, så du kan sette dem sammen.", + "links": {}, + "question": "Hvem trenger hjelp, og hvem kan gi den?" +} +``` diff --git a/runs/tomtervel-nabohjelp-2026-09-22/llm/16-questions_received_anleggsfeil.yaml.md b/runs/tomtervel-nabohjelp-2026-09-22/llm/16-questions_received_anleggsfeil.yaml.md new file mode 100644 index 0000000..2898d3c --- /dev/null +++ b/runs/tomtervel-nabohjelp-2026-09-22/llm/16-questions_received_anleggsfeil.yaml.md @@ -0,0 +1,56 @@ +You write the words for one page of a website for this business. + +Business: Tomter Vel +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. +Contact: Styret i Tomter Vel +Language to write in: nb + +Everyone the site serves: +- door medlem: for en husstand i Tomter som vil være med i velet, eller allerede er det; behind it: bli-medlem, endre-medlemskap +- door melde-fra: for noen som har sett noe i nabolaget som ikke er som det skal; behind it: trafikkfare, anleggsfeil +- door bidra: for noen som vil gjøre en innsats, eller si sin mening i en sak; behind it: horingsinnspill, hjelpe-til, komite +- door naboer: for en nabo som trenger en hånd, kan gi en, eller har noe å låne ut; behind it: trenger-hjelp, kan-hjelpe, dele-utstyr +- bli-medlem: en husstand i Tomter - wants: å bli medlem og få betalt kontingenten. Handled by kasserer. Stages: open -> betalt -> utmeldt. +- endre-medlemskap: et medlem som har flyttet, byttet e-post eller vil melde seg ut - wants: at velet har riktige opplysninger om dem. Handled by kasserer. Stages: open -> oppdatert. +- trafikkfare: en som har sett et farlig sted i trafikken - wants: at velet tar det opp med kommunen eller den som eier veien. Handled by trafikkomite. Stages: open -> tatt_opp -> ordnet -> avvist. +- anleggsfeil: en som ser at noe på lekeplassen eller stien er ødelagt - wants: at det blir fikset før noen skader seg. Handled by lekeplasskomite. Stages: open -> tatt_tak_i -> utbedret. +- horingsinnspill: en beboer som har en mening om en sak kommunen har på høring - wants: at velet tar det med i sitt svar. Handled by styret. Stages: open -> tatt_med -> ikke_tatt_med. +- hjelpe-til: en som vil hjelpe til på et arrangement eller en dugnad - wants: å bli satt opp på noe som passer dem. Handled by arrangementskomite. Stages: open -> kontaktet -> satt_opp -> takket_nei. +- komite: en som vil sitte i en komité - wants: en plass i den komiteen som driver med det de bryr seg om. Handled by styret. Stages: open -> plassert -> avslatt. +- trenger-hjelp: 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. Handled by nabohjelp. Stages: open -> formidlet -> ordnet -> ikke_lost. +- kan-hjelpe: en nabo som kan stille opp når noen trenger det - wants: å bli spurt når det passer. Handled by nabohjelp. Stages: open -> registrert -> trukket. +- dele-utstyr: en nabo som har noe å låne ut, eller trenger å låne noe - wants: et oppslag som naboene ser. Handled by styret. Stages: open -> lagt_ut -> tatt_ned. +- utlegg: en i en komité som har lagt ut for noe - wants: pengene tilbake. Handled by kasserer. Stages: open -> godkjent -> utbetalt -> avvist. + +The page: questions/received/anleggsfeil.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": "", + "description": "", + "next_description": "", + "next_heading": "", + "question": "" +} + +Reply with the JSON object only. + +=== REPLY === +```json +{ + "back": "Tilbake", + "description": "Meldingen din om feilen er sendt til lekeplasskomiteen.", + "next_description": "Lekeplasskomiteen ser på det og fikser det som må fikses, eller sperrer av stedet til det er gjort.", + "next_heading": "Lekeplasskomiteen tar det videre", + "question": "Hva skjer med meldingen min nå?" +} +``` diff --git a/runs/tomtervel-nabohjelp-2026-09-22/llm/17-questions_received_bli-medlem.yaml.md b/runs/tomtervel-nabohjelp-2026-09-22/llm/17-questions_received_bli-medlem.yaml.md new file mode 100644 index 0000000..9973264 --- /dev/null +++ b/runs/tomtervel-nabohjelp-2026-09-22/llm/17-questions_received_bli-medlem.yaml.md @@ -0,0 +1,56 @@ +You write the words for one page of a website for this business. + +Business: Tomter Vel +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. +Contact: Styret i Tomter Vel +Language to write in: nb + +Everyone the site serves: +- door medlem: for en husstand i Tomter som vil være med i velet, eller allerede er det; behind it: bli-medlem, endre-medlemskap +- door melde-fra: for noen som har sett noe i nabolaget som ikke er som det skal; behind it: trafikkfare, anleggsfeil +- door bidra: for noen som vil gjøre en innsats, eller si sin mening i en sak; behind it: horingsinnspill, hjelpe-til, komite +- door naboer: for en nabo som trenger en hånd, kan gi en, eller har noe å låne ut; behind it: trenger-hjelp, kan-hjelpe, dele-utstyr +- bli-medlem: en husstand i Tomter - wants: å bli medlem og få betalt kontingenten. Handled by kasserer. Stages: open -> betalt -> utmeldt. +- endre-medlemskap: et medlem som har flyttet, byttet e-post eller vil melde seg ut - wants: at velet har riktige opplysninger om dem. Handled by kasserer. Stages: open -> oppdatert. +- trafikkfare: en som har sett et farlig sted i trafikken - wants: at velet tar det opp med kommunen eller den som eier veien. Handled by trafikkomite. Stages: open -> tatt_opp -> ordnet -> avvist. +- anleggsfeil: en som ser at noe på lekeplassen eller stien er ødelagt - wants: at det blir fikset før noen skader seg. Handled by lekeplasskomite. Stages: open -> tatt_tak_i -> utbedret. +- horingsinnspill: en beboer som har en mening om en sak kommunen har på høring - wants: at velet tar det med i sitt svar. Handled by styret. Stages: open -> tatt_med -> ikke_tatt_med. +- hjelpe-til: en som vil hjelpe til på et arrangement eller en dugnad - wants: å bli satt opp på noe som passer dem. Handled by arrangementskomite. Stages: open -> kontaktet -> satt_opp -> takket_nei. +- komite: en som vil sitte i en komité - wants: en plass i den komiteen som driver med det de bryr seg om. Handled by styret. Stages: open -> plassert -> avslatt. +- trenger-hjelp: 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. Handled by nabohjelp. Stages: open -> formidlet -> ordnet -> ikke_lost. +- kan-hjelpe: en nabo som kan stille opp når noen trenger det - wants: å bli spurt når det passer. Handled by nabohjelp. Stages: open -> registrert -> trukket. +- dele-utstyr: en nabo som har noe å låne ut, eller trenger å låne noe - wants: et oppslag som naboene ser. Handled by styret. Stages: open -> lagt_ut -> tatt_ned. +- utlegg: en i en komité som har lagt ut for noe - wants: pengene tilbake. Handled by kasserer. Stages: open -> godkjent -> utbetalt -> avvist. + +The page: questions/received/bli-medlem.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": "", + "description": "", + "next_description": "", + "next_heading": "", + "question": "" +} + +Reply with the JSON object only. + +=== REPLY === +```json +{ + "back": "Til forsiden", + "description": "Vi har mottatt innmeldingen din i Tomter Vel. Kasserer går gjennom den og sender deg informasjon om kontingenten.", + "next_description": "Så snart kontingenten er betalt, er du registrert som medlem hos oss.", + "next_heading": "Du hører fra kasserer om kontingenten", + "question": "Hva skjer nå som jeg har meldt meg inn?" +} +``` diff --git a/runs/tomtervel-nabohjelp-2026-09-22/llm/18-questions_received_dele-utstyr.yaml.md b/runs/tomtervel-nabohjelp-2026-09-22/llm/18-questions_received_dele-utstyr.yaml.md new file mode 100644 index 0000000..b1d8d56 --- /dev/null +++ b/runs/tomtervel-nabohjelp-2026-09-22/llm/18-questions_received_dele-utstyr.yaml.md @@ -0,0 +1,54 @@ +You write the words for one page of a website for this business. + +Business: Tomter Vel +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. +Contact: Styret i Tomter Vel +Language to write in: nb + +Everyone the site serves: +- door medlem: for en husstand i Tomter som vil være med i velet, eller allerede er det; behind it: bli-medlem, endre-medlemskap +- door melde-fra: for noen som har sett noe i nabolaget som ikke er som det skal; behind it: trafikkfare, anleggsfeil +- door bidra: for noen som vil gjøre en innsats, eller si sin mening i en sak; behind it: horingsinnspill, hjelpe-til, komite +- door naboer: for en nabo som trenger en hånd, kan gi en, eller har noe å låne ut; behind it: trenger-hjelp, kan-hjelpe, dele-utstyr +- bli-medlem: en husstand i Tomter - wants: å bli medlem og få betalt kontingenten. Handled by kasserer. Stages: open -> betalt -> utmeldt. +- endre-medlemskap: et medlem som har flyttet, byttet e-post eller vil melde seg ut - wants: at velet har riktige opplysninger om dem. Handled by kasserer. Stages: open -> oppdatert. +- trafikkfare: en som har sett et farlig sted i trafikken - wants: at velet tar det opp med kommunen eller den som eier veien. Handled by trafikkomite. Stages: open -> tatt_opp -> ordnet -> avvist. +- anleggsfeil: en som ser at noe på lekeplassen eller stien er ødelagt - wants: at det blir fikset før noen skader seg. Handled by lekeplasskomite. Stages: open -> tatt_tak_i -> utbedret. +- horingsinnspill: en beboer som har en mening om en sak kommunen har på høring - wants: at velet tar det med i sitt svar. Handled by styret. Stages: open -> tatt_med -> ikke_tatt_med. +- hjelpe-til: en som vil hjelpe til på et arrangement eller en dugnad - wants: å bli satt opp på noe som passer dem. Handled by arrangementskomite. Stages: open -> kontaktet -> satt_opp -> takket_nei. +- komite: en som vil sitte i en komité - wants: en plass i den komiteen som driver med det de bryr seg om. Handled by styret. Stages: open -> plassert -> avslatt. +- trenger-hjelp: 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. Handled by nabohjelp. Stages: open -> formidlet -> ordnet -> ikke_lost. +- kan-hjelpe: en nabo som kan stille opp når noen trenger det - wants: å bli spurt når det passer. Handled by nabohjelp. Stages: open -> registrert -> trukket. +- dele-utstyr: en nabo som har noe å låne ut, eller trenger å låne noe - wants: et oppslag som naboene ser. Handled by styret. Stages: open -> lagt_ut -> tatt_ned. +- utlegg: en i en komité som har lagt ut for noe - wants: pengene tilbake. Handled by kasserer. Stages: open -> godkjent -> utbetalt -> avvist. + +The page: questions/received/dele-utstyr.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": "", + "description": "", + "next_description": "", + "next_heading": "", + "question": "" +} + +Reply with the JSON object only. + +=== REPLY === +{ + "back": "Til forsiden", + "description": "Takk for at du melder inn utstyr til deling. Styret legger det ut så naboene kan se det.", + "next_description": "Styret legger oppslaget ut, og tar kontakt med deg hvis noe er uklart.", + "next_heading": "Oppslaget kommer opp snart", + "question": "Hva skjer med det jeg har meldt inn?" +} diff --git a/runs/tomtervel-nabohjelp-2026-09-22/llm/19-questions_received_endre-medlemskap.yaml.md b/runs/tomtervel-nabohjelp-2026-09-22/llm/19-questions_received_endre-medlemskap.yaml.md new file mode 100644 index 0000000..d420681 --- /dev/null +++ b/runs/tomtervel-nabohjelp-2026-09-22/llm/19-questions_received_endre-medlemskap.yaml.md @@ -0,0 +1,56 @@ +You write the words for one page of a website for this business. + +Business: Tomter Vel +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. +Contact: Styret i Tomter Vel +Language to write in: nb + +Everyone the site serves: +- door medlem: for en husstand i Tomter som vil være med i velet, eller allerede er det; behind it: bli-medlem, endre-medlemskap +- door melde-fra: for noen som har sett noe i nabolaget som ikke er som det skal; behind it: trafikkfare, anleggsfeil +- door bidra: for noen som vil gjøre en innsats, eller si sin mening i en sak; behind it: horingsinnspill, hjelpe-til, komite +- door naboer: for en nabo som trenger en hånd, kan gi en, eller har noe å låne ut; behind it: trenger-hjelp, kan-hjelpe, dele-utstyr +- bli-medlem: en husstand i Tomter - wants: å bli medlem og få betalt kontingenten. Handled by kasserer. Stages: open -> betalt -> utmeldt. +- endre-medlemskap: et medlem som har flyttet, byttet e-post eller vil melde seg ut - wants: at velet har riktige opplysninger om dem. Handled by kasserer. Stages: open -> oppdatert. +- trafikkfare: en som har sett et farlig sted i trafikken - wants: at velet tar det opp med kommunen eller den som eier veien. Handled by trafikkomite. Stages: open -> tatt_opp -> ordnet -> avvist. +- anleggsfeil: en som ser at noe på lekeplassen eller stien er ødelagt - wants: at det blir fikset før noen skader seg. Handled by lekeplasskomite. Stages: open -> tatt_tak_i -> utbedret. +- horingsinnspill: en beboer som har en mening om en sak kommunen har på høring - wants: at velet tar det med i sitt svar. Handled by styret. Stages: open -> tatt_med -> ikke_tatt_med. +- hjelpe-til: en som vil hjelpe til på et arrangement eller en dugnad - wants: å bli satt opp på noe som passer dem. Handled by arrangementskomite. Stages: open -> kontaktet -> satt_opp -> takket_nei. +- komite: en som vil sitte i en komité - wants: en plass i den komiteen som driver med det de bryr seg om. Handled by styret. Stages: open -> plassert -> avslatt. +- trenger-hjelp: 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. Handled by nabohjelp. Stages: open -> formidlet -> ordnet -> ikke_lost. +- kan-hjelpe: en nabo som kan stille opp når noen trenger det - wants: å bli spurt når det passer. Handled by nabohjelp. Stages: open -> registrert -> trukket. +- dele-utstyr: en nabo som har noe å låne ut, eller trenger å låne noe - wants: et oppslag som naboene ser. Handled by styret. Stages: open -> lagt_ut -> tatt_ned. +- utlegg: en i en komité som har lagt ut for noe - wants: pengene tilbake. Handled by kasserer. Stages: open -> godkjent -> utbetalt -> avvist. + +The page: questions/received/endre-medlemskap.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": "", + "description": "", + "next_description": "", + "next_heading": "", + "question": "" +} + +Reply with the JSON object only. + +=== REPLY === +```json +{ + "back": "Tilbake", + "description": "Kasserer oppdaterer opplysningene deres i medlemsregisteret.", + "next_description": "Kasserer går gjennom endringen og retter opp i registeret så snart de får tid.", + "next_heading": "Riktige opplysninger i registeret", + "question": "Er opplysningene mine oppdatert nå?" +} +``` diff --git a/runs/tomtervel-nabohjelp-2026-09-22/llm/20-questions_received_hjelpe-til.yaml.md b/runs/tomtervel-nabohjelp-2026-09-22/llm/20-questions_received_hjelpe-til.yaml.md new file mode 100644 index 0000000..29e9dd0 --- /dev/null +++ b/runs/tomtervel-nabohjelp-2026-09-22/llm/20-questions_received_hjelpe-til.yaml.md @@ -0,0 +1,56 @@ +You write the words for one page of a website for this business. + +Business: Tomter Vel +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. +Contact: Styret i Tomter Vel +Language to write in: nb + +Everyone the site serves: +- door medlem: for en husstand i Tomter som vil være med i velet, eller allerede er det; behind it: bli-medlem, endre-medlemskap +- door melde-fra: for noen som har sett noe i nabolaget som ikke er som det skal; behind it: trafikkfare, anleggsfeil +- door bidra: for noen som vil gjøre en innsats, eller si sin mening i en sak; behind it: horingsinnspill, hjelpe-til, komite +- door naboer: for en nabo som trenger en hånd, kan gi en, eller har noe å låne ut; behind it: trenger-hjelp, kan-hjelpe, dele-utstyr +- bli-medlem: en husstand i Tomter - wants: å bli medlem og få betalt kontingenten. Handled by kasserer. Stages: open -> betalt -> utmeldt. +- endre-medlemskap: et medlem som har flyttet, byttet e-post eller vil melde seg ut - wants: at velet har riktige opplysninger om dem. Handled by kasserer. Stages: open -> oppdatert. +- trafikkfare: en som har sett et farlig sted i trafikken - wants: at velet tar det opp med kommunen eller den som eier veien. Handled by trafikkomite. Stages: open -> tatt_opp -> ordnet -> avvist. +- anleggsfeil: en som ser at noe på lekeplassen eller stien er ødelagt - wants: at det blir fikset før noen skader seg. Handled by lekeplasskomite. Stages: open -> tatt_tak_i -> utbedret. +- horingsinnspill: en beboer som har en mening om en sak kommunen har på høring - wants: at velet tar det med i sitt svar. Handled by styret. Stages: open -> tatt_med -> ikke_tatt_med. +- hjelpe-til: en som vil hjelpe til på et arrangement eller en dugnad - wants: å bli satt opp på noe som passer dem. Handled by arrangementskomite. Stages: open -> kontaktet -> satt_opp -> takket_nei. +- komite: en som vil sitte i en komité - wants: en plass i den komiteen som driver med det de bryr seg om. Handled by styret. Stages: open -> plassert -> avslatt. +- trenger-hjelp: 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. Handled by nabohjelp. Stages: open -> formidlet -> ordnet -> ikke_lost. +- kan-hjelpe: en nabo som kan stille opp når noen trenger det - wants: å bli spurt når det passer. Handled by nabohjelp. Stages: open -> registrert -> trukket. +- dele-utstyr: en nabo som har noe å låne ut, eller trenger å låne noe - wants: et oppslag som naboene ser. Handled by styret. Stages: open -> lagt_ut -> tatt_ned. +- utlegg: en i en komité som har lagt ut for noe - wants: pengene tilbake. Handled by kasserer. Stages: open -> godkjent -> utbetalt -> avvist. + +The page: questions/received/hjelpe-til.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": "", + "description": "", + "next_description": "", + "next_heading": "", + "question": "" +} + +Reply with the JSON object only. + +=== REPLY === +```json +{ + "back": "Tilbake til forsiden", + "description": "Takk for at du vil hjelpe til! Arrangementskomiteen har fått beskjed og tar kontakt med deg.", + "next_description": "Noen fra arrangementskomiteen tar kontakt med deg for å avtale hva du kan bidra med.", + "next_heading": "Arrangementskomiteen kontakter deg", + "question": "Hva skjer nå som jeg har meldt meg?" +} +``` diff --git a/runs/tomtervel-nabohjelp-2026-09-22/llm/21-questions_received_horingsinnspill.yaml.md b/runs/tomtervel-nabohjelp-2026-09-22/llm/21-questions_received_horingsinnspill.yaml.md new file mode 100644 index 0000000..0d1a3d9 --- /dev/null +++ b/runs/tomtervel-nabohjelp-2026-09-22/llm/21-questions_received_horingsinnspill.yaml.md @@ -0,0 +1,56 @@ +You write the words for one page of a website for this business. + +Business: Tomter Vel +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. +Contact: Styret i Tomter Vel +Language to write in: nb + +Everyone the site serves: +- door medlem: for en husstand i Tomter som vil være med i velet, eller allerede er det; behind it: bli-medlem, endre-medlemskap +- door melde-fra: for noen som har sett noe i nabolaget som ikke er som det skal; behind it: trafikkfare, anleggsfeil +- door bidra: for noen som vil gjøre en innsats, eller si sin mening i en sak; behind it: horingsinnspill, hjelpe-til, komite +- door naboer: for en nabo som trenger en hånd, kan gi en, eller har noe å låne ut; behind it: trenger-hjelp, kan-hjelpe, dele-utstyr +- bli-medlem: en husstand i Tomter - wants: å bli medlem og få betalt kontingenten. Handled by kasserer. Stages: open -> betalt -> utmeldt. +- endre-medlemskap: et medlem som har flyttet, byttet e-post eller vil melde seg ut - wants: at velet har riktige opplysninger om dem. Handled by kasserer. Stages: open -> oppdatert. +- trafikkfare: en som har sett et farlig sted i trafikken - wants: at velet tar det opp med kommunen eller den som eier veien. Handled by trafikkomite. Stages: open -> tatt_opp -> ordnet -> avvist. +- anleggsfeil: en som ser at noe på lekeplassen eller stien er ødelagt - wants: at det blir fikset før noen skader seg. Handled by lekeplasskomite. Stages: open -> tatt_tak_i -> utbedret. +- horingsinnspill: en beboer som har en mening om en sak kommunen har på høring - wants: at velet tar det med i sitt svar. Handled by styret. Stages: open -> tatt_med -> ikke_tatt_med. +- hjelpe-til: en som vil hjelpe til på et arrangement eller en dugnad - wants: å bli satt opp på noe som passer dem. Handled by arrangementskomite. Stages: open -> kontaktet -> satt_opp -> takket_nei. +- komite: en som vil sitte i en komité - wants: en plass i den komiteen som driver med det de bryr seg om. Handled by styret. Stages: open -> plassert -> avslatt. +- trenger-hjelp: 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. Handled by nabohjelp. Stages: open -> formidlet -> ordnet -> ikke_lost. +- kan-hjelpe: en nabo som kan stille opp når noen trenger det - wants: å bli spurt når det passer. Handled by nabohjelp. Stages: open -> registrert -> trukket. +- dele-utstyr: en nabo som har noe å låne ut, eller trenger å låne noe - wants: et oppslag som naboene ser. Handled by styret. Stages: open -> lagt_ut -> tatt_ned. +- utlegg: en i en komité som har lagt ut for noe - wants: pengene tilbake. Handled by kasserer. Stages: open -> godkjent -> utbetalt -> avvist. + +The page: questions/received/horingsinnspill.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": "", + "description": "", + "next_description": "", + "next_heading": "", + "question": "" +} + +Reply with the JSON object only. + +=== REPLY === +```json +{ + "back": "Tilbake til forsiden", + "description": "Takk for innspillet ditt. Vi har mottatt det og tar det med når styret skal svare på høringen.", + "next_description": "Styret går gjennom innspillene før høringsfristen og samler dem i velets svar til kommunen.", + "next_heading": "Innspillet ditt blir med i høringssvaret", + "question": "Hva skjer med innspillet mitt nå?" +} +``` diff --git a/runs/tomtervel-nabohjelp-2026-09-22/llm/22-questions_received_kan-hjelpe.yaml.md b/runs/tomtervel-nabohjelp-2026-09-22/llm/22-questions_received_kan-hjelpe.yaml.md new file mode 100644 index 0000000..3dc4bf4 --- /dev/null +++ b/runs/tomtervel-nabohjelp-2026-09-22/llm/22-questions_received_kan-hjelpe.yaml.md @@ -0,0 +1,56 @@ +You write the words for one page of a website for this business. + +Business: Tomter Vel +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. +Contact: Styret i Tomter Vel +Language to write in: nb + +Everyone the site serves: +- door medlem: for en husstand i Tomter som vil være med i velet, eller allerede er det; behind it: bli-medlem, endre-medlemskap +- door melde-fra: for noen som har sett noe i nabolaget som ikke er som det skal; behind it: trafikkfare, anleggsfeil +- door bidra: for noen som vil gjøre en innsats, eller si sin mening i en sak; behind it: horingsinnspill, hjelpe-til, komite +- door naboer: for en nabo som trenger en hånd, kan gi en, eller har noe å låne ut; behind it: trenger-hjelp, kan-hjelpe, dele-utstyr +- bli-medlem: en husstand i Tomter - wants: å bli medlem og få betalt kontingenten. Handled by kasserer. Stages: open -> betalt -> utmeldt. +- endre-medlemskap: et medlem som har flyttet, byttet e-post eller vil melde seg ut - wants: at velet har riktige opplysninger om dem. Handled by kasserer. Stages: open -> oppdatert. +- trafikkfare: en som har sett et farlig sted i trafikken - wants: at velet tar det opp med kommunen eller den som eier veien. Handled by trafikkomite. Stages: open -> tatt_opp -> ordnet -> avvist. +- anleggsfeil: en som ser at noe på lekeplassen eller stien er ødelagt - wants: at det blir fikset før noen skader seg. Handled by lekeplasskomite. Stages: open -> tatt_tak_i -> utbedret. +- horingsinnspill: en beboer som har en mening om en sak kommunen har på høring - wants: at velet tar det med i sitt svar. Handled by styret. Stages: open -> tatt_med -> ikke_tatt_med. +- hjelpe-til: en som vil hjelpe til på et arrangement eller en dugnad - wants: å bli satt opp på noe som passer dem. Handled by arrangementskomite. Stages: open -> kontaktet -> satt_opp -> takket_nei. +- komite: en som vil sitte i en komité - wants: en plass i den komiteen som driver med det de bryr seg om. Handled by styret. Stages: open -> plassert -> avslatt. +- trenger-hjelp: 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. Handled by nabohjelp. Stages: open -> formidlet -> ordnet -> ikke_lost. +- kan-hjelpe: en nabo som kan stille opp når noen trenger det - wants: å bli spurt når det passer. Handled by nabohjelp. Stages: open -> registrert -> trukket. +- dele-utstyr: en nabo som har noe å låne ut, eller trenger å låne noe - wants: et oppslag som naboene ser. Handled by styret. Stages: open -> lagt_ut -> tatt_ned. +- utlegg: en i en komité som har lagt ut for noe - wants: pengene tilbake. Handled by kasserer. Stages: open -> godkjent -> utbetalt -> avvist. + +The page: questions/received/kan-hjelpe.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": "", + "description": "", + "next_description": "", + "next_heading": "", + "question": "" +} + +Reply with the JSON object only. + +=== REPLY === +```json +{ + "back": "Tilbake", + "description": "Takk for at du sier fra at du kan hjelpe. Meldingen går til nabohjelp.", + "next_description": "Nabohjelp legger deg inn på listen over naboer som kan stille opp. Du blir kontaktet når det er noen som trenger akkurat det du tilbyr.", + "next_heading": "Du er registrert som hjelper", + "question": "Hva skjer nå med det jeg har sendt inn?" +} +``` diff --git a/runs/tomtervel-nabohjelp-2026-09-22/llm/23-questions_received_komite.yaml.md b/runs/tomtervel-nabohjelp-2026-09-22/llm/23-questions_received_komite.yaml.md new file mode 100644 index 0000000..d73873e --- /dev/null +++ b/runs/tomtervel-nabohjelp-2026-09-22/llm/23-questions_received_komite.yaml.md @@ -0,0 +1,56 @@ +You write the words for one page of a website for this business. + +Business: Tomter Vel +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. +Contact: Styret i Tomter Vel +Language to write in: nb + +Everyone the site serves: +- door medlem: for en husstand i Tomter som vil være med i velet, eller allerede er det; behind it: bli-medlem, endre-medlemskap +- door melde-fra: for noen som har sett noe i nabolaget som ikke er som det skal; behind it: trafikkfare, anleggsfeil +- door bidra: for noen som vil gjøre en innsats, eller si sin mening i en sak; behind it: horingsinnspill, hjelpe-til, komite +- door naboer: for en nabo som trenger en hånd, kan gi en, eller har noe å låne ut; behind it: trenger-hjelp, kan-hjelpe, dele-utstyr +- bli-medlem: en husstand i Tomter - wants: å bli medlem og få betalt kontingenten. Handled by kasserer. Stages: open -> betalt -> utmeldt. +- endre-medlemskap: et medlem som har flyttet, byttet e-post eller vil melde seg ut - wants: at velet har riktige opplysninger om dem. Handled by kasserer. Stages: open -> oppdatert. +- trafikkfare: en som har sett et farlig sted i trafikken - wants: at velet tar det opp med kommunen eller den som eier veien. Handled by trafikkomite. Stages: open -> tatt_opp -> ordnet -> avvist. +- anleggsfeil: en som ser at noe på lekeplassen eller stien er ødelagt - wants: at det blir fikset før noen skader seg. Handled by lekeplasskomite. Stages: open -> tatt_tak_i -> utbedret. +- horingsinnspill: en beboer som har en mening om en sak kommunen har på høring - wants: at velet tar det med i sitt svar. Handled by styret. Stages: open -> tatt_med -> ikke_tatt_med. +- hjelpe-til: en som vil hjelpe til på et arrangement eller en dugnad - wants: å bli satt opp på noe som passer dem. Handled by arrangementskomite. Stages: open -> kontaktet -> satt_opp -> takket_nei. +- komite: en som vil sitte i en komité - wants: en plass i den komiteen som driver med det de bryr seg om. Handled by styret. Stages: open -> plassert -> avslatt. +- trenger-hjelp: 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. Handled by nabohjelp. Stages: open -> formidlet -> ordnet -> ikke_lost. +- kan-hjelpe: en nabo som kan stille opp når noen trenger det - wants: å bli spurt når det passer. Handled by nabohjelp. Stages: open -> registrert -> trukket. +- dele-utstyr: en nabo som har noe å låne ut, eller trenger å låne noe - wants: et oppslag som naboene ser. Handled by styret. Stages: open -> lagt_ut -> tatt_ned. +- utlegg: en i en komité som har lagt ut for noe - wants: pengene tilbake. Handled by kasserer. Stages: open -> godkjent -> utbetalt -> avvist. + +The page: questions/received/komite.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": "", + "description": "", + "next_description": "", + "next_heading": "", + "question": "" +} + +Reply with the JSON object only. + +=== REPLY === +```json +{ + "back": "Tilbake til forsiden", + "description": "Takk for at du vil bidra i en komité. Styret ser gjennom henvendelser om komitéarbeid og tar kontakt med deg.", + "next_description": "Styret finner ut hvilken komité som passer, og hører med deg før du settes opp.", + "next_heading": "Du hører fra styret", + "question": "Hva skjer nå med ønsket mitt om å sitte i en komité?" +} +``` diff --git a/runs/tomtervel-nabohjelp-2026-09-22/llm/24-questions_received_trafikkfare.yaml.md b/runs/tomtervel-nabohjelp-2026-09-22/llm/24-questions_received_trafikkfare.yaml.md new file mode 100644 index 0000000..2787a3c --- /dev/null +++ b/runs/tomtervel-nabohjelp-2026-09-22/llm/24-questions_received_trafikkfare.yaml.md @@ -0,0 +1,56 @@ +You write the words for one page of a website for this business. + +Business: Tomter Vel +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. +Contact: Styret i Tomter Vel +Language to write in: nb + +Everyone the site serves: +- door medlem: for en husstand i Tomter som vil være med i velet, eller allerede er det; behind it: bli-medlem, endre-medlemskap +- door melde-fra: for noen som har sett noe i nabolaget som ikke er som det skal; behind it: trafikkfare, anleggsfeil +- door bidra: for noen som vil gjøre en innsats, eller si sin mening i en sak; behind it: horingsinnspill, hjelpe-til, komite +- door naboer: for en nabo som trenger en hånd, kan gi en, eller har noe å låne ut; behind it: trenger-hjelp, kan-hjelpe, dele-utstyr +- bli-medlem: en husstand i Tomter - wants: å bli medlem og få betalt kontingenten. Handled by kasserer. Stages: open -> betalt -> utmeldt. +- endre-medlemskap: et medlem som har flyttet, byttet e-post eller vil melde seg ut - wants: at velet har riktige opplysninger om dem. Handled by kasserer. Stages: open -> oppdatert. +- trafikkfare: en som har sett et farlig sted i trafikken - wants: at velet tar det opp med kommunen eller den som eier veien. Handled by trafikkomite. Stages: open -> tatt_opp -> ordnet -> avvist. +- anleggsfeil: en som ser at noe på lekeplassen eller stien er ødelagt - wants: at det blir fikset før noen skader seg. Handled by lekeplasskomite. Stages: open -> tatt_tak_i -> utbedret. +- horingsinnspill: en beboer som har en mening om en sak kommunen har på høring - wants: at velet tar det med i sitt svar. Handled by styret. Stages: open -> tatt_med -> ikke_tatt_med. +- hjelpe-til: en som vil hjelpe til på et arrangement eller en dugnad - wants: å bli satt opp på noe som passer dem. Handled by arrangementskomite. Stages: open -> kontaktet -> satt_opp -> takket_nei. +- komite: en som vil sitte i en komité - wants: en plass i den komiteen som driver med det de bryr seg om. Handled by styret. Stages: open -> plassert -> avslatt. +- trenger-hjelp: 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. Handled by nabohjelp. Stages: open -> formidlet -> ordnet -> ikke_lost. +- kan-hjelpe: en nabo som kan stille opp når noen trenger det - wants: å bli spurt når det passer. Handled by nabohjelp. Stages: open -> registrert -> trukket. +- dele-utstyr: en nabo som har noe å låne ut, eller trenger å låne noe - wants: et oppslag som naboene ser. Handled by styret. Stages: open -> lagt_ut -> tatt_ned. +- utlegg: en i en komité som har lagt ut for noe - wants: pengene tilbake. Handled by kasserer. Stages: open -> godkjent -> utbetalt -> avvist. + +The page: questions/received/trafikkfare.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": "", + "description": "", + "next_description": "", + "next_heading": "", + "question": "" +} + +Reply with the JSON object only. + +=== REPLY === +```json +{ + "back": "Tilbake til forsiden", + "description": "Takk for at du meldte fra om en trafikkfare. Trafikkomiteen leser meldingen og tar den videre.", + "next_description": "Meldingen går til trafikkomiteen. De vurderer saken og tar den opp med kommunen eller veieier om det trengs.", + "next_heading": "Trafikkomiteen ser på saken", + "question": "Hva skjer med meldingen min nå?" +} +``` diff --git a/runs/tomtervel-nabohjelp-2026-09-22/llm/25-questions_received_trenger-hjelp.yaml.md b/runs/tomtervel-nabohjelp-2026-09-22/llm/25-questions_received_trenger-hjelp.yaml.md new file mode 100644 index 0000000..3e200d1 --- /dev/null +++ b/runs/tomtervel-nabohjelp-2026-09-22/llm/25-questions_received_trenger-hjelp.yaml.md @@ -0,0 +1,56 @@ +You write the words for one page of a website for this business. + +Business: Tomter Vel +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. +Contact: Styret i Tomter Vel +Language to write in: nb + +Everyone the site serves: +- door medlem: for en husstand i Tomter som vil være med i velet, eller allerede er det; behind it: bli-medlem, endre-medlemskap +- door melde-fra: for noen som har sett noe i nabolaget som ikke er som det skal; behind it: trafikkfare, anleggsfeil +- door bidra: for noen som vil gjøre en innsats, eller si sin mening i en sak; behind it: horingsinnspill, hjelpe-til, komite +- door naboer: for en nabo som trenger en hånd, kan gi en, eller har noe å låne ut; behind it: trenger-hjelp, kan-hjelpe, dele-utstyr +- bli-medlem: en husstand i Tomter - wants: å bli medlem og få betalt kontingenten. Handled by kasserer. Stages: open -> betalt -> utmeldt. +- endre-medlemskap: et medlem som har flyttet, byttet e-post eller vil melde seg ut - wants: at velet har riktige opplysninger om dem. Handled by kasserer. Stages: open -> oppdatert. +- trafikkfare: en som har sett et farlig sted i trafikken - wants: at velet tar det opp med kommunen eller den som eier veien. Handled by trafikkomite. Stages: open -> tatt_opp -> ordnet -> avvist. +- anleggsfeil: en som ser at noe på lekeplassen eller stien er ødelagt - wants: at det blir fikset før noen skader seg. Handled by lekeplasskomite. Stages: open -> tatt_tak_i -> utbedret. +- horingsinnspill: en beboer som har en mening om en sak kommunen har på høring - wants: at velet tar det med i sitt svar. Handled by styret. Stages: open -> tatt_med -> ikke_tatt_med. +- hjelpe-til: en som vil hjelpe til på et arrangement eller en dugnad - wants: å bli satt opp på noe som passer dem. Handled by arrangementskomite. Stages: open -> kontaktet -> satt_opp -> takket_nei. +- komite: en som vil sitte i en komité - wants: en plass i den komiteen som driver med det de bryr seg om. Handled by styret. Stages: open -> plassert -> avslatt. +- trenger-hjelp: 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. Handled by nabohjelp. Stages: open -> formidlet -> ordnet -> ikke_lost. +- kan-hjelpe: en nabo som kan stille opp når noen trenger det - wants: å bli spurt når det passer. Handled by nabohjelp. Stages: open -> registrert -> trukket. +- dele-utstyr: en nabo som har noe å låne ut, eller trenger å låne noe - wants: et oppslag som naboene ser. Handled by styret. Stages: open -> lagt_ut -> tatt_ned. +- utlegg: en i en komité som har lagt ut for noe - wants: pengene tilbake. Handled by kasserer. Stages: open -> godkjent -> utbetalt -> avvist. + +The page: questions/received/trenger-hjelp.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": "", + "description": "", + "next_description": "", + "next_heading": "", + "question": "" +} + +Reply with the JSON object only. + +=== REPLY === +```json +{ + "back": "Til forsiden", + "description": "Vi har fått beskjeden om at du trenger en hånd, og nabohjelp-komiteen ser på den.", + "next_description": "Så snart en nabo kan stille opp, tar de kontakt med deg.", + "next_heading": "En nabo tar kontakt", + "question": "Hva skjer nå?" +} +``` diff --git a/runs/tomtervel-nabohjelp-2026-09-22/llm/26-questions_styret_index.yaml.md b/runs/tomtervel-nabohjelp-2026-09-22/llm/26-questions_styret_index.yaml.md new file mode 100644 index 0000000..45aadba --- /dev/null +++ b/runs/tomtervel-nabohjelp-2026-09-22/llm/26-questions_styret_index.yaml.md @@ -0,0 +1,116 @@ +You write the words for one page of a website for this business. + +Business: Tomter Vel +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. +Contact: Styret i Tomter Vel +Language to write in: nb + +Everyone the site serves: +- door medlem: for en husstand i Tomter som vil være med i velet, eller allerede er det; behind it: bli-medlem, endre-medlemskap +- door melde-fra: for noen som har sett noe i nabolaget som ikke er som det skal; behind it: trafikkfare, anleggsfeil +- door bidra: for noen som vil gjøre en innsats, eller si sin mening i en sak; behind it: horingsinnspill, hjelpe-til, komite +- door naboer: for en nabo som trenger en hånd, kan gi en, eller har noe å låne ut; behind it: trenger-hjelp, kan-hjelpe, dele-utstyr +- bli-medlem: en husstand i Tomter - wants: å bli medlem og få betalt kontingenten. Handled by kasserer. Stages: open -> betalt -> utmeldt. +- endre-medlemskap: et medlem som har flyttet, byttet e-post eller vil melde seg ut - wants: at velet har riktige opplysninger om dem. Handled by kasserer. Stages: open -> oppdatert. +- trafikkfare: en som har sett et farlig sted i trafikken - wants: at velet tar det opp med kommunen eller den som eier veien. Handled by trafikkomite. Stages: open -> tatt_opp -> ordnet -> avvist. +- anleggsfeil: en som ser at noe på lekeplassen eller stien er ødelagt - wants: at det blir fikset før noen skader seg. Handled by lekeplasskomite. Stages: open -> tatt_tak_i -> utbedret. +- horingsinnspill: en beboer som har en mening om en sak kommunen har på høring - wants: at velet tar det med i sitt svar. Handled by styret. Stages: open -> tatt_med -> ikke_tatt_med. +- hjelpe-til: en som vil hjelpe til på et arrangement eller en dugnad - wants: å bli satt opp på noe som passer dem. Handled by arrangementskomite. Stages: open -> kontaktet -> satt_opp -> takket_nei. +- komite: en som vil sitte i en komité - wants: en plass i den komiteen som driver med det de bryr seg om. Handled by styret. Stages: open -> plassert -> avslatt. +- trenger-hjelp: 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. Handled by nabohjelp. Stages: open -> formidlet -> ordnet -> ikke_lost. +- kan-hjelpe: en nabo som kan stille opp når noen trenger det - wants: å bli spurt når det passer. Handled by nabohjelp. Stages: open -> registrert -> trukket. +- dele-utstyr: en nabo som har noe å låne ut, eller trenger å låne noe - wants: et oppslag som naboene ser. Handled by styret. Stages: open -> lagt_ut -> tatt_ned. +- utlegg: en i en komité som har lagt ut for noe - wants: pengene tilbake. Handled by kasserer. Stages: open -> godkjent -> utbetalt -> avvist. + +The page: questions/styret/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": { + "innspill": { + "description": "", + "heading": "", + "moves": { + "open->ikke_tatt_med": "ikke_tatt_med>", + "open->tatt_med": "tatt_med>" + } + }, + "komitesoknader": { + "description": "", + "heading": "", + "moves": { + "open->avslatt": "avslatt>", + "open->plassert": "plassert>" + } + }, + "oppslag": { + "description": "", + "heading": "", + "moves": { + "open->lagt_ut": "lagt_ut>", + "open->tatt_ned": "tatt_ned>" + } + }, + "trafikkmeldinger": { + "description": "", + "heading": "", + "moves": {} + } + }, + "confirm": "", + "description": "", + "links": {}, + "question": "" +} + +Reply with the JSON object only. + +=== REPLY === +```json +{ + "buckets": { + "innspill": { + "description": "Her ser dere innspill fra beboere til saker kommunen har på høring, klare til å tas med i velets svar.", + "heading": "Innspill til høringssvar", + "moves": { + "open->ikke_tatt_med": "Ikke ta med", + "open->tatt_med": "Ta med i svaret" + } + }, + "komitesoknader": { + "description": "Her ser dere hvem som har meldt seg til en komité og venter på plass.", + "heading": "Søknader til komiteene", + "moves": { + "open->avslatt": "Avslå søknaden", + "open->plassert": "Gi plass i komité" + } + }, + "oppslag": { + "description": "Her ser dere oppslag naboer vil dele om ting de låner ut eller trenger å låne.", + "heading": "Oppslag om utstyr", + "moves": { + "open->lagt_ut": "Legg ut oppslaget", + "open->tatt_ned": "Ta ned oppslaget" + } + }, + "trafikkmeldinger": { + "description": "Her ser dere farlige steder i trafikken som beboere har meldt inn.", + "heading": "Meldte trafikkfarer", + "moves": {} + } + }, + "confirm": "Lagre", + "description": "Herfra følger styret opp høringsinnspill, komitésøknader, oppslag og trafikkmeldinger fra beboerne.", + "links": {}, + "question": "Hva venter på styret akkurat nå?" +} +``` diff --git a/runs/tomtervel-nabohjelp-2026-09-22/llm/27-questions_trafikkomite_index.yaml.md b/runs/tomtervel-nabohjelp-2026-09-22/llm/27-questions_trafikkomite_index.yaml.md new file mode 100644 index 0000000..6d78020 --- /dev/null +++ b/runs/tomtervel-nabohjelp-2026-09-22/llm/27-questions_trafikkomite_index.yaml.md @@ -0,0 +1,78 @@ +You write the words for one page of a website for this business. + +Business: Tomter Vel +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. +Contact: Styret i Tomter Vel +Language to write in: nb + +Everyone the site serves: +- door medlem: for en husstand i Tomter som vil være med i velet, eller allerede er det; behind it: bli-medlem, endre-medlemskap +- door melde-fra: for noen som har sett noe i nabolaget som ikke er som det skal; behind it: trafikkfare, anleggsfeil +- door bidra: for noen som vil gjøre en innsats, eller si sin mening i en sak; behind it: horingsinnspill, hjelpe-til, komite +- door naboer: for en nabo som trenger en hånd, kan gi en, eller har noe å låne ut; behind it: trenger-hjelp, kan-hjelpe, dele-utstyr +- bli-medlem: en husstand i Tomter - wants: å bli medlem og få betalt kontingenten. Handled by kasserer. Stages: open -> betalt -> utmeldt. +- endre-medlemskap: et medlem som har flyttet, byttet e-post eller vil melde seg ut - wants: at velet har riktige opplysninger om dem. Handled by kasserer. Stages: open -> oppdatert. +- trafikkfare: en som har sett et farlig sted i trafikken - wants: at velet tar det opp med kommunen eller den som eier veien. Handled by trafikkomite. Stages: open -> tatt_opp -> ordnet -> avvist. +- anleggsfeil: en som ser at noe på lekeplassen eller stien er ødelagt - wants: at det blir fikset før noen skader seg. Handled by lekeplasskomite. Stages: open -> tatt_tak_i -> utbedret. +- horingsinnspill: en beboer som har en mening om en sak kommunen har på høring - wants: at velet tar det med i sitt svar. Handled by styret. Stages: open -> tatt_med -> ikke_tatt_med. +- hjelpe-til: en som vil hjelpe til på et arrangement eller en dugnad - wants: å bli satt opp på noe som passer dem. Handled by arrangementskomite. Stages: open -> kontaktet -> satt_opp -> takket_nei. +- komite: en som vil sitte i en komité - wants: en plass i den komiteen som driver med det de bryr seg om. Handled by styret. Stages: open -> plassert -> avslatt. +- trenger-hjelp: 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. Handled by nabohjelp. Stages: open -> formidlet -> ordnet -> ikke_lost. +- kan-hjelpe: en nabo som kan stille opp når noen trenger det - wants: å bli spurt når det passer. Handled by nabohjelp. Stages: open -> registrert -> trukket. +- dele-utstyr: en nabo som har noe å låne ut, eller trenger å låne noe - wants: et oppslag som naboene ser. Handled by styret. Stages: open -> lagt_ut -> tatt_ned. +- utlegg: en i en komité som har lagt ut for noe - wants: pengene tilbake. Handled by kasserer. Stages: open -> godkjent -> utbetalt -> avvist. + +The page: questions/trafikkomite/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": { + "trafikkmeldinger": { + "description": "", + "heading": "", + "moves": { + "open->avvist": "avvist>", + "open->tatt_opp": "tatt_opp>", + "tatt_opp->avvist": "avvist>", + "tatt_opp->ordnet": "ordnet>" + } + } + }, + "confirm": "", + "description": "", + "links": {}, + "question": "" +} + +Reply with the JSON object only. + +=== REPLY === +```json +{ + "buckets": { + "trafikkmeldinger": { + "description": "Meldinger fra naboer om farlige steder i trafikken, fra nye tips til saker dere har tatt videre.", + "heading": "Trafikkfarer naboene har meldt inn", + "moves": { + "open->avvist": "Avvis meldingen", + "open->tatt_opp": "Ta opp med kommunen", + "tatt_opp->avvist": "Avvis saken", + "tatt_opp->ordnet": "Meld som ordnet" + } + } + }, + "confirm": "Lagre", + "description": "Her følger trafikkomiteen opp farer naboene har meldt fra om, fra nytt tips til saken er ordnet eller avvist.", + "links": {}, + "question": "Hvilke trafikkfarer må vi følge opp nå?" +} +``` diff --git a/runs/tomtervel-nabohjelp-2026-09-22/model.json b/runs/tomtervel-nabohjelp-2026-09-22/model.json new file mode 100644 index 0000000..4c9ad8d --- /dev/null +++ b/runs/tomtervel-nabohjelp-2026-09-22/model.json @@ -0,0 +1,1467 @@ +{ + "buckets": { + "anleggsfeil": { + "desks": [ + { + "group": "lekeplasskomite", + "moves": [ + { + "from": "open", + "label": "Ta tak i dette", + "to": "tatt_tak_i" + }, + { + "from": "tatt_tak_i", + "label": "Meld som utbedret", + "to": "utbedret" + } + ], + "page": "/lekeplasskomite" + } + ], + "initial": "open", + "self_moves": [], + "transitions": { + "open": [ + "tatt_tak_i" + ], + "tatt_tak_i": [ + "utbedret" + ] + } + }, + "frivillige": { + "desks": [ + { + "group": "arrangementskomite", + "moves": [ + { + "from": "kontaktet", + "label": "Sett på oppgave", + "to": "satt_opp" + }, + { + "from": "kontaktet", + "label": "Takket nei", + "to": "takket_nei" + }, + { + "from": "open", + "label": "Har tatt kontakt", + "to": "kontaktet" + }, + { + "from": "open", + "label": "Takket nei", + "to": "takket_nei" + } + ], + "page": "/arrangementskomite" + } + ], + "initial": "open", + "self_moves": [], + "transitions": { + "kontaktet": [ + "satt_opp", + "takket_nei" + ], + "open": [ + "kontaktet", + "takket_nei" + ] + } + }, + "hjelpebehov": { + "desks": [ + { + "group": "nabohjelp", + "moves": [ + { + "from": "formidlet", + "label": "Hjelpen er gitt", + "to": "ordnet" + }, + { + "from": "formidlet", + "label": "Fikk ingen til å hjelpe", + "to": "ikke_lost" + }, + { + "from": "open", + "label": "Satt nabo på saken", + "to": "formidlet" + }, + { + "from": "open", + "label": "Fant ingen som kan", + "to": "ikke_lost" + } + ], + "page": "/nabohjelp" + } + ], + "initial": "open", + "self_moves": [ + "ordnet" + ], + "transitions": { + "formidlet": [ + "ordnet", + "ikke_lost" + ], + "open": [ + "formidlet", + "ikke_lost" + ] + } + }, + "hjelpere": { + "desks": [ + { + "group": "nabohjelp", + "moves": [ + { + "from": "open", + "label": "Tatt imot", + "to": "registrert" + }, + { + "from": "open", + "label": "Trukket seg", + "to": "trukket" + } + ], + "page": "/nabohjelp" + } + ], + "initial": "open", + "self_moves": [ + "trukket" + ], + "transitions": { + "open": [ + "registrert", + "trukket" + ] + } + }, + "husstander": { + "desks": [ + { + "group": "kasserer", + "moves": [ + { + "from": "open", + "label": "Kontingent betalt", + "to": "betalt" + }, + { + "from": "open", + "label": "Meld ut", + "to": "utmeldt" + } + ], + "page": "/kasserer" + } + ], + "initial": "open", + "self_moves": [], + "transitions": { + "open": [ + "betalt", + "utmeldt" + ] + } + }, + "innspill": { + "desks": [ + { + "group": "styret", + "moves": [ + { + "from": "open", + "label": "Ta med i svaret", + "to": "tatt_med" + }, + { + "from": "open", + "label": "Ikke ta med", + "to": "ikke_tatt_med" + } + ], + "page": "/styret" + } + ], + "initial": "open", + "self_moves": [], + "transitions": { + "open": [ + "tatt_med", + "ikke_tatt_med" + ] + } + }, + "komitesoknader": { + "desks": [ + { + "group": "styret", + "moves": [ + { + "from": "open", + "label": "Gi plass i komité", + "to": "plassert" + }, + { + "from": "open", + "label": "Avslå søknaden", + "to": "avslatt" + } + ], + "page": "/styret" + } + ], + "initial": "open", + "self_moves": [], + "transitions": { + "open": [ + "plassert", + "avslatt" + ] + } + }, + "medlemsendringer": { + "desks": [ + { + "group": "kasserer", + "moves": [ + { + "from": "open", + "label": "Opplysninger oppdatert", + "to": "oppdatert" + } + ], + "page": "/kasserer" + } + ], + "initial": "open", + "self_moves": [], + "transitions": { + "open": [ + "oppdatert" + ] + } + }, + "oppslag": { + "desks": [ + { + "group": "styret", + "moves": [ + { + "from": "open", + "label": "Legg ut oppslaget", + "to": "lagt_ut" + }, + { + "from": "open", + "label": "Ta ned oppslaget", + "to": "tatt_ned" + } + ], + "page": "/styret" + } + ], + "initial": "open", + "self_moves": [ + "tatt_ned" + ], + "transitions": { + "open": [ + "lagt_ut", + "tatt_ned" + ] + } + }, + "trafikkmeldinger": { + "desks": [ + { + "group": "styret", + "moves": [], + "page": "/styret" + }, + { + "group": "trafikkomite", + "moves": [ + { + "from": "open", + "label": "Ta opp med kommunen", + "to": "tatt_opp" + }, + { + "from": "open", + "label": "Avvis meldingen", + "to": "avvist" + }, + { + "from": "tatt_opp", + "label": "Meld som ordnet", + "to": "ordnet" + }, + { + "from": "tatt_opp", + "label": "Avvis saken", + "to": "avvist" + } + ], + "page": "/trafikkomite" + } + ], + "initial": "open", + "self_moves": [], + "transitions": { + "open": [ + "tatt_opp", + "avvist" + ], + "tatt_opp": [ + "ordnet", + "avvist" + ] + } + }, + "utlegg": { + "desks": [ + { + "group": "kasserer", + "moves": [ + { + "from": "godkjent", + "label": "Merk som utbetalt", + "to": "utbetalt" + }, + { + "from": "godkjent", + "label": "Avvis likevel", + "to": "avvist" + }, + { + "from": "open", + "label": "Godkjenn utlegg", + "to": "godkjent" + }, + { + "from": "open", + "label": "Avvis utlegg", + "to": "avvist" + } + ], + "page": "/kasserer" + } + ], + "initial": "open", + "self_moves": [], + "transitions": { + "godkjent": [ + "utbetalt", + "avvist" + ], + "open": [ + "godkjent", + "avvist" + ] + } + } + }, + "needs": [ + { + "done_when": [ + "betalt", + "utmeldt" + ], + "enters_as": null, + "handled_by": "kasserer", + "id": "bli-medlem", + "lands_in": "husstander", + "steps": [ + { + "alternative": "Vil du bli medlem eller endre medlemskapet?", + "expect": [ + "Vil du bli medlem eller endre medlemskapet?" + ], + "fields": [], + "options": [ + { + "description": "Meld deg inn i Tomter Vel, eller endre opplysningene dine som medlem.", + "name": "Vil du bli medlem eller endre medlemskapet?" + }, + { + "description": "Har du sett en trafikkfarlig plass eller noe ødelagt på lekeplassen eller stien? Meld fra her.", + "name": "Har du sett noe som bør fikses?" + }, + { + "description": "Si din mening om en høringssak, eller meld deg til en dugnad eller en komité.", + "name": "Vil du bidra eller si din mening?" + }, + { + "description": "Trenger du en hånd, kan du stille opp for andre, eller har du noe å låne ut? Her møtes naboer.", + "name": "Vil du hjelpe eller få hjelp av naboer?" + } + ], + "page": "/", + "question": "Hva vil du gjøre?" + }, + { + "alternative": "Meld deg inn i Tomter Vel", + "expect": [ + "Meld deg inn i Tomter Vel" + ], + "fields": [ + { + "label": "Navn", + "name": "navn", + "optional": false, + "options": [], + "type": "text" + }, + { + "label": "Adresse", + "name": "adresse", + "optional": false, + "options": [], + "type": "text" + }, + { + "label": "E-post", + "name": "epost", + "optional": false, + "options": [], + "type": "email" + }, + { + "label": "Telefon", + "name": "telefon", + "optional": true, + "options": [], + "type": "tel" + } + ], + "options": [ + { + "description": "Meld deg inn og betal kontingenten, så er du med.", + "name": "Meld deg inn i Tomter Vel" + }, + { + "description": "Har du flyttet, byttet e-post eller vil melde deg ut? Si fra her.", + "name": "Oppdater opplysningene dine" + } + ], + "page": "/medlem", + "question": "Vil du bli medlem, eller endre medlemskapet ditt?" + } + ], + "success": [ + "betalt" + ], + "wants": "å bli medlem og få betalt kontingenten", + "who": "en husstand i Tomter" + }, + { + "done_when": [ + "oppdatert" + ], + "enters_as": null, + "handled_by": "kasserer", + "id": "endre-medlemskap", + "lands_in": "medlemsendringer", + "steps": [ + { + "alternative": "Vil du bli medlem eller endre medlemskapet?", + "expect": [ + "Vil du bli medlem eller endre medlemskapet?" + ], + "fields": [], + "options": [ + { + "description": "Meld deg inn i Tomter Vel, eller endre opplysningene dine som medlem.", + "name": "Vil du bli medlem eller endre medlemskapet?" + }, + { + "description": "Har du sett en trafikkfarlig plass eller noe ødelagt på lekeplassen eller stien? Meld fra her.", + "name": "Har du sett noe som bør fikses?" + }, + { + "description": "Si din mening om en høringssak, eller meld deg til en dugnad eller en komité.", + "name": "Vil du bidra eller si din mening?" + }, + { + "description": "Trenger du en hånd, kan du stille opp for andre, eller har du noe å låne ut? Her møtes naboer.", + "name": "Vil du hjelpe eller få hjelp av naboer?" + } + ], + "page": "/", + "question": "Hva vil du gjøre?" + }, + { + "alternative": "Oppdater opplysningene dine", + "expect": [ + "Oppdater opplysningene dine" + ], + "fields": [ + { + "label": "Navn", + "name": "navn", + "optional": false, + "options": [], + "type": "text" + }, + { + "label": "Adresse", + "name": "adresse", + "optional": false, + "options": [], + "type": "text" + }, + { + "label": "Hva vil du endre?", + "name": "hva_er_nytt", + "optional": false, + "options": [], + "type": "textarea" + } + ], + "options": [ + { + "description": "Meld deg inn og betal kontingenten, så er du med.", + "name": "Meld deg inn i Tomter Vel" + }, + { + "description": "Har du flyttet, byttet e-post eller vil melde deg ut? Si fra her.", + "name": "Oppdater opplysningene dine" + } + ], + "page": "/medlem", + "question": "Vil du bli medlem, eller endre medlemskapet ditt?" + } + ], + "success": [ + "oppdatert" + ], + "wants": "at velet har riktige opplysninger om dem", + "who": "et medlem som har flyttet, byttet e-post eller vil melde seg ut" + }, + { + "done_when": [ + "ordnet", + "avvist" + ], + "enters_as": null, + "handled_by": "trafikkomite", + "id": "trafikkfare", + "lands_in": "trafikkmeldinger", + "steps": [ + { + "alternative": "Har du sett noe som bør fikses?", + "expect": [ + "Har du sett noe som bør fikses?" + ], + "fields": [], + "options": [ + { + "description": "Meld deg inn i Tomter Vel, eller endre opplysningene dine som medlem.", + "name": "Vil du bli medlem eller endre medlemskapet?" + }, + { + "description": "Har du sett en trafikkfarlig plass eller noe ødelagt på lekeplassen eller stien? Meld fra her.", + "name": "Har du sett noe som bør fikses?" + }, + { + "description": "Si din mening om en høringssak, eller meld deg til en dugnad eller en komité.", + "name": "Vil du bidra eller si din mening?" + }, + { + "description": "Trenger du en hånd, kan du stille opp for andre, eller har du noe å låne ut? Her møtes naboer.", + "name": "Vil du hjelpe eller få hjelp av naboer?" + } + ], + "page": "/", + "question": "Hva vil du gjøre?" + }, + { + "alternative": "Få gjort noe med en farlig vei", + "expect": [ + "Få gjort noe med en farlig vei" + ], + "fields": [ + { + "label": "Hvor er det?", + "name": "hvor", + "optional": false, + "options": [], + "type": "text" + }, + { + "label": "Hva er farlig?", + "name": "hva", + "optional": false, + "options": [], + "type": "textarea" + }, + { + "label": "E-post", + "name": "epost", + "optional": true, + "options": [], + "type": "email" + } + ], + "options": [ + { + "description": "Sett du et farlig sted i trafikken? Meld fra, så tar vi det opp med kommunen eller veieier.", + "name": "Få gjort noe med en farlig vei" + }, + { + "description": "Er noe på lekeplassen eller stien ødelagt? Si ifra, så tar vi tak i det før noen skader seg.", + "name": "Få fikset det som er ødelagt" + } + ], + "page": "/melde-fra", + "question": "Hva har du sett?" + } + ], + "success": [ + "ordnet" + ], + "wants": "at velet tar det opp med kommunen eller den som eier veien", + "who": "en som har sett et farlig sted i trafikken" + }, + { + "done_when": [ + "utbedret" + ], + "enters_as": null, + "handled_by": "lekeplasskomite", + "id": "anleggsfeil", + "lands_in": "anleggsfeil", + "steps": [ + { + "alternative": "Har du sett noe som bør fikses?", + "expect": [ + "Har du sett noe som bør fikses?" + ], + "fields": [], + "options": [ + { + "description": "Meld deg inn i Tomter Vel, eller endre opplysningene dine som medlem.", + "name": "Vil du bli medlem eller endre medlemskapet?" + }, + { + "description": "Har du sett en trafikkfarlig plass eller noe ødelagt på lekeplassen eller stien? Meld fra her.", + "name": "Har du sett noe som bør fikses?" + }, + { + "description": "Si din mening om en høringssak, eller meld deg til en dugnad eller en komité.", + "name": "Vil du bidra eller si din mening?" + }, + { + "description": "Trenger du en hånd, kan du stille opp for andre, eller har du noe å låne ut? Her møtes naboer.", + "name": "Vil du hjelpe eller få hjelp av naboer?" + } + ], + "page": "/", + "question": "Hva vil du gjøre?" + }, + { + "alternative": "Få fikset det som er ødelagt", + "expect": [ + "Få fikset det som er ødelagt" + ], + "fields": [ + { + "label": "Hvor er det?", + "name": "hvor", + "optional": false, + "options": [ + "Lekeplassen", + "Elvestien", + "Skøytebanen", + "Et annet sted" + ], + "type": "select" + }, + { + "label": "Hva er ødelagt?", + "name": "hva", + "optional": false, + "options": [], + "type": "textarea" + } + ], + "options": [ + { + "description": "Sett du et farlig sted i trafikken? Meld fra, så tar vi det opp med kommunen eller veieier.", + "name": "Få gjort noe med en farlig vei" + }, + { + "description": "Er noe på lekeplassen eller stien ødelagt? Si ifra, så tar vi tak i det før noen skader seg.", + "name": "Få fikset det som er ødelagt" + } + ], + "page": "/melde-fra", + "question": "Hva har du sett?" + } + ], + "success": [ + "utbedret" + ], + "wants": "at det blir fikset før noen skader seg", + "who": "en som ser at noe på lekeplassen eller stien er ødelagt" + }, + { + "done_when": [ + "tatt_med", + "ikke_tatt_med" + ], + "enters_as": null, + "handled_by": "styret", + "id": "horingsinnspill", + "lands_in": "innspill", + "steps": [ + { + "alternative": "Vil du bidra eller si din mening?", + "expect": [ + "Vil du bidra eller si din mening?" + ], + "fields": [], + "options": [ + { + "description": "Meld deg inn i Tomter Vel, eller endre opplysningene dine som medlem.", + "name": "Vil du bli medlem eller endre medlemskapet?" + }, + { + "description": "Har du sett en trafikkfarlig plass eller noe ødelagt på lekeplassen eller stien? Meld fra her.", + "name": "Har du sett noe som bør fikses?" + }, + { + "description": "Si din mening om en høringssak, eller meld deg til en dugnad eller en komité.", + "name": "Vil du bidra eller si din mening?" + }, + { + "description": "Trenger du en hånd, kan du stille opp for andre, eller har du noe å låne ut? Her møtes naboer.", + "name": "Vil du hjelpe eller få hjelp av naboer?" + } + ], + "page": "/", + "question": "Hva vil du gjøre?" + }, + { + "alternative": "Få din mening med i velets høringssvar", + "expect": [ + "Få din mening med i velets høringssvar" + ], + "fields": [ + { + "label": "Navn", + "name": "navn", + "optional": false, + "options": [], + "type": "text" + }, + { + "label": "Hvilken sak gjelder det?", + "name": "sak", + "optional": false, + "options": [], + "type": "text" + }, + { + "label": "Hva mener du?", + "name": "innspill", + "optional": false, + "options": [], + "type": "textarea" + } + ], + "options": [ + { + "description": "Har kommunen en sak på høring du mener noe om? Send oss innspillet, så tar vi det med i velets svar.", + "name": "Få din mening med i velets høringssvar" + }, + { + "description": "Sett av litt tid på et arrangement eller en dugnad. Vi finner noe som passer deg.", + "name": "Gi en hånd på neste arrangement eller dugnad" + }, + { + "description": "Vi er sju komiteer som trenger folk. Si hvilken som passer deg, så tar vi kontakt.", + "name": "Få en plass i komiteen som passer deg" + } + ], + "page": "/bidra", + "question": "Hva har du lyst til å bidra med?" + } + ], + "success": [ + "tatt_med" + ], + "wants": "at velet tar det med i sitt svar", + "who": "en beboer som har en mening om en sak kommunen har på høring" + }, + { + "done_when": [ + "satt_opp", + "takket_nei" + ], + "enters_as": null, + "handled_by": "arrangementskomite", + "id": "hjelpe-til", + "lands_in": "frivillige", + "steps": [ + { + "alternative": "Vil du bidra eller si din mening?", + "expect": [ + "Vil du bidra eller si din mening?" + ], + "fields": [], + "options": [ + { + "description": "Meld deg inn i Tomter Vel, eller endre opplysningene dine som medlem.", + "name": "Vil du bli medlem eller endre medlemskapet?" + }, + { + "description": "Har du sett en trafikkfarlig plass eller noe ødelagt på lekeplassen eller stien? Meld fra her.", + "name": "Har du sett noe som bør fikses?" + }, + { + "description": "Si din mening om en høringssak, eller meld deg til en dugnad eller en komité.", + "name": "Vil du bidra eller si din mening?" + }, + { + "description": "Trenger du en hånd, kan du stille opp for andre, eller har du noe å låne ut? Her møtes naboer.", + "name": "Vil du hjelpe eller få hjelp av naboer?" + } + ], + "page": "/", + "question": "Hva vil du gjøre?" + }, + { + "alternative": "Gi en hånd på neste arrangement eller dugnad", + "expect": [ + "Gi en hånd på neste arrangement eller dugnad" + ], + "fields": [ + { + "label": "Navn", + "name": "navn", + "optional": false, + "options": [], + "type": "text" + }, + { + "label": "Telefon", + "name": "telefon", + "optional": false, + "options": [], + "type": "tel" + }, + { + "label": "Hva kan du tenke deg å hjelpe til med?", + "name": "hva", + "optional": false, + "options": [ + "17. mai", + "Juletregranstenning", + "Skøytedag", + "Dugnad på elvestien", + "Det som trengs" + ], + "type": "select" + } + ], + "options": [ + { + "description": "Har kommunen en sak på høring du mener noe om? Send oss innspillet, så tar vi det med i velets svar.", + "name": "Få din mening med i velets høringssvar" + }, + { + "description": "Sett av litt tid på et arrangement eller en dugnad. Vi finner noe som passer deg.", + "name": "Gi en hånd på neste arrangement eller dugnad" + }, + { + "description": "Vi er sju komiteer som trenger folk. Si hvilken som passer deg, så tar vi kontakt.", + "name": "Få en plass i komiteen som passer deg" + } + ], + "page": "/bidra", + "question": "Hva har du lyst til å bidra med?" + } + ], + "success": [ + "satt_opp" + ], + "wants": "å bli satt opp på noe som passer dem", + "who": "en som vil hjelpe til på et arrangement eller en dugnad" + }, + { + "done_when": [ + "plassert", + "avslatt" + ], + "enters_as": null, + "handled_by": "styret", + "id": "komite", + "lands_in": "komitesoknader", + "steps": [ + { + "alternative": "Vil du bidra eller si din mening?", + "expect": [ + "Vil du bidra eller si din mening?" + ], + "fields": [], + "options": [ + { + "description": "Meld deg inn i Tomter Vel, eller endre opplysningene dine som medlem.", + "name": "Vil du bli medlem eller endre medlemskapet?" + }, + { + "description": "Har du sett en trafikkfarlig plass eller noe ødelagt på lekeplassen eller stien? Meld fra her.", + "name": "Har du sett noe som bør fikses?" + }, + { + "description": "Si din mening om en høringssak, eller meld deg til en dugnad eller en komité.", + "name": "Vil du bidra eller si din mening?" + }, + { + "description": "Trenger du en hånd, kan du stille opp for andre, eller har du noe å låne ut? Her møtes naboer.", + "name": "Vil du hjelpe eller få hjelp av naboer?" + } + ], + "page": "/", + "question": "Hva vil du gjøre?" + }, + { + "alternative": "Få en plass i komiteen som passer deg", + "expect": [ + "Få en plass i komiteen som passer deg" + ], + "fields": [ + { + "label": "Navn", + "name": "navn", + "optional": false, + "options": [], + "type": "text" + }, + { + "label": "E-post", + "name": "epost", + "optional": false, + "options": [], + "type": "email" + }, + { + "label": "Hvilken komité har du lyst til å bli med i?", + "name": "komite", + "optional": false, + "options": [ + "Arrangementer", + "Elvesti", + "Høringsinstans", + "Leke- og møteplasser", + "Miljøgate", + "Pendlerforhold", + "Trafikkforhold" + ], + "type": "select" + } + ], + "options": [ + { + "description": "Har kommunen en sak på høring du mener noe om? Send oss innspillet, så tar vi det med i velets svar.", + "name": "Få din mening med i velets høringssvar" + }, + { + "description": "Sett av litt tid på et arrangement eller en dugnad. Vi finner noe som passer deg.", + "name": "Gi en hånd på neste arrangement eller dugnad" + }, + { + "description": "Vi er sju komiteer som trenger folk. Si hvilken som passer deg, så tar vi kontakt.", + "name": "Få en plass i komiteen som passer deg" + } + ], + "page": "/bidra", + "question": "Hva har du lyst til å bidra med?" + } + ], + "success": [ + "plassert" + ], + "wants": "en plass i den komiteen som driver med det de bryr seg om", + "who": "en som vil sitte i en komité" + }, + { + "done_when": [ + "ordnet", + "ikke_lost" + ], + "enters_as": null, + "handled_by": "nabohjelp", + "id": "trenger-hjelp", + "lands_in": "hjelpebehov", + "steps": [ + { + "alternative": "Vil du hjelpe eller få hjelp av naboer?", + "expect": [ + "Vil du hjelpe eller få hjelp av naboer?" + ], + "fields": [], + "options": [ + { + "description": "Meld deg inn i Tomter Vel, eller endre opplysningene dine som medlem.", + "name": "Vil du bli medlem eller endre medlemskapet?" + }, + { + "description": "Har du sett en trafikkfarlig plass eller noe ødelagt på lekeplassen eller stien? Meld fra her.", + "name": "Har du sett noe som bør fikses?" + }, + { + "description": "Si din mening om en høringssak, eller meld deg til en dugnad eller en komité.", + "name": "Vil du bidra eller si din mening?" + }, + { + "description": "Trenger du en hånd, kan du stille opp for andre, eller har du noe å låne ut? Her møtes naboer.", + "name": "Vil du hjelpe eller få hjelp av naboer?" + } + ], + "page": "/", + "question": "Hva vil du gjøre?" + }, + { + "alternative": "Få en nabo til å stille opp", + "expect": [ + "Få en nabo til å stille opp" + ], + "fields": [ + { + "label": "Navn", + "name": "navn", + "optional": false, + "options": [], + "type": "text" + }, + { + "label": "E-post", + "name": "email", + "optional": false, + "options": [], + "type": "email" + }, + { + "label": "Adresse", + "name": "adresse", + "optional": false, + "options": [], + "type": "text" + }, + { + "label": "Hva trenger du hjelp med?", + "name": "hva", + "optional": false, + "options": [], + "type": "textarea" + }, + { + "label": "Telefon", + "name": "telefon", + "optional": true, + "options": [], + "type": "tel" + } + ], + "options": [ + { + "description": "Trenger du en hånd med snømåking, handling eller skyss? Fortell hva du trenger, så finner vi en nabo.", + "name": "Få en nabo til å stille opp" + }, + { + "description": "Si fra om hva du kan bidra med, så tar nabohjelpa kontakt når det trengs.", + "name": "Bli en nabo andre kan spørre" + }, + { + "description": "Legg ut det du har til overs, eller si fra om noe du gjerne vil låne av naboene.", + "name": "Del utstyr med naboene" + } + ], + "page": "/naboer", + "question": "Trenger du en nabo, eller vil du være en?" + } + ], + "success": [ + "ordnet" + ], + "wants": "at en nabo stiller opp", + "who": "en beboer som ikke får til noe selv for tiden, som snømåking, handling eller en skyss" + }, + { + "done_when": [ + "registrert", + "trukket" + ], + "enters_as": null, + "handled_by": "nabohjelp", + "id": "kan-hjelpe", + "lands_in": "hjelpere", + "steps": [ + { + "alternative": "Vil du hjelpe eller få hjelp av naboer?", + "expect": [ + "Vil du hjelpe eller få hjelp av naboer?" + ], + "fields": [], + "options": [ + { + "description": "Meld deg inn i Tomter Vel, eller endre opplysningene dine som medlem.", + "name": "Vil du bli medlem eller endre medlemskapet?" + }, + { + "description": "Har du sett en trafikkfarlig plass eller noe ødelagt på lekeplassen eller stien? Meld fra her.", + "name": "Har du sett noe som bør fikses?" + }, + { + "description": "Si din mening om en høringssak, eller meld deg til en dugnad eller en komité.", + "name": "Vil du bidra eller si din mening?" + }, + { + "description": "Trenger du en hånd, kan du stille opp for andre, eller har du noe å låne ut? Her møtes naboer.", + "name": "Vil du hjelpe eller få hjelp av naboer?" + } + ], + "page": "/", + "question": "Hva vil du gjøre?" + }, + { + "alternative": "Bli en nabo andre kan spørre", + "expect": [ + "Bli en nabo andre kan spørre" + ], + "fields": [ + { + "label": "Navn", + "name": "navn", + "optional": false, + "options": [], + "type": "text" + }, + { + "label": "E-post", + "name": "email", + "optional": false, + "options": [], + "type": "email" + }, + { + "label": "Telefon", + "name": "telefon", + "optional": false, + "options": [], + "type": "tel" + }, + { + "label": "Hva kan du hjelpe med?", + "name": "kan", + "optional": false, + "options": [ + "Snømåking", + "Handling", + "Kjøring", + "Småfiks i huset", + "En prat og litt selskap", + "Det som trengs" + ], + "type": "select" + } + ], + "options": [ + { + "description": "Trenger du en hånd med snømåking, handling eller skyss? Fortell hva du trenger, så finner vi en nabo.", + "name": "Få en nabo til å stille opp" + }, + { + "description": "Si fra om hva du kan bidra med, så tar nabohjelpa kontakt når det trengs.", + "name": "Bli en nabo andre kan spørre" + }, + { + "description": "Legg ut det du har til overs, eller si fra om noe du gjerne vil låne av naboene.", + "name": "Del utstyr med naboene" + } + ], + "page": "/naboer", + "question": "Trenger du en nabo, eller vil du være en?" + } + ], + "success": [ + "registrert" + ], + "wants": "å bli spurt når det passer", + "who": "en nabo som kan stille opp når noen trenger det" + }, + { + "done_when": [ + "lagt_ut", + "tatt_ned" + ], + "enters_as": null, + "handled_by": "styret", + "id": "dele-utstyr", + "lands_in": "oppslag", + "steps": [ + { + "alternative": "Vil du hjelpe eller få hjelp av naboer?", + "expect": [ + "Vil du hjelpe eller få hjelp av naboer?" + ], + "fields": [], + "options": [ + { + "description": "Meld deg inn i Tomter Vel, eller endre opplysningene dine som medlem.", + "name": "Vil du bli medlem eller endre medlemskapet?" + }, + { + "description": "Har du sett en trafikkfarlig plass eller noe ødelagt på lekeplassen eller stien? Meld fra her.", + "name": "Har du sett noe som bør fikses?" + }, + { + "description": "Si din mening om en høringssak, eller meld deg til en dugnad eller en komité.", + "name": "Vil du bidra eller si din mening?" + }, + { + "description": "Trenger du en hånd, kan du stille opp for andre, eller har du noe å låne ut? Her møtes naboer.", + "name": "Vil du hjelpe eller få hjelp av naboer?" + } + ], + "page": "/", + "question": "Hva vil du gjøre?" + }, + { + "alternative": "Del utstyr med naboene", + "expect": [ + "Del utstyr med naboene" + ], + "fields": [ + { + "label": "Navn", + "name": "navn", + "optional": false, + "options": [], + "type": "text" + }, + { + "label": "E-post", + "name": "email", + "optional": false, + "options": [], + "type": "email" + }, + { + "label": "Har du, eller trenger du?", + "name": "har_eller_trenger", + "optional": false, + "options": [ + "Jeg har noe å låne ut", + "Jeg trenger å låne noe" + ], + "type": "select" + }, + { + "label": "Hva gjelder det?", + "name": "hva", + "optional": false, + "options": [], + "type": "textarea" + } + ], + "options": [ + { + "description": "Trenger du en hånd med snømåking, handling eller skyss? Fortell hva du trenger, så finner vi en nabo.", + "name": "Få en nabo til å stille opp" + }, + { + "description": "Si fra om hva du kan bidra med, så tar nabohjelpa kontakt når det trengs.", + "name": "Bli en nabo andre kan spørre" + }, + { + "description": "Legg ut det du har til overs, eller si fra om noe du gjerne vil låne av naboene.", + "name": "Del utstyr med naboene" + } + ], + "page": "/naboer", + "question": "Trenger du en nabo, eller vil du være en?" + } + ], + "success": [ + "lagt_ut" + ], + "wants": "et oppslag som naboene ser", + "who": "en nabo som har noe å låne ut, eller trenger å låne noe" + }, + { + "done_when": [ + "utbetalt", + "avvist" + ], + "enters_as": "komiteer", + "handled_by": "kasserer", + "id": "utlegg", + "lands_in": "utlegg", + "steps": [ + { + "alternative": "Få tilbake det du har lagt ut for", + "expect": [ + "Få tilbake det du har lagt ut for" + ], + "fields": [ + { + "label": "Navn", + "name": "navn", + "optional": false, + "options": [], + "type": "text" + }, + { + "label": "Beløp", + "name": "belop", + "optional": false, + "options": [], + "type": "text" + }, + { + "label": "Hva gjaldt det", + "name": "hva", + "optional": false, + "options": [], + "type": "textarea" + } + ], + "options": [ + { + "description": "Har du lagt ut for noe til komiteen, kan du melde det inn her, så ordner kasserer utbetaling.", + "name": "Få tilbake det du har lagt ut for" + } + ], + "page": "/komiteer/utlegg", + "question": "Har du lagt ut for noe komiteen skal betale?" + } + ], + "success": [ + "utbetalt" + ], + "wants": "pengene tilbake", + "who": "en i en komité som har lagt ut for noe" + } + ], + "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." + } + ] +} \ No newline at end of file diff --git a/runs/tomtervel-nabohjelp-2026-09-22/needs.yaml b/runs/tomtervel-nabohjelp-2026-09-22/needs.yaml new file mode 100644 index 0000000..4896e29 --- /dev/null +++ b/runs/tomtervel-nabohjelp-2026-09-22/needs.yaml @@ -0,0 +1,265 @@ +needs: +- done_when: + - betalt + - utmeldt + enters: / + handled_by: kasserer + id: bli-medlem + lands_in: husstander + max_fields: 3 + max_steps: 2 + stages: + - open + - betalt + - utmeldt + success: + - betalt + via: Vil du bli medlem eller endre medlemskapet? + wants: å bli medlem og få betalt kontingenten + who: en husstand i Tomter +- done_when: + - oppdatert + enters: / + handled_by: kasserer + id: endre-medlemskap + lands_in: medlemsendringer + max_fields: 3 + max_steps: 2 + stages: + - open + - oppdatert + success: + - oppdatert + via: Vil du bli medlem eller endre medlemskapet? + wants: at velet har riktige opplysninger om dem + who: et medlem som har flyttet, byttet e-post eller vil melde seg ut +- done_when: + - ordnet + - avvist + enters: / + handled_by: trafikkomite + id: trafikkfare + lands_in: trafikkmeldinger + max_fields: 2 + max_steps: 2 + stages: + - open + - tatt_opp + - ordnet + - avvist + success: + - ordnet + via: Har du sett noe som bør fikses? + wants: at velet tar det opp med kommunen eller den som eier veien + who: en som har sett et farlig sted i trafikken +- done_when: + - utbedret + enters: / + handled_by: lekeplasskomite + id: anleggsfeil + lands_in: anleggsfeil + max_fields: 2 + max_steps: 2 + stages: + - open + - tatt_tak_i + - utbedret + success: + - utbedret + via: Har du sett noe som bør fikses? + wants: at det blir fikset før noen skader seg + who: en som ser at noe på lekeplassen eller stien er ødelagt +- done_when: + - tatt_med + - ikke_tatt_med + enters: / + handled_by: styret + id: horingsinnspill + lands_in: innspill + max_fields: 3 + max_steps: 2 + stages: + - open + - tatt_med + - ikke_tatt_med + success: + - tatt_med + via: Vil du bidra eller si din mening? + wants: at velet tar det med i sitt svar + who: en beboer som har en mening om en sak kommunen har på høring +- done_when: + - satt_opp + - takket_nei + enters: / + handled_by: arrangementskomite + id: hjelpe-til + lands_in: frivillige + max_fields: 3 + max_steps: 2 + stages: + - open + - kontaktet + - satt_opp + - takket_nei + success: + - satt_opp + via: Vil du bidra eller si din mening? + wants: å bli satt opp på noe som passer dem + who: en som vil hjelpe til på et arrangement eller en dugnad +- done_when: + - plassert + - avslatt + enters: / + handled_by: styret + id: komite + lands_in: komitesoknader + max_fields: 3 + max_steps: 2 + stages: + - open + - plassert + - avslatt + success: + - plassert + via: Vil du bidra eller si din mening? + wants: en plass i den komiteen som driver med det de bryr seg om + who: en som vil sitte i en komité +- done_when: + - ordnet + - ikke_lost + enters: / + handled_by: nabohjelp + id: trenger-hjelp + lands_in: hjelpebehov + max_fields: 4 + max_steps: 2 + stages: + - open + - formidlet + - ordnet + - ikke_lost + success: + - ordnet + via: Vil du hjelpe eller få hjelp av naboer? + wants: at en nabo stiller opp + who: en beboer som ikke får til noe selv for tiden, som snømåking, handling eller en skyss +- done_when: + - registrert + - trukket + enters: / + handled_by: nabohjelp + id: kan-hjelpe + lands_in: hjelpere + max_fields: 4 + max_steps: 2 + stages: + - open + - registrert + - trukket + success: + - registrert + via: Vil du hjelpe eller få hjelp av naboer? + wants: å bli spurt når det passer + who: en nabo som kan stille opp når noen trenger det +- done_when: + - lagt_ut + - tatt_ned + enters: / + handled_by: styret + id: dele-utstyr + lands_in: oppslag + max_fields: 4 + max_steps: 2 + stages: + - open + - lagt_ut + - tatt_ned + success: + - lagt_ut + via: Vil du hjelpe eller få hjelp av naboer? + wants: et oppslag som naboene ser + who: en nabo som har noe å låne ut, eller trenger å låne noe +- done_when: + - utbetalt + - avvist + enters: /komiteer/utlegg + enters_as: komiteer + handled_by: kasserer + id: utlegg + lands_in: utlegg + max_fields: 3 + max_steps: 1 + stages: + - open + - godkjent + - utbetalt + - avvist + success: + - utbetalt + via: Få tilbake det du har lagt ut for + wants: pengene tilbake + who: en i en komité som har lagt ut for noe +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. diff --git a/runs/tomtervel-nabohjelp-2026-09-22/questions/arrangementskomite/_section.yaml b/runs/tomtervel-nabohjelp-2026-09-22/questions/arrangementskomite/_section.yaml new file mode 100644 index 0000000..7c3b4ae --- /dev/null +++ b/runs/tomtervel-nabohjelp-2026-09-22/questions/arrangementskomite/_section.yaml @@ -0,0 +1 @@ +qualifies: arrangementskomite diff --git a/runs/tomtervel-nabohjelp-2026-09-22/questions/arrangementskomite/index.yaml b/runs/tomtervel-nabohjelp-2026-09-22/questions/arrangementskomite/index.yaml new file mode 100644 index 0000000..28ee618 --- /dev/null +++ b/runs/tomtervel-nabohjelp-2026-09-22/questions/arrangementskomite/index.yaml @@ -0,0 +1,32 @@ +alternatives: +- action: /arrangementskomite + consequence: + - Lagre + description: Her ser du hvem som har sagt de vil hjelpe til, og hva de er satt opp på. + features: + - description: '' + name: '' + resource: + requires_group: arrangementskomite + source: + bucket: frivillige + kind: kv + transitions: + - from: kontaktet + label: Sett på oppgave + to: satt_opp + - from: kontaktet + label: Takket nei + to: takket_nei + - from: open + label: Har tatt kontakt + to: kontaktet + - from: open + label: Takket nei + to: takket_nei + name: Frivillige til arrangementer og dugnad +description: Oversikt over frivillige som vil hjelpe til, så du kan sette dem opp på noe som passer. +name: Hvem kan hjelpe til, og hva skal de gjøre? +responsible: + contact: post@tomtervel.example + name: Styret i Tomter Vel diff --git a/runs/tomtervel-nabohjelp-2026-09-22/questions/bidra/index.yaml b/runs/tomtervel-nabohjelp-2026-09-22/questions/bidra/index.yaml new file mode 100644 index 0000000..0f20574 --- /dev/null +++ b/runs/tomtervel-nabohjelp-2026-09-22/questions/bidra/index.yaml @@ -0,0 +1,74 @@ +alternatives: +- action: /received/horingsinnspill + consequence: + - Send innspill + description: Har kommunen en sak på høring du mener noe om? Send oss innspillet, så tar vi det med i velets svar. + features: + - name: Send et høringsinnspill + requirements: + - label: Navn + name: navn + type: text + - label: Hvilken sak gjelder det? + name: sak + type: text + - label: Hva mener du? + name: innspill + type: textarea + name: Få din mening med i velets høringssvar + record_as: innspill +- action: /received/hjelpe-til + consequence: + - Meld meg på + description: Sett av litt tid på et arrangement eller en dugnad. Vi finner noe som passer deg. + features: + - name: Bli med å hjelpe + requirements: + - label: Navn + name: navn + type: text + - label: Telefon + name: telefon + type: tel + - label: Hva kan du tenke deg å hjelpe til med? + name: hva + options: + - 17. mai + - Juletregranstenning + - Skøytedag + - Dugnad på elvestien + - Det som trengs + type: select + name: Gi en hånd på neste arrangement eller dugnad + record_as: frivillige +- action: /received/komite + consequence: + - Meld interesse + description: Vi er sju komiteer som trenger folk. Si hvilken som passer deg, så tar vi kontakt. + features: + - name: Bli med i en komité + requirements: + - label: Navn + name: navn + type: text + - label: E-post + name: epost + type: email + - label: Hvilken komité har du lyst til å bli med i? + name: komite + options: + - Arrangementer + - Elvesti + - Høringsinstans + - Leke- og møteplasser + - Miljøgate + - Pendlerforhold + - Trafikkforhold + type: select + name: Få en plass i komiteen som passer deg + record_as: komitesoknader +description: Vil du bidra med noe for Tomter? Her finner du veien inn, enten det er en dugnadsøkt, en mening om en høringssak eller en plass i en komité. +name: Hva har du lyst til å bidra med? +responsible: + contact: post@tomtervel.example + name: Styret i Tomter Vel diff --git a/runs/tomtervel-nabohjelp-2026-09-22/questions/decide/dele-utstyr.yaml b/runs/tomtervel-nabohjelp-2026-09-22/questions/decide/dele-utstyr.yaml new file mode 100644 index 0000000..5e174d1 --- /dev/null +++ b/runs/tomtervel-nabohjelp-2026-09-22/questions/decide/dele-utstyr.yaml @@ -0,0 +1,9 @@ +alternatives: +- description: Oppslaget forsvinner fra siden. Bruk denne når det er lånt bort eller du ikke vil låne det ut lenger. + name: Ta ned oppslaget ditt + self_transition: + bucket: oppslag + label: Ta ned oppslaget + to: tatt_ned +description: Her styrer du oppslaget om det du har lånt ut. +name: Vil du ta ned oppslaget? diff --git a/runs/tomtervel-nabohjelp-2026-09-22/questions/decide/kan-hjelpe.yaml b/runs/tomtervel-nabohjelp-2026-09-22/questions/decide/kan-hjelpe.yaml new file mode 100644 index 0000000..3139f3e --- /dev/null +++ b/runs/tomtervel-nabohjelp-2026-09-22/questions/decide/kan-hjelpe.yaml @@ -0,0 +1,9 @@ +alternatives: +- description: Da fjerner vi deg fra lista over naboer nabohjelpa kan spørre. + name: Slutt å bli spurt + self_transition: + bucket: hjelpere + label: Trekk meg + to: trukket +description: Her ser du hvem som har fått beskjed om at du kan hjelpe, og kan trekke deg om det ikke passer lenger. +name: Vil du fortsatt stå på lista over naboer som kan hjelpe? diff --git a/runs/tomtervel-nabohjelp-2026-09-22/questions/decide/trenger-hjelp.yaml b/runs/tomtervel-nabohjelp-2026-09-22/questions/decide/trenger-hjelp.yaml new file mode 100644 index 0000000..ad92cf3 --- /dev/null +++ b/runs/tomtervel-nabohjelp-2026-09-22/questions/decide/trenger-hjelp.yaml @@ -0,0 +1,9 @@ +alternatives: +- description: Du fikk hjelpen du trengte. Vi merker saken som løst og gir beskjed til den som hjalp til. + name: Meld at hjelpen kom fram + self_transition: + bucket: hjelpebehov + label: Ja, det ordnet seg + to: ordnet +description: Her sier du fra om hva som skjedde med hjelpen naboen tilbød. +name: Ordnet det seg? diff --git a/runs/tomtervel-nabohjelp-2026-09-22/questions/index.yaml b/runs/tomtervel-nabohjelp-2026-09-22/questions/index.yaml new file mode 100644 index 0000000..b52b2b0 --- /dev/null +++ b/runs/tomtervel-nabohjelp-2026-09-22/questions/index.yaml @@ -0,0 +1,26 @@ +alternatives: +- action: /medlem + consequence: + - Bli medlem + description: Meld deg inn i Tomter Vel, eller endre opplysningene dine som medlem. + name: Vil du bli medlem eller endre medlemskapet? +- action: /melde-fra + consequence: + - Meld fra + description: Har du sett en trafikkfarlig plass eller noe ødelagt på lekeplassen eller stien? Meld fra her. + name: Har du sett noe som bør fikses? +- action: /bidra + consequence: + - Bidra + description: Si din mening om en høringssak, eller meld deg til en dugnad eller en komité. + name: Vil du bidra eller si din mening? +- action: /naboer + consequence: + - Naboer + description: Trenger du en hånd, kan du stille opp for andre, eller har du noe å låne ut? Her møtes naboer. + name: Vil du hjelpe eller få hjelp av naboer? +description: Hva vil du hjelpe oss med i dag? +name: Hva vil du gjøre? +responsible: + contact: post@tomtervel.example + name: Styret i Tomter Vel diff --git a/runs/tomtervel-nabohjelp-2026-09-22/questions/kasserer/_section.yaml b/runs/tomtervel-nabohjelp-2026-09-22/questions/kasserer/_section.yaml new file mode 100644 index 0000000..2f8af2f --- /dev/null +++ b/runs/tomtervel-nabohjelp-2026-09-22/questions/kasserer/_section.yaml @@ -0,0 +1 @@ +qualifies: kasserer diff --git a/runs/tomtervel-nabohjelp-2026-09-22/questions/kasserer/index.yaml b/runs/tomtervel-nabohjelp-2026-09-22/questions/kasserer/index.yaml new file mode 100644 index 0000000..4974664 --- /dev/null +++ b/runs/tomtervel-nabohjelp-2026-09-22/questions/kasserer/index.yaml @@ -0,0 +1,69 @@ +alternatives: +- action: /kasserer + consequence: + - Utført + description: Husstander som har meldt seg inn eller vil ut av velet. + features: + - description: '' + name: '' + resource: + requires_group: kasserer + source: + bucket: husstander + kind: kv + transitions: + - from: open + label: Kontingent betalt + to: betalt + - from: open + label: Meld ut + to: utmeldt + name: Husstander som venter på deg +- action: /kasserer + consequence: + - Utført + description: Medlemmer som har flyttet, byttet e-post eller vil melde seg ut. + features: + - description: '' + name: '' + resource: + requires_group: kasserer + source: + bucket: medlemsendringer + kind: kv + transitions: + - from: open + label: Opplysninger oppdatert + to: oppdatert + name: Opplysninger som skal endres +- action: /kasserer + consequence: + - Utført + description: Utlegg fra komiteene som venter på godkjenning eller utbetaling. + features: + - description: '' + name: '' + resource: + requires_group: kasserer + source: + bucket: utlegg + kind: kv + transitions: + - from: godkjent + label: Merk som utbetalt + to: utbetalt + - from: godkjent + label: Avvis likevel + to: avvist + - from: open + label: Godkjenn utlegg + to: godkjent + - from: open + label: Avvis utlegg + to: avvist + name: Utlegg som venter på deg +description: Her har du oversikt over medlemskap og utlegg som venter på deg som kasserer. +name: Hva må jeg som kasserer ta tak i nå? +responsible: + contact: post@tomtervel.example + name: Styret i Tomter Vel diff --git a/runs/tomtervel-nabohjelp-2026-09-22/questions/komiteer/_section.yaml b/runs/tomtervel-nabohjelp-2026-09-22/questions/komiteer/_section.yaml new file mode 100644 index 0000000..57e3295 --- /dev/null +++ b/runs/tomtervel-nabohjelp-2026-09-22/questions/komiteer/_section.yaml @@ -0,0 +1 @@ +qualifies: komiteer diff --git a/runs/tomtervel-nabohjelp-2026-09-22/questions/komiteer/index.yaml b/runs/tomtervel-nabohjelp-2026-09-22/questions/komiteer/index.yaml new file mode 100644 index 0000000..141de05 --- /dev/null +++ b/runs/tomtervel-nabohjelp-2026-09-22/questions/komiteer/index.yaml @@ -0,0 +1,11 @@ +alternatives: +- action: /komiteer/utlegg + consequence: + - Legg inn utlegg + description: Har du lagt ut for noe til komiteen? Registrer det her, så tar kasserer seg av resten. + name: Få igjen penger du har lagt ut +description: Her ser du sakene komiteen din har fått inn, og kan flytte dem videre etter hvert som dere følger dem opp. +name: Hva står på til komiteen min nå? +responsible: + contact: post@tomtervel.example + name: Styret i Tomter Vel diff --git a/runs/tomtervel-nabohjelp-2026-09-22/questions/komiteer/utlegg-sent.yaml b/runs/tomtervel-nabohjelp-2026-09-22/questions/komiteer/utlegg-sent.yaml new file mode 100644 index 0000000..f0a05f1 --- /dev/null +++ b/runs/tomtervel-nabohjelp-2026-09-22/questions/komiteer/utlegg-sent.yaml @@ -0,0 +1,10 @@ +alternatives: +- description: Kasserer ser gjennom utlegget og godkjenner det, så blir pengene satt inn på kontoen du har oppgitt. + name: Pengene dine tilbake +- action: /komiteer + consequence: + - Til forsiden + description: '' + name: Til forsiden +description: Utlegget ditt er sendt til kasserer. +name: Hva skjer nå med utlegget mitt? diff --git a/runs/tomtervel-nabohjelp-2026-09-22/questions/komiteer/utlegg.yaml b/runs/tomtervel-nabohjelp-2026-09-22/questions/komiteer/utlegg.yaml new file mode 100644 index 0000000..1a2f434 --- /dev/null +++ b/runs/tomtervel-nabohjelp-2026-09-22/questions/komiteer/utlegg.yaml @@ -0,0 +1,25 @@ +alternatives: +- action: /komiteer/utlegg-sent + consequence: + - Send krav + description: Har du lagt ut for noe til komiteen, kan du melde det inn her, så ordner kasserer utbetaling. + features: + - name: Krav om utlegg + requirements: + - label: Navn + name: navn + type: text + - label: Beløp + name: belop + type: text + - label: Hva gjaldt det + name: hva + type: textarea + name: Få tilbake det du har lagt ut for + record_as: utlegg +description: For deg som har betalt noe for komiteen din og skal ha pengene tilbake. +followup: false +name: Har du lagt ut for noe komiteen skal betale? +responsible: + contact: post@tomtervel.example + name: Styret i Tomter Vel diff --git a/runs/tomtervel-nabohjelp-2026-09-22/questions/lekeplasskomite/_section.yaml b/runs/tomtervel-nabohjelp-2026-09-22/questions/lekeplasskomite/_section.yaml new file mode 100644 index 0000000..ca64c92 --- /dev/null +++ b/runs/tomtervel-nabohjelp-2026-09-22/questions/lekeplasskomite/_section.yaml @@ -0,0 +1 @@ +qualifies: lekeplasskomite diff --git a/runs/tomtervel-nabohjelp-2026-09-22/questions/lekeplasskomite/index.yaml b/runs/tomtervel-nabohjelp-2026-09-22/questions/lekeplasskomite/index.yaml new file mode 100644 index 0000000..ada5fbc --- /dev/null +++ b/runs/tomtervel-nabohjelp-2026-09-22/questions/lekeplasskomite/index.yaml @@ -0,0 +1,26 @@ +alternatives: +- action: /lekeplasskomite + consequence: + - Lagre + description: Meldinger om noe som er ødelagt på lekeplassen eller stien, og som må fikses før noen skader seg. + features: + - description: '' + name: '' + resource: + requires_group: lekeplasskomite + source: + bucket: anleggsfeil + kind: kv + transitions: + - from: open + label: Ta tak i dette + to: tatt_tak_i + - from: tatt_tak_i + label: Meld som utbedret + to: utbedret + name: Skader meldt inn av naboer +description: Her har lekeplasskomiteen oversikt over meldte feil på lekeplassene og stien, og kan følge dem opp fram til de er utbedret. +name: Hva må lekeplasskomiteen følge opp nå? +responsible: + contact: post@tomtervel.example + name: Styret i Tomter Vel diff --git a/runs/tomtervel-nabohjelp-2026-09-22/questions/medlem/index.yaml b/runs/tomtervel-nabohjelp-2026-09-22/questions/medlem/index.yaml new file mode 100644 index 0000000..be062eb --- /dev/null +++ b/runs/tomtervel-nabohjelp-2026-09-22/questions/medlem/index.yaml @@ -0,0 +1,46 @@ +alternatives: +- action: /received/bli-medlem + consequence: + - Bli medlem + description: Meld deg inn og betal kontingenten, så er du med. + features: + - name: Bli medlem + requirements: + - label: Navn + name: navn + type: text + - label: Adresse + name: adresse + type: text + - label: E-post + name: epost + type: email + - label: Telefon + name: telefon + optional: true + type: tel + name: Meld deg inn i Tomter Vel + record_as: husstander +- action: /received/endre-medlemskap + consequence: + - Meld endring + description: Har du flyttet, byttet e-post eller vil melde deg ut? Si fra her. + features: + - name: Endre medlemskap + requirements: + - label: Navn + name: navn + type: text + - label: Adresse + name: adresse + type: text + - label: Hva vil du endre? + name: hva_er_nytt + type: textarea + name: Oppdater opplysningene dine + record_as: medlemsendringer +description: Bli medlem av Tomter Vel, eller oppdater opplysningene dine hvis noe har endret seg. +name: Vil du bli medlem, eller endre medlemskapet ditt? +responsible: + contact: post@tomtervel.example + name: Styret i Tomter Vel diff --git a/runs/tomtervel-nabohjelp-2026-09-22/questions/melde-fra/index.yaml b/runs/tomtervel-nabohjelp-2026-09-22/questions/melde-fra/index.yaml new file mode 100644 index 0000000..12fa1d1 --- /dev/null +++ b/runs/tomtervel-nabohjelp-2026-09-22/questions/melde-fra/index.yaml @@ -0,0 +1,45 @@ +alternatives: +- action: /received/trafikkfare + consequence: + - Meld fra + description: Sett du et farlig sted i trafikken? Meld fra, så tar vi det opp med kommunen eller veieier. + features: + - name: Meld trafikkfare + requirements: + - label: Hvor er det? + name: hvor + type: text + - label: Hva er farlig? + name: hva + type: textarea + - label: E-post + name: epost + optional: true + type: email + name: Få gjort noe med en farlig vei + record_as: trafikkmeldinger +- action: /received/anleggsfeil + consequence: + - Meld fra + description: Er noe på lekeplassen eller stien ødelagt? Si ifra, så tar vi tak i det før noen skader seg. + features: + - name: Meld skade + requirements: + - label: Hvor er det? + name: hvor + options: + - Lekeplassen + - Elvestien + - Skøytebanen + - Et annet sted + type: select + - label: Hva er ødelagt? + name: hva + type: textarea + name: Få fikset det som er ødelagt + record_as: anleggsfeil +description: Sett du noe i nabolaget som ikke er som det skal? Fortell oss om det, så følger vi det opp. +name: Hva har du sett? +responsible: + contact: post@tomtervel.example + name: Styret i Tomter Vel diff --git a/runs/tomtervel-nabohjelp-2026-09-22/questions/naboer/index.yaml b/runs/tomtervel-nabohjelp-2026-09-22/questions/naboer/index.yaml new file mode 100644 index 0000000..f82456a --- /dev/null +++ b/runs/tomtervel-nabohjelp-2026-09-22/questions/naboer/index.yaml @@ -0,0 +1,83 @@ +alternatives: +- action: /received/trenger-hjelp + consequence: + - Be om hjelp + description: Trenger du en hånd med snømåking, handling eller skyss? Fortell hva du trenger, så finner vi en nabo. + features: + - name: Be om en hånd + requirements: + - label: Navn + name: navn + type: text + - label: E-post + name: email + type: email + - label: Adresse + name: adresse + type: text + - label: Hva trenger du hjelp med? + name: hva + type: textarea + - label: Telefon + name: telefon + optional: true + type: tel + name: Få en nabo til å stille opp + record_as: hjelpebehov +- action: /received/kan-hjelpe + consequence: + - Meld deg + description: Si fra om hva du kan bidra med, så tar nabohjelpa kontakt når det trengs. + features: + - name: Meld deg som hjelper + requirements: + - label: Navn + name: navn + type: text + - label: E-post + name: email + type: email + - label: Telefon + name: telefon + type: tel + - label: Hva kan du hjelpe med? + name: kan + options: + - Snømåking + - Handling + - Kjøring + - Småfiks i huset + - En prat og litt selskap + - Det som trengs + type: select + name: Bli en nabo andre kan spørre + record_as: hjelpere +- action: /received/dele-utstyr + consequence: + - Lag oppslag + description: Legg ut det du har til overs, eller si fra om noe du gjerne vil låne av naboene. + features: + - name: Lån eller lån ut + requirements: + - label: Navn + name: navn + type: text + - label: E-post + name: email + type: email + - label: Har du, eller trenger du? + name: har_eller_trenger + options: + - Jeg har noe å låne ut + - Jeg trenger å låne noe + type: select + - label: Hva gjelder det? + name: hva + type: textarea + name: Del utstyr med naboene + record_as: oppslag +description: Nabolag er godt naboskap. Trenger du en hånd, kan du stille opp, eller har du noe andre kan låne? +name: Trenger du en nabo, eller vil du være en? +responsible: + contact: post@tomtervel.example + name: Styret i Tomter Vel diff --git a/runs/tomtervel-nabohjelp-2026-09-22/questions/nabohjelp/_section.yaml b/runs/tomtervel-nabohjelp-2026-09-22/questions/nabohjelp/_section.yaml new file mode 100644 index 0000000..5b3a2ad --- /dev/null +++ b/runs/tomtervel-nabohjelp-2026-09-22/questions/nabohjelp/_section.yaml @@ -0,0 +1 @@ +qualifies: nabohjelp diff --git a/runs/tomtervel-nabohjelp-2026-09-22/questions/nabohjelp/index.yaml b/runs/tomtervel-nabohjelp-2026-09-22/questions/nabohjelp/index.yaml new file mode 100644 index 0000000..1355cb3 --- /dev/null +++ b/runs/tomtervel-nabohjelp-2026-09-22/questions/nabohjelp/index.yaml @@ -0,0 +1,52 @@ +alternatives: +- action: /nabohjelp + consequence: + - Lagre + description: Naboer som trenger en hånd med noe akkurat nå, som snømåking, handling eller skyss. + features: + - description: '' + name: '' + resource: + requires_group: nabohjelp + source: + bucket: hjelpebehov + kind: kv + transitions: + - from: formidlet + label: Hjelpen er gitt + to: ordnet + - from: formidlet + label: Fikk ingen til å hjelpe + to: ikke_lost + - from: open + label: Satt nabo på saken + to: formidlet + - from: open + label: Fant ingen som kan + to: ikke_lost + name: Naboer som trenger en hånd +- action: /nabohjelp + consequence: + - Lagre + description: Naboer som har sagt de stiller opp når noen trenger en hånd. + features: + - description: '' + name: '' + resource: + requires_group: nabohjelp + source: + bucket: hjelpere + kind: kv + transitions: + - from: open + label: Tatt imot + to: registrert + - from: open + label: Trukket seg + to: trukket + name: Naboer som kan stille opp +description: Her ser du hvem som trenger hjelp og hvem som kan hjelpe, så du kan sette dem sammen. +name: Hvem trenger hjelp, og hvem kan gi den? +responsible: + contact: post@tomtervel.example + name: Styret i Tomter Vel diff --git a/runs/tomtervel-nabohjelp-2026-09-22/questions/received/anleggsfeil.yaml b/runs/tomtervel-nabohjelp-2026-09-22/questions/received/anleggsfeil.yaml new file mode 100644 index 0000000..e3aeb75 --- /dev/null +++ b/runs/tomtervel-nabohjelp-2026-09-22/questions/received/anleggsfeil.yaml @@ -0,0 +1,10 @@ +alternatives: +- description: Lekeplasskomiteen ser på det og fikser det som må fikses, eller sperrer av stedet til det er gjort. + name: Lekeplasskomiteen tar det videre +- action: / + consequence: + - Tilbake + description: '' + name: Tilbake +description: Meldingen din om feilen er sendt til lekeplasskomiteen. +name: Hva skjer med meldingen min nå? diff --git a/runs/tomtervel-nabohjelp-2026-09-22/questions/received/bli-medlem.yaml b/runs/tomtervel-nabohjelp-2026-09-22/questions/received/bli-medlem.yaml new file mode 100644 index 0000000..255e540 --- /dev/null +++ b/runs/tomtervel-nabohjelp-2026-09-22/questions/received/bli-medlem.yaml @@ -0,0 +1,10 @@ +alternatives: +- description: Så snart kontingenten er betalt, er du registrert som medlem hos oss. + name: Du hører fra kasserer om kontingenten +- action: / + consequence: + - Til forsiden + description: '' + name: Til forsiden +description: Vi har mottatt innmeldingen din i Tomter Vel. Kasserer går gjennom den og sender deg informasjon om kontingenten. +name: Hva skjer nå som jeg har meldt meg inn? diff --git a/runs/tomtervel-nabohjelp-2026-09-22/questions/received/dele-utstyr.yaml b/runs/tomtervel-nabohjelp-2026-09-22/questions/received/dele-utstyr.yaml new file mode 100644 index 0000000..3834706 --- /dev/null +++ b/runs/tomtervel-nabohjelp-2026-09-22/questions/received/dele-utstyr.yaml @@ -0,0 +1,10 @@ +alternatives: +- description: Styret legger oppslaget ut, og tar kontakt med deg hvis noe er uklart. + name: Oppslaget kommer opp snart +- action: / + consequence: + - Til forsiden + description: '' + name: Til forsiden +description: Takk for at du melder inn utstyr til deling. Styret legger det ut så naboene kan se det. +name: Hva skjer med det jeg har meldt inn? diff --git a/runs/tomtervel-nabohjelp-2026-09-22/questions/received/endre-medlemskap.yaml b/runs/tomtervel-nabohjelp-2026-09-22/questions/received/endre-medlemskap.yaml new file mode 100644 index 0000000..bbb9afa --- /dev/null +++ b/runs/tomtervel-nabohjelp-2026-09-22/questions/received/endre-medlemskap.yaml @@ -0,0 +1,10 @@ +alternatives: +- description: Kasserer går gjennom endringen og retter opp i registeret så snart de får tid. + name: Riktige opplysninger i registeret +- action: / + consequence: + - Tilbake + description: '' + name: Tilbake +description: Kasserer oppdaterer opplysningene deres i medlemsregisteret. +name: Er opplysningene mine oppdatert nå? diff --git a/runs/tomtervel-nabohjelp-2026-09-22/questions/received/hjelpe-til.yaml b/runs/tomtervel-nabohjelp-2026-09-22/questions/received/hjelpe-til.yaml new file mode 100644 index 0000000..db5ab67 --- /dev/null +++ b/runs/tomtervel-nabohjelp-2026-09-22/questions/received/hjelpe-til.yaml @@ -0,0 +1,10 @@ +alternatives: +- description: Noen fra arrangementskomiteen tar kontakt med deg for å avtale hva du kan bidra med. + name: Arrangementskomiteen kontakter deg +- action: / + consequence: + - Tilbake til forsiden + description: '' + name: Tilbake til forsiden +description: Takk for at du vil hjelpe til! Arrangementskomiteen har fått beskjed og tar kontakt med deg. +name: Hva skjer nå som jeg har meldt meg? diff --git a/runs/tomtervel-nabohjelp-2026-09-22/questions/received/horingsinnspill.yaml b/runs/tomtervel-nabohjelp-2026-09-22/questions/received/horingsinnspill.yaml new file mode 100644 index 0000000..1ff609f --- /dev/null +++ b/runs/tomtervel-nabohjelp-2026-09-22/questions/received/horingsinnspill.yaml @@ -0,0 +1,10 @@ +alternatives: +- description: Styret går gjennom innspillene før høringsfristen og samler dem i velets svar til kommunen. + name: Innspillet ditt blir med i høringssvaret +- action: / + consequence: + - Tilbake til forsiden + description: '' + name: Tilbake til forsiden +description: Takk for innspillet ditt. Vi har mottatt det og tar det med når styret skal svare på høringen. +name: Hva skjer med innspillet mitt nå? diff --git a/runs/tomtervel-nabohjelp-2026-09-22/questions/received/kan-hjelpe.yaml b/runs/tomtervel-nabohjelp-2026-09-22/questions/received/kan-hjelpe.yaml new file mode 100644 index 0000000..0a70bf6 --- /dev/null +++ b/runs/tomtervel-nabohjelp-2026-09-22/questions/received/kan-hjelpe.yaml @@ -0,0 +1,10 @@ +alternatives: +- description: Nabohjelp legger deg inn på listen over naboer som kan stille opp. Du blir kontaktet når det er noen som trenger akkurat det du tilbyr. + name: Du er registrert som hjelper +- action: / + consequence: + - Tilbake + description: '' + name: Tilbake +description: Takk for at du sier fra at du kan hjelpe. Meldingen går til nabohjelp. +name: Hva skjer nå med det jeg har sendt inn? diff --git a/runs/tomtervel-nabohjelp-2026-09-22/questions/received/komite.yaml b/runs/tomtervel-nabohjelp-2026-09-22/questions/received/komite.yaml new file mode 100644 index 0000000..65a60fd --- /dev/null +++ b/runs/tomtervel-nabohjelp-2026-09-22/questions/received/komite.yaml @@ -0,0 +1,10 @@ +alternatives: +- description: Styret finner ut hvilken komité som passer, og hører med deg før du settes opp. + name: Du hører fra styret +- action: / + consequence: + - Tilbake til forsiden + description: '' + name: Tilbake til forsiden +description: Takk for at du vil bidra i en komité. Styret ser gjennom henvendelser om komitéarbeid og tar kontakt med deg. +name: Hva skjer nå med ønsket mitt om å sitte i en komité? diff --git a/runs/tomtervel-nabohjelp-2026-09-22/questions/received/trafikkfare.yaml b/runs/tomtervel-nabohjelp-2026-09-22/questions/received/trafikkfare.yaml new file mode 100644 index 0000000..c6152b5 --- /dev/null +++ b/runs/tomtervel-nabohjelp-2026-09-22/questions/received/trafikkfare.yaml @@ -0,0 +1,10 @@ +alternatives: +- description: Meldingen går til trafikkomiteen. De vurderer saken og tar den opp med kommunen eller veieier om det trengs. + name: Trafikkomiteen ser på saken +- action: / + consequence: + - Tilbake til forsiden + description: '' + name: Tilbake til forsiden +description: Takk for at du meldte fra om en trafikkfare. Trafikkomiteen leser meldingen og tar den videre. +name: Hva skjer med meldingen min nå? diff --git a/runs/tomtervel-nabohjelp-2026-09-22/questions/received/trenger-hjelp.yaml b/runs/tomtervel-nabohjelp-2026-09-22/questions/received/trenger-hjelp.yaml new file mode 100644 index 0000000..d1f2c8a --- /dev/null +++ b/runs/tomtervel-nabohjelp-2026-09-22/questions/received/trenger-hjelp.yaml @@ -0,0 +1,10 @@ +alternatives: +- description: Så snart en nabo kan stille opp, tar de kontakt med deg. + name: En nabo tar kontakt +- action: / + consequence: + - Til forsiden + description: '' + name: Til forsiden +description: Vi har fått beskjeden om at du trenger en hånd, og nabohjelp-komiteen ser på den. +name: Hva skjer nå? diff --git a/runs/tomtervel-nabohjelp-2026-09-22/questions/styret/_section.yaml b/runs/tomtervel-nabohjelp-2026-09-22/questions/styret/_section.yaml new file mode 100644 index 0000000..5a34160 --- /dev/null +++ b/runs/tomtervel-nabohjelp-2026-09-22/questions/styret/_section.yaml @@ -0,0 +1 @@ +qualifies: styret diff --git a/runs/tomtervel-nabohjelp-2026-09-22/questions/styret/index.yaml b/runs/tomtervel-nabohjelp-2026-09-22/questions/styret/index.yaml new file mode 100644 index 0000000..8973caf --- /dev/null +++ b/runs/tomtervel-nabohjelp-2026-09-22/questions/styret/index.yaml @@ -0,0 +1,80 @@ +alternatives: +- action: /styret + consequence: + - Lagre + description: Her ser dere innspill fra beboere til saker kommunen har på høring, klare til å tas med i velets svar. + features: + - description: '' + name: '' + resource: + requires_group: styret + source: + bucket: innspill + kind: kv + transitions: + - from: open + label: Ta med i svaret + to: tatt_med + - from: open + label: Ikke ta med + to: ikke_tatt_med + name: Innspill til høringssvar +- action: /styret + consequence: + - Lagre + description: Her ser dere hvem som har meldt seg til en komité og venter på plass. + features: + - description: '' + name: '' + resource: + requires_group: styret + source: + bucket: komitesoknader + kind: kv + transitions: + - from: open + label: Gi plass i komité + to: plassert + - from: open + label: Avslå søknaden + to: avslatt + name: Søknader til komiteene +- action: /styret + consequence: + - Lagre + description: Her ser dere oppslag naboer vil dele om ting de låner ut eller trenger å låne. + features: + - description: '' + name: '' + resource: + requires_group: styret + source: + bucket: oppslag + kind: kv + transitions: + - from: open + label: Legg ut oppslaget + to: lagt_ut + - from: open + label: Ta ned oppslaget + to: tatt_ned + name: Oppslag om utstyr +- action: /styret + consequence: + - Lagre + description: Her ser dere farlige steder i trafikken som beboere har meldt inn. + features: + - description: '' + name: '' + resource: + requires_group: styret + source: + bucket: trafikkmeldinger + kind: kv + transitions: [] + name: Meldte trafikkfarer +description: Herfra følger styret opp høringsinnspill, komitésøknader, oppslag og trafikkmeldinger fra beboerne. +name: Hva venter på styret akkurat nå? +responsible: + contact: post@tomtervel.example + name: Styret i Tomter Vel diff --git a/runs/tomtervel-nabohjelp-2026-09-22/questions/trafikkomite/_section.yaml b/runs/tomtervel-nabohjelp-2026-09-22/questions/trafikkomite/_section.yaml new file mode 100644 index 0000000..bf946ea --- /dev/null +++ b/runs/tomtervel-nabohjelp-2026-09-22/questions/trafikkomite/_section.yaml @@ -0,0 +1 @@ +qualifies: trafikkomite diff --git a/runs/tomtervel-nabohjelp-2026-09-22/questions/trafikkomite/index.yaml b/runs/tomtervel-nabohjelp-2026-09-22/questions/trafikkomite/index.yaml new file mode 100644 index 0000000..3dce273 --- /dev/null +++ b/runs/tomtervel-nabohjelp-2026-09-22/questions/trafikkomite/index.yaml @@ -0,0 +1,32 @@ +alternatives: +- action: /trafikkomite + consequence: + - Lagre + description: Meldinger fra naboer om farlige steder i trafikken, fra nye tips til saker dere har tatt videre. + features: + - description: '' + name: '' + resource: + requires_group: trafikkomite + source: + bucket: trafikkmeldinger + kind: kv + transitions: + - from: open + label: Ta opp med kommunen + to: tatt_opp + - from: open + label: Avvis meldingen + to: avvist + - from: tatt_opp + label: Meld som ordnet + to: ordnet + - from: tatt_opp + label: Avvis saken + to: avvist + name: Trafikkfarer naboene har meldt inn +description: Her følger trafikkomiteen opp farer naboene har meldt fra om, fra nytt tips til saken er ordnet eller avvist. +name: Hvilke trafikkfarer må vi følge opp nå? +responsible: + contact: post@tomtervel.example + name: Styret i Tomter Vel diff --git a/runs/tomtervel-nabohjelp-2026-09-22/rate.json b/runs/tomtervel-nabohjelp-2026-09-22/rate.json new file mode 100644 index 0000000..554b19c --- /dev/null +++ b/runs/tomtervel-nabohjelp-2026-09-22/rate.json @@ -0,0 +1,477 @@ +{ + "anleggsfeil": { + "pages": [ + { + "control": { + "asked": 0, + "next": null, + "which": 0 + }, + "control_ok": true, + "followup_shown": false, + "lix": 18.526652452025587, + "options": 4, + "overloaded": false, + "page": "/", + "personas": 2, + "required_fields": 0, + "understanding": { + "asked": 0, + "next": null, + "which": 2 + } + }, + { + "control": { + "asked": 1, + "next": 0, + "which": 0 + }, + "control_ok": false, + "followup_shown": true, + "lix": 23.004264392324096, + "options": 2, + "overloaded": false, + "page": "/melde-fra", + "personas": 2, + "required_fields": 2, + "understanding": { + "asked": 2, + "next": 2, + "which": 2 + } + } + ], + "steps": 2 + }, + "bli-medlem": { + "pages": [ + { + "control": { + "asked": 0, + "next": null, + "which": 0 + }, + "control_ok": true, + "followup_shown": false, + "lix": 18.526652452025587, + "options": 4, + "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.747072599531613, + "options": 2, + "overloaded": false, + "page": "/medlem", + "personas": 2, + "required_fields": 3, + "understanding": { + "asked": 2, + "next": 2, + "which": 1 + } + } + ], + "steps": 2 + }, + "dele-utstyr": { + "pages": [ + { + "control": { + "asked": 0, + "next": null, + "which": 0 + }, + "control_ok": true, + "followup_shown": false, + "lix": 18.526652452025587, + "options": 4, + "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": 24.561813186813186, + "options": 3, + "overloaded": false, + "page": "/naboer", + "personas": 2, + "required_fields": 4, + "understanding": { + "asked": 2, + "next": 2, + "which": 2 + } + } + ], + "steps": 2 + }, + "endre-medlemskap": { + "pages": [ + { + "control": { + "asked": 0, + "next": null, + "which": 0 + }, + "control_ok": true, + "followup_shown": false, + "lix": 18.526652452025587, + "options": 4, + "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": 30.068627450980394, + "options": 2, + "overloaded": false, + "page": "/medlem", + "personas": 2, + "required_fields": 3, + "understanding": { + "asked": 2, + "next": 2, + "which": 2 + } + } + ], + "steps": 2 + }, + "hjelpe-til": { + "pages": [ + { + "control": { + "asked": 0, + "next": null, + "which": 0 + }, + "control_ok": true, + "followup_shown": false, + "lix": 18.526652452025587, + "options": 4, + "overloaded": false, + "page": "/", + "personas": 2, + "required_fields": 0, + "understanding": { + "asked": 0, + "next": null, + "which": 2 + } + }, + { + "control": { + "asked": 1, + "next": 0, + "which": 0 + }, + "control_ok": false, + "followup_shown": true, + "lix": 22.243478260869566, + "options": 3, + "overloaded": false, + "page": "/bidra", + "personas": 2, + "required_fields": 3, + "understanding": { + "asked": 2, + "next": 2, + "which": 2 + } + } + ], + "steps": 2 + }, + "horingsinnspill": { + "pages": [ + { + "control": { + "asked": 0, + "next": null, + "which": 0 + }, + "control_ok": true, + "followup_shown": false, + "lix": 18.526652452025587, + "options": 4, + "overloaded": false, + "page": "/", + "personas": 2, + "required_fields": 0, + "understanding": { + "asked": 0, + "next": null, + "which": 1 + } + }, + { + "control": { + "asked": 1, + "next": 0, + "which": 0 + }, + "control_ok": false, + "followup_shown": true, + "lix": 24.353763440860217, + "options": 3, + "overloaded": false, + "page": "/bidra", + "personas": 2, + "required_fields": 3, + "understanding": { + "asked": 2, + "next": 2, + "which": 2 + } + } + ], + "steps": 2 + }, + "kan-hjelpe": { + "pages": [ + { + "control": { + "asked": 0, + "next": null, + "which": 0 + }, + "control_ok": true, + "followup_shown": false, + "lix": 18.526652452025587, + "options": 4, + "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.151515151515152, + "options": 3, + "overloaded": false, + "page": "/naboer", + "personas": 2, + "required_fields": 4, + "understanding": { + "asked": 2, + "next": 2, + "which": 2 + } + } + ], + "steps": 2 + }, + "komite": { + "pages": [ + { + "control": { + "asked": 0, + "next": null, + "which": 0 + }, + "control_ok": true, + "followup_shown": false, + "lix": 18.526652452025587, + "options": 4, + "overloaded": false, + "page": "/", + "personas": 2, + "required_fields": 0, + "understanding": { + "asked": 0, + "next": null, + "which": 2 + } + }, + { + "control": { + "asked": 1, + "next": 0, + "which": 0 + }, + "control_ok": false, + "followup_shown": true, + "lix": 22.1, + "options": 3, + "overloaded": false, + "page": "/bidra", + "personas": 2, + "required_fields": 3, + "understanding": { + "asked": 2, + "next": 2, + "which": 2 + } + } + ], + "steps": 2 + }, + "trafikkfare": { + "pages": [ + { + "control": { + "asked": 0, + "next": null, + "which": 0 + }, + "control_ok": true, + "followup_shown": false, + "lix": 18.526652452025587, + "options": 4, + "overloaded": false, + "page": "/", + "personas": 2, + "required_fields": 0, + "understanding": { + "asked": 0, + "next": null, + "which": 2 + } + }, + { + "control": { + "asked": 2, + "next": 0, + "which": 0 + }, + "control_ok": false, + "followup_shown": true, + "lix": 25.666666666666664, + "options": 2, + "overloaded": false, + "page": "/melde-fra", + "personas": 2, + "required_fields": 2, + "understanding": { + "asked": 2, + "next": 2, + "which": 1 + } + } + ], + "steps": 2 + }, + "trenger-hjelp": { + "pages": [ + { + "control": { + "asked": 0, + "next": null, + "which": 0 + }, + "control_ok": true, + "followup_shown": false, + "lix": 18.526652452025587, + "options": 4, + "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": 27.37110016420361, + "options": 3, + "overloaded": false, + "page": "/naboer", + "personas": 2, + "required_fields": 4, + "understanding": { + "asked": 2, + "next": 2, + "which": 2 + } + } + ], + "steps": 2 + }, + "utlegg": { + "pages": [ + { + "control": { + "asked": 1, + "next": 0, + "which": 0 + }, + "control_ok": false, + "followup_shown": true, + "lix": 38.5, + "options": 1, + "overloaded": false, + "page": "/komiteer/utlegg", + "personas": 1, + "required_fields": 3, + "understanding": { + "asked": 1, + "next": 1, + "which": 1 + } + } + ], + "steps": 1 + } +} \ No newline at end of file diff --git a/runs/tomtervel-nabohjelp-2026-09-22/rate.txt b/runs/tomtervel-nabohjelp-2026-09-22/rate.txt new file mode 100644 index 0000000..248abc5 --- /dev/null +++ b/runs/tomtervel-nabohjelp-2026-09-22/rate.txt @@ -0,0 +1,22 @@ +need LIX which asked next gutted twin says page load +bli-medlem @/ 19 very easy 2/2 0/2 - 0/0/- ok 4 options, 0 required +bli-medlem @/medlem 27 very easy 1/2 2/2 2/2 0/0/0 ok 2 options, 3 required +endre-medlemskap @/ 19 very easy 1/2 0/2 - 0/0/- ok 4 options, 0 required +endre-medlemskap @/medlem 30 easy 2/2 2/2 2/2 0/0/0 ok 2 options, 3 required +trafikkfare @/ 19 very easy 2/2 0/2 - 0/0/- ok 4 options, 0 required +trafikkfare @/melde-fra 26 very easy 1/2 2/2 2/2 0/2/0 FAILED: asked 2 options, 2 required +anleggsfeil @/ 19 very easy 2/2 0/2 - 0/0/- ok 4 options, 0 required +anleggsfeil @/melde-fra 23 very easy 2/2 2/2 2/2 0/1/0 FAILED: asked 2 options, 2 required +horingsinnspill @/ 19 very easy 1/2 0/2 - 0/0/- ok 4 options, 0 required +horingsinnspill @/bidra 24 very easy 2/2 2/2 2/2 0/1/0 FAILED: asked 3 options, 3 required +hjelpe-til @/ 19 very easy 2/2 0/2 - 0/0/- ok 4 options, 0 required +hjelpe-til @/bidra 22 very easy 2/2 2/2 2/2 0/1/0 FAILED: asked 3 options, 3 required +komite @/ 19 very easy 2/2 0/2 - 0/0/- ok 4 options, 0 required +komite @/bidra 22 very easy 2/2 2/2 2/2 0/1/0 FAILED: asked 3 options, 3 required +trenger-hjelp @/ 19 very easy 1/2 0/2 - 0/0/- ok 4 options, 0 required +trenger-hjelp @/naboer 27 very easy 2/2 2/2 2/2 0/0/0 ok 3 options, 4 required +kan-hjelpe @/ 19 very easy 2/2 0/2 - 0/0/- ok 4 options, 0 required +kan-hjelpe @/naboer 26 very easy 2/2 2/2 2/2 0/0/0 ok 3 options, 4 required +dele-utstyr @/ 19 very easy 2/2 0/2 - 0/0/- ok 4 options, 0 required +dele-utstyr @/naboer 25 very easy 2/2 2/2 2/2 0/0/0 ok 3 options, 4 required +utlegg 38 easy 1/1 1/1 1/1 0/1/0 FAILED: asked 1 options, 3 required diff --git a/runs/tomtervel-nabohjelp-2026-09-22/score-full.txt b/runs/tomtervel-nabohjelp-2026-09-22/score-full.txt new file mode 100644 index 0000000..56f5d2f --- /dev/null +++ b/runs/tomtervel-nabohjelp-2026-09-22/score-full.txt @@ -0,0 +1,11 @@ +MISROUTE: ny-epost@/: picked "Vil du hjelpe eller få hjelp av naboer?" (0.95), the need is met by ["Vil du bli medlem eller endre medlemskapet?"] +MISROUTE: bru@/melde-fra: picked "Få gjort noe med en farlig vei" (0.95), the need is met by ["Få fikset det som er ødelagt"] +MISROUTE: blokker@/: picked "Har du sett noe som bør fikses?" (0.95), the need is met by ["Vil du bidra eller si din mening?"] +MISROUTE: vafler@/: picked "Vil du hjelpe eller få hjelp av naboer?" (0.95), the need is met by ["Vil du bidra eller si din mening?"] +MISROUTE: motorsag@/: picked "Har du sett noe som bør fikses?" (0.95), the need is met by ["Vil du bidra eller si din mening?"] +MISROUTE: planlegger@/bidra: picked "Få din mening med i velets høringssvar" (0.95), the need is met by ["Få en plass i komiteen som passer deg"] +MISROUTE: stige@/naboer: picked "Få en nabo til å stille opp" (0.95), the need is met by ["Del utstyr med naboene"] +MISROUTE: snomaking@/: picked "Har du sett noe som bør fikses?" (0.85), the need is met by ["Vil du hjelpe eller få hjelp av naboer?"] +MISROUTE: hjemmekontor@/naboer: picked "Få en nabo til å stille opp" (1.00), the need is met by ["Bli en nabo andre kan spørre"] +MISROUTE: pensjonert-elektriker@/naboer: picked "Få en nabo til å stille opp" (0.95), the need is met by ["Bli en nabo andre kan spørre"] +wording: 30/40 routed right (75%) diff --git a/runs/tomtervel-nabohjelp-2026-09-22/score-skim.txt b/runs/tomtervel-nabohjelp-2026-09-22/score-skim.txt new file mode 100644 index 0000000..83b4292 --- /dev/null +++ b/runs/tomtervel-nabohjelp-2026-09-22/score-skim.txt @@ -0,0 +1,13 @@ +MISROUTE: ny-epost@/: picked "Har du sett noe som bør fikses?" (0.95), the need is met by ["Vil du bli medlem eller endre medlemskapet?"] +MISROUTE: busslomme@/melde-fra: picked "Få fikset det som er ødelagt" (0.85), the need is met by ["Få gjort noe med en farlig vei"] +MISROUTE: huske@/melde-fra: picked "Få gjort noe med en farlig vei" (0.95), the need is met by ["Få fikset det som er ødelagt"] +MISROUTE: bru@/: picked "Vil du bidra eller si din mening?" (0.95), the need is met by ["Har du sett noe som bør fikses?"] +MISROUTE: bru@/melde-fra: picked "Få gjort noe med en farlig vei" (0.95), the need is met by ["Få fikset det som er ødelagt"] +MISROUTE: blokker@/: picked "Har du sett noe som bør fikses?" (0.95), the need is met by ["Vil du bidra eller si din mening?"] +MISROUTE: vafler@/: picked "Vil du bli medlem eller endre medlemskapet?" (0.95), the need is met by ["Vil du bidra eller si din mening?"] +MISROUTE: motorsag@/: picked "Har du sett noe som bør fikses?" (0.95), the need is met by ["Vil du bidra eller si din mening?"] +MISROUTE: planlegger@/bidra: picked "Få din mening med i velets høringssvar" (0.95), the need is met by ["Få en plass i komiteen som passer deg"] +MISROUTE: tilhenger@/naboer: picked "Bli en nabo andre kan spørre" (0.95), the need is met by ["Del utstyr med naboene"] +MISROUTE: stige@/naboer: picked "Bli en nabo andre kan spørre" (0.95), the need is met by ["Del utstyr med naboene"] +MISROUTE: snomaking@/naboer: picked "Bli en nabo andre kan spørre" (0.95), the need is met by ["Få en nabo til å stille opp"] +wording: 28/40 routed right (70%) diff --git a/runs/tomtervel-nabohjelp-2026-09-22/site.yaml b/runs/tomtervel-nabohjelp-2026-09-22/site.yaml new file mode 100644 index 0000000..9bdc376 --- /dev/null +++ b/runs/tomtervel-nabohjelp-2026-09-22/site.yaml @@ -0,0 +1,2 @@ +lang: nb +title: Tomter Vel diff --git a/runs/tomtervel-nabohjelp-2026-09-22/tasks-full.jsonl b/runs/tomtervel-nabohjelp-2026-09-22/tasks-full.jsonl new file mode 100644 index 0000000..533406f --- /dev/null +++ b/runs/tomtervel-nabohjelp-2026-09-22/tasks-full.jsonl @@ -0,0 +1,40 @@ +{"id":"nyinnflyttet@/","persona":"nyinnflyttet","need":"bli-medlem","page":"/","state":{"body":"Vi flyttet til Tomter i mars og har hørt at det finnes et vel. Hvordan blir vi med, og hva koster det?"},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva vil du gjøre?\". Which alternative do they choose?","criteria":{"Har du sett noe som bør fikses?":"Har du sett en trafikkfarlig plass eller noe ødelagt på lekeplassen eller stien? Meld fra her.","Vil du bidra eller si din mening?":"Si din mening om en høringssak, eller meld deg til en dugnad eller en komité.","Vil du bli medlem eller endre medlemskapet?":"Meld deg inn i Tomter Vel, eller endre opplysningene dine som medlem.","Vil du hjelpe eller få hjelp av naboer?":"Trenger du en hånd, kan du stille opp for andre, eller har du noe å låne ut? Her møtes naboer."}}},"expect":["Vil du bli medlem eller endre medlemskapet?"]} +{"id":"nyinnflyttet@/medlem","persona":"nyinnflyttet","need":"bli-medlem","page":"/medlem","state":{"body":"Vi flyttet til Tomter i mars og har hørt at det finnes et vel. Hvordan blir vi med, og hva koster det?"},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Vil du bli medlem, eller endre medlemskapet ditt?\". Which alternative do they choose?","criteria":{"Meld deg inn i Tomter Vel":"Meld deg inn og betal kontingenten, så er du med.","Oppdater opplysningene dine":"Har du flyttet, byttet e-post eller vil melde deg ut? Si fra her."}}},"expect":["Meld deg inn i Tomter Vel"]} +{"id":"glemte-a-betale@/","persona":"glemte-a-betale","need":"bli-medlem","page":"/","state":{"body":"Jeg har vært medlem før men fikk ikke betalt i fjor. Kan jeg bare vippse, og til hvem?"},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva vil du gjøre?\". Which alternative do they choose?","criteria":{"Har du sett noe som bør fikses?":"Har du sett en trafikkfarlig plass eller noe ødelagt på lekeplassen eller stien? Meld fra her.","Vil du bidra eller si din mening?":"Si din mening om en høringssak, eller meld deg til en dugnad eller en komité.","Vil du bli medlem eller endre medlemskapet?":"Meld deg inn i Tomter Vel, eller endre opplysningene dine som medlem.","Vil du hjelpe eller få hjelp av naboer?":"Trenger du en hånd, kan du stille opp for andre, eller har du noe å låne ut? Her møtes naboer."}}},"expect":["Vil du bli medlem eller endre medlemskapet?"]} +{"id":"glemte-a-betale@/medlem","persona":"glemte-a-betale","need":"bli-medlem","page":"/medlem","state":{"body":"Jeg har vært medlem før men fikk ikke betalt i fjor. Kan jeg bare vippse, og til hvem?"},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Vil du bli medlem, eller endre medlemskapet ditt?\". Which alternative do they choose?","criteria":{"Meld deg inn i Tomter Vel":"Meld deg inn og betal kontingenten, så er du med.","Oppdater opplysningene dine":"Har du flyttet, byttet e-post eller vil melde deg ut? Si fra her."}}},"expect":["Meld deg inn i Tomter Vel"]} +{"id":"ny-epost@/","persona":"ny-epost","need":"endre-medlemskap","page":"/","state":{"body":"Vi har byttet e-postadresse og får ikke lenger noe fra dere."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva vil du gjøre?\". Which alternative do they choose?","criteria":{"Har du sett noe som bør fikses?":"Har du sett en trafikkfarlig plass eller noe ødelagt på lekeplassen eller stien? Meld fra her.","Vil du bidra eller si din mening?":"Si din mening om en høringssak, eller meld deg til en dugnad eller en komité.","Vil du bli medlem eller endre medlemskapet?":"Meld deg inn i Tomter Vel, eller endre opplysningene dine som medlem.","Vil du hjelpe eller få hjelp av naboer?":"Trenger du en hånd, kan du stille opp for andre, eller har du noe å låne ut? Her møtes naboer."}}},"expect":["Vil du bli medlem eller endre medlemskapet?"]} +{"id":"ny-epost@/medlem","persona":"ny-epost","need":"endre-medlemskap","page":"/medlem","state":{"body":"Vi har byttet e-postadresse og får ikke lenger noe fra dere."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Vil du bli medlem, eller endre medlemskapet ditt?\". Which alternative do they choose?","criteria":{"Meld deg inn i Tomter Vel":"Meld deg inn og betal kontingenten, så er du med.","Oppdater opplysningene dine":"Har du flyttet, byttet e-post eller vil melde deg ut? Si fra her."}}},"expect":["Oppdater opplysningene dine"]} +{"id":"flytter@/","persona":"flytter","need":"endre-medlemskap","page":"/","state":{"body":"Vi selger huset og flytter til Ski i august, så vi må ut av medlemslista."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva vil du gjøre?\". Which alternative do they choose?","criteria":{"Har du sett noe som bør fikses?":"Har du sett en trafikkfarlig plass eller noe ødelagt på lekeplassen eller stien? Meld fra her.","Vil du bidra eller si din mening?":"Si din mening om en høringssak, eller meld deg til en dugnad eller en komité.","Vil du bli medlem eller endre medlemskapet?":"Meld deg inn i Tomter Vel, eller endre opplysningene dine som medlem.","Vil du hjelpe eller få hjelp av naboer?":"Trenger du en hånd, kan du stille opp for andre, eller har du noe å låne ut? Her møtes naboer."}}},"expect":["Vil du bli medlem eller endre medlemskapet?"]} +{"id":"flytter@/medlem","persona":"flytter","need":"endre-medlemskap","page":"/medlem","state":{"body":"Vi selger huset og flytter til Ski i august, så vi må ut av medlemslista."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Vil du bli medlem, eller endre medlemskapet ditt?\". Which alternative do they choose?","criteria":{"Meld deg inn i Tomter Vel":"Meld deg inn og betal kontingenten, så er du med.","Oppdater opplysningene dine":"Har du flyttet, byttet e-post eller vil melde deg ut? Si fra her."}}},"expect":["Oppdater opplysningene dine"]} +{"id":"skolevei@/","persona":"skolevei","need":"trafikkfare","page":"/","state":{"body":"Bilene kjører altfor fort i svingen ved skolen om morgenen, og det er ikke fortau der ungene går."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva vil du gjøre?\". Which alternative do they choose?","criteria":{"Har du sett noe som bør fikses?":"Har du sett en trafikkfarlig plass eller noe ødelagt på lekeplassen eller stien? Meld fra her.","Vil du bidra eller si din mening?":"Si din mening om en høringssak, eller meld deg til en dugnad eller en komité.","Vil du bli medlem eller endre medlemskapet?":"Meld deg inn i Tomter Vel, eller endre opplysningene dine som medlem.","Vil du hjelpe eller få hjelp av naboer?":"Trenger du en hånd, kan du stille opp for andre, eller har du noe å låne ut? Her møtes naboer."}}},"expect":["Har du sett noe som bør fikses?"]} +{"id":"skolevei@/melde-fra","persona":"skolevei","need":"trafikkfare","page":"/melde-fra","state":{"body":"Bilene kjører altfor fort i svingen ved skolen om morgenen, og det er ikke fortau der ungene går."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva har du sett?\". Which alternative do they choose?","criteria":{"Få fikset det som er ødelagt":"Er noe på lekeplassen eller stien ødelagt? Si ifra, så tar vi tak i det før noen skader seg.","Få gjort noe med en farlig vei":"Sett du et farlig sted i trafikken? Meld fra, så tar vi det opp med kommunen eller veieier."}}},"expect":["Få gjort noe med en farlig vei"]} +{"id":"busslomme@/","persona":"busslomme","need":"trafikkfare","page":"/","state":{"body":"Det er umulig å se om det kommer noen når man skal ut fra busslomma ved butikken, hekken har blitt kjempehøy."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva vil du gjøre?\". Which alternative do they choose?","criteria":{"Har du sett noe som bør fikses?":"Har du sett en trafikkfarlig plass eller noe ødelagt på lekeplassen eller stien? Meld fra her.","Vil du bidra eller si din mening?":"Si din mening om en høringssak, eller meld deg til en dugnad eller en komité.","Vil du bli medlem eller endre medlemskapet?":"Meld deg inn i Tomter Vel, eller endre opplysningene dine som medlem.","Vil du hjelpe eller få hjelp av naboer?":"Trenger du en hånd, kan du stille opp for andre, eller har du noe å låne ut? Her møtes naboer."}}},"expect":["Har du sett noe som bør fikses?"]} +{"id":"busslomme@/melde-fra","persona":"busslomme","need":"trafikkfare","page":"/melde-fra","state":{"body":"Det er umulig å se om det kommer noen når man skal ut fra busslomma ved butikken, hekken har blitt kjempehøy."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva har du sett?\". Which alternative do they choose?","criteria":{"Få fikset det som er ødelagt":"Er noe på lekeplassen eller stien ødelagt? Si ifra, så tar vi tak i det før noen skader seg.","Få gjort noe med en farlig vei":"Sett du et farlig sted i trafikken? Meld fra, så tar vi det opp med kommunen eller veieier."}}},"expect":["Få gjort noe med en farlig vei"]} +{"id":"huske@/","persona":"huske","need":"anleggsfeil","page":"/","state":{"body":"Huska på lekeplassen henger i én kjetting. Sønnen min dro i den i går og den holdt så vidt."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva vil du gjøre?\". Which alternative do they choose?","criteria":{"Har du sett noe som bør fikses?":"Har du sett en trafikkfarlig plass eller noe ødelagt på lekeplassen eller stien? Meld fra her.","Vil du bidra eller si din mening?":"Si din mening om en høringssak, eller meld deg til en dugnad eller en komité.","Vil du bli medlem eller endre medlemskapet?":"Meld deg inn i Tomter Vel, eller endre opplysningene dine som medlem.","Vil du hjelpe eller få hjelp av naboer?":"Trenger du en hånd, kan du stille opp for andre, eller har du noe å låne ut? Her møtes naboer."}}},"expect":["Har du sett noe som bør fikses?"]} +{"id":"huske@/melde-fra","persona":"huske","need":"anleggsfeil","page":"/melde-fra","state":{"body":"Huska på lekeplassen henger i én kjetting. Sønnen min dro i den i går og den holdt så vidt."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva har du sett?\". Which alternative do they choose?","criteria":{"Få fikset det som er ødelagt":"Er noe på lekeplassen eller stien ødelagt? Si ifra, så tar vi tak i det før noen skader seg.","Få gjort noe med en farlig vei":"Sett du et farlig sted i trafikken? Meld fra, så tar vi det opp med kommunen eller veieier."}}},"expect":["Få fikset det som er ødelagt"]} +{"id":"bru@/","persona":"bru","need":"anleggsfeil","page":"/","state":{"body":"Planken på den lille brua på stien langs elva er råtten, jeg gikk nesten gjennom."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva vil du gjøre?\". Which alternative do they choose?","criteria":{"Har du sett noe som bør fikses?":"Har du sett en trafikkfarlig plass eller noe ødelagt på lekeplassen eller stien? Meld fra her.","Vil du bidra eller si din mening?":"Si din mening om en høringssak, eller meld deg til en dugnad eller en komité.","Vil du bli medlem eller endre medlemskapet?":"Meld deg inn i Tomter Vel, eller endre opplysningene dine som medlem.","Vil du hjelpe eller få hjelp av naboer?":"Trenger du en hånd, kan du stille opp for andre, eller har du noe å låne ut? Her møtes naboer."}}},"expect":["Har du sett noe som bør fikses?"]} +{"id":"bru@/melde-fra","persona":"bru","need":"anleggsfeil","page":"/melde-fra","state":{"body":"Planken på den lille brua på stien langs elva er råtten, jeg gikk nesten gjennom."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva har du sett?\". Which alternative do they choose?","criteria":{"Få fikset det som er ødelagt":"Er noe på lekeplassen eller stien ødelagt? Si ifra, så tar vi tak i det før noen skader seg.","Få gjort noe med en farlig vei":"Sett du et farlig sted i trafikken? Meld fra, så tar vi det opp med kommunen eller veieier."}}},"expect":["Få fikset det som er ødelagt"]} +{"id":"blokker@/","persona":"blokker","need":"horingsinnspill","page":"/","state":{"body":"Kommunen skal bygge blokker på jordet bak stasjonen, og jeg synes det er alt for høyt. Kan velet si ifra?"},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva vil du gjøre?\". Which alternative do they choose?","criteria":{"Har du sett noe som bør fikses?":"Har du sett en trafikkfarlig plass eller noe ødelagt på lekeplassen eller stien? Meld fra her.","Vil du bidra eller si din mening?":"Si din mening om en høringssak, eller meld deg til en dugnad eller en komité.","Vil du bli medlem eller endre medlemskapet?":"Meld deg inn i Tomter Vel, eller endre opplysningene dine som medlem.","Vil du hjelpe eller få hjelp av naboer?":"Trenger du en hånd, kan du stille opp for andre, eller har du noe å låne ut? Her møtes naboer."}}},"expect":["Vil du bidra eller si din mening?"]} +{"id":"blokker@/bidra","persona":"blokker","need":"horingsinnspill","page":"/bidra","state":{"body":"Kommunen skal bygge blokker på jordet bak stasjonen, og jeg synes det er alt for høyt. Kan velet si ifra?"},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva har du lyst til å bidra med?\". Which alternative do they choose?","criteria":{"Få din mening med i velets høringssvar":"Har kommunen en sak på høring du mener noe om? Send oss innspillet, så tar vi det med i velets svar.","Få en plass i komiteen som passer deg":"Vi er sju komiteer som trenger folk. Si hvilken som passer deg, så tar vi kontakt.","Gi en hånd på neste arrangement eller dugnad":"Sett av litt tid på et arrangement eller en dugnad. Vi finner noe som passer deg."}}},"expect":["Få din mening med i velets høringssvar"]} +{"id":"togtider@/","persona":"togtider","need":"horingsinnspill","page":"/","state":{"body":"Ruter vil kutte det tidlige toget. Jeg pendler til Oslo hver dag og vil at velet skriver til dem om det."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva vil du gjøre?\". Which alternative do they choose?","criteria":{"Har du sett noe som bør fikses?":"Har du sett en trafikkfarlig plass eller noe ødelagt på lekeplassen eller stien? Meld fra her.","Vil du bidra eller si din mening?":"Si din mening om en høringssak, eller meld deg til en dugnad eller en komité.","Vil du bli medlem eller endre medlemskapet?":"Meld deg inn i Tomter Vel, eller endre opplysningene dine som medlem.","Vil du hjelpe eller få hjelp av naboer?":"Trenger du en hånd, kan du stille opp for andre, eller har du noe å låne ut? Her møtes naboer."}}},"expect":["Vil du bidra eller si din mening?"]} +{"id":"togtider@/bidra","persona":"togtider","need":"horingsinnspill","page":"/bidra","state":{"body":"Ruter vil kutte det tidlige toget. Jeg pendler til Oslo hver dag og vil at velet skriver til dem om det."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva har du lyst til å bidra med?\". Which alternative do they choose?","criteria":{"Få din mening med i velets høringssvar":"Har kommunen en sak på høring du mener noe om? Send oss innspillet, så tar vi det med i velets svar.","Få en plass i komiteen som passer deg":"Vi er sju komiteer som trenger folk. Si hvilken som passer deg, så tar vi kontakt.","Gi en hånd på neste arrangement eller dugnad":"Sett av litt tid på et arrangement eller en dugnad. Vi finner noe som passer deg."}}},"expect":["Få din mening med i velets høringssvar"]} +{"id":"vafler@/","persona":"vafler","need":"hjelpe-til","page":"/","state":{"body":"Jeg kan steke vafler på 17. mai-frokosten hvis dere trenger folk."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva vil du gjøre?\". Which alternative do they choose?","criteria":{"Har du sett noe som bør fikses?":"Har du sett en trafikkfarlig plass eller noe ødelagt på lekeplassen eller stien? Meld fra her.","Vil du bidra eller si din mening?":"Si din mening om en høringssak, eller meld deg til en dugnad eller en komité.","Vil du bli medlem eller endre medlemskapet?":"Meld deg inn i Tomter Vel, eller endre opplysningene dine som medlem.","Vil du hjelpe eller få hjelp av naboer?":"Trenger du en hånd, kan du stille opp for andre, eller har du noe å låne ut? Her møtes naboer."}}},"expect":["Vil du bidra eller si din mening?"]} +{"id":"vafler@/bidra","persona":"vafler","need":"hjelpe-til","page":"/bidra","state":{"body":"Jeg kan steke vafler på 17. mai-frokosten hvis dere trenger folk."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva har du lyst til å bidra med?\". Which alternative do they choose?","criteria":{"Få din mening med i velets høringssvar":"Har kommunen en sak på høring du mener noe om? Send oss innspillet, så tar vi det med i velets svar.","Få en plass i komiteen som passer deg":"Vi er sju komiteer som trenger folk. Si hvilken som passer deg, så tar vi kontakt.","Gi en hånd på neste arrangement eller dugnad":"Sett av litt tid på et arrangement eller en dugnad. Vi finner noe som passer deg."}}},"expect":["Gi en hånd på neste arrangement eller dugnad"]} +{"id":"motorsag@/","persona":"motorsag","need":"hjelpe-til","page":"/","state":{"body":"Har motorsag og ledig helg, kan ta trær langs elvestien hvis det er en dugnad."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva vil du gjøre?\". Which alternative do they choose?","criteria":{"Har du sett noe som bør fikses?":"Har du sett en trafikkfarlig plass eller noe ødelagt på lekeplassen eller stien? Meld fra her.","Vil du bidra eller si din mening?":"Si din mening om en høringssak, eller meld deg til en dugnad eller en komité.","Vil du bli medlem eller endre medlemskapet?":"Meld deg inn i Tomter Vel, eller endre opplysningene dine som medlem.","Vil du hjelpe eller få hjelp av naboer?":"Trenger du en hånd, kan du stille opp for andre, eller har du noe å låne ut? Her møtes naboer."}}},"expect":["Vil du bidra eller si din mening?"]} +{"id":"motorsag@/bidra","persona":"motorsag","need":"hjelpe-til","page":"/bidra","state":{"body":"Har motorsag og ledig helg, kan ta trær langs elvestien hvis det er en dugnad."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva har du lyst til å bidra med?\". Which alternative do they choose?","criteria":{"Få din mening med i velets høringssvar":"Har kommunen en sak på høring du mener noe om? Send oss innspillet, så tar vi det med i velets svar.","Få en plass i komiteen som passer deg":"Vi er sju komiteer som trenger folk. Si hvilken som passer deg, så tar vi kontakt.","Gi en hånd på neste arrangement eller dugnad":"Sett av litt tid på et arrangement eller en dugnad. Vi finner noe som passer deg."}}},"expect":["Gi en hånd på neste arrangement eller dugnad"]} +{"id":"pendler@/","persona":"pendler","need":"komite","page":"/","state":{"body":"Jeg pendler og er lei av at ingen snakker med Ruter. Jeg vil gjerne være med i gjengen som jobber med det."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva vil du gjøre?\". Which alternative do they choose?","criteria":{"Har du sett noe som bør fikses?":"Har du sett en trafikkfarlig plass eller noe ødelagt på lekeplassen eller stien? Meld fra her.","Vil du bidra eller si din mening?":"Si din mening om en høringssak, eller meld deg til en dugnad eller en komité.","Vil du bli medlem eller endre medlemskapet?":"Meld deg inn i Tomter Vel, eller endre opplysningene dine som medlem.","Vil du hjelpe eller få hjelp av naboer?":"Trenger du en hånd, kan du stille opp for andre, eller har du noe å låne ut? Her møtes naboer."}}},"expect":["Vil du bidra eller si din mening?"]} +{"id":"pendler@/bidra","persona":"pendler","need":"komite","page":"/bidra","state":{"body":"Jeg pendler og er lei av at ingen snakker med Ruter. Jeg vil gjerne være med i gjengen som jobber med det."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva har du lyst til å bidra med?\". Which alternative do they choose?","criteria":{"Få din mening med i velets høringssvar":"Har kommunen en sak på høring du mener noe om? Send oss innspillet, så tar vi det med i velets svar.","Få en plass i komiteen som passer deg":"Vi er sju komiteer som trenger folk. Si hvilken som passer deg, så tar vi kontakt.","Gi en hånd på neste arrangement eller dugnad":"Sett av litt tid på et arrangement eller en dugnad. Vi finner noe som passer deg."}}},"expect":["Få en plass i komiteen som passer deg"]} +{"id":"planlegger@/","persona":"planlegger","need":"komite","page":"/","state":{"body":"Jeg er arealplanlegger av yrke og kunne bidratt når kommunen sender saker på høring."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva vil du gjøre?\". Which alternative do they choose?","criteria":{"Har du sett noe som bør fikses?":"Har du sett en trafikkfarlig plass eller noe ødelagt på lekeplassen eller stien? Meld fra her.","Vil du bidra eller si din mening?":"Si din mening om en høringssak, eller meld deg til en dugnad eller en komité.","Vil du bli medlem eller endre medlemskapet?":"Meld deg inn i Tomter Vel, eller endre opplysningene dine som medlem.","Vil du hjelpe eller få hjelp av naboer?":"Trenger du en hånd, kan du stille opp for andre, eller har du noe å låne ut? Her møtes naboer."}}},"expect":["Vil du bidra eller si din mening?"]} +{"id":"planlegger@/bidra","persona":"planlegger","need":"komite","page":"/bidra","state":{"body":"Jeg er arealplanlegger av yrke og kunne bidratt når kommunen sender saker på høring."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva har du lyst til å bidra med?\". Which alternative do they choose?","criteria":{"Få din mening med i velets høringssvar":"Har kommunen en sak på høring du mener noe om? Send oss innspillet, så tar vi det med i velets svar.","Få en plass i komiteen som passer deg":"Vi er sju komiteer som trenger folk. Si hvilken som passer deg, så tar vi kontakt.","Gi en hånd på neste arrangement eller dugnad":"Sett av litt tid på et arrangement eller en dugnad. Vi finner noe som passer deg."}}},"expect":["Få en plass i komiteen som passer deg"]} +{"id":"tilhenger@/","persona":"tilhenger","need":"dele-utstyr","page":"/","state":{"body":"Jeg har en tilhenger som står ubrukt mesteparten av året, naboer kan gjerne låne den for en hundrelapp."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva vil du gjøre?\". Which alternative do they choose?","criteria":{"Har du sett noe som bør fikses?":"Har du sett en trafikkfarlig plass eller noe ødelagt på lekeplassen eller stien? Meld fra her.","Vil du bidra eller si din mening?":"Si din mening om en høringssak, eller meld deg til en dugnad eller en komité.","Vil du bli medlem eller endre medlemskapet?":"Meld deg inn i Tomter Vel, eller endre opplysningene dine som medlem.","Vil du hjelpe eller få hjelp av naboer?":"Trenger du en hånd, kan du stille opp for andre, eller har du noe å låne ut? Her møtes naboer."}}},"expect":["Vil du hjelpe eller få hjelp av naboer?"]} +{"id":"tilhenger@/naboer","persona":"tilhenger","need":"dele-utstyr","page":"/naboer","state":{"body":"Jeg har en tilhenger som står ubrukt mesteparten av året, naboer kan gjerne låne den for en hundrelapp."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Trenger du en nabo, eller vil du være en?\". Which alternative do they choose?","criteria":{"Bli en nabo andre kan spørre":"Si fra om hva du kan bidra med, så tar nabohjelpa kontakt når det trengs.","Del utstyr med naboene":"Legg ut det du har til overs, eller si fra om noe du gjerne vil låne av naboene.","Få en nabo til å stille opp":"Trenger du en hånd med snømåking, handling eller skyss? Fortell hva du trenger, så finner vi en nabo."}}},"expect":["Del utstyr med naboene"]} +{"id":"stige@/","persona":"stige","need":"dele-utstyr","page":"/","state":{"body":"Trenger en lang stige en dag i helga for å rense takrenna, er det noen i nærheten som har?"},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva vil du gjøre?\". Which alternative do they choose?","criteria":{"Har du sett noe som bør fikses?":"Har du sett en trafikkfarlig plass eller noe ødelagt på lekeplassen eller stien? Meld fra her.","Vil du bidra eller si din mening?":"Si din mening om en høringssak, eller meld deg til en dugnad eller en komité.","Vil du bli medlem eller endre medlemskapet?":"Meld deg inn i Tomter Vel, eller endre opplysningene dine som medlem.","Vil du hjelpe eller få hjelp av naboer?":"Trenger du en hånd, kan du stille opp for andre, eller har du noe å låne ut? Her møtes naboer."}}},"expect":["Vil du hjelpe eller få hjelp av naboer?"]} +{"id":"stige@/naboer","persona":"stige","need":"dele-utstyr","page":"/naboer","state":{"body":"Trenger en lang stige en dag i helga for å rense takrenna, er det noen i nærheten som har?"},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Trenger du en nabo, eller vil du være en?\". Which alternative do they choose?","criteria":{"Bli en nabo andre kan spørre":"Si fra om hva du kan bidra med, så tar nabohjelpa kontakt når det trengs.","Del utstyr med naboene":"Legg ut det du har til overs, eller si fra om noe du gjerne vil låne av naboene.","Få en nabo til å stille opp":"Trenger du en hånd med snømåking, handling eller skyss? Fortell hva du trenger, så finner vi en nabo."}}},"expect":["Del utstyr med naboene"]} +{"id":"snomaking@/","persona":"snomaking","need":"trenger-hjelp","page":"/","state":{"body":"Jeg er 84 og klarer ikke å måke innkjørselen lenger. Er det noen som kan hjelpe meg når det snør?"},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva vil du gjøre?\". Which alternative do they choose?","criteria":{"Har du sett noe som bør fikses?":"Har du sett en trafikkfarlig plass eller noe ødelagt på lekeplassen eller stien? Meld fra her.","Vil du bidra eller si din mening?":"Si din mening om en høringssak, eller meld deg til en dugnad eller en komité.","Vil du bli medlem eller endre medlemskapet?":"Meld deg inn i Tomter Vel, eller endre opplysningene dine som medlem.","Vil du hjelpe eller få hjelp av naboer?":"Trenger du en hånd, kan du stille opp for andre, eller har du noe å låne ut? Her møtes naboer."}}},"expect":["Vil du hjelpe eller få hjelp av naboer?"]} +{"id":"snomaking@/naboer","persona":"snomaking","need":"trenger-hjelp","page":"/naboer","state":{"body":"Jeg er 84 og klarer ikke å måke innkjørselen lenger. Er det noen som kan hjelpe meg når det snør?"},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Trenger du en nabo, eller vil du være en?\". Which alternative do they choose?","criteria":{"Bli en nabo andre kan spørre":"Si fra om hva du kan bidra med, så tar nabohjelpa kontakt når det trengs.","Del utstyr med naboene":"Legg ut det du har til overs, eller si fra om noe du gjerne vil låne av naboene.","Få en nabo til å stille opp":"Trenger du en hånd med snømåking, handling eller skyss? Fortell hva du trenger, så finner vi en nabo."}}},"expect":["Få en nabo til å stille opp"]} +{"id":"nyoperert@/","persona":"nyoperert","need":"trenger-hjelp","page":"/","state":{"body":"Jeg er nyoperert i hofta og kommer meg ikke til butikken på noen uker. Kunne noen handlet for meg?"},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva vil du gjøre?\". Which alternative do they choose?","criteria":{"Har du sett noe som bør fikses?":"Har du sett en trafikkfarlig plass eller noe ødelagt på lekeplassen eller stien? Meld fra her.","Vil du bidra eller si din mening?":"Si din mening om en høringssak, eller meld deg til en dugnad eller en komité.","Vil du bli medlem eller endre medlemskapet?":"Meld deg inn i Tomter Vel, eller endre opplysningene dine som medlem.","Vil du hjelpe eller få hjelp av naboer?":"Trenger du en hånd, kan du stille opp for andre, eller har du noe å låne ut? Her møtes naboer."}}},"expect":["Vil du hjelpe eller få hjelp av naboer?"]} +{"id":"nyoperert@/naboer","persona":"nyoperert","need":"trenger-hjelp","page":"/naboer","state":{"body":"Jeg er nyoperert i hofta og kommer meg ikke til butikken på noen uker. Kunne noen handlet for meg?"},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Trenger du en nabo, eller vil du være en?\". Which alternative do they choose?","criteria":{"Bli en nabo andre kan spørre":"Si fra om hva du kan bidra med, så tar nabohjelpa kontakt når det trengs.","Del utstyr med naboene":"Legg ut det du har til overs, eller si fra om noe du gjerne vil låne av naboene.","Få en nabo til å stille opp":"Trenger du en hånd med snømåking, handling eller skyss? Fortell hva du trenger, så finner vi en nabo."}}},"expect":["Få en nabo til å stille opp"]} +{"id":"hjemmekontor@/","persona":"hjemmekontor","need":"kan-hjelpe","page":"/","state":{"body":"Jeg jobber hjemmefra og kan godt måke eller handle for noen som ikke får det til selv."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva vil du gjøre?\". Which alternative do they choose?","criteria":{"Har du sett noe som bør fikses?":"Har du sett en trafikkfarlig plass eller noe ødelagt på lekeplassen eller stien? Meld fra her.","Vil du bidra eller si din mening?":"Si din mening om en høringssak, eller meld deg til en dugnad eller en komité.","Vil du bli medlem eller endre medlemskapet?":"Meld deg inn i Tomter Vel, eller endre opplysningene dine som medlem.","Vil du hjelpe eller få hjelp av naboer?":"Trenger du en hånd, kan du stille opp for andre, eller har du noe å låne ut? Her møtes naboer."}}},"expect":["Vil du hjelpe eller få hjelp av naboer?"]} +{"id":"hjemmekontor@/naboer","persona":"hjemmekontor","need":"kan-hjelpe","page":"/naboer","state":{"body":"Jeg jobber hjemmefra og kan godt måke eller handle for noen som ikke får det til selv."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Trenger du en nabo, eller vil du være en?\". Which alternative do they choose?","criteria":{"Bli en nabo andre kan spørre":"Si fra om hva du kan bidra med, så tar nabohjelpa kontakt når det trengs.","Del utstyr med naboene":"Legg ut det du har til overs, eller si fra om noe du gjerne vil låne av naboene.","Få en nabo til å stille opp":"Trenger du en hånd med snømåking, handling eller skyss? Fortell hva du trenger, så finner vi en nabo."}}},"expect":["Bli en nabo andre kan spørre"]} +{"id":"pensjonert-elektriker@/","persona":"pensjonert-elektriker","need":"kan-hjelpe","page":"/","state":{"body":"Pensjonert elektriker, har bil og god tid. Si fra om noen trenger skyss eller en hånd med småting."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva vil du gjøre?\". Which alternative do they choose?","criteria":{"Har du sett noe som bør fikses?":"Har du sett en trafikkfarlig plass eller noe ødelagt på lekeplassen eller stien? Meld fra her.","Vil du bidra eller si din mening?":"Si din mening om en høringssak, eller meld deg til en dugnad eller en komité.","Vil du bli medlem eller endre medlemskapet?":"Meld deg inn i Tomter Vel, eller endre opplysningene dine som medlem.","Vil du hjelpe eller få hjelp av naboer?":"Trenger du en hånd, kan du stille opp for andre, eller har du noe å låne ut? Her møtes naboer."}}},"expect":["Vil du hjelpe eller få hjelp av naboer?"]} +{"id":"pensjonert-elektriker@/naboer","persona":"pensjonert-elektriker","need":"kan-hjelpe","page":"/naboer","state":{"body":"Pensjonert elektriker, har bil og god tid. Si fra om noen trenger skyss eller en hånd med småting."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Trenger du en nabo, eller vil du være en?\". Which alternative do they choose?","criteria":{"Bli en nabo andre kan spørre":"Si fra om hva du kan bidra med, så tar nabohjelpa kontakt når det trengs.","Del utstyr med naboene":"Legg ut det du har til overs, eller si fra om noe du gjerne vil låne av naboene.","Få en nabo til å stille opp":"Trenger du en hånd med snømåking, handling eller skyss? Fortell hva du trenger, så finner vi en nabo."}}},"expect":["Bli en nabo andre kan spørre"]} diff --git a/runs/tomtervel-nabohjelp-2026-09-22/tasks-skim.jsonl b/runs/tomtervel-nabohjelp-2026-09-22/tasks-skim.jsonl new file mode 100644 index 0000000..4ef63b3 --- /dev/null +++ b/runs/tomtervel-nabohjelp-2026-09-22/tasks-skim.jsonl @@ -0,0 +1,40 @@ +{"id":"nyinnflyttet@/","persona":"nyinnflyttet","need":"bli-medlem","page":"/","state":{"body":"Vi flyttet til Tomter i mars og har hørt at det finnes et vel. Hvordan blir vi med, og hva koster det?"},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva vil du gjøre?\". Which alternative do they choose?","criteria":{"Har du sett noe som bør fikses?":"Har du sett noe som bør fikses?","Vil du bidra eller si din mening?":"Vil du bidra eller si din mening?","Vil du bli medlem eller endre medlemskapet?":"Vil du bli medlem eller endre medlemskapet?","Vil du hjelpe eller få hjelp av naboer?":"Vil du hjelpe eller få hjelp av naboer?"}}},"expect":["Vil du bli medlem eller endre medlemskapet?"]} +{"id":"nyinnflyttet@/medlem","persona":"nyinnflyttet","need":"bli-medlem","page":"/medlem","state":{"body":"Vi flyttet til Tomter i mars og har hørt at det finnes et vel. Hvordan blir vi med, og hva koster det?"},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Vil du bli medlem, eller endre medlemskapet ditt?\". Which alternative do they choose?","criteria":{"Meld deg inn i Tomter Vel":"Meld deg inn i Tomter Vel","Oppdater opplysningene dine":"Oppdater opplysningene dine"}}},"expect":["Meld deg inn i Tomter Vel"]} +{"id":"glemte-a-betale@/","persona":"glemte-a-betale","need":"bli-medlem","page":"/","state":{"body":"Jeg har vært medlem før men fikk ikke betalt i fjor. Kan jeg bare vippse, og til hvem?"},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva vil du gjøre?\". Which alternative do they choose?","criteria":{"Har du sett noe som bør fikses?":"Har du sett noe som bør fikses?","Vil du bidra eller si din mening?":"Vil du bidra eller si din mening?","Vil du bli medlem eller endre medlemskapet?":"Vil du bli medlem eller endre medlemskapet?","Vil du hjelpe eller få hjelp av naboer?":"Vil du hjelpe eller få hjelp av naboer?"}}},"expect":["Vil du bli medlem eller endre medlemskapet?"]} +{"id":"glemte-a-betale@/medlem","persona":"glemte-a-betale","need":"bli-medlem","page":"/medlem","state":{"body":"Jeg har vært medlem før men fikk ikke betalt i fjor. Kan jeg bare vippse, og til hvem?"},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Vil du bli medlem, eller endre medlemskapet ditt?\". Which alternative do they choose?","criteria":{"Meld deg inn i Tomter Vel":"Meld deg inn i Tomter Vel","Oppdater opplysningene dine":"Oppdater opplysningene dine"}}},"expect":["Meld deg inn i Tomter Vel"]} +{"id":"ny-epost@/","persona":"ny-epost","need":"endre-medlemskap","page":"/","state":{"body":"Vi har byttet e-postadresse og får ikke lenger noe fra dere."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva vil du gjøre?\". Which alternative do they choose?","criteria":{"Har du sett noe som bør fikses?":"Har du sett noe som bør fikses?","Vil du bidra eller si din mening?":"Vil du bidra eller si din mening?","Vil du bli medlem eller endre medlemskapet?":"Vil du bli medlem eller endre medlemskapet?","Vil du hjelpe eller få hjelp av naboer?":"Vil du hjelpe eller få hjelp av naboer?"}}},"expect":["Vil du bli medlem eller endre medlemskapet?"]} +{"id":"ny-epost@/medlem","persona":"ny-epost","need":"endre-medlemskap","page":"/medlem","state":{"body":"Vi har byttet e-postadresse og får ikke lenger noe fra dere."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Vil du bli medlem, eller endre medlemskapet ditt?\". Which alternative do they choose?","criteria":{"Meld deg inn i Tomter Vel":"Meld deg inn i Tomter Vel","Oppdater opplysningene dine":"Oppdater opplysningene dine"}}},"expect":["Oppdater opplysningene dine"]} +{"id":"flytter@/","persona":"flytter","need":"endre-medlemskap","page":"/","state":{"body":"Vi selger huset og flytter til Ski i august, så vi må ut av medlemslista."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva vil du gjøre?\". Which alternative do they choose?","criteria":{"Har du sett noe som bør fikses?":"Har du sett noe som bør fikses?","Vil du bidra eller si din mening?":"Vil du bidra eller si din mening?","Vil du bli medlem eller endre medlemskapet?":"Vil du bli medlem eller endre medlemskapet?","Vil du hjelpe eller få hjelp av naboer?":"Vil du hjelpe eller få hjelp av naboer?"}}},"expect":["Vil du bli medlem eller endre medlemskapet?"]} +{"id":"flytter@/medlem","persona":"flytter","need":"endre-medlemskap","page":"/medlem","state":{"body":"Vi selger huset og flytter til Ski i august, så vi må ut av medlemslista."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Vil du bli medlem, eller endre medlemskapet ditt?\". Which alternative do they choose?","criteria":{"Meld deg inn i Tomter Vel":"Meld deg inn i Tomter Vel","Oppdater opplysningene dine":"Oppdater opplysningene dine"}}},"expect":["Oppdater opplysningene dine"]} +{"id":"skolevei@/","persona":"skolevei","need":"trafikkfare","page":"/","state":{"body":"Bilene kjører altfor fort i svingen ved skolen om morgenen, og det er ikke fortau der ungene går."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva vil du gjøre?\". Which alternative do they choose?","criteria":{"Har du sett noe som bør fikses?":"Har du sett noe som bør fikses?","Vil du bidra eller si din mening?":"Vil du bidra eller si din mening?","Vil du bli medlem eller endre medlemskapet?":"Vil du bli medlem eller endre medlemskapet?","Vil du hjelpe eller få hjelp av naboer?":"Vil du hjelpe eller få hjelp av naboer?"}}},"expect":["Har du sett noe som bør fikses?"]} +{"id":"skolevei@/melde-fra","persona":"skolevei","need":"trafikkfare","page":"/melde-fra","state":{"body":"Bilene kjører altfor fort i svingen ved skolen om morgenen, og det er ikke fortau der ungene går."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva har du sett?\". Which alternative do they choose?","criteria":{"Få fikset det som er ødelagt":"Få fikset det som er ødelagt","Få gjort noe med en farlig vei":"Få gjort noe med en farlig vei"}}},"expect":["Få gjort noe med en farlig vei"]} +{"id":"busslomme@/","persona":"busslomme","need":"trafikkfare","page":"/","state":{"body":"Det er umulig å se om det kommer noen når man skal ut fra busslomma ved butikken, hekken har blitt kjempehøy."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva vil du gjøre?\". Which alternative do they choose?","criteria":{"Har du sett noe som bør fikses?":"Har du sett noe som bør fikses?","Vil du bidra eller si din mening?":"Vil du bidra eller si din mening?","Vil du bli medlem eller endre medlemskapet?":"Vil du bli medlem eller endre medlemskapet?","Vil du hjelpe eller få hjelp av naboer?":"Vil du hjelpe eller få hjelp av naboer?"}}},"expect":["Har du sett noe som bør fikses?"]} +{"id":"busslomme@/melde-fra","persona":"busslomme","need":"trafikkfare","page":"/melde-fra","state":{"body":"Det er umulig å se om det kommer noen når man skal ut fra busslomma ved butikken, hekken har blitt kjempehøy."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva har du sett?\". Which alternative do they choose?","criteria":{"Få fikset det som er ødelagt":"Få fikset det som er ødelagt","Få gjort noe med en farlig vei":"Få gjort noe med en farlig vei"}}},"expect":["Få gjort noe med en farlig vei"]} +{"id":"huske@/","persona":"huske","need":"anleggsfeil","page":"/","state":{"body":"Huska på lekeplassen henger i én kjetting. Sønnen min dro i den i går og den holdt så vidt."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva vil du gjøre?\". Which alternative do they choose?","criteria":{"Har du sett noe som bør fikses?":"Har du sett noe som bør fikses?","Vil du bidra eller si din mening?":"Vil du bidra eller si din mening?","Vil du bli medlem eller endre medlemskapet?":"Vil du bli medlem eller endre medlemskapet?","Vil du hjelpe eller få hjelp av naboer?":"Vil du hjelpe eller få hjelp av naboer?"}}},"expect":["Har du sett noe som bør fikses?"]} +{"id":"huske@/melde-fra","persona":"huske","need":"anleggsfeil","page":"/melde-fra","state":{"body":"Huska på lekeplassen henger i én kjetting. Sønnen min dro i den i går og den holdt så vidt."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva har du sett?\". Which alternative do they choose?","criteria":{"Få fikset det som er ødelagt":"Få fikset det som er ødelagt","Få gjort noe med en farlig vei":"Få gjort noe med en farlig vei"}}},"expect":["Få fikset det som er ødelagt"]} +{"id":"bru@/","persona":"bru","need":"anleggsfeil","page":"/","state":{"body":"Planken på den lille brua på stien langs elva er råtten, jeg gikk nesten gjennom."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva vil du gjøre?\". Which alternative do they choose?","criteria":{"Har du sett noe som bør fikses?":"Har du sett noe som bør fikses?","Vil du bidra eller si din mening?":"Vil du bidra eller si din mening?","Vil du bli medlem eller endre medlemskapet?":"Vil du bli medlem eller endre medlemskapet?","Vil du hjelpe eller få hjelp av naboer?":"Vil du hjelpe eller få hjelp av naboer?"}}},"expect":["Har du sett noe som bør fikses?"]} +{"id":"bru@/melde-fra","persona":"bru","need":"anleggsfeil","page":"/melde-fra","state":{"body":"Planken på den lille brua på stien langs elva er råtten, jeg gikk nesten gjennom."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva har du sett?\". Which alternative do they choose?","criteria":{"Få fikset det som er ødelagt":"Få fikset det som er ødelagt","Få gjort noe med en farlig vei":"Få gjort noe med en farlig vei"}}},"expect":["Få fikset det som er ødelagt"]} +{"id":"blokker@/","persona":"blokker","need":"horingsinnspill","page":"/","state":{"body":"Kommunen skal bygge blokker på jordet bak stasjonen, og jeg synes det er alt for høyt. Kan velet si ifra?"},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva vil du gjøre?\". Which alternative do they choose?","criteria":{"Har du sett noe som bør fikses?":"Har du sett noe som bør fikses?","Vil du bidra eller si din mening?":"Vil du bidra eller si din mening?","Vil du bli medlem eller endre medlemskapet?":"Vil du bli medlem eller endre medlemskapet?","Vil du hjelpe eller få hjelp av naboer?":"Vil du hjelpe eller få hjelp av naboer?"}}},"expect":["Vil du bidra eller si din mening?"]} +{"id":"blokker@/bidra","persona":"blokker","need":"horingsinnspill","page":"/bidra","state":{"body":"Kommunen skal bygge blokker på jordet bak stasjonen, og jeg synes det er alt for høyt. Kan velet si ifra?"},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva har du lyst til å bidra med?\". Which alternative do they choose?","criteria":{"Få din mening med i velets høringssvar":"Få din mening med i velets høringssvar","Få en plass i komiteen som passer deg":"Få en plass i komiteen som passer deg","Gi en hånd på neste arrangement eller dugnad":"Gi en hånd på neste arrangement eller dugnad"}}},"expect":["Få din mening med i velets høringssvar"]} +{"id":"togtider@/","persona":"togtider","need":"horingsinnspill","page":"/","state":{"body":"Ruter vil kutte det tidlige toget. Jeg pendler til Oslo hver dag og vil at velet skriver til dem om det."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva vil du gjøre?\". Which alternative do they choose?","criteria":{"Har du sett noe som bør fikses?":"Har du sett noe som bør fikses?","Vil du bidra eller si din mening?":"Vil du bidra eller si din mening?","Vil du bli medlem eller endre medlemskapet?":"Vil du bli medlem eller endre medlemskapet?","Vil du hjelpe eller få hjelp av naboer?":"Vil du hjelpe eller få hjelp av naboer?"}}},"expect":["Vil du bidra eller si din mening?"]} +{"id":"togtider@/bidra","persona":"togtider","need":"horingsinnspill","page":"/bidra","state":{"body":"Ruter vil kutte det tidlige toget. Jeg pendler til Oslo hver dag og vil at velet skriver til dem om det."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva har du lyst til å bidra med?\". Which alternative do they choose?","criteria":{"Få din mening med i velets høringssvar":"Få din mening med i velets høringssvar","Få en plass i komiteen som passer deg":"Få en plass i komiteen som passer deg","Gi en hånd på neste arrangement eller dugnad":"Gi en hånd på neste arrangement eller dugnad"}}},"expect":["Få din mening med i velets høringssvar"]} +{"id":"vafler@/","persona":"vafler","need":"hjelpe-til","page":"/","state":{"body":"Jeg kan steke vafler på 17. mai-frokosten hvis dere trenger folk."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva vil du gjøre?\". Which alternative do they choose?","criteria":{"Har du sett noe som bør fikses?":"Har du sett noe som bør fikses?","Vil du bidra eller si din mening?":"Vil du bidra eller si din mening?","Vil du bli medlem eller endre medlemskapet?":"Vil du bli medlem eller endre medlemskapet?","Vil du hjelpe eller få hjelp av naboer?":"Vil du hjelpe eller få hjelp av naboer?"}}},"expect":["Vil du bidra eller si din mening?"]} +{"id":"vafler@/bidra","persona":"vafler","need":"hjelpe-til","page":"/bidra","state":{"body":"Jeg kan steke vafler på 17. mai-frokosten hvis dere trenger folk."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva har du lyst til å bidra med?\". Which alternative do they choose?","criteria":{"Få din mening med i velets høringssvar":"Få din mening med i velets høringssvar","Få en plass i komiteen som passer deg":"Få en plass i komiteen som passer deg","Gi en hånd på neste arrangement eller dugnad":"Gi en hånd på neste arrangement eller dugnad"}}},"expect":["Gi en hånd på neste arrangement eller dugnad"]} +{"id":"motorsag@/","persona":"motorsag","need":"hjelpe-til","page":"/","state":{"body":"Har motorsag og ledig helg, kan ta trær langs elvestien hvis det er en dugnad."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva vil du gjøre?\". Which alternative do they choose?","criteria":{"Har du sett noe som bør fikses?":"Har du sett noe som bør fikses?","Vil du bidra eller si din mening?":"Vil du bidra eller si din mening?","Vil du bli medlem eller endre medlemskapet?":"Vil du bli medlem eller endre medlemskapet?","Vil du hjelpe eller få hjelp av naboer?":"Vil du hjelpe eller få hjelp av naboer?"}}},"expect":["Vil du bidra eller si din mening?"]} +{"id":"motorsag@/bidra","persona":"motorsag","need":"hjelpe-til","page":"/bidra","state":{"body":"Har motorsag og ledig helg, kan ta trær langs elvestien hvis det er en dugnad."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva har du lyst til å bidra med?\". Which alternative do they choose?","criteria":{"Få din mening med i velets høringssvar":"Få din mening med i velets høringssvar","Få en plass i komiteen som passer deg":"Få en plass i komiteen som passer deg","Gi en hånd på neste arrangement eller dugnad":"Gi en hånd på neste arrangement eller dugnad"}}},"expect":["Gi en hånd på neste arrangement eller dugnad"]} +{"id":"pendler@/","persona":"pendler","need":"komite","page":"/","state":{"body":"Jeg pendler og er lei av at ingen snakker med Ruter. Jeg vil gjerne være med i gjengen som jobber med det."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva vil du gjøre?\". Which alternative do they choose?","criteria":{"Har du sett noe som bør fikses?":"Har du sett noe som bør fikses?","Vil du bidra eller si din mening?":"Vil du bidra eller si din mening?","Vil du bli medlem eller endre medlemskapet?":"Vil du bli medlem eller endre medlemskapet?","Vil du hjelpe eller få hjelp av naboer?":"Vil du hjelpe eller få hjelp av naboer?"}}},"expect":["Vil du bidra eller si din mening?"]} +{"id":"pendler@/bidra","persona":"pendler","need":"komite","page":"/bidra","state":{"body":"Jeg pendler og er lei av at ingen snakker med Ruter. Jeg vil gjerne være med i gjengen som jobber med det."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva har du lyst til å bidra med?\". Which alternative do they choose?","criteria":{"Få din mening med i velets høringssvar":"Få din mening med i velets høringssvar","Få en plass i komiteen som passer deg":"Få en plass i komiteen som passer deg","Gi en hånd på neste arrangement eller dugnad":"Gi en hånd på neste arrangement eller dugnad"}}},"expect":["Få en plass i komiteen som passer deg"]} +{"id":"planlegger@/","persona":"planlegger","need":"komite","page":"/","state":{"body":"Jeg er arealplanlegger av yrke og kunne bidratt når kommunen sender saker på høring."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva vil du gjøre?\". Which alternative do they choose?","criteria":{"Har du sett noe som bør fikses?":"Har du sett noe som bør fikses?","Vil du bidra eller si din mening?":"Vil du bidra eller si din mening?","Vil du bli medlem eller endre medlemskapet?":"Vil du bli medlem eller endre medlemskapet?","Vil du hjelpe eller få hjelp av naboer?":"Vil du hjelpe eller få hjelp av naboer?"}}},"expect":["Vil du bidra eller si din mening?"]} +{"id":"planlegger@/bidra","persona":"planlegger","need":"komite","page":"/bidra","state":{"body":"Jeg er arealplanlegger av yrke og kunne bidratt når kommunen sender saker på høring."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva har du lyst til å bidra med?\". Which alternative do they choose?","criteria":{"Få din mening med i velets høringssvar":"Få din mening med i velets høringssvar","Få en plass i komiteen som passer deg":"Få en plass i komiteen som passer deg","Gi en hånd på neste arrangement eller dugnad":"Gi en hånd på neste arrangement eller dugnad"}}},"expect":["Få en plass i komiteen som passer deg"]} +{"id":"tilhenger@/","persona":"tilhenger","need":"dele-utstyr","page":"/","state":{"body":"Jeg har en tilhenger som står ubrukt mesteparten av året, naboer kan gjerne låne den for en hundrelapp."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva vil du gjøre?\". Which alternative do they choose?","criteria":{"Har du sett noe som bør fikses?":"Har du sett noe som bør fikses?","Vil du bidra eller si din mening?":"Vil du bidra eller si din mening?","Vil du bli medlem eller endre medlemskapet?":"Vil du bli medlem eller endre medlemskapet?","Vil du hjelpe eller få hjelp av naboer?":"Vil du hjelpe eller få hjelp av naboer?"}}},"expect":["Vil du hjelpe eller få hjelp av naboer?"]} +{"id":"tilhenger@/naboer","persona":"tilhenger","need":"dele-utstyr","page":"/naboer","state":{"body":"Jeg har en tilhenger som står ubrukt mesteparten av året, naboer kan gjerne låne den for en hundrelapp."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Trenger du en nabo, eller vil du være en?\". Which alternative do they choose?","criteria":{"Bli en nabo andre kan spørre":"Bli en nabo andre kan spørre","Del utstyr med naboene":"Del utstyr med naboene","Få en nabo til å stille opp":"Få en nabo til å stille opp"}}},"expect":["Del utstyr med naboene"]} +{"id":"stige@/","persona":"stige","need":"dele-utstyr","page":"/","state":{"body":"Trenger en lang stige en dag i helga for å rense takrenna, er det noen i nærheten som har?"},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva vil du gjøre?\". Which alternative do they choose?","criteria":{"Har du sett noe som bør fikses?":"Har du sett noe som bør fikses?","Vil du bidra eller si din mening?":"Vil du bidra eller si din mening?","Vil du bli medlem eller endre medlemskapet?":"Vil du bli medlem eller endre medlemskapet?","Vil du hjelpe eller få hjelp av naboer?":"Vil du hjelpe eller få hjelp av naboer?"}}},"expect":["Vil du hjelpe eller få hjelp av naboer?"]} +{"id":"stige@/naboer","persona":"stige","need":"dele-utstyr","page":"/naboer","state":{"body":"Trenger en lang stige en dag i helga for å rense takrenna, er det noen i nærheten som har?"},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Trenger du en nabo, eller vil du være en?\". Which alternative do they choose?","criteria":{"Bli en nabo andre kan spørre":"Bli en nabo andre kan spørre","Del utstyr med naboene":"Del utstyr med naboene","Få en nabo til å stille opp":"Få en nabo til å stille opp"}}},"expect":["Del utstyr med naboene"]} +{"id":"snomaking@/","persona":"snomaking","need":"trenger-hjelp","page":"/","state":{"body":"Jeg er 84 og klarer ikke å måke innkjørselen lenger. Er det noen som kan hjelpe meg når det snør?"},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva vil du gjøre?\". Which alternative do they choose?","criteria":{"Har du sett noe som bør fikses?":"Har du sett noe som bør fikses?","Vil du bidra eller si din mening?":"Vil du bidra eller si din mening?","Vil du bli medlem eller endre medlemskapet?":"Vil du bli medlem eller endre medlemskapet?","Vil du hjelpe eller få hjelp av naboer?":"Vil du hjelpe eller få hjelp av naboer?"}}},"expect":["Vil du hjelpe eller få hjelp av naboer?"]} +{"id":"snomaking@/naboer","persona":"snomaking","need":"trenger-hjelp","page":"/naboer","state":{"body":"Jeg er 84 og klarer ikke å måke innkjørselen lenger. Er det noen som kan hjelpe meg når det snør?"},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Trenger du en nabo, eller vil du være en?\". Which alternative do they choose?","criteria":{"Bli en nabo andre kan spørre":"Bli en nabo andre kan spørre","Del utstyr med naboene":"Del utstyr med naboene","Få en nabo til å stille opp":"Få en nabo til å stille opp"}}},"expect":["Få en nabo til å stille opp"]} +{"id":"nyoperert@/","persona":"nyoperert","need":"trenger-hjelp","page":"/","state":{"body":"Jeg er nyoperert i hofta og kommer meg ikke til butikken på noen uker. Kunne noen handlet for meg?"},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva vil du gjøre?\". Which alternative do they choose?","criteria":{"Har du sett noe som bør fikses?":"Har du sett noe som bør fikses?","Vil du bidra eller si din mening?":"Vil du bidra eller si din mening?","Vil du bli medlem eller endre medlemskapet?":"Vil du bli medlem eller endre medlemskapet?","Vil du hjelpe eller få hjelp av naboer?":"Vil du hjelpe eller få hjelp av naboer?"}}},"expect":["Vil du hjelpe eller få hjelp av naboer?"]} +{"id":"nyoperert@/naboer","persona":"nyoperert","need":"trenger-hjelp","page":"/naboer","state":{"body":"Jeg er nyoperert i hofta og kommer meg ikke til butikken på noen uker. Kunne noen handlet for meg?"},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Trenger du en nabo, eller vil du være en?\". Which alternative do they choose?","criteria":{"Bli en nabo andre kan spørre":"Bli en nabo andre kan spørre","Del utstyr med naboene":"Del utstyr med naboene","Få en nabo til å stille opp":"Få en nabo til å stille opp"}}},"expect":["Få en nabo til å stille opp"]} +{"id":"hjemmekontor@/","persona":"hjemmekontor","need":"kan-hjelpe","page":"/","state":{"body":"Jeg jobber hjemmefra og kan godt måke eller handle for noen som ikke får det til selv."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva vil du gjøre?\". Which alternative do they choose?","criteria":{"Har du sett noe som bør fikses?":"Har du sett noe som bør fikses?","Vil du bidra eller si din mening?":"Vil du bidra eller si din mening?","Vil du bli medlem eller endre medlemskapet?":"Vil du bli medlem eller endre medlemskapet?","Vil du hjelpe eller få hjelp av naboer?":"Vil du hjelpe eller få hjelp av naboer?"}}},"expect":["Vil du hjelpe eller få hjelp av naboer?"]} +{"id":"hjemmekontor@/naboer","persona":"hjemmekontor","need":"kan-hjelpe","page":"/naboer","state":{"body":"Jeg jobber hjemmefra og kan godt måke eller handle for noen som ikke får det til selv."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Trenger du en nabo, eller vil du være en?\". Which alternative do they choose?","criteria":{"Bli en nabo andre kan spørre":"Bli en nabo andre kan spørre","Del utstyr med naboene":"Del utstyr med naboene","Få en nabo til å stille opp":"Få en nabo til å stille opp"}}},"expect":["Bli en nabo andre kan spørre"]} +{"id":"pensjonert-elektriker@/","persona":"pensjonert-elektriker","need":"kan-hjelpe","page":"/","state":{"body":"Pensjonert elektriker, har bil og god tid. Si fra om noen trenger skyss eller en hånd med småting."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Hva vil du gjøre?\". Which alternative do they choose?","criteria":{"Har du sett noe som bør fikses?":"Har du sett noe som bør fikses?","Vil du bidra eller si din mening?":"Vil du bidra eller si din mening?","Vil du bli medlem eller endre medlemskapet?":"Vil du bli medlem eller endre medlemskapet?","Vil du hjelpe eller få hjelp av naboer?":"Vil du hjelpe eller få hjelp av naboer?"}}},"expect":["Vil du hjelpe eller få hjelp av naboer?"]} +{"id":"pensjonert-elektriker@/naboer","persona":"pensjonert-elektriker","need":"kan-hjelpe","page":"/naboer","state":{"body":"Pensjonert elektriker, har bil og god tid. Si fra om noen trenger skyss eller en hånd med småting."},"questions":{"pick":{"type":"choice","instructions":"A visitor reads the page question \"Trenger du en nabo, eller vil du være en?\". Which alternative do they choose?","criteria":{"Bli en nabo andre kan spørre":"Bli en nabo andre kan spørre","Del utstyr med naboene":"Del utstyr med naboene","Få en nabo til å stille opp":"Få en nabo til å stille opp"}}},"expect":["Bli en nabo andre kan spørre"]} diff --git a/runs/tomtervel-plan-claude-2026-09-22/README.md b/runs/tomtervel-plan-claude-2026-09-22/README.md new file mode 100644 index 0000000..de298b4 --- /dev/null +++ b/runs/tomtervel-plan-claude-2026-09-22/README.md @@ -0,0 +1,37 @@ +# Tomter Vel: the intake read into a plan by Claude Opus + +`portal-trainer plan --intake intakes/tomtervel.yaml --llm +"MODEL=opus EFFORT=medium engines/claude.sh"`: Claude Opus 5 on a Max +subscription through Claude Code's print mode, one round, 57 s. The +YAML passed every check `build` makes first try. No personas attached; +`plans/tomtervel.yaml` is the hand-written plan for the same intake, +with personas, and is what was built. + +Side by side with the hand-written plan: + +| | hand-written | Opus | +|---|---|---| +| doors | 3 (medlem, melde-fra, bidra) + sharing on the front door | 4 (medlemskap, meld-fra, bidra, utstyr) + hearing input on the front door | +| needs | 9 | 10 | +| internal need for expenses | yes, `enters_as: komiteer`, 3 fields | yes, `enters_as: komite`, 6 fields | +| member leaves by own link | no | yes, `moves_by: { utmeldt: [submitter] }` | +| poster takes down own notice | yes | yes | +| sharing | one need, one form, kept small on purpose | a door of its own, offer and borrow as two needs | + +What Opus read right that the small model missed on the contractor: +every internal role became an `enters_as` need, every "they can take +it down themselves" became a submitter move, and stages were read +one verb at a time (`open -> tatt_opp -> ordnet -> avvist`). Nothing +in the intake was dropped. + +What a reader would change: + +- The expense claim asks six required fields of a volunteer with a + receipt; three is enough (who, how much, what for). +- The equipment board was meant to stay small. Two needs and a door + give it the weight of membership; one notice with "I have" or "I + need" does the job. +- `naeromraadet` in a door's `who`: the ASCII rule is for identifiers, + and the model applied it to prose a visitor reads. The words model + never sees `who`, so it costs nothing here, but a plan meant to be + read should say `nærområdet`. diff --git a/runs/tomtervel-plan-claude-2026-09-22/llm/01-prompt.md b/runs/tomtervel-plan-claude-2026-09-22/llm/01-prompt.md new file mode 100644 index 0000000..95a923d --- /dev/null +++ b/runs/tomtervel-plan-claude-2026-09-22/llm/01-prompt.md @@ -0,0 +1,136 @@ +# plan.yaml + +A plan is a needs spec that also says what each form collects. A +builder turns it into a working site with no further decisions, so +every structural fact about the business has to be in it. + +```yaml +business: +language: en # the intake's language code +contact: { name: , email: } +about: > + What the business does, in its own words. + +doors: # a first question before the forms, when more than four or + - id: kebab-case # five needs would otherwise sit on the front door: one door + who: who comes through it # per kind of visitor, two or three needs behind each + +needs: + - id: kebab-case # ASCII only + who: the kind of person, in plain words, in the intake's language + wants: what they want from the business + door: # the door this public need sits behind; omit to put it on the front door + enters_as: # ONLY for a role inside the business; omit for the public + lands_in: # snake_case, ASCII + handled_by: # the role that must see and move the record + stages: [open, , ..., , ] + # EVERY stage the business said a case goes through, first to + # last, read off their own sentences one verb at a time: "they + # come in, we go and look, we send a quote, we win or lose it" + # is [open, surveyed, quoted, won, lost]. A pipeline is not an + # inbox: "answered" is rarely the real outcome. + done_when: [, ] # every stage that counts as finished, good or bad + success: [] # the finished stages that are a good outcome for the business + skippable: [] # stages a case may pass over (papers already complete) + moves_by: { : [, ...] } + # only where someone other than handled_by moves a case INTO a + # stage: another group, or `submitter` (the person who sent the + # form; the form must then collect a required `email`) + watched_by: [] # groups that see these cases and move nothing + max_fields: 4 # how many required fields THIS person will tolerate, from what + # the intake says about them: someone on a phone with gloves + # on gets 3, a first enquiry 4 to 6, a firm's paperwork 5 to 6 + collects: # the form; name is snake_case ASCII, type one of + # text (default), email, tel, textarea, date, select + - { name: name } + - { name: phone, type: tel } + - { name: problem, type: textarea } + - { name: urgency, type: select, options: [This week, This month, No rush] } + - { name: address, optional: true } +``` + +Rules: +- One need per (kind of person, thing they want). Work inside the + business counts: a role recording or posting something is a need + with `enters_as`. The intake's "what slows us down" usually names one. +- Groups are the roles the intake names, as snake_case identifiers. +- The front door holds at most five alternatives: doors plus needs + with no door. A door with no need behind it, or a door on a need with + `enters_as`, is refused. +- Needs that land in the same bucket must have the same stages, + done_when, skippable, moves_by, watched_by and handled_by. +- Every required field is one the business will use to act on the + record. If the intake gives no reason to need it, make it optional or + leave it out. The required fields must not exceed max_fields. +- Only `select` lists `options`, and it must list them. +- Everything a person reads (who, wants, about, select options) is in + the intake's language. Everything a machine reads (ids, buckets, + groups, stages, field names) is plain ASCII: no æ, ø, å. +- Write no personas. + + +# Task + +A business filled in this intake. Write its plan.yaml: every need the intake implies, for the public and for each role inside the business, with the stages read off how the business says things progress, the form each need collects, and how much each person will tolerate. + +## Intake + +# 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.example } +language: nb + +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. + +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. + 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. 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. + + +Reply with the YAML only, no prose, no code fences. \ No newline at end of file diff --git a/runs/tomtervel-plan-claude-2026-09-22/llm/01-reply.md b/runs/tomtervel-plan-claude-2026-09-22/llm/01-reply.md new file mode 100644 index 0000000..0dad0f5 --- /dev/null +++ b/runs/tomtervel-plan-claude-2026-09-22/llm/01-reply.md @@ -0,0 +1,196 @@ +business: Tomter Vel +language: nb +contact: { name: Styret i Tomter Vel, email: post@tomtervel.example } +about: > + Velforeningen for Tomter, stiftet i 1947. Et styre paa sju og sju + komiteer som drives paa fritida: arrangementer, elvestien langs + Hobolelva, to lekeplasser, horingssvar til kommunen, miljogata, + pendlerforhold og trafikk. 157 husstander betaler 250 kroner i + kontingent i aaret. + +doors: + - id: medlemskap + who: Du vil bli medlem, eller har flyttet eller byttet e-post + - id: meld-fra + who: Du har sett noe i naeromraadet som ikke er som det skal + - id: bidra + who: Du vil hjelpe til paa et arrangement eller sitte i en komite + - id: utstyr + who: Du har utstyr til laans, eller trenger aa laane noe + +needs: + - id: bli-medlem + who: En husstand paa Tomter + wants: Bli medlem i velforeningen og betale kontingenten + door: medlemskap + lands_in: medlemskap + handled_by: kasserer + stages: [open, betalt, utmeldt] + done_when: [betalt, utmeldt] + success: [betalt] + moves_by: { utmeldt: [submitter] } + watched_by: [styret] + max_fields: 5 + collects: + - { name: name } + - { name: adresse } + - { name: email, type: email } + - { name: antall_voksne, type: select, options: [En, To, Flere] } + - { name: phone, type: tel, optional: true } + + - id: endre-kontaktinfo + who: Et medlem som har flyttet eller byttet e-post + wants: At velet har riktig adresse og e-post + door: medlemskap + lands_in: kontaktendring + handled_by: kasserer + stages: [open, oppdatert] + done_when: [oppdatert] + success: [oppdatert] + max_fields: 4 + collects: + - { name: name } + - { name: email, type: email } + - { name: ny_adresse } + - { name: gammel_adresse, optional: true } + - { name: phone, type: tel, optional: true } + + - id: melde-trafikkforhold + who: En beboer som har sett en farlig sving eller et trafikkproblem + wants: At noen tar det opp med kommunen eller veieier + door: meld-fra + lands_in: trafikk + handled_by: trafikkomite + stages: [open, tatt_opp, ordnet, avvist] + done_when: [ordnet, avvist] + success: [ordnet] + watched_by: [styret] + max_fields: 3 + collects: + - { name: sted } + - { name: hva_er_problemet, type: textarea } + - { name: name } + - { name: phone, type: tel, optional: true } + + - id: melde-feil-paa-anlegg + who: En beboer som har sett noe odelagt paa en lekeplass eller elvestien + wants: At det blir utbedret + door: meld-fra + lands_in: anlegg + handled_by: lekeplasskomite + stages: [open, under_arbeid, utbedret] + done_when: [utbedret] + success: [utbedret] + watched_by: [styret] + max_fields: 3 + collects: + - { name: hvor, type: select, options: [Lekeplass, Elvestien, Annet sted] } + - { name: hva_er_feil, type: textarea } + - { name: name } + - { name: phone, type: tel, optional: true } + + - id: horingsinnspill + who: En beboer som vil si sin mening om en sak kommunen har paa horing + wants: At meningen blir med i velets horingssvar + lands_in: horing + handled_by: styret + stages: [open, med_i_svaret, ikke_brukt] + done_when: [med_i_svaret, ikke_brukt] + success: [med_i_svaret] + max_fields: 4 + collects: + - { name: name } + - { name: email, type: email } + - { name: hvilken_sak } + - { name: innspill, type: textarea } + - { name: adresse, optional: true } + + - id: melde-seg-som-frivillig + who: En beboer som vil hjelpe til paa et arrangement eller en dugnad + wants: Faa en oppgave og vite naar de skal mote + door: bidra + lands_in: frivillige + handled_by: arrangementskomite + stages: [open, kontaktet, satt_opp, takket_nei] + done_when: [satt_opp, takket_nei] + success: [satt_opp] + skippable: [kontaktet] + max_fields: 4 + collects: + - { name: name } + - { name: phone, type: tel } + - { name: hva_vil_du_hjelpe_til_med, type: select, options: [17. mai-frokost, Juletregranstenning, Skoytedag, Dugnad paa elvestien, Det som trengs] } + - { name: email, type: email, optional: true } + - { name: naar_passer_det, optional: true } + + - id: soke-komite + who: En beboer som vil sitte i en komite + wants: Bli plassert i en komite + door: bidra + lands_in: komitesoknad + handled_by: styret + stages: [open, plassert, avslatt] + done_when: [plassert, avslatt] + success: [plassert] + max_fields: 4 + collects: + - { name: name } + - { name: email, type: email } + - { name: phone, type: tel } + - { name: hvilken_komite, type: select, options: [Arrangementskomiteen, Elvestikomiteen, Lekeplasskomiteen, Horingskomiteen, Miljogatekomiteen, Pendlerkomiteen, Trafikkomiteen] } + - { name: om_deg, type: textarea, optional: true } + + - id: tilby-utstyr + who: En nabo som har en tilhenger, stige eller hekksaks staaende ubrukt + wants: At naboer faar vite at den kan laanes + door: utstyr + lands_in: oppslagstavle + handled_by: styret + stages: [open, publisert, tatt_ned] + done_when: [tatt_ned] + success: [tatt_ned] + moves_by: { tatt_ned: [submitter] } + max_fields: 4 + collects: + - { name: name } + - { name: email, type: email } + - { name: hva_gjelder_det } + - { name: type, type: select, options: [Jeg har noe aa laane ut, Jeg trenger aa laane noe] } + - { name: phone, type: tel, optional: true } + + - id: trenger-aa-laane + who: En nabo som trenger aa laane utstyr til en jobb hjemme + wants: Faa tak i noen i nabolaget som har det + door: utstyr + lands_in: oppslagstavle + handled_by: styret + stages: [open, publisert, tatt_ned] + done_when: [tatt_ned] + success: [tatt_ned] + moves_by: { tatt_ned: [submitter] } + max_fields: 4 + collects: + - { name: name } + - { name: email, type: email } + - { name: hva_gjelder_det } + - { name: type, type: select, options: [Jeg har noe aa laane ut, Jeg trenger aa laane noe] } + - { name: naar_trenger_du_det, optional: true } + + - id: levere-utlegg + who: En i en komite som har lagt ut for noe av egen lomme + wants: Faa pengene tilbake + enters_as: komite + lands_in: utlegg + handled_by: kasserer + stages: [open, godkjent, utbetalt, avvist] + done_when: [utbetalt, avvist] + success: [utbetalt] + watched_by: [styret] + max_fields: 6 + collects: + - { name: name } + - { name: komite, type: select, options: [Arrangementskomiteen, Elvestikomiteen, Lekeplasskomiteen, Horingskomiteen, Miljogatekomiteen, Pendlerkomiteen, Trafikkomiteen] } + - { name: hva_ble_kjopt, type: textarea } + - { name: belop } + - { name: dato, type: date } + - { name: kontonummer } diff --git a/runs/tomtervel-plan-claude-2026-09-22/plan.log b/runs/tomtervel-plan-claude-2026-09-22/plan.log new file mode 100644 index 0000000..feafec0 --- /dev/null +++ b/runs/tomtervel-plan-claude-2026-09-22/plan.log @@ -0,0 +1,12 @@ +plan round 1: 10 need(s), 6 group(s), 9 bucket(s), 0 persona(s) attached + bli-medlem: open -> betalt -> utmeldt -> medlemskap (kasserer), 4 of 5 field(s) required + endre-kontaktinfo: open -> oppdatert -> kontaktendring (kasserer), 3 of 4 field(s) required + melde-trafikkforhold: open -> tatt_opp -> ordnet -> avvist -> trafikk (trafikkomite), 3 of 3 field(s) required + melde-feil-paa-anlegg: open -> under_arbeid -> utbedret -> anlegg (lekeplasskomite), 3 of 3 field(s) required + horingsinnspill: open -> med_i_svaret -> ikke_brukt -> horing (styret), 4 of 4 field(s) required + melde-seg-som-frivillig: open -> kontaktet -> satt_opp -> takket_nei -> frivillige (arrangementskomite), 3 of 4 field(s) required + soke-komite: open -> plassert -> avslatt -> komitesoknad (styret), 4 of 4 field(s) required + tilby-utstyr: open -> publisert -> tatt_ned -> oppslagstavle (styret), 4 of 4 field(s) required + trenger-aa-laane: open -> publisert -> tatt_ned -> oppslagstavle (styret), 4 of 4 field(s) required + levere-utlegg: open -> godkjent -> utbetalt -> avvist -> utlegg (kasserer), 6 of 6 field(s) required +plan written to runs/tomtervel-plan-claude-2026-09-22/plan.yaml; read it before building from it diff --git a/runs/tomtervel-plan-claude-2026-09-22/plan.yaml b/runs/tomtervel-plan-claude-2026-09-22/plan.yaml new file mode 100644 index 0000000..0dad0f5 --- /dev/null +++ b/runs/tomtervel-plan-claude-2026-09-22/plan.yaml @@ -0,0 +1,196 @@ +business: Tomter Vel +language: nb +contact: { name: Styret i Tomter Vel, email: post@tomtervel.example } +about: > + Velforeningen for Tomter, stiftet i 1947. Et styre paa sju og sju + komiteer som drives paa fritida: arrangementer, elvestien langs + Hobolelva, to lekeplasser, horingssvar til kommunen, miljogata, + pendlerforhold og trafikk. 157 husstander betaler 250 kroner i + kontingent i aaret. + +doors: + - id: medlemskap + who: Du vil bli medlem, eller har flyttet eller byttet e-post + - id: meld-fra + who: Du har sett noe i naeromraadet som ikke er som det skal + - id: bidra + who: Du vil hjelpe til paa et arrangement eller sitte i en komite + - id: utstyr + who: Du har utstyr til laans, eller trenger aa laane noe + +needs: + - id: bli-medlem + who: En husstand paa Tomter + wants: Bli medlem i velforeningen og betale kontingenten + door: medlemskap + lands_in: medlemskap + handled_by: kasserer + stages: [open, betalt, utmeldt] + done_when: [betalt, utmeldt] + success: [betalt] + moves_by: { utmeldt: [submitter] } + watched_by: [styret] + max_fields: 5 + collects: + - { name: name } + - { name: adresse } + - { name: email, type: email } + - { name: antall_voksne, type: select, options: [En, To, Flere] } + - { name: phone, type: tel, optional: true } + + - id: endre-kontaktinfo + who: Et medlem som har flyttet eller byttet e-post + wants: At velet har riktig adresse og e-post + door: medlemskap + lands_in: kontaktendring + handled_by: kasserer + stages: [open, oppdatert] + done_when: [oppdatert] + success: [oppdatert] + max_fields: 4 + collects: + - { name: name } + - { name: email, type: email } + - { name: ny_adresse } + - { name: gammel_adresse, optional: true } + - { name: phone, type: tel, optional: true } + + - id: melde-trafikkforhold + who: En beboer som har sett en farlig sving eller et trafikkproblem + wants: At noen tar det opp med kommunen eller veieier + door: meld-fra + lands_in: trafikk + handled_by: trafikkomite + stages: [open, tatt_opp, ordnet, avvist] + done_when: [ordnet, avvist] + success: [ordnet] + watched_by: [styret] + max_fields: 3 + collects: + - { name: sted } + - { name: hva_er_problemet, type: textarea } + - { name: name } + - { name: phone, type: tel, optional: true } + + - id: melde-feil-paa-anlegg + who: En beboer som har sett noe odelagt paa en lekeplass eller elvestien + wants: At det blir utbedret + door: meld-fra + lands_in: anlegg + handled_by: lekeplasskomite + stages: [open, under_arbeid, utbedret] + done_when: [utbedret] + success: [utbedret] + watched_by: [styret] + max_fields: 3 + collects: + - { name: hvor, type: select, options: [Lekeplass, Elvestien, Annet sted] } + - { name: hva_er_feil, type: textarea } + - { name: name } + - { name: phone, type: tel, optional: true } + + - id: horingsinnspill + who: En beboer som vil si sin mening om en sak kommunen har paa horing + wants: At meningen blir med i velets horingssvar + lands_in: horing + handled_by: styret + stages: [open, med_i_svaret, ikke_brukt] + done_when: [med_i_svaret, ikke_brukt] + success: [med_i_svaret] + max_fields: 4 + collects: + - { name: name } + - { name: email, type: email } + - { name: hvilken_sak } + - { name: innspill, type: textarea } + - { name: adresse, optional: true } + + - id: melde-seg-som-frivillig + who: En beboer som vil hjelpe til paa et arrangement eller en dugnad + wants: Faa en oppgave og vite naar de skal mote + door: bidra + lands_in: frivillige + handled_by: arrangementskomite + stages: [open, kontaktet, satt_opp, takket_nei] + done_when: [satt_opp, takket_nei] + success: [satt_opp] + skippable: [kontaktet] + max_fields: 4 + collects: + - { name: name } + - { name: phone, type: tel } + - { name: hva_vil_du_hjelpe_til_med, type: select, options: [17. mai-frokost, Juletregranstenning, Skoytedag, Dugnad paa elvestien, Det som trengs] } + - { name: email, type: email, optional: true } + - { name: naar_passer_det, optional: true } + + - id: soke-komite + who: En beboer som vil sitte i en komite + wants: Bli plassert i en komite + door: bidra + lands_in: komitesoknad + handled_by: styret + stages: [open, plassert, avslatt] + done_when: [plassert, avslatt] + success: [plassert] + max_fields: 4 + collects: + - { name: name } + - { name: email, type: email } + - { name: phone, type: tel } + - { name: hvilken_komite, type: select, options: [Arrangementskomiteen, Elvestikomiteen, Lekeplasskomiteen, Horingskomiteen, Miljogatekomiteen, Pendlerkomiteen, Trafikkomiteen] } + - { name: om_deg, type: textarea, optional: true } + + - id: tilby-utstyr + who: En nabo som har en tilhenger, stige eller hekksaks staaende ubrukt + wants: At naboer faar vite at den kan laanes + door: utstyr + lands_in: oppslagstavle + handled_by: styret + stages: [open, publisert, tatt_ned] + done_when: [tatt_ned] + success: [tatt_ned] + moves_by: { tatt_ned: [submitter] } + max_fields: 4 + collects: + - { name: name } + - { name: email, type: email } + - { name: hva_gjelder_det } + - { name: type, type: select, options: [Jeg har noe aa laane ut, Jeg trenger aa laane noe] } + - { name: phone, type: tel, optional: true } + + - id: trenger-aa-laane + who: En nabo som trenger aa laane utstyr til en jobb hjemme + wants: Faa tak i noen i nabolaget som har det + door: utstyr + lands_in: oppslagstavle + handled_by: styret + stages: [open, publisert, tatt_ned] + done_when: [tatt_ned] + success: [tatt_ned] + moves_by: { tatt_ned: [submitter] } + max_fields: 4 + collects: + - { name: name } + - { name: email, type: email } + - { name: hva_gjelder_det } + - { name: type, type: select, options: [Jeg har noe aa laane ut, Jeg trenger aa laane noe] } + - { name: naar_trenger_du_det, optional: true } + + - id: levere-utlegg + who: En i en komite som har lagt ut for noe av egen lomme + wants: Faa pengene tilbake + enters_as: komite + lands_in: utlegg + handled_by: kasserer + stages: [open, godkjent, utbetalt, avvist] + done_when: [utbetalt, avvist] + success: [utbetalt] + watched_by: [styret] + max_fields: 6 + collects: + - { name: name } + - { name: komite, type: select, options: [Arrangementskomiteen, Elvestikomiteen, Lekeplasskomiteen, Horingskomiteen, Miljogatekomiteen, Pendlerkomiteen, Trafikkomiteen] } + - { name: hva_ble_kjopt, type: textarea } + - { name: belop } + - { name: dato, type: date } + - { name: kontonummer } diff --git a/skill/SKILL.md b/skill/SKILL.md index 927d871..4e9feca 100644 --- a/skill/SKILL.md +++ b/skill/SKILL.md @@ -16,13 +16,22 @@ the structure meets every need in `/needs.yaml`. ## The order of work +The short path, when a business has filled in an intake: `plan` +reads it into a `plan.yaml` (a model decides needs, stages, forms and +budgets; a person reads the result), `build` turns the plan into every +file of the site with no model deciding anything, and a model writes +only the words. See the repo README. The steps below are the same +procedure done by hand, and what to do when the numbers come back. + 1. **Interview, then write `needs.yaml` first.** Never pages first. Ask who comes to the business and what each of them wants, who in the business handles it, and what "handled" means - the states a case ends in. Ask what it costs the visitor to ask: how many - submissions, how many required fields they will tolerate. If the - business is in a sector under `sectors/`, start from that file and - cut it down with them; do not start blank. + submissions, how many required fields they will tolerate. That + number is `max_fields`, and it comes from the person, never from + counting the form you would like to write. If the business is in a + sector under `sectors/`, start from that file and cut it down with + them; do not start blank. 2. **Write personas in the visitor's words, not the business's.** Two or three per need, including one who would not use the trade's own vocabulary. Never reuse a phrase you intend to put on a page - a diff --git a/src/build.rs b/src/build.rs index 1f140ce..99d4c29 100644 --- a/src/build.rs +++ b/src/build.rs @@ -36,6 +36,19 @@ pub struct Plan { /// model's wording, never structure. #[serde(default)] pub about: String, + /// A first question before the forms. Each door is one alternative + /// on the front door leading to a page of its own, where the needs + /// that name it sit. Five or six needs on one page is more than a + /// visitor sorts through; two or three doors of two or three each + /// is what the page-load limit asks for. + #[serde(default)] + pub doors: Vec, + /// Groups with a label the public may see: the committees a + /// person can ask to join. A select field with `options_from: + /// groups` offers exactly these, so the form and the desks can + /// never disagree about what the committees are. + #[serde(default)] + pub groups: Vec, pub needs: Vec, #[serde(default)] pub personas: Vec, @@ -45,6 +58,22 @@ fn english() -> String { "en".to_string() } +#[derive(Debug, Deserialize)] +#[serde(deny_unknown_fields)] +pub struct GroupDef { + pub id: String, + pub label: String, +} + +#[derive(Debug, Deserialize)] +#[serde(deny_unknown_fields)] +pub struct Door { + pub id: String, + /// Who comes through it, in plain words: context for the model's + /// heading, and the fallback description. + pub who: String, +} + #[derive(Debug, Deserialize)] pub struct Contact { pub name: String, @@ -59,6 +88,10 @@ pub struct PlanNeed { pub wants: String, #[serde(default)] pub enters_as: Option, + /// The door this public need sits behind; none means straight on + /// the front door. + #[serde(default)] + pub door: Option, pub lands_in: String, pub handled_by: String, /// Every stage, first to last, finished states included. @@ -82,8 +115,11 @@ pub struct PlanNeed { #[serde(default)] pub watched_by: Vec, pub collects: Vec, - #[serde(default)] - pub max_fields: Option, + /// How many required fields this person will tolerate: what the + /// business said about them, not what the form happens to ask. + /// The form is refused when it asks for more, and the verifier is + /// told this number, so the check means something after handover. + pub max_fields: usize, } #[derive(Debug, Deserialize, Clone)] @@ -96,8 +132,31 @@ pub struct Field { pub optional: bool, #[serde(default)] pub options: Vec, + /// `select` only: pick any number instead of exactly one. + #[serde(default)] + pub multiple: bool, + /// `select` only: `groups` takes the options from the plan's + /// labelled groups instead of a list here. + #[serde(default)] + pub options_from: Option, + /// Never shown on a public view of the bucket. `email` and `tel` + /// fields are private whether or not this is set. + #[serde(default)] + pub private: bool, } +impl Field { + /// What a public listing may show: everything but contact details + /// and what the plan marks private. + pub fn is_public(&self) -> bool { + !self.private && self.kind != "email" && self.kind != "tel" + } +} + +/// The name a plan uses in `watched_by` for everyone: a read-only page +/// of the bucket, no login. +pub const PUBLIC: &str = "public"; + fn text() -> String { "text".to_string() } @@ -110,6 +169,27 @@ fn is_id(s: &str) -> bool { impl Plan { pub fn validate(&self) -> anyhow::Result<()> { + let mut doors = BTreeSet::new(); + for door in &self.doors { + if !is_id(&door.id) || !doors.insert(&door.id) { + bail!("door {:?}: id must be unique ASCII lowercase with - or _", door.id); + } + if !self.needs.iter().any(|n| n.door.as_ref() == Some(&door.id)) { + bail!("door {:?} leads nowhere: no need names it", door.id); + } + if groups(self).contains(&door.id) { + bail!("door {:?} is also a group; a door's page is public and a group's is gated", door.id); + } + if door.id == "status" || door.id == "received" || door.id == "decide" { + bail!("door {:?}: that path is taken by the builder's own pages", door.id); + } + } + let mut labelled = BTreeSet::new(); + for g in &self.groups { + if !is_id(&g.id) || !labelled.insert(&g.id) || g.label.trim().is_empty() { + bail!("group {:?}: id must be unique ASCII lowercase with - or _, and it needs a label", g.id); + } + } let mut seen = BTreeSet::new(); for need in &self.needs { let at = |what: &str| format!("need {:?}: {what}", need.id); @@ -124,6 +204,14 @@ impl Plan { if need.stages.len() < 2 { bail!(at("stages needs a first stage and at least one finished one")); } + if let Some(door) = &need.door { + if !doors.contains(door) { + bail!(at(&format!("door {door:?} is not one of the plan's doors"))); + } + if need.enters_as.is_some() { + bail!(at("a door is a public way in; a need with enters_as has its group's page instead")); + } + } for (state, movers) in &need.moves_by { if !need.stages[1..].contains(state) { bail!(at(&format!("moves_by names {state:?}, which is not a stage a case can move into"))); @@ -138,7 +226,10 @@ impl Plan { } } if need.watched_by.iter().any(|g| !is_id(g)) { - bail!(at("watched_by must list group identifiers")); + bail!(at("watched_by must list group identifiers, or `public`")); + } + if need.watched_by.iter().any(|g| g == PUBLIC) && need.enters_as.is_some() { + bail!(at("a public view is for what the public sent; an internal need has its group's desk")); } for state in need.done_when.iter().chain(&need.skippable) { if !need.stages.contains(state) { @@ -153,12 +244,35 @@ impl Plan { if need.done_when.is_empty() || need.done_when.contains(&need.stages[0]) { bail!(at("done_when must name finished states, and the first stage cannot be one")); } + let required = need.collects.iter().filter(|f| !f.optional).count(); + if need.max_fields == 0 { + bail!(at("max_fields is how many required fields this person will tolerate, and must be at least 1")); + } + if required > need.max_fields { + bail!(at(&format!("the form asks for {required} required field(s) and this person will tolerate {}; mark some optional or drop them", need.max_fields))); + } for field in &need.collects { if !is_id(&field.name) || !FIELD_TYPES.contains(&field.kind.as_str()) { bail!(at(&format!("field {:?}: name must be an identifier and type one of {FIELD_TYPES:?}", field.name))); } - if field.kind == "select" && field.options.is_empty() { - bail!(at(&format!("field {:?} is a select and lists no options", field.name))); + match (field.kind.as_str(), field.options_from.as_deref()) { + ("select", Some("groups")) => { + if self.groups.is_empty() { + bail!(at(&format!("field {:?} takes its options from groups, and the plan has no labelled `groups`", field.name))); + } + if !field.options.is_empty() { + bail!(at(&format!("field {:?} has both options and options_from", field.name))); + } + } + ("select", None) if field.options.is_empty() => { + bail!(at(&format!("field {:?} is a select and lists no options", field.name))); + } + ("select", None) => {} + (_, Some(_)) => bail!(at(&format!("field {:?}: options_from is for select fields, and only `groups`", field.name))), + (kind, None) if field.multiple && kind != "select" => { + bail!(at(&format!("field {:?}: multiple is for select fields", field.name))) + } + _ => {} } } } @@ -180,6 +294,16 @@ impl Plan { Ok(()) } + /// What sits on the front door: each door, and each public need + /// with no door. + fn front_door_count(&self) -> usize { + self.doors.len() + self.needs.iter().filter(|n| n.enters_as.is_none() && n.door.is_none()).count() + } + + fn needs_behind(&self, door: &str) -> Vec<&PlanNeed> { + self.needs.iter().filter(|n| n.door.as_deref() == Some(door)).collect() + } + fn by_bucket(&self) -> BTreeMap<&str, Vec<&PlanNeed>> { let mut map: BTreeMap<&str, Vec<&PlanNeed>> = BTreeMap::new(); for need in &self.needs { @@ -223,6 +347,21 @@ pub fn machine(need: &PlanNeed) -> BTreeMap> { moves } +/// The stages a case goes through, as one sentence: "It is received, +/// then surveyed, then quoted, and ends won or lost." +fn stages_sentence(need: &PlanNeed) -> String { + let line: Vec = need.stages.iter().filter(|s| !need.done_when.contains(s)).map(|s| humanize(s).to_lowercase()).collect(); + let ends: Vec = need.done_when.iter().map(|s| humanize(s).to_lowercase()).collect(); + let mut out = String::from("It is "); + out.push_str(&line.join(", then ")); + if ends.len() == 1 { + out.push_str(&format!(", and ends {}.", ends[0])); + } else { + out.push_str(&format!(", and ends {} or {}.", ends[..ends.len() - 1].join(", "), ends[ends.len() - 1])); + } + out +} + fn humanize(id: &str) -> String { let mut words = id.replace(['_', '-'], " "); if let Some(first) = words.get_mut(0..1) { @@ -243,41 +382,74 @@ fn internal_page(need: &PlanNeed, group: &str) -> String { /// made from the plan's own text. Keyed by file path, then the same /// JSON shape the model is asked for. pub fn fallback_words(plan: &Plan) -> BTreeMap { + // Every part of the card portal renders has a slot: the model + // gets to write the button, an encouragement, the section's icon + // and guidance line, and a placeholder per field, not only the + // heading and description. Empty fallbacks render as absent. let form = |need: &PlanNeed| { json!({ "heading": need.wants, "description": format!("For {}.", need.who), "button": "Send", + "encouragement": "", + "icon": "", + // Two sections of context the plan already knows: the road + // a case travels, and who is at the other end. The + // fallbacks are built from the plan, so they are true + // before a model has said a word. + "road_title": "What happens next", + "road_description": stages_sentence(need), + "road_icon": "route", + "who_title": "Who reads it", + "who_description": format!("{}. Questions go to {} at {}.", humanize(&need.handled_by), plan.contact.name, plan.contact.email), + "who_icon": "users", "form_title": "Details", + "form_description": "", "labels": need.collects.iter().map(|f| (f.name.clone(), Value::String(humanize(&f.name)))).collect::>(), + "hints": need.collects.iter().map(|f| (f.name.clone(), Value::String(String::new()))).collect::>(), }) }; let mut words = BTreeMap::new(); - let public: Vec<&PlanNeed> = plan.needs.iter().filter(|n| n.enters_as.is_none()).collect(); + let direct: Vec<&PlanNeed> = plan.needs.iter().filter(|n| n.enters_as.is_none() && n.door.is_none()).collect(); words.insert( "questions/index.yaml".to_string(), json!({ "question": "What brings you here?", "description": plan.about, - "needs": public.iter().map(|n| (n.id.clone(), form(n))).collect::>(), + "doors": plan.doors.iter().map(|d| (d.id.clone(), json!({ + "heading": humanize(&d.id), "description": format!("For {}.", d.who), "button": "Continue", + "icon": "", "for_whom": "", + }))).collect::>(), + "needs": direct.iter().map(|n| (n.id.clone(), form(n))).collect::>(), }), ); + for door in &plan.doors { + words.insert( + door_path(door), + json!({ + "question": "What do you need?", + "description": format!("For {}.", door.who), + "needs": plan.needs_behind(&door.id).iter().map(|n| (n.id.clone(), form(n))).collect::>(), + }), + ); + } for need in &plan.needs { let (path, back) = match &need.enters_as { None => (format!("questions/received/{}.yaml", need.id), "/".to_string()), Some(group) => (format!("questions/{group}/{}-sent.yaml", need.id), format!("/{group}")), }; let _ = back; - words.insert( - path, - json!({ - "question": "What happens now?", - "description": format!("It has reached our {}.", humanize(&need.handled_by).to_lowercase()), - "next_heading": "We read it and come back to you", - "next_description": format!("Questions in the meantime go to {} at {}.", plan.contact.name, plan.contact.email), - "back": "Back", - }), - ); + let mut page = json!({ + "question": "What happens now?", + "description": format!("It has reached our {}.", humanize(&need.handled_by).to_lowercase()), + "next_heading": "We read it and come back to you", + "next_description": format!("Questions in the meantime go to {} at {}.", plan.contact.name, plan.contact.email), + "back": "Back", + }); + if need.watched_by.iter().any(|g| g == PUBLIC) { + page["see_all"] = json!({ "heading": format!("See all {}", humanize(&need.lands_in).to_lowercase()), "description": "", "button": "Open" }); + } + words.insert(path, page); if let Some(group) = &need.enters_as { let mut page = form(need); page["question"] = json!(format!("{}?", humanize(&need.id))); @@ -310,6 +482,20 @@ pub fn fallback_words(plan: &Plan) -> BTreeMap { json!({ "question": "What needs doing?", "description": "", "confirm": "Confirm", "buckets": buckets, "links": links }), ); } + // A public view per bucket the plan opens: a read-only list. + for (bucket, needs) in public_buckets(plan) { + words.insert( + public_view_path(bucket), + json!({ + "question": format!("What has been sent in about {}?", humanize(bucket).to_lowercase()), + "description": format!("Everything sent in by {}, and where each one stands.", needs.iter().map(|n| n.who.as_str()).collect::>().join(" or ")), + "heading": humanize(bucket), + "list_description": "", + "back": "Back", + }), + ); + } + // The submitter's own page: reached by their private link, it // offers the moves that are theirs to make. for need in &plan.needs { @@ -332,12 +518,19 @@ pub fn fallback_words(plan: &Plan) -> BTreeMap { words } +fn door_path(door: &Door) -> String { + format!("questions/{}/index.yaml", door.id) +} + fn decide_path(need: &PlanNeed) -> String { format!("questions/decide/{}.yaml", need.id) } const SUBMITTER: &str = "submitter"; +/// Alternatives on one page before a visitor stops reading them. +const MAX_FRONT_DOOR: usize = 5; + /// Who presses the button into `to`. fn movers<'a>(need: &'a PlanNeed, to: &str) -> Vec<&'a str> { match need.moves_by.get(to) { @@ -358,7 +551,7 @@ fn moves_of(need: &PlanNeed, who: &str) -> Vec<(String, String)> { /// A group's desk shows a bucket when it moves something in it, is /// answerable for it, or watches it. fn on_desk(need: &PlanNeed, group: &str) -> bool { - need.handled_by == group || need.watched_by.iter().any(|g| g == group) || !moves_of(need, group).is_empty() + group != PUBLIC && (need.handled_by == group || need.watched_by.iter().any(|g| g == group) || !moves_of(need, group).is_empty()) } fn groups(plan: &Plan) -> BTreeSet { @@ -368,12 +561,29 @@ fn groups(plan: &Plan) -> BTreeSet { [Some(n.handled_by.clone()), n.enters_as.clone()] .into_iter() .flatten() - .chain(n.watched_by.iter().cloned()) + .chain(n.watched_by.iter().filter(|g| *g != PUBLIC).cloned()) .chain(n.moves_by.values().flatten().filter(|m| *m != SUBMITTER).cloned()) }) .collect() } +/// Buckets the public may read, with the needs that fill them. +fn public_buckets(plan: &Plan) -> Vec<(&str, Vec<&PlanNeed>)> { + plan.by_bucket().into_iter().filter(|(_, needs)| needs.iter().any(|n| n.watched_by.iter().any(|g| g == PUBLIC))).collect() +} + +fn public_view_path(bucket: &str) -> String { + format!("questions/status/{bucket}/index.yaml") +} + +/// The options of a select: its own list, or the plan's labelled groups. +fn select_options<'a>(plan: &'a Plan, field: &'a Field) -> Vec<&'a str> { + match field.options_from.as_deref() { + Some("groups") => plan.groups.iter().map(|g| g.label.as_str()).collect(), + _ => field.options.iter().map(String::as_str).collect(), + } +} + /// Takes the model's strings where it gave them, key by key, and keeps /// the fallback everywhere else. The shape always comes from the /// fallback, so a reply can never add, drop or restructure anything. @@ -398,45 +608,107 @@ const SLOT: &str = " Value { + slots_in(value, key, "") +} + +fn slots_in(value: &Value, key: &str, parent: &str) -> Value { match value { - Value::Object(map) => Value::Object(map.iter().map(|(k, v)| (k.clone(), slots(v, k))).collect()), + Value::Object(map) => Value::Object(map.iter().map(|(k, v)| (k.clone(), slots_in(v, k, key))).collect()), Value::String(_) => Value::String(format!( "{SLOT}: {}>", - match key { - "question" => "the one question this page asks its reader".to_string(), - "heading" | "next_heading" => "a heading, at most eight words, saying what the reader gets".to_string(), - "description" | "page_description" | "next_description" => "one or two short sentences".to_string(), - "button" | "back" | "confirm" => "a button, one to three words".to_string(), - "form_title" => "a title for the form, two to four words".to_string(), - other if other.contains("->") => format!("a button, two to four words, for a case going {other}"), - other => format!("a form label for the field `{other}`"), + match (parent, key) { + (_, "question") => "the one question this page asks its reader".to_string(), + (_, "heading" | "next_heading") => "a heading, at most eight words, saying what the reader gets".to_string(), + (_, "description" | "page_description" | "next_description") => "one or two short sentences".to_string(), + (_, "button" | "back" | "confirm") => "a button, one to three words, saying what pressing it does".to_string(), + (_, "encouragement") => "one reassuring sentence: what happens with what they send, or how little it takes; or empty".to_string(), + (_, "icon") => "an icon name from the list at the end, the one that fits this best; or empty".to_string(), + (_, "for_whom") => "a few words naming who this is for, addressed to them; or empty".to_string(), + (_, "form_title") => "a title for the form, two to four words".to_string(), + (_, "form_description") => "one short line of guidance above the form, or empty".to_string(), + (_, "road_title") => "a short title, two to four words, for the line that says what happens after sending".to_string(), + (_, "road_description") => "one or two sentences walking the reader through the stages this goes through, in order (the stages are listed above), in their words".to_string(), + (_, "road_icon" | "who_icon") => "an icon name from the list at the end that fits this section; or empty".to_string(), + (_, "who_title") => "a short title, two to four words, for the line that says who reads it".to_string(), + (_, "list_description") => "one line over a public list of what people have sent in, or empty".to_string(), + (_, "who_description") => "one sentence: who reads what they send, and how to reach them meanwhile".to_string(), + ("hints", field) => format!("an example answer for the field `{field}`, as a placeholder; or empty"), + (_, other) if other.contains("->") => format!("a button, two to four words, for a case going {other}"), + (_, other) => format!("a form label for the field `{other}`"), } )), other => other.clone(), } } +/// Icons the words may name: a fixed set from Iconify's lucide pack, +/// so a reply can only pick one that exists. Anything else is dropped. +pub const ICONS: &[&str] = &[ + "house", "building-2", "store", "school", "map-pin", "route", "footprints", "trees", "leaf", "snowflake", "sun", + "users", "user", "user-plus", "user-check", "baby", "heart-handshake", "hand-helping", "handshake", "smile", + "mail", "phone", "message-circle", "megaphone", "bell", "send", "inbox", + "alert-triangle", "siren", "shield", "construction", "hammer", "wrench", "ruler", "package", "truck", "car", "bus", "train-front", "bike", + "calendar", "clock", "file-text", "clipboard-list", "receipt", "wallet", "coins", "banknote", "credit-card", + "key", "lock", "search", "star", "gift", "shopping-cart", "lightbulb", "flag", "thumbs-up", "check-circle", + "briefcase", "stethoscope", "activity", "camera", "pencil", "refresh-cw", "list", "layers", "vote", "scale", +]; + +/// `lucide:` for a name on the list, otherwise nothing. +pub fn icon_name(given: &str) -> Option { + let name = given.trim().trim_start_matches("lucide:"); + ICONS.contains(&name).then(|| format!("lucide:{name}")) +} + fn s(v: &Value) -> &str { v.as_str().unwrap_or_default() } -fn form_alternative(need: &PlanNeed, w: &Value, action: &str) -> Value { - json!({ +fn form_alternative(plan: &Plan, need: &PlanNeed, w: &Value, action: &str) -> Value { + let mut feature = json!({ + "name": s(&w["form_title"]), + "requirements": need.collects.iter().map(|f| { + let mut r = json!({ "name": f.name, "label": s(&w["labels"][&f.name]), "type": f.kind }); + if f.optional { r["optional"] = json!(true); } + if f.kind == "select" { r["options"] = json!(select_options(plan, f)); } + if f.multiple { r["multiple"] = json!(true); } + let hint = s(&w["hints"][&f.name]).trim(); + if !hint.is_empty() && f.kind != "select" { r["placeholder"] = json!(hint); } + r + }).collect::>(), + }); + if !s(&w["form_description"]).trim().is_empty() { + feature["description"] = json!(s(&w["form_description"]).trim()); + } + if let Some(icon) = icon_name(s(&w["icon"])) { + feature["icon"] = json!(icon); + } + // Context first, then the form: the reader learns where this goes + // and who is at the other end before being asked for anything. + let strip = |title: &str, text: &str, icon: &str| { + let mut f = json!({ "name": title.trim(), "description": text.trim() }); + if let Some(icon) = icon_name(icon) { f["icon"] = json!(icon); } + f + }; + let mut features = Vec::new(); + if !s(&w["road_description"]).trim().is_empty() { + features.push(strip(s(&w["road_title"]), s(&w["road_description"]), s(&w["road_icon"]))); + } + if !s(&w["who_description"]).trim().is_empty() { + features.push(strip(s(&w["who_title"]), s(&w["who_description"]), s(&w["who_icon"]))); + } + features.push(feature); + let mut alt = json!({ "name": s(&w["heading"]), "description": s(&w["description"]), "action": action, "consequence": [s(&w["button"])], "record_as": need.lands_in, - "features": [{ - "name": s(&w["form_title"]), - "requirements": need.collects.iter().map(|f| { - let mut r = json!({ "name": f.name, "label": s(&w["labels"][&f.name]), "type": f.kind }); - if f.optional { r["optional"] = json!(true); } - if !f.options.is_empty() { r["options"] = json!(f.options); } - r - }).collect::>(), - }], - }) + "features": features, + }); + if !s(&w["encouragement"]).trim().is_empty() { + alt["encouragements"] = json!([s(&w["encouragement"]).trim()]); + } + alt } /// Every file of the content repo, from the plan and a set of words. @@ -461,37 +733,83 @@ pub fn render(plan: &Plan, words: &BTreeMap) -> anyhow::Result>() }), ); - // The front door: one alternative per need the public may bring. + // The front door: one alternative per door, then one per need the + // public brings straight to it. let front = &words["questions/index.yaml"]; - let public: Vec<&PlanNeed> = plan.needs.iter().filter(|n| n.enters_as.is_none()).collect(); + let mut alternatives: Vec = plan + .doors + .iter() + .map(|d| { + let dw = &front["doors"][&d.id]; + let mut alt = json!({ + "name": s(&dw["heading"]), + "description": s(&dw["description"]), + "action": format!("/{}", d.id), + "consequence": [s(&dw["button"])], + }); + // A door carries no form; its icon and "for whom" line + // ride an empty section, which portal renders as a + // labelled strip on the card. + let (icon, for_whom) = (icon_name(s(&dw["icon"])), s(&dw["for_whom"]).trim()); + if icon.is_some() || !for_whom.is_empty() { + let mut f = json!({ "name": for_whom, "description": "" }); + if let Some(icon) = icon { f["icon"] = json!(icon); } + alt["features"] = json!([f]); + } + alt + }) + .collect(); + alternatives.extend( + plan.needs + .iter() + .filter(|n| n.enters_as.is_none() && n.door.is_none()) + .map(|n| form_alternative(plan, n, &front["needs"][&n.id], &public_followup(n))), + ); + if plan.front_door_count() > MAX_FRONT_DOOR { + eprintln!( + "build: the front door offers {} alternatives; past {MAX_FRONT_DOOR} a visitor stops reading. Put needs behind doors.", + plan.front_door_count() + ); + } files.insert( "questions/index.yaml".into(), - json!({ - "name": s(&front["question"]), - "description": s(&front["description"]), - "responsible": responsible, - "alternatives": public.iter().map(|n| form_alternative(n, &front["needs"][&n.id], &public_followup(n))).collect::>(), - }), + json!({ "name": s(&front["question"]), "description": s(&front["description"]), "responsible": responsible, "alternatives": alternatives }), ); + // A door's page: a nav page (index.yaml), public, holding the + // forms of the needs behind it. + for door in &plan.doors { + let path = door_path(door); + let w = &words[&path]; + files.insert( + path, + json!({ + "name": s(&w["question"]), + "description": s(&w["description"]), + "responsible": responsible, + "alternatives": plan.needs_behind(&door.id).iter().map(|n| form_alternative(plan, n, &w["needs"][&n.id], &public_followup(n))).collect::>(), + }), + ); + } + for need in &plan.needs { let (path, back) = match &need.enters_as { None => (format!("questions/received/{}.yaml", need.id), "/".to_string()), Some(group) => (format!("questions/{group}/{}-sent.yaml", need.id), format!("/{group}")), }; let w = &words[&path]; + let mut alternatives = vec![ + json!({ "name": s(&w["next_heading"]), "description": s(&w["next_description"]) }), + ]; + if need.watched_by.iter().any(|g| g == PUBLIC) { + alternatives.push(json!({ + "name": s(&w["see_all"]["heading"]), "description": s(&w["see_all"]["description"]), + "action": format!("/status/{}", need.lands_in), "consequence": [s(&w["see_all"]["button"])], + })); + } + alternatives.push(json!({ "name": s(&w["back"]), "description": "", "action": back, "consequence": [s(&w["back"])] })); // Nested and not an index: portal infers a followup page. - files.insert( - path, - json!({ - "name": s(&w["question"]), - "description": s(&w["description"]), - "alternatives": [ - { "name": s(&w["next_heading"]), "description": s(&w["next_description"]) }, - { "name": s(&w["back"]), "description": "", "action": back, "consequence": [s(&w["back"])] }, - ], - }), - ); + files.insert(path, json!({ "name": s(&w["question"]), "description": s(&w["description"]), "alternatives": alternatives })); if let Some(group) = &need.enters_as { let path = format!("questions/{group}/{}.yaml", need.id); let w = &words[&path]; @@ -503,7 +821,7 @@ pub fn render(plan: &Plan, words: &BTreeMap) -> anyhow::Result) -> anyhow::Result = BTreeSet::new(); + for n in &needs { + shown.extend(n.collects.iter().filter(|f| f.is_public()).map(|f| f.name.as_str())); + } + // Records keep their shape (state, timestamps) so portal + // renders them as records; only the answers are pruned. One + // record per yielded value: portal collects what the filter + // yields into the list, so `map` would nest it once more + // (measured: an empty bucket rendered as `[[]]`). + let projection = format!( + ".[] | .responses |= {{{}}}", + shown.iter().map(|f| format!("{f}: .{f}")).collect::>().join(", ") + ); + files.insert( + path, + json!({ + "name": s(&w["question"]), + "description": s(&w["description"]), + "responsible": responsible, + "alternatives": [ + { + "name": s(&w["heading"]), + "description": s(&w["list_description"]), + "features": [{ "name": "", "description": "", "resource": { + "source": { "kind": "kv", "bucket": bucket }, + "public": true, + "jq": projection, + }}], + }, + { "name": s(&w["back"]), "description": "", "action": "/", "consequence": [s(&w["back"])] }, + ], + }), + ); + } + // A submitter's own moves: a followup page (nested, not an index) // whose alternatives are self_transitions, authorized at runtime by // the record's link plus the email they gave. @@ -581,16 +940,18 @@ pub fn render(plan: &Plan, words: &BTreeMap) -> anyhow::Result ("/".to_string(), s(&front["needs"][&n.id]["heading"]).to_string()), - Some(group) => (internal_page(n, group), s(&words[&format!("questions/{group}/{}.yaml", n.id)]["heading"]).to_string()), + // `via` pins the alternative on the entry page: the + // door's heading for a need behind one, else the form's. + let (enters, heading, steps) = match (&n.enters_as, &n.door) { + (Some(group), _) => (internal_page(n, group), s(&words[&format!("questions/{group}/{}.yaml", n.id)]["heading"]).to_string(), 1), + (None, Some(door)) => ("/".to_string(), s(&front["doors"][door]["heading"]).to_string(), 2), + (None, None) => ("/".to_string(), s(&front["needs"][&n.id]["heading"]).to_string(), 1), }; - let required = n.collects.iter().filter(|f| !f.optional).count(); let mut need = json!({ "id": n.id, "who": n.who, "wants": n.wants, "enters": enters, "via": heading, "lands_in": n.lands_in, "handled_by": n.handled_by, "stages": n.stages, "done_when": n.done_when, "success": n.success, - "max_steps": 1, "max_fields": n.max_fields.unwrap_or(required), + "max_steps": steps, "max_fields": n.max_fields, }); if let Some(group) = &n.enters_as { need["enters_as"] = json!(group); } let others: BTreeSet<&String> = n.moves_by.values().flatten().filter(|m| *m != SUBMITTER && **m != n.handled_by).collect(); @@ -608,7 +969,11 @@ fn words_prompt(plan: &Plan, path: &str, fallback: &Value) -> String { let purpose = if path.contains("/decide/") { "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." } else if path == "questions/index.yaml" { - "the front door: the first page any visitor sees. `question` is the page's one question; under `needs`, each entry is one alternative the visitor can pick, with the form behind it." + "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." + } else if path.starts_with("questions/status/") { + "a public page anyone can open, listing everything sent in to one bucket and where each one stands, read-only. `question` is what this page asks; `heading` names the list." + } else if plan.doors.iter().any(|d| door_path(d) == path) { + "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." } else if path.ends_with("/index.yaml") { "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." } else if path.contains("/received/") || path.ends_with("-sent.yaml") { @@ -616,19 +981,25 @@ fn words_prompt(plan: &Plan, path: &str, fallback: &Value) -> String { } else { "a page only one role inside the business can open, holding one form." }; - let context: Vec = plan - .needs + let mut context: Vec = plan + .doors .iter() - .map(|n| format!("- {}: {} - wants: {}. Handled by {}. Stages: {}.", n.id, n.who, n.wants, n.handled_by, n.stages.join(" -> "))) + .map(|d| format!("- door {}: for {}; behind it: {}", d.id, d.who, plan.needs_behind(&d.id).iter().map(|n| n.id.as_str()).collect::>().join(", "))) .collect(); + context.extend( + plan.needs + .iter() + .map(|n| format!("- {}: {} - wants: {}. Handled by {}. Stages: {}.", n.id, n.who, n.wants, n.handled_by, n.stages.join(" -> "))), + ); format!( - "You write the words for one page of a website for this business.\n\nBusiness: {}\nAbout: {}\nContact: {} <{}>\nLanguage to write in: {}\n\nEveryone the site serves:\n{}\n\nThe page: {path}\nIt is {purpose}\n\nBelow 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.\n\nRules for the words:\n- `question` is a question the reader could ask themselves.\n- A heading says what the reader gets, in the reader's own words, and must work without its description.\n- Lead with what a thing enables. No negations in headings. No trade jargon the reader would not use.\n- Descriptions are one or two short sentences. Labels and buttons are a few words.\n- Write the way people in this trade and country actually speak.\n\n{}\n\nReply with the JSON object only.", + "You write the words for one page of a website for this business.\n\nBusiness: {}\nAbout: {}\nContact: {} <{}>\nLanguage to write in: {}\n\nEveryone the site serves:\n{}\n\nThe page: {path}\nIt is {purpose}\n\nBelow 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.\n\nRules for the words:\n- `question` is a question the reader could ask themselves.\n- A heading says what the reader gets, in the reader's own words, and must work without its description.\n- Lead with what a thing enables. No negations in headings. No trade jargon the reader would not use.\n- Descriptions are one or two short sentences. Labels and buttons are a few words.\n- The button says what pressing it does; the encouragement says what happens next or how little it takes; the form's guidance line says what to have ready. Placeholders are example answers in the reader's words.\n- An icon is one name from this list, chosen for what the reader is doing, or empty: {}\n- Write the way people in this trade and country actually speak.\n\n{}\n\nReply with the JSON object only.", plan.business, plan.about.trim(), plan.contact.name, plan.contact.email, plan.language, context.join("\n"), + ICONS.join(", "), serde_json::to_string_pretty(&slots(fallback, "")).unwrap_or_default(), ) } @@ -692,11 +1063,11 @@ mod tests { fn need(stages: &[&str], done: &[&str], success: &[&str], skippable: &[&str]) -> PlanNeed { let v = |xs: &[&str]| xs.iter().map(|x| x.to_string()).collect::>(); PlanNeed { - id: "n".into(), who: "w".into(), wants: "x".into(), enters_as: None, + id: "n".into(), who: "w".into(), wants: "x".into(), enters_as: None, door: None, lands_in: "b".into(), handled_by: "g".into(), stages: v(stages), done_when: v(done), success: v(success), skippable: v(skippable), moves_by: BTreeMap::new(), watched_by: vec![], - collects: vec![], max_fields: None, + collects: vec![], max_fields: 3, } } @@ -723,6 +1094,42 @@ mod tests { assert_eq!(m["in_hand"], ["closed"]); } + #[test] + fn the_card_carries_button_encouragement_icon_guidance_and_placeholders() { + let plan: Plan = serde_yaml::from_str(PLAN).unwrap(); + let mut words = fallback_words(&plan); + let front = words.get_mut("questions/index.yaml").unwrap(); + front["needs"]["survey"]["button"] = json!("Book a look"); + front["needs"]["survey"]["encouragement"] = json!("We call within two days."); + front["needs"]["survey"]["icon"] = json!("house"); + front["needs"]["survey"]["form_description"] = json!("The address is enough to start."); + front["needs"]["survey"]["hints"]["email"] = json!("you@example.no"); + let files = render(&plan, &words).unwrap(); + let page: Value = serde_yaml::from_str(&files["questions/index.yaml"]).unwrap(); + let alt = &page["alternatives"][0]; + assert_eq!(alt["consequence"][0], "Book a look"); + assert_eq!(alt["encouragements"][0], "We call within two days."); + // Two context sections from the plan come before the form. + let f = alt["features"].as_array().unwrap(); + assert_eq!(f.len(), 3); + assert_eq!(f[0]["name"], "What happens next"); + assert_eq!(f[0]["description"], "It is open, then surveyed, then quoted, and ends won or lost."); + assert_eq!(f[0]["icon"], "lucide:route"); + assert_eq!(f[1]["name"], "Who reads it"); + assert_eq!(f[1]["description"], "Project managers. Questions go to Ingrid at i@n.example."); + assert_eq!(f[2]["icon"], "lucide:house"); + assert_eq!(f[2]["description"], "The address is enough to start."); + assert_eq!(f[2]["requirements"][0]["placeholder"], "you@example.no"); + // An icon off the list is dropped, not passed through. + assert_eq!(icon_name("skull"), None); + assert_eq!(icon_name("lucide:house").as_deref(), Some("lucide:house")); + // Empty slots leave nothing behind: no encouragement key, no form icon. + let plain = render(&plan, &fallback_words(&plan)).unwrap(); + let page: Value = serde_yaml::from_str(&plain["questions/index.yaml"]).unwrap(); + assert!(page["alternatives"][0].get("encouragements").is_none()); + assert!(page["alternatives"][0]["features"][2].get("icon").is_none()); + } + #[test] fn words_take_the_models_strings_and_never_its_structure() { let fallback = json!({"question": "What?", "needs": {"a": {"heading": "A", "labels": {"email": "Email"}}}}); @@ -731,7 +1138,7 @@ mod tests { assert_eq!(merged, json!({"question": "Hva trenger du?", "needs": {"a": {"heading": "A", "labels": {"email": "Email"}}}})); } - const PLAN: &str = "business: Nordvik Bygg\ncontact: { name: Ingrid, email: i@n.example }\nabout: We fix old buildings.\nneeds:\n - id: survey\n who: owners\n wants: Someone to look at the building\n lands_in: enquiries\n handled_by: project_managers\n stages: [open, surveyed, quoted, won, lost]\n done_when: [won, lost]\n success: [won]\n collects:\n - { name: email, type: email }\n - { name: problem, type: textarea }\n - { name: address, optional: true }\n - id: report\n who: crew\n wants: Report a hazard\n enters_as: crew\n lands_in: site_issues\n handled_by: hse\n stages: [open, in_hand, closed]\n done_when: [closed]\n success: [closed]\n collects:\n - { name: kind, type: select, options: [Hazard, Near miss] }\n"; + const PLAN: &str = "business: Nordvik Bygg\ncontact: { name: Ingrid, email: i@n.example }\nabout: We fix old buildings.\nneeds:\n - id: survey\n who: owners\n wants: Someone to look at the building\n lands_in: enquiries\n handled_by: project_managers\n stages: [open, surveyed, quoted, won, lost]\n done_when: [won, lost]\n success: [won]\n max_fields: 4\n collects:\n - { name: email, type: email }\n - { name: problem, type: textarea }\n - { name: address, optional: true }\n - id: report\n who: crew\n wants: Report a hazard\n enters_as: crew\n lands_in: site_issues\n handled_by: hse\n stages: [open, in_hand, closed]\n done_when: [closed]\n success: [closed]\n max_fields: 3\n collects:\n - { name: kind, type: select, options: [Hazard, Near miss] }\n"; #[test] fn a_plan_renders_every_file_the_site_needs() { @@ -754,13 +1161,13 @@ mod tests { assert!(files["questions/hse/index.yaml"].contains("to: closed")); // The spec names the heading the words gave, and the budget the form implies. assert!(files["needs.yaml"].contains("via: Someone to look at the building")); - assert!(files["needs.yaml"].contains("max_fields: 2")); + assert!(files["needs.yaml"].contains("max_fields: 4")); assert!(files["needs.yaml"].contains("enters: /crew/report")); } #[test] fn roles_overlap_on_one_aggregate_each_with_their_own_buttons() { - let yaml = "business: B\ncontact: { name: I, email: i@b.example }\nneeds:\n - id: change\n who: a client\n wants: a change priced and done\n lands_in: change_orders\n handled_by: project_managers\n stages: [open, priced, approved, completed, declined]\n done_when: [completed, declined]\n success: [completed]\n moves_by:\n approved: [submitter]\n declined: [submitter, project_managers]\n completed: [site_managers]\n watched_by: [accounts]\n collects:\n - { name: email, type: email }\n - { name: change, type: textarea }\n"; + let yaml = "business: B\ncontact: { name: I, email: i@b.example }\nneeds:\n - id: change\n who: a client\n wants: a change priced and done\n lands_in: change_orders\n handled_by: project_managers\n stages: [open, priced, approved, completed, declined]\n done_when: [completed, declined]\n success: [completed]\n moves_by:\n approved: [submitter]\n declined: [submitter, project_managers]\n completed: [site_managers]\n watched_by: [accounts]\n max_fields: 3\n collects:\n - { name: email, type: email }\n - { name: change, type: textarea }\n"; let plan: Plan = serde_yaml::from_str(yaml).unwrap(); plan.validate().unwrap(); let files = render(&plan, &fallback_words(&plan)).unwrap(); @@ -787,11 +1194,105 @@ mod tests { assert!(plan.validate().unwrap_err().to_string().contains("required `email`")); } + #[test] + fn a_door_is_a_first_question_with_its_needs_on_a_page_of_their_own() { + let yaml = "business: B\ncontact: { name: I, email: i@b.example }\ndoors:\n - { id: your-building, who: an owner with a building }\nneeds:\n - id: survey\n who: owners\n wants: a look\n door: your-building\n lands_in: enquiries\n handled_by: pms\n stages: [open, won, lost]\n done_when: [won, lost]\n max_fields: 2\n collects:\n - { name: email, type: email }\n - id: build\n who: owners\n wants: a price\n door: your-building\n lands_in: enquiries\n handled_by: pms\n stages: [open, won, lost]\n done_when: [won, lost]\n max_fields: 2\n collects:\n - { name: email, type: email }\n - id: apply\n who: workers\n wants: a job\n lands_in: applicants\n handled_by: pms\n stages: [open, hired]\n done_when: [hired]\n max_fields: 1\n collects:\n - { name: name }\n"; + let plan: Plan = serde_yaml::from_str(yaml).unwrap(); + plan.validate().unwrap(); + let files = render(&plan, &fallback_words(&plan)).unwrap(); + // The front door: the door, then the direct need. + let front: Value = serde_yaml::from_str(&files["questions/index.yaml"]).unwrap(); + let names: Vec<&str> = front["alternatives"].as_array().unwrap().iter().map(|a| a["name"].as_str().unwrap()).collect(); + assert_eq!(names, ["Your building", "a job"]); + assert_eq!(front["alternatives"][0]["action"], "/your-building"); + assert!(front["alternatives"][0].get("record_as").is_none()); + // The door's page holds both forms and is not gated. + let door: Value = serde_yaml::from_str(&files["questions/your-building/index.yaml"]).unwrap(); + assert_eq!(door["alternatives"].as_array().unwrap().len(), 2); + assert_eq!(door["alternatives"][0]["record_as"], "enquiries"); + assert!(!files.contains_key("questions/your-building/_section.yaml")); + // The spec pins the door as the way in, two submissions deep. + let needs: Value = serde_yaml::from_str(&files["needs.yaml"]).unwrap(); + assert_eq!(needs["needs"][0]["via"], "Your building"); + assert_eq!(needs["needs"][0]["max_steps"], 2); + assert_eq!(needs["needs"][2]["max_steps"], 1); + assert_eq!(plan.front_door_count(), 2); + + // A door nobody is behind, a door on an internal need, and a + // door that is also a group are refused. + let lonely: Plan = serde_yaml::from_str(&yaml.replace(" door: your-building\n", "")).unwrap(); + assert!(lonely.validate().unwrap_err().to_string().contains("leads nowhere")); + let internal: Plan = serde_yaml::from_str(&yaml.replacen(" door: your-building\n", " door: your-building\n enters_as: pms\n", 1)).unwrap(); + assert!(internal.validate().unwrap_err().to_string().contains("public way in")); + let clash: Plan = serde_yaml::from_str(&yaml.replace("your-building", "pms")).unwrap(); + assert!(clash.validate().unwrap_err().to_string().contains("also a group")); + } + + #[test] + fn selects_can_take_many_and_draw_their_options_from_the_labelled_groups() { + let yaml = "business: B\ncontact: { name: I, email: i@b.example }\ngroups:\n - { id: trafikk, label: Trafikkforhold }\n - { id: elvesti, label: Elvesti }\nneeds:\n - id: komite\n who: en som vil sitte i en komité\n wants: en plass\n lands_in: soknader\n handled_by: styret\n stages: [open, plassert, avslatt]\n done_when: [plassert, avslatt]\n max_fields: 3\n collects:\n - { name: navn }\n - { name: komite, type: select, options_from: groups, multiple: true }\n"; + let plan: Plan = serde_yaml::from_str(yaml).unwrap(); + plan.validate().unwrap(); + let files = render(&plan, &fallback_words(&plan)).unwrap(); + let page: Value = serde_yaml::from_str(&files["questions/index.yaml"]).unwrap(); + let field = &page["alternatives"][0]["features"][2]["requirements"][1]; + assert_eq!(field["options"], json!(["Trafikkforhold", "Elvesti"])); + assert_eq!(field["multiple"], true); + // Without labelled groups there is nothing to draw from. + let no_groups: Plan = serde_yaml::from_str(&yaml.replace("groups:\n - { id: trafikk, label: Trafikkforhold }\n - { id: elvesti, label: Elvesti }\n", "")).unwrap(); + assert!(no_groups.validate().unwrap_err().to_string().contains("no labelled")); + // `multiple` on a text field is a mistake, not a no-op. + let bad: Plan = serde_yaml::from_str(&yaml.replace("{ name: navn }", "{ name: navn, multiple: true }")).unwrap(); + assert!(bad.validate().unwrap_err().to_string().contains("multiple is for select")); + } + + #[test] + fn a_public_watcher_gets_a_read_only_page_without_contact_details() { + let yaml = "business: B\ncontact: { name: I, email: i@b.example }\nneeds:\n - id: trafikk\n who: en som har sett noe farlig\n wants: at det tas opp\n lands_in: meldinger\n handled_by: trafikk\n stages: [open, ordnet]\n done_when: [ordnet]\n watched_by: [styret, public]\n max_fields: 2\n collects:\n - { name: hvor }\n - { name: hva, type: textarea }\n - { name: epost, type: email, optional: true }\n - { name: navn, optional: true, private: true }\n"; + let plan: Plan = serde_yaml::from_str(yaml).unwrap(); + plan.validate().unwrap(); + let files = render(&plan, &fallback_words(&plan)).unwrap(); + // `public` is not a group: no desk directory for it. + assert!(!files.contains_key("questions/public/index.yaml")); + assert!(files.contains_key("questions/styret/index.yaml")); + let view: Value = serde_yaml::from_str(&files["questions/status/meldinger/index.yaml"]).unwrap(); + let resource = &view["alternatives"][0]["features"][0]["resource"]; + assert_eq!(resource["public"], true); + assert!(resource.get("requires_group").is_none()); + assert_eq!(resource["jq"], ".[] | .responses |= {hva: .hva, hvor: .hvor}"); + assert!(view.get("qualifies").is_none()); + // The followup page points people at the list. + let followup: Value = serde_yaml::from_str(&files["questions/received/trafikk.yaml"]).unwrap(); + assert_eq!(followup["alternatives"][1]["action"], "/status/meldinger"); + // An internal need cannot be public. + let internal: Plan = serde_yaml::from_str(&yaml.replace(" lands_in:", " enters_as: styret\n lands_in:")).unwrap(); + assert!(internal.validate().unwrap_err().to_string().contains("public view")); + } + + #[test] + fn a_form_that_asks_more_than_the_person_will_tolerate_is_refused() { + // Two required fields under a budget of one: the plan is refused + // before any page exists, and the message says what to do. + let plan: Plan = serde_yaml::from_str(&PLAN.replace("max_fields: 4", "max_fields: 1")).unwrap(); + let err = plan.validate().unwrap_err().to_string(); + assert!(err.contains("2 required field(s)") && err.contains("tolerate 1"), "{err}"); + // A budget of zero is not a budget. + let plan: Plan = serde_yaml::from_str(&PLAN.replace("max_fields: 3", "max_fields: 0")).unwrap(); + assert!(plan.validate().unwrap_err().to_string().contains("at least 1")); + // The budget is what the spec hands the verifier, not the form's size. + let plan: Plan = serde_yaml::from_str(PLAN).unwrap(); + let files = render(&plan, &fallback_words(&plan)).unwrap(); + assert!(files["needs.yaml"].contains("max_fields: 4")); + assert!(files["needs.yaml"].contains("max_fields: 3")); + // A plan that says nothing about tolerance is not a plan. + assert!(serde_yaml::from_str::(&PLAN.replace(" max_fields: 4\n", "")).is_err()); + } + #[test] fn a_plan_with_a_bad_identifier_or_a_disagreeing_bucket_is_refused() { let bad: Plan = serde_yaml::from_str(&PLAN.replace("lost]", "avslått]")).unwrap(); assert!(bad.validate().unwrap_err().to_string().contains("ASCII")); - let clash = format!("{PLAN} - id: other\n who: w\n wants: x\n lands_in: enquiries\n handled_by: project_managers\n stages: [open, won]\n done_when: [won]\n collects: []\n"); + let clash = format!("{PLAN} - id: other\n who: w\n wants: x\n lands_in: enquiries\n handled_by: project_managers\n stages: [open, won]\n done_when: [won]\n max_fields: 1\n collects: []\n"); let plan: Plan = serde_yaml::from_str(&clash).unwrap(); assert!(plan.validate().unwrap_err().to_string().contains("must agree")); } diff --git a/src/card.rs b/src/card.rs new file mode 100644 index 0000000..aa8bcc4 --- /dev/null +++ b/src/card.rs @@ -0,0 +1,101 @@ +//! An alternative as the visitor meets it, in text. +//! +//! Portal renders a card: the heading, the description, a button, one +//! or two encouragements, and for each section an icon, a title, a +//! line of guidance and the fields with their labels and placeholders. +//! A visitor is oriented by all of it, not the heading alone. The +//! answering visitor and `rate` both read this rendering, so the +//! scored page is the served page; the gutted twin keeps the card's +//! shape and none of its words. + +use serde_json::Value; + +pub fn s(v: &Value) -> &str { + v.as_str().unwrap_or_default() +} + +/// One option on a page. `full` is the card as rendered; otherwise the +/// heading alone, which is what a visitor who reads nothing else sees. +pub fn alternative(alt: &Value, full: bool) -> String { + let mut out = format!("- {}", s(&alt["name"])); + if !full { + out.push('\n'); + return out; + } + let d = s(&alt["description"]).trim(); + if !d.is_empty() { + out.push_str(&format!(": {d}")); + } + out.push('\n'); + if let Some(button) = alt["consequence"].as_array().and_then(|c| c.first()).and_then(Value::as_str) { + out.push_str(&format!(" Button: {button}\n")); + } + for e in alt["encouragements"].as_array().into_iter().flatten().filter_map(Value::as_str) { + out.push_str(&format!(" {e}\n")); + } + for f in alt["features"].as_array().into_iter().flatten() { + let (name, desc, icon) = (s(&f["name"]).trim(), s(&f["description"]).trim(), s(&f["icon"]).trim()); + let mut line = String::from(" "); + if !icon.is_empty() { + line.push_str(&format!("[icon {}] ", icon.rsplit(':').next().unwrap_or(icon))); + } + if !name.is_empty() { + line.push_str(name); + } + if !desc.is_empty() { + line.push_str(&format!("{}{desc}", if name.is_empty() { "" } else { ": " })); + } + if !line.trim().is_empty() { + out.push_str(line.trim_end()); + out.push('\n'); + } + let fields: Vec = f["requirements"] + .as_array() + .into_iter() + .flatten() + .map(|r| { + let label = r["label"].as_str().unwrap_or_else(|| s(&r["name"])); + let hint = s(&r["placeholder"]).trim(); + let opt = if r["optional"] == true { " (optional)" } else { "" }; + if hint.is_empty() { format!("{label}{opt}") } else { format!("{label}{opt} e.g. {hint}") } + }) + .collect(); + if !fields.is_empty() { + out.push_str(&format!(" Asks for: {}\n", fields.join("; "))); + } + } + out +} + +/// The page around its options: what it asks and says of itself. +pub fn page_head(page: &Value) -> String { + let mut out = format!("{}\n", s(&page["name"])); + let d = s(&page["description"]).trim(); + if !d.is_empty() { + out.push_str(&format!("{d}\n")); + } + out +} + +#[cfg(test)] +mod tests { + use super::*; + use serde_json::json; + + #[test] + fn a_card_reads_as_the_visitor_sees_it_and_a_heading_alone_is_a_heading_alone() { + let alt = json!({ + "name": "Get a price", "description": "For owners.", + "consequence": ["Send it"], "encouragements": ["We answer within two days."], + "features": [{"name": "Your brief", "icon": "lucide:file-text", "description": "A few lines are enough.", + "requirements": [{"name": "email", "label": "Email", "placeholder": "you@example.no"}, + {"name": "address", "label": "Address", "optional": true}]}] + }); + let full = alternative(&alt, true); + assert!(full.starts_with("- Get a price: For owners.\n")); + assert!(full.contains("Button: Send it") && full.contains("We answer within two days.")); + assert!(full.contains("[icon file-text] Your brief: A few lines are enough.")); + assert!(full.contains("Asks for: Email e.g. you@example.no; Address (optional)")); + assert_eq!(alternative(&alt, false), "- Get a price\n"); + } +} diff --git a/src/main.rs b/src/main.rs index 814d0da..33a1a8c 100644 --- a/src/main.rs +++ b/src/main.rs @@ -23,6 +23,8 @@ use std::process::{Command, Stdio}; use anyhow::{anyhow, bail, Context}; mod build; +mod card; +mod plan; mod rate; mod simulate; @@ -48,6 +50,7 @@ fn main() -> anyhow::Result<()> { match argv.first().map(String::as_str) { Some("simulate") => return simulate::run(&argv), Some("compare") => return simulate::compare(&argv), + Some("plan") => return plan::run(&argv), Some("build") => return build::run(&argv), Some("rate") => return rate::rate(&argv), Some("prefer") => return rate::prefer(&argv), @@ -60,9 +63,10 @@ fn main() -> anyhow::Result<()> { .and_then(|i| argv.get(i + 1)) .cloned() }; - let tasks = value("--tasks").ok_or_else(|| anyhow!("usage: portal-trainer answer --tasks [--llm 'cmd']"))?; + let tasks = value("--tasks").ok_or_else(|| anyhow!("usage: portal-trainer answer --tasks [--repo ] [--llm 'cmd']"))?; let cmd = value("--llm").unwrap_or_else(|| "claude -p".to_string()); - print!("{}", answer_blind(&cmd, &std::fs::read_to_string(&tasks).with_context(|| format!("reading {tasks}"))?)?); + let repo = value("--repo").map(PathBuf::from); + print!("{}", answer_blind(&cmd, &std::fs::read_to_string(&tasks).with_context(|| format!("reading {tasks}"))?, repo.as_deref())?); return Ok(()); } let opts = parse_args()?; @@ -161,7 +165,7 @@ fn main() -> anyhow::Result<()> { args.push("--skim".to_string()); } lint(&opts, &args)?; - let answers = answer_blind(opts.visitor.as_deref().unwrap_or(&opts.llm), &std::fs::read_to_string(&tasks_path)?)?; + let answers = answer_blind(opts.visitor.as_deref().unwrap_or(&opts.llm), &std::fs::read_to_string(&tasks_path)?, Some(&opts.out))?; let answers_path = opts.out.join(if skim { "answers-skim.jsonl" } else { "answers.jsonl" }); std::fs::write(&answers_path, answers)?; let mut args = vec!["--needs-score".to_string(), answers_path.display().to_string()]; @@ -244,7 +248,12 @@ static LLM_LOG: std::sync::OnceLock = std::sync::OnceLock::new(); static LLM_CALLS: std::sync::atomic::AtomicUsize = std::sync::atomic::AtomicUsize::new(0); fn llm(cmd: &str, prompt: &str) -> anyhow::Result { - let reply = llm_with(cmd, prompt, &[]); + llm_env(cmd, prompt, &[]) +} + +/// As `llm`, with hints for the backend in its environment. +fn llm_env(cmd: &str, prompt: &str, env: &[(&str, &str)]) -> anyhow::Result { + let reply = llm_with(cmd, prompt, env); if let Some(dir) = LLM_LOG.get() { let n = LLM_CALLS.fetch_add(1, std::sync::atomic::Ordering::Relaxed) + 1; std::fs::write(dir.join(format!("{n:02}-prompt.md")), prompt).ok(); @@ -424,31 +433,96 @@ fn dump(out: &Path) -> anyhow::Result { } /// The answering side never sees `expect` or which need a persona has. -fn answer_blind(cmd: &str, tasks: &str) -> anyhow::Result { - let mut blind = String::new(); +/// +/// One call per task, so no visitor sees another visitor's situation +/// (a batch of eight personas over four headings is nearly a matching +/// puzzle, and a model solves it as one). The options are shuffled per +/// task, so a heading's place on the page cannot carry the answer, and +/// the call is seeded from the task id, so a rerun on the same site is +/// the same experiment. +/// +/// With a content repo to read, the visitor sees each option as the +/// card portal renders: button, encouragement, sections with icon and +/// guidance, fields with placeholders. Headings-only tasks (`--skim`, +/// where the task's text is the heading itself) stay headings only. +fn answer_blind(cmd: &str, tasks: &str, repo: Option<&Path>) -> anyhow::Result { + let mut answers = String::new(); for line in tasks.lines().filter(|l| !l.trim().is_empty()) { - let mut task: serde_json::Value = serde_json::from_str(line)?; - if let Some(map) = task.as_object_mut() { - map.remove("expect"); - map.remove("need"); - } - blind.push_str(&serde_json::to_string(&task)?); - blind.push('\n'); + let task: serde_json::Value = serde_json::from_str(line)?; + let id = task["id"].as_str().unwrap_or_default(); + let body = task["state"]["body"].as_str().unwrap_or_default(); + let pick = &task["questions"]["pick"]; + let instructions = pick["instructions"].as_str().unwrap_or_default(); + let mut options: Vec<(&str, &str)> = pick["criteria"] + .as_object() + .into_iter() + .flatten() + .map(|(k, v)| (k.as_str(), v.as_str().unwrap_or_default())) + .collect(); + let skim = options.iter().all(|(name, text)| text.is_empty() || text == name); + let page = if skim { None } else { repo.and_then(|r| rate::load_page(r, task["page"].as_str().unwrap_or("/"))) }; + let seed = fnv(id); + shuffle(&mut options, seed); + // Options are numbered and the answer is the number: with a + // whole card in view, a small model asked to copy a heading + // copied the page's description instead (measured: six of + // fourteen misroutes on one run were that), and no heading + // matched. A number cannot be a description. + let listed: Vec = options + .iter() + .enumerate() + .map(|(i, (name, text))| { + let card = page + .as_ref() + .and_then(|p| p["alternatives"].as_array()) + .and_then(|alts| alts.iter().find(|a| a["name"] == *name)) + .map(|a| card::alternative(a, true)); + let body = match card { + Some(card) => card.trim_end().trim_start_matches("- ").to_string(), + None if skim => name.to_string(), + None => format!("{name}: {text}"), + }; + format!("{}. {body}", i + 1) + }) + .collect(); + let head = page.as_ref().map(card::page_head).unwrap_or_default(); + let prompt = format!( + "You are this person: {body}\n\n{instructions}\n{head}The page offers these options:\n\n{}\n\nWhich one do you pick? Judge only from your own situation and the wording in front of you. Give your honest confidence between 0 and 1; if two options fit you about equally, confidence is low.\nReply as JSON: {{\"choice\": , \"confidence\": 0.00}}", + listed.join("\n\n") + ); + let reply = llm_env(cmd, &prompt, &[("FORMAT", "json"), ("SEED", &seed.to_string()), ("TEMPERATURE", "0.2")])?; + let parsed = simulate::first_object(&reply).unwrap_or(serde_json::Value::Null); + let names: Vec<&str> = options.iter().map(|(n, _)| *n).collect(); + let raw = match &parsed["choice"] { + serde_json::Value::Number(n) => n.to_string(), + other => other.as_str().unwrap_or_default().to_string(), + }; + // A number, or a heading for a model that wrote one anyway. + let choice = match raw.trim().trim_end_matches('.').parse::() { + Ok(n) if (1..=names.len()).contains(&n) => names[n - 1].to_string(), + _ => simulate::resolve_choice(&names, &raw), + }; + let confidence = parsed["confidence"].as_f64().unwrap_or(0.0); + answers.push_str(&serde_json::to_string(&serde_json::json!({ "id": id, "choice": choice, "confidence": confidence }))?); + answers.push('\n'); } - if blind.is_empty() { - return Ok(String::new()); + Ok(answers) +} + +/// FNV-1a over the task id: a seed that is the same on every run. +fn fnv(text: &str) -> u32 { + text.bytes().fold(0x811c_9dc5u32, |h, b| (h ^ u32::from(b)).wrapping_mul(0x0100_0193)) +} + +/// Fisher-Yates on a small xorshift, so the order is fixed by the seed. +fn shuffle(items: &mut [T], seed: u32) { + let mut x = seed.max(1); + for i in (1..items.len()).rev() { + x ^= x << 13; + x ^= x >> 17; + x ^= x << 5; + items.swap(i, (x as usize) % (i + 1)); } - let prompt = format!( - "You are a typed-decision answering engine. Each line below is a JSON task: `state.body` is a website visitor describing their situation in their own words; `questions.pick` holds `instructions` and `criteria`, a map from option label to what that option says.\n\nFor each task decide which single option that visitor would most plausibly choose, judging only from their text and the option wording, and give your honest confidence between 0 and 1. If two options are similarly plausible, confidence is low.\n\nReply with ONLY JSONL, one line per task, same order:\n{{\"id\":\"\",\"choice\":\"