Skills Applied

Research & industry

Most recent first. Some work is unpublished or proprietary, so those entries describe methods and scale without results.

UW Department of Medicine · CLARiTI study

May 2026 – present

Imaging Programmer Analyst

CLARiTI is a $150M, NIH-funded, multi-site study on the biology of neurological aging. I lead QC and data validation for the admin team.

2026Cross-system QC for multi-site imaging dataFinding and fixing where REDCap patient metadata and the imaging repository disagree.REDCap + LONI → validated records

What I do

  • Built automated Python QC and sanity-check pipelines that catch integrity problems in incoming site data before they reach manual review.
  • Root-cause mismatches between REDCap metadata and the imaging repository run by USC's Laboratory of Neuro Imaging, separating real data errors from differences in how a site set things up, and reconcile records with SQL.
  • Work through discrepancies directly with local site coordinators, in person and by email.
  • Designed visualization and reporting tools that turn raw imaging metrics into plain-language reports for non-technical site managers.
  • Maintain a repeatable, Git-versioned pipeline that packages quarterly imaging data freezes for industry partners.

Tools

  • Python
  • pandas
  • SQL
  • REDCap
  • LONI
  • Git

Reykjavík University · Institute of Biomedical and Neural Engineering

Jun 2024 – 2026

Graduate intern, then continuing research collaborator

Decision support for total hip arthroplasty (THA): should the femoral stem be cemented? I was the technical lead, working with two orthopedic surgeons, a medical graduate, and the institute director.

2024–25Automated CT femur segmentation and feature extractionScripted the Mimics API to turn preoperative CT scans into standardized bone measurements.CT / DICOM → bone features

What I did

  • Converted raw CT exports to DICOM series and scripted their import, segmentation, and measurement through the Mimics Python API.
  • Automated division of the proximal femur into the seven Gruen zones and computed bone mineral density per zone, using scanner-manufacturer-specific HU-to-BMD calibrations.
  • Measured cortical thickness and area with an 8-direction ray-casting method, cross-checked against a geometric estimate, with automatic part selection by centroid position.
  • Documented the code and workflow so other team members could rerun it on new scans.

Processing dropped from about 10 hours to 4 minutes per image, which made a dataset spanning two scanner generations practical to build.

Tools

  • Python
  • Mimics API
  • DICOM
  • NumPy
2024–26ML decision support for cemented vs. uncemented THAA leakage-safe modeling pipeline that treats surgeon disagreement as part of the problem.bone features + surgeon votes → fixation

What I did

  • Built a numbered, script-based workflow from data audit and rater-agreement analysis through training, cross-experiment comparison, feature importance, and reporting.
  • Surgeons often disagreed on the same hip, so I defined five ground truths from three raters (majority vote, operating surgeon, unanimous, two-reviewer agreement, and a soft vote-fraction target) and crossed them with CT-only, CT + demographics, and demographics-only inputs.
  • Kept every hip from a patient in the same split, stratified by label and scanner cohort, and fit KNN imputation and scaling on training data only, separately per cohort.
  • Engineered clinically motivated features (paired-zone BMD averages, BMD-to-cortical ratios, cross-zone summary statistics), growing 13 CT features to 22 inputs.
  • Benchmarked logistic regression, random forest, gradient boosting, and SVM with repeated grouped splits for confidence intervals, plus per-scanner breakdowns to check domain shift.
  • Wrote the methods document and the surgeon re-labeling instructions, and presented results to the clinical team in plain language.

CT features carry real signal, but conclusions shift with how ground truth is defined. Manuscript in preparation, so results are not shown here.

Tools

  • Python
  • scikit-learn
  • pandas
  • matplotlib
  • Git

Proteovista LLC

Jan 2024 – May 2026

Bioinformatics Scientist

A small biotech building protein–DNA binding arrays and aptamer products. I worked directly with the CTO and wet-lab biologists, took on the hardest programming tasks, and trained senior staff on the tools I built.

2024RNA-seq expression pipelineEnd-to-end bulk RNA-seq workflow from public SRA runs to gene-level expression.FASTQ → FPKM

