Logo Light

How to Build an Appointment Conflict Detector

Aug 28, 2026

Double bookings rarely happen because someone is careless — they happen because two people are updating the same schedule from two different tabs, and neither one can see what the other just typed. By the time anyone notices, a client is standing at the front desk for a slot that's already taken.

In this tutorial, we'll build an Appointment Conflict Detector — a table that automatically flags any appointment that overlaps with another one for the same staff member. No manual cross-checking, no double bookings slipping through.

Why this matters

A calendar full of appointments doesn't protect you from overlaps by itself — it just displays what was typed in. The protection comes from actively comparing every new appointment against everything else already on that staff member's schedule, which is exactly the kind of repetitive check a system should be doing instead of a person.


Table Columns

Here's what we're working with — an Appointment table holding the staff member, date, start time, and end time for each booking.

Appointment table columns showing Staff, Date, Start Time, and End Time fieldsAppointment table columns showing Staff, Date, Start Time, and End Time fields

Nothing fancy yet — just the raw facts of who's booked, when.


Step 1: Add Your Appointments

Add a handful of appointments across a couple of staff members, including at least one pair that deliberately overlaps.

Appointment table populated with sample bookings for Nadia Rahman and Tomás AlvarezAppointment table populated with sample bookings for Nadia Rahman and Tomás Alvarez

For this walkthrough, assume the following bookings for August 25, 2026:

  • Nadia Rahman — 10:00 to 11:00
  • Nadia Rahman — 10:30 to 11:30 (overlaps with the above)
  • Tomás Alvarez — 13:00 to 14:00
  • Tomás Alvarez — 14:00 to 15:00 (back-to-back, no overlap)

Right now, nothing on this table tells you that Nadia has two people expecting her attention at the same time. That's the gap we're closing.


Step 2: Flag Overlapping Appointments

Since a plain column can't be converted into Custom Logic after the fact, create a brand new column and set its type to Custom Logic from the start.

Adding a new Custom Logic column on the Appointment tableAdding a new Custom Logic column on the Appointment table

Describe the rule in plain language — if this appointment's time range overlaps with another appointment for the same staff member on the same date, mark it as "Conflict"; otherwise, mark it as "Clear."

Describing the logic to detect overlapping time ranges for the same staff memberDescribing the logic to detect overlapping time ranges for the same staff member

Confirm the clarification screen, checking that it correctly understood "overlap" as any shared time range, not just an exact match.

Clarification screen confirming the overlap comparison logic across appointments for the same staff memberClarification screen confirming the overlap comparison logic across appointments for the same staff member

Save it, and watch every row resolve immediately:

  • Nadia Rahman, 10:00–11:00 → Conflict
  • Nadia Rahman, 10:30–11:30 → Conflict
  • Tomás Alvarez, 13:00–14:00 → Clear
  • Tomás Alvarez, 14:00–15:00 → Clear

Appointment table showing Conflict Status column filled in for each bookingAppointment table showing Conflict Status column filled in for each booking

What just happened under the hood

Because this logic needs to compare a record against other records in the same table, Ambisius evaluates it as a trigger-based calculation — re-checked through on_add and on_update triggers whenever an appointment for that staff member is created or changed. That way, adding a new booking doesn't just flag itself; it can also flip an existing appointment's status if the new one now overlaps with it.


Step 3: Watch It Catch a New Conflict

Let's prove that last point. Add a new appointment for Tomás Alvarez at 13:30 to 14:30 — deliberately overlapping his existing 13:00–14:00 slot

Adding a new appointment for Tomás Alvarez that overlaps his existing 13 00 to 14 00 slotAdding a new appointment for Tomás Alvarez that overlaps his existing 13 00 to 14 00 slot

The moment it's saved, two rows update — not just the new one:

Tomás Alvarez 13:00–14:00 changes from Clear → Conflict
Tomás Alvarez 13:30–14:30 is created as Conflict

Both of Tomás Alvarez's overlapping appointments now flagged as ConflictBoth of Tomás Alvarez's overlapping appointments now flagged as Conflict

What this replaces

Catching this manually would mean opening Tomás's schedule, scanning every existing time slot against the new one, and doing that same check again for every staff member, every time someone books. Here, the moment an overlap is created, both sides of it are flagged — you'd have to go looking for a conflict to miss one.


Step 4: Build a View for the Front Desk

Knowing which appointments conflict is only useful if the front desk can see it without digging. Create a new view, filter where Conflict Status equals "Conflict," and save it as "Needs Rescheduling."

Saved filtered view named Needs Rescheduling showing only appointments flagged as ConflictSaved filtered view named Needs Rescheduling showing only appointments flagged as Conflict

Now only the overlapping bookings for Nadia and Tomás show up — nothing else clutters the list.

The wow moment

Share this view with front-desk staff, and the moment someone books an overlapping slot from any device, it lands in this list automatically. No one has to remember to check — the conflict announces itself.


Recap

  1. An Appointment table with Staff, Date, Start Time, and End Time
  2. A Custom Logic field comparing each appointment against others for the same staff member
  3. A live demonstration of a new booking flipping an existing appointment's status too
  4. A filtered view surfacing only the appointments that need rescheduling
What you had beforeWhat you have now
Manually scanning a staff member's day for overlapsEvery overlap flagged automatically, both sides
Conflicts discovered when a client shows upConflicts visible the moment they're created
One shared file with no way to isolate problemsA saved view showing exactly what needs fixing

This same comparison pattern extends beyond appointments — room bookings, equipment reservations, or shift schedules can all be checked for overlaps the same way, just by describing what "conflict" means for that context.

Try it yourself

This exact setup is available as a ready-made template. Duplicate it, explore it live, and make it yours in a few clicks.

Try the Live Preview

On this page

Related articles

Explore more product articles and best practices for teams building with Ambisius.

Still Using Spreadsheets?
You Should Try This.

Turn familiar spreadsheets into a structured system built for your business

Try Ambisius for Free

No commitment. No credit card required.

Logo Light

© 2026 Ambisius. All rights reserved.