Back to the build library
Healthcare & clinics
Standard

Front Desk Task Board

Turns the front desk's mental list into a visible queue where every item has an owner, a deadline and an escalation path.

Industry
Healthcare & clinics
Build effort
Standard
Typical time to launch
2–4 weeks
On this page
The problemWhat gets builtHow it runsAutomations in detailWhat changesBefore you start
Want this built for you?

Bring your stack to a call and we will scope it against how your business actually runs.

Book a call
01

The problem

Ask a front desk coordinator what is outstanding and you will get a recital: the prior authorization that has been pending since Tuesday, the records request from the attorney's office, the patient who wants a call back about a bill, the referral that needs faxing, the three forms that came in overnight, the voicemail from the pharmacy. None of it is written down anywhere a second person can see. It lives in a notebook, a run of sticky notes along the monitor bezel, a personal email flag, and mostly in memory. The front desk is running a work queue with no queue.

This holds together until it does not. The coordinator takes a sick day and the practice discovers that nobody knows what was in flight. A shift changes at two in the afternoon and the morning's half-finished items simply stop. A patient calls for the third time about the same callback and gets told again that someone will get back to them, because there is no record that they already asked twice. The authorization expires. The records request passes its statutory response window. The only alerting mechanism in the system is an annoyed patient.

The leak is in three forms. First, dropped revenue work: authorizations not chased, claims information not supplied, referrals not completed, balances not called on. Second, staff time lost to re-discovery. The daily ritual of reconstructing what is outstanding costs real minutes per person per day and produces an incomplete answer. Third, risk: a records request or a complaint sitting unworked past its deadline is a compliance exposure, not an inconvenience. A visible queue with owners and clocks fixes all three with the same mechanism, and it costs nothing in extra staff.

02

What gets built

Pipeline and stages

The board is a pipeline, worked left to right. Keep it to one board for the whole desk. The temptation to split per person is the thing that destroys visibility.

  • Inbox: captured, not yet classified or owned. Nothing stays here longer than one hour during opening hours.
  • Triaged - Unassigned: classified with a task type and a due date, waiting for an owner.
  • Assigned - Today: owned, due today or overdue. This column is the shift's actual work.
  • Assigned - Scheduled: owned, due on a future date, surfaces automatically on that morning.
  • Waiting on Patient: blocked pending a patient response, with an automatic chase cadence.
  • Waiting on Third Party: blocked on a payer, pharmacy, imaging center, referring office or attorney, with its own chase cadence.
  • Waiting on Clinician: blocked on a provider decision, signature or chart note.
  • Escalated: past SLA, or flagged by type. Visible to the practice manager on a separate view.
  • Done Today: completed, holds for 24 hours so the handoff and the daily report can see throughput.
  • Closed: archived.

Run a second, narrow pipeline, Records and Requests, for anything with a legal or regulatory clock: medical records requests, amendment requests, accounting-of-disclosures requests, complaint intake, subpoena receipt. These have statutory deadlines, they must never be mixed with ordinary work, and their stages mirror the practice's own documented response procedure.

Calendars

  • Front Desk Shift Calendar: who is on the desk, at which location, in which time band. Assignment routing reads this; without it the board will hand a task to someone who went home at noon.
  • Queue Work Blocks: two protected thirty-minute blocks per day, mid-morning and mid-afternoon, where the queue is worked rather than the phone. Tasks are not completed in the gaps between calls; they are completed in reserved time.
  • Daily Handoff: a ten-minute recurring block at shift change, attached to the handoff summary the board generates.

Custom fields