What I did

  • Downloaded paired-end replicates of a zebrafish liver cell line with the SRA Toolkit.
  • Ran FastQC and Trimmomatic for quality control and trimming, aligned with HISAT2 to GRCz11, and sorted and indexed with samtools.
  • Counted reads per gene with featureCounts and wrote Python for FPKM, replicate coefficient of variation, and comparisons against housekeeping and inflammatory genes.
  • Documented every software version and parameter so the run could be repeated.

The target gene (NOD2) showed moderate, consistent expression across replicates, so the team skipped an intervention to boost it.

Tools

  • SRA Toolkit
  • FastQC
  • Trimmomatic
  • HISAT2
  • samtools
  • featureCounts
  • pandas
  • seaborn
2025–26Microarray grid alignment with computer visionReplacing manual grid placement in Agilent Feature Extraction with an automated, auditable pipeline.scanner TIFF → grid fit (JSON)

What I did

  • Stage 1: blur, percentile thresholding, and contour detection locate the feature area in very large multi-page scanner TIFFs.
  • Stage 2: each edge is split into sub-regions, the strongest intensity gradient in each is found, and the results are harmonized into a tight boundary.
  • Stage 3: the expected staggered spot grid (scale, rotation, offset, and row/column indexing) is fit to Hough-detected circles with side-balanced scoring, so no edge gets sacrificed to fit the others.
  • An operator-in-the-loop Streamlit step allows final nudges, then writes a JSON fit artifact and diagnostic overlays for the extraction stage.

Turns a slow, operator-dependent GUI task into a batchable, reproducible step with saved diagnostics.

Tools

  • Python
  • OpenCV
  • NumPy
  • SciPy
  • tifffile
  • Streamlit
2024–25Array normalization, QC, and comparison toolingPython and Excel VBA that turned raw array output into comparable, reviewable results.array signal → normalized ranks

What I did

  • Converted replicate signals to z-scores and percentile ranks with outlier filtering, so runs and proteins could be compared on one scale.
  • Compared top and bottom binders across conditions with Venn and UpSet plots, Spearman correlation heatmaps, and box-and-whisker summaries by probe category.
  • Wrote Excel VBA macros for the repetitive processing steps the wet-lab team ran on every scan.
  • Wrote documentation and trained senior staff, then revised the tools based on their feedback.

Cut data processing and visualization time by about 90%.

Tools

  • pandas
  • SciPy
  • seaborn
  • matplotlib-venn
  • UpSetPlot
  • Excel VBA
2025Secondary-structure screening dashboardAutomated thermodynamic lookups for large probe sets and packaged them for non-technical review.probe sequences → ΔG gallery

What I did

  • Automated IDT OligoAnalyzer with Selenium in batched, rate-limited, resumable runs to collect hairpin ΔG values and structure images.
  • Generated a static HTML gallery grouped by probe set, with color-coded ΔG and highlighted subsequences that tolerate mismatches.
  • Paired it with an intensity comparison between two array preparations to test whether hairpins explained an unexpected binding pattern.

Leadership could review structure questions on their own, and the gallery became the reference for follow-up experiment decisions.

Tools

  • Python
  • Selenium
  • pandas
  • Pillow
  • HTML
2024–25Motif and k-mer enrichment analysisFinding which sequence patterns drive transcription-factor binding on custom arrays.probe intensities → ranked motifs

What I did

  • Counted n-mers among top-binding probes by region after stripping constant primer sequence, and computed motif-presence statistics.
  • Streamed GRCh38 RefSeq FASTA to count motif occurrences genome-wide, strand-aware, to put array hits in genomic context.
  • Ran de novo motif discovery with STREME and sequence-specificity landscape analysis in GNU Octave, then consolidated pattern results in Python.

Tools

  • Python
  • MEME Suite (STREME)
  • GNU Octave
  • NCBI Datasets
2024Oligo design toolkit for DNA assemblyDesign rules for splitting long sequences into buildable, non-interfering oligos.target sequence → oligos + barcodes

