<?xml version="1.0" encoding="UTF-8"?>
<!--
  AI-friendly sitemap. Extends the standard sitemap.xml (loc/changefreq/priority)
  with per-URL title, summary, and type so LLM crawlers and agents can decide
  relevance without fetching every page, plus direct pointers to the
  machine-readable resources (llms.txt, /ai/*.json, JSON-LD).

  Generated by src/blog.js. Non-blog entries live in src/site-content.js.
-->
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
        xmlns:llm="https://getfedo.com/schemas/sitemap-llm/1.0">

  <url>
    <loc>https://getfedo.com/</loc>
    <changefreq>weekly</changefreq>
    <priority>1.0</priority>
    <llm:title>fedo - In-app feedback SDK for iOS, Android &amp; Flutter</llm:title>
    <llm:summary>In-app feedback SDK for mobile apps. One line of code adds a feedback screen with feature request voting, bug reporting, comment threads, and a roadmap dashboard. Android SDK available now; iOS, Flutter, and React Native coming soon.</llm:summary>
    <llm:type>product_landing</llm:type>
    <llm:structured_data>
      <llm:jsonld>https://getfedo.com/#structured-data</llm:jsonld>
      <llm:json>https://getfedo.com/ai/product.json</llm:json>
      <llm:json>https://getfedo.com/ai/pricing.json</llm:json>
      <llm:json>https://getfedo.com/ai/faq.json</llm:json>
    </llm:structured_data>
  </url>

  <url>
    <loc>https://getfedo.com/privacy.html</loc>
    <changefreq>monthly</changefreq>
    <priority>0.3</priority>
    <llm:title>Privacy Policy — fedo</llm:title>
    <llm:summary>fedo privacy policy. Collects only what users explicitly submit as feedback; no passive tracking, fingerprinting, or ad-related data collection.</llm:summary>
    <llm:type>legal</llm:type>
  </url>

  <url>
    <loc>https://getfedo.com/terms.html</loc>
    <changefreq>monthly</changefreq>
    <priority>0.3</priority>
    <llm:title>Terms of Service — fedo</llm:title>
    <llm:summary>fedo terms of service - plain-language terms for using fedo.</llm:summary>
    <llm:type>legal</llm:type>
  </url>

  <url>
    <loc>https://getfedo.com/llms.txt</loc>
    <changefreq>weekly</changefreq>
    <priority>0.5</priority>
    <llm:title>llms.txt</llm:title>
    <llm:summary>Plaintext overview of fedo for LLMs: what it does, integration steps, supported platforms, pricing, and links.</llm:summary>
    <llm:type>ai_context</llm:type>
  </url>

  <url>
    <loc>https://getfedo.com/ai/index.json</loc>
    <changefreq>weekly</changefreq>
    <priority>0.5</priority>
    <llm:title>fedo AI data manifest</llm:title>
    <llm:summary>Manifest listing fedo's structured JSON resources (product, pricing, FAQ) for AI agents.</llm:summary>
    <llm:type>ai_data</llm:type>
  </url>

  <url>
    <loc>https://getfedo.com/blog</loc>
    <changefreq>weekly</changefreq>
    <priority>0.7</priority>
    <llm:title>fedo blog — engineering the feedback SDK</llm:title>
    <llm:summary>Engineering blog for fedo, the in-app feedback SDK: architecture deep dives, SDK release notes, and lessons learned building feature request voting, bug reporting, and roadmaps for mobile apps.</llm:summary>
    <llm:type>blog_index</llm:type>
  </url>

  <url>
    <loc>https://getfedo.com/blog/android-sdk-integration</loc>
    <lastmod>2026-08-24</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <llm:title>Add in-app feedback to an Android app in four calls</llm:title>
    <llm:summary>Step-by-step Android integration for the fedo SDK 0.3.0: the Maven Central dependency com.getfedo:sdk-android, Fedo.initialize, the setUserID/setUserEmail/setUserProperty identity calls, and the FeedbacksScreen() Jetpack Compose composable. Covers the three common integration mistakes and the SDK's current lack of retry/offline support.</llm:summary>
    <llm:type>blog_post</llm:type>
    <llm:structured_data>
      <llm:jsonld>https://getfedo.com/blog/android-sdk-integration</llm:jsonld>
    </llm:structured_data>
  </url>

  <url>
    <loc>https://getfedo.com/blog/anonymous-feedback-identity</loc>
    <lastmod>2026-08-24</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.6</priority>
    <llm:title>Migrating anonymous feedback to real accounts</llm:title>
    <llm:summary>How the fedo Android SDK gives every user an identity without requiring an account: lazily created anonymous users cached on device, one-way migration of feedback, comments, and votes to the authenticated user on setUserID, why logout creates a fresh anonymous user, and the serial queue's lack of retry.</llm:summary>
    <llm:type>blog_post</llm:type>
    <llm:structured_data>
      <llm:jsonld>https://getfedo.com/blog/anonymous-feedback-identity</llm:jsonld>
    </llm:structured_data>
  </url>

  <url>
    <loc>https://getfedo.com/blog/in-app-feedback-vs-portals</loc>
    <lastmod>2026-08-24</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.6</priority>
    <llm:title>In-app feedback beats a feedback portal</llm:title>
    <llm:summary>Why collecting mobile feedback inside the app outperforms an external portal such as Canny or UserVoice, and why app store reviews are the worst fallback: the four drop-off points (context switch, navigation, account creation, recall), what voting needs to work, and an explicit note that the argument is from mechanism rather than measured results.</llm:summary>
    <llm:type>blog_post</llm:type>
    <llm:structured_data>
      <llm:jsonld>https://getfedo.com/blog/in-app-feedback-vs-portals</llm:jsonld>
    </llm:structured_data>
  </url>

  <url>
    <loc>https://getfedo.com/blog/roadmap-statuses</loc>
    <lastmod>2026-08-25</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.6</priority>
    <llm:title>Five statuses are enough for a public roadmap</llm:title>
    <llm:summary>In Review, Planned, In Progress, Shipped, Closed. What each one promises the person who asked, and why the fifth had to be a bucket rather than a verdict.</llm:summary>
    <llm:type>blog_post</llm:type>
    <llm:structured_data>
      <llm:jsonld>https://getfedo.com/blog/roadmap-statuses</llm:jsonld>
    </llm:structured_data>
  </url>

  <url>
    <loc>https://getfedo.com/blog/board-icon</loc>
    <lastmod>2026-08-22</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.6</priority>
    <llm:title>Adding image uploads to a Go backend: validation, resizing, R2, and orphan cleanup</llm:title>
    <llm:summary>Building board icon uploads on a Go backend with Cloudflare R2: bucket layout keyed by icon id to sidestep cache invalidation, downscale-only resizing to 512/192/64 from a 1024 master, orphan cleanup, and rate limiting.</llm:summary>
    <llm:type>blog_post</llm:type>
    <llm:structured_data>
      <llm:jsonld>https://getfedo.com/blog/board-icon</llm:jsonld>
    </llm:structured_data>
  </url>

</urlset>