On the task or opportunity record:

  • task_type: option, and this list is the heart of the build: Callback Request, Prior Authorization, Referral Out, Referral In, Records Request, Form Completion, Billing Question, Insurance Verification, Prescription Refill Relay, Lab or Imaging Chase, Appointment Change, Document Upload, Complaint Intake, Supply Order, Other.
  • priority: option: Routine, Same Day, Urgent Administrative. Note what is absent: there is no clinical priority level on this board, because clinical urgency is not a front desk judgment.
  • owner: user reference.
  • location: option.
  • sla_hours: number, written automatically from task_type.
  • due_at: date-time, computed from creation plus sla_hours in business hours.
  • first_touch_at: date-time, stamped when the owner first works it. Separating first touch from completion is what makes the board diagnosable.
  • completed_at: date-time.
  • blocked_reason: option: Awaiting Patient, Awaiting Payer, Awaiting Clinician, Awaiting Records, Awaiting External Office, Awaiting Supplier.
  • blocked_since: date-time, drives the chase cadence.
  • chase_count: number, capped so chasing does not become harassment.
  • external_party: text, who is being chased.
  • external_reference: text, the payer's authorization or case number.
  • patient_informed_at: date-time, last time the patient was told anything. The field that stops the third angry phone call.
  • source_channel: option: Phone, SMS, Web Form, Email, Fax, In Person, Portal, Internal.
  • escalation_level: number, 0 to 3.
  • regulatory_clock: switch. True puts the item on the Records and Requests pipeline and freezes it out of ordinary automation.
  • contains_clinical_detail: switch. True restricts the task's notes to the clinical-access role and blocks any outbound message templating from the note body.

Tags

  • sla-breached, sla-at-risk: written automatically at 75 percent of the window.
  • chase-1, chase-2, chase-3, chase-exhausted
  • reopened: an item closed and then raised again by the same patient. Count these; they are the quality signal.
  • handoff-carried: survived a shift change unworked.
  • needs-clinician, needs-manager
  • regulatory: never auto-closed, never auto-messaged.
  • patient-waiting: a human has promised a callback and it has not happened.

Forms

  • Task Intake: the internal form staff use to capture anything in under fifteen seconds: task type, patient record search, one line of description, priority. Fifteen seconds is the design constraint; if capture takes longer than writing a sticky note, staff will write the sticky note.
  • Patient Request: the public-facing version, linked from the website and the practice's reply templates: callback request, form request, billing question, appointment change. A non-clinical controlled list only, with a prominent line stating that the form is not for medical questions or emergencies and naming where to go instead.
  • Records Request: the regulated intake form, matching the practice's own documented procedure, with identity verification steps and the authorization capture its privacy officer specifies.
  • Blocked Item Update: one tap to log a chase attempt: who was contacted, reference number, what they said, next action date. Writes chase_count, external_reference and blocked_since.
  • Shift Handoff Confirmation: the incoming shift acknowledges the carried items. An unacknowledged handoff raises to the manager.

BO's role and guardrails

  • Captures and classifies. BO reads inbound SMS, web chat, web form and email, proposes a task_type, matches it to a patient record, drafts the one-line description and files it in Inbox.
  • Acknowledges receipt to the patient with a realistic timeframe drawn from the SLA table, so the patient knows the request landed.
  • Chases third parties on a schedule by drafting the call script or the email, and logs the attempt. BO drafts; a human sends anything going to a payer or another practice.
  • Writes the shift handoff summary and the daily queue report.

Guardrails:

  • BO never gives clinical advice, never answers a medical question, and never assesses how urgent a symptom is. Any inbound item containing clinical content or urgency language is tagged needs-clinician, routed out of the front desk board to the clinical queue, and the patient receives a fixed response pointing to emergency services and the practice's clinical line.
  • BO never classifies a prescription, lab or clinical question as complete. It relays only, and the relay target is a clinician.
  • BO never auto-closes a task. Completion is always a human action with a timestamp attached to a named user.
  • BO never touches an item where regulatory_clock is true beyond filing it and notifying the privacy officer. No automated messaging, no auto-chase, no auto-close on a regulated request.
  • BO never includes clinical detail in an outbound patient message or in an internal chat notification. Internal alerts carry the task type, the record identifier and the due time, and nothing else.

Numbers and channels

  • The main inbound line feeds the board: unanswered calls create a Callback Request task automatically with source_channel Phone, so an abandoned call becomes a tracked item rather than a lost one.
  • A shared SMS number for the front desk, with every inbound message creating or updating a task. Two-way, monitored during opening hours, with an explicit auto-reply outside them.
  • A monitored shared inbox feeding the board by email parsing, so requests arriving by email stop living in one person's folder.
  • Inbound fax, where the practice still receives one, routed to a document drop that creates a Document Upload task. Faxed referrals and authorizations are still how much of this work arrives.
  • An after-hours auto-reply on the SMS number: "Thanks for your message. Our front desk is open {{custom_values.hours}} and we will pick this up then. If this is a medical emergency, call 911. For an urgent clinical matter, call {{custom_values.clinical_line}}."
