Experience without theory is blind, but theory without experience is mere intellectual play. — Immanuel Kant, German philosopher

Most of my work lives in research labs, but some of my favorite projects have come from the moments where an idea gets a deadline, a team, and a customer. It is in these moments, where a result has to hold up in front of judges and users rather than reviewers, that I have learned the most about which of my ideas are worth building. This page collects those efforts - hackathon builds, research sprints, and the products that came out of them - each with the month it was built, what came of it, and a link to the full story (the longer writeups live right here on the site as their own pages!).

I have recently taken to venture-capitalism as a late stage career and am actively interested in entrepreneurial ventures that promote meaningful and deliberate advances in humanity - would love to reach out and connect with those interested!

~/ventures/sidequests 1/8
HackGT 13 Best Use of MongoDB Atlas

SideQuests

with Max Iliev, Kevin Harvey, Bayan Mardon

SideQuests came out of a problem three of us kept running into on a study-abroad program this summer: an open afternoon, a layover, or a delayed train in a city we didn’t know, and no fast way to turn it into something worth doing. So, you tell SideQuests where you are, when you need to be back, and what you’re in the mood for, and it hands you three timed plans of nearby events and places, travel included, in under a second, with every rating you leave making the next plan fit a little better. Under the hood, a small ranker we trained without a single real user scores each stop against your taste, and a graph search over time turns the best of them into afternoons you can actually do.
results/
  • won Best Use of MongoDB Atlas at HackGT 13
  • VibeMatch, our 1.85M-parameter ranker, beats tuned cosine similarity by 39% (Spearman ρ 0.697 vs. 0.501) on 1,000 unseen users (model card)
  • three varied, timed plans in 0.2 to 0.6 s from a K-best search over a time graph
  • trained entirely on synthetic data: Qwen3.5-9B on my academic compute wrote 100k event listings and 10k personas, and an LLM judge rated 200k pairs
  • a full clickable prototype of the app, the same design the iOS app was built from, that you can tap through right in the field guide
  • a ~29k-line SwiftUI app over a Go API, MongoDB, and a FastAPI ML service, all on one Vultr VPS with a catalog of ~9,000 activities
~/ventures/hearsay 2/8
HackGT 13 1st Place, NSA HEARSAY Challenge

HEARSAY

with Team SideQuests

For the NSA’s HEARSAY Audio Authentication Challenge at HackGT 13, we built a synthetic-speech detector out of three fine-tuned self-supervised speech models, and then took on the harder question the organizers actually asked: why a clip gets flagged. Building on our lab’s work treating diffusion models as concept formation, we organized the detector’s representation into a Cobweb concept hierarchy and explained each clip with diffusion prototypes named by those concepts, so that every explanation points back to training audio a person can actually listen to.
results/
  • won 1st Place in the NSA HEARSAY Challenge at HackGT 13
  • 0.0317 minDCF (1.44% EER) on the official NSA test set
  • 0.0274 minDCF (1.05% EER) on 27,779 held-out In-the-Wild recordings
  • explanations agree with the detector’s decisions at κ = 0.985
  • 5,013 prototypes sorted into 8 acoustic families, with 21 case studies
  • an audit found that file timestamps alone separated the provided classes, so every format shortcut was stripped before training
~/ventures/logprobs 3/8

Reading Beats Asking, and Neither Beats Logprobs

An AI safety side project where we built the strongest case we could that a linear probe on a model’s activations can catch it being manipulated by a planted source, and then ran the baseline a practitioner would try first: the log-probability the model already assigns to the planted answer. That single forward pass beat the probe in every cell we tested, until we pushed the behavior further from the read point and the ordering reversed. Along the way, several of our own headlines were retracted, every one of them by a control we built to attack our own result.
results/
  • one forward pass beats the activation probe in 30 of 30 cells (0.94 vs. 0.78 AUROC)
  • the ordering reverses once the answer sits 56 to 82 tokens past the read point
  • a probe trained on one task family loses 0.179 AUROC on another
  • chain of thought cuts adoption of the planted answer from 0.350 to 0.056 (Qwen)
  • 5 models from 1.5B to 14B, in under 12 GPU-hours
~/ventures/j-space 4/8

