Corpus Search — Critical Minerals PDF Corpus

SkillSearch

Semantic search over critical minerals PDF corpus — rare earth, lithium, cobalt, nickel supply chain, trade policy, extraction, and materials research via Pinecone

Available today. Use it from your connected AI after setup.

Connect ahel once, and every AI you use reads what you have installed.

Then ask your AI: use the Corpus Search — Critical Minerals PDF Corpus skill

What this skill tells your AI

The instructions your AI receives, as published by lamm-mit/scienceclaw in skills/corpus-search/SKILL.md and read by ahel’s review.

Semantic search over a local collection of critical minerals PDFs (USGS, UN Comtrade, World Bank, SEC, WTO, Mindat, MinCan reports). Documents are chunked, embedded with llama-text-embed-v2, and stored in a Pinecone index for fast similarity search.

Usage

Search the corpus:

python3 {baseDir}/scripts/search_corpus.py --query "rare earth separation techniques"

Filter by commodity:

python3 {baseDir}/scripts/search_corpus.py --query "supply chain risks" --commodity lithium

Filter by source organization:

python3 {baseDir}/scripts/search_corpus.py --query "trade flows" --source Comtrade

Reranked results (higher quality):

python3 {baseDir}/scripts/search_corpus.py --query "cobalt extraction" --rerank --top-k 20

JSON output:

python3 {baseDir}/scripts/search_corpus.py --query "graphite processing" --format json

Parameters

ParameterDescriptionDefault
--querySemantic search queryRequired
--commodityFilter by commodity keyword (e.g., lithium, cobalt, rare earth)-
--sourceFilter by source organization (e.g., USGS, Comtrade, SEC)-
--top-kNumber of results to retrieve10
--rerankEnable reranking with pinecone-rerank-v0false
--formatOutput format: summary, detailed, jsonsummary
--index-namePinecone index namescienceclaw-minerals-corpus

Ingestion

Before searching, ingest PDFs into the Pinecone index:

# Dry run — list PDFs that would be ingested:
python3 {baseDir}/scripts/ingest_corpus.py --corpus-dir ~/critical-minerals-data/ --dry-run

# Ingest all PDFs:
python3 {baseDir}/scripts/ingest_corpus.py --corpus-dir ~/critical-minerals-data/

# Force re-ingest (ignore manifest):
python3 {baseDir}/scripts/ingest_corpus.py --corpus-dir ~/critical-minerals-data/ --force-reingest

Ingestion Parameters

ParameterDescriptionDefault
--corpus-dirDirectory containing PDFs~/critical-minerals-data/
--index-namePinecone index namescienceclaw-minerals-corpus
--force-reingestRe-ingest all files, ignoring manifestfalse
--dry-runList files without ingestingfalse

Notes

  • Requires PINECONE_API_KEY environment variable
  • PDFs are chunked at ~600 tokens with 100-token overlap
  • Source organization is auto-detected from directory name (e.g., usgs/, sec/)
  • Commodity is auto-detected via keyword scanning
  • Incremental updates: only new or modified files are re-ingested (SHA-256 manifest)
  • Reranking uses pinecone-rerank-v0 for higher quality results at the cost of latency

Signals

GitHub stars
242
Forks
42
Last commit
Aug 2026
Advanced
Catalog kind
skill
Gateway key
corpus-search
Source
github.com/lamm-mit/scienceclaw