---
name: Venue Matching
slug: venue-matching
category: Writing
description: Venue Matching builds evidence-bound journal or conference shortlists for a paper after typesetting delivers the final handoff. It is used to match scope, article type, reach, OA/APC, indexing, deadline, and venue risk before a user makes the final choice.
github: "https://github.com/Light0305/Light-skills/tree/master/skills/light-venue-matching"
language: Python
stars: 544
forks: 69
install: "npx degit https://github.com/Light0305/Light-skills/tree/master/skills/light-venue-matching ~/.claude/skills/light-venue-matching"
installs_to: ~/.claude/skills/light-venue-matching
source_path: skills/light-venue-matching/SKILL.md
collection_size: 23
category_size: 1012
collection_url: "https://dirskills.com/collections/Light0305/Light-skills"
added: 2026-08-26T05:11:21.707Z
last_synced: 2026-08-26T05:11:21.707Z
canonical_url: "https://dirskills.com/skills/venue-matching"
---

# Venue Matching

Venue Matching builds evidence-bound journal or conference shortlists for a paper after typesetting delivers the final handoff. It is used to match scope, article type, reach, OA/APC, indexing, deadline, and venue risk before a user makes the final choice.

**Install:**

```bash
npx degit https://github.com/Light0305/Light-skills/tree/master/skills/light-venue-matching ~/.claude/skills/light-venue-matching
```

## README

# Venue matching · stage 12

Turn a delivered paper into an auditable venue decision. Read
`venue-resource-map.md` before a real run and
`references/workflow_contract.md` before producing or consuming JSON. Use
`references.md` to choose current sources. Start from
`templates/venue_input.json`; never start from model memory or a bundled venue
list.

## Non-negotiable boundaries

1. Consume typesetting's `venue-handoff.json`. Verify its PDF path/hash,
   `DELIVERED`, pages, page size, profile/source, compliance `PASS`, and zero
   critical findings. Preserve paper/figure/citation/typesetting provenance.
   Do not compile, reformat, inspect page boxes again, or treat stage-11
   `UNAVAILABLE` as compliance.
2. Consume paper-writing's manuscript/claim profile through
   `manuscript_profile.claims_delivery` with a safe relative path, schema, and
   SHA-256. Do not change claims, methods, results, article type, data scale,
   or evidence strength to make a venue fit. Citation owns reference
   authenticity; figure owns visual honesty.
3. Treat acceptance rate, review time, APC/OA, indexing, quartile, and CFP
   deadline as high-velocity fields. Require a source checked on the run date.
   Otherwise emit `UNKNOWN`, `UNAVAILABLE`, or `STALE`; never use memory.
   `AVAILABLE` sources must carry an auditable locator (`url`, `query`,
   `locator`, or `path`), `checked_at`, `access_tier`, and `authority`.
   Official rules/fees/deadlines require official/publisher/venue authority;
   indexing and quartile require index/registry authority.
4. Treat 403/429/5xx, missing key/login/subscription, robots denial, and source
   outage as `UNAVAILABLE`. They do not mean “not indexed,” “not in DOAJ,”
   “free,” or “risky.”
5. Keep predatory/hijacked signals as visible warnings pending current,
   multi-source human review. DOAJ absence, high APC, fast review, unsolicited
   email, unusual volume, or one archived list is not a final verdict.
6. Never estimate an acceptance percentage or convert fit into acceptance
   probability. Use official current acceptance figures only with source/date;
   otherwise `acceptance_likelihood.status=UNKNOWN`.
7. Keep `decision_point=true` and `chosen=null` through candidate discovery,
   evidence collection, ranking, and delivery. Stop and ask the user to choose.
   Only an explicit `light.venue_user_selection.v1` may create a selected
   handoff. Record a direct choice as `actor=user`; if the user explicitly
   delegates the choice, preserve the authorization verbatim and use
   `actor=agent_with_user_authorization`, `decision_authority=user`. Never
   submit. Every selection artifact must include timezone-aware `selected_at`
   and the user's stated trade-off in `because`. Bind the choice to the exact
   reviewed packet with `decision_sha256`; a changed packet or any changed
   registry/evidence/fit artifact requires a new review and selection.
8. Do not invent `STAGE_GATES[12]`, `ROUTES[12]`, a confirmation checkpoint,
   critical findings, or a back-edge. Stage 12 is a user decision point with no
   configured gate or route edge.

## Workflow

### 1. Consume the real submission artifact

Require `light.typesetting_venue_handoff.v1`. Run prepare only when:

