<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
  <url>
    <loc>https://shipmindlabs.com/</loc>
    <lastmod>2026-08-31</lastmod>
    <changefreq>monthly</changefreq>
  </url>
  <url>
    <loc>https://shipmindlabs.com/blog/</loc>
    <lastmod>2026-08-31</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://shipmindlabs.com/cases/</loc>
    <lastmod>2026-08-31</lastmod>
    <changefreq>monthly</changefreq>
  </url>
  <url>
    <loc>https://shipmindlabs.com/cases/aircraft-deal-platform/</loc>
    <lastmod>2026-08-31</lastmod>
    <changefreq>monthly</changefreq>
  </url>
  <url>
    <loc>https://shipmindlabs.com/cases/cross-border-marketplace/</loc>
    <lastmod>2026-08-31</lastmod>
    <changefreq>monthly</changefreq>
  </url>
  <url>
    <loc>https://shipmindlabs.com/cases/p2p-lending-platform/</loc>
    <lastmod>2026-08-31</lastmod>
    <changefreq>monthly</changefreq>
  </url>
  <url>
    <loc>https://shipmindlabs.com/cases/exchange-and-wallets/</loc>
    <lastmod>2026-08-31</lastmod>
    <changefreq>monthly</changefreq>
  </url>
  <url>
    <loc>https://shipmindlabs.com/blog/2026-08-31-the-worst-notification-bug-we-ve-shipped/</loc>
    <lastmod>2026-08-31</lastmod>
    <changefreq>yearly</changefreq>
  </url>
  <url>
    <loc>https://shipmindlabs.com/blog/2026-08-31-sms-email-messenger-the-channel-is-trans/</loc>
    <lastmod>2026-08-31</lastmod>
    <changefreq>yearly</changefreq>
  </url>
  <url>
    <loc>https://shipmindlabs.com/blog/2026-08-31-most-of-our-interviews-are-spent-reading/</loc>
    <lastmod>2026-08-31</lastmod>
    <changefreq>yearly</changefreq>
  </url>
  <url>
    <loc>https://shipmindlabs.com/blog/2026-08-31-founders-ask-us-for-a-stack-match-what-t/</loc>
    <lastmod>2026-08-31</lastmod>
    <changefreq>yearly</changefreq>
  </url>
  <url>
    <loc>https://shipmindlabs.com/blog/2026-08-30-we-once-interviewed-someone-who-spent-th/</loc>
    <lastmod>2026-08-30</lastmod>
    <changefreq>yearly</changefreq>
  </url>
  <url>
    <loc>https://shipmindlabs.com/blog/2026-08-30-one-interview-habit-we-dropped-asking-wh/</loc>
    <lastmod>2026-08-30</lastmod>
    <changefreq>yearly</changefreq>
  </url>
  <url>
    <loc>https://shipmindlabs.com/blog/2026-08-30-most-otp-bugs-we-see-are-not-in-the-code/</loc>
    <lastmod>2026-08-30</lastmod>
    <changefreq>yearly</changefreq>
  </url>
  <url>
    <loc>https://shipmindlabs.com/blog/notification-fan-out-needs-a-stop-condition-not-a-retry-loop/</loc>
    <lastmod>2026-08-29</lastmod>
    <changefreq>yearly</changefreq>
  </url>
  <url>
    <loc>https://shipmindlabs.com/blog/an-audit-trail-is-a-typed-changeset-not-a-log-line/</loc>
    <lastmod>2026-08-29</lastmod>
    <changefreq>yearly</changefreq>
  </url>
  <url>
    <loc>https://shipmindlabs.com/blog/2026-08-29-when-we-take-over-an-inherited-system-th/</loc>
    <lastmod>2026-08-29</lastmod>
    <changefreq>yearly</changefreq>
  </url>
  <url>
    <loc>https://shipmindlabs.com/blog/2026-08-29-when-a-customer-asks-why-a-number-change/</loc>
    <lastmod>2026-08-29</lastmod>
    <changefreq>yearly</changefreq>
  </url>
  <url>
    <loc>https://shipmindlabs.com/blog/2026-08-29-we-wrote-our-field-diff-engine-with-zero/</loc>
    <lastmod>2026-08-29</lastmod>
    <changefreq>yearly</changefreq>
  </url>
  <url>
    <loc>https://shipmindlabs.com/blog/2026-08-29-the-most-useful-part-of-our-model-audit/</loc>
    <lastmod>2026-08-29</lastmod>
    <changefreq>yearly</changefreq>
  </url>
  <url>
    <loc>https://shipmindlabs.com/blog/2026-08-29-promo-validation-returning-false-is-a-de/</loc>
    <lastmod>2026-08-29</lastmod>
    <changefreq>yearly</changefreq>
  </url>
  <url>
    <loc>https://shipmindlabs.com/blog/2026-08-29-most-audit-trails-are-not-audit-trails-t/</loc>
    <lastmod>2026-08-29</lastmod>
    <changefreq>yearly</changefreq>
  </url>
  <url>
    <loc>https://shipmindlabs.com/blog/2026-08-29-months-after-the-fact-someone-always-ask/</loc>
    <lastmod>2026-08-29</lastmod>
    <changefreq>yearly</changefreq>
  </url>
  <url>
    <loc>https://shipmindlabs.com/blog/2026-08-29-if-you-can-only-answer-who-changed-this/</loc>
    <lastmod>2026-08-29</lastmod>
    <changefreq>yearly</changefreq>
  </url>
  <url>
    <loc>https://shipmindlabs.com/blog/2026-08-29-every-monolith-we-ve-split-had-a-few-beh/</loc>
    <lastmod>2026-08-29</lastmod>
    <changefreq>yearly</changefreq>
  </url>
  <url>
    <loc>https://shipmindlabs.com/blog/2026-08-29-a-discount-that-goes-negative-is-a-refun/</loc>
    <lastmod>2026-08-29</lastmod>
    <changefreq>yearly</changefreq>
  </url>
  <url>
    <loc>https://shipmindlabs.com/blog/review-queues-for-compliance-teams-leases-not-row-locks/</loc>
    <lastmod>2026-08-28</lastmod>
    <changefreq>yearly</changefreq>
  </url>
  <url>
    <loc>https://shipmindlabs.com/blog/2026-08-28-one-thing-we-ve-learned-building-notific/</loc>
    <lastmod>2026-08-28</lastmod>
    <changefreq>yearly</changefreq>
  </url>
  <url>
    <loc>https://shipmindlabs.com/blog/2026-08-28-a-payment-provider-s-sandbox-tests-your/</loc>
    <lastmod>2026-08-28</lastmod>
    <changefreq>yearly</changefreq>
  </url>
  <url>
    <loc>https://shipmindlabs.com/blog/2026-08-27-every-team-adds-retries-almost-nobody-ad/</loc>
    <lastmod>2026-08-27</lastmod>
    <changefreq>yearly</changefreq>
  </url>
  <url>
    <loc>https://shipmindlabs.com/blog/2026-08-26-docker-compose-is-a-great-development-to/</loc>
    <lastmod>2026-08-26</lastmod>
    <changefreq>yearly</changefreq>
  </url>
  <url>
    <loc>https://shipmindlabs.com/blog/2026-08-26-a-cron-job-that-runs-longer-than-its-int/</loc>
    <lastmod>2026-08-26</lastmod>
    <changefreq>yearly</changefreq>
  </url>
  <url>
    <loc>https://shipmindlabs.com/blog/why-llm-catalog-translation-is-a-cache-design-problem/</loc>
    <lastmod>2026-08-25</lastmod>
    <changefreq>yearly</changefreq>
  </url>
  <url>
    <loc>https://shipmindlabs.com/blog/2026-08-25-people-assume-code-review-is-about-catch/</loc>
    <lastmod>2026-08-25</lastmod>
    <changefreq>yearly</changefreq>
  </url>
  <url>
    <loc>https://shipmindlabs.com/blog/2026-08-25-every-monolith-we-ve-split-had-one-share/</loc>
    <lastmod>2026-08-25</lastmod>
    <changefreq>yearly</changefreq>
  </url>
  <url>
    <loc>https://shipmindlabs.com/blog/2026-08-24-every-notification-service-starts-as-one/</loc>
    <lastmod>2026-08-24</lastmod>
    <changefreq>yearly</changefreq>
  </url>
  <url>
    <loc>https://shipmindlabs.com/blog/2026-08-24-a-scraper-isn-t-an-integration-it-s-a-su/</loc>
    <lastmod>2026-08-24</lastmod>
    <changefreq>yearly</changefreq>
  </url>
  <url>
    <loc>https://shipmindlabs.com/blog/2026-08-22-the-scary-part-of-a-migration-isn-t-the/</loc>
    <lastmod>2026-08-22</lastmod>
    <changefreq>yearly</changefreq>
  </url>
  <url>
    <loc>https://shipmindlabs.com/blog/expand-and-contract-changing-a-payments-column-without-downtime/</loc>
    <lastmod>2026-08-21</lastmod>
    <changefreq>yearly</changefreq>
  </url>
  <url>
    <loc>https://shipmindlabs.com/blog/2026-08-21-when-a-payment-fails-halfway-the-honest/</loc>
    <lastmod>2026-08-21</lastmod>
    <changefreq>yearly</changefreq>
  </url>
  <url>
    <loc>https://shipmindlabs.com/blog/2026-08-20-every-team-adds-retries-before-they-add/</loc>
    <lastmod>2026-08-20</lastmod>
    <changefreq>yearly</changefreq>
  </url>
  <url>
    <loc>https://shipmindlabs.com/blog/2026-08-19-notifications-look-like-a-feature-until/</loc>
    <lastmod>2026-08-19</lastmod>
    <changefreq>yearly</changefreq>
  </url>
  <url>
    <loc>https://shipmindlabs.com/blog/2026-08-19-moving-work-to-celery-makes-your-api-fas/</loc>
    <lastmod>2026-08-19</lastmod>
    <changefreq>yearly</changefreq>
  </url>
  <url>
    <loc>https://shipmindlabs.com/blog/queue-topology-one-broker-several-queues-no-shared-pool/</loc>
    <lastmod>2026-08-18</lastmod>
    <changefreq>yearly</changefreq>
  </url>
  <url>
    <loc>https://shipmindlabs.com/blog/2026-08-18-notification-services-get-scoped-as-a-tw/</loc>
    <lastmod>2026-08-18</lastmod>
    <changefreq>yearly</changefreq>
  </url>
  <url>
    <loc>https://shipmindlabs.com/blog/2026-08-18-before-anything-reaches-your-customers-i/</loc>
    <lastmod>2026-08-18</lastmod>
    <changefreq>yearly</changefreq>
  </url>
  <url>
    <loc>https://shipmindlabs.com/blog/2026-08-17-running-a-product-catalog-through-an-llm/</loc>
    <lastmod>2026-08-17</lastmod>
    <changefreq>yearly</changefreq>
  </url>
  <url>
    <loc>https://shipmindlabs.com/blog/2026-08-17-in-a-rewrite-the-old-system-s-bugs-are-p/</loc>
    <lastmod>2026-08-17</lastmod>
    <changefreq>yearly</changefreq>
  </url>
  <url>
    <loc>https://shipmindlabs.com/blog/extracting-a-service-from-a-monolith-without-a-code-freeze/</loc>
    <lastmod>2026-08-16</lastmod>
    <changefreq>yearly</changefreq>
  </url>
  <url>
    <loc>https://shipmindlabs.com/blog/one-payment-protocol-for-every-provider-hold-capture-refund/</loc>
    <lastmod>2026-08-15</lastmod>
    <changefreq>yearly</changefreq>
  </url>
  <url>
    <loc>https://shipmindlabs.com/blog/2026-08-15-every-kyc-provider-we-ve-integrated-has/</loc>
    <lastmod>2026-08-15</lastmod>
    <changefreq>yearly</changefreq>
  </url>
  <url>
    <loc>https://shipmindlabs.com/blog/testing-money-paths-four-tests-our-review-gate-requires/</loc>
    <lastmod>2026-08-14</lastmod>
    <changefreq>yearly</changefreq>
  </url>
  <url>
    <loc>https://shipmindlabs.com/blog/2026-08-14-the-scariest-thing-in-a-small-project-is/</loc>
    <lastmod>2026-08-14</lastmod>
    <changefreq>yearly</changefreq>
  </url>
  <url>
    <loc>https://shipmindlabs.com/blog/2026-08-14-manual-kyc-review-is-not-an-admin-screen/</loc>
    <lastmod>2026-08-14</lastmod>
    <changefreq>yearly</changefreq>
  </url>
  <url>
    <loc>https://shipmindlabs.com/blog/2026-08-13-every-monolith-rewrite-we-ve-done-the-re/</loc>
    <lastmod>2026-08-13</lastmod>
    <changefreq>yearly</changefreq>
  </url>
  <url>
    <loc>https://shipmindlabs.com/blog/2026-08-12-the-most-dangerous-code-in-most-python-s/</loc>
    <lastmod>2026-08-12</lastmod>
    <changefreq>yearly</changefreq>
  </url>
  <url>
    <loc>https://shipmindlabs.com/blog/2026-08-12-every-webhook-you-receive-will-arrive-tw/</loc>
    <lastmod>2026-08-12</lastmod>
    <changefreq>yearly</changefreq>
  </url>
  <url>
    <loc>https://shipmindlabs.com/blog/2026-08-11-people-sometimes-ask-why-we-spend-time-t/</loc>
    <lastmod>2026-08-11</lastmod>
    <changefreq>yearly</changefreq>
  </url>
  <url>
    <loc>https://shipmindlabs.com/blog/2026-08-11-if-you-can-t-rebuild-the-ledger-from-eve/</loc>
    <lastmod>2026-08-11</lastmod>
    <changefreq>yearly</changefreq>
  </url>
  <url>
    <loc>https://shipmindlabs.com/blog/2026-08-11-every-search-index-you-add-is-a-second-s/</loc>
    <lastmod>2026-08-11</lastmod>
    <changefreq>yearly</changefreq>
  </url>
  <url>
    <loc>https://shipmindlabs.com/blog/2026-08-11-every-payment-system-we-ve-inherited-had/</loc>
    <lastmod>2026-08-11</lastmod>
    <changefreq>yearly</changefreq>
  </url>
  <url>
    <loc>https://shipmindlabs.com/blog/2026-08-11-every-payment-integration-looks-done-whe/</loc>
    <lastmod>2026-08-11</lastmod>
    <changefreq>yearly</changefreq>
  </url>
  <url>
    <loc>https://shipmindlabs.com/blog/2026-08-11-a-refund-is-not-a-payment-with-a-minus-s/</loc>
    <lastmod>2026-08-11</lastmod>
    <changefreq>yearly</changefreq>
  </url>
  <url>
    <loc>https://shipmindlabs.com/blog/2026-08-10-most-monolith-to-microservices-migration/</loc>
    <lastmod>2026-08-10</lastmod>
    <changefreq>yearly</changefreq>
  </url>
  <url>
    <loc>https://shipmindlabs.com/blog/2026-08-05-search-is-slow-so-the-team-adds-elastics/</loc>
    <lastmod>2026-08-05</lastmod>
    <changefreq>yearly</changefreq>
  </url>
  <url>
    <loc>https://shipmindlabs.com/blog/2026-08-03-every-deal-platform-we-have-worked-on-ev/</loc>
    <lastmod>2026-08-03</lastmod>
    <changefreq>yearly</changefreq>
  </url>
  <url>
    <loc>https://shipmindlabs.com/blog/catching-money-bugs-with-ledger-invariants-not-error-logs/</loc>
    <lastmod>2026-07-30</lastmod>
    <changefreq>yearly</changefreq>
  </url>
  <url>
    <loc>https://shipmindlabs.com/blog/2026-07-29-half-the-next-js-apps-we-review-are-enti/</loc>
    <lastmod>2026-07-29</lastmod>
    <changefreq>yearly</changefreq>
  </url>
  <url>
    <loc>https://shipmindlabs.com/blog/2026-07-27-the-retry-you-added-to-make-the-system-m/</loc>
    <lastmod>2026-07-27</lastmod>
    <changefreq>yearly</changefreq>
  </url>
  <url>
    <loc>https://shipmindlabs.com/blog/2026-07-27-most-teams-plug-in-a-kyc-provider-see-a/</loc>
    <lastmod>2026-07-27</lastmod>
    <changefreq>yearly</changefreq>
  </url>
  <url>
    <loc>https://shipmindlabs.com/blog/2026-07-24-in-payments-transferring-money-is-the-ea/</loc>
    <lastmod>2026-07-24</lastmod>
    <changefreq>yearly</changefreq>
  </url>
</urlset>
