All guides

Getting started · Admins & coordinators

What Parkway does by itself

Every scheduled job, what it changes, and the short list of things that can message a participant, a family or a worker without anyone pressing send.

Parkway runs a set of jobs on a schedule. Nobody presses anything to start them: they read what is already in the system and either write a record, raise a card, or send a message.

This page lists all of them. It is generated from the same list the platform actually runs, so it cannot fall behind.

What can reach a participant or family

This is the short list, and it is short on purpose. Everything else either stays inside the app or only ever contacts the office.

  1. 1Makes any paid NDIS Audit Pack order the webhook's trigger missed and retries failed ones (failures email hello@parkways.com.au), re-delivers packs to buyers inside their updates window when a new catalogue version ships (forward only: never remakes a newer delivered_version as this deploy's older catalogue), deletes buyers' logos 90 days after delivery, removes logos left on cancelled orders, and cancels drafts nobody paid for in 2 days. Sent by email.
  2. 2Reconciles each due envelope against DocuSeal, then emails a signing reminder to anyone still outstanding, capped at two per recipient three days apart. On a bulk send (`bulk_send_id` set) the Director is reminded on their turn only — off-turn would be one reminder per unsigned copy. Next-signer `sent_at` is the invite time, not envelope create. Sent by email.
  3. 3Re-derives every signature status from the DocuSeal API, advances sequential signing, emails completion copies and auto-files the completed PDF, so a dropped webhook cannot lose a signature. Also retries any completed envelope whose "when signed, file to" never filed (auto_file_retried / auto_file_filed in the pulse line). Sent by email or text message.
  4. 4Texts participants their upcoming roster when their own schedule row says today is the day, once per day, and disables one-off schedules after sending. Sent by text message.
  5. 5Texts opted-in active participants their coming week of supports, with no worker names, signed as the sending org (trading name + its office line), skipping anyone already logged today and any org it cannot identify without borrowing another tenant's name. Sent by text message.
  6. 6One short form about one worker, on the cadence an SF picked, only to participants or guardians an SF has opted in. A rating of 1 or 2 raises a task for the SF the same day. Sent by text message.
  7. 7Phones into an outside Zoom, Teams or Google Meet meeting at its start time for every dial-in notetaker an office user added, keys in the meeting ID and says it is recording; stands down notetakers on cancelled meetings and fails missed or silent calls. The recording is transcribed by the Twilio webhook, not here. Sent by phone call.
  8. 8Every 5 minutes: (1) texts each person on a scheduled meeting that starts in 10 to 20 minutes (workers, office staff, support coordinators and guests with a mobile on file or typed on the form) one reminder from the Parkways line with the time and the join link, once per person. Walks worker, user, coordinator, then guest for a mobile. A join URL that will not fit is dropped, not sliced. A new start instant clears the sent stamp so the new clock is texted. Skipped when the host switched the reminder off, for performance reviews, and for anyone who replied STOP. (2) Emails every attendee with an address 24 hours and 1 hour before (`sweepMeetingEmailReminders`, `src/lib/meetings/email-reminders.ts`, 27 Oct 2026): staff at their work address with the meeting's join link, guests and coordinators with a link of their own, the calendar file under the meeting's one UID, one email per address. Every row for one address is claimed in one update before the send, and a failed send gives the claims back. Skipped for performance reviews, people who said they can't make it, and the visitor on a public `/book/staff` booking (`public_booking_guest`; that address was typed by a stranger). Staff added later still get the reminder. An invite or change email sent after a reminder was already due stamps that reminder done. (3) The same tick (21 Oct 2026) reminds the worker a performance review is about in the app and on the phone, never by text (`sweepReviewReminders`, `src/lib/reviews/review-reminders.ts`), once per booking on the same claim, and not if they said they can't make it; until then a review had no reminder at all. Sent by text message, email or phone notification.

Maintenance reminders are the one thing residents see that is not on this list, and they only ever appear as a card in their own portal. Nothing is texted or emailed to them.

Nothing else on this page contacts a participant, a family member or a plan manager by itself. Automated workflow steps are fenced to staff only: a workflow can email or call someone in the office without a human, never a participant, family, plan manager or GP. Any message to a participant that is not on this list came from a person.

What can reach a support worker