- `status=DELIVERED`;
- `compliance_status=PASS` and `critical_count=0`;
- the PDF exists and its SHA-256 matches;
- the compliance report exists and agrees on page facts.

If any condition fails, return an input error and route the author to stage 11
without creating a stage-12 critical finding.

### 2. Capture the author constraints

Record, without filling gaps yourself:

- research direction, article type, methods, data scale, claims/evidence;
- author stage, region, required indexes, OA requirement, APC ceiling;
- hard submission deadline and acceptable review duration;
- reach/match/safety preference and transfer strategy;
- unacceptable venues, publishers, business models, or risks.

Mark each constraint as hard or soft. A hard author constraint can exclude; a
soft preference changes order and explanation.
Bind the claim/evidence profile to the current paper-writing artifact via
`claims_delivery.path + sha256 + schema`; a hand-typed manuscript profile is
not enough for stage 12.

### 3. Discover for recall, then verify for precision

Keep the unpublished manuscript local. Before any public or externally
authenticated search, translate it into author-approved broad field/method-family
terms and preflight the outgoing queries:

```powershell
python scripts/query_privacy_gate.py `
  --input templates/query-privacy.example.json
```

Do not send the unpublished title, abstract, exact hypotheses, unique method or
dataset names, result sentences, tables, or figures to a public search engine.
The preflight report intentionally retains only query hashes and match categories.
Its PASS detects supplied phrase overlap; it cannot prove anonymity or rule out
re-identification.

Use the author's candidate list, current official CFPs, publisher finders, and
`venue_discovery.py`:

```powershell
python scripts/venue_discovery.py `
  --query "author-approved broad field and method family" --rows 50 --out discovery.json
```

Crossref container frequency only discovers candidates. It does not establish
scope, rank, indexing, safety, or quality. Record every discovery query,
endpoint, access tier, status, and check time. Deduplicate by ISSN plus official
name; keep title conflicts for manual review.

### 4. Build field-level evidence

For every candidate, collect separate envelopes for:

- official Aims & Scope and article types;
- length/page, figure/table, supplement, anonymity, template, and format rules;
- method/data fit and recent comparable articles;
- OA/APC, timing, indexing/quartile, and current CFP deadline;
- risk/hijack checks and unresolved identity conflicts.

Prefer official venue/publisher instructions for rules, authoritative indexes
for index membership, and registration metadata for identity. Keep JCR,
Scopus, Cabells, institutional lists, and paywalled fields unavailable unless
the author provides lawful access. Never scrape around access controls.

### 5. Prepare the canonical decision packet

```powershell
python scripts/venue_evidence_gate.py `
  --spec venue-evidence.json --report venue-evidence-findings.json `
  --json-out venue-evidence-report.json
python scripts/venue_workflow.py prepare `
  --input venue-input.json --out-dir venue-run --as-of YYYY-MM-DD
```

Run `venue_evidence_gate.py` first when candidate evidence has been collected. It consumes `light.venue_evidence.v2`
([`templates/venue-evidence.example.json`](templates/venue-evidence.example.json), intentionally fail-closed) and checks each candidate on independent axes:
scope, article type, audience, format, cost, timeline, trust, and strategy. Do not use a single aggregate score.
Dynamic fields must carry locator, `retrieved_at`, valid-at/source age, timezone when relevant, and `UNKNOWN/UNAVAILABLE/STALE`
when not verified. Hard blockers include article type not accepted, official scope mismatch, fee over a hard APC ceiling,
unknown fee under a hard ceiling, deadline missing timezone or already passed, missing timezone-aware `as_of`, future
`retrieved_at`, identity conflict/hijack, and strategy without evidence-backed `because`. DOAJ/TCS/source failures remain
unresolved evidence, not adverse evidence.

Compare real PDF pages/page size/profile facts with each candidate's current
rules. Explain scope, article type, method/data, paper strength, format, APC/OA,
timing, indexing, risk, and author constraints separately. An official
article-type/page mismatch or hard author constraint may exclude. A soft risk
signal may not.

Emit reach/match/safety tiers and a transfer order. Every option needs
`because` plus evidence source IDs. Unknown fields lower confidence; they do
not silently lower the venue or become adverse evidence.

### 6. Stop at the user decision

Show the decision packet and ask one concrete question: which candidate should
be selected? Present material trade-offs and unresolved fields. Do not write a
selection file without a direct user choice or explicit delegation. Never
select an excluded candidate.

Correct:

> Candidate A is reach because scope/method fit is high but the official bar is
> above the paper profile; APC is unavailable. Candidate B is match with an
> article-type fit and current zero-APC evidence. Which do you choose?

Incorrect:

> I selected Candidate A and updated the project.

### 7. Apply the user's choice

After the user names a candidate or explicitly delegates the choice, copy
`templates/user_selection.json`, record their stated reason or verbatim
authorization, copy `delivery.json.decision_sha256` into `decision_sha256`,
and run:

```powershell
python scripts/venue_workflow.py choose `
  --decision venue-run/decision-packet.json `
  --selection user-selection.json --out-dir selected
