{# Bundle H: /settings — post-onboarding Advanced Settings panel. #} {% extends "base.html" %} {% block title %}Advanced Settings — lit-monitor{% endblock %} {% block content %}
{# E3/B8: every input carries data-path so the inline JS rebuilds the EXACT nested shape the per-section pydantic model (extra="forbid") expects. The write replaces the whole section, so a complete valid body is posted. #}

Ranking weights

Signal weights

Additive weight for the domain_context paragraph signal.
Max-cosine-to-nearest-cluster-centroid signal.
Shared MENTIONS entities between candidate and library.
Candidate cites / is cited by / EXTENDS library papers.
Shared author names (case-insensitive, deduped).

Domain filter

Candidates below the threshold move to the off-domain pool.
Cosine cutoff below which candidates are off-domain.
Fraction of digest slots always reserved for serendipity.

Semantic Scholar supplement cap

S2 relevance_score floor; below this → dropped.

Clustering

Master switch. When off the whole feature is a no-op.
Library must hold at least this many indexed papers.
Low end of the k-means K search range.
High end of the K search range (silhouette picks best K).
How often clusters are recomputed (e.g. nightly).

Collection priors (tier-3 opt-in)

Collection names are configured in extraction.yaml directly (list field, not editable here); current names are preserved on save.

Write-back (opt-in)

{# The collection_names list is not editable via this panel; carry the current value through so the replace-whole-section write doesn't drop it. Rendered as a hidden JSON blob the serializer parses back to a list. #}

Feedback & UI

Enables Save / Dismiss / 👍 / 👎 / Rate buttons. Default: off. Feedback events are stored for future active-learning. See the Insights page.
{% endblock %}