<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Peter Balog</title><description>Peter Balog creates digital experiences: SEO funnels, freelance teams, apps built in Claude and KPI systems. Projects, client work, side quests and writing.</description><link>https://peterbalog.com/</link><language>en</language><item><title>A model reaches for a dash in every second sentence</title><link>https://peterbalog.com/projects/a-model-reaches-for-a-dash/</link><guid isPermaLink="true">https://peterbalog.com/projects/a-model-reaches-for-a-dash/</guid><description>A language model follows a prompt rule most of the time, not every time. To keep em dashes out of ContentPeter’s copy, the rule moved from the prompt into code: a format step strips dashes from every draft, with no model call.</description><pubDate>Thu, 05 Nov 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;ContentPeter writes copy for eight channels. One of our house rules is small: no em dashes and no en dashes. Plain sentences, one idea each. Where a dash wants to go, a full stop or a comma goes instead.&lt;/p&gt;
&lt;h2 id=&quot;the-prompt-said-no&quot;&gt;The prompt said no&lt;/h2&gt;
&lt;p&gt;So the rule went into the prompt, in clear words. The model agreed. Then it used a dash in the next paragraph. In our drafts it reached for one in about every second sentence.&lt;/p&gt;
&lt;p&gt;Writing the rule louder did not help. Neither did writing it twice. A model follows a prompt rule most of the time, and most of the time is not good enough for a rule that shows on every page.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;“A prompt rule is followed most of the time. Code is followed always.”&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&quot;move-the-rule-into-code&quot;&gt;Move the rule into code&lt;/h2&gt;
&lt;p&gt;So the rule moved. After the writer is done, a format step cleans the copy for each channel. It makes no model call. It strips the dashes, the same way, every time.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-js&quot;&gt;// format step, after the writer. No model call.
copy = stripDashesText(copy)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The prompt still asks. The code makes sure. Now the writer can slip, and the reader never sees it.&lt;/p&gt;
&lt;h2 id=&quot;what-i-took-from-it&quot;&gt;What I took from it&lt;/h2&gt;
&lt;p&gt;Most problems with AI writing are not about how clever the model is. They are about guarantees. Decide which rules can bend. Put the ones that cannot bend into code, and test them.&lt;/p&gt;
&lt;p&gt;It is a small rule. But it changed how I build the rest of ContentPeter: anything a customer would notice on every page now lives in code, not in a prompt.&lt;/p&gt;
</content:encoded><category>Project</category><category>AI writing</category><category>prompts</category><category>ContentPeter</category><author>Peter Balog</author></item><item><title>APO Group</title><link>https://peterbalog.com/projects/apo-group/</link><guid isPermaLink="true">https://peterbalog.com/projects/apo-group/</guid><description>Content for APO Group, a press release distribution service for Africa and the Middle East. Revenue for the service grew 70%.</description><pubDate>Sun, 01 Jan 2023 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;APO Group distributes press releases across Africa and the Middle East. The content had to explain a complex service and turn readers into buyers.&lt;/p&gt;
&lt;figure class=&quot;quote&quot;&gt;&lt;blockquote&gt;&lt;p&gt;“Everything was designed in a way that prioritized value generation.”&lt;/p&gt;&lt;/blockquote&gt;&lt;figcaption&gt;Nicolas Pompigne-Mognard, Founder, APO Group&lt;/figcaption&gt;&lt;/figure&gt;
&lt;h2 id=&quot;result&quot;&gt;Result&lt;/h2&gt;
&lt;p&gt;Revenue for the service grew 70%.&lt;/p&gt;
</content:encoded><category>Client work</category><category>PR</category><category>B2B</category><category>content strategy</category><author>Peter Balog</author></item><item><title>ManyPixels</title><link>https://peterbalog.com/projects/manypixels/</link><guid isPermaLink="true">https://peterbalog.com/projects/manypixels/</guid><description>More than a year of content for ManyPixels, a B2B SaaS design service. Newsletter subscribers grew 231% over the engagement.</description><pubDate>Fri, 01 Jan 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;ManyPixels sells unlimited design to marketing teams. They needed a newsletter people kept opening, and a blog that brought those people in.&lt;/p&gt;
&lt;figure class=&quot;quote&quot;&gt;&lt;blockquote&gt;&lt;p&gt;“We worked with Peter for more than one year and were really happy with the results.”&lt;/p&gt;&lt;/blockquote&gt;&lt;figcaption&gt;Quentin Gilon, CEO, ManyPixels&lt;/figcaption&gt;&lt;/figure&gt;
&lt;h2 id=&quot;result&quot;&gt;Result&lt;/h2&gt;
&lt;p&gt;Newsletter subscribers grew 231% over the engagement.&lt;/p&gt;
</content:encoded><category>Client work</category><category>SaaS</category><category>newsletter</category><category>content</category><author>Peter Balog</author></item></channel></rss>