What I did

  • Implemented nearest-neighbor melting temperature (with initiation and terminal corrections) and Tm-aware cut-point optimization for overlapping fragments.
  • Generated barcodes from k-mers absent in the target, filtered by Hamming distance and binned by Tm.
  • Screened candidates for repeats, mirror repeats, hairpins, GC-content windows, and purine runs against fabrication criteria, and scraped ΔG values for likely side reactions.

Tools

  • Python
  • NumPy
  • pandas
  • Selenium
  • matplotlib
2024Bioinformatics for a cancer genomics publicationLed the array analysis for a study of GRHL2 overexpression in ER+ breast cancer cells.binding arrays → figures

What I did

  • Extracted and processed the protein–DNA binding microarray data.
  • Built the computational pipeline and visualizations used to interpret binding results.

Co-author, Journal of the Endocrine Society, 2024.

Qiongshi Lu Lab, UW–Madison

Sep 2023 – Mar 2024

Graduate Student Research Assistant

A statistical genetics lab (developers of PUMAS for polygenic risk score tuning) exploring a move into epigenetic aging clocks.

2023–24Scoping a health-factor epigenetic clockLiterature review and proposal work for a clock trained on health outcomes instead of chronological age.literature + methylation data → plan

What I did

  • Ran weeks of literature review and presented papers to the PI on biological-age clocks such as DunedinPACE, telomere-based, and sex-specific aging models.
  • Developed the core idea: clocks trained on chronological age are biased toward predicting age, so training on health factors should better capture biological aging.
  • Explored public epigenetic datasets with unsupervised methods to look for structure beyond age.
  • Drafted and submitted the IRB protocol: research plan, data privacy, and consent.
  • Ran the lab's GWAS and polygenic risk score tooling, including an LDpred2-based PRS workflow, to learn its pipelines.

The review showed several groups had already built sophisticated versions of this idea. I recommended not duplicating it and moved on.

Tools

  • Python
  • R
  • LDpred2
  • PLINK
2023GEO covariate scraperPulled and harmonized sample metadata from Gene Expression Omnibus series with inconsistent formats.GEO series → tidy covariate tables

What I did

  • Scraped sample pages for methylation series (GSE36054, GSE137222, GSE137223) with requests and BeautifulSoup.
  • Parsed free-text characteristics fields into consistent columns such as age, sex, and tissue, handling both RTF and TXT series exports.
  • Wrote clean per-series CSVs ready to join to methylation matrices.

Tools

  • Python
  • requests
  • BeautifulSoup
  • pandas

Fujifilm Cellular Dynamics

Jun 2022 – Feb 2023

Research Specialist

iPSC-derived cell products in a design-controlled, regulated environment. I worked daily with senior scientists, cell biologists, quality, and a staff biostatistician.

2022–23Assay and media validation for iPSC productsStatistical comparisons and characterization data that guided media and assay decisions.flow, qPCR, assay data → reports

What I did

  • Ran statistical workflows to compare cell-media formulations and assess assay reliability, and presented results to the cross-functional team. Leadership recognized the work as a process improvement.
  • Analyzed flow cytometry and qPCR data to characterize engineered iPSC lines.
  • Designed and checked constructs in DNASTAR for transfection and genetic engineering, and trained in lentiviral methods.
  • Kept data in the LIMS accurate and wrote protocols, SOPs, technical reports, and design-validation documentation.

Tools

  • DNASTAR
  • Flow cytometry
  • qPCR
  • LIMS
  • Excel

Wisconsin Institute for Discovery · Ashton Lab

Dec 2018 – Mar 2020

Undergraduate Research Assistant

Regional patterning of human pluripotent stem cells into diverse posterior CNS neurons. This is where I started moving from the pipette to the keyboard.

2018–20Quantifying stem-cell neural patterningqPCR, imaging, and single-cell sequencing data behind a Science Advances paper.cells → qPCR, confocal, scRNA-seq