03

How it runs, step by step

  1. At 08:40 a patient texts the front desk number asking someone to call about a bill they do not understand. BO reads it, matches the cell number to a contact record, classifies it as Billing Question, writes source_channel SMS, and files a task in Inbox.
  2. The classification rules write sla_hours from the task type (Billing Question carries one business day) and compute due_at in business hours, skipping the closed window and the weekend.
  3. BO sends the patient an acknowledgement: "Got it, {{contact.first_name}}. I have put this in front of our billing coordinator and someone will call you by {{task.due_at}}. If this is about a medical question instead, call us on {{custom_values.clinical_line}}." patient_informed_at is stamped.
  4. Within the hour the assignment workflow runs. It reads the shift calendar, finds who is on the desk at that location, counts each person's open items in Assigned - Today, and routes to the lightest load among staff whose role covers billing. owner is set, the task moves to Assigned - Today, and the owner gets one notification.
  5. At 10:15, in the protected queue block, the owner opens the task, stamps first_touch_at by starting it, calls the patient, and discovers the charge relates to a service the insurer denied. That needs a payer call, which cannot happen now.
  6. The owner logs it: blocked_reason Awaiting Payer, external_party the insurer, blocked_since now. The task moves to Waiting on Third Party, and the chase cadence takes over. The patient gets one message: "Update, {{contact.first_name}}, we have looked at this and need to speak with your insurer. I will come back to you by {{task.next_update_due}}." patient_informed_at is restamped.
  7. Two business days later the chase workflow fires. BO drafts the payer call script with external_reference prefilled and creates a task on the same owner. The owner calls, logs the attempt through Blocked Item Update, chase_count goes to 1, and blocked_since resets.
  8. Meanwhile a prior authorization task created on Monday hits 75 percent of its SLA window. The tag sla-at-risk is applied and the owner gets a nudge. It is still unworked four hours later, so sla-breached is applied, escalation_level goes to 1, and the practice manager sees it in the Escalated view.
  9. At 14:00 the shift changes. The handoff workflow generates the summary: carried items by owner, anything in Assigned - Today not yet first-touched, everything in Escalated, every blocked item whose next update to the patient is due today. The incoming coordinator submits Shift Handoff Confirmation and the carried items are reassigned to them.
  10. At 15:30 an attorney's office faxes a records request. The fax drop creates a task, BO classifies it as Records Request, and because that type sets regulatory_clock true, the task is moved straight to the Records and Requests pipeline, tagged regulatory, and the privacy officer is notified. No automated patient message goes out and no auto-chase runs; the practice's own documented procedure governs it from here.
  11. At 16:45 a patient texts "my chest feels tight should I come in". BO's urgency screen matches before any classification happens. The task is tagged needs-clinician, routed to the clinical queue, the clinical line is notified immediately, and the patient receives the fixed safety response naming emergency services. BO offers no opinion and no appointment.
  12. At 17:30 the end-of-day sweep runs. Anything still in Inbox is force-assigned to the closing coordinator. Anything in Assigned - Today that was never first-touched is listed by name in the manager's evening summary. Anything in Waiting on Patient with no patient contact in five days is surfaced for a decision: chase again or close with a note.
  13. Three days later the insurer resolves the denial. The owner calls the patient, explains, completes the task, and completed_at is stamped. The item sits in Done Today for 24 hours so it appears in the throughput count, then moves to Closed.
  14. On Monday the weekly report lands: items created and closed by type, median first-touch time, median cycle time, SLA breach count by type and by owner, reopen count, chase-exhausted count, and the two task types with the worst breach rate. The practice manager picks one of those two and changes something about it.
04

Automations in detail

1. Task Intake, Classification and Acknowledgement

Trigger: inbound SMS to the front desk number; Patient Request form submitted; Task Intake form submitted by staff; email arriving in the monitored shared inbox; inbound fax landing in the document drop; a call ending with no appointment booked and no outcome logged; web chat conversation closed without resolution.

