The correct way to filter on relationship existence would be using whereHas. Adding where clauses to relationships does not always work as you might expect them to.
Here's a quick stab at fixing your problem (bit rushed and untested, but hopefully it'll nudge you in the right direction):
public function scopeHasNewApplications($query, $date)
{
return $query->whereHas('applications', function($query) use($date)
{
$query->whereDate('applications_pivot.created_at', '>=', $date);
}
}
//usage:
$jobs = Jobs::hasNewApplications($date)->get();
I don't have time to go through redoing your logic for getting the date right now, sorry.