What I did

  • Ran qRT-PCR and analyzed regional marker expression with the ΔΔCt method.
  • Performed immunocytochemistry and immunohistochemistry, imaged on a confocal microscope, and quantified marker expression from the images.
  • Prepared samples for single-cell RNA-seq and reviewed downstream marker results with the computational collaborators.
  • Collected experimental data and authored a grant proposal.

Co-author, Science Advances, 2022.

Tools

  • qRT-PCR
  • Confocal microscopy
  • ICC / IHC
  • scRNA-seq
  • Excel

Publications

  • 2024Genomic Consequences of GRHL2 Overexpression in ER+ Breast Cancer Cells. Journal of the Endocrine Society. doi
  • 2022Modular derivation of diverse, regionally discrete human posterior CNS neurons enables discovery of transcriptomic patterns. Science Advances. doi

Graduate coursework

Projects and problem sets with real code behind them. Metrics are on the course's held-out test sets.

UW–Madison · MS Biomedical Data Science

2024 – 2025

BMI 826 Data Science for Healthcare, BMI 620 Statistics in Human Genetics, CS 760 Machine Learning, BMI 576 Introduction to Bioinformatics, BMI 551 Biostatistics.

BMI 826Pneumonia detection from chest X-raysElastic net vs. gradient boosting vs. a CNN on 5,840 chest X-rays.X-ray images → pneumonia risk

What I did

  • Fed flattened 64×64 grayscale pixels to elastic net (ElasticNetCV) and gradient boosting (RandomizedSearchCV) baselines.
  • Built a five-block CNN at 200×200 with augmentation and class weights for the 3:1 class imbalance.
  • Reported test AUC with bootstrap 95% confidence intervals and pairwise significance tests.

CNN AUC 0.94, gradient boosting 0.91, elastic net 0.90.

Tools

  • TensorFlow / Keras
  • scikit-learn
  • NumPy
BMI 826Classifying PubMed abstract sentencesLabeling each sentence as background, objective, methods, results, or conclusions.210K sentences → section labels

What I did

  • Built TF-IDF features with stop-word removal and Porter stemming, then cut the vocabulary from 36,192 to 386 terms by document-frequency band once the full vocabulary made training too slow.
  • Trained one-vs-rest elastic net (SGD) and gradient boosting models, tuned on the validation split.
  • Extracted BioBERT sentence embeddings and trained gradient boosting on them.

The BioBERT model won on every label, for example 0.974 AUC on Results vs. 0.913 for elastic net.

Tools

  • scikit-learn
  • NLTK
  • Hugging Face Transformers
  • BioBERT
  • PyTorch
BMI 82630-day mortality after heart attack (GUSTO-I)Clinical risk models validated on a held-out geographic group.trial covariates → mortality risk

What I did

  • Trained on three sample groups and tested on the held-out "west" group, with about 6% mortality in each.
  • Fit logistic regression, elastic net (cross-validated L1 ratio, saga solver), and a grid-searched random forest on 20 clinical features.
  • Compared AUCs with DeLong tests and checked calibration slope and intercept on the external set.

Tools

  • scikit-learn
  • pandas
  • SciPy
BMI 826Benchmarking clinical time-series forecastingFinal project with Bowman Brown: do deep models beat ARIMA on ICU vitals?vitals and labs → 12-step forecasts

What we did

  • Motivated by evidence that deep forecasters often lose to simple baselines on standard benchmarks, and asked whether clinical data changes that.
  • Implemented ARIMA, Holt-Winters, SARIMAX, LSTM, Transformer, and PatchTST behind one command-line runner with configurable window, horizon, models, epochs, and seed.
  • Targeted MIMIC-III and INSPIRE vitals and labs, and developed against synthetic data with the same structure.
  • Scored models on MAE, MSE, RMSE, and MAPE, with comparison plots.

Tools

  • PyTorch
  • statsmodels
  • pandas
  • argparse
BMI 620Schizophrenia GWAS follow-up analysisPGC3 summary statistics: 2.57M SNPs, 74,776 cases and 101,023 controls.GWAS sumstats → h², rg, MR, TWAS

