<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Maksym Kamenchuk</title>
    <description>The latest articles on DEV Community by Maksym Kamenchuk (@nexflow).</description>
    <link>https://dev.to/nexflow</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4158524%2F2c394787-25c1-4cce-a27c-ce589161f9fd.jpg</url>
      <title>DEV Community: Maksym Kamenchuk</title>
      <link>https://dev.to/nexflow</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/nexflow"/>
    <language>en</language>
    <item>
      <title>I built an AI content agent that would rather drop a topic than make things up</title>
      <dc:creator>Maksym Kamenchuk</dc:creator>
      <pubDate>Fri, 02 Oct 2026 21:20:51 +0000</pubDate>
      <link>https://dev.to/nexflow/i-built-an-ai-content-agent-that-would-rather-drop-a-topic-than-make-things-up-5fhg</link>
      <guid>https://dev.to/nexflow/i-built-an-ai-content-agent-that-would-rather-drop-a-topic-than-make-things-up-5fhg</guid>
      <description>&lt;p&gt;Most “AI writes your blog” setups fail in the same way: not with bad style, but with a confidently written falsehood. For most niches that is embarrassing. For an insurance website it is a real problem — a wrong sentence about a legal obligation or the scope of cover can mislead a reader.&lt;/p&gt;

&lt;p&gt;This is how I designed an AI agent for &lt;a href="https://www.gopoistenie.sk/" rel="noopener noreferrer"&gt;gopoistenie.sk&lt;/a&gt;, a Slovak insurance website (motor liability, comprehensive cover, GAP, home and travel insurance). It prepares one article every week — and it is built so that &lt;strong&gt;a lack of facts is a reason to stop, not a reason to improvise&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  The brief was not “generate articles”
&lt;/h2&gt;

&lt;p&gt;The client needed regular content, because an insurance site lives on search: people look up what liability insurance covers or how GAP works, and if your site does not answer, someone else's will. But the real requirements were these:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Choose topics from real data&lt;/strong&gt;, not from whatever the model comes up with.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Write nothing that is not backed&lt;/strong&gt; by a verified source.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Never repeat&lt;/strong&gt; topics the site already covers.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Publish nothing automatically&lt;/strong&gt; — a person always has the final word.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  One weekly run, step by step
&lt;/h2&gt;

&lt;p&gt;The pipeline starts by itself every Monday at 6:00 with nobody involved:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Data analysis.&lt;/strong&gt; It reads Google Search Console and Google Analytics: which pages people read, which queries bring them in, where content is missing.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Topic choice.&lt;/strong&gt; Based on that data, the model picks one topic inside the site's areas — with a check against everything already published, so no duplicates.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Research from an allow-list of sources only.&lt;/strong&gt; Laws on slov-lex.sk, government bodies, the regulator (the National Bank of Slovakia) and insurers' own websites. Nothing else.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The stop rule.&lt;/strong&gt; If there are not enough confirmed facts for the topic, &lt;strong&gt;the article is not written and the topic is dropped.&lt;/strong&gt; No “fill the gap with general knowledge”.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Writing.&lt;/strong&gt; Claude writes the article in Slovak strictly from the collected facts.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Independent review.&lt;/strong&gt; A separate AI step checks the draft for factual errors, outdated data, invented references and consistency with the sources. A draft with problems goes back for rework automatically.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Draft, not post.&lt;/strong&gt; The checked article is saved to WordPress &lt;strong&gt;as a draft&lt;/strong&gt;.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Three design decisions that matter more than the prompt
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. An allow-list beats “be accurate”
&lt;/h3&gt;

&lt;p&gt;Telling a model to “only use reliable sources” does not work. Giving it a fixed list of sources and refusing to proceed without them does. The research step is the place where hallucinations are prevented — the writing step only has to stay inside the material it was given.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Dropping a topic is a valid outcome
&lt;/h3&gt;

