{% extends "base.html" %} {% from "_help.html" import info %} {% from "_job_status.html" import job_status %} {% block title %}Briefs — Paperful{% endblock %} {% block body_attrs %}{% if poll_run %} data-poll-run="{{ poll_run }}"{% endif %}{% endblock %} {% block content %}
{{ message }} Summaries are grounded in local PDF text. Synthesize then folds those notes into a collection review. Both follow the collection chip.
{% if flags.remote_llm %}Remote LLM — PDF or summary text may leave this machine.
{% endif %}Scope: {% if prefs.collection %}{{ prefs.collection }}{% else %}entire library{% endif %}
{% if flags.llm_on %}Write a grounded summary of each PDF in scope. Dest chooses disk, a Zotero child note, or both. Force regenerates papers that already have a summary.
{{ job_status(summarize_result, 'Summarize') }} {% if summarize_result.queued is defined %}Last run: {{ summarize_result.summarized }} summarized · {{ summarize_result.skipped }} skipped · {{ summarize_result.failed }} failed · {{ summarize_result.not_reached }} not reached ({{ summarize_result.dest }})
{% endif %} {% if summaries %}Build a literature-review report from summaries already on disk. Dry-run shows source counts and the chunk plan without calling the model. Write report spends tokens.
{% if synth_via and error %}{% endif %} {% if synthesize_result.status == 'queued' or synthesize_result.status == 'running' %}{% if synthesize_result.args.dry_run %}Dry-run{% else %}Write report{% endif %} {{ synthesize_result.status }}…
{% elif synthesize_result.skip_plain %}{{ synthesize_result.skip_plain }}
{% elif synthesize_result.slug %}{% if synthesize_result.dry_run %}Dry-run{% else %}Report{% endif %} {% if synthesize_result.dry_run or synthesize_result.args.dest == 'zotero' %} {{ synthesize_result.slug }} {% else %} {{ synthesize_result.slug }} {% endif %}: disk {{ synthesize_result.sources_disk }} · notes {{ synthesize_result.sources_note }} · missing {{ synthesize_result.missing }}{% if synthesize_result.chunks %} · chunks {{ synthesize_result.chunks }}{% endif %}
{% elif synthesize_result.error %} {% endif %} {% if reports %}