Skip to content
Content
Agent

page1-validator

Sub-agent that validates whether a downloaded PDF matches the expected metadata (author, title, year). Anti-homonymy check on page 1. Invoke when a manual page 1 verification is needed on an acquired PDF, separate from the cascade's automatic validation.

From plugin
paper-trail
66 skills6 agents22 commands3 hooks

Claude Code

$ npx -y skills add roomi-fields/paper-trail --agent claude-code

Agent definition

page1-validator.md
name: page1-validator
description: Sub-agent that validates whether a downloaded PDF matches the expected metadata (author, title, year). Anti-homonymy check on page 1. Invoke when a manual page 1 verification is needed on an acquired PDF, separate from the cascade's automatic validation.
tools: [Bash, Read]

Sub-agent : page1-validator

Role

Verify that a PDF's page 1 matches an expected reference. This is the **core anti-homonymy guard** of the plugin :

  • Confirms the author surname appears on page 1
  • Confirms the title has ≥ 30 % keyword similarity with the expected

title

  • Confirms zero off-domain keywords are present (e.g., "spider" for a

Computer Science paper, "carcinoma" for a music paper)

The cascade invokes this validation automatically via `pipeline.cascade._save_and_validate`. This sub-agent is for **manual / explicit** validation when the user wants to recheck a specific PDF outside the cascade flow.

Input contract

pdf_path: /absolute/path/to/the.pdf
expected:
  author: "Surname Firstname"   # or just Surname
  title: "Full expected title"
  year: 2020                     # optional, used for cross-check

What this agent does

1. Read the PDF via `pdftotext "$pdf_path" -` (first page only via `-f 1 -l 1`) 2. Extract metadata from page 1 (author, title, year if visible) 3. Compute similarity scores :

  • **Author match** : surname is present (case-insensitive)
  • **Title similarity** : keyword overlap with expected, ratio ≥ 0.3
  • **Off-domain keywords** : zero of the domain-blacklist words

(e.g., {spider, arachnology, carcinoma, RNA, ...} for non-bio papers — depends on context) 4. Return verdict with explanation

Output contract

{
  "verdict": "ok" | "mismatch" | "unable_to_extract",
  "author_found": true | false,
  "title_similarity": 0.42,
  "off_domain_keywords": [],
  "page1_text_excerpt": "First 500 chars of page 1...",
  "reason": "human-readable explanation"
}

Verdicts :

  • `ok` : all 3 checks pass, PDF accepted as matching the ref
  • `mismatch` : at least 1 check fails — PDF should be quarantined,

ref transitioned to `blocked_human:title_mismatch` or `needs_reacquisition`

  • `unable_to_extract` : `pdftotext` produced < 50 chars on page 1

(probably a scan with no text layer) — ref should be transitioned to `awaiting_rtfm_ocr`

Underlying implementation

Delegates to `lib/validate_pdf_content.py::validate_pdf_against_ref` which encodes the canonical anti-homonymy rules of the plugin.

python -c "
from lib.validate_pdf_content import validate_pdf_against_ref
ok, reason = validate_pdf_against_ref('$pdf_path', expected_author='$author',
                                       expected_title='$title')
print('OK' if ok else f'KO: {reason}')
"

When NOT to invoke

  • During a cascade run : the validation is already automatic, no need

for the sub-agent

  • For purely semantic checks (claim correctness) : that's

`citation-receipts` / `claim-checker`

  • For metadata enrichment : that's the `researcher` sub-agent
Read more
@roomi-fields
Ships withpaper-trail

Anti-hallucination plugin for academic research in Claude Code. Create literature reviews and papers guaranteed without fabricated citations.

66 skills6 agents
Get the whole plugin

Stars on GitHub

Momentum

stars in total
6
Star history of roomi-fields/paper-trail on GitHub, a chart by star-history.com

Other agents on paper-trail.

cascade-runner

cascade-runner

Agent

Sub-agent that orchestrates the PDF acquisition cascade for a batch of refs. Delegates the actual work to the worker B CLI but…

citation-parser

citation-parser

Agent

Sub-agent that parses bibliographic sections and inline citations from SOTA / article text. Takes raw text (a section header +…

claim-checker

claim-checker

Agent

Sub-agent that audits a specific claim against the PDF cited. Invoked by citation-receipts skill for deep PDF↔claim verification.…

researcher

researcher

Agent

Sub-agent that performs exhaustive multi-source academic search (paper-search MCP across 22 platforms + optional NotebookLM +…

textbook-resolver

textbook-resolver

Agent

Sub-agent that decides what to do with incomplete textbook references in the registry. Takes a JSON list of candidates (refs with…

More agents from other plugins.

prompt-manager

prompt-manager

Agent

Agent for managing AI prompts on prompts.chat - search, save, improve, and organize your prompt library.

@gh-f@gh-fInstall Agent
humanize-diagnostician

humanize-diagnostician

Agent

정밀(strict) 모드 1단계 진단 에이전트. 글 전체를 한 번에 보고 "가장 지배적인 AI 티 패턴 3~6개"를 taxonomy ID와 함께 진단한다. 불안정한 span 열거(0↔18개로 요동) 대신 "무엇이 이 글을…

@epoko77-ai@epoko77-aiInstall Agent
blog-cluster-curator
Auto-invoked

blog-cluster-curator

Agent

Topic Clusters curator for the Claude Blog Brain. Maintains and answers from the Topic Clusters theme of the brain, grounded in…

@agricidaniel@agricidanielInstall Agent

Questions about page1-validator.

Which coding agents can use page1-validator?
page1-validator installs in Claude Code and Cursor: each loads subagents from .claude/agents, so copy the file there. Flowy's auto-invocation runs in Claude Code only.