&lt;p&gt;Most pipelines treat “no article this week” as a failure, so they are built to always produce something. Here it is a normal, expected result. That single decision removes the pressure that makes generated text drift into made-up specifics.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. The writer is not its own proofreader
&lt;/h3&gt;

&lt;p&gt;The model that wrote the text is not the step that approves it. A separate review step compares the draft with the sources before it is saved at all — just as with people, an author should not be their own editor.&lt;/p&gt;

&lt;h2&gt;
  
  
  What stayed with a person
&lt;/h2&gt;

&lt;p&gt;Publishing. The site owner reads the finished article in a dashboard and clicks &lt;strong&gt;Publish&lt;/strong&gt; or &lt;strong&gt;Reject&lt;/strong&gt;. Nothing else is required — but without that click, nothing reaches the site.&lt;/p&gt;

&lt;p&gt;That is a deliberate decision, not a technical limitation. The site is responsible for what it publishes, and that responsibility should not be handed to an automaton. The agent saves the work of finding a topic, gathering material and writing; the decision stays with a human.&lt;/p&gt;

&lt;h2&gt;
  
  
  The result
&lt;/h2&gt;

&lt;p&gt;The project is delivered and running every week. The client left a 5/5 review on the independent Slovak freelance portal Jaspravim.sk (in Slovak, translated): &lt;em&gt;“Maksym built an AI agent that drafts blog articles for regular publishing. A professional approach, prompt communication, and the work was finished quickly with no delays.”&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Takeaways if you are building something similar
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Put your effort into &lt;strong&gt;where facts come from&lt;/strong&gt;, not into prompt wording.&lt;/li&gt;
&lt;li&gt;Make &lt;strong&gt;“not enough data → stop”&lt;/strong&gt; an explicit, first-class path.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Separate generation and verification&lt;/strong&gt; into different steps.&lt;/li&gt;
&lt;li&gt;Keep a &lt;strong&gt;human approval step&lt;/strong&gt; wherever being wrong has a cost.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The same pattern — data-driven topic, verified sources, separate check, human approval — works in any field where accuracy matters: finance, legal, health, technical documentation.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Originally published as a case study on &lt;a href="https://nexflow.sk/en/case-ai-seo-articles" rel="noopener noreferrer"&gt;nexflow.sk&lt;/a&gt;. I build AI agents and automations for small businesses in Slovakia — see also &lt;a href="https://nexflow.sk/en/ai-agent-vs-chatbot" rel="noopener noreferrer"&gt;AI agent vs chatbot vs automation: what your company actually needs&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>llm</category>
      <category>agents</category>
      <category>seo</category>
    </item>
    <item>
      <title>Self-hosted n8n for business: VPS cost, security, backups and GDPR</title>
      <dc:creator>Maksym Kamenchuk</dc:creator>
      <pubDate>Fri, 02 Oct 2026 21:09:46 +0000</pubDate>
      <link>https://dev.to/nexflow/self-hosted-n8n-for-business-vps-cost-security-backups-and-gdpr-24ph</link>
      <guid>https://dev.to/nexflow/self-hosted-n8n-for-business-vps-cost-security-backups-and-gdpr-24ph</guid>
      <description>&lt;p&gt;“Self-hosted n8n is free” is true only about the licence. This article is about the rest — the server, the backups, the updates, and how much time it actually takes.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The n8n Community Edition carries no licence fee when self-hosted&lt;/strong&gt; — the source code is public and deploying it on your own server costs nothing.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Running it is not zero, though.&lt;/strong&gt; Budget for a small VPS (on the order of single-digit to low tens of euros a month), time for updates and working backups. At low workflow volume, n8n Cloud often works out cheaper on total cost once you count your own time.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Self-hosting pays off when you have at least one of these three reasons:&lt;/strong&gt; the data must not leave your infrastructure, the execution volume would be expensive in the cloud, or you need custom code and libraries the cloud does not allow. If you have none of them, do not buy self-hosting.&lt;/p&gt;

&lt;h2&gt;
  
  
  The real cost of self-hosting
&lt;/h2&gt;

