<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>LLM / RAG |</title><link>https://AaronScherf.github.io/tags/llm-/-rag/</link><atom:link href="https://AaronScherf.github.io/tags/llm-/-rag/index.xml" rel="self" type="application/rss+xml"/><description>LLM / RAG</description><generator>HugoBlox Kit (https://hugoblox.com)</generator><language>en-us</language><lastBuildDate>Thu, 01 Oct 2026 00:00:00 +0000</lastBuildDate><image><url>https://AaronScherf.github.io/media/sharing.jpg</url><title>LLM / RAG</title><link>https://AaronScherf.github.io/tags/llm-/-rag/</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>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>Turning Dense Math Notes into Commute Podcasts</title><link>https://AaronScherf.github.io/blog/audio_generator_podcasts/</link><pubDate>Thu, 01 Oct 2026 00:00:00 +0000</pubDate><guid>https://AaronScherf.github.io/blog/audio_generator_podcasts/</guid><description>&lt;p&gt;I built the
to make course notes available away from a screen. Reading a mathematical document aloud requires more than sending its text to a speech engine: formula commands need to become spoken language first. As an illustrative example, E[X] should become &amp;ldquo;the expected value of X,&amp;rdquo; not a recital of brackets and formatting commands.&lt;/p&gt;
&lt;p&gt;The first complete recording exposed a different problem: it was three hours and 22 minutes long. Generating a valid MP3 had solved file production, but left navigation through a long set of notes unresolved. I changed the output to separate episodes grouped around headings, with an index showing which sections went into each file.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;This October 1, 2026 post describes the September development run. The dated update below separates later changes from that result.&lt;/em&gt;&lt;/p&gt;
&lt;h2 id="translate-the-notation-before-speaking"&gt;Translate the notation before speaking&lt;/h2&gt;
&lt;p&gt;Simple replacements left too much raw formula syntax behind. A local model could rewrite the notation, but the recorded test on a roughly 122,000-character note took about six hours. The next version sent mathematical passages to cloud models while leaving plain prose alone. Cleanup and speech synthesis stayed local.&lt;/p&gt;
&lt;p&gt;The amount of notation determined which model handled each passage. Shorter requests could run concurrently, and a later change let sections share one dispatch queue rather than waiting for each section in turn. That brought preparation of the narration text to 3.8 minutes in the September 9 run.&lt;/p&gt;
&lt;h2 id="separate-preparation-from-production"&gt;Separate preparation from production&lt;/h2&gt;
&lt;p&gt;Speech synthesis took another 19.4 minutes with three local Piper workers. The complete run therefore took 23.2 minutes and produced nine files. Those numbers describe one difficult input, not how long every course&amp;rsquo;s notes will take.&lt;/p&gt;
&lt;p&gt;The episodes targeted 10-20 minutes, but one section with no internal headings became an episode of about 62 minutes. The result was not nine uniformly short recordings. It also did not establish whether listening would help me understand or retain the material; that needs listening and content review, beyond generating files.&lt;/p&gt;
&lt;p&gt;Regeneration works at the source-file level: the saved state uses a fingerprint of the whole note. Editing any part regenerates all its episodes, while unchanged source files can be skipped.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Update, October 16, 2026:&lt;/strong&gt; the current code can divide oversized sections at paragraph boundaries, following an October 10 fix. One indivisible paragraph can still exceed the target, and a new listening check is needed to assess the changed output. The saved narration text provides a way to inspect formula rewrites before relying on the audio. The
covers output locations, textbook behavior, and the remaining limits.&lt;/p&gt;</description></item><item><title>Tutor Diagnosis &amp; Hint Generator</title><link>https://AaronScherf.github.io/projects/academic-hub/tutor_diagnosis/</link><pubDate>Mon, 28 Sep 2026 00:00:00 +0000</pubDate><guid>https://AaronScherf.github.io/projects/academic-hub/tutor_diagnosis/</guid><description>&lt;p&gt;A correct conclusion can hide a gap in the argument, while an otherwise sound attempt may use a method the course has not introduced. Tutor Diagnosis examines those differences separately: whether the result is right, whether the steps are justified, and whether the explanation fits the course&amp;rsquo;s definitions and methods. Its scores are model feedback for review, not instructor grades.&lt;/p&gt;
&lt;p&gt;The tool can also give a hint before I have a full attempt. It searches course material for a useful direction and aims to leave the final derivation to me. When the available passages do not cover the topic, it labels a general hint instead of attaching an unsupported course reference.&lt;/p&gt;
&lt;p&gt;An &lt;strong&gt;illustrative learning loop&lt;/strong&gt;, not a transcript or a new test result:&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;Claim:&lt;/strong&gt; Every even integer is divisible by four.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Attempt:&lt;/strong&gt; It works for 4 and 8, so it must hold for all even integers.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Hint:&lt;/strong&gt; What would you need to check beyond those two examples?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Revision:&lt;/strong&gt; Two is even but not divisible by four. One counterexample disproves the claim.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;The point is to identify the reasoning gap: examples that support a claim do not establish that it holds in every case. For course problems, the tool compares an attempt with a reference answer and retrieved passages, then names the most important gap to revisit.&lt;/p&gt;
&lt;h2 id="a-fresh-solution-for-comparison"&gt;A fresh solution for comparison&lt;/h2&gt;
&lt;p&gt;A separate solver receives the question without the tutor&amp;rsquo;s earlier answer or the source passages used to write it. In a recorded econometrics trial, this second solution identified an intercept condition the first answer had omitted. The user still compares both arguments; agreement or disagreement is not automatically resolved into a verdict.&lt;/p&gt;
&lt;p&gt;Other recorded checks included identifying an intentionally flawed regression argument and producing a hint on a microeconomics problem without a final derivation. Those are limited examples of the workflow, not evidence that feedback will be accurate on every assignment.&lt;/p&gt;
&lt;p&gt;Course-scoped logs preserve attempts, hints, feedback, and solution comparisons for later summaries. The
describes the trials. This is a set of tools within
; the separate
tracks an interactive session and applies different conversation rules.&lt;/p&gt;</description></item><item><title>Audio Generator</title><link>https://AaronScherf.github.io/projects/academic-hub/audio_generator/</link><pubDate>Wed, 09 Sep 2026 00:00:00 +0000</pubDate><guid>https://AaronScherf.github.io/projects/academic-hub/audio_generator/</guid><description>&lt;p&gt;Audio Generator turns course notes into MP3 episodes for listening away from a screen. Mathematical notation needs an extra step: a speech engine can read words, but raw formula commands often sound unintelligible. The tool rewrites that notation into spoken language before synthesizing the recording.&lt;/p&gt;
&lt;p&gt;For an &lt;strong&gt;illustrative translation&lt;/strong&gt;, E[X] becomes &amp;ldquo;the expected value of X.&amp;rdquo; Denser equations need more than symbol replacement to preserve what the expression means. The pipeline sends math-heavy passages to a cloud model for that rewrite, while text cleanup and speech synthesis run locally. Plain prose can skip the model call.&lt;/p&gt;
&lt;p&gt;Notes are split into episodes targeting 10–20 minutes. The current code can divide oversized sections at paragraph boundaries; one indivisible paragraph may still exceed the target. Textbook inputs follow a different path and currently produce one MP3 per source file. Editing any part of a note regenerates all of that file&amp;rsquo;s episodes; unchanged sources can be skipped.&lt;/p&gt;
&lt;p&gt;The September 9, 2026 stress test used one equation-dense, roughly 122,000-character note. It took 3.8 minutes to prepare the narration and another 19.4 minutes to synthesize speech, producing nine files in 23.2 minutes overall. One episode was about 62 minutes long. That historical result predates the paragraph-splitting fix; a new listening test is needed to judge the revised output.&lt;/p&gt;
&lt;p&gt;The local model tried earlier took about six hours on the same difficult input. Cloud rewriting reduced the wait but introduced API cost. Its speed does not establish that every formula was explained correctly, so the saved narration text provides something to inspect before relying on the audio.&lt;/p&gt;
&lt;p&gt;
and
now exist, but an automatic weekly-summary-to-audio workflow is not established. Notes audio is stored with the larger course resources, outside tablet notes sync. The
describes current output and regeneration behavior.&lt;/p&gt;</description></item><item><title>Problem Corpus Extraction</title><link>https://AaronScherf.github.io/projects/academic-hub/problem_corpus/</link><pubDate>Sun, 06 Sep 2026 00:00:00 +0000</pubDate><guid>https://AaronScherf.github.io/projects/academic-hub/problem_corpus/</guid><description>&lt;p&gt;A useful practice collection needs more than a list of questions: it needs to say where each question came from and what kind of answer accompanies it. Problem Corpus Extraction gathers exercises from course materials and preserves that distinction. A student&amp;rsquo;s handwritten attempt stays labelled as an attempt.&lt;/p&gt;
&lt;p&gt;That choice came from inspecting the available materials. Some exercises had no answer; others had the student&amp;rsquo;s working beside them, with no basis for calling it an answer key. The stored records therefore mark accompanying text as a student attempt or leave the solution absent. The extractor does not turn an unverified derivation into a verified one.&lt;/p&gt;
&lt;p&gt;A &lt;strong&gt;clearly illustrative card&lt;/strong&gt;, rather than an excerpt from private coursework:&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;Question:&lt;/strong&gt; Show that the sum of two even integers is even.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Source:&lt;/strong&gt; Example worksheet, Question 2.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Accompanying work:&lt;/strong&gt; Student attempt, not checked.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;The tool first detects numbered question boundaries, then asks a model to separate each statement from any accompanying solution and assign a short topic label. It stores the results by course and skips unchanged files on later runs. A failed extraction can be recorded without discarding other successful questions.&lt;/p&gt;
&lt;p&gt;A September 2026 math-camp run produced 196 records from eight problem-set files, with no reported extraction failures. Four slide files had no recognized numbered-question boundaries and were skipped. That is evidence of the run&amp;rsquo;s output, not an accuracy audit of all 196 statements or solutions.&lt;/p&gt;
&lt;p&gt;The current tool stops at creating the stored collection. Connecting it to
remains separate work; that generator currently retrieves its own examples. The
explains the output and provenance rules.&lt;/p&gt;</description></item><item><title>Problem Generation Sub-Agent</title><link>https://AaronScherf.github.io/projects/academic-hub/problem_generation/</link><pubDate>Sun, 06 Sep 2026 00:00:00 +0000</pubDate><guid>https://AaronScherf.github.io/projects/academic-hub/problem_generation/</guid><description>&lt;p&gt;Extra practice is most useful when it exercises the method I am trying to learn. Problem Generation uses examples from my course to draft a new question and worked solution, then checks two things separately: whether the solution is mathematically valid and whether it uses the requested technique. A correct proof by a different method may miss the point of the exercise.&lt;/p&gt;
&lt;p&gt;That distinction came from actual trials. A model asked for a proof using explicit error bounds, known as an epsilon-delta argument, kept using a different approach from its retrieved examples. Splitting the review into &amp;ldquo;requested technique&amp;rdquo; and &amp;ldquo;correctness&amp;rdquo; caught those mismatches, although the local model still failed to produce an accepted answer in two full trials. The check exposed a limitation; it did not make the model capable of solving the task.&lt;/p&gt;
&lt;p&gt;An &lt;strong&gt;illustrative request&lt;/strong&gt; makes the difference easier to see:&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;Practice question:&lt;/strong&gt; Show that the sequence 1/n approaches zero.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Requested method:&lt;/strong&gt; Use the definition of convergence.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Solution sketch:&lt;/strong&gt; For any positive error tolerance ε, choose an integer N greater than 1/ε. Whenever n is larger than N, the distance 1/n from zero is less than ε.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Checking the sketch means inspecting both the inequalities and the use of the definition, rather than accepting a graph or a bare statement of the limit. This is an invented demonstration, not a transcript of a generation trial.&lt;/p&gt;
&lt;h2 id="course-examples-guide-the-draft"&gt;Course examples guide the draft&lt;/h2&gt;
&lt;p&gt;The
finds problem-set passages for style and difficulty, plus textbook passages when available. The generator will not proceed without style examples, but can work without textbook passages. A weakly related style match can also pull the draft off topic; the closest available example is not necessarily a suitable one.&lt;/p&gt;
&lt;p&gt;Generation now defaults to Gemini, with API cost. In the September 6, 2026 comparison, nine trials across three constrained topics passed the model checks and recorded manual review, while the local alternative had struggled with the requested method. That narrow result motivated the default; it does not establish reliable mathematics across a course. Local generation remains optional.&lt;/p&gt;
&lt;p&gt;The second check is another model call, so it can repeat the first call&amp;rsquo;s mistakes. Earlier trials accepted flawed reasoning, including a circular argument. Rejected attempts can be revised within a bounded retry loop, but students still need to inspect the result.&lt;/p&gt;
&lt;p&gt;The separately extracted
is not yet connected to this generation loop. Current examples come through passage retrieval. The
documents that distinction and the generation options.&lt;/p&gt;</description></item><item><title>Video Lecture Notes</title><link>https://AaronScherf.github.io/projects/academic-hub/video_notes/</link><pubDate>Sun, 06 Sep 2026 00:00:00 +0000</pubDate><guid>https://AaronScherf.github.io/projects/academic-hub/video_notes/</guid><description>&lt;p&gt;A lecture series can contain several explanations of the same idea, spread across videos with unhelpful titles. Video Lecture Notes downloads the audio, transcribes it, and combines related lectures into study notes that can be searched alongside textbooks and handwritten notes. The combination step matters: it tries to turn a sequence of recordings into one explanation rather than leave a separate transcript for every file.&lt;/p&gt;
&lt;p&gt;One trial exposed a surprisingly basic limit. A three-video group produced a note reflecting only one video&amp;rsquo;s content because the local model was receiving only the end of the combined transcript. The shared model helper now requests enough context for the prompt. Rechecking showed better coverage and structure, although reliable links from each concept to the exact video moment remain unfinished.&lt;/p&gt;
&lt;h2 id="from-recording-to-study-note"&gt;From recording to study note&lt;/h2&gt;
&lt;p&gt;Audio download, speech transcription, and note synthesis run locally. The transcript retains timed segments; the synthesis model receives them when drafting the combined note. Registering that note with the
uses the existing classification and embedding API calls, so the full searchable workflow is not entirely offline.&lt;/p&gt;
&lt;p&gt;Grouping first uses playlist context and recognizable lecture-series titles. When that context is insufficient, it can compare transcript contents. This saves manual sorting, but shared vocabulary is not the same as belonging to the same lecture: the recorded trial grouped some differently numbered videos together and split another lecture&amp;rsquo;s two parts.&lt;/p&gt;
&lt;p&gt;For an &lt;strong&gt;illustrative output&lt;/strong&gt;, a note might organize &amp;ldquo;Sets and functions&amp;rdquo; into definitions, examples, and a comparison of related ideas. That describes the intended format, not an excerpt from the recorded run. To check an explanation, I still need the recordings and transcripts; a general video link at the end is less useful than a precise reference beside the claim.&lt;/p&gt;
&lt;h2 id="what-the-trial-covered"&gt;What the trial covered&lt;/h2&gt;
&lt;p&gt;The September 2026 record covers eight videos from a 105-video Math Camp playlist, across two passes. They produced five indexed notes. That establishes a working download-to-note path on a subset, not full-playlist coverage or complete retention of every explanation.&lt;/p&gt;
&lt;p&gt;Long groups remain expensive to synthesize on CPU hardware, and the remaining timestamp and grouping issues affect practical review. The
and linked status record distinguish the implemented workflow from those open checks.&lt;/p&gt;</description></item><item><title>Visualization Sub-Agent</title><link>https://AaronScherf.github.io/projects/academic-hub/visualization/</link><pubDate>Thu, 03 Sep 2026 00:00:00 +0000</pubDate><guid>https://AaronScherf.github.io/projects/academic-hub/visualization/</guid><description>&lt;p&gt;A formula for gradient descent describes repeated steps toward a minimum. A picture can show what those steps do: the prepared example in this tool traces a path across the contours of a bowl-shaped surface toward its center. I can zoom in and inspect the points alongside the written explanation, rather than infer the whole path from the update rule.&lt;/p&gt;
&lt;p&gt;The important distinction is how that picture is made. A small library covers familiar concepts with prepared Plotly charts, which run without a chart-generation model call. For other topics, the tool asks a model to write chart code using the question and retrieved course passages. That opens up more concepts, but introduces another judgment: a script can run successfully while illustrating the wrong idea.&lt;/p&gt;
&lt;h2 id="a-plot-beside-the-answer"&gt;A plot beside the answer&lt;/h2&gt;
&lt;p&gt;Visualization is optional within
. A report can combine the question, answer, source references, and interactive chart in one HTML file. If chart generation fails, the text report can still be produced. A recorded September 6, 2026 trial combined a
, its solution, and an embedded interactive plot in the same report.&lt;/p&gt;
&lt;p&gt;Generated charts currently use Gemini by default, with API cost. Local Ollama generation is an explicit alternative, but it timed out or produced broken scripts in the recorded comparison. Gemini succeeded twice on the same request. Two successes are useful evidence for that change of default, not a broad chart-accuracy evaluation.&lt;/p&gt;
&lt;h2 id="running-code-is-one-check"&gt;Running code is one check&lt;/h2&gt;
&lt;p&gt;The tool executes generated code with a time limit, a separate working directory, and an environment that excludes inherited API secrets. Execution errors can be returned to the model for a bounded retry. These measures limit particular failure modes; the process is not a comprehensive security sandbox.&lt;/p&gt;
&lt;p&gt;Past scripts that ran successfully can be offered as examples to later generation. They stay separate from the prepared templates because successful execution alone does not make an example mathematically correct. Whether that small example store improves results over sustained use remains unmeasured.&lt;/p&gt;
&lt;p&gt;Template matching also needs care: &amp;ldquo;convergence in probability&amp;rdquo; should not receive a generic series-convergence plot just because both contain the same word. Inspecting what the chart represents remains part of using it. The
explains templates, generation, and the execution limits.&lt;/p&gt;</description></item><item><title>Journal Discovery Pipeline</title><link>https://AaronScherf.github.io/projects/ai-research-assistant/journal_discovery/</link><pubDate>Wed, 02 Sep 2026 00:00:00 +0000</pubDate><guid>https://AaronScherf.github.io/projects/ai-research-assistant/journal_discovery/</guid><description>&lt;p&gt;A search for &amp;ldquo;disaster resilience&amp;rdquo; can return papers about infrastructure, recovery, public health, or business continuity. Journal Discovery lets me specify the angle I want, then compares that description with candidate abstracts before trying to download anything. The comparison runs locally, helping narrow a broad literature search without asking a language model to judge every paper.&lt;/p&gt;
&lt;p&gt;The October 15, 2026 trial makes the stages concrete: a disaster-research query retrieved 60 candidates, accepted 15 as relevant, and downloaded seven PDFs. Eight accepted papers still needed manual access. Finding a candidate, obtaining its full text, and reading or evaluating it are separate accomplishments; the pipeline handles the first two only within the available access routes.&lt;/p&gt;
&lt;h2 id="grow-a-library-around-a-question"&gt;Grow a library around a question&lt;/h2&gt;
&lt;p&gt;The starting point can be a topic or a researcher&amp;rsquo;s name. OpenAlex, an academic works catalog, supplies candidates and bibliographic information. A locally computed representation of each abstract is compared with my relevance description. When an abstract is unavailable, title-based scoring is a weaker signal; names and subject labels also need judgment.&lt;/p&gt;
&lt;p&gt;A citation-following mode offers another route: find newer papers citing material already in the library, review the proposed list, then fetch the selected papers. A citation alone never authorizes that download step or establishes relevance.&lt;/p&gt;
&lt;p&gt;The downloader tries open-access sources and the configured institutional route. If a publisher requires ordinary browser access, the paper goes onto a linked manual-download list. I use my library access in the browser and save the PDF; the tool does not solve publisher access challenges. Downloaded files are checked as PDFs and written through temporary files so an interrupted transfer does not leave a partial final file.&lt;/p&gt;
&lt;h2 id="discovery-is-upstream-of-reading"&gt;Discovery is upstream of reading&lt;/h2&gt;
&lt;p&gt;
separately converts and indexes the files. Reconciliation can recognize manually saved papers by their converted contents, rather than depending on filenames.&lt;/p&gt;
&lt;p&gt;Two maintenance operations have different authority. The older metadata audit can automatically reconcile mechanical folder and tag differences against its reference data, while flagging title or author mismatches. The newer classification mode uses stored OpenAlex Topics to propose folder and tag decisions for human acceptance. It is not an automatic reading of each paper&amp;rsquo;s argument.&lt;/p&gt;
&lt;p&gt;Direct inspection found the 15 accepted disaster papers on topic in that trial; a separate author query accepted six and downloaded one. Those are limited runs. Converted chart descriptions may also omit plotted values, so later search results still need checking against the PDF. The
and linked October status record give the current workflow and evidence.&lt;/p&gt;</description></item><item><title>Journal Article Transcription</title><link>https://AaronScherf.github.io/projects/ai-research-assistant/journal_article_transcription/</link><pubDate>Tue, 01 Sep 2026 00:00:00 +0000</pubDate><guid>https://AaronScherf.github.io/projects/ai-research-assistant/journal_article_transcription/</guid><description>&lt;p&gt;Finding a paper is only the start; later I need to locate the argument, method, or result inside it. Journal Article Transcription converts available article PDFs into searchable text with references back to their pages. A paper&amp;rsquo;s contents can then appear beside my research notes in a search result.&lt;/p&gt;
&lt;p&gt;The converter reuses the same machinery as the
. Clean digital text can be extracted locally; harder pages need transcription from their images. The current default prepares task cards for an agent working through my subscription, then validates submitted work before writing and indexing it. Search summaries and embeddings still use API calls, even on that transcription route.&lt;/p&gt;
&lt;p&gt;A separate metered-API route remains available. Pending agent work stays pending unless API fallback is explicitly requested; it is not silently sent for paid transcription. Very long documents are flagged for a person&amp;rsquo;s decision rather than automatically sent to the more expensive textbook converter.&lt;/p&gt;
&lt;p&gt;The older September 2026 trial converted and indexed three distinct papers. A fourth file was an exact duplicate, and a topic query found the relevant papers alongside the essay collection. Those results establish the earlier conversion-and-search path; they are not a new live trial of the subscription task-card workflow.&lt;/p&gt;
&lt;p&gt;Page references make checking easier, but converted prose cannot preserve everything a figure communicates. Equations, chart labels, and extraction errors still deserve comparison with the PDF.&lt;/p&gt;
&lt;p&gt;PDFs can come from
or files I add myself. Conversion registers their text with the
;
brings Word documents into that same collection. The
describes the task-card and API routes.&lt;/p&gt;</description></item><item><title>Research Notes Conversion</title><link>https://AaronScherf.github.io/projects/ai-research-assistant/research_notes_conversion/</link><pubDate>Tue, 01 Sep 2026 00:00:00 +0000</pubDate><guid>https://AaronScherf.github.io/projects/ai-research-assistant/research_notes_conversion/</guid><description>&lt;p&gt;An old research idea is easier to revisit when I can find it beside the papers that discuss the same topic. Research Notes Conversion brings Word essays and research notes into that search collection. It reads the document&amp;rsquo;s existing headings and formatting directly, so the conversion itself needs neither image recognition nor an AI model.&lt;/p&gt;
&lt;p&gt;Finding a passage also needs a useful locator. Word documents do not carry the PDF page markers the search tools originally expected. The indexer now uses headings where available and paragraph numbers as a fallback, so a short note can be cited without inventing a page number.&lt;/p&gt;
&lt;p&gt;For an &lt;strong&gt;illustrative conversion&lt;/strong&gt;, a heading such as &lt;strong&gt;Research idea&lt;/strong&gt; and its following paragraphs become a heading and ordinary text in the searchable version. A reference such as &lt;strong&gt;Paragraphs 4–6&lt;/strong&gt; tells me where to look within that note. This demonstrates the format, not an excerpt from my private writing.&lt;/p&gt;
&lt;p&gt;The original Word file stays in place. Conversion creates a Markdown copy, retaining headings, emphasis, and lists. Optional registration with the
adds a catalog description and a representation used for search, using API calls; conversion alone remains local.&lt;/p&gt;
&lt;p&gt;Reusing the course-material indexer exposed a useful mismatch: its original document labels tried to classify personal essays as textbooks or handwritten notes. Giving the research collection its own vocabulary fixed that distinction. Search also keeps each result&amp;rsquo;s collection identity, so two folders both named &amp;ldquo;notes&amp;rdquo; cannot be confused merely because their names match.&lt;/p&gt;
&lt;p&gt;The early validation used 19 essay and research-note files. After the classification and locator fixes, topic queries could search this collection and Academic Hub together, returning relevant material from the appropriate sources. That is a limited recorded trial, not evidence that every query will find everything relevant.&lt;/p&gt;
&lt;p&gt;The converter still works on selected local files. Direct Google Drive ingestion and a complete literature-review workflow are beyond its current interface.
adds papers to the same search infrastructure; the
documents conversion and indexing options.&lt;/p&gt;</description></item><item><title>RAG Analysis</title><link>https://AaronScherf.github.io/projects/academic-hub/rag_analysis/</link><pubDate>Sun, 30 Aug 2026 00:00:00 +0000</pubDate><guid>https://AaronScherf.github.io/projects/academic-hub/rag_analysis/</guid><description>&lt;p&gt;RAG Analysis answers a question using passages found in my textbooks and course notes, with references back to the material it used. That lets me inspect an explanation and continue reading at its source. The reference is a starting point for checking the answer, not a guarantee that the model interpreted it correctly.&lt;/p&gt;
&lt;p&gt;One useful choice is limiting how many passages a single file can contribute. Otherwise, a relevant textbook can fill the available space and crowd out lecture notes or another author&amp;rsquo;s explanation. Follow-up questions are also rewritten using the recent conversation, so &amp;ldquo;explain that differently&amp;rdquo; becomes a specific question the search tools can use.&lt;/p&gt;
&lt;p&gt;A &lt;strong&gt;clearly illustrative example&lt;/strong&gt;, rather than a quotation from a recorded answer:&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;Question:&lt;/strong&gt; What does the spectral theorem help explain about a real symmetric matrix?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Answer sketch:&lt;/strong&gt; It gives perpendicular directions along which the transformation acts by scaling, making its action easier to describe.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Reference format:&lt;/strong&gt; Section 7.4, pages 264–266.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;The name RAG means &lt;strong&gt;retrieval-augmented generation&lt;/strong&gt;: find relevant passages first, then supply them to the model writing the answer. This project reuses the
for that search. An August 2026 trial answered a spectral-theorem question using two source files; a follow-up exchange also exercised the conversation-based search step. Those were specific trials, not a broad evaluation of answer accuracy.&lt;/p&gt;
&lt;h2 id="what-is-remembered"&gt;What is remembered&lt;/h2&gt;
&lt;p&gt;The running chat retains its conversation, but restarting the process does not restore the full dialogue. With a course selected, the tool can save answer, hint, draft-feedback, and verification events. Recent recorded learning gaps can inform later answers, and a session recap can turn the recorded discussion into a study note.&lt;/p&gt;
&lt;p&gt;Requesting a report also saves the answer as a note with its source references. Those references identify the passages in the
, so
can reopen that material and develop a short answer into fuller explanations and examples. The
offers another starting point when I already have a topic list. Saved notes and logs survive separately from the live chat history.&lt;/p&gt;
&lt;p&gt;A companion resolver answers question markers in handwritten notes. Its recorded seven-question run included four source-grounded answers and three marked as ungrounded. General answers remain leads to check, and retrieving a handful of passages is too narrow to establish comprehensive coverage of a week&amp;rsquo;s study.&lt;/p&gt;
&lt;p&gt;The
describes the current interfaces.
adds feedback on an attempt; the separate
manages an ongoing tutoring session.&lt;/p&gt;</description></item><item><title>Source Indexer</title><link>https://AaronScherf.github.io/projects/academic-hub/source_indexer/</link><pubDate>Sun, 30 Aug 2026 00:00:00 +0000</pubDate><guid>https://AaronScherf.github.io/projects/academic-hub/source_indexer/</guid><description>&lt;p&gt;A question about eigenvalues might belong with a textbook proof, a lecture explanation, or an exercise I have already attempted. Source Indexer searches converted course materials in two stages: first finding promising documents, then locating passages inside them. The result includes a heading, page, or paragraph reference so I can continue reading where the match came from.&lt;/p&gt;
&lt;p&gt;The search catalog has a record for each document, much like a library card with a brief description and subject labels. These descriptions help find material; the longer summaries I study are written by the answering and guide tools. A record&amp;rsquo;s identity comes from the source file&amp;rsquo;s contents rather than its filename, so renaming a PDF does not have to create a new document. Course-level records narrow the search before it compares individual files.&lt;/p&gt;
&lt;h2 id="give-other-study-tools-something-to-read"&gt;Give other study tools something to read&lt;/h2&gt;
&lt;p&gt;The
and
converters register their outputs with the indexer. Search uses document descriptions, subject labels, and numerical representations of meaning to rank related material, then returns excerpts from selected documents. PDF-derived passages can carry page references; Word-derived notes without page markers can use headings or numbered paragraphs instead.&lt;/p&gt;
&lt;p&gt;Several study tools use that foundation:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
retrieves passages for a question and records their references with the answer.
can reopen the exact passages saved with a study summary to develop it further.&lt;/li&gt;
&lt;li&gt;
selects indexed sources for a topic list, then drafts and revises a longer guide.&lt;/li&gt;
&lt;li&gt;
retrieves evidence for explanations and connections, including the conditions a theorem needs.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The same search infrastructure supports
, keeping their collection identities distinct from course materials. Each downstream tool still has to interpret the passages it receives.&lt;/p&gt;
&lt;h2 id="similar-subjects-are-not-always-duplicate-notes"&gt;Similar subjects are not always duplicate notes&lt;/h2&gt;
&lt;p&gt;A lecture may exist as handwriting alone and as a later version with slides pasted beside the same handwriting. Searching both can crowd out other useful sources. Whole-document similarity was too broad to distinguish these pairs from different lectures on the same subject. The subset linker instead compares short word sequences from the handwritten portions, then hides the smaller version when its fuller counterpart survives the search. Both remain accessible.&lt;/p&gt;
&lt;p&gt;Links across different years of a course are another feature. The tool reuses existing document comparisons to identify related material, with uncertain matches held for review. That supports revisiting an older explanation without claiming every note has already been matched correctly.&lt;/p&gt;
&lt;p&gt;An early August 2026 checkpoint recorded 30 healthy document cards in one course, with 14 subject labels. Those are historical catalog checks, not current totals or a measure of search accuracy. Dense proofs and narrative notes can still need different passage boundaries.
can report missing or stale outputs, but its available repair is narrowly scoped rather than a general automatic cleanup. The
describes the catalog, search, and linking behavior.&lt;/p&gt;</description></item><item><title>Notes Post-Processing</title><link>https://AaronScherf.github.io/projects/academic-hub/postprocess_notes/</link><pubDate>Fri, 28 Aug 2026 00:00:00 +0000</pubDate><guid>https://AaronScherf.github.io/projects/academic-hub/postprocess_notes/</guid><description>&lt;p&gt;A square-root sign once became the letter p in my extracted notes. The text still looked printable and ordinary, so the initial checks let it through. Notes Post-Processing was built to catch that kind of plausible-looking error after transcription, then compare it with the original page before making a correction.&lt;/p&gt;
&lt;p&gt;Context on both sides of a symbol mattered. Looking only at the text before the corrupted character missed evidence that appeared afterward; a second local model could use that surrounding context to judge which positions deserved attention. The models flag candidates rather than deciding what the source must have said.&lt;/p&gt;
&lt;p&gt;The recorded motivating run repaired that square-root error on page 6 and left nine other flagged candidates unchanged. The notation below illustrates the difference:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Extracted text&lt;/th&gt;
&lt;th&gt;Corrected reading&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;p(h² + k²)&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;√(h² + k²)&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;The tool first identifies suspicious text using structural checks and local language-model scores. Surviving candidates go to an image-based comparison with the PDF page. It records whether the page was changed, left alone, or could not be verified.&lt;/p&gt;
&lt;p&gt;Testing across more notes exposed another problem: legitimate mathematical language can look unusual to a general language model. Joined words from an upstream spacing error also produced many false alarms. Fixing the spacing and tuning the checks reduced unnecessary flags, but did not eliminate them.&lt;/p&gt;
&lt;p&gt;False positives consume review time and image-checking calls. Comparing with an image supplies additional evidence; the model can still misread that evidence or make a bad change. Corrected material therefore needs spot checks rather than being treated as automatically clean.&lt;/p&gt;
&lt;p&gt;This tool follows
and helps improve material used by the
. The
describes the reproduced error and broader precision limits.&lt;/p&gt;</description></item><item><title>Notes Transcription Pipeline</title><link>https://AaronScherf.github.io/projects/academic-hub/notes_transcription/</link><pubDate>Thu, 27 Aug 2026 00:00:00 +0000</pubDate><guid>https://AaronScherf.github.io/projects/academic-hub/notes_transcription/</guid><description>&lt;p&gt;A question scribbled beside a lecture slide is easy to lose in a folder of drawings. Notes Transcription turns handwritten canvases and short course PDFs into searchable text, keeping references to the original material. It also separates pasted slides from handwriting, so later study tools can tell which explanation came from the lecturer and which note I added.&lt;/p&gt;
&lt;p&gt;Typed PDFs need care too. A small raised character can carry the difference between R² and R2, yet ordinary text extraction may flatten them into the same line. The pipeline uses character size and vertical position to recover exponents and subscripts locally before deciding whether a page needs AI transcription. That preserves useful structure without paying a model to reread every clean page.&lt;/p&gt;
&lt;p&gt;Once the output is registered with the
, its passages can be found alongside textbook material. That is what lets the
draw on a handwritten explanation, or
cite course notes behind a proposed connection. Transcription prepares the material those tools read.&lt;/p&gt;
&lt;h2 id="choose-how-much-of-the-source-needs-rereading"&gt;Choose how much of the source needs rereading&lt;/h2&gt;
&lt;p&gt;The PDF path uses three levels of work. Clean digital text can be extracted locally. If only a few pages look defective, those pages receive image-based repair with neighboring text for context. Handwriting, difficult exports, or documents with widespread defects need fuller transcription. Some note-taking exports can omit entire equation regions from their text layer, so an apparently clean extraction is insufficient evidence for trusting them.&lt;/p&gt;
&lt;p&gt;The recorded August 2026 comparison checked recovered exponents and subscripts across 13 pages from two documents against existing transcriptions. In one 43-page problem set, the local improvements reduced the detected defect rate from 63% to 5%, leaving two pages for repair. Those results concern the checked notation and routing decisions, not the accuracy of every word in the collection.&lt;/p&gt;
&lt;h2 id="drawings-and-pdfs-take-different-paths"&gt;Drawings and PDFs take different paths&lt;/h2&gt;
&lt;p&gt;Excalidraw saves its SVG images automatically. The canvas path cuts a tall drawing at whitespace gaps, transcribes the pieces with some preceding context, and produces both a raw transcript and an expanded note for search. Expansion adds prose and can introduce interpretation; the raw version and source drawing remain important for checking it. Handwritten questions can be marked for a separate answering tool.&lt;/p&gt;
&lt;p&gt;The current command-line workflow can prepare page images and task cards for a subscription agent, then validate the submitted cards before writing the usual outputs. This is a manual handoff. The metered API path is also available, and search indexing has its own API calls; running the scripts locally does not mean all processing stays on the device.&lt;/p&gt;
&lt;p&gt;Supported sources here are PDFs and Excalidraw scenes with exported images. Word-produced PDFs fit the PDF route; native Word documents are a separate conversion task. Most importantly, plausible-looking errors can survive transcription.
checks suspicious text against source images afterward, while the
explains the available routes.&lt;/p&gt;</description></item><item><title>Marker PDF Conversion</title><link>https://AaronScherf.github.io/projects/academic-hub/marker_conversion/</link><pubDate>Wed, 19 Aug 2026 00:00:00 +0000</pubDate><guid>https://AaronScherf.github.io/projects/academic-hub/marker_conversion/</guid><description>&lt;p&gt;Finding a word in a textbook PDF does not necessarily find the argument around an equation or the information inside a diagram. Marker PDF Conversion prepares those books for the study tools in Academic Hub: searchable text, mathematical notation, extracted figures, and references back to the source pages. A separate description pass makes figures easier to find through text search too.&lt;/p&gt;
&lt;p&gt;Where a long book is divided matters. A fixed page limit can cut through a table or a proof, so the converter looks for chapter boundaries in the PDF outline or printed contents first. It also distinguishes the PDF&amp;rsquo;s page position from the page number printed in the book. That lets a reference such as &amp;ldquo;see page 157&amp;rdquo; remain useful even when a preface has shifted the file&amp;rsquo;s numbering.&lt;/p&gt;
&lt;p&gt;The
makes the converted material available as referenced passages. A
can then select a textbook section for an explanation, while a
can cite evidence for the conditions linking two ideas. Preserving the book&amp;rsquo;s structure gives those later tools something specific to read and cite.&lt;/p&gt;
&lt;h2 id="rent-the-hardware-for-the-batch"&gt;Rent the hardware for the batch&lt;/h2&gt;
&lt;p&gt;Marker is an open-source tool for recognizing text and page layout. Here it runs on a temporary graphics-processing machine in Google Cloud, which provides the computing capacity needed for dense books. The model loads once for a batch rather than starting again for every title. Converted files return locally before the temporary machine and disk are removed; keeping an idle disk would continue to cost money.&lt;/p&gt;
&lt;p&gt;This is the heavier conversion route. Short documents and handwriting use
instead. The inputs are source PDFs I am authorized to process for my own study; the website does not distribute those books.&lt;/p&gt;
&lt;h2 id="keep-the-source-available-for-comparison"&gt;Keep the source available for comparison&lt;/h2&gt;
&lt;p&gt;In the recorded four-book check, printed-page labels were recovered for roughly 96-98% of pages, with no duplicate internal anchors. That is encouraging coverage across those layouts, with gaps still requiring the PDF page reference. It does not establish that every formula or cross-reference was transcribed correctly.&lt;/p&gt;
&lt;p&gt;The separate figure pass described 764 of 793 candidate images across five books, skipping 29 as decorative. Its derived text leaves the original conversion intact. Descriptions make a chart discoverable but cannot replace examining its axes, values, or visual argument in the source.&lt;/p&gt;
&lt;p&gt;Before spending GPU time, duplicate checks can reuse an existing conversion. Less certain matches remain subject to review. Recovery from memory failures also has a documented retry and escalation policy, tested separately from the content checks; those tests do not establish reliability across every cloud interruption.&lt;/p&gt;
&lt;p&gt;The
covers operation and costs. The page&amp;rsquo;s linked status records document the conversion, chapter, and figure trials.&lt;/p&gt;</description></item><item><title>Introducing Academic Hub</title><link>https://AaronScherf.github.io/blog/academic_hub/</link><pubDate>Tue, 18 Aug 2026 00:00:00 +0000</pubDate><guid>https://AaronScherf.github.io/blog/academic_hub/</guid><description>&lt;p&gt;Like any knowledge intensive task, taking a graduate course combines multiple sources of information in various formats: textbooks, lecture notes, presentation slides, problem sets, Youtube video explainers, old exams, and relevant research papers. The standard approach to combining these materials is haphazard, with relevant info spread across each category and only loosely connected by topic&amp;ndash;any given section of a syllabus might connect to half a dozen textbook chapters, meaning students spend a lot of time just finding the right source. If a topic depends on pre-requisite knowledge which the student is unfamiliar with (a common issue in my PhD program so far), looking back through foundational textbooks for the right content takes longer than learning the idea. When it comes time for exam review, notes are only loosely connected to problem sets and lecture slides, and none of these are linked to practice problems or prior exams. In short, students spend far too much time categorizing and retrieving relevant information, distracting from higher value learning processes, shifting pedagogical focus from the actual ideas to the mechanics of how different authors organize and refer to those ideas.&lt;/p&gt;
&lt;p&gt;My solution for my own coursework was the
. If all my materials could be converted to the same plain-text format, then organizing them into a searchable database with relevant categories and connections would be an easy task for any language model. As I developed methods to convert a larger variety of information sources, the potential applications for learning became more and more useful: from
that automatically answers my handwritten sidebar questions from lecture to more relevant study guides and
,
tailored to the specific topics which came up often in past exams, and even multi-round
that can help break down complex problems without revealing solutions.&lt;/p&gt;
&lt;p&gt;Most of these applications could be replicated with a standard online AI model, but the default agents lacked the context of my specific courses. Retrieval-augmented generation (RAG) models that can train on or incorporate specific files to produce more relevant answers are available, but dropping whole PDFs into a system like a Gemini Notebook is very token expensive, they waste most of their compute just processing inputs. By front-loading the transcription and indexing process, then standardizing it across my courses, I can run any type of LLM agent (subscription based, local, or API) and get highly relevant results based on my exact materials, with citations to source context, at a fraction of the cost. The more source materials I included, the more summaries and problem sets I generated, the better the collection becomes; by the end of the semester, I could just say &amp;ldquo;looking back at my previous notes and homeworks, help me review this section&amp;rdquo; and I could create much more useful review materials with far less effort.&lt;/p&gt;
&lt;figure&gt;&lt;img src="https://AaronScherf.github.io/blog/academic_hub/academic-hub-workflow.png"
alt="Textbooks, notes, and slides become searchable text; a question retrieves source passages that support separate answer and study-aid drafts for review."&gt;&lt;figcaption&gt;
&lt;p&gt;Converted materials provide a shared source collection for several study tools; their outputs still need review.&lt;/p&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;The Academic Hub pipeline is completely reproducible too. Each step is modular, so when I found that my initial transcription approach (using Gemini API credits) was becoming too costly, I was able to switch out specific steps with a subscription-based model (or a local GPU-based model). Applying the entire range of tools to a new course is as simple as dropping in a folder of old notes, slides, and problem sets. Courses can build on each other, so if a topic from Microeconomics I comes up again in Micro II, all of my previous notes can be used to inform the new questions and help me review. Once large PDFs are converted to markdown text files, the storage requirements are minimal&amp;ndash;I can
to my tablet via GitHub and Obsidian.&lt;/p&gt;
&lt;p&gt;While I built it to help study for courses, the processes involved can be applied to any type of knowledge base, from research papers to government reports. I&amp;rsquo;ve already started expanding the pipeline to academic research, to automate literature reviews and create a structured database of international development interventions and outcomes. I&amp;rsquo;m eager to expand the features for both and start applying them at a larger scale, including user testing to see if the tools are accessible to those without extensive backgrounds in computing, AI, or knowledge management.&lt;/p&gt;
&lt;p&gt;If you have an interesting use case you&amp;rsquo;d like to try, or just want to discuss the development process, please reach out to me by email at
or
. All of the code backing up the Academic Hub is available
as part of my larger AI-Sandbox project and each subproject has more details in the
. I welcome any questions or feedback as I continue to develop this project!&lt;/p&gt;</description></item></channel></rss>