De-jargonize research. Find consensus. Map the science.
AbstractiFy is an open-source academic search and synthesis platform that transforms static literature lists into an interactive research intelligence workspace. It combines hybrid semantic search, structured extraction, and an interactive citation network to help researchers, students, and practitioners quickly understand consensus, compare study designs, and explore citation lineages — all without paywalls or proprietary lock-in.
Key points:
- Free and MIT-licensed: built to remain accessible to the research community.
- Hybrid ingestion: leverages Semantic Scholar and OpenAlex for broad coverage with local semantic re-ranking.
- Interactive analysis: consensus meter, study comparison matrix, citation graphs, and in-document assistants speed up literature triage and synthesis.
| Feature | AbstractiFy 🎓 | Google Scholar | Elicit | Consensus.ai |
|---|---|---|---|---|
| 100% Free & Open Source | ✅ MIT | ✅ Free | ❌ Paid Tier | ❌ Paid Tier |
| Consensus Meter | ✅ Free | ❌ No | ❌ No | 💰 Paid |
| Study Comparison Matrix | ✅ Free | ❌ No | 💰 Paid | 💰 Paid |
| Citation Network Graph | ✅ Interactive | ❌ No | ❌ No | ❌ No |
| Obsidian Graph & BibTeX Sync | ✅ Native | ❌ No | ❌ No | ❌ No |
| Local Vector Search (BYOK) | ✅ Free | ❌ No | ❌ No | ❌ No |
| PDF In-Doc Equation Explainer | ✅ Native | ❌ No | ❌ No | ❌ No |
AbstractiFy is a premium, zero-cost academic search and synthesis portal that transforms research exploration from static paper lists into an interactive, consensus-driven intelligence suite[...]
Dynamically queries Semantic Scholar and OpenAlex APIs across 200M+ publications. Performs real-time L2-normalized vector similarity re-ranking using local text embeddings from Google Gemi[...]
Classifies findings from the top relevant papers on a query assertion (e.g., "Does physical exercise decrease beta-amyloid accumulation?"). Visualises support vs. contradiction balances with a c[...]
Auto-extracts design parameters, core methodologies, primary outcomes, and limitations using structured JSON generation (Gemini schema parsing). Renders findings in an interactive spreadsheet form[...]
Visualises reference and citation lineages up to 2 degrees of depth using vis-network. Physics-stabilised, draggable HTML/JS network representations that colour-code papers by publication year[...]
Upload academic PDFs, perform local chunking and index mapping. A regex-based parser identifies LaTeX math equations ($/$$) and runs a structured breakdown to explain variables and mathematica[...]
Analyses how a paper is cited by others — classifying citation intent (supports, contradicts, extends, methodological) and extracting surrounding context for deeper understanding.
- Secure Background Mode: Runs with pre-configured server-side keys without exposing secrets to the client.
- Bring Your Own Key (BYOK): Input your custom Gemini API key securely in the frontend settings panel.
graph TD
User["User Browser"] -->|Search / Upload| FE["Frontend (Vanilla JS + CSS)"]
FE -->|API Requests| BF["Netlify Serverless Functions (TypeScript)"]
subgraph External_APIs["External APIs"]
SS["Semantic Scholar API"]
OA["OpenAlex API"]
GEM["Google Gemini API"]
end
BF --> SS
BF --> OA
BF --> GEM
FE -->|Vector Embeddings| EMBED["In-Memory Vector Search Index"]
FE -->|Graph Rendering| VIS["vis-network Interactive Graph"]
Abstractify/
├── public/ # Frontend (served as static files)
│ ├── index.html # Landing page + workspace UI
│ ├── app.js # Client-side controller (~34KB)
│ ├── styles.css # Custom styling
│ └── screenshots/ # App screenshots
│
├── netlify/functions/ # Serverless API layer (TypeScript)
│ ├── _utils.ts # Shared: API keys, Gemini client, types
│ ├── search.ts # Hybrid semantic search + re-ranking
│ ├── consensus.ts # Consensus Meter classification
│ ├── compare.ts # Study Comparison Matrix extraction
│ ├── citation-context.ts # Smart citation intent analysis
│ ├── network-graph.ts # Citation network builder
│ ├── pdf-upload.ts # PDF chunking handler
│ ├── pdf-chat.ts # In-document vector chat (RAG)
│ └── pdf-explain-math.ts # LaTeX equation explainer
│
├── research/ # AbstractiFy Research Intelligence Notebook
│ └── AbstractiFy_Research_Intelligence_System.ipynb
│
├── .github/ # GitHub automation & community health
│ ├── ISSUE_TEMPLATE/ # Structured YAML issue forms
│ │ ├── bug_report.yml # Bug report form
│ │ ├── feature_request.yml # Feature request form
│ │ ├── documentation.yml # Documentation improvement form
│ │ └── config.yml # Issue chooser settings
│ ├── workflows/ # GitHub Actions CI/CD
│ │ ├── ci.yml # Lint + Typecheck + Format pipeline
│ │ ├── stale.yml # Auto-close stale issues/PRs
│ │ └── release-drafter.yml # Automated release notes
│ ├── PULL_REQUEST_TEMPLATE.md # PR checklist template
│ ├── CODEOWNERS # Code review ownership
│ ├── FUNDING.yml # GitHub Sponsors config
│ ├── dependabot.yml # Dependency update automation
│ │ └── release-drafter.yml # Release drafter categories
│
├── .eslintrc.json # ESLint config
├── .prettierrc # Prettier config
├── .gitattributes # GitHub language detection
├── .env.example # Environment variable template
├── CONTRIBUTING.md # Contributor guide
├── CODE_OF_CONDUCT.md # Contributor Covenant v2.1
├── SECURITY.md # Vulnerability disclosure policy
├── CHANGELOG.md # Release history (Keep a Changelog)
├── LICENSE # MIT License
├── netlify.toml # Build config + security headers
├── package.json # Dependencies & scripts
└── tsconfig.json # TypeScript compiler options
- Node.js v18+
- Netlify CLI (
npm install -g netlify-cli) - A Google Gemini API key
# 1. Clone the repository
git clone https://github.com/vansh7nvc/Abstractify.git
cd Abstractify
# 2. Install dependencies
npm install
# 3. Configure environment
cp .env.example .env
# Edit .env and add your GEMINI_API_KEY
# 4. Start the dev server
netlify dev
# 5. Open http://localhost:8888| Command | Description |
|---|---|
npm run dev |
Start local Netlify dev server |
npm run validate |
Run typecheck + lint + format checks in one command |
npm run lint |
Run ESLint on serverless functions |
npm run lint:fix |
Auto-fix ESLint issues |
npm run format |
Format code with Prettier |
npm run format:check |
Check formatting without writing |
npm run typecheck |
TypeScript type checking |
Deploy to Netlify in a single command:
netlify deploy --prodImportant
Configure GEMINI_API_KEY in Netlify Site Settings → Environment variables so serverless functions can access the model in production without exposing the key on the client.
- Security headers enforced via
netlify.toml(X-Frame-Options,X-Content-Type-Options,Referrer-Policy,Permissions-Policy) - No client-side API key exposure in Secure Background Mode
- BYOK keys are sent via headers, never persisted server-side
- For vulnerability reports, see our Security Policy
Check out our public ROADMAP.md to track project progress across Phase 1 to Phase 4.
We welcome contributions from everyone! Whether it's fixing a typo, improving documentation, or building a new feature — every contribution matters.
- 📖 Read the Contributing Guide to get started
- 🎯 Browse 20 community issue specifications ready for open source contributors
- 🏷️ Look for
good first issuelabels - 💬 Read the Community Support Guide for help & FAQ
- 📋 Check the Code of Conduct
All notable changes are documented in the CHANGELOG, following the Keep a Changelog format.
Thank you to all our amazing open-source contributors! 💖
Want to see your avatar here? Check out our good first issue list and submit your first PR! 🚀
If you find AbstractiFy useful, consider giving it a ⭐ on GitHub — it helps the project grow!
This project is licensed under the MIT License.
Copyright © 2026 Vansh Sharma

