How ashure333/thesis-recommendation-system works
PaperRec is a locally deployed academic-paper repository and recommendation system. Users import PDFs or BibTeX through the React interface; the API processes paper metadata, stores records and files, and exposes repository and personal-library operations. For recommendation searches, the API delegates to a search service that selects TF-IDF, S-BERT, and/or metadata scoring, then returns ranked results. The README documents additional capabilities including classification, validation, PDF discovery, evaluation, and index rebuilding. Some subsystem connections are based on README documentation because their source was not excerpted.
Main entry points: upload_paper.py Upload orchestration · api.py FastAPI routes · search_service.py Search orchestration · App.tsx React app
Components 26
Web interface
- React app
frontend/src/App.tsx - Repository UI
frontend/src/pages/repository/Repository.tsx - Upload UI
frontend/src/pages/repository/Upload.tsx - Search UI
frontend/src/pages/main/Search.tsx - Recommendations UI
frontend/src/pages/evaluation/Recommendations.tsx - HTTP client
frontend/src/api.ts
Paper ingestion
- Upload orchestration
app/services/upload_paper.py - BibTeX extraction
app/services/bib_extraction.py - PDF extraction
app/services/extraction.py - Classification
app/services/classification.py - Recommendation validation
app/services/validation.py - Prepared text
app/services/text_preparation.py - PDF discovery
app/services/pdf_finder.py
Repository state
- FastAPI routes
app/api.py - Paper files
app/services/storage.py - Repository queries
app/repositories/queries.py - SQLite records
app/database.py - Paper and user models
app/models/models.py
Recommendation
- Search orchestration
app/services/recommendation/search_service.py - Pipeline weights
app/services/recommendation/pipeline_config.py - TF-IDF scoring
app/services/recommendation/tfidf_pipeline.py - S-BERT scoring
app/services/recommendation/sbert_pipeline.py - Metadata scoring
app/services/recommendation/metadata_pipeline.py - Similarity utilities
app/services/recommendation/similarity.py
Other components
- Researcher
- Open-access sources
Connections 32
- Researcher → React app: uses
README.md - React app → Repository UI: routes to
frontend/src/App.tsx - React app → Upload UI: routes to
frontend/src/App.tsx - React app → Search UI: routes to
frontend/src/App.tsx - React app → Recommendations UI: routes to
frontend/src/App.tsx - Repository UI → HTTP client: requests
frontend/src/pages/repository/Repository.tsx - Upload UI → HTTP client: uploads
README.md - Search UI → HTTP client: requests
frontend/src/pages/main/Search.tsx - Recommendations UI → HTTP client: requests
frontend/src/pages/evaluation/Recommendations.tsx - HTTP client → FastAPI routes: HTTP calls
README.md - FastAPI routes → Upload orchestration: delegates
app/api.py - Upload orchestration → BibTeX extraction: extracts BibTeX
app/services/upload_paper.py - Upload orchestration → PDF extraction: extracts PDF
app/services/upload_paper.py - Upload orchestration → Classification: classifies
app/services/upload_paper.py - Upload orchestration → Recommendation validation: validates
app/services/upload_paper.py - Upload orchestration → Prepared text: prepares text
app/services/upload_paper.py - Upload orchestration → Paper files: stores files
app/services/upload_paper.py - FastAPI routes → PDF discovery: finds PDFs
app/api.py - PDF discovery → Open-access sources: searches sources
app/services/pdf_finder.py - FastAPI routes → Repository queries: queries records
app/api.py - Repository queries → Paper and user models: uses models
app/repositories/queries.py - FastAPI routes → SQLite records: uses session
app/api.py - SQLite records → Paper and user models: maps tables
app/database.py - FastAPI routes → Search orchestration: dispatches search
app/api.py - Search orchestration → Pipeline weights: gets weights
app/services/recommendation/search_service.py - Search orchestration → TF-IDF scoring: scores candidates
app/services/recommendation/search_service.py - Search orchestration → S-BERT scoring: scores candidates
app/services/recommendation/search_service.py - Search orchestration → Metadata scoring: scores candidates
app/services/recommendation/search_service.py - Search orchestration → Paper and user models: loads candidates
app/services/recommendation/search_service.py - TF-IDF scoring → Similarity utilities: uses cosine
app/services/recommendation/tfidf_pipeline.py - S-BERT scoring → Similarity utilities: uses cosine
app/services/recommendation/sbert_pipeline.py - Metadata scoring → Similarity utilities: uses cosine
app/services/recommendation/metadata_pipeline.py