Home Dynamic QR Time Routing

Time Routing

The same printed code answers differently at breakfast and at midnight.

Café Luna, 12 Rue des Tournelles, Paris. Tuesday to Saturday, eight in the morning until eleven at night, closed Mondays. One laminated table tent per table, and four different things being served at four different times of day.

A table scans at

The rule engine

ScanEvery scan enters hereScheduleBreakfast · Lunch · Dinner · La…Breakfast · Lunch · Dinner · Late licence1BreakfastBreakfast2LunchLunch3DinnerDinner4Late licenceLate licenceEveryone elseEveryone elseBreakfast menuBreakfast menuexample.com/menu/breakfastexample.com/menu/breakfastLunch menuLunch menuexample.com/menu/lunchexample.com/menu/lunchDinner menuDinner menuexample.com/menu/dinnerexample.com/menu/dinnerLate listLate listexample.com/menu/lateexample.com/menu/lateHours and addressHours and addressexample.com/hoursexample.com/hours

What the scanner gets

Breakfast menu

Breakfast, because the window says so. Not because anybody edited the code this morning.

The windows pin the restaurant own timezone rather than the scanner one, which is what a venue with fixed opening hours wants: a guest whose phone is still set to another country still sees the menu actually being served. A range that crosses midnight wraps instead of splitting in two.

Get this wrong and a table sitting down at nine in the evening is reading the breakfast menu. The card is laminated; the rule is the only part still editable.

no subscription · pay per scan · nothing to cancel

Opening hours are local. A UTC schedule is not.

Anything with a service window has a destination that is only correct for part of the day, and the printed thing cannot tell. The detail that decides whether a schedule is usable is which clock it runs on.

  • The table tent points at a lunch menu at nine in the evening.
  • A support code sends people to live chat four hours after the desk closed.
  • A window that runs past midnight is two windows in most tools, and one of them is usually wrong.
  • A schedule that only understands UTC is permanently wrong for a local business by the size of its offset.

What Café Luna set up once, before the tents were laminated

  1. One window per service

    A window is a set of weekdays and a from-to time. Windows are ordered, and the first one containing the scan moment wins.

    { "days": [1,2,3,4,5], "from": "11:00", "to": "15:00" }
  2. Pin your clock, or use theirs

    Pin a timezone on the window and every scanner is judged against your clock; leave it unset and each scan is judged against the scanner own local time.

    { "tz": "Europe/Paris" }
  3. Outside every window, the default

    No window matching is the normal case for most of the day, and it resolves to your default. Blackout dates take a window out for specific calendar days.

What one laminated card covers across a week

  • A window per service schedule

    Breakfast, lunch, dinner, weekend brunch. Each is days plus hours, and they are matched in order.

  • Late licence in one window, not two

    A window from 23:00 to 01:00 wraps midnight rather than making you split it and get the seam wrong.

  • Your clock, when you have opening hours

    A venue pins its own timezone, so a guest whose phone is still set to another country sees the menu actually being served.

  • Their clock, when the campaign is worldwide

    Leave the timezone unset and everyone gets their own local morning, which is what a global launch wants.

  • Blackout dates for closures

    Take a recurring window out for a holiday without dismantling the schedule and rebuilding it afterwards.

  • Nothing to run at the switchover

    The rule is evaluated on the scan. No timer has to fire and nobody has to be awake.

Questions

Whose timezone is used, mine or the scanner one?

Whichever you choose. Pin a timezone on the window and every scan is judged against your clock, which is what a venue with fixed opening hours wants. Leave it unset and each scan is judged in the scanner own local time, which is what a worldwide campaign wants.

How do I handle a window that runs past midnight?

Write it as one window from the later time to the earlier one. A range whose start is after its end wraps midnight, so 23:00 to 01:00 is a single continuous window rather than two fragments.

Can I switch a code over at one exact moment?

Yes, and it is a different condition from a recurring window. A one-time switch compares the scan moment against a fixed instant and stays switched afterwards, which suits a launch or an embargo lift.

What about a public holiday inside a recurring window?

Add it as a blackout date on that window. The window stops applying on those calendar days and scans fall through to your default, without you rebuilding the schedule.

What happens between the windows?

The scan takes your default destination. For most codes that is the majority of the day, so the default deserves to be the page that is right when nothing special is happening.