Conditions and branches, in strict order:

  1. Urgency and clinical screen, before anything else. If the content matches the clinical lexicon. Chest pain, tight chest, cannot breathe, shortness of breath, bleeding, severe pain, fever, fainted, overdose, suicidal, self-harm, contractions, water broke, head injury, numbness, slurred speech, allergic reaction, emergency, 911, then: tag needs-clinician, set contains_clinical_detail true, route the item to the clinical queue and not to this board, notify the clinical line immediately, and send the fixed patient response: "I cannot help with medical questions by text. If this is an emergency, call 911 or go to your nearest emergency room now. For an urgent clinical question, call us on {{custom_values.clinical_line}}, a member of our clinical team will speak with you." End the workflow. No classification, no assessment, no appointment offer.
  2. Duplicate check. If an open task of the same task_type exists on the same contact created inside the last 72 hours, do not create a second one. Append a note to the existing task, increment a repeat counter, tag patient-waiting, and notify the current owner: "Patient has asked again about an open item. Call today." This single branch removes most of the practice's repeat-caller volume.
  3. BO proposes task_type from the content against the controlled list. If confidence is low, or the content maps to no type, file in Inbox with task_type Other and flag for human classification rather than guessing.
  4. Write sla_hours from the task type table and compute due_at in business hours only, skipping closures, weekends and practice holidays.
  5. Match to a patient record by phone, email or name plus date of birth where the inbound channel is authenticated. If no confident match, create the task against a placeholder and tag it for identity confirmation: never merge records on a guess.
  6. Branch on regulatory_clock. If the task type is Records Request, Complaint Intake, Amendment Request, Accounting of Disclosures or Subpoena: set regulatory_clock true, tag regulatory, move to the Records and Requests pipeline, notify the privacy officer, and suppress every automated patient message and chase. End.
  7. Otherwise, send the acknowledgement on the inbound channel with the SLA-derived timeframe: "Got it, {{contact.first_name}}. This is with our team and we will come back to you by {{task.due_at}}. If this is a medical question instead, please call {{custom_values.clinical_line}}." Stamp patient_informed_at.
  8. File in Inbox and start workflow 2.

Stop and exit conditions: clinical or urgency match, which exits to the clinical path; duplicate found, which updates rather than creates; regulatory type, which exits to the regulated pipeline. Nothing created by this workflow is ever auto-closed.

2. Assignment and Load Routing

Trigger: task enters Inbox, or a scheduled sweep every 15 minutes during opening hours.

Conditions and branches:

  1. Read the Front Desk Shift Calendar for the task's location at the current time to build the candidate pool. If the pool is empty, outside opening hours, leave the task in Inbox, set due_at from the next opening time, and exit.
  2. Filter the pool by role capability for the task type: billing items to staff with the billing role, authorizations to the authorization owner, records to the records owner. A task type with no capable staff on shift routes to the front-desk lead with the note "No capable owner on shift: assign or defer."
  3. Count each candidate's open items in Assigned - Today, weighting Urgent Administrative at three and Same Day at two. Assign to the lowest weighted count; break ties by who was last assigned, so the rotation is fair rather than alphabetical.
  4. Set owner, move to Assigned - Today if due_at is today or earlier, otherwise Assigned - Scheduled.
  5. Send one notification to the owner: "New item: {{task.task_type}}, due {{task.due_at}}, record {{contact.id}}." Task type, due time and record identifier only. No clinical content, no narrative.
  6. Every morning at 07:30, promote every task in Assigned - Scheduled whose due_at falls today into Assigned - Today, and send each owner a single digest rather than one notification per item.
  7. Reassignment branch: if an owner's shift ends with items still in Assigned - Today, those items are picked up by workflow 6 rather than silently expiring on an absent person's name.

Stop and exit conditions: task assigned; no staff on shift, which defers; task manually claimed by a staff member, which overrides the routing and logs who claimed it.

3. SLA Clock and Escalation Ladder

Trigger: scheduled, every 30 minutes during opening hours, across every task not in Done Today or Closed.