&lt;p&gt;An honest comparison has to include the items that do not appear on an invoice. Here is the list I use when designing:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Item&lt;/th&gt;
&lt;th&gt;Self-hosted&lt;/th&gt;
&lt;th&gt;n8n Cloud&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Licence&lt;/td&gt;
&lt;td&gt;€0 (Community Edition)&lt;/td&gt;
&lt;td&gt;included in the subscription&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Server&lt;/td&gt;
&lt;td&gt;a small VPS, single-digit to low tens of € / month&lt;/td&gt;
&lt;td&gt;€0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Domain and certificate&lt;/td&gt;
&lt;td&gt;domain annually, HTTPS certificate free&lt;/td&gt;
&lt;td&gt;€0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Backups&lt;/td&gt;
&lt;td&gt;storage + setup&lt;/td&gt;
&lt;td&gt;handled by the provider&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Updates&lt;/td&gt;
&lt;td&gt;your time or a supplier's&lt;/td&gt;
&lt;td&gt;handled by the provider&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Monitoring and outages&lt;/td&gt;
&lt;td&gt;your time&lt;/td&gt;
&lt;td&gt;handled by the provider&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Subscription&lt;/td&gt;
&lt;td&gt;€0&lt;/td&gt;
&lt;td&gt;from €20 / month on annual billing (Starter, 2,500 executions)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Scaling as you grow&lt;/td&gt;
&lt;td&gt;a bigger server, one-off work&lt;/td&gt;
&lt;td&gt;a higher plan&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;n8n Cloud prices per the official n8n.io price list as at 5 September 2026. VPS prices depend on the provider and configuration — check both before deciding.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;A simple rule:&lt;/strong&gt; if maintenance takes you an hour a month and your cost rate is €20/h, self-hosting carries a hidden cost of €20 a month — roughly what the lowest cloud plan costs. The difference only starts to show at larger volumes, where cloud plans grow and a server does not.&lt;/p&gt;

&lt;h2&gt;
  
  
  What server you need
&lt;/h2&gt;

&lt;p&gt;For ordinary company load — tens to low hundreds of executions a day, mostly API calls and text handling — a small VPS is enough. It gets more demanding in three cases:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Large files.&lt;/strong&gt; Processing bulky PDFs, images or video needs more memory and disk space.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Concurrent executions.&lt;/strong&gt; If a workflow fires in dozens of instances at once, you need more capacity and a different configuration.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Your own database.&lt;/strong&gt; A production deployment should not run on the built-in file database — a separate database is more stable and backs up better.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Do not start with a big server “just in case”. It is more sensible to start small, watch the load and grow it when the numbers show it — with a VPS that is a matter of minutes.&lt;/p&gt;

&lt;h2&gt;
  
  
  Security — the minimum that is not optional
&lt;/h2&gt;

&lt;p&gt;n8n has access to your systems and holds the credentials to them. That makes it a sensitive piece of infrastructure, not “another app”.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;HTTPS and your own domain.&lt;/strong&gt; The interface must never be reachable over an unencrypted connection.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Strong authentication.&lt;/strong&gt; Access to the interface protected and restricted, ideally at the network or IP level too.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Credentials in environment variables.&lt;/strong&gt; Never hard-coded in a workflow. Whoever has access to a workflow should not automatically see passwords.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Updates.&lt;/strong&gt; n8n releases often and some releases address security. An un-updated instance is the biggest risk in the whole solution.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A separate environment for testing.&lt;/strong&gt; Do not debug on the production instance that has access to live data.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;The most common mistake I see:&lt;/strong&gt; an instance exposed to the internet with no access restriction, holding the credentials to every company system. That is not automation, that is a single point that opens everything at once.&lt;/p&gt;

&lt;h2&gt;
  
  
  Backups: what to back up and how to verify it
&lt;/h2&gt;

&lt;p&gt;With n8n there are three things to back up, and each is different:&lt;/p&gt;

&lt;h3&gt;
  
  
  Workflows
&lt;/h3&gt;

