<?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).
-->
<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>

  <!--
    Blog URLs are hand-maintained alongside src/posts.js: keep them in sync
    with slugs in POSTS that have a matching blog/<slug>.md (same tradeoff
    documented there). Titles/excerpts come from the post frontmatter.
  -->

  <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/addUserProperty 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-24</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.6</priority>
    <llm:title>Four statuses are enough for a public roadmap</llm:title>
    <llm:summary>Why fedo's public roadmap has exactly four statuses - In Review, Planned, In Progress, Shipped - what each promises the requester, why internal states like In QA or Blocked should not be public, the In Review dumping-ground problem, and how status gates whether a user can still edit their own feedback.</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>Board icons started as one endpoint and ended up touching storage layout, image processing, cleanup jobs, and rate limiting. The architecture, the tradeoffs, and what I'd build the same way again.</llm:summary>
    <llm:type>blog_post</llm:type>
    <llm:structured_data>
      <llm:jsonld>https://getfedo.com/blog/board-icon#structured-data</llm:jsonld>
    </llm:structured_data>
  </url>

</urlset>
