<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Projects |</title><link>https://AaronScherf.github.io/projects/</link><atom:link href="https://AaronScherf.github.io/projects/index.xml" rel="self" type="application/rss+xml"/><description>Projects</description><generator>HugoBlox Kit (https://hugoblox.com)</generator><language>en-us</language><lastBuildDate>Sun, 19 May 2024 00:00:00 +0000</lastBuildDate><image><url>https://AaronScherf.github.io/media/sharing.jpg</url><title>Projects</title><link>https://AaronScherf.github.io/projects/</link></image><item><title>Multi-Agent Development Workflow</title><link>https://AaronScherf.github.io/projects/multi_agent_project/</link><pubDate>Sun, 27 Sep 2026 00:00:00 +0000</pubDate><guid>https://AaronScherf.github.io/projects/multi_agent_project/</guid><description>&lt;p&gt;For a website revision, I can give an agent the editorial guide and a set of pages, then review the resulting changes before publishing. That work happens in its own working copy, so another task can proceed without sharing the same files. The handoff carries the branch, changes, checks, and remaining questions.&lt;/p&gt;
&lt;p&gt;Git calls these separate working copies &lt;strong&gt;worktrees&lt;/strong&gt;. Each writing task gets one branch and one writer; a designated integrator combines finished changes. The files and staging areas are separate, but Git&amp;rsquo;s underlying history and branch references are shared. Isolation reduces accidental overwrites while leaving conflicts and incompatible changes for review.&lt;/p&gt;
&lt;p&gt;The workspace&amp;rsquo;s routing guide assigns defaults by task. Claude handles architecture and decisions that depend on earlier context. Gemini handles pipeline operation, documentation, writing, and large source reviews. Codex handles routine code maintenance, tests, and Git mechanics. An explicit assignment can override those defaults—as it does when I ask Codex to revise these pages.&lt;/p&gt;
&lt;p&gt;The routing instructions live in one shared document, linked from each agent&amp;rsquo;s entry file. That avoids maintaining three copies that can drift apart. Continuity comes from the context and records supplied in this workspace; it should not be assumed to be automatic or shared between products.&lt;/p&gt;
&lt;p&gt;A completed task still needs integration approval. Its handoff identifies what was changed, what was checked, and what remains uncertain. A passing test suite does not establish that two independently sensible changes will work well together.&lt;/p&gt;
&lt;p&gt;This remains a convention the participants must follow. Worktrees do not isolate a shared notes vault, an external service, or a sync process. The
and
describe the boundaries and approval rules.&lt;/p&gt;</description></item><item><title>Resume Manager</title><link>https://AaronScherf.github.io/projects/resume_manager/</link><pubDate>Wed, 09 Sep 2026 00:00:00 +0000</pubDate><guid>https://AaronScherf.github.io/projects/resume_manager/</guid><description>&lt;p&gt;A useful tailored resume changes the emphasis without changing the experience. Resume Manager keeps a master record of my roles, projects, and accomplishments, then uses a job description to select relevant experience and rewrite its bullets. Employer names, dates, and locations are copied by code from the master; the model supplies bullet wording rather than rebuilding the whole document.&lt;/p&gt;
&lt;p&gt;The most effective change was removing AI from the first step. My source resume already had recognizable sections, but model-based extraction misplaced fields and omitted information. A conventional parser that reads those sections reduced the recorded bootstrap time from over 90 minutes to about 1.5 seconds on my resume. Language generation remains useful for tailoring; it was unnecessary for reading a layout the code could recognize directly.&lt;/p&gt;
&lt;h2 id="what-tailoring-can-change"&gt;What tailoring can change&lt;/h2&gt;
&lt;p&gt;An &lt;strong&gt;illustrative example for a hypothetical applicant&lt;/strong&gt; applying to a monitoring role:&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;&lt;strong&gt;Master:&lt;/strong&gt; Prepared monthly monitoring reports in Excel covering 12 projects.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Tailored for a role emphasizing Excel:&lt;/strong&gt; Prepared Excel monitoring reports for 12 projects each month.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;The revised bullet puts Excel first while keeping the frequency, activity, and project count fixed. It adds no claim of managing those projects or improving their results. That is the kind of distinction I still review in the actual output; fixed dates alone cannot protect every factual implication of a rewritten sentence.&lt;/p&gt;
&lt;p&gt;The ordinary workflow uses a saved job description and a local model. Optional questions let me explain priorities before tailoring, and the application folder keeps that guidance alongside the job description, draft, PDF, and validation report. A separate route can interpret a rough opportunity description and request a cloud-based relevance brainstorm. That route may send resume material to Gemini; the saved-description route does not require it.&lt;/p&gt;
&lt;h2 id="check-what-survived-the-rewrite"&gt;Check what survived the rewrite&lt;/h2&gt;
&lt;p&gt;Checks flag possible invented or dropped numbers, repeated openings, similar bullets, and some unsupported responsibility wording. Explicitly supplied facts can include required phrases or acceptable alternatives, making omissions easier to spot. These are advisory checks, not a full understanding of whether the resume is faithful.&lt;/p&gt;
&lt;p&gt;The September 2026 application trials showed why that matters: a rewrite dropped a financial figure, and another output omitted qualitative guidance despite a clean numeric report. Newer checks cover more of those cases, but word matching and similarity tests can still miss changes in meaning.&lt;/p&gt;
&lt;p&gt;Page fitting ranks candidate experience and measures rendered drafts against a target length, so content selection responds to the available space. I still inspect the final PDF for readable layout and omissions. The master remains maintained by hand, and tailoring never submits an application. The
explains the current entry points and review outputs.&lt;/p&gt;</description></item><item><title>Novel Omnibus Normality Test</title><link>https://AaronScherf.github.io/projects/math_thesis/</link><pubDate>Sat, 22 Aug 2026 00:00:00 +0000</pubDate><guid>https://AaronScherf.github.io/projects/math_thesis/</guid><description>&lt;p&gt;My mathematics thesis explored a way to test whether data depart from a bell-shaped, or normal, distribution. It transforms an ordered sample into a pattern of departures from what normal data would produce, then looks for structure beyond random fluctuation. The aim was to detect different kinds of departure through one flexible test.&lt;/p&gt;
&lt;p&gt;In the small-sample simulations, the method performed similarly to the established Shapiro–Wilk test for two families of distributions, but fell behind for two others. The result was a proof of concept with room to investigate the construction further. It did not establish a generally stronger normality test.&lt;/p&gt;
&lt;h2 id="turning-a-sample-into-a-pattern"&gt;Turning a sample into a pattern&lt;/h2&gt;
&lt;p&gt;An ordered sample contains information about where it departs from the expected shape. After the transformation, normal samples fluctuate around zero. Other distributions can produce a systematic bend or a different pattern of departures. Keeping their direction as well as their size is the useful part of the approach.&lt;/p&gt;
&lt;p&gt;I fitted those departures with a penalized generalized least squares model, or PGLS. The penalty discourages the model from simply tracing every noisy point, much as smoothing a jagged line can reveal its broader shape. The model also accounts for how the transformed observations vary together. Its fitted coefficients supply a measure of departure, and simulations of normal samples establish a rejection threshold.&lt;/p&gt;
&lt;h2 id="what-the-simulations-showed"&gt;What the simulations showed&lt;/h2&gt;
&lt;p&gt;The comparison used samples of 20 observations and 10,000 simulations per tested setting. &lt;strong&gt;Power&lt;/strong&gt; is the proportion of non-normal samples a test correctly identifies under those conditions.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Simulated distribution&lt;/th&gt;
&lt;th&gt;Proposed test compared with Shapiro–Wilk&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;t-distribution&lt;/td&gt;
&lt;td&gt;Similar, generally slightly lower power&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Generalized Pareto&lt;/td&gt;
&lt;td&gt;Similar patterns across the tested shape settings&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Gamma&lt;/td&gt;
&lt;td&gt;Lower power, by about 10–20 percentage points in the reported comparisons&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Chi-square&lt;/td&gt;
&lt;td&gt;A larger gap, favoring Shapiro–Wilk over most tested settings&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;As distributions became harder to distinguish from normal, detection became difficult for both methods. The
describe these conditions and the remaining choices: how strongly to smooth, which patterns to fit, and how to construct the final statistic.&lt;/p&gt;
&lt;p&gt;This was my master&amp;rsquo;s thesis at Indiana State University, advised by Dr. Mark Inlow. The
includes the report and R implementation.&lt;/p&gt;</description></item><item><title>Academic Hub</title><link>https://AaronScherf.github.io/projects/academic-hub-overview/</link><pubDate>Tue, 01 Sep 2026 00:00:00 +0000</pubDate><guid>https://AaronScherf.github.io/projects/academic-hub-overview/</guid><description>&lt;p&gt;As a PhD student, a common problem is having too many learning resources and not enough time to explore them all. Synthesizing information from textbooks, lecture slides, recitation notes, past exams, and external content and distilling the most important lessons is a massive challenge, especially for multiple overlapping courses. A question I jotted down during lecture in my handwritten notes may require leafing through a textbook index, cross-checking against the notation used by my specific faculty, and connecting back to an example from a past semester&amp;rsquo;s problem set. Online searches or generic AI responses are faster, but lack the specific context from my own materials; usually LLM responses are based on other disciplines or invoke concepts far out of scope for my course.&lt;/p&gt;
&lt;p&gt;My solution is the Academic Hub: a complete system for organizing my notes and course materials in a machine-readable format that a locally based AI agent can use to serve as my personal librarian and tutor. An interconnected group of customizable coding pipelines take my disorganized notes, slides, and syllabi and turns them into a fully searchable corpus of data, complete with metadata tags, which a local or low-cost AI model can use to generate customized study guides, practice problems, and Socratic tutor agents. The entire system is built to be reproducible for any course and any type of input: handwritten notes, slides, scans of textbooks, typeset PDFs&amp;ndash;just drop a collection of study materials into a course directory, use a local agent to run the conversion and tagging pipelines, then start building custom materials from the resulting knowledge corpus. The system is also built to prioritize free or low-cost methods for transcribing content, relying on local LLMs or subscription models where possible and falling back to APIs if necessary, to ensure complete customizable to the user&amp;rsquo;s cost sensitivity and preferred LLM environment.&lt;/p&gt;
&lt;p&gt;The common foundation for every course is a collection of materials transcribed into a machine-readable format, typically markdown or JSON databases. Converting notes or slides preserves the text, mathematical notation, and page context; the
makes that material searchable by a local agent or using backlinks in a notes aggregator like Obsidian. From there I can ask a question, develop custom study guides, or explore how course concepts depend on one another through interactive concept maps. Creating this as a customized local pipeline rather than relying on a commercial study system or a cloud-based retrieval-augmented generation approach like Gemini&amp;rsquo;s Notebooks gives me complete flexibility to create and modify my own study tools, without worrying about releasing potentially copyrighted material to a third-party.&lt;/p&gt;
&lt;h2 id="prepare-the-materials"&gt;Prepare the materials&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
preserves equations, figure descriptions, and page references;
handles shorter documents and handwriting.&lt;/li&gt;
&lt;li&gt;
flags suspicious extracted text and compares it with source images before changing it.&lt;/li&gt;
&lt;li&gt;
turns lecture recordings into study notes. Reliable references from each concept back to its exact moment in a video remain unfinished.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="find-an-explanation"&gt;Find an explanation&lt;/h2&gt;
&lt;p&gt;
uses retrieved passages to answer a question with references I can open and check. I can save an answer or a session recap as a study note;
can return to its recorded passages to develop the explanation further.&lt;/p&gt;
&lt;p&gt;
uses the shared source material to map relationships between ideas, including the assumptions that make a conclusion follow. Its first full graph covers part of a microeconomics course. A graph helps trace those dependencies; a guide explains a topic in sequence. Both contain drafted material that needs review.&lt;/p&gt;
&lt;h2 id="study-and-practice"&gt;Study and practice&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
starts from a topic list, selects indexed sources, drafts a guide, and proposes edits for review. Its optional enhancement step adds the same fuller explanations and worked examples available to an existing summary.&lt;/li&gt;
&lt;li&gt;
gives hints and feedback on an attempt. The separate
tracks progress during a conversation, but its strict checks have struggled with teaching unfamiliar material.&lt;/li&gt;
&lt;li&gt;
keeps my reasoning, agent derivations, and tutoring work distinct for comparison.&lt;/li&gt;
&lt;li&gt;
stores extracted exercises with their provenance.
currently retrieves its own style examples; integration with that stored bank remains separate work.&lt;/li&gt;
&lt;li&gt;
can accompany an explanation, while
turns notes into spoken episodes. A generated chart or recording still needs checking for its intended use.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="maintain-the-collection"&gt;Maintain the collection&lt;/h2&gt;
&lt;p&gt;
keeps working notes available across devices.
reports missing or stale outputs for review, and
helps prioritize the next work.&lt;/p&gt;
&lt;p&gt;The
links to each tool&amp;rsquo;s current evidence and limits. A useful study session still involves choosing the material, checking coverage, and comparing generated explanations with their sources. The shared source trail makes those checks possible; it does not settle whether an explanation is correct.&lt;/p&gt;</description></item><item><title>AI Research Assistant</title><link>https://AaronScherf.github.io/projects/ai-research-assistant-overview/</link><pubDate>Tue, 01 Sep 2026 00:00:00 +0000</pubDate><guid>https://AaronScherf.github.io/projects/ai-research-assistant-overview/</guid><description>&lt;p&gt;AI Research Assistant brings paper discovery, document conversion, and search into the same research workflow. It can compare candidate abstracts with a description of my research question before trying to obtain the full articles. Converted papers can then be searched alongside my own research notes using the tools developed for Academic Hub.&lt;/p&gt;
&lt;p&gt;For an &lt;strong&gt;illustrative research question&lt;/strong&gt; such as &amp;ldquo;How do researchers measure displacement after a disaster?&amp;rdquo;, the starting point is more specific than a keyword search for disasters. I can ask the discovery tool to favor empirical measurement over policy commentary, then inspect the candidates before building a reading collection.&lt;/p&gt;
&lt;p&gt;The three current tools handle different parts of that work:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;
.&lt;/strong&gt; Search an academic-publication catalog by researcher or topic, then score abstracts against the research description using a model running locally. The tool tries several sources for full text and records papers that need manual retrieval. Finding a relevant paper does not guarantee access to it.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;
.&lt;/strong&gt; Convert available PDFs to text with references back to their pages. The converter reuses the course-notes tools, choosing local extraction or AI transcription according to the document. Equations, figures, and imperfect extraction still need checking.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;
.&lt;/strong&gt; Convert Word documents, including research ideas and application essays, while retaining headings and basic formatting. Their text and the papers enter the same search catalog, making it possible to look for a topic across both.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The shared
can query the research collection and
together.
can use those retrieved passages for an answer with source references. Each collection keeps its own records, so a paper, my research note, and a lecture explanation remain distinguishable when they match the same question.&lt;/p&gt;
&lt;p&gt;These tools support a literature review that I direct: choosing the question, reviewing papers, obtaining restricted articles, and interpreting the evidence remain part of my work. The
give the current capabilities and limits of each stage.&lt;/p&gt;</description></item><item><title>Predicting Wheat Yields in New Environments</title><link>https://AaronScherf.github.io/projects/wheat_yield_prediction/</link><pubDate>Sat, 22 Aug 2026 00:00:00 +0000</pubDate><guid>https://AaronScherf.github.io/projects/wheat_yield_prediction/</guid><description>&lt;p&gt;Choosing a wheat variety is partly a question of where it will grow. My master&amp;rsquo;s thesis tested whether satellite measurements of the environment and accessible machine learning tools could help predict yields where field-trial information is limited. I compared those measurements with field records, using wheat trials from CIMMYT, an international crop-research organization.&lt;/p&gt;
&lt;p&gt;The results separated two questions that can easily get mixed together. Machine learning models outperformed the study&amp;rsquo;s linear mixed-model baseline on held-out observations. Satellite data helped that baseline, but the machine learning models performed better with the manually collected environmental data. A stronger model and a more accessible data source did not automatically make the best combination.&lt;/p&gt;
&lt;h2 id="what-was-compared"&gt;What was compared&lt;/h2&gt;
&lt;p&gt;Google Earth Engine supplied environmental measurements such as soil moisture, precipitation, and vapor pressure. Field records supplied another view of growing conditions and management. I also tested adding pedigree information describing relationships between wheat varieties.&lt;/p&gt;
&lt;p&gt;Four approaches predicted yields: a Bayesian linear mixed model, random forest, gradient boosting, and a neural network. Fifteen percent of observations were held out for the final comparison, with varieties represented across that sample. This tests predictions within the study&amp;rsquo;s data; use in new regions would need further validation.&lt;/p&gt;
&lt;p&gt;For a direct comparison using environmental data alone:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Environmental information&lt;/th&gt;
&lt;th&gt;Random forest R²&lt;/th&gt;
&lt;th&gt;Linear mixed-model R²&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Field records&lt;/td&gt;
&lt;td&gt;0.829&lt;/td&gt;
&lt;td&gt;0.113&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Satellite-derived data&lt;/td&gt;
&lt;td&gt;0.746&lt;/td&gt;
&lt;td&gt;0.243&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;R² measures how much of the variation in the held-out yields the predictions account for relative to predicting the average. It is not the percentage accuracy of an individual yield prediction. The
gives the full comparison, including pedigree information.&lt;/p&gt;
&lt;h2 id="accessibility-mattered-too"&gt;Accessibility mattered too&lt;/h2&gt;
&lt;p&gt;The machine learning models ran on freely available Google Colab resources, though some calculations took hours. The mixed model&amp;rsquo;s large genetic covariance matrices required a specialized machine with roughly a terabyte of memory. Computing requirements were therefore part of the comparison, alongside prediction quality.&lt;/p&gt;
&lt;p&gt;The code is public, but restricted pedigree data prevents full reproduction from public inputs alone. The project is a research proof of concept, with further work needed on location precision, model settings, and validation before using its predictions to make planting decisions.&lt;/p&gt;
&lt;p&gt;This was my Spring 2020 thesis for UC Berkeley&amp;rsquo;s Master of Development Practice, advised by Professor David Zilberman. The
contains the code and full report.&lt;/p&gt;</description></item></channel></rss>