<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>AI Projects |</title><link>https://AaronScherf.github.io/tags/ai-projects/</link><atom:link href="https://AaronScherf.github.io/tags/ai-projects/index.xml" rel="self" type="application/rss+xml"/><description>AI Projects</description><generator>HugoBlox Kit (https://hugoblox.com)</generator><language>en-us</language><lastBuildDate>Wed, 09 Sep 2026 00:00:00 +0000</lastBuildDate><image><url>https://AaronScherf.github.io/media/sharing.jpg</url><title>AI Projects</title><link>https://AaronScherf.github.io/tags/ai-projects/</link></image><item><title>The Resume Step That Became Faster When I Removed the AI</title><link>https://AaronScherf.github.io/blog/resume_parser_milestone/</link><pubDate>Wed, 09 Sep 2026 00:00:00 +0000</pubDate><guid>https://AaronScherf.github.io/blog/resume_parser_milestone/</guid><description>&lt;p&gt;The first structured import of my resume took over 90 minutes and still mixed up parts of the record. Replacing the model that organized the extracted text with ordinary parsing code brought that step down to about 1.5 seconds in the recorded run. The larger improvement was having explicit rules for where each fact belonged.&lt;/p&gt;
&lt;p&gt;The
is meant to help tailor applications without losing track of the experience behind them. It keeps a master record, uses a job description to guide the emphasis of a draft, and renders the result as a PDF. Before any of that can work, the master has to represent the source resume faithfully.&lt;/p&gt;
&lt;p&gt;An early version let the model write the master as free-form text. My source resume groups several roles under one employer, with a date range attached to the employer rather than every individual role. The model filled some missing date positions with locations. The result looked organized, but the meaning of a field had quietly changed.&lt;/p&gt;
&lt;p&gt;Giving every fact a named field helped. Employer, role, location, and dates no longer had to compete for the same space in a heading. Yet asking the local model to populate that structure introduced another set of problems: malformed output, joined lines that failed literal checks, and content that still landed in the wrong place. Fixing the formatting was not enough to establish that the record was right.&lt;/p&gt;
&lt;p&gt;The source had more regularity than the model-based approach was using. Section headings, date patterns, and the arrangement of roles supplied practical rules for a parser. The revised importer uses those rules to turn extracted PDF text into a structured master without a model call. That is the step behind the 1.5-second result; it is not the time to tailor and render a complete application, nor a benchmark across arbitrary resume layouts.&lt;/p&gt;
&lt;p&gt;Language generation still has a useful job later. A model can suggest which experience to emphasize and how to phrase a bullet for a particular opportunity. The surrounding code copies fixed fields from the master instead of asking the model to reproduce them. Bullet wording still needs review: preserving a date or a number does not establish that every implication of a rewritten sentence is faithful.&lt;/p&gt;
&lt;p&gt;This small project shares a concern with the academic tools: preserve a dependable source record, then make the interpretation easy to inspect. Here, the most effective change was recognizing which part of the job already had enough structure for code to do it directly.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Retrospective account prepared October 16, 2026, covering the September 9 milestone. The
and
document the sequence. The project page includes later developments.&lt;/em&gt;&lt;/p&gt;</description></item></channel></rss>