<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title>AI on Gustavo Peiretti</title>
		<link>https://gustavopeiretti.com/tags/ai/</link>
		<description>Recent content in AI on Gustavo Peiretti</description>
		<generator>Hugo</generator>
		<language>en</language>
		
		
		
		
			<lastBuildDate>Fri, 30 Oct 2026 00:00:00 +0000</lastBuildDate>
		
			<atom:link href="https://gustavopeiretti.com/tags/ai/index.xml" rel="self" type="application/rss+xml" />
			<item>
				<title>Adding an AI Tutor to a Flashcard App Without Trusting the LLM</title>
				<link>https://gustavopeiretti.com/adding-an-ai-tutor-to-a-flashcard-app-without-trusting-the-llm/</link>
				<pubDate>Fri, 30 Oct 2026 00:00:00 +0000</pubDate>
				<guid>https://gustavopeiretti.com/adding-an-ai-tutor-to-a-flashcard-app-without-trusting-the-llm/</guid>
				<description>&lt;p&gt;A flashcard tests recall, not understanding. Flip the card, read the answer,&#xA;and the question &amp;ldquo;did I actually get it?&amp;rdquo; is answered by you, and you are&#xA;the least reliable judge in the room. Overconfidence is the default: I kept&#xA;&lt;em&gt;believing&lt;/em&gt; I knew a word while being unable to use it in a sentence, and the&#xA;app had no way to tell the difference.&lt;/p&gt;&#xA;&lt;p&gt;I use &#xA;      &#xA;    &lt;a href=&#34;https://gustavopeiretti.com/projects/lexistack/&#34;&gt;LexiStack&lt;/a&gt; to learn vocabulary and technical&#xA;concepts for myself, and that gap, between &amp;ldquo;I recognize this&amp;rdquo; and &amp;ldquo;I can use&#xA;this&amp;rdquo;, is exactly what a tutor closes. So I built one in: for every card in&#xA;a study session, the app now asks me to &lt;em&gt;do&lt;/em&gt; something with the term, an LLM&#xA;checks whether my answer actually shows understanding, and if it doesn&amp;rsquo;t, it&#xA;explains the gap. The AI never grades the card on its own. It suggests, and&#xA;I decide.&lt;/p&gt;&#xA;&lt;p&gt;LexiStack already used an LLM to&#xA;&lt;em&gt;generate content&lt;/em&gt; (card suggestions, deck generation); this was the jump to&#xA;AI as an &lt;em&gt;interaction layer&lt;/em&gt; during the study session. And it raised the&#xA;question that shaped every decision below: &lt;strong&gt;how do you add AI to a feature&#xA;whose core loop, the review plan that decides when each card comes back,&#xA;must never break?&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;div class=&#34;mermaid&#34; align=&#34;center&#34;&gt;&#xA;  &#xA;graph TD&#xA;    A[Card revealed] --&gt; B[Task shown&lt;br/&gt;from client-side template]&#xA;    B --&gt; C[User types answer]&#xA;    C --&gt; D[&#34;POST /api/tutor/cards/{id}/validate&#34;]&#xA;    D --&gt; E{AI available?}&#xA;    E --&gt;|no| F[503, manual session continues]&#xA;    E --&gt;|yes| G[LLM returns verdict + feedback]&#xA;    G --&gt; H[Grade derived server-side&lt;br/&gt;from the verdict]&#xA;    H --&gt; I[Suggested grade highlighted]&#xA;    I --&gt; J[User confirms or overrides]&#xA;    J --&gt; K[&#34;POST /api/study/{id}/review&lt;br/&gt;review plan updates&#34;]&#xA;&#xA;&lt;/div&gt;</description>
			</item>
	</channel>
</rss>