Conditions and branches:

  1. At 75 percent of the SLA window with first_touch_at still empty: tag sla-at-risk and nudge the owner: "{{task.task_type}} due in {{time_remaining}} and not started. Record {{contact.id}}."
  2. At due_at with the task incomplete: tag sla-breached, set escalation_level to 1, move to Escalated, and notify the front-desk lead: "SLA breached: {{task.task_type}}, owner {{task.owner}}, {{hours_over}} hours over."
  3. Four business hours past due_at: escalation_level 2, notify the practice manager, and reassign to the front-desk lead so the item has a fresh owner rather than a stale one.
  4. One business day past due_at: escalation_level 3, notify the practice manager and the practice owner, and create a review task "Why did this sit for a day?" The escalation is on the process, not the person; a high level-3 count means the SLA table is wrong or the desk is understaffed.
  5. Patient-update branch, independent of the SLA: if patient_informed_at is more than 3 business days ago and the task is not complete, send one status message: "Quick update, {{contact.first_name}}: your {{task.task_type_patient_label}} is still in progress. We are waiting on {{task.blocked_reason_patient_label}}. I will update you again by {{next_update_due}}." Use a patient-facing label from an approved non-clinical list, never the raw internal note. Restamp patient_informed_at.
  6. Urgent Administrative branch: SLA window is four business hours, the at-risk nudge fires at two, and escalation goes straight to level 2 on breach.
  7. Regulatory branch: items with regulatory_clock true do not use this ladder. They get their own countdown against the deadline in the practice's documented procedure, with notifications to the privacy officer at the intervals that procedure specifies, and they are never auto-messaged or auto-reassigned.

Stop and exit conditions: task completed; task moved to a Waiting stage, which pauses the SLA clock and starts the chase clock instead; task closed by the manager with a documented reason. The SLA clock must pause while genuinely blocked or the breach figures become meaningless and staff stop trusting the board.

4. Third-Party and Patient Chase Cadence

Trigger: task enters Waiting on Third Party, Waiting on Patient or Waiting on Clinician.

Conditions and branches by blocked_reason:

  1. Awaiting Payer: wait 2 business days from blocked_since. BO drafts a call script with external_party, external_reference and the patient record identifier prefilled, and creates a task on the owner: "Chase {{task.external_party}}, ref {{task.external_reference}}." On Blocked Item Update submission, increment chase_count and reset blocked_since. Repeat at 2, 4 and 7 business days. At chase_count 4, tag chase-exhausted, escalate to the practice manager, and create a task "Decide: escalate with the payer, appeal, or convert to self-pay conversation with the patient."
  2. Awaiting External Office (referring practice, imaging center, pharmacy): same cadence at 1, 3 and 6 business days, since these usually answer faster and matter more to the patient's timeline.
  3. Awaiting Clinician: wait 1 business day, then notify the clinician directly: "{{count}} items waiting on you. Oldest {{days}} days. {{queue_link}}." Repeat daily. At 3 business days, escalate to the practice manager, because a clinician queue that is backing up is a capacity problem the desk cannot fix.
  4. Awaiting Patient: wait 2 business days, then send "Hi {{contact.first_name}}, still need one thing from you to finish this off: {{requested_item_label}}. Reply here or call us on {{custom_values.front_desk}}." Repeat at 5 days and at 9 days, then stop. At chase_count 3, tag chase-exhausted and create a task "Close with a documented note or make one phone call." Three messages is the cap; a fourth is harassment and will produce an opt-out.
  5. Awaiting Supplier: weekly chase, no patient messaging, escalate to the practice manager at 3 chases.
  6. Unblock branch: when blocked_reason is cleared, move back to Assigned - Today, restart the SLA clock with the remaining window, and notify the owner: "Unblocked: {{task.task_type}}, record {{contact.id}}."

Stop and exit conditions: unblocked; chase cap reached; task closed with a documented reason; regulatory_clock true, which is excluded entirely. Patient-facing chase messages use approved non-clinical labels and never name a condition, test, medication or specialty.

5. Recurring Operational Task Generator

Trigger: scheduled, by recurrence rule.

