Немного логики:
С помощью CRON запускаем задачу раз в сутки
В этой задаче получаем все модели подходящие под условия
Отправляем или саму модель (если нужна более гибкая работа с ними) в очередь или перебираем модели и отправляем письмо в очередь (мне кажется лучше первое, тк лучше 100 легких задач чем одна тяжелая, учитывая что даже простой vps потянет сотни тысяч задач в час)
В очереди выполняем то что надо с моделью.
Cron самостоятельно повторяет это раз в час.
Лучше прочитать документацию Laravel от начала и до конца будет понимание что он умеет. Все что я описал там есть.
laravel.su/docs/8.x