Selected Work
The following case studies represent a sample of applied analytical work across consulting engagements, independent research projects, and industry projects. Each project applied rigorous quantitative methods to a concrete problem – from organizational strategy to market intelligence to NLP systems. Where applicable, detailed write-ups are linked below. Client-confidential engagements are described at the methodological level only.
Organizational Performance & Growth Strategy
Context: A U.S.-based professional education company sought to identify underperforming course offerings and develop a data-driven strategy for curriculum and marketing investment.
Approach: Developed interactive dashboards aggregating enrollment, revenue, and engagement data to surface portfolio-level performance patterns. Designed targeted advertising campaigns using social media analytics and web traffic data. Conducted market analysis to identify gaps in AI-focused curriculum.
Result: Informed strategic restructuring of the course portfolio and delivered an AI curriculum strategy that yielded five new course offerings. Marketing campaigns resulted in measurable enrollment increases.
Methods: RShiny dashboards, Google Analytics, social media analytics, performance benchmarking
Multilingual Survey Response Classification
Context: A Scandinavian research institution required automated classification of open-ended survey responses collected across six countries to enable large-scale comparative analysis.
Approach: Recent advances in NLP have made it possible to classify survey responses at scale, but the quality of the classifications is still a subject of debate. Therefore, I implemented an NLP classification pipeline using local LLMs (to ensure reproducibility and privacy) and validated automated outputs against expert-coded benchmarks using standard inter-rater reliability metrics.
Result: Achieved human-level classification accuracy (F1: 0.91–0.98) across all six languages. This is a significant improvement over manual classification, which is time-consuming and error-prone.
Methods: LLM inference, multilingual NLP, F1 validation, Python, R
RAG-Based Course Assistant for Higher Education
Context: Students need to navigate large volumes of course materials – lecture notes, readings, notebooks. Furthermore, they need to apply the concepts learned in the course to their own research projects. Many students resort to commercial chatbots like ChatGPT, but these often hallucinate or provide answers that are not grounded in the course material. Building a local RAG system that is tailored to the course material and can be used by students to answer their questions is a solution to this problem.
Approach: Designed and developed teachrag, an R package implementing a Retrieval-Augmented Generation (RAG) system that enables natural-language querying of existing course materials. The system converts documents to markdown, chunks them along headings, and indexes them in a DuckDB-backed vector store using local embeddings. A conversational RShiny interface allows students to ask questions and receive answers grounded strictly in course content, via either a local Ollama model or the Anthropic Claude API. The package ships with my own teaching materials pre-installed and supports custom document ingestion, making it readily adaptable by other instructors.
Result: Deployed for students in a graduate Computational Social Science course. Packaged and released as an open-source R package to make the approach reproducible and accessible to educators beyond my own courses.
Methods: RAG architecture, vector search, local LLM inference, RShiny, R package development
Industrial Sector Classification & Certification Verification
Context: A European client required a clean, structured database of industrial companies categorized by sector, with ISO 50001 certification status verified at scale – a task too large for manual review alone.
Approach: Developed an LLM-based classification and verification pipeline combining regex-based pre-filtering, LLM inference for sector assignment, and structured quality-control workflows. Designed a hybrid automated/manual review process to maximize accuracy on high-stakes classification decisions.
Result: Delivered a quality-controlled, structured database ready for client decision-making. The pipeline reduced manual review burden while maintaining verification accuracy on certification status.
Methods: LLM pipelines, regex filtering, quality-control workflows, Python
GitHub: perplexicaR → · Client details otherwise confidential.
Five Niches, One Market: Mapping the Data Science Job Landscape
Context: Job titles in data science are notoriously inconsistent. Does the underlying structure, i.e., coherent role clusters with distinct skill profiles, actually exist? And if it does, do job seekers perceive and act on it?
Approach: Two complementary analyses. Employer side: Extract and normalize skill requirements from 3,400+ postings via embedding-based deduplication; build a TF-IDF weighted job × skill matrix; detect communities with Louvain; visualize with UMAP. Log-odds ratios identify the skills that distinguish each cluster. Applicant side: Treat each posting as its own data point (no title grouping), build a posting × applicant matrix, and let UMAP + HDBSCAN reveal structure from applicant behavior alone.
Result: Five distinct niches emerge from the skill data — Life Sciences Research, Environmental & Clinical Science, Computational Science, Applied Data Science, and ML & AI Engineering. But when you look at individual postings through applicant behavior, the clusters dissolve: the dominant axis is when the posting went live, not what role it described. Employers have carved out niches; job seekers treat the whole landscape as one undifferentiated market.
Methods: NLP, TF-IDF, HDBSCAN, Louvain, UMAP, log-odds, Spearman ρ, Python
Full write-up forthcoming.