<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>https://brenthaskins.com</loc>
<lastmod>2026-05-13T00:00:00.000Z</lastmod>
<changefreq>weekly</changefreq>
<priority>1</priority>
</url>
<url>
<loc>https://brenthaskins.com/blog</loc>
<lastmod>2026-05-13T00:00:00.000Z</lastmod>
<changefreq>weekly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://brenthaskins.com/links</loc>
<lastmod>2026-05-13T00:00:00.000Z</lastmod>
<changefreq>weekly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://brenthaskins.com/projects/auri</loc>
<lastmod>2026-05-13T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>https://brenthaskins.com/projects/rally</loc>
<lastmod>2026-05-13T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>https://brenthaskins.com/projects/smart-mortgage-training</loc>
<lastmod>2026-05-13T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>https://brenthaskins.com/projects/formably</loc>
<lastmod>2026-05-13T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>https://brenthaskins.com/projects/asper</loc>
<lastmod>2026-05-13T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>https://brenthaskins.com/projects/asilo-studios</loc>
<lastmod>2026-05-13T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>https://brenthaskins.com/projects/drawer</loc>
<lastmod>2026-05-13T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>https://brenthaskins.com/projects/shelf</loc>
<lastmod>2026-05-13T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>https://brenthaskins.com/projects/loan-finder</loc>
<lastmod>2026-05-13T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>https://brenthaskins.com/projects/draft</loc>
<lastmod>2026-05-13T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>https://brenthaskins.com/projects/floom</loc>
<lastmod>2026-05-13T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>https://brenthaskins.com/projects/storyworld</loc>
<lastmod>2026-05-13T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>https://brenthaskins.com/blog/ai-video-latency-contract</loc>
<lastmod>2026-05-20T20:52:22.054Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.9</priority>
</url>
<url>
<loc>https://brenthaskins.com/blog/rum-is-cheap-observability</loc>
<lastmod>2026-05-20T20:52:22.054Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.9</priority>
</url>
<url>
<loc>https://brenthaskins.com/blog/engineering-case-study-pages-that-rank</loc>
<lastmod>2026-05-20T20:52:22.050Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.9</priority>
</url>
<url>
<loc>https://brenthaskins.com/blog/rum-honeycomb-embrace-partnership</loc>
<lastmod>2026-05-20T20:52:22.050Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.9</priority>
</url>
<url>
<loc>https://brenthaskins.com/blog/slider-ui-failures-production</loc>
<lastmod>2026-05-20T20:52:22.050Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.9</priority>
</url>
<url>
<loc>https://brenthaskins.com/blog/typography-is-infrastructure</loc>
<lastmod>2026-05-20T20:52:22.050Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.9</priority>
</url>
<url>
<loc>https://brenthaskins.com/blog/ai-agent-interface-ux-contract</loc>
<lastmod>2026-05-20T20:52:22.050Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.9</priority>
</url>
<url>
<loc>https://brenthaskins.com/blog/background-agents-product-engineering</loc>
<lastmod>2026-05-20T20:52:22.050Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.9</priority>
</url>
<url>
<loc>https://brenthaskins.com/blog/typography-performance-product-engineering</loc>
<lastmod>2026-05-20T20:52:22.050Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.9</priority>
</url>
<url>
<loc>https://brenthaskins.com/blog/architecture-product-decision</loc>
<lastmod>2026-05-20T20:52:22.050Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.9</priority>
</url>
<url>
<loc>https://brenthaskins.com/blog/dark-mode-first-saas-dashboard</loc>
<lastmod>2026-05-20T20:52:22.050Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.9</priority>
</url>
<url>
<loc>https://brenthaskins.com/blog/real-cost-ux-audit-2026</loc>
<lastmod>2026-05-20T20:52:22.050Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.9</priority>
</url>
<url>
<loc>https://brenthaskins.com/blog/ai-feature-beam-native-architecture</loc>
<lastmod>2026-05-20T20:52:22.050Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.9</priority>
</url>
<url>
<loc>https://brenthaskins.com/blog/engineering-blog-beats-linkedin-for-hiring-seo</loc>
<lastmod>2026-05-20T20:52:22.050Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.9</priority>
</url>
<url>
<loc>https://brenthaskins.com/blog/nextjs-vs-react-2026-framework-decision</loc>
<lastmod>2026-05-20T20:52:22.050Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.9</priority>
</url>
<url>
<loc>https://brenthaskins.com/blog/saas-dashboard-data-dump-ai-ux-fix</loc>
<lastmod>2026-05-20T20:52:22.050Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.9</priority>
</url>
<url>
<loc>https://brenthaskins.com/blog/react-vs-htmx-2026-framework-debate</loc>
<lastmod>2026-05-20T20:52:22.050Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.9</priority>
</url>
<url>
<loc>https://brenthaskins.com/blog/saas-dashboard-overengineered-2026</loc>
<lastmod>2026-05-20T20:52:22.050Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.9</priority>
</url>
<url>
<loc>https://brenthaskins.com/blog/skeleton-screens-are-not-free</loc>
<lastmod>2026-05-20T20:52:22.050Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.9</priority>
</url>
<url>
<loc>https://brenthaskins.com/blog/core-web-vitals-2026-indexing-matters</loc>
<lastmod>2026-05-20T20:52:22.050Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.9</priority>
</url>
<url>
<loc>https://brenthaskins.com/blog/core-web-vitals-2026-product-performance-strategy</loc>
<lastmod>2026-05-20T20:52:22.050Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.9</priority>
</url>
<url>
<loc>https://brenthaskins.com/blog/react-compiler-product-engineering</loc>
<lastmod>2026-05-20T20:52:22.050Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.9</priority>
</url>
<url>
<loc>https://brenthaskins.com/blog/skeleton-screens-ux-contract</loc>
<lastmod>2026-05-20T20:52:22.050Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.9</priority>
</url>
<url>
<loc>https://brenthaskins.com/blog/ai-agents-2026-production-security</loc>
<lastmod>2026-05-20T20:52:22.050Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.9</priority>
</url>
<url>
<loc>https://brenthaskins.com/blog/ai-product-engineering-needs-clear-interfaces</loc>
<lastmod>2026-05-20T20:52:22.050Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.9</priority>
</url>
<url>
<loc>https://brenthaskins.com/blog/dark-mode-design-system-stress-test</loc>
<lastmod>2026-05-20T20:52:22.050Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.9</priority>
</url>
<url>
<loc>https://brenthaskins.com/blog/rallyleads-pipeline-tags-notes-export</loc>
<lastmod>2026-05-20T20:52:22.050Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.9</priority>
</url>
<url>
<loc>https://brenthaskins.com/blog/auri-music-aware-posts-without-cluttering-feed</loc>
<lastmod>2026-05-20T20:52:22.050Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.9</priority>
</url>
<url>
<loc>https://brenthaskins.com/blog/product-engineer-phoenix-arizona</loc>
<lastmod>2026-05-20T20:52:22.050Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.9</priority>
</url>
<url>
<loc>https://brenthaskins.com/blog/sitemap-lastmod-should-match-real-updates</loc>
<lastmod>2026-05-20T20:52:22.050Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.9</priority>
</url>
<url>
<loc>https://brenthaskins.com/blog/loan-finder-document-upload-with-consent-log</loc>
<lastmod>2026-05-20T20:52:22.050Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.9</priority>
</url>
<url>
<loc>https://brenthaskins.com/blog/internal-links-cluster-topic-authority</loc>
<lastmod>2026-05-20T20:52:22.050Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.9</priority>
</url>
<url>
<loc>https://brenthaskins.com/blog/smt-loan-analysis-practice-on-real-scenarios</loc>
<lastmod>2026-05-20T20:52:22.050Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.9</priority>
</url>
<url>
<loc>https://brenthaskins.com/blog/rate-limits-on-public-form-endpoints</loc>
<lastmod>2026-05-20T20:52:22.050Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.9</priority>
</url>
<url>
<loc>https://brenthaskins.com/blog/drawer-verifies-duplicates-before-delete</loc>
<lastmod>2026-05-20T20:52:22.050Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.9</priority>
</url>
<url>
<loc>https://brenthaskins.com/blog/formably-contrast-check-blocks-bad-brand-pairs</loc>
<lastmod>2026-05-20T20:52:22.050Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.9</priority>
</url>
<url>
<loc>https://brenthaskins.com/blog/citation-friendly-summaries-for-ai-search</loc>
<lastmod>2026-05-20T20:52:22.050Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.9</priority>
</url>
<url>
<loc>https://brenthaskins.com/blog/hire-product-engineer-what-to-look-for</loc>
<lastmod>2026-05-20T20:52:22.050Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.9</priority>
</url>
<url>
<loc>https://brenthaskins.com/blog/freelance-product-engineer-vs-studio-engagement</loc>
<lastmod>2026-05-20T20:52:22.050Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.9</priority>
</url>
<url>
<loc>https://brenthaskins.com/blog/per-route-metadata-nextjs-seo</loc>
<lastmod>2026-05-20T20:52:22.050Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.9</priority>
</url>
<url>
<loc>https://brenthaskins.com/blog/lead-email-alerts-must-arrive-in-60-seconds</loc>
<lastmod>2026-05-20T20:52:22.050Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.9</priority>
</url>
<url>
<loc>https://brenthaskins.com/blog/faq-schema-technical-blogs-that-ai-can-quote</loc>
<lastmod>2026-05-20T20:52:22.050Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.9</priority>
</url>
<url>
<loc>https://brenthaskins.com/blog/portfolio-motion-respects-reduced-motion</loc>
<lastmod>2026-05-20T20:52:22.050Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.9</priority>
</url>
<url>
<loc>https://brenthaskins.com/blog/mortgage-broker-blog-seo-rallyleads</loc>
<lastmod>2026-05-20T20:52:22.050Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.9</priority>
</url>
<url>
<loc>https://brenthaskins.com/blog/brent-haskins-applied-ai-product-engineer</loc>
<lastmod>2026-05-20T20:52:22.050Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.9</priority>
</url>
<url>
<loc>https://brenthaskins.com/blog/answer-engine-optimization-engineering-blogs</loc>
<lastmod>2026-05-20T20:52:22.050Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.9</priority>
</url>
<url>
<loc>https://brenthaskins.com/blog/co-founder-product-engineer-split-on-mobile</loc>
<lastmod>2026-05-20T20:52:22.050Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.9</priority>
</url>
<url>
<loc>https://brenthaskins.com/blog/native-swift-beats-electron-for-file-heavy-mac-apps</loc>
<lastmod>2026-05-20T20:52:22.050Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.9</priority>
</url>
<url>
<loc>https://brenthaskins.com/blog/nextjs-mvp-cut-scope-not-dependencies</loc>
<lastmod>2026-05-20T20:52:22.050Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.9</priority>
</url>
<url>
<loc>https://brenthaskins.com/blog/screenshot-search-needs-finder-tags-and-dates</loc>
<lastmod>2026-05-20T20:52:22.050Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.9</priority>
</url>
<url>
<loc>https://brenthaskins.com/blog/radix-and-tailwind-for-desktop-utility-uis</loc>
<lastmod>2026-05-20T20:52:22.050Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.9</priority>
</url>
<url>
<loc>https://brenthaskins.com/blog/on-device-ocr-desktop-product-engineering</loc>
<lastmod>2026-05-20T20:52:22.050Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.9</priority>
</url>
<url>
<loc>https://brenthaskins.com/blog/borrower-lender-matching-needs-signal-not-noise</loc>
<lastmod>2026-05-20T20:52:22.050Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.9</priority>
</url>
<url>
<loc>https://brenthaskins.com/blog/safe-exam-prep-needs-practice-not-slide-decks</loc>
<lastmod>2026-05-20T20:52:22.050Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.9</priority>
</url>
<url>
<loc>https://brenthaskins.com/blog/mortgage-training-needs-tools-not-just-ce-hours</loc>
<lastmod>2026-05-20T20:52:22.050Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.9</priority>
</url>
<url>
<loc>https://brenthaskins.com/blog/public-form-spam-is-a-product-problem</loc>
<lastmod>2026-05-20T20:52:22.050Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.9</priority>
</url>
<url>
<loc>https://brenthaskins.com/blog/dashboard-empty-states-before-another-chart</loc>
<lastmod>2026-05-20T20:52:22.050Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.9</priority>
</url>
<url>
<loc>https://brenthaskins.com/blog/real-time-status-beats-socket-theater</loc>
<lastmod>2026-05-20T20:52:22.050Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.9</priority>
</url>
<url>
<loc>https://brenthaskins.com/blog/swift-ios-apps-ship-with-release-discipline</loc>
<lastmod>2026-05-20T20:52:22.050Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.9</priority>
</url>
<url>
<loc>https://brenthaskins.com/blog/selling-unreal-engine-tools-on-fab-not-itch</loc>
<lastmod>2026-05-20T20:52:22.050Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.9</priority>
</url>
<url>
<loc>https://brenthaskins.com/blog/legacy-modernization-without-big-bang-rewrite</loc>
<lastmod>2026-05-20T20:52:22.050Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.9</priority>
</url>
<url>
<loc>https://brenthaskins.com/blog/blueprint-frameworks-are-products-too</loc>
<lastmod>2026-05-20T20:52:22.050Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.9</priority>
</url>
<url>
<loc>https://brenthaskins.com/blog/child-safe-multimodal-ai-needs-a-bedtime-contract</loc>
<lastmod>2026-05-20T20:52:22.050Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.9</priority>
</url>
<url>
<loc>https://brenthaskins.com/blog/mortgage-broker-site-is-the-product</loc>
<lastmod>2026-05-20T20:52:22.050Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.9</priority>
</url>
<url>
<loc>https://brenthaskins.com/blog/webhooks-are-a-product-surface-not-an-integration-afterthought</loc>
<lastmod>2026-05-20T20:52:22.050Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.9</priority>
</url>
<url>
<loc>https://brenthaskins.com/blog/fintech-product-engineer-mortgage-software</loc>
<lastmod>2026-05-20T20:52:22.050Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.9</priority>
</url>
<url>
<loc>https://brenthaskins.com/blog/custom-domains-broker-sites-ssl-and-seo</loc>
<lastmod>2026-05-20T20:52:22.050Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.9</priority>
</url>
<url>
<loc>https://brenthaskins.com/blog/social-apps-encryption-accessibility-same-roadmap</loc>
<lastmod>2026-05-20T20:52:22.050Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.9</priority>
</url>
<url>
<loc>https://brenthaskins.com/blog/figma-handoff-ends-at-states-not-pixels</loc>
<lastmod>2026-05-20T20:52:22.050Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.9</priority>
</url>
<url>
<loc>https://brenthaskins.com/blog/half-asleep-idea-capture-needs-structure-later</loc>
<lastmod>2026-05-20T20:52:22.050Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.9</priority>
</url>
<url>
<loc>https://brenthaskins.com/blog/product-engineering-studio-ships-not-slides</loc>
<lastmod>2026-05-20T20:52:22.050Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.9</priority>
</url>
<url>
<loc>https://brenthaskins.com/blog/local-first-prompt-library-no-account-required</loc>
<lastmod>2026-05-20T20:52:22.050Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.9</priority>
</url>
<url>
<loc>https://brenthaskins.com/blog/mortgage-ai-should-cite-curriculum-not-guess-policy</loc>
<lastmod>2026-05-20T20:52:22.050Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.9</priority>
</url>
<url>
<loc>https://brenthaskins.com/blog/form-builder-without-per-response-tax</loc>
<lastmod>2026-05-20T20:52:22.050Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.9</priority>
</url>
<url>
<loc>https://brenthaskins.com/blog/what-is-a-product-engineer-brent-haskins</loc>
<lastmod>2026-05-20T20:52:22.050Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.9</priority>
</url>
<url>
<loc>https://brenthaskins.com/blog/ai-form-generation-needs-a-brand-contract</loc>
<lastmod>2026-05-20T20:52:22.046Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.9</priority>
</url>
<url>
<loc>https://brenthaskins.com/blog/applied-ai-systems-need-operational-ui</loc>
<lastmod>2026-05-20T20:52:22.046Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.9</priority>
</url>
</urlset>
