When to use
- Need to find papers in an OpenReview venue that match one or more ideas/topics.
Dependencies
embed-papersmust be installed and available inPATH.- Check with:
command -v embed-papers - Install with:
pip install embed-papers
- Check with:
- OpenReview must be reachable.
OPENAI_API_KEYis required to compute embeddings of the papers (cached) or the search intent (not cached).- Check with:
printenv OPENAI_API_KEY - If missing and embeddings are required: stop and tell the user how to set it (immediate stop).
- Check with:
Inputs from user
- Venue (one of):
venue_id(preferred), e.g.ICLR.cc/2024/Conference- OR
{conference, year}to derivevenue_idas{CONF}.cc/{YEAR}/Conference, e.g.NeurIPS,2025
- Search intent (one of):
query(string of ideas)- OR
examples(list of{title, abstract}objects)
- Optional:
top_k(default: 100) for retrieval breadth
CLI contract (how to interpret tool output)
- Success envelope:
{ ok: true, schema_version: "1", command, data } - Error envelope:
{ ok: false, schema_version: "1", command, error: { type, message } } - Always parse stdout as JSON.
- Treat any
ok=falseas a terminal error unless the error section below says otherwise.
HARD CONSTRAINT (TOOLS):
- Do NOT call Read/Glob/Grep on any cache/embedding files or directories (e.g. anything under .cache/ or any path containing "cache", "embedding", "paper", "atlas").
- Treat caches as opaque implementation details. Never inspect them “just to check”.
- If you need cache status, ONLY use
embed-papers warm-cacheand rely on its JSON stdout. - If a command outputs a cache path, DO NOT open it; proceed using the CLI utilities.
Pipeline
-
Resolve
venue_id- If the user gave
{conference, year}, build:{CONF}.cc/{YEAR}/Conference - If ambiguous, ask a single clarifying question (conference acronym + year).
- If the user gave
-
Crawl venue metadata (idempotent)
- Run:
embed-papers crawl --venue-id "<venue_id>" --skip-if-exists
- Record:
data.output_filedata.total
- Run:
-
Ensure embeddings are available (cache)
- Run:
embed-papers warm-cache --venue-id "<venue_id>"
- If this fails due to missing API key, stop and instruct the user to set
OPENAI_API_KEY. - This command also computes the embedding if no cache is found.
- You MUST NOT access the cache.
- You MUST use the package's provided utility.
- Run:
-
Search (choose based on user input)
- Query mode:
embed-papers search --venue-id "<venue_id>" --query "<query>" --top-k <top_k>
- Examples mode:
- If needed, write a temporary JSON file containing:
[{"title":"...","abstract":"..."}, ...]
- Then run:
embed-papers search --venue-id "<venue_id>" --examples-file "<tmp.json>" --top-k <top_k>
- If needed, write a temporary JSON file containing:
- Query mode:
-
Organize results (post-processing)
- Group primarily by
primary_area(if present). - Within groups, prefer papers with clear overlap to the query/examples.
- For each recommended paper, add agent judgment notes:
- why it matches
- what seems novel/different
- caveats (weak match, missing abstract, unclear claims, etc.)
- Group primarily by
Report requirements (Markdown only)
- Output is a Markdown report only (no raw JSON).
- Keep the final recommendation list short: 5-10 papers max.
- Do not output a full ranked list or appendix by default (only if the user asks).
What I'd start with
- Begin this section with a short, casual sentence (lowercase is fine).
- Example: "here's what i recommend you to read as a beginning."
- Then list 5-10 papers.
- Each item must include:
- Title (bold)
- OpenReview link
- 1-2 sentence rationale (fit + why it matters, use italic to emphasis)
How I organized it
- Briefly explain grouping logic and where judgment calls were applied.
- Note missing metadata (e.g., missing abstracts) when relevant.
Why these stand out
- Use informal labels in the narrative (no formal rubric), e.g.:
- "the obvious hits"
- "the surprisingly relevant ones"
- "the quirky but promising picks"
Error handling
NoPapersFoundError- Likely invalid
venue_id; suggest the pattern{CONF}.cc/{YEAR}/Conferenceand ask for the correct venue.
- Likely invalid
CacheMissRequiresApiKeyError- Instruct the user to set
OPENAI_API_KEYand retry.
- Instruct the user to set
OpenReviewRequestError/EmbeddingRequestError- Suggest retrying, reducing load (smaller
top_k), or trying later (rate limits / transient failures).
- Suggest retrying, reducing load (smaller