# 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." }