A terminal-based research assistant for tracking scientific literature.
Higor queries Semantic Scholar for recent papers matching your research interests, uses an LLM to summarise and rank them by relevance, and presents everything in a scrollable terminal UI. It runs on top of Claude Code — no separate API key required.
This project is entirely vibe coded using Claude Code.
- Searches Semantic Scholar by topic keywords, recommendations, and citations of your own work
- Journal sweep: fetches all recent papers from your explicitly followed journals, not just those matching keywords
- LLM-powered summaries and impact-aware relevance ranking via Claude
- Automatic venue prestige: Claude scores each journal's standing once (cached); no impact-factor data to supply yourself. Preprints (arXiv, bioRxiv…) are treated neutrally, never penalised
- Tunable
impact_weightknob — decide how much venue prestige and citations shift the ranking - Agentic chat (press
c): ask about the current list, refine it in-session, run a new one-off search, or have Claude edit your profile. Searches and profile edits are proposed with an explanation and only run when you confirm (a/ "yes"); applied profile changes auto-refresh - Per-week result caching — instant reopen, press
rto force a refresh - Highlights papers that cite your own work
- Profile-driven: one-time onboarding saves
~/.higor/profile.toml
- Not a background agent. The base run is a fixed pipeline (search → rank → display). Chat can refine results, search, and edit your profile on request, but Higor does not act on its own or learn across runs.
- Bounded by Semantic Scholar. Search quality depends entirely on what S2 indexes and how it tags papers. Papers not in S2, papers with missing venue/author metadata, and papers from journals that S2 does not index will not appear. Some venues (e.g. certain Elsevier journals) have incomplete metadata in S2's free tier.
- Venue prestige is an LLM estimate. Impact scores come from Claude's judgement (cached in
~/.higor/journal_ranks.json), not a citation database. They're consistent and editable, but not official impact factors.
- Python 3.11+
- uv
- Claude Code installed and logged in
git clone https://github.com/gabrielepenazzi/higor.git
cd higor
uv syncuv run higorThe first run launches an interactive onboarding and saves your profile to
~/.higor/profile.toml. Subsequent runs load the profile and go straight to
the paper browser. Higor will fail at startup with a clear error if the
claude CLI is not found on PATH.
| Key | Action |
|---|---|
↑ ↓ |
Navigate paper list |
d |
Toggle full abstract for selected paper |
o |
Open paper URL in browser |
s |
Save paper to reading log |
c |
Open/close chat with Claude |
a |
Accept Claude's pending proposal (profile change or new search) |
e |
Edit profile (re-runs onboarding) |
r |
Force refresh (re-run pipeline) |
q |
Quit |
Edit ~/.higor/profile.toml directly at any time, or press e inside the UI
to re-run the guided onboarding.
Key fields:
[topics]
primary = ["density functional theory", "atomistic simulation"]
secondary = ["machine learning potentials"]
[search]
max_papers_per_week = 30
lookback_days = 7
impact_weight = 0.25 # 0 = ignore venue impact; higher = impact matters moreYou can also change impact_weight conversationally — just tell the chat
"make impact matter more" and apply the suggested change.
uv run pytest -vhigor/
cli.py — entry point, pipeline orchestration, loading spinner
tui.py — Textual terminal UI
pipeline.py — search → summarise → rank, per-week caching
search.py — Semantic Scholar search strategies (keyword, recommendations, citations, venue sweep)
backend.py — LLMBackend protocol + make_backend() factory
llm.py — rank_and_summarize (topical relevance + impact blend)
prestige.py — cached, LLM-derived venue prestige scores
claude_backend.py — ClaudeCodeBackend (shells out to claude CLI)
chat.py — multi-turn agentic chat with full paper/profile context
store.py — reading log (JsonStore)
profile.py — onboarding Q&A, TOML load/save
models.py — Pydantic data models
prompts/ — LLM prompt templates (plain Markdown)
tests/ — pytest test suite
MIT © 2025 Gabriele Penazzi — see LICENSE.
