<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>Corneliu Croitoru</title><description>Patterns from building with AI.</description><link>https://corneliucroitoru.com/</link><item><title>The Search Grammar Pattern: Natural Language Search with LLMs</title><link>https://corneliucroitoru.com/writing/search-grammar-pattern/</link><guid isPermaLink="true">https://corneliucroitoru.com/writing/search-grammar-pattern/</guid><description>How I built natural language search for my movie app with one small LLM call, and the pattern behind it: describe the offer by its dimensions, not its rows.</description><pubDate>Sun, 04 Oct 2026 00:00:00 GMT</pubDate></item><item><title>Two towns named Calheta: debugging an LLM verification pipeline</title><link>https://corneliucroitoru.com/writing/two-towns-named-calheta/</link><guid isPermaLink="true">https://corneliucroitoru.com/writing/two-towns-named-calheta/</guid><description>A real receipt, refused three times, for three different reasons. Three bugs at three layers, and why designing the failure direction first made being wrong survivable.</description><pubDate>Sun, 04 Oct 2026 00:00:00 GMT</pubDate></item><item><title>There are characters you cannot see</title><link>https://corneliucroitoru.com/writing/characters-you-cannot-see/</link><guid isPermaLink="true">https://corneliucroitoru.com/writing/characters-you-cannot-see/</guid><description>Some Unicode characters render as nothing, and a model reads them as text. How I made prompt injection useless on my travel site. Not resisted. Useless.</description><pubDate>Mon, 28 Sep 2026 00:00:00 GMT</pubDate></item><item><title>178 reports in one afternoon: what a publish burst does to an LLM pipeline</title><link>https://corneliucroitoru.com/writing/publish-burst/</link><guid isPermaLink="true">https://corneliucroitoru.com/writing/publish-burst/</guid><description>A traveller published 178 trip reports at once. My site had 9 before that. The queue between the trigger and the model, and what held.</description><pubDate>Mon, 21 Sep 2026 00:00:00 GMT</pubDate></item><item><title>I pay an LLM to approve bad reviews</title><link>https://corneliucroitoru.com/writing/llm-approves-bad-reviews/</link><guid isPermaLink="true">https://corneliucroitoru.com/writing/llm-approves-bad-reviews/</guid><description>Every trip report goes through a model before readers see it. The most important line in that prompt is not about catching bad content.</description><pubDate>Mon, 14 Sep 2026 00:00:00 GMT</pubDate></item><item><title>You just write. The places find themselves.</title><link>https://corneliucroitoru.com/writing/places-find-themselves/</link><guid isPermaLink="true">https://corneliucroitoru.com/writing/places-find-themselves/</guid><description>You write the trip the way you would tell a friend. Minutes later the places you mentioned are on a map. Where the model&apos;s job ends.</description><pubDate>Mon, 07 Sep 2026 00:00:00 GMT</pubDate></item><item><title>The librarian pattern: how I keep my AI coding assistant from breaking my app</title><link>https://corneliucroitoru.com/writing/librarian-pattern/</link><guid isPermaLink="true">https://corneliucroitoru.com/writing/librarian-pattern/</guid><description>One index file, one doc per feature flow, and a 40-line bash hook. How I keep an AI coding assistant from breaking my app.</description><pubDate>Wed, 26 Aug 2026 00:00:00 GMT</pubDate></item></channel></rss>