```

Hand `selected-venue-handoff.json` and
`review-rebuttal-context.json` to review-rebuttal. Hand
`author-submission-plan.json` to the author. Both consumers receive venue
rules, evidence IDs, unknowns, manuscript profile, and stage-11 provenance.
`selected_at` must be timezone-aware and not earlier than the decision packet's
`generated_at`. `choose` verifies the decision digest plus the SHA-256/schema
binding of candidate registry, source evidence, fit report, and unknowns; any
drift fails closed. Recheck volatile fields on submission day and stop before
portal submission.

## Script roles

- `venue_discovery.py`: current, recall-oriented Crossref discovery with honest
  network status.
- `query_privacy_gate.py`: local outgoing-query preflight; catches supplied
  private phrase/result-value overlap without echoing manuscript or query text.
- `venue_workflow.py`: canonical handoff verification, field-state
  normalization, fit/risk explanation, decision packet, and user-selection
  handoff.
- `venue_signal.py`: optional OpenAlex/DOAJ signal adapter; free OpenAlex key
  may be required and each failed signal stays unavailable.
- `venue_evidence_gate.py`: Round 3 multi-axis `venue_evidence.v2` gate; separates scope/type/cost/timeline/trust/strategy, forbids aggregate-score decisions, preserves UNKNOWN/UNAVAILABLE/STALE, and blocks hard constraint mismatches before the user decision packet.
- `venue_fit_rank.py`: legacy v1 candidate-card adapter; do not use it instead
  of the canonical registry.
- `venue_risk_gate.py`: optional legacy warn-only findings adapter; never a
  stage-12 critical gate.

## Delivery self-check

- [ ] Real typesetting PDF/hash/pages/page-size/profile/compliance consumed?
- [ ] Paper, citation, figure, and typesetting provenance preserved?
- [ ] Paper-writing claim/profile artifact bound by safe relative path, schema
      and SHA-256?
- [ ] Author direction/type/method/data/stage/region/index/OA/APC/deadline/
      speed/strategy/unacceptable constraints recorded?
- [ ] Public queries use approved broad terms and pass local privacy preflight?
- [ ] Every current field has source, query/URL, check date, access tier, and
      status?
- [ ] `venue_evidence_gate.py` ran on `venue_evidence.v2`, with no aggregate score, no premature `chosen`, and every candidate axis separately evidenced?
- [ ] Deadline timezone, fee category/APC ceiling, waiver, source age, DOAJ/TCS unavailable states, and identity/hijack conflicts are explicit?
- [ ] Unknown, 403/429/5xx, key/login, institutional, and paid fields remain
      `UNKNOWN/UNAVAILABLE/STALE` rather than adverse evidence?
- [ ] Official scope/type/length compared with real paper facts?
- [ ] Soft risk stays warning and predatory/hijacked verdict stays human?
- [ ] Reach/match/safety and transfer order each carry `because` and evidence?
- [ ] `decision_point=true`, `chosen=null`, and no selected handoff before the
      user's explicit choice?
- [ ] User selection binds the reviewed `decision-packet.json` SHA-256, and all
      four decision artifacts still match their bound hash/schema?
- [ ] No `STAGE_GATES[12]`, `ROUTES[12]`, critical finding, auto-choice, or
      submission invented?

## Honest capability boundary

Tiering, scope fit, APC/deadline filtering, risk warnings, author-fit, and
explainable recommendations are established peer mechanisms, not unique Light
features. Light's narrower implementation gain is canonical consumption of
the real stage-11 artifact, per-field provenance/access/status, honest failure
semantics, and an enforceable unchosen→user-selected artifact transition.
Round 3 adds an executable multi-axis evidence gate so a high scope score cannot hide article-type, fee, deadline, or trust blockers.
Keyword overlap and method/selectivity bands remain decision support, not an
editorial prediction. Paid/institutional sources stay optional.
