<?xml version="1.0" encoding="UTF-8"?>
<!--
  One URL, on purpose.

  The site has exactly one crawlable page. /app/ is the Flutter shell: it paints
  through CanvasKit, so a crawler gets an empty <canvas>, and it carries
  `noindex, follow` plus a canonical back here. Every route under it serves that
  same shell, so listing any of them would be the same empty page N times.

  The section anchors on the landing page (#what, #reader, #records, #who) are
  fragments of this document, not separate URLs. Listing them would pad the
  sitemap with duplicates of the page that already contains them, which is a
  reliable way to teach a crawler that this sitemap is not worth reading.

  <lastmod> is rewritten by build.sh from the last commit that touched
  landing/index.html, so it reflects when the content actually changed. Stamping
  it with the build date instead would mark the page as modified on every deploy
  and Google would, correctly, stop believing it.
-->
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
        xmlns:image="http://www.google.com/schemas/sitemap-image/1.1">
  <url>
    <loc>https://www.farmiq.africa/</loc>
    <lastmod>2026-08-24</lastmod>
    <changefreq>weekly</changefreq>
    <priority>1.0</priority>
    <image:image>
      <image:loc>https://www.farmiq.africa/og-image.png</image:loc>
      <image:title>FarmIQ — Every animal, on the record</image:title>
      <image:caption>Livestock records for African farms: a handheld ear tag reader and a mobile app that replace the paper record book.</image:caption>
    </image:image>
  </url>
</urlset>