Actions in order:

  1. Daily 07:15: create Verify tomorrow's insurance eligibility; Confirm today's unconfirmed appointments; Clear the overnight voicemail queue; Clear the overnight fax drop; Check the shared inbox. Each with an owner derived from the shift calendar and a same-day due time.
  2. Daily 16:30: create Reconcile today's co-payments and Confirm tomorrow's interpreter and mobility-assist bookings.
  3. Weekly Monday 07:30: create Review authorizations expiring in 30 days; Review the referral-out log for items with no response; Audit the waitlist for stale entries.
  4. Weekly Friday 15:00: create Review every open item over 10 days old with the front-desk lead.
  5. Monthly first business day: create Reconcile outstanding records requests against the regulated log with the privacy officer; Review opt-out and bounce lists; Verify every staff account on the board still belongs to a current employee.
  6. Any recurring task not completed by end of day is carried by workflow 6 and counted separately in the weekly report. Recurring tasks that are chronically carried are either unnecessary or under-resourced. The report is what tells you which.

Stop and exit conditions: none; these regenerate. Suppress generation on practice closure days read from the shift calendar, so the board does not fill with phantom work over a holiday.

6. Shift Handoff and End-of-Day Sweep

Trigger: scheduled at each shift boundary read from the Front Desk Shift Calendar, plus a closing sweep 30 minutes before close.

Actions in order:

  1. Compile the handoff: every item in Assigned - Today not completed, split by first-touched and never-touched; everything in Escalated; every blocked item whose next patient update is due today or overdue; every item in Inbox.
  2. Post the handoff to the front desk's internal channel and email it to the incoming and outgoing coordinators. Task types, due times, record identifiers and owner names only. No clinical content in a handoff that lands in a chat tool.
  3. Reassign carried items to the incoming coordinator, tag them handoff-carried, and preserve the original owner in a note so the weekly report can see who started what.
  4. Create the Shift Handoff Confirmation task on the incoming coordinator, due 15 minutes after shift start. If it is not submitted within 30 minutes, notify the front-desk lead. Handoffs that are not acknowledged are handoffs that did not happen.
  5. Closing sweep: force-assign everything still in Inbox to the closing coordinator; list every never-touched item from today by owner in the manager's evening summary; surface every item in Waiting on Patient with no patient contact in 5 days for a close-or-chase decision; and enable the after-hours SMS auto-reply.
  6. Branch: if more than the practice's agreed threshold of items are carried in one day, add "ACTION: desk was underwater today: review staffing or intake volume" to the manager's summary. One bad day is noise; the same line three days running is a staffing finding.

Stop and exit conditions: handoff acknowledged; practice closed. Regulated items appear on the handoff as a count with a pointer to the regulated pipeline, never with their content.

7. Reopen Detection and Loop-Closure Check

Trigger: inbound patient message, call or form on a contact with a task closed in the last 14 days.

Conditions and branches:

  1. Match the new contact against recently closed tasks by task_type and keyword. If it corresponds to one, create a new task, tag it reopened, link it to the closed task, and assign it to the original owner so the person who closed it sees the consequence.
  2. Notify the front-desk lead: "Reopened: {{task.task_type}}, closed {{days}} days ago, record {{contact.id}}."
  3. Set priority to Same Day regardless of the type's default. A reopen is a failure the patient has already paid for in time.
  4. Send the patient "Sorry, {{contact.first_name}}, that should have been finished. I have put it back with {{task.owner_first_name}} and you will hear from us today."
  5. Loop-closure sweep, weekly: query every task closed in the last 7 days where patient_informed_at is earlier than completed_at. That is, the work finished but nobody told the patient. Create a task per item: "Close the loop: tell the patient this is done." This is the single most common failure on a front desk board and the cheapest to fix.

Stop and exit conditions: reopened task completed; no match found, in which case the item flows through workflow 1 as new. Reopen count is a quality metric, not a disciplinary one; report it by task type first and by owner second.

8. Daily Queue Report and Weekly Throughput Rollup

Trigger: scheduled daily 07:00 and 17:45, plus Monday 07:30.

