An English-language web app for objective professor due diligence using public academic metadata.
The app is designed to answer a practical question:
What does the public research record actually show about this professor?
It combines:
- evidence-backed publication signals from OpenAlex
- author disambiguation and merged-profile handling for split OpenAlex identities
- multi-affiliation-aware institution matching so overlapping current and historical affiliations can be considered during identity resolution
- Google Scholar cross-checks when a configured Scholar proxy is available, with explicit
matched / blocked / unavailablestatus boundaries - official source discovery using ORCID, INSPIRE-HEP, DBLP, and verified institutional pages
- supplemental public-web source checks for Rate My Professors, ResearchGate, and Zotero, kept outside the core research-score path
- multidimensional scoring across influence, paper quality, output volume, publication cadence, field fit, and collaboration structure
- explicit coauthor identity evidence labels only when an external source exposes a current or latest-stage junior/student signal
- dynamic histograms for a single professor profile
- side-by-side comparison across multiple professors
- explicit source-boundary and caveat sections where metadata is not enough
This project works best as both:
GitHubfor code, methodology, transparency, and reproducibilityLive websitefor actual usage and a clean product demo
The recommended public setup is:
- keep the source code in a public GitHub repo
- deploy the site on Vercel or Netlify
- link the deployed demo from the GitHub README
- keep the scoring methodology and limitations documented in the repo
The app lets a user:
- search for a professor by name, research area, and institution hint
- merge split OpenAlex identities when the same professor appears under multiple close variants
- generate a research evidence dashboard with publication, collaboration, and source-boundary evidence
- add professors to a compare tray
- view multi-professor histograms and objective dimension comparisons
The dashboard scores:
InfluencePaper qualityOutput volumePublication cadenceField fitRepeat collaborationSenior-collab signalNetwork breadth
Important limitation:
Student status and advising quality cannot be inferred safely from publication metadata alone. The app therefore labels coauthors as explicit student or junior only when an external record exposes that career stage clearly; otherwise the label remains unverified.
This project should be framed as a decision-support tool, not a definitive public ranking system.
Recommended public posture:
- generate reports on demand instead of publishing a static leaderboard of all professors
- show sources and caveats near the scores
- avoid absolute or defamatory language
- make clear which claims are data-backed and which remain outside the verified source boundary
The enhanced version now uses a local Node server for:
- static file serving
- OpenAlex API proxying
- author identity merging
- Google Scholar proxy lookups when configured
- collaborator identity enrichment
- verified-source boundary discovery
Run:
cd /Users/powerofjinbo/Documents/New\ project
npm startThen open:
http://localhost:4173/
SEARCHAPI_API_KEYorGOOGLE_SCHOLAR_SEARCHAPI_KEYEnables structured Google Scholar profile lookup. Without one of these, the app still attempts a direct Scholar request and reports whether Google blocked the lookup from the current environment.
Run:
cd /Users/powerofjinbo/Documents/New\ project
node --testserver.mjs- local HTTP server, API routes, and static file servingindex.html- app shellsrc/app.css- visual design and dashboard stylessrc/app.mjs- API-driven rendering and comparison UIsrc/prof-evaluator.mjs- scoring model, evidence summary, and comparison helperssrc/author-merge.mjs- conservative merged-profile logic for split OpenAlex identitiessrc/supplemental-sources.mjs- supplemental public-web source checks for Rate My Professors, ResearchGate, and Zoterosrc/google-scholar.mjs- Google Scholar enrichment, provider handling, and direct-access boundary reportingsrc/collaboration-insights.mjs- coauthor-network analysissrc/inspire-evidence.mjs- explicit collaborator identity evidence via INSPIRE-HEPsrc/web-enrichment.mjs- verified institutional-source discovery and page extractiontests/prof-evaluator.test.mjs- evaluator teststests/author-merge.test.mjs- author merge teststests/google-scholar.test.mjs- Google Scholar enrichment teststests/supplemental-sources.test.mjs- supplemental public-web source teststests/collaboration-insights.test.mjs- collaboration evidence teststests/web-enrichment.test.mjs- website enrichment parsing tests
Only appropriate for the older client-only version.
Better if you later add:
- response caching
- server-side caching
- richer comparison datasets
- usage analytics or saved reports
The current architecture already expects a server process, so Vercel, Netlify Functions, or a small Node host is now the right deployment direction.
- improve merged-author precision with more institution-aware heuristics
- add more structured external sources beyond INSPIRE for non-HEP fields
- cache professor snapshots server-side for faster comparisons
- add exportable report links
- add query-consistent benchmark sets inside a single department or field