My system does something quite similar.
afterCreate → user.status = 0 → Notification to Admin.
Admin confirms → afterUpdate → user.status = 1 and user.notificationsSent = 0
I have just one cronjob that checks each day if there are existing users with user.status 1 and user.notificationsSent < 3.
If true a notification to the user is sent and user.notificationsSent is updated to user.notificationsSent +1.
If the user logs in he is set to user.status 2 and doesn’t get another notification.
You would just need to check the updated_at-Date to archieve your “after x Weeks” demand.