Actions in order:

  1. Morning report to every coordinator on shift and the front-desk lead: your items due today, your items overdue, your blocked items needing a chase today, and the count still in Inbox. Ordered as a work list, not a dashboard.
  2. Evening report to the front-desk lead and practice manager: created today, closed today, carried, never-touched by owner, SLA breaches by type, escalations opened, reopens, and the oldest open item on the board with its age in days.
  3. Branch: if any item is older than 14 days and not regulated or blocked, add "ACTION: this is abandoned: close it or own it" and name it.
  4. Branch: if any owner has more than the agreed cap of open items in Assigned - Today, add "ACTION: redistribute {{owner}}'s queue". An overloaded owner is how a board silently stops working.
  5. Monday rollup to the practice manager: volume by task_type and source_channel; median and 90th-percentile first-touch time; median cycle time by type; SLA breach rate by type and by owner; chase-exhausted count by external_party, which tells you which payer or office is the actual bottleneck; reopen rate; recurring tasks carried; and the age distribution of everything still open.
  6. Create a task on the practice manager: "Pick the one task type with the worst breach rate and change its SLA, its owner, or its process. Record which." A report nobody acts on is a report worth canceling.

Stop and exit conditions: none. All reports carry aggregate figures and record identifiers only; no clinical detail travels in a routine internal report.

05

What changes

The work becomes visible, which changes who can do it. Any coordinator can pick up the board cold, because the queue is the memory instead of one person being the memory. A sick day stops being a crisis. A shift change stops being a cliff. The practice manager can see, for the first time, how much administrative work the desk is absorbing and where it jams, which is almost always one payer, one referring office, or one clinician's signature queue rather than anything the front desk controls.

Patients stop having to chase. The loop-closure sweep and the three-day status rule mean nobody has to call a third time to find out whether anything happened, and the duplicate branch means a second call updates an existing item instead of creating a parallel one that nobody reconciles. That alone removes a meaningful slice of inbound call volume, and inbound call volume is what stops the desk working the queue.

Metrics to watch:

  • Median and 90th-percentile first-touch time, by task type. First touch is the honest measure of whether the queue is being worked; cycle time is often dominated by external parties you do not control.
  • Median cycle time by task type, with blocked time separated out. Blocked time belongs to the payer, not the desk.
  • SLA breach rate by task type. Report by type before owner. A type that breaches across every owner has a broken SLA or a broken process.
  • Carried items per shift, and never-touched items per day. These two are the early warning for understaffing.
  • Reopen rate. The cleanest quality signal on the board.
  • Loop-closure gap: tasks completed where the patient was never told. Target zero.
  • Chase-exhausted count by external party. This is a negotiating tool with payers and referring offices as much as an internal metric.
  • Inbox dwell time: minutes from capture to assignment. If it is rising, the assignment rules or the shift calendar are out of date.
  • Volume by source channel. A rising share from SMS and the web form means the shift away from the phone is working.
  • Regulated-request timeliness against the practice's documented deadlines, reviewed with the privacy officer every month. Target one hundred percent, and treat any miss as an incident.
06

Before you start

Prerequisites

  • An agreed SLA table before anything is built. Every task type needs a response window in business hours, agreed by the people who have to meet it. If the practice will not commit to numbers, the board becomes a list rather than a queue, and lists do not get worked.
  • A named owner per task type, and a named deputy. Round-robin works for volume; it does not work for authorizations or records.
  • An accurate shift calendar, maintained. The assignment routing is only as good as the roster it reads.
  • Protected queue blocks on the schedule. If the only time to work the queue is between phone calls, the queue loses.
  • Agreement on what does not go on this board: clinical questions, triage, prescription decisions, and anything a clinician must judge. Draw that line in writing before go-live, because the board will attract everything if you let it.
  • The practice's existing documented procedures for records requests, amendment requests, complaints and subpoenas. The board tracks those clocks; it does not define them.

Integrations

  • Practice management system or EHR, at minimum for patient identity matching, so a task is attached to a record rather than a name typed into a box.
  • The monitored shared inbox, via email parsing, so email requests enter the queue instead of a personal folder.
  • Inbound fax to a document drop, where the practice still uses fax. Most authorization and referral traffic still arrives this way.
  • Phone system or call tracking, so abandoned and after-hours calls create Callback Request tasks automatically.
  • Google Calendar or Outlook for the shift calendar and the protected queue blocks.
  • Slack or Microsoft Teams for handoffs and alerts, only if the practice's own agreements cover that tool for patient information, and configured to carry identifiers rather than content either way.

