diff --git a/mcp-server/src/legal_mcp/config.py b/mcp-server/src/legal_mcp/config.py index daf4158..4ba868c 100644 --- a/mcp-server/src/legal_mcp/config.py +++ b/mcp-server/src/legal_mcp/config.py @@ -286,7 +286,12 @@ LESSON_SYNTH_MODEL = os.environ.get("LESSON_SYNTH_MODEL", HALACHA_EXTRACT_MODEL) LESSON_SYNTH_EFFORT = os.environ.get("LESSON_SYNTH_EFFORT", "high") LESSON_SYNTH_DRIFT_FLOOR = float(os.environ.get("LESSON_SYNTH_DRIFT_FLOOR", "0.80")) # Cosine floor for two lessons to land in the same cluster (greedy, within shard). -LESSON_SYNTH_CLUSTER_THRESHOLD = float(os.environ.get("LESSON_SYNTH_CLUSTER_THRESHOLD", "0.82")) +# Tuned empirically (#158 dry-run, 81 lessons): the lessons are diverse (median +# pairwise cosine ~0.48, max ~0.72), so 0.82 merged nothing. 0.68 captures the real +# near-duplicates (5 faithful clusters across rishuy+betterment, all clearing the +# 0.80 drift gate) without merging weakly-related lessons; the drift gate is the +# quality backstop below this. +LESSON_SYNTH_CLUSTER_THRESHOLD = float(os.environ.get("LESSON_SYNTH_CLUSTER_THRESHOLD", "0.68")) # Mistral OCR (fallback for scanned PDFs — replaces Google Cloud Vision) MISTRAL_API_KEY = os.environ.get("MISTRAL_API_KEY", "")