<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
    <channel>
        <title>ThinkGenius — Articles</title>
        <link>https://thinkgenius.com/articles/</link>
        <atom:link href="https://thinkgenius.com/articles/feed.xml" rel="self" type="application/rss+xml" />
        <description>Engineering deep-dives on Python web scraping, browser automation, AI data extraction, and production automation systems.</description>
        <language>en-us</language>
        <lastBuildDate>2026-05-01T00:00:00.000Z</lastBuildDate>
        <item>
            <title>Production Web Scraping with Python — Architecture, Not Scripts</title>
            <link>https://thinkgenius.com/articles/production-web-scraping-with-python/</link>
            <guid isPermaLink="true">https://thinkgenius.com/articles/production-web-scraping-with-python/</guid>
            <pubDate>2026-05-01T00:00:00.000Z</pubDate>
            <category>Python Web Scraping</category>
            <description>A walkthrough of how I structure production Python scrapers — pipeline stages, idempotent storage, block-aware fetching, and the architectural decisions that separate a one-shot script from a system you can put on a schedule.</description>
            <author>dustin@thinkgenius.com (Dustin Holdiman)</author>
        </item>
        <item>
            <title>Playwright vs. Selenium for Modern Browser Automation</title>
            <link>https://thinkgenius.com/articles/playwright-vs-selenium-modern-browser-automation/</link>
            <guid isPermaLink="true">https://thinkgenius.com/articles/playwright-vs-selenium-modern-browser-automation/</guid>
            <pubDate>2026-05-01T00:00:00.000Z</pubDate>
            <category>Playwright Automation</category>
            <description>A practical comparison of Playwright and Selenium for production browser automation work — selector engines, async control, network interception, anti-detect integration, and why I default to Playwright for ~95% of new projects.</description>
            <author>dustin@thinkgenius.com (Dustin Holdiman)</author>
        </item>
        <item>
            <title>Building a Reliable Browser Automation Worker with Python and MySQL</title>
            <link>https://thinkgenius.com/articles/reliable-browser-automation-worker-python-mysql/</link>
            <guid isPermaLink="true">https://thinkgenius.com/articles/reliable-browser-automation-worker-python-mysql/</guid>
            <pubDate>2026-05-01T00:00:00.000Z</pubDate>
            <category>Browser Automation</category>
            <description>How to architect a parallel browser automation worker pool with Python, Playwright, and MySQL — queue design, worker partitioning, recovery from crashes, error capture, and the operational discipline that keeps long-running runs stable.</description>
            <author>dustin@thinkgenius.com (Dustin Holdiman)</author>
        </item>
        <item>
            <title>Kameleo with Python and Playwright — Browser Profile Automation in Production</title>
            <link>https://thinkgenius.com/articles/kameleo-with-python-playwright-browser-profile-automation/</link>
            <guid isPermaLink="true">https://thinkgenius.com/articles/kameleo-with-python-playwright-browser-profile-automation/</guid>
            <pubDate>2026-05-01T00:00:00.000Z</pubDate>
            <category>Kameleo Automation</category>
            <description>How to drive Kameleo browser profiles from Python and Playwright over CDP — profile lifecycle, proxy-per-profile pairing, parallel worker pools, and the operational patterns that make Kameleo viable for long-running scraping work.</description>
            <author>dustin@thinkgenius.com (Dustin Holdiman)</author>
        </item>
        <item>
            <title>Rotating Proxies Safely in Browser Automation</title>
            <link>https://thinkgenius.com/articles/rotate-proxies-safely-browser-automation/</link>
            <guid isPermaLink="true">https://thinkgenius.com/articles/rotate-proxies-safely-browser-automation/</guid>
            <pubDate>2026-05-01T00:00:00.000Z</pubDate>
            <category>Undetectable Browser Automation</category>
            <description>Why proactive proxy rotation makes you more detectable, not less, and what to do instead — block-only rotation, per-profile pairing, cooldown timers, and the rules that extract maximum throughput from a small proxy pool.</description>
            <author>dustin@thinkgenius.com (Dustin Holdiman)</author>
        </item>
        <item>
            <title>Detecting and Recovering Failed Scraping Sessions</title>
            <link>https://thinkgenius.com/articles/detect-recover-failed-scraping-sessions/</link>
            <guid isPermaLink="true">https://thinkgenius.com/articles/detect-recover-failed-scraping-sessions/</guid>
            <pubDate>2026-05-01T00:00:00.000Z</pubDate>
            <category>Python Web Scraping</category>
            <description>How to build scrapers that detect failure precisely (block vs. error vs. transient), recover automatically, and produce a clean audit trail — without retry storms, silent corruption, or operator intervention at 2am.</description>
            <author>dustin@thinkgenius.com (Dustin Holdiman)</author>
        </item>
        <item>
            <title>Building an E-Commerce Price Monitor in Python</title>
            <link>https://thinkgenius.com/articles/ecommerce-price-monitor-python/</link>
            <guid isPermaLink="true">https://thinkgenius.com/articles/ecommerce-price-monitor-python/</guid>
            <pubDate>2026-05-01T00:00:00.000Z</pubDate>
            <category>E-Commerce Automation</category>
            <description>How to build a production price-monitoring system in Python — schema design, change detection, alert routing, scaling across thousands of SKUs, and the patterns that distinguish a &quot;tracking spreadsheet&quot; from real competitive intelligence.</description>
            <author>dustin@thinkgenius.com (Dustin Holdiman)</author>
        </item>
        <item>
            <title>Scraping JavaScript Websites — Network Layer vs. Browser</title>
            <link>https://thinkgenius.com/articles/scraping-javascript-websites-network-vs-browser/</link>
            <guid isPermaLink="true">https://thinkgenius.com/articles/scraping-javascript-websites-network-vs-browser/</guid>
            <pubDate>2026-05-01T00:00:00.000Z</pubDate>
            <category>Python Web Scraping</category>
            <description>When to scrape a JavaScript site by intercepting its underlying API calls vs. driving a real browser. The decision framework, the tradeoffs, and how to figure out which approach a target supports in under ten minutes.</description>
            <author>dustin@thinkgenius.com (Dustin Holdiman)</author>
        </item>
        <item>
            <title>An AI Document Extraction Workflow — Scrape, Download, Parse, Structure</title>
            <link>https://thinkgenius.com/articles/ai-document-extraction-workflow-scrape-download-parse-structure/</link>
            <guid isPermaLink="true">https://thinkgenius.com/articles/ai-document-extraction-workflow-scrape-download-parse-structure/</guid>
            <pubDate>2026-05-01T00:00:00.000Z</pubDate>
            <category>AI Data Extraction</category>
            <description>How to build a production AI extraction pipeline that turns unstructured pages and PDFs into clean, validated, queryable records — covering the scraping front-end, document parsing, LLM-based field extraction, schema validation, and cost discipline.</description>
            <author>dustin@thinkgenius.com (Dustin Holdiman)</author>
        </item>
        <item>
            <title>From Manual Back-Office Workflow to a Python Automation System</title>
            <link>https://thinkgenius.com/articles/manual-back-office-workflow-to-python-automation-system/</link>
            <guid isPermaLink="true">https://thinkgenius.com/articles/manual-back-office-workflow-to-python-automation-system/</guid>
            <pubDate>2026-05-01T00:00:00.000Z</pubDate>
            <category>Automation Dashboards</category>
            <description>How to take a manual back-office process — spreadsheets, copy-paste, ad-hoc emails — and turn it into a real automation system with queues, workers, an operator dashboard, audit logs, and an exception queue. The patterns that matter and the order to build them in.</description>
            <author>dustin@thinkgenius.com (Dustin Holdiman)</author>
        </item>
    </channel>
</rss>