&lt;p&gt;They export as JSON. Ideally automatically and into versioned storage — then you know what changed and when.&lt;/p&gt;

&lt;h3&gt;
  
  
  Credentials
&lt;/h3&gt;

&lt;p&gt;Stored encrypted and tied to the instance's encryption key. Without a backup of that key they are unusable after a restore.&lt;/p&gt;

&lt;h3&gt;
  
  
  Database and history
&lt;/h3&gt;

&lt;p&gt;Execution records. Useful for tracing, but bulky — decide how long to keep them.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;A backup you have never restored is not a backup.&lt;/strong&gt; Try a restore on a clean server at least once and time how long it takes. That is the only way to find out you are not missing exactly that encryption key.&lt;/p&gt;

&lt;h2&gt;
  
  
  GDPR and where the data goes
&lt;/h2&gt;

&lt;p&gt;Self-hosting is often sold as “the GDPR solution”. That is a simplification that can be dangerous, so more precisely:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;What self-hosting solves:&lt;/strong&gt; data processed in a workflow does not pass through the automation platform provider's infrastructure. One processor fewer.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;What it does not solve:&lt;/strong&gt; if a workflow calls an external service — a language model, a translator, a data enrichment API — the data goes there. Self-hosting changes nothing about that.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;What it also does not solve:&lt;/strong&gt; the lawfulness of the processing itself, information obligations, retention periods or processor agreements.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;What follows practically:&lt;/strong&gt; in the design, every step where data leaves your infrastructure has to be named — and decided on individually.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is a technical description of where data travels, not legal advice; assessing GDPR compliance belongs to your DPO or lawyer.&lt;/p&gt;

&lt;h2&gt;
  
  
  When to choose the cloud instead
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;When there is nobody to administer a server.&lt;/strong&gt; An un-updated instance is worse than a subscription.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;When the volume is small.&lt;/strong&gt; At tens of executions a day the cloud is simpler and often cheaper on total cost.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;When nothing in the data is sensitive.&lt;/strong&gt; Without that reason, self-hosting's main advantage is wasted.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;When you need a result this week.&lt;/strong&gt; The cloud runs immediately; preparing a server, HTTPS and backups takes time.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I recommend a pragmatic route: start in the cloud, confirm the automation makes sense, and move to self-hosting only when there is a substantive reason. Workflows export as JSON, so moving does not mean building again from scratch.&lt;/p&gt;

&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;How does n8n count executions?&lt;/strong&gt;&lt;br&gt;
Per the official documentation, one execution is one run of a whole workflow regardless of the number of steps and the volume of data. That is why n8n works out better for long scenarios than tools that bill each module action separately.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Can we move from the cloud to self-hosting later?&lt;/strong&gt;&lt;br&gt;
Yes. Workflows export as JSON and import into your own instance; the credentials have to be set up again.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Who looks after the instance after deployment?&lt;/strong&gt;&lt;br&gt;
Either you or the supplier. What matters is that it is agreed in advance — the most common cause of trouble is an instance both sides believe the other one is updating.&lt;/p&gt;

&lt;h2&gt;
  
  
  Sources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://docs.n8n.io/hosting/" rel="noopener noreferrer"&gt;n8n — self-hosting documentation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://n8n.io/pricing/" rel="noopener noreferrer"&gt;n8n — official price list&lt;/a&gt; (checked 5 September 2026)&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/n8n-io/n8n" rel="noopener noreferrer"&gt;n8n — source code and licence&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;em&gt;Originally published on &lt;a href="https://nexflow.sk/en/n8n-self-hosted" rel="noopener noreferrer"&gt;nexflow.sk&lt;/a&gt;. I build n8n and Make.com automations for small businesses in Slovakia — see also &lt;a href="https://nexflow.sk/en/n8n-vs-make" rel="noopener noreferrer"&gt;n8n vs Make.com: which tool to choose&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>n8n</category>
      <category>automation</category>
      <category>selfhosted</category>
      <category>devops</category>
    </item>
  </channel>
</rss>
