Adding to that: your rollup reads crate_events with where created_at::date = current_date - 1, which is your local date, not the database's. If the scheduler runs in UTC and you are in a different offset, some mornings you roll up a window that is one hour short.
Store a day column computed once with an explicit zone:
(created_at at time zone 'Europe/Amsterdam')::dateand group on that. It also lets you index the column, which the cast in your where clause currently prevents.