JARVIS Research OS - AI-Powered Systematic Literature Review Assistant
Project description
JARVIS Research OS
AI-Powered Research Operating System for Systematic Literature Reviews
JARVIS Research OS is a local-first, AI-powered research assistant that helps researchers conduct systematic literature reviews with evidence grading, citation analysis, and contradiction detection.
Release Status
- Current release target:
v1.0.0
✨ Features
Phase 1: Local-First Foundation
- Hybrid Search: Sentence Transformers + BM25 with RRF fusion
- Offline Mode: Network detection and graceful degradation
- Free APIs: arXiv, Crossref, Unpaywall integration
Phase 2: Differentiation Features
- Evidence Grading: CEBM evidence level classification (1a-5)
- Citation Analysis: Support/Contrast/Mention stance classification
- Contradiction Detection: Negation, antonym, and quantitative contradiction detection
- PRISMA Diagrams: PRISMA 2020 flow diagram generation (Mermaid/SVG)
- Paper Scoring: Comprehensive quality scoring with multiple signals
- Active Learning: Efficient screening with uncertainty sampling
Phase 3: Ecosystem
- MCP Hub: External search servers (PubMed/Semantic Scholar/OpenAlex)
- Browser Agent: Safe browser automation with security policy
- Skills System: Task-specific workflows via
SKILL.md - Multi-Agent Orchestrator: Parallel agents + approval flow
- Plugin System: Extensible architecture
- Zotero Integration: Reference management
- Export Formats: RIS, BibTeX, Markdown
🚀 Quick Start
Installation
# Clone repository
git clone https://github.com/kaneko-ai/jarvis-ml-pipeline.git
cd jarvis-ml-pipeline
# Install with uv (recommended)
uv sync
# Or with pip
pip install -e .
Basic Usage
from jarvis_core.evidence import grade_evidence
from jarvis_core.citation import extract_citation_contexts, classify_citation_stance
from jarvis_core.contradiction import Claim, ContradictionDetector
# Grade evidence level
grade = grade_evidence(
title="A randomized controlled trial...",
abstract="Methods: We conducted a double-blind RCT..."
)
print(f"Evidence Level: {grade.level.value} ({grade.level.description})")
# Analyze citations
contexts = extract_citation_contexts(text, paper_id="paper_A")
for ctx in contexts:
stance = classify_citation_stance(ctx.get_full_context())
print(f"Citation to {ctx.cited_paper_id}: {stance.stance.value}")
# Detect contradictions
detector = ContradictionDetector()
claim_a = Claim(claim_id="1", text="Drug X increases survival", paper_id="A")
claim_b = Claim(claim_id="2", text="Drug X decreases survival", paper_id="B")
result = detector.detect(claim_a, claim_b)
print(f"Contradiction: {result.is_contradictory}")
CLI Usage
# Search papers
jarvis search "machine learning cancer diagnosis"
# Run full pipeline
jarvis run --config pipeline.yaml
# Generate PRISMA diagram
jarvis prisma --output prisma_flow.svg
MCP Hub Example
# Register MCP servers and list tools
jarvis mcp list --config configs/mcp_config.json
# Invoke MCP tool
jarvis mcp invoke search_pubmed --params '{"query": "cancer immunotherapy"}'
Browser Agent Example
from jarvis_core.browser.subagent import BrowserSubagent
from jarvis_core.browser.schema import SecurityPolicy
policy = SecurityPolicy(url_allow_list=["pubmed.ncbi.nlm.nih.gov"])
agent = BrowserSubagent(security_policy=policy, headless=True)
Skills System Example
# List skills and show details
jarvis skills list
jarvis skills show MCP
📦 Core Modules
| Module | Description |
|---|---|
embeddings/ |
Sentence Transformers, BM25, Hybrid search |
network/ |
Network detection, offline mode |
sources/ |
arXiv, Crossref, Unpaywall clients |
evidence/ |
CEBM evidence grading |
citation/ |
Citation context and stance analysis |
contradiction/ |
Claim normalization and contradiction detection |
prisma/ |
PRISMA 2020 flow diagram generation |
paper_scoring/ |
Paper quality scoring |
active_learning/ |
Active learning for efficient screening |
🧪 Testing
# Run all tests
uv run pytest
# Run specific module tests
uv run pytest tests/test_evidence_grading.py -v
# Run with coverage
uv run pytest --cov=jarvis_core
📖 Documentation
🔧 Configuration
Create config.yaml:
search:
default_sources:
- pubmed
- arxiv
max_results: 100
embeddings:
model: all-MiniLM-L6-v2
device: auto
evidence:
use_llm: false
ensemble_strategy: weighted_average
offline:
enabled: true
sync_on_connect: true
📄 License
MIT License - see LICENSE for details.
🙏 Acknowledgments
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file jarvis_research_os-1.0.0.tar.gz.
File metadata
- Download URL: jarvis_research_os-1.0.0.tar.gz
- Upload date:
- Size: 1.4 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
327a3f019c26f7477369554a302a176a4eb2511cfc0a4f8992eaf232a0b3605a
|
|
| MD5 |
cc5f1bae0dba4ece211f321927e007aa
|
|
| BLAKE2b-256 |
fad4d4fb02034b75d28159fc71317bbd70f1d51873211bd5aa9b922eb94bbdef
|
File details
Details for the file jarvis_research_os-1.0.0-py3-none-any.whl.
File metadata
- Download URL: jarvis_research_os-1.0.0-py3-none-any.whl
- Upload date:
- Size: 1.3 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
40e9f22ae01c92406f6e82869747e44efbeb63241cd5ee9448d0e7bf3e9104d4
|
|
| MD5 |
6872f3c1cab847eeb6ccc8d1f5f0bb7d
|
|
| BLAKE2b-256 |
d87b0bd65a0a4255974c643b1e17b1bef88df3ca8f4da5fa80d86fc34e291392
|