Numbers and sending

  • Provision a dedicated front desk SMS number, two-way and monitored during opening hours, separate from the clinical line and separate from marketing.
  • Complete A2P 10DLC brand and campaign registration before go-live, registered as customer-care traffic with accurate sample messages: use the acknowledgement and status-update copy in this guide. Filtered acknowledgements produce exactly the repeat calls this build exists to eliminate.
  • Opt-out handling: STOP, STOPALL, UNSUBSCRIBE, CANCEL, END and QUIT all halt SMS immediately and write an opt-out tag. Critically, an opt-out must not silently stop the work. It should convert the task's patient-contact method to phone and create a call task, so the patient still gets their answer.
  • Quiet hours matched to opening hours, with an explicit after-hours auto-reply that names the clinical line and emergency services. Confirm the applicable state calling and texting windows with the practice's own counsel.
  • Authenticate the sending domain with SPF, DKIM and DMARC for the status-update emails.

Protected health information: operational practice

A task board is a place clinical detail collects by accident, because staff write what they are thinking. The design has to make the safe thing the easy thing. What follows is operational practice rather than legal advice; confirm what applies to your practice with its own compliance counsel or privacy officer.

  • Keep clinical content out of SMS and unencrypted email entirely. Patient-facing acknowledgements and status updates use approved non-clinical labels: "your request", "your paperwork", "your insurance question". Never the condition, the medication, the test, the specialty, or a clinic name that discloses a condition by itself. Audit your approved label list with the privacy officer for exactly that last case.
  • Minimum necessary, applied to task notes and internal alerts. A task note should say what has to happen next, not recite a chart. Internal notifications and handoffs carry task type, due time, owner and record identifier. The person who needs detail opens the record. Treat any chat tool as the least private place in the stack and write accordingly.
  • The contains_clinical_detail switch exists because some notes legitimately need it: a prescription relay, a lab chase. When true, restrict the note to the clinical-access role and block that note body from being templated into any outbound message. That second part matters: the most common accidental disclosure is an internal note merged into a patient text.
  • Intake forms must not invite clinical narratives. Use controlled lists, not free text, on the public Patient Request form, and state prominently that it is not for medical questions or emergencies and where to go instead. Patients will still sometimes write symptoms; the clinical screen in workflow 1 exists for that, and it must route to a human rather than reply.
  • Consent, captured and evidenced. Record consent for SMS and email with the date and the method, and keep operational consent separate from marketing consent. Treat a task-status text as patient communication, not marketing, and have counsel confirm how the practice should characterize and authorize it.
  • A signed business associate agreement must be in place with every vendor in the chain that creates, receives, maintains or transmits patient information for the practice: the platform, the SMS path, the email sender, the fax-to-document service, the shared inbox provider, any middleware such as Zapier or Make, the internal chat tool, the call-tracking or phone system, and any storage or analytics layer. Walk the diagram box by box before go-live. Where a box has no agreement, keep patient information out of it: send an identifier and a link, not content.
  • Regulated requests are ring-fenced by design. Records requests, amendment requests, accounting-of-disclosures requests, complaints and subpoenas carry statutory clocks and identity-verification requirements. They go on the separate pipeline, they are never auto-messaged, never auto-chased and never auto-closed, and the privacy officer is notified on arrival. Reconcile that pipeline against the practice's regulated log monthly.
  • Access control and audit. Named accounts only, no shared front desk login. The board's entire value depends on knowing who touched what and when. Two-factor authentication, role-based restriction so the desk cannot bulk-export contacts, and confirmation that the platform's audit log records views and changes. Agree retention periods for task records, notes and message transcripts with the privacy officer, and remember that a closed task's notes are still a record.
  • Staff offboarding is part of this build. When someone leaves, their open items must be reassigned and their account disabled the same day. The monthly recurring task in workflow 5 exists to catch what the offboarding checklist missed.

Scoping

The build itself is standard effort. The real work is the SLA table and the ownership map, which are practice decisions rather than platform configuration, and the number of intake channels you wire up. To scope it against your own desk volume, channel mix and staffing, book a call at bookings.appbo.io.

Field notes

Build it with us.

Every build on this page is something we configure, test and hand over with the SOPs your team needs to run it.

Book a call