What I did

  • Wrote a parser for PGC's VCF-like format and applied QC (MAF > 0.01, INFO > 0.3).
  • Produced Manhattan, QQ, and LocusZoom-style plots, and handled genomic-control inflation.
  • Estimated SNP heritability and tissue enrichment with LD Score regression, and genetic correlations with ADHD, PTSD, and cannabis use disorder.
  • Ran bidirectional Mendelian randomization in R and a whole-blood TWAS with GTEx weights.

SNP h² of 16.9%, the strongest signal in the MHC region, brain-tissue enrichment, and no strong whole-blood TWAS hits.

Tools

  • LDSC
  • PLINK
  • TwoSampleMR
  • GTEx
  • Python
  • R
CS 760Core ML algorithms from scratchImplemented and stress-tested the classics in NumPy before reaching for libraries.MNIST, email, synthetic → curves

What I did

  • Decision tree with gain-ratio splits, plotted decision boundaries, and learning curves.
  • k-NN vs. logistic regression on spam email with 5-fold cross-validation and ROC/AUC.
  • A two-layer network with hand-written backprop vs. a PyTorch equivalent on MNIST, comparing weight initializations.
  • k-means from scratch vs. Gaussian mixtures across noise levels.
  • PCA variants (raw, demeaned, normalized, DRO) compared by reconstruction error on 2-D and 1,000-D data.

Tools

  • NumPy
  • PyTorch
  • scikit-learn
  • matplotlib
BMI 576Bioinformatics algorithms by handAssembly, alignment, phylogenetics, HMMs, and Bayesian networks written in Python.FASTA → assemblies, alignments, trees

What I did

  • Spectral (de Bruijn) genome assembly with Eulerian paths and sequencing-error handling on SARS-CoV-2 reads.
  • Global, local, and affine-gap alignment; BLAST-like seed-and-extend including circular sequences; graph-to-graph alignment.
  • Substitution matrices from human–chimp alignments, multiple alignment, Newick trees, sequence-evolution simulation, and neighbor joining.
  • Markov chains and HMMs (Viterbi, forward, posteriors, parameter estimation), including a protein-domain HMM for coronaviruses.
  • k-means and GMM clustering of expression profiles, and Bayesian network structure scoring and inference.

Tools

  • Python
  • NumPy
  • toytree

University of Colorado Boulder · MS Data Science courses

2023 – 2024

11 graduate credits that transferred into the UW–Madison degree. Public repo: CUB-Public.

DTSA 5511Metastatic tissue detection in pathology patchesA CNN trained on the PatchCamelyon lymph-node benchmark.tissue patches → tumor probability

What I did

  • Built an image loading and preprocessing pipeline for about 220K labeled patches.
  • Trained and tuned a convolutional network, then analyzed its errors and listed improvements.

About 86% validation accuracy.

Tools

  • TensorFlow / Keras
  • NumPy
  • Pillow
DTSA 5511Lung cancer type classification from chest CTTransfer learning with VGG16 across three cancer types and normal tissue.CT slices → 4 classes

What I did

  • Fine-tuned VGG16 on a small Kaggle CT dataset (adenocarcinoma, large cell, squamous cell, normal).
  • Documented why accuracy plateaued on so little data and laid out next steps: heavier augmentation, cross-validation, and newer architectures.

Tools

  • TensorFlow / Keras
  • VGG16
DTSA 5511Disaster tweet classificationLinear baselines vs. LSTMs with pretrained word embeddings.tweets → disaster / not

What I did

  • Cleaned and tokenized tweets, then compared logistic regression baselines with LSTM models using Word2Vec and GloVe Twitter embeddings.
  • Tuned learning rate, batch size, and dropout, and diagnosed why deeper models underperformed the baseline.

Tools

  • TensorFlow / Keras
  • gensim
  • NLTK
  • scikit-learn
DTSA 5511Generating dog images with a GANA generative adversarial network trained on the Stanford Dogs dataset.dog photos → synthetic images