The J-space of a Diffusion Language Model

Anthropic’s recent work argues that a transformer forms a global workspace: a small, limited-capacity set of verbalizable concepts in its residual stream, which their J-lens can read out directly. Because that workspace is in part a consequence of the transformer’s autoregressive architecture, we asked whether a masked diffusion language model, trained to denoise rather than to predict the next token, forms the same workspace and puts it to the same use, running the method on LLaDA-8B beside Llama-3.1-8B. The short answer is yes, but on a different schedule: the autoregressive model carries a persistent workspace forward through time, while the diffusion model spreads a transient one across space.
results/
  • both models form the workspace, but LLaDA forms it later in depth (layer 28 vs. 20) and in sharper phases
  • at the first denoising step, positions share about 3x as many concepts (0.21 vs. 0.07 overlap)
  • the diffusion workspace is malleable early and fixed late: injecting a concept at step one rewrites the theme, while the same injection in the final steps barely moves the text
  • both models answer all 10 reasoning prompts and resolve all 6 long-range ones
~/ventures/sophi 5/8
NexHacks 2026

Sophi

with Max Iliev, Joseph Farkas

Sophi was our answer to what we called the “3 AM problem”: general AI tutors have no idea how your professor teaches, which terminology they use, or what they tend to emphasize on exams. So, Sophi ingests a course’s syllabus, past exams, and notes into a structured “Course DNA”, and uses it to generate unlimited practice problems in the instructor’s own style, scaling difficulty in real time and handing out tiered hints instead of answers. I built the AI stack and reasoning layers, where every mathematical answer from Gemini is checked against Wolfram Alpha before a student ever sees it.
results/
  • under 2% hallucination rate through dual verification (Gemini + Wolfram Alpha)
  • about 60% smaller prompts through The Token Company’s context compression
  • a “self-healing” parser for model output that has to be valid JSON and LaTeX at the same time
  • live at sophi-ai.tech
~/ventures/docdoctor 6/8
AI ATL 2025 Best Use of MongoDB Atlas Honorable Mention, Best Use of Google Gemini

DocDoctor

with Max Iliev, Joseph Farkas, Isaac Thoman

DocDoctor started with a story about John, a call center representative who kept losing time hunting for the right documentation while a customer waited on the line. It transcribes live help-desk calls, lets the representative highlight a phrase (or lets our smart highlights do it for them) to surface relevant past reports as expandable cards on a canvas, and drafts a report at the end of the call for them to edit and file. For retrieval, we used Cobweb instead of a vector database, since its information-theoretic similarity outperforms vector search on jargon-heavy content like support tickets.
results/
  • won Best Use of MongoDB Atlas and an Honorable Mention for Best Use of Google Gemini at AI ATL 2025
  • real-time transcription, smart highlights, and LLM-drafted call reports in a single interface
  • four parallel stacks: a Python call client (ElevenLabs), an Angular frontend, a Go + MongoDB backend, and a Gemini 2.5 + Cobweb ML stack
~/ventures/duluthgpt 7/8

DuluthGPT

At my high school, our student body’s ratio of participation to population was disproportionately small, and through my work with student leadership, I discerned part of the gap to be due to a decentralized bank of resources - conflicting information and not a single place to easily access everything. So, I created DuluthGPT, an LLM agent that scraped and added data from athletics websites, extracurricular Instagrams, and the student body themselves, and was able to quickly answer fast Q+A with a basic RAG pipeline.
results/
  • answered over 30,000 queries from students
  • increased student engagement by 10%, as measured by customer surveys
  • the frequency of topics asked about showed what students actually wanted to know, highlighting AI’s two-way value proposition in consumer interaction
~/ventures/8ball 8/8

8ball

My first full-production machine learning pipeline was applied to the stock market. I used an XGBoost pipeline, tuned with my BiasWrappers, and finetuned predictions using sentiment analysis on Reddit, X, Google News, and Yahoo Finance investor analysis. My goal was to use the momentum of prior stock movements and current news sentiment to analyze the trends of future stock predictions by OHLC.
results/
  • some highly successful calls, with returns of up to 30%-40% for stocks that weren’t mainstream
  • generally performed worse than or equal to day-to-day predictions