Every prompt and reply is now kept under <out>/llm/. An empty reply is a retry, not a fatal error; a spec that never parses stops the run before the structure phase; --visitor-llm lets a different model play the visitor. The file-block parser finds markers anywhere in a line, accepts a short END and lets a new FILE close an open one, after a reply glued two files together with `<<<END>></think>`. The reference gains a language section: copy in the intake's language, identifiers in ASCII. runs/rehab-entreprenor-no-2026-09-21: nemotron-3.5-lightning:30b-a3b did not produce a loadable site. Written up with the reason and the way forward: structure from needs.yaml deterministically, words from the model. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01L4jrCgLiKKHAEFuZUJjckH
9.2 KiB
<<<FILE questions/index.yaml>>> name: Hva trenger du hjelp med? description: > Velg hva du trenger hjelp med. responsible: { name: Åsrud Bygg og Rehabilitering AS, contact: post@asrud.no } alternatives:
- name: Meld inn et problem
description: >
Fortell oss om det er noe galt med bygget ditt.
action: /leads
consequence: [Send]
record_as: leads
features:
- name: Om bygget
description: >
Hva slags problem opplever du?
requirements:
- { name: problem, label: Hva er problemet, type: textarea }
- { name: urgency, label: Hvor akutt, type: select, options: [Dette uken, Dette måneden, Ikke akutt] }
- { name: contact, label: Kontaktinformasjon, type: email }
- name: Om bygget
description: >
Hva slags problem opplever du?
requirements:
- name: Bliv godkjent som leverandør
description: >
Søk om å bli fast leverandør til oss.
action: /subcontractors
consequence: [Send]
record_as: subcontractors
features:
- name: Førstehåndsinformasjon
description: >
Hvem er du og hva kan du?
requirements:
- { name: company, label: Bedriftsnavn, type: text }
- { name: contact, label: Kontaktinformasjon, type: email }
- { name: experience, label: Erfaring, type: textarea }
- name: Førstehåndsinformasjon
description: >
Hvem er du og hva kan du?
requirements:
- name: Søk jobb
description: >
Søk om jobb som tømrer, murer eller lærling.
action: /job_applications
consequence: [Send]
record_as: job_applications
features:
- name: Faglig profil
description: >
Hvilken stilling søker du?
requirements:
- { name: role, label: Stillingsnavn, type: select, options: [Tømrer, Murer, Lærling] }
- { name: contact, label: Kontaktinformasjon, type: email }
- { name: experience, label: Erfaring, type: textarea }
- name: Faglig profil
description: >
Hvilken stilling søker du?
requirements:
- name: Rapporter avvik
description: >
Rapporter uønskede hendelser eller avvik på byggeplassen.
action: /incident_reports
consequence: [Send]
record_as: incident_reports
features:
- name: Avviksinformasjon
description: >
Hva skjedde?
requirements:
- { name: incident, label: Hva skjedde, type: textarea }
- { name: severity, label: Alvorlighetsgrad, type: select, options: [Høyt, Medium, Lavt] }
- { name: reporter, label: Rapportert av, type: text }
- name: Avviksinformasjon
description: >
Hva skjedde?
requirements:
- name: Anbefal kvalifisert mandskap
description: >
Anbefal noen vi bør snakke med.
action: /internal_referral
consequence: [Send]
record_as: internal_referral
features:
- name: Anbefaling
description: >
Hvem anbefaler du og hvorfor?
requirements:
- { name: person, label: Navn, type: text }
- { name: reason, label: Grunn, type: textarea }
- { name: contact, label: Kontaktinformasjon, type: email } <<>>
- name: Anbefaling
description: >
Hvem anbefaler du og hvorfor?
requirements:
<<<FILE questions/leads/index.yaml>>> name: Meld inn et problem description: > Fortell oss om det er noe galt med bygget ditt. responsible: { name: prosjektledere, contact: post@asrud.no } alternatives:
- name: Send
description: >
Send inn meldingen.
action: /received
consequence: [Send]
record_as: leads
features:
- name: "" description: "" resource: source: { kind: kv, bucket: leads } requires_group: prosjektledere transitions: - { to: quoted, label: Quote sent } - { to: lost, label: Not for us } - { from: quoted, to: won, label: Won } - { from: quoted, to: lost, label: Lost } <<
<<<FILE questions/subcontractors/index.yaml>>> name: Bliv godkjent som leverandør description: > Søk om å bli fast leverandør til oss. responsible: { name: prosjektledere, contact: post@asrud.no } alternatives:
- name: Send
description: >
Send inn søknaden.
action: /received
consequence: [Send]
record_as: subcontractors
features:
- name: "" description: "" resource: source: { kind: kv, bucket: subcontractors } requires_group: prosjektledere transitions: - { to: approved, label: Godkjent } - { to: rejected, label: Ikke godkjent } <<
<<<FILE questions/job_applications/index.yaml> name: Søk jobb description: > Søk om jobb som tømrer, murer eller lærling. responsible: { name: prosjektledere, contact: post@asrud.no } alternatives:
- name: Send
description: >
Send inn søknaden.
action: /received
consequence: [Send]
record_as: job_applications
features:
- name: "" description: "" resource: source: { kind: kv, bucket: job_applications } requires_group: prosjektledere transitions: - { to: interviewed, label: Interview requested } - { to: rejected, label: Ikke relevant } - { from: interviewed, to: hired, label: Hired } - { from: interviewed, to: rejected, label: Rejected } <<
<<<FILE questions/incident_reports/index.yaml> name: Rapporter avvik description: > Rapporter uønskede hendelser eller avvik på byggeplassen. responsible: { name: HMS-ansvarlig, contact: post@asrud.no } alternatives:
- name: Send
description: >
Send inn rapporten.
action: /received
consequence: [Send]
record_as: incident_reports
features:
- name: "" description: "" resource: source: { kind: kv, bucket: incident_reports } requires_group: HMS-ansvarlig transitions: - { to: closed, label: Closed } <<
<<<FILE questions/internal_referral/index.yaml> name: Anbefal kvalifisert mandskap description: > Anbefal noen vi bør snakke med. responsible: { name: prosjektledere, contact: post@asrud.no } alternatives:
- name: Send
description: >
Send inn anbefalingen.
action: /received
consequence: [Send]
record_as: internal_referral
features:
- name: "" description: "" resource: source: { kind: kv, bucket: internal_referral } requires_group: prosjektledere transitions: - { to: referred, label: Referred } <<
<<<FILE questions/desk/_section.yaml>>> qualifies: prosjektledere <<
<<<FILE questions/desk/index.yaml>>> name: Hva kom inn? responsible: { name: prosjektledere, contact: post@asrud.no } alternatives:
- name: Leads
description: >
Behandl innkommende meldinger.
action: /desk
consequence: [Confirm]
features:
- name: "" description: "" resource: source: { kind: kv, bucket: leads } requires_group: prosjektledere transitions: - { to: quoted, label: Quote sent } - { to: lost, label: Not for us } - { from: quoted, to: won, label: Won } - { from: quoted, to: lost, label: Lost }
- name: Subcontractors
description: >
Behandl leverandør-søknader.
action: /desk
consequence: [Confirm]
features:
- name: "" description: "" resource: source: { kind: kv, bucket: subcontractors } requires_group: prosjektledere transitions: - { to: approved, label: Godkjent } - { to: rejected, label: Ikke godkjent }
- name: Job applications
description: >
Behandl jobb-søknader.
action: /desk
consequence: [Confirm]
features:
- name: "" description: "" resource: source: { kind: kv, bucket: job_applications } requires_group: prosjektledere transitions: - { to: interviewed, label: Interview requested } - { to: rejected, label: Ikke relevant } - { from: interviewed, to: hired, label: Hired } - { from: interviewed, to: rejected, label: Rejected }
- name: Incident reports
description: >
Behandl avvik rapporter.
action: /desk
consequence: [Confirm]
features:
- name: "" description: "" resource: source: { kind: kv, bucket: incident_reports } requires_group: HMS-ansvarlig transitions: - { to: closed, label: Closed }
- name: Internal referrals
description: >
Behandl anbefalinger.
action: /desk
consequence: [Confirm]
features:
- name: "" description: "" resource: source: { kind: kv, bucket: internal_referral } requires_group: prosjektledere transitions: - { to: referred, label: Referred } <<
<<<FILE questions/received.yaml>>> name: Melding mottatt description: > Meldingen er mottatt. Hvem skal lese den og hva skjer nå? responsible: { name: prosjektledere, contact: post@asrud.no } alternatives:
- name: Gå tilbake description: > Gå tilbake til hovedmenyen. action: / consequence: [Gå tilbake] followup: true <<
<<<FILE questions/leads/_section.yaml>>> qualifies: prosjektledere <<
<<<FILE questions/subcontractors/_section.yaml>>> qualifies: prosjektledere <<
<<<FILE questions/job_applications/_section.yaml>>> qualifies: prosjektledere <<
<<<FILE questions/incident_reports/_section.yaml>>> qualifies: HMS-ansvarlig <<
<<<FILE questions/internal_referral/_section.yaml>>> qualifies: prosjektledere <<