What I did

  • Built generator and discriminator networks and a custom training loop, tracking both losses over training.
  • Evaluated samples visually and documented the limits of training on local compute.

Tools

  • TensorFlow / Keras
  • NumPy
DTSA 5510Clustering protein–DNA binding sequencesUnsupervised grouping of GRHL2 array probes, linked back to binding strength.probe sequences → clusters + motifs

What I did

  • Encoded probe sequences, reduced dimensionality, and clustered with k-means.
  • Correlated clusters with measured binding intensity and summarized them with position weight matrices and sequence logos.

Clusters tracked binding intensity and suggested GRHL2 recognizes more than one binding sequence.

Tools

  • scikit-learn
  • Biopython
  • pandas
DTSA 5510Topic discovery and recommenders with matrix factorizationUnsupervised news clustering, a supervised comparison, and an NMF recommender.articles, ratings → topics, predictions

What I did

  • Clustered BBC news articles with TF-IDF, truncated SVD, and k-means, then compared against supervised logistic regression as training size varied.
  • Built an NMF movie recommender and worked out why treating missing ratings as zeros fails on sparse data.
  • Wrote a PCA class from scratch.

About 95% accuracy on news topics without labels.

Tools

  • scikit-learn
  • NumPy
  • pandas
DTSA 5509Restaurant revenue predictionRandom forest regression with feature engineering and importance analysis.restaurant attributes → revenue

What I did

  • Engineered features, handled outliers, and tuned a random forest regressor on a small Kaggle dataset.
  • Ranked feature importance and tested PCA-based feature reduction against the full model.

Tools

  • scikit-learn
  • pandas
  • matplotlib
DTSA 5301Reproducible public-data reports in RSeasonal patterns in NYC young-adult shootings, and early COVID-19 deaths.public CSVs → R Markdown reports

What I did

  • Analyzed NYPD shooting-incident data for seasonal variation among young adults.
  • Analyzed early-pandemic death counts from the Johns Hopkins COVID-19 repository against government control measures.
  • Wrote both as knit-able R Markdown with the data pulled from source, and discussed bias in each.

Tools

  • R
  • tidyverse
  • ggplot2
  • lubridate
  • R Markdown
DTSA 55xxAlgorithms, data structures, and SQLAlgorithm design and analysis, plus relational database design and SQL.problems → proofs + Python

What I did

  • O(n) maximum subarray, FFT polynomial multiplication, and FFT signal filtering.
  • Dynamic programming (longest stable subsequence), heap-based greedy makespan scheduling with approximation bounds, and SAT solving.
  • Recursive search, sorting, indexing, trees, and graphs.
  • Relational database design and SQL (DTSA 5733, 5734), plus the CS50 SQL problem sets.

Tools

  • Python
  • NumPy
  • SQL
  • MySQL
  • PostgreSQL

Other data work

2025Campaign mailing list from city parcel recordsTurned City of Madison parcel data for Alder District 4 into a unit-level mailing list.683 parcels × 60 fields → mail list

What I did

  • Filtered the district's parcel records down to residential addresses.
  • Expanded multi-unit buildings into apartment-level address lines.
  • Formatted the output for mail merge (address lines, city, state, ZIP).

Tools

  • Excel
  • Python

Solo builds

Products I scoped, designed, built, and shipped on my own. The matrix shows how far each one has gone through the software lifecycle.

Lifecycle coverage by project
ProjectDiscoverDesignBuildTestDeployOperate
Ymir Safety System
HuckHub
ExpertScraper
Xpath
BadgerPark
  • done
  • partly done or manual
  • not started
2025Ymir Safety SystemBoat checkout and overdue-safety PWA built for a Reykjavík sailing club.QR scan → checkout → overdue alert