Workers get phone notifications for the things they are about to do or have not finished. None of it blocks them, and none of it mentions pay.

  1. 1Retries health-professional record filings that failed first time, generates the PDF, files it on the participant profile and posts it to the participant's own care-team chat (the house chat only when they have none). Sent by phone notification.
  2. 2Sends the lead driver a one-time prompt to sign in a van booking that has started and is still unsigned. Sent by phone notification.
  3. 3Sends the rostered worker a banner for each due pop-up shift task, deep-linked to the shift's task tab. Sent by phone notification.
  4. 4Records late, missing and outside-geofence clock events, nudges the worker on their phone, raises one review card per clock event through the shared exception generator, and gives each facilitator a single rolling summary of the exceptions on their houses rather than a bell per event. Pushes a worker still clocked in 10 and 30 minutes after the end of their attendance and writes an in-app catch-up (never while the clock legitimately runs on into the next row of the same stint, never SMS, never an automatic clock-out; 12 Oct 2026). Raises one Rostering Desk item per missed clock-in at the 15-minute grace (no bell, no task), closes it when the worker clocks in, and escalates a possible no-show once when nobody has answered 30 minutes later (no_show_escalate_minutes): one bell to the line holder and a task on the Rostering owner's lane. Never unassigns. Texts the worker from the Rostering line at the grace ONLY when the org sets no_clock_in_auto_text, which is off (14 Oct 2026). Sent by phone notification or text message.
  5. 5Messages a support worker, in their own Messages tab, about a geofence outlier that already has a review card. Their reply lands on the Rostering Desk linked to that card and shift (one item per card, later replies on its thread) and answers the card with a pointer, not their words (8 Oct 2026, lib/messages/agent-dm-desk.ts). Does not message about note-amend cards: that opened one Emma chat per worker and flooded the office inbox (22 Sep 2026). Creates no tasks of its own: one message per card ever, at most 1 per worker per Brisbane day and 40 per run, inside 08:00-19:00 in the worker's own state. Holds (24 Sep 2026, "the Emma spamming people"): one question per shift (a clock-in and clock-out card are one conversation), none while the worker's last question is unanswered (7 days), one per worker per client a fortnight, and never about a clock-out tapped 30+ min after the rostered end (pre-#4436 cards), a clock-in tapped 30+ min after the rostered start, or a tap more than 48 hours old (12 Oct 2026; the clock-in-alerts push and in-app notice hold the same two). Holds apply before the cap, so a held card spends no slot; a failed ledger read sends nothing. Sent by phone notification.
  6. 6Chases a missing note after clock-out: the worker at detection, the facilitator about a day later, and the director on the SIRS 24-hour clock. Stages 2 and 3 of the old ladder are retired. Owed is dischargedByRun (run, group and clock block); the worker's "Shift note still pending" bell row is marked read once its ladder closes. Sent by phone notification.
  7. 7Reminds the covering worker before a visit and chases a missing outcome after it, falling back to the facilitator when no worker covers it, and to the ops manager when there is no facilitator either. Sent by phone notification.
  8. 8Chases a pending dose: worker 30 min before due, worker again at 120 min overdue, the facilitator by one text per phone covering the whole round (not one per dose), and an automated call to the facilitator at 180 min, suppressed outside 7am to 8pm Brisbane. Sent by phone notification, text message or phone call.
  9. 9Reminds a worker on their phone when one of their own credentials is expired or expiring inside 30 days. Sent by phone notification.
  10. 10Reminds a worker when their own mandatory training is due for renewal (60/30/7 days, then weekly once lapsed), and hands the compliance owner one digest of who to chase. Renewal only: a requirement never completed is left to the Training Hub assign flow. Warns, never blocks. Sent by phone notification.
  11. 11Every Monday morning, reminds each active worker who has a training course past its due date or untouched for 14 days, in the app and on their phone, with the Training Dashboard's Remind words and the same 20-hour hold, so a reminder pressed by hand and this run never double up. Skips the demo org. Warns, never blocks. Sent by phone notification.
  12. 12Gives the whole house audience a heads-up on open maintenance due within three days: facilitator and residents in the app, and the workers rostered that day on their phones. Sent by phone notification.
  13. 13Around pay day, reads who has their payslip from the email receipts. A paid slip with no payslip out gets the usual email with the PDF, because the law gives one working day. An unpaid slip is never sent from here. Anything unsent, failed, bounced or with no address goes to Nic by name; all clear sends nothing. Sent by email.
  14. 14Runs the overdue ladder: first the page-owner backup handover (a card raised on or after the org's start date, whose owner is on approved leave or that is more than two business days overdue, moves to the page's backup, who gets one in-app note), then a daily card and push to the assignee, and one digest and push to the ops manager at four days naming who is sitting on what. The stage-2 text or email to the assignee was removed on 24 Sep 2026. Sent by phone notification.
  15. 15First closes what the records already settle (close_superseded_generator_work: renewed credentials, agreements a newer one answers, people who have left, clock cards on paid shifts), then starts library workflows for credentials, plans, agreements and casual workers coming due: one credential chase per worker and type, one renewal per participant, none a newer agreement answers. Sent by phone notification.

An expired credential warns and gets chased. It never stops a login, a clock-in, or being rostered.

A missing or thin note goes to the worker who wrote it first, with a reply box. It only reaches a facilitator if it is still unanswered after two days, and then as one card covering the whole caseload rather than one per note.

Shifts and clocking

  1. 1Sends the lead driver a one-time prompt to sign in a van booking that has started and is still unsigned. (can notify workers)
  2. 2Sends the rostered worker a banner for each due pop-up shift task, deep-linked to the shift's task tab. (can notify workers)
  3. 3Sweeps shifts stuck in_progress 12h past end, carries an already-filed completion to clocked-out stragglers, and never decides completed versus cancelled itself.
  4. 4Records late, missing and outside-geofence clock events, nudges the worker on their phone, raises one review card per clock event through the shared exception generator, and gives each facilitator a single rolling summary of the exceptions on their houses rather than a bell per event. Pushes a worker still clocked in 10 and 30 minutes after the end of their attendance and writes an in-app catch-up (never while the clock legitimately runs on into the next row of the same stint, never SMS, never an automatic clock-out; 12 Oct 2026). Raises one Rostering Desk item per missed clock-in at the 15-minute grace (no bell, no task), closes it when the worker clocks in, and escalates a possible no-show once when nobody has answered 30 minutes later (no_show_escalate_minutes): one bell to the line holder and a task on the Rostering owner's lane. Never unassigns. Texts the worker from the Rostering line at the grace ONLY when the org sets no_clock_in_auto_text, which is off (14 Oct 2026). (can notify workers)
  5. 5Messages a support worker, in their own Messages tab, about a geofence outlier that already has a review card. Their reply lands on the Rostering Desk linked to that card and shift (one item per card, later replies on its thread) and answers the card with a pointer, not their words (8 Oct 2026, lib/messages/agent-dm-desk.ts). Does not message about note-amend cards: that opened one Emma chat per worker and flooded the office inbox (22 Sep 2026). Creates no tasks of its own: one message per card ever, at most 1 per worker per Brisbane day and 40 per run, inside 08:00-19:00 in the worker's own state. Holds (24 Sep 2026, "the Emma spamming people"): one question per shift (a clock-in and clock-out card are one conversation), none while the worker's last question is unanswered (7 days), one per worker per client a fortnight, and never about a clock-out tapped 30+ min after the rostered end (pre-#4436 cards), a clock-in tapped 30+ min after the rostered start, or a tap more than 48 hours old (12 Oct 2026; the clock-in-alerts push and in-app notice hold the same two). Holds apply before the cap, so a held card spends no slot; a failed ledger read sends nothing. (can notify workers)
  6. 6Geocodes every shift location, pickup and drop-off that names somewhere other than the participant's home or the house, so the clock geofence measures to the venue instead of the home; writes only empty pin columns and its own lookup cache, and the top-of-the-hour tick sweeps the last 30 days and every future shift.
  7. 7Puts each unallocated shift inside 48 hours on the bell of the people allocated to its participant and house, and texts one summary per org to the ops manager only (users.phone, no env-var numbers).
  8. 8Every 5 minutes: pushes any shift invite or offer answer its route missed onto the Rostering Desk, texts each office user who sent invites one digest of the answers (at most every 15 minutes, held 21:00-07:00 Brisbane unless a shift starts within 12 hours), and once per round of asking writes 'nobody took it' on the Desk and texts each sender when every invite and offer on a future shift is a no or ran out. Texts go from the Parkways line to the sender, or the Rostering line holder when nobody is recorded. Never to a worker. After the response, the same run pulls the main line's call recordings off Cadiz3 (the v2 API when CADIZ_API_KEY is set, else the FTP export) into Nic's Director Comms vault before Cadiz's 90-day retention deletes them (the last three days each run, everything in the first run of each hour; private director-recordings bucket, never the Desk; off while neither is set), then reads Call IQ's summary onto the Desk's Landline tab and raises one Desk item when a call from the last 48 hours mentions a call-back.
  9. 9Every 2 minutes, turns real changes to published shifts (worker, times, cancelled, deleted, through any door) into one bell per participant or house for the SF, never about their own change, with a push that carries times only. A text goes only when no device took the push, a changed shift starts inside 48 hours and it is 7 am to 9 pm Brisbane. Writes nothing to a shift or a Desk item.
  10. 10At 7 am and 3 pm Brisbane, only when the Rostering line's holder changes on the rota, builds the handover from the Desk, writes a handover ledger row on each open item it carries and puts one bell with the section counts on the incoming holder. Never changes who holds an item. The catch-up cron also calls it about 4 am Brisbane (13 hours after the 3 pm run); no cut is near then, so that run writes nothing and only keeps the dead-man quiet.
  11. 11Materialises the next seven days of pending draft shifts from active shift templates.
  12. 12Re-applies every live recurring-appointment rule, so occurrences created after the rule was made get the appointment too. Writes shift_appointments only; sends nothing.
  13. 13Rolls up SIL shifts clocked out 4 to 72 hours ago with no note into one message per house facilitator per day, not one per shift.
  14. 14Raises an interpreter booking and one office task (the participant's facilitator, else the ops manager) for every support or appointment in the next 5 days whose participant's communication profile needs an interpreter.

Notes

  1. 1Chases a missing note after clock-out: the worker at detection, the facilitator about a day later, and the director on the SIRS 24-hour clock. Stages 2 and 3 of the old ladder are retired. Owed is dischargedByRun (run, group and clock block); the worker's "Shift note still pending" bell row is marked read once its ladder closes. (can notify workers)
  2. 2Classifies the last day of notes by keyword and, when the AI key is present, by Claude (prompt in src/lib/notes/note-monitor-prompt.ts); raises a card only for hard concern language or a safety, medical, medication or behavioural verdict. High pushes the ops manager AND the nominated director (Settings > Key people > Director; no admin fallback on that lane), critical pushes the ops manager and the director at any hour and texts the director (the only SMS); outside 07:00-21:00 Brisbane a non-critical push is dropped to the bell row and the 06:00 digest, not re-sent. What each alert actually delivered is read back from alert_dispatches onto the flag card in the Note Monitor. Write gate (17 Sep 2026): label and severity are gated to the persisted verdict on note_flags and on the note row (bad_signs [] and severity none unless the persisted label is attention); note_flags.evidence keeps the model's raw good_signs and bad_signs.
  3. 3Reminds the covering worker before a visit and chases a missing outcome after it, falling back to the facilitator when no worker covers it, and to the ops manager when there is no facilitator either. (can notify workers)

Medication

  1. 1Chases a pending dose: worker 30 min before due, worker again at 120 min overdue, the facilitator by one text per phone covering the whole round (not one per dose), and an automated call to the facilitator at 180 min, suppressed outside 7am to 8pm Brisbane. (can notify workers)
  2. 2Pre-builds eMAR charts for shifts in a 24h-back to 36h-ahead window, then flags orphan doses and under-covered two-person medications.
  3. 3Marks long-unrecorded pending doses as missed once the shift has ended, with an auto-close note and no chase of any kind.
  4. 4Opens a telehealth review workflow when a PRN medication hits its 24-hour ceiling three days running.
  5. 5Raises a deduplicated clinical alert to the assigned nurse when a bowel-chart participant passes their escalation threshold with no new entry.

Compliance and credentials

  1. 1Creates ONE rolling card per org listing workers with lapsed blocking credentials who still have future shifts, and never unassigns anyone.
  2. 2Reminds a worker on their phone when one of their own credentials is expired or expiring inside 30 days. (can notify workers)
  3. 3Reminds a worker when their own mandatory training is due for renewal (60/30/7 days, then weekly once lapsed), and hands the compliance owner one digest of who to chase. Renewal only: a requirement never completed is left to the Training Hub assign flow. Warns, never blocks. (can notify workers)
  4. 4Every Monday morning, reminds each active worker who has a training course past its due date or untouched for 14 days, in the app and on their phone, with the Training Dashboard's Remind words and the same 20-hour hold, so a reminder pressed by hand and this run never double up. Skips the demo org. Warns, never blocks. (can notify workers)
  5. 5Reconciles stale credential statuses against their dates and writes each org's nightly health-score snapshot; the status change raises a register entry and keeps the worker on the roster.
  6. 6Builds ONE rolling card per org of overdue register reviews, skipping superseded rows and metadata.seeded placeholders, and idempotently seeds the quarterly quality audit and per-house emergency test entries.
  7. 7Backfills register entries missing from incidents, expired documents and participants with no NDIS number, inserting only and never overwriting (high-severity note flags are no longer copied into Significant Risk Factor: retired 15 Oct 2026, the flag is worked on the note-flag task lane and SRF reads the participant risk matrix); then keeps ONE "Complete profile" task per participant with missing main details on their SF's board, rewritten as gaps change and closed when none remain.
  8. 8Polls the Federal Register for compilation changes and flags policies citing an amended instrument; separately raises a rolling review card for the hand-tracked instruments not seen in 180 days, then emails org admins.
  9. 9Alerts the participant's facilitator (else the compliance owner, one person) about equipment service due at 30, 14, 7 and 0 days, texting from the 7-day tier, and opens one task per item not already tracked.
  10. 10Finds stock take items checked out past their due-back day and puts one in-app alert a day in front of the person who checked each one out and the compliance owner, until it is returned. Never messages the staff member holding it.
  11. 11Keeps one open task per R18 ending inside 90 days on the Houses queue owner, closing it once a new R18 is signed, the resident moves out or an end-of-term R12 goes. Rings their bell at 90, 60, 30, 21, 14, 7 and 0 days and weekly while overdue, and texts them at 14, 7 and 0.
  12. 12Checks each active vehicle's registration, insurance, inspection and service dates and alerts the compliance desk at 30, 14, 7 and 0 days, texting from the 7-day tier.
  13. 13Gives the whole house audience a heads-up on open maintenance due within three days: facilitator and residents in the app, and the workers rostered that day on their phones. (can notify workers)

Mail and documents

  1. 1Writes the notes and action-item tasks for a finished Parkways video meeting from each person's own audio track within minutes of the call ending, instead of waiting on the slow grid video; marks a meeting still without notes after 6 hours as failed and tells the organiser. Skips performance reviews.
  2. 2Reads all eleven functional mailboxes over Graph, files each new email onto the record it belongs to, and opens a coordinator workflow where the lane needs one. Never sends, not even an acknowledgement.
  3. 3Retries health-professional record filings that failed first time, generates the PDF, files it on the participant profile and posts it to the participant's own care-team chat (the house chat only when they have none). (can notify workers)
  4. 4Imports Twilio SMS and Graph sent mail into the unified communications history. Import only.
  5. 5Reconciles each due envelope against DocuSeal, then emails a signing reminder to anyone still outstanding, capped at two per recipient three days apart. On a bulk send (`bulk_send_id` set) the Director is reminded on their turn only — off-turn would be one reminder per unsigned copy. Next-signer `sent_at` is the invite time, not envelope create. (can message participants)
  6. 6Re-derives every signature status from the DocuSeal API, advances sequential signing, emails completion copies and auto-files the completed PDF, so a dropped webhook cannot lose a signature. Also retries any completed envelope whose "when signed, file to" never filed (auto_file_retried / auto_file_filed in the pulse line). (can message participants)
  7. 7Creates or refreshes ONE rolling task per org for expiring company documents (PI, PL, WorkCover, registration), and completes it when nothing is due.

Money and agreements

  1. 1Makes any paid NDIS Audit Pack order the webhook's trigger missed and retries failed ones (failures email hello@parkways.com.au), re-delivers packs to buyers inside their updates window when a new catalogue version ships (forward only: never remakes a newer delivered_version as this deploy's older catalogue), deletes buyers' logos 90 days after delivery, removes logos left on cancelled orders, and cancels drafts nobody paid for in 2 days. (can message participants)
  2. 2Recodes future, undelivered, uninvoiced ratio snapshots (shift_participants) whose day-type code disagrees with the public holiday table, so a shift on a Parcare public holiday carries the public holiday code (Nic, 12 Oct 2026), one shift_audit_log row per change. Never touches pay, invoices or delivered shifts.
  3. 3Counts delivered billable shifts in the last 35 days with no billing line, plus stamps spanning multiple NDIS bands, and alerts the director (the finance desk).
  4. 4Generates the next invoice in each due repeating series as a Parkway DRAFT and advances the series one cycle. It does not push to Xero and it emails nobody.
  5. 5Writes pending payment reminder DRAFTS for overdue unpaid invoices the reminder gate allows, and closes pending drafts whose invoice the gate now refuses (paid, remittance matched, do-not-chase). It sends nothing: a person presses Send on the Overdue screen.
  6. 6Creates last week's pay_periods row if it is missing and runs the pre-pay check against it, so Monday starts from an assembled run instead of an empty screen. Pays nobody, sends nothing, marks nothing paid, and refuses to touch a period that is not still open.
  7. 7Around pay day, reads who has their payslip from the email receipts. A paid slip with no payslip out gets the usual email with the PDF, because the law gives one working day. An unpaid slip is never sent from here. Anything unsent, failed, bounced or with no address goes to Nic by name; all clear sends nothing. (can notify workers)
  8. 8Owns the PUSH half of Xero: sends contacts and unsynced invoices to the Xero ledger, then pulls invoice status back and can mark a Parkway invoice paid when Xero says it is.
  9. 9Owns the PULL half of Xero: mirrors contacts, invoices, payments, bank transactions, accounts, credit notes and payslips locally, and refreshes the billed-lines matview.
  10. 10Report-only: compares the Xero contact each participant was last invoiced to against the finance contact Parkways links as their payer, and queues every disagreement, blank payer or split for a human. Never writes a participant; a dismissed review stays quiet until Xero bills a different contact.
  11. 11Alerts the director once a day when a mirrored Xero resource has gone stale.
  12. 12Every 15 minutes, pulls AWS Marketplace agreement and licence events off the SQS queue and re-reads GetEntitlements for those buyers plus any subscription not checked in 6 hours, writing status and plan onto aws_marketplace_subscriptions and, once linked, the organisation. Dark while AWS_MARKETPLACE_ENABLED is unset. It never sends mail or SMS and never moves money.
  13. 13Pulls Airwallex cards and card spend into Parkway for every org whose integration is not switched off, asking each linked account for everything since that account's own newest transaction, and files one deduped admin task when a linked account stops answering or no spend has landed in a fortnight. It also writes each linked account's AUD balance history (deposits, payouts, card captures, transfers, fees) into bank_statement_lines as source airwallex_wallet, insert only on line_hash, under the account's own airwallex: ref so no line reaches the rent matcher; the webhook does the same for the one account an event names. It never posts a ledger journal and never moves money.
  14. 14Hourly at :08, mirrors settled AUD credits on each org's Airwallex PROPERTY account (organisations.settings.rent_switch) into the rent statement spine as source airwallex_property, so rent paid to the new account reaches the rent matcher and the Rent Reconcile page. Credits only, insert only on line_hash: it never writes a debit, never rewrites or deletes a row of any source, and never moves money. Its window reaches back to the switch date until the first line lands, and to the newest mirrored line after an outage; each Airwallex request is at most 31 days so a first run or an outage walks in slices.
  15. 15Hourly at :23, for each SIL house with a food contribution setup and an Airwallex account behind its card, posts every deposit the contributions panel has matched to a resident as a confirmed + row on that resident's house ledger, keyed on the Airwallex deposit id so it posts once, which is how the Ledger tiles and the contributions panel count it as paid in (Nic, 17 Oct 2026). The family-portal held-funds panel reads the live Airwallex account, not this fold (22 Oct 2026). A row someone typed by hand that names the deposit id is claimed instead of twinned. When the office re-rules a deposit the row moves or retires (soft delete); a row a person deleted is never put back. It never moves money and never touches a row that is not a house-account deposit.
  16. 16Every half hour, for each active recurring payment, drafts one pending-approval Airwallex transfer per paid pay run for what the linked payroll deductions actually took on that run's payslips (Courtney Silvey's novated lease to Paywise was the first). It never approves, executes or moves money; the transfer waits on Finance Transfers for a person to approve and the director to execute.
  17. 17Attributes rent bank deposits to SIL residents over the last 35 days where the match is unambiguous, leaving ties unmatched. It records rent allocations, never an invoice payment.
  18. 18Opens a register entry for each service-agreement line projected to run out before the agreement ends.
  19. 19Drains up to ten queued participants into draft service agreements, or closes the queue item where an agreement already exists.

People, tasks and workflows

  1. 1Pulls AFL and NRL fixtures and live scores into the staff footy tipping comps and rebuilds their ladders when a result changes. An empty season is re-read every 10 minutes so a newly published draw lands before the hourly pass; one league's feed error does not stop the other.
  2. 2Every 5 minutes, posts the Parkways chat messages people scheduled with Send later, as their sender, into the channel they chose, with the usual push to the other members; a sender who has left the channel or been deactivated is not posted for (the row is marked failed); a tick that dies after claiming a row puts it back on the queue after 10 minutes, and a blip posting it retries instead of failing it.
  3. 3Emails each org's notification address one morning summary of burn-rate alerts, new register activity (incidents, feedback, improvement, legislation and flagged-note concerns), expiring credentials, overdue pay periods and open tasks, skips orgs with nothing to report, and skips addresses on domains that cannot receive mail (parkway.app, parcare.com.au).
  4. 4Texts participants their upcoming roster when their own schedule row says today is the day, once per day, and disables one-off schedules after sending. (can message participants)
  5. 5Texts opted-in active participants their coming week of supports, with no worker names, signed as the sending org (trading name + its office line), skipping anyone already logged today and any org it cannot identify without borrowing another tenant's name. (can message participants)
  6. 6Imports every call on the Twilio account (time, length, status, who answered, line, caller, recording references, never audio) into Nic's Director Comms vault. Import only; the vault is service-role only and the page is Nic's alone.
  7. 7Creates the missing first-shift and first-week check-ins for workers who started in the last 45 days (the first-shift one once a shift is rostered) and reminds the ops manager once per check-in.
  8. 8Seeds pending yearly reviews for plan anniversaries inside 30 days, flips overdue ones, and nudges the facilitator, else the ops manager.
  9. 9Gives every open referral the intake queue owner and every open job applicant the recruitment queue owner when they have none, whichever door they came in by. A lead under 48 hours old gets one bell and push to its new owner. From 48 hours with nobody acting on it in Parkways, the owner gets one digest a day per kind from 08:00 Brisbane, and from 5 days the queue's backup gets one too.
  10. 10Runs the overdue ladder: first the page-owner backup handover (a card raised on or after the org's start date, whose owner is on approved leave or that is more than two business days overdue, moves to the page's backup, who gets one in-app note), then a daily card and push to the assignee, and one digest and push to the ops manager at four days naming who is sitting on what. The stage-2 text or email to the assignee was removed on 24 Sep 2026. (can notify workers)
  11. 11Cancels stale auto-generated cards whose subject has resolved, stamping the reason on the row.
  12. 12Executes workflow steps parked on an automated email, text or AI call and advances the instance; recipients resolve to a staff account only, and a typed-in address is ignored by design.
  13. 13First closes what the records already settle (close_superseded_generator_work: renewed credentials, agreements a newer one answers, people who have left, clock cards on paid shifts), then starts library workflows for credentials, plans, agreements and casual workers coming due: one credential chase per worker and type, one renewal per participant, none a newer agreement answers. (can notify workers)
  14. 14One annual-review card per worker due, on their start-date anniversary, for orgs that named a performance-reviews owner. Everything is paced, at most 2 a day and 8 a week: on-time anniversaries first, then late Permanent Part-Time offers, then the overdue backlog. Cards close once a review is booked. Never touches pay and never contacts the worker.
  15. 15A no-show or a cancel inside 2 hours of the start becomes an attendance mark, a drafted warning and meeting letter (never sent) and a task for the owner of Performance reviews. A sick or carer's claim is parked for a person and never counts. A score in the review band gets the same draft and task. Office staff are never marked.
  16. 16On the first of the month, one task to each Support Facilitator with a caseload asking whether anything about a worker should be written down. Never contacts a worker.
  17. 17One short form about one worker, on the cadence an SF picked, only to participants or guardians an SF has opted in. A rating of 1 or 2 raises a task for the SF the same day. (can message participants)
  18. 18Recomputes every active worker's score and snapshots today's values to history.
  19. 19Pulls seven days of mailbox metadata for office staff (counts and durations, never content) into the responsiveness table. Only logins on the tenant's mail domains (`GRAPH_TENANT_MAIL_DOMAINS`, parcaresupports.com by default) and never the demo org; a mailbox Graph reports missing is skipped after one read, with no row written.
  20. 20Opens a continuous-improvement entry when four or more feedback items about the same participant, or sharing a tag the 30-day cluster trigger has not already logged, appear inside 90 days (fn_feedback_pattern_scan, service role only), and fails the run if the org list or the scan RPC errors.
  21. 21Phones into an outside Zoom, Teams or Google Meet meeting at its start time for every dial-in notetaker an office user added, keys in the meeting ID and says it is recording; stands down notetakers on cancelled meetings and fails missed or silent calls. The recording is transcribed by the Twilio webhook, not here. (can message participants)
  22. 22Sends the Parkways Notetaker bot to every Teams, Zoom or Google Meet meeting in the next 36 hours on any calendar in the Microsoft tenant, company wide with no opt-in (private to the organiser and the Director; a Zoom invite with a phone number gets the dial-in notetaker until the Zoom app exists), and to any Teams, Zoom or Meet link booked on the scheduler in any organisation, following moves and cancellations of cards this cron created; an office-scheduled card the bot attaches to keeps its own times and is not cancelled when Outlook changes. The bot waits in the host's lobby until admitted or declined. The bot records only while someone from Parcare is in the meeting: it pauses when none of ours is in the room, resumes when one is back, leaves after 15 minutes without one, and deletes the recording if none ever came. Also starts any bot that never reached the notetaker service, stands down bots on cancelled meetings, and when a webhook was lost asks the service where a bot is, failing one still in the lobby past its timeout. The recording is transcribed by the Attendee webhook, not here.
  23. 23Every 5 minutes: (1) texts each person on a scheduled meeting that starts in 10 to 20 minutes (workers, office staff, support coordinators and guests with a mobile on file or typed on the form) one reminder from the Parkways line with the time and the join link, once per person. Walks worker, user, coordinator, then guest for a mobile. A join URL that will not fit is dropped, not sliced. A new start instant clears the sent stamp so the new clock is texted. Skipped when the host switched the reminder off, for performance reviews, and for anyone who replied STOP. (2) Emails every attendee with an address 24 hours and 1 hour before (`sweepMeetingEmailReminders`, `src/lib/meetings/email-reminders.ts`, 27 Oct 2026): staff at their work address with the meeting's join link, guests and coordinators with a link of their own, the calendar file under the meeting's one UID, one email per address. Every row for one address is claimed in one update before the send, and a failed send gives the claims back. Skipped for performance reviews, people who said they can't make it, and the visitor on a public `/book/staff` booking (`public_booking_guest`; that address was typed by a stranger). Staff added later still get the reminder. An invite or change email sent after a reminder was already due stamps that reminder done. (3) The same tick (21 Oct 2026) reminds the worker a performance review is about in the app and on the phone, never by text (`sweepReviewReminders`, `src/lib/reviews/review-reminders.ts`), once per booking on the same claim, and not if they said they can't make it; until then a review had no reminder at all. (can message participants)

Housekeeping

  1. 1Counts name changes in the audit over the last two hours and raises an alarm above 15, the tamper signal left by the June anonymiser incident. Read-only.
  2. 2Refreshes the stored Instagram token, files an admin card when the refresh fails, and resolves that card once it succeeds.
  3. 3Re-runs up to two hourly-or-slower jobs whose heartbeat has gone stale (25h for a daily one), so a tick missed by a deploy self-heals; a replayed job can therefore send what the missed tick would have sent, subject to its own same-day guards.
  4. 4Per org, compares each care-evidence stream (observation charts, shift notes, medication signatures, health forms, incidents) over the last 24h against its own previous 14 days, and files one in-app card for up to three of that org's admins when a stream with real volume has gone near silent. Silent on a normal day.

Turning something off

Most of these have a switch, and a few do not. Ask Nic: switching one off is a decision about what stops being chased, not a setting.

Incident, medication and safeguarding reminders cannot be muted or suppressed by feedback. Everything else can be voted down by the people receiving it.

Retired

These were replaced and no longer run on a schedule. They are listed so nobody wonders where an old alert went.

  1. 1Superseded by the shift-completion cards. Left in place but deliberately unscheduled; it would text workers about unactioned shift tasks if invoked.
  2. 2The old three-tier credential ladder, superseded by credential-lapse-review and credential-push. Its enforceLockout call is a no-op and removes no shifts. It would text workers if invoked.