Research, class projects, and tools I’ve built, with notes on how they work and what I learned.
We scanned peach trees before and after an expert pruned them, then used the differences to train a model to suggest where to cut.
Point Transformer v3PyTorchTreeQSMOpen3D+7
- →Paper submitted for review to ICRA 2027.
- →Matched 92.5% of expert cut locations, with about 1.6 extra cuts per tree on average.
- →Reached a 0.86 F1 score and a 2.5% mean absolute error in pruned volume on held-out trees.
TreeQSM sometimes gets branch connections wrong on orchard trees. I built a tool to repair those connections so the models could be used to measure tree structure.
PythonTreeQSMNetworkXNumPy+2
- →Reached about 90% agreement with the expected branch structure in internal checks on open-vase trees.
- →Exported corrected CSV files and interactive 3D views for use in other tree research projects.
A dashboard for keeping track of Instagram posts, hashtags, and audience reactions without collecting the numbers by hand.
Next.jsTypeScriptTailwindshadcn/ui+6
- →Brought post performance, hashtag activity, and comment sentiment into one dashboard.
- →Scheduled data collection with n8n and Apify, including retries and duplicate checks.
- →Used Supabase authentication and row-level security to keep each user’s analytics separate.
A research project using 3D tree scans during training to help predict branch counts and angles from genetic data alone.
PythonPyTorchscikit-learnXGBoost+8
- →Paired genetic data with LiDAR scans for 122 peach trees, with about 131,000 genetic markers per tree.
- →Reduced mean branch-angle error from 7.4 to 6.8 compared with the genetics-only DPCFormer model; random forest reached 6.7.
- →Reduced branch-count error from 48.0 to 43.9 compared with DPCFormer; random forest had the lowest error at 40.2.
A tool that takes a GitHub repository and creates a walkthrough you can follow in VS Code. I worked on mapping how the code connects so the tour has a useful order.
PythonFlaskReactOpenAI API+3
- →Generates CodeTour files in about three minutes for small and medium repositories, depending on size.
- →Maps definitions and their uses across files to help organize the walkthrough.
- →Works from the command line or through a React and Flask web interface.