Lifecycle

  • Discover: mapped the club's paper-based checkout and its safety gaps with club leadership.
  • Design: relational schema for members, boats, check-ins, and maintenance; 3-digit PIN login for dockside phones; per-boat QR codes; English and Icelandic routes.
  • Build: Astro server rendering with React and Tailwind, Netlify Functions, PostgreSQL, Web Push with VAPID keys, and scheduled overdue checks.
  • Test: notification test pages, persistent debug logs, and data-consistency scripts; consolidated timezone handling after tracing a class of UTC bugs.
  • Deploy: migrated SQLite to Neon Postgres and Vercel to Netlify, moved to the club's domain, and regenerated every QR code.
  • Handoff: delivered as a paid, production-ready app with an admin dashboard and staff guide; 159 commits from July to October 2025.

Tools

  • Astro
  • React
  • Tailwind
  • PostgreSQL
  • Netlify
  • Web Push
2025–26HuckHubThrowing-partner matching for Madison's ultimate community, plus a semantic-search careers mode.profiles + location → matches

Lifecycle

  • Discover: framed the problem with the Madison Ultimate Frisbee Association: new players can't find practice partners between seasons.
  • Design: vision, safety, and partnership documents; data model with mutual-consent contact sharing.
  • Build: Next.js 15, React 19, and TypeScript on Supabase Postgres with PostGIS radius matching and row-level security.
  • Test: TypeScript and ESLint gates on production builds, plus moderation tooling: 18+ verification, reporting, blocking, and bans.
  • Deploy: Netlify with database migrations; patched Next.js for CVE-2025-55182.
  • Operate: shipped HuckHub Careers for user testing in June 2026. It runs semantic search over embeddings from ExpertScraper, with user-editable profile overrides and a dispute workflow.

Tools

  • Next.js
  • TypeScript
  • Supabase
  • PostGIS
  • Zod
  • Netlify
2025–26ExpertScraperStaged ingestion and LLM-enrichment pipeline linking ultimate players to public career information.rosters + web → profiles + embeddings

Lifecycle

  • Discover: wrote the purpose document: warm networking through shared community ties, modeled on expert-database work at CROs.
  • Design: a staged build plan where every stage produces an inspectable artifact and has a pass/fail checklist, and every derived field keeps its source URL and retrieval date.
  • Build: ingested the UltiVerse API, MUFA, USA Ultimate, and UFA into SQLite with raw dumps for audit; name normalization and de-duplication gave 122K players and 418K player-team-year rows; cached, checkpointed web-context retrieval; LLM profile resolution in cost-capped batches; Sentence Transformers embeddings.
  • Test: per-stage checklists, de-duplication reports, and a semantic-search smoke test from the CLI.
  • Deploy: a versioned export bundle (Parquet, NumPy embeddings, manifest) that HuckHub validates and loads.
  • Operate: incremental enrichment runs about 4% through the dataset; deletion workflow and monitoring are next.

Tools

  • Python
  • SQLite
  • OpenAI API
  • Sentence Transformers
  • Parquet
2025Xpath (GlobalConnect)A privacy-first app that tells friends when they're in the same city. No chat, no feed.fuzzed location → nearby alert

Lifecycle

  • Discover: problem statement and whiteboarding session, plus a competitor analysis against an existing city-level location app.
  • Design: design document; location fuzzed by up to 1 km before storage, proximity checks every 3 days, and alerts that say only that a connection is nearby.
  • Build (in progress): a React Native app scaffold and an AWS serverless backend with Cognito, API Gateway, RDS Postgres, an EventBridge schedule, and 10 Lambda functions.
  • Next: work through the AWS setup tracker and deploy.

Tools

  • React Native
  • TypeScript
  • AWS Lambda
  • Cognito
  • RDS Postgres
  • EventBridge
2025BadgerParkA game-day parking marketplace between Camp Randall fans and nearby residents.listings + bookings → payouts

Lifecycle

  • Discover: a customer-interest survey for fans and hosts covering price sensitivity, must-have features, and platform.
  • Design (in progress): a full product spec covering actors and flows, map search, booking holds, payments and payouts, QR/PIN/geofence check-in, anti-circumvention rules, disputes, and host verification.
  • Next: validate demand from survey responses before building.

Planned stack

  • Mobile app
  • Stripe Connect
  • Maps API