This portfolio provides a snapshot of development work I've done professionally*, personally, and academically. Most development work centers around GenAI & ML workflows.
-
Languages: Python, R, SQL, HTML, JavaScript
-
Frontend & Backend Frameworks: React, FastAPI
-
AI/ML Frameworks: LangChain/LangGraph, HuggingFace Transformers
-
LLM Platforms: Claude, OpenAI, Llama
-
Infrastructure & Hosting: Docker, Ollama, Vercel, Railway
*Only includes contract work or takehome interview deliverables. Work done in fulltime roles (e.g. while data scientist at QuantumBlack) is not included in this portfolio for confidentiality reasons.
Last updated: 13 MAR 2026.
🆕 FDE Interview: Bank Infrastructure
🆕 FDE Interview: Churn Prevention Dashboard
Contract: Webscraping for Medical Marketing Campaign
Contract: Shopper Marketing ROI Optimization (MSDS Capstone)
QuantumBlack x Life Sciences Hackathon
Project: Exploring Company Earnings Calls Before & After COVID-19 (Exploratory Text Analytics)
Programming and Systems for Data Analysis (CS5010)
Foundations of Computer Science (CS5012)
Linear Models for Data Science (STAT6012)
Practice and Application of Data Science (DS6001)
Data Visualization and Analytics (DVA)
Data Science in Business (DSB)
Statistical Learning / Data Mining (DS6030)
Bayesian Machine Learning (DS6014)
Exploratory Text Analytics (DS5001)
Language types: Python, JavaScript
A full-stack banking application built as a take-home infrastructure exercise. FastAPI backend with SQLite, React frontend, JWT authentication, encrypted card storage, atomic transfers, and 123 automated tests. Live demo link
Language types: Python, JavaScript
Cleaned, transformed, and performed analysis (RFM K-means clustering) on an e-commerce transaction dataset to detect churn propensity. Wrapped pipeline into a FastAPI backend (hosted on Railway), and a React frontend (hosted on Vercel).
Language types: Python
Webscraped the names of 93K urologists, pulmunologists, and special infectious disease providers across the United States from doctor.webmd.com. Conducted fuzzy matching in order to match list of unknown emails to provider names. In order to preserve confidentiality, provider email list not included, but scraping script and fuzzy matching algorithm in repository script.
Language types: SQL, Python
A leading international consumer packaged goods (CPG) company asked our team (capstone project) to help with assessing the ROI of their shopper marketing strategies. They provided us access to their database, which totaled over 30M customer transactions and product marketing efforts. Our team extracted, cleaned, and aggregated this data prior to analysis. Based on pre-existing literature on retail sales forecasting, I chose to build a random forest model using walk-forward validation. My model ultimately outperformed our baseline/other competing models, and was accepted by our client for further development. We were able to use this model to determine effective vs. ineffective marketing strategies. Due to the proprietary nature of the data involved, this project notebook is selectively available by request - please message me at https://www.linkedin.com/in/nicholas-g-keeley/.
Repository: proprietary! To sign up for beta, please email n.g.keeley2@gmail.com.
Language types: Python
Agent that interacts with user via email to create and deliver a personalized weekend plan. Includes a cronjob scraper for passive event collection, event enrichment (e.g. geocodes for distance), interactive messages via email (using natural language), and ranking algorithm.
Language types: Python (via Jupyter notebook)
Ran online tutorial that leverages HF agentic framework to compare outputs of standard RAG against an "agentic RAG" (adjusts system prompts to optimize results). Tutorial can be found at this link: https://medium.com/the-ai-forum/build-an-agentic-rag-using-huggingface-transformer-agent-ec741f09ddcc.
Repository: None - isolated Jupyter Labs instance due to actual patient data
Language types: Python, SQL
Led a team of 4 in developing a predictive model for detecting rare disease (PNH) diagnosis on a database of 1M patients between 2017-2022. Included the following tasks:
- Translated medical research into 600+ dataframe features; used Regex to translate medical diagnosis and procedures codes into binary flags and frequency counts
- Used PySpark to stitch together multiple databases (procedures, diagnoses, patients, medical providers, pharmacy data, etc.) into usable timeseries dataframe
- Built model pipeline for training RandomForest and XGBoost classifiers using walk-forward validation
- Assisted with feature selection and hyperparameter tuning
Repository: In progress
Language types: Python, SQL, HTML
Teamed up with a group of friends to create a team optimization dashboard/product for Pokemon Showdown users. While development details are proprietary, I served as the lead backend developer for this project. Tasks accomplished include the following:
- Scraping opensource text, converting into cleaned data, and producing interactive visualizations
- Designing database schema, setting up cloud database, and integrating with both frontend/backend
- Building HTML pages with embedded payment services
- Troubleshooting hosting service and database updates
- Utilizing Flask and Selenium
Website (in progress) here: https://www.serapis.dev/ 08/06/2023 demo: https://www.youtube.com/watch?v=jh-vbAVWUtA
Project: "Cash, Credibility, and Conversion: The Influence of Synthetic Media on Investment Behavior"
Repository: In progress
Language types: Python
For the capstone project of the Schwarzman Scholars program, I empirically evaluated the influence of synthetic text on investment behavior (inspired by deepfakes and other forms of synthetic disinformation). I created two different survey versions in Chinese, embedding each with either a real earnings call transcript sample or a ChatGPT-generated one. Respondents were randomly exposed to either survey version and asked a series of questions. Data was compiled from the surveys, aggregated, and then analyzed via Welch t-tests. Semantic analysis (using a Chinese parser!) was conducted on qualitative responses. Results indicated that AI-generated financial text can significantly alter investor behavior, and even introduce more extreme "conversions" in opionion than their genuine counterparts. Full paper (Arxiv) here: https://arxiv.org/abs/2306.05033.
Language types: Python
For the capstone project of my Exploratory Text Analytics class, I chose to investigate how company earnings call language changed before/after the onset of the COVID-19 pandemic. I produced my own raw text dataset by scraping over 35K earnings calls publicly available on the Motley Fool's website, ultimately refining the corpus into a digital analytical edition that contained topic modeling, semantic algebra, PCA, agglomerative clustering, and more.
Language types: Python
This repository contains key assignments and projects for an introductory programming course in Python. Topics include object oriented programming, webscraping, data visualization, and pandas dataframe querying.
Language types: Python
This repository contains assignments and projects related to the fundamentals of relational database design, data structures, and algorithmic programminig. Topics include entity-relationship diagrams, graph networks, search algorithms, regular expressions, hash tables, database transactions, propositional logic, Big-O complexity, and the solutions for Nearest-Neighbor/Closest-Pair problems.
Language types: R
This repository contains assignments and projects for a course on basic statistics for data science. Course topics included single linear regression, multiple linear regression, logistic regression, transformation, ANOVA F-tests, stepwise/backwards/forwards model creation, and linearity assumptions.
Language types: Python, SQL
This repository contains assignments that involve loading, processing, and querying data along the "data pipeline." Data was accessed via tabular files, relational/NoDBMS databases, and APIs.
## Cursor query
pitch_cursor = winedb.cursor()
pitch_cursor.execute("SELECT title, artist, score FROM reviews WHERE score = 10")
response1 = pitch_cursor.fetchall()
df1=pd.DataFrame(response1)
df1
## Alt query
df2 = pd.read_sql_query("SELECT title, artist, score FROM reviews WHERE score = 10", winedb)
df2
## commit and close
winedb.commit()
winedb.close()
Language types: SQL
This repository contains assignments involving data visualizations via Tableau, as well as big data querying/predictive model generation using GoogleBigQuery.
Language types: Python
This repository contains several assignments and projects related to predictive modeling (using machine learning tecniques), data munging, and data visualization. For the final project, my team and I submitted a model to an expired Kaggle competition: the Microsoft Malware Classification Challenge.
Language types: R
This repository contains exams and assignments primarily involving hyperparameter tuning of statistical models. Additional topics include KNN models, model-based clustering/Kernel Density Estimation, association analysis, and validation techniques (e.g. OOB, k-fold, etc.). Note: each .Rmd file has an associated HTML file with a similar name.
Language types: Python
This repository contains assignments and projects relevant to Bayesian Machine Learning. Topics include practical applications of Bayes Theorem and conjugate analysis, Naive Bayes Classifiers and LDA/QDA Bayes Optimal Classifiers, Bayesian regression models, sampling methods (e.g. Gibbs Sampling, MCMC sampling, etc.), variational inference, Hidden Markov Models, pooled vs unpooled vs. hiearchical models, and an implementation of autoencoder variational Bayes to topic modeling. Note: many of these notebooks were produced on a remote operating system with pymc3 pre-installed. This package is required to run many of the sampling methods used, and is challenging to install on many computers.
Language types: Python
This repository contains the assignments and projects related to a Deep Learning course. Topics included the architectures of Convolutional Neural Networks (CNNs), construction of CNNs from scratch and via Tensorflow Keras, the creation of recurrent neural networks, the application of transfer learning, and the detection of GAN-generated satellite images. Also, all assignment were run in GoogleCollabPro to reduce runtime duration/RAM maxout.
Language types: Python
This repository contains assignments and projects associated with exploratory text analytics. Topics include manual text cleansing/OHCO chunking using regex, parts of speech annotation, term-frequency analysis, n-gram analysis, agglomerative clustering, principal components analysis, topic modeling, and semantic algebra through word embeddings. For sentiment analysis-related content covered in class, please see https://github.com/nkeeley/Exploring-Company-Earnings-Calls.


















