Data Science

Data analytics projects โ€” still learning, still building.

Digit Recognizer (Kaggle MNIST)

Three convolutional neural networks built from scratch and tuned to 99.34% accuracy โ€” missing just 66 of 10,000 handwritten digits.

Built in Keras/TensorFlow across three progressively deeper architectures โ€” stacking Conv2D blocks with batch normalization and dropout, tuning learning rate schedules with EarlyStopping and ReduceLROnPlateau, and diagnosing what the model got wrong with a full misclassification breakdown.

PythonTensorFlow / KerasCNN architecture designBatch norm & dropout tuningModel evaluation

Opportunities to learn

  • Having trained CNNs from scratch here, a future project could start from a pretrained model and compare transfer learning against training from zero
  • Now that the misclassification-analysis workflow exists, the same diagnostic approach could be reused on a harder, noisier dataset

Greenwashing Risk Detector

Scores airline climate claims 0โ€“5 on how specific and verifiable they are โ€” not on whether they're true.

A screening model for greenwashing risk in corporate climate claims, built from 2025 sustainability and environmental performance reports from three major airlines. Each claim is scored against five credibility indicators โ€” a stated number, target year, baseline year, emissions scope, and progress evidence โ€” with only the indicators actually applicable to that type of claim counted, so a claim isn't penalized for missing a scope reference it was never expected to have. Claims that back up fewer of their applicable indicators score higher on a 0โ€“5 Greenwashing Risk Score. Built, documented, and presented using Python/pandas pipelines and Next.js/Recharts.

Python / pandasRule-based NLP scoringJupyter notebook cleanupNext.jsTypeScriptRecharts

Opportunities to learn

  • Having built a rule-based scoring pipeline here, a future project could compare it against an embeddings-based approach on the same claims
  • Now that the credibility-indicator framework works for airlines, the same scoring approach could be pointed at a completely different industry's disclosures

FSO Risk Explorer

8,348 risk factors pulled from 49 bank and insurer 10-K filings, then clustered into themes with no labeled training data.

Each company's "Item 1A. Risk Factors" section is scraped from SEC EDGAR, split into individual risk statements, vectorized with TF-IDF, and grouped into 12 clusters with K-means โ€” 6 of which turned out to be genuine, business-model-aligned risk themes (Bank Capital & Liquidity, Cybersecurity & Data, Regulatory & Privacy, and others), rediscovering the industry's risk taxonomy without any labeled training data. Built as a clean, documented, reproducible pipeline, plus a Next.js/Recharts dashboard for exploring the results by sub-sector and by company.

Python / pandasscikit-learn (TF-IDF, K-means)SEC EDGAR data pipelineJupyter notebook cleanupNext.jsTypeScriptRecharts

Opportunities to learn

  • Having built a TF-IDF + K-means clustering pipeline here, a future project could compare it against topic modeling (LDA) or embedding-based clustering on the same data
  • Now that the SEC EDGAR scraping pattern exists, it's reusable for pulling any other structured section out of a 10-K, not just risk factors