diff --git a/admin-compliance/app/sdk/onboarding-advisor/page.tsx b/admin-compliance/app/sdk/onboarding-advisor/page.tsx
index 33f848a8..a3932e43 100644
--- a/admin-compliance/app/sdk/onboarding-advisor/page.tsx
+++ b/admin-compliance/app/sdk/onboarding-advisor/page.tsx
@@ -96,6 +96,9 @@ export default function OnboardingAdvisorPage() {
} finally { setLoading(false) }
}
+ // auto-recompute when certifications / target / scanner signals change (no button click needed)
+ useEffect(() => { if (certs.length) run() }, [certs, target, findings]) // eslint-disable-line react-hooks/exhaustive-deps
+
return (
diff --git a/backend-compliance/compliance/onboarding/engine.py b/backend-compliance/compliance/onboarding/engine.py
index a226287c..5ad2a67f 100644
--- a/backend-compliance/compliance/onboarding/engine.py
+++ b/backend-compliance/compliance/onboarding/engine.py
@@ -143,8 +143,8 @@ def advisor_start(
next_best_questions=next_q, capability_delta=delta, top_measures=measures,
evidence_requests=evidence, unsupported_domains=unsupported,
completeness_summary=rep.completeness_summary,
- headline="%d Anforderungen erkannt · %d automatisch erkannt (Intake) · %d wahrscheinlich (Zertifikate) · %d zu klären"
- % (len(assess.coverage), len(auto_detected), len(probably), len(next_q)))
+ headline="%d von %d Anforderungen offen · %d automatisch erkannt (Intake) · %d wahrscheinlich (Zertifikate) · %d zu klären"
+ % (len(delta), len(assess.coverage), len(auto_detected), len(probably), len(next_q)))
def apply_answer(known_capabilities: Sequence[str], capability_id: str, answer: str) -> List[str]: