About This Project

Background, methodology, and current implementation direction for NewsLens.

Project Profile

James Vescovo

Computer Science Student at the University of Denver (Expected Graduation: May 2026)

Focused on machine learning, data science, and interfaces that make technical analysis easier to inspect. NewsLens combines local sentiment experiments with a read-only AI news workflow driven by an external RSS pipeline.

PythonMachine LearningRSS PipelinesData Visualization

Project History

Phase 1 Initial Research and Model Development

Explored sentiment analysis approaches, comparing VADER with machine learning classifiers such as Naive Bayes and SVM. Built the first local models and established baseline metrics using labeled training data.

Phase 2 Model Evaluation and Comparison

Implemented evaluation workflows for accuracy, precision, recall, and F1 score so local models could be compared consistently across corpora.

Phase 3 Web Application Development

Built the Dash interface for model testing, evaluation views, and interactive visual summaries in one application.

Phase 4 News Feed Integration

Integrated an external RSS pipeline published through GitHub Actions, added OpenAI-powered rubric scoring, and built read-only digest, stats, source, tag, workflow, raw JSON, and snapshot views that refresh from upstream JSON without rebuilding the deployment image.

Phase 5 Comparative Analysis (Current)

Current direction is comparing traditional sentiment models against upstream rubric outputs so the app can show where local classifiers agree with or diverge from richer multi-lens news analysis.

Technical Stack

Backend and ML

  • Python
  • Scikit-Learn
  • NLTK and VADER
  • OpenAI API
  • Pandas and NumPy

Web Frameworks

  • Dash by Plotly (local reference surface)
  • FastAPI (analytics API)
  • Next.js (public dashboard)
  • Plotly.js charts

Deployment and Pipeline

  • DigitalOcean Droplet
  • GitHub Version Control
  • GitHub Actions RSS publishing
  • Systemd and Nginx runtime

Project Method

Connect