<?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: lukas schmeck</title>
    <description>The latest articles on DEV Community by lukas schmeck (@lukas_schmeck).</description>
    <link>https://dev.to/lukas_schmeck</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%2F4044343%2F5951d7c0-1d7f-4029-b911-88df9866f437.png</url>
      <title>DEV Community: lukas schmeck</title>
      <link>https://dev.to/lukas_schmeck</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/lukas_schmeck"/>
    <language>en</language>
    <item>
      <title>Stop Feeding Your AI Bad Website Data</title>
      <dc:creator>lukas schmeck</dc:creator>
      <pubDate>Thu, 23 Jul 2026 18:38:48 +0000</pubDate>
      <link>https://dev.to/lukas_schmeck/stop-feeding-your-ai-bad-website-data-2gp8</link>
      <guid>https://dev.to/lukas_schmeck/stop-feeding-your-ai-bad-website-data-2gp8</guid>
      <description>&lt;p&gt;If you've ever built a RAG application, AI agent, or documentation chatbot, you've probably experienced this:&lt;/p&gt;

&lt;p&gt;Your LLM gives a confident answer... but it's completely wrong.&lt;/p&gt;

&lt;p&gt;Most of the time, the model isn't the problem.&lt;/p&gt;

&lt;p&gt;The data is.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Hidden Problem
&lt;/h2&gt;

&lt;p&gt;A lot of developers scrape websites and immediately convert the HTML into Markdown or plain text.&lt;/p&gt;

&lt;p&gt;Unfortunately, real websites contain much more than the actual content:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Navigation menus&lt;/li&gt;
&lt;li&gt;Cookie banners&lt;/li&gt;
&lt;li&gt;Sidebars&lt;/li&gt;
&lt;li&gt;Footer links&lt;/li&gt;
&lt;li&gt;Tracking scripts&lt;/li&gt;
&lt;li&gt;Related articles&lt;/li&gt;
&lt;li&gt;Advertisement blocks&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;All of this ends up inside your embeddings.&lt;/p&gt;

&lt;p&gt;Instead of embedding actual documentation, you're embedding a mixture of useful information and website noise.&lt;/p&gt;

&lt;p&gt;The result?&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Worse retrieval quality&lt;/li&gt;
&lt;li&gt;Higher token usage&lt;/li&gt;
&lt;li&gt;Lower embedding quality&lt;/li&gt;
&lt;li&gt;More hallucinations&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What Good AI Data Looks Like
&lt;/h2&gt;

&lt;p&gt;For RAG, your documents should preserve the structure of the original content while removing everything that isn't relevant.&lt;/p&gt;

&lt;p&gt;A good document should:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Keep headings and hierarchy&lt;/li&gt;
&lt;li&gt;Preserve code blocks&lt;/li&gt;
&lt;li&gt;Preserve tables&lt;/li&gt;
&lt;li&gt;Remove navigation and boilerplate&lt;/li&gt;
&lt;li&gt;Keep the surrounding context of each section&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For example, instead of storing this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Home
Pricing
Documentation
Login

Installation Guide

pip install my-package

Related Articles
Privacy Policy
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;you want something closer to this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;Context: Documentation &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; Getting Started &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; Installation

&lt;span class="c"&gt;# Installation Guide&lt;/span&gt;

Install the package:

&lt;span class="sb"&gt;```&lt;/span&gt;bash
pip &lt;span class="nb"&gt;install &lt;/span&gt;my-package
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Configure your environment variables before initialization.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
That difference has a surprisingly large impact on retrieval quality.

## Context Matters

One thing I found especially important is preserving document hierarchy.

Imagine two pages both containing a section called **Authentication**.

Without context, they're nearly identical.

With context, they become:

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Documentation &amp;gt; REST API &amp;gt; Authentication&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
and

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Documentation &amp;gt; Admin Panel &amp;gt; Authentication&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
That additional information makes retrieval much more accurate.

## Building a Better Pipeline

While experimenting with different extraction approaches, I ended up building a crawler focused specifically on AI ingestion rather than traditional web scraping.

The goal wasn't simply to download HTML.

The goal was to produce clean, structured Markdown that can go directly into embedding pipelines and vector databases.

The pipeline focuses on:

- Removing website boilerplate
- Preserving document structure
- Keeping code blocks and tables intact
- Adding contextual breadcrumbs
- Generating useful metadata
- Producing AI-ready Markdown

## Final Thoughts

As LLMs become more capable, data quality becomes even more important.

Many teams spend weeks experimenting with prompts or models while feeding their AI noisy website data.

Improving your ingestion pipeline often delivers bigger improvements than changing the model itself.

Garbage in still means garbage out.

---

I'm currently building an Apify Actor that automates this workflow by converting websites and documentation portals into clean, RAG-ready Markdown. If you're working on AI agents or RAG systems, I'd love to hear how you're handling web content ingestion and what challenges you've run into.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>ai</category>
      <category>python</category>
      <category>opensource</category>
      <category>llm</category>
    </item>
  </channel>
</rss>
