Nightshift: why Friday's gig is on Saturday — Building Products

 [Mischa Sigtermans](https://mischa.sigtermans.me)

  [ Thoughts ](https://mischa.sigtermans.me/thoughts) [ Books ](https://mischa.sigtermans.me/books) [ About ](https://mischa.sigtermans.me/about)     [← Thoughts](https://mischa.sigtermans.me/thoughts)   October 28, 2025  · Product

Nightshift: why Friday's gig is on Saturday
===========================================

Every generic calendar tool thinks in calendar days. The music industry thinks in nights. Here's why we built a Stagent feature called Nightshift.

A DJ plays a Friday night slot at a festival. Their set time is 02:00. Technically, that's Saturday. Culturally, contractually, and in every conversation anyone in the industry will ever have about that gig, it's Friday. The booking was for Friday, the promoter's lineup poster says Friday, the artist's schedule says Friday, and the invoice will say Friday. But the timestamp in the database says Saturday, and every generic calendar tool on the planet will put the gig on the wrong day.

This is a mismatch that's existed for as long as nightlife has existed. It's also the kind of problem that breaks every off-the-shelf scheduling product the first time you point it at a touring artist's calendar. We ran into it early at [Stagent](https://stagent.com), the artist management and booking platform I've been building for the last few years, and we eventually shipped a feature for it called Nightshift. I want to walk through what it does, why it needs to exist, and why nobody who hasn't lived in this industry would ever think to build it.

The mental model mismatch
-------------------------

The phrase you'll hear everywhere in the music industry is 'Friday's gig'. Not *'the set on May 5'* and not *'the 2 AM slot'*. Friday's gig. Friday is a night, and nights extend into the early morning of the next calendar day, and everybody accepts this without thinking about it. Promoters talk this way. Agents talk this way. Artists talk this way. It's the shared mental model of an entire industry. I call it the human clock. The one that doesn't roll over at midnight.

The shared mental model of every database is different. UTC doesn't care about your nightlife. [Carbon](https://carbon.nesbot.com) doesn't know that 3 AM is still Friday night in Berlin. A calendar widget grouping events by day will cheerfully put your 02:00 set on Saturday, and now your promoter's itinerary, your artist's travel schedule, your tax-relevant booking date, and your invoice line all disagree with each other by one day.

This is not a bug that a generic calendar can fix by adding a toggle. It's a fundamental mismatch between how the industry thinks and how computers sort time. The only place you can solve it is inside a piece of software that's opinionated about the industry it serves. That's the bet we made with Stagent, and that's where Nightshift came from.

The 7 AM rule
-------------

The core of Nightshift is one constant and one rule.

```
class Nightshift
{
    public const NIGHTSHIFT_CUTOFF_HOUR = 7;

    public static function isNightshiftHour($time): bool
    {
        return $time->hour >= 0 && $time->hour format('Y-m-d H:i:s')
)->addMinutes($this->duration);

```

Ugly, but right. Every other approach either stretched the set across DST or misreported the end time by an hour twice a year. The bug was specific, the fix was specific, and the only people who will ever notice it are the ones whose livelihood depends on Stagent's booking display matching the contract.

Why nobody else will build this
-------------------------------

The reason I wanted to write about Nightshift is that it's the purest example I have of why industry-specific software exists. Nightshift is not a feature Google Calendar will ever add. It's not a feature Cal.com will add. It's not a feature a generic booking SaaS will add. Not because they couldn't. Because the mental model of nightlife is invisible to anyone who hasn't lived inside it. You don't know to build Nightshift unless you've spent a Friday night watching an artist play to a room at 2 AM and then heard everyone, including yourself, call it 'Friday's set' the next morning.

The whole value of a vertical product is that it encodes a thousand small conventions like this. Each one is a constant, a SQL expression, a toggle, and a word the industry already uses. On their own, they're nothing. Together, they're the reason users choose a product built for them over a horizontal tool with more features.

Nightshift looks modest from the outside. A constant. A SQL expression. A pair of enum values. A toggle. Look at the code in isolation and you'd be forgiven for thinking it's a nice-to-have. It isn't. Every calendar view in Stagent sits on top of it. Every filter, every itinerary, every invoicing date range, every artist availability query, every weekly planning screen. Rip Nightshift out and the entire product stops making sense to its users within a single click. The feature looks small. The weight it carries is the whole thing.

That's the part of building vertical software I care about most. You find the three or four ideas that make the rest of the product legible to the people who actually use it, and you encode them so precisely that nobody ever has to think about them again. Nightshift is one of those. [Stagent](https://stagent.com) has a dozen more like it, all of them invisible to anyone who hasn't spent a weekend with a lineup on a poster. Together they're the reason the product still exists, and the reason nobody running a booking operation is going to swap it for a tool built by people who don't know what Friday night means.

 *thanks for reading*

Hi, I'm [Mischa](https://mischa.sigtermans.me/about). I've been *shipping products* and *building ventures* for over a decade. First exit at 25, second at 30. Now Partner &amp; CPO at [Ryde Ventures](https://ryde.ventures), an AI venture studio in Amsterdam. Currently shipping [Stagent](https://stagent.com) and [Onoma](https://askonoma.com). Based in Hong Kong. I [write](https://mischa.sigtermans.me/thoughts) about what I learn along the way. [More about me](https://mischa.sigtermans.me/about).

Keep reading: [Joining Ryde Ventures as partner and chief product officer](https://mischa.sigtermans.me/thought/joining-ryde-ventures-as-partner-and-chief-product-officer).

   [← Thoughts](https://mischa.sigtermans.me/thoughts)  Connect
-------

  [X](https://x.com/mischamartijn) [LinkedIn](https://linkedin.com/in/mischasigtermans) [GitHub](https://github.com/mischasigtermans)

 © 2026 · [RSS](feed:https://mischa.sigtermans.me/feed)
