If user has thousands of apps this is going to bug down memory...
why not just Eager load that?
$user = auth()->user()->loadCount([
'applications',
'applications as pending_count' => fn($q) =>
$q->where('status', ApplicationStatus::Pending),
'applications as hired_count' => fn($q) =>
$q->where('status', ApplicationStatus::Hired),
'applications as rejected_count' => fn($q) =>
$q->where('status', ApplicationStatus::Rejected),
]);
$stats = [
'total' =>
$user->applications_count,
'pending' =>
$user->pending_count,
'hired' =>
$user->hired_count,
'rejected' =>
$user->rejected_count,
];