{"id":11936,"date":"2026-08-26T12:48:44","date_gmt":"2026-08-26T16:48:44","guid":{"rendered":"https:\/\/canny.io\/blog\/?p=11936"},"modified":"2026-08-26T15:16:09","modified_gmt":"2026-08-26T19:16:09","slug":"build-ai-feedback-capture-in-house","status":"publish","type":"post","link":"https:\/\/canny.io\/blog\/build-ai-feedback-capture-in-house\/","title":{"rendered":"What it actually takes to build AI feedback capture in-house"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">It sounds simple enough. AI reads your sales and support conversations, pulls out the feature requests, and files them neatly in your project tracker. Claude can do this with one prompt. How hard can it be?<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Let&#8217;s go through it together. We&#8217;ll keep a running tally of engineering hours and monthly costs as we go, just like we did when we <a href=\"https:\/\/canny.io\/blog\/so-you-want-to-build-a-feedback-portal\/\">built a feedback portal<\/a>.<\/p>\n\n\n\n<div style=\"height:32px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Reading a conversation<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Fable can legitimately do this in five minutes. Paste in a support ticket, get back the feature requests, bug reports, and pricing complaints inside it. It even quotes the customer.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Nobody on the team is impressed. It&#8217;s 2026. Everyone here has run this exact prompt. That&#8217;s precisely the trap: the demo is so easy that the project looks done before it starts.<\/p>\n\n\n\n<p class=\"has-background wp-block-paragraph\" style=\"background-color:#eef0f8\">Effort: 0 hours. Running total: 0 hours. Cost: $0\/mo.<\/p>\n\n\n\n<div style=\"height:32px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Extraction<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">We wire the prompt to our support tool&#8217;s API with a small script and run it on last week&#8217;s conversations.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Turns out most conversations aren&#8217;t feedback. Password resets. &#8220;Great support, thanks!&#8221; A customer venting about their day. The extractor dutifully files &#8220;customer seems frustrated&#8221; as a feature request.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">So we tune the prompt. Then we build a benchmark set, because &#8220;seems better&#8221; is not a metric. Then we tune again. Precision versus recall makes its first appearance. It will not be the last.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The bill is real too. At our volume, about 2,500 support conversations and 400 sales calls a month, running a frontier model (like Fable) over everything lands around $3,000\/mo. That&#8217;s not a typo. Sales transcripts are long, and frontier tokens aren&#8217;t cheap. Your number will vary with your volume, but it won&#8217;t be small.<\/p>\n\n\n\n<p class=\"has-background wp-block-paragraph\" style=\"background-color:#eef0f8\">Effort: 16 hours. Running total: 16 hours. Cost: $3,000\/mo.<\/p>\n\n\n\n<div style=\"height:32px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Model costs<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">$3,000\/mo to read tickets will not survive a budget review.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The fix is a cheaper model. The catch is that cheaper models miss things. So we benchmark recall and precision across models, tune prompts for each, and decide how many missed feature requests we can live with.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">One problem: benchmarks need labeled data. Hundreds of conversations, hand-labeled with the right answers. We don&#8217;t have that. Someone spends a week making it.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The bill drops to around $200\/mo at our volume. The week is gone forever.<\/p>\n\n\n\n<p class=\"has-background wp-block-paragraph\" style=\"background-color:#eef0f8\">Effort: 20 hours. Running total: 36 hours. Cost: $200\/mo.<\/p>\n\n\n\n<div style=\"height:32px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">The ingestion pipeline<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">A month in, a PM asks about a feature request she saw in a ticket. The pipeline never saw it.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Our little script, it turns out, has been quietly missing things. It dies on rate limits. It skips conversations that update after it runs. It double-processes others. Nobody noticed, because nobody notices missing data.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">So we build it properly. Webhooks, plus polling to catch what webhooks miss. A queue with retries. A database, so every conversation is stored, tracked, and processed exactly once. A backfill job for everything we missed.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A pipeline is not a prompt. A pipeline is plumbing.<\/p>\n\n\n\n<p class=\"has-background wp-block-paragraph\" style=\"background-color:#eef0f8\">Effort: 24 hours. Running total: 60 hours. Cost: $220\/mo.<\/p>\n\n\n\n<div style=\"height:32px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Feedback types<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">We launched with feature requests. That lasted a month.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Support wants bug reports. Success wants churn reasons. Finance wants pricing feedback. Each type is a new prompt, a new benchmark, a new round of precision tuning, and a new debate about what counts. Is &#8220;the export is slow&#8221; a bug or a feature request? Two teams, two answers, one field in the database.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">More types also means more AI passes per conversation. The bill ticks up.<\/p>\n\n\n\n<p class=\"has-background wp-block-paragraph\" style=\"background-color:#eef0f8\">Effort: 20 hours. Running total: 80 hours. Cost: $250\/mo.<\/p>\n\n\n\n<div style=\"height:32px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Do we already have this?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The pipeline keeps filing requests for features we already have.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Customers ask for things that shipped last year. They just never found them. The extractor doesn&#8217;t know our product, so it can&#8217;t tell &#8220;doesn&#8217;t exist&#8221; from &#8220;exists, but hidden.&#8221; Fixing that means keeping a synced list of what we&#8217;ve built and running one more AI check on every idea. One more prompt, one more benchmark, one more way to be subtly wrong.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Silver lining: requests for existing features are their own insight. That&#8217;s a discoverability problem, and someone should hear about it.<\/p>\n\n\n\n<p class=\"has-background wp-block-paragraph\" style=\"background-color:#eef0f8\">Effort: 20 hours. Running total: 100 hours. Cost: $250\/mo.<\/p>\n\n\n\n<div style=\"height:32px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Linear\/Jira integration<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Time to put ideas where engineering lives. New ideas create issues in Linear, with the customer quote attached. Honestly, this part isn&#8217;t so bad.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Then someone asks: when engineering ships an issue, can we find out? We&#8217;ll want that later. Two-way sync. Slightly worse.<\/p>\n\n\n\n<p class=\"has-background wp-block-paragraph\" style=\"background-color:#eef0f8\">Effort: 12 hours. Running total: 112 hours. Cost: $250\/mo.<\/p>\n\n\n\n<div style=\"height:32px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Deduplication<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The pipeline runs. It works! Engineering asks us to please stop.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Most ideas already exist in Linear. The tenth request for SSO should attach to the SSO issue, not create &#8220;SSO (10).&#8221; Text search catches exact matches. Semantic search catches most of the rest. Then an LLM gets each new idea plus the closest candidates and makes the call: dupe or not, and of which issue.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">On Jira? Worse news. Jira has no semantic search, so you&#8217;re building your own: embeddings for every issue, a vector index, kept in sync as issues change.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Then the familiar grind. Benchmark, tune, decide how many false merges you can tolerate versus how many dupes slip through. This takes weeks, not days.<\/p>\n\n\n\n<p class=\"has-background wp-block-paragraph\" style=\"background-color:#eef0f8\">Effort: 20 hours. Running total: 132 hours. Cost: $300\/mo.<\/p>\n\n\n\n<div style=\"height:32px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Auto grouping<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">A thousand ideas in a flat list is not organization. It&#8217;s a landfill with search.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Related ideas should cluster. Everything about exports in one group, everything about permissions in another. So the pipeline learns to group, which means deciding when two ideas are related but not duplicates. Somehow a harder question than when they&#8217;re the same. Another prompt, another benchmark, another precision target.<\/p>\n\n\n\n<p class=\"has-background wp-block-paragraph\" style=\"background-color:#eef0f8\">Effort: 20 hours. Running total: 152 hours. Cost: $300\/mo.<\/p>\n\n\n\n<div style=\"height:32px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Theme detection<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Leadership doesn&#8217;t want a thousand ideas. They want five themes.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">&#8220;What are customers complaining about this quarter?&#8221; should have an answer. So we build <a href=\"https:\/\/canny.io\/features\/analyze-feedback\">theme detection<\/a>: recurring topics, tracked over time, with movement up and down. The themes have to stay stable month to month, or the trend chart is fiction. Stability is its own tuning problem, and yes, its own benchmark.<\/p>\n\n\n\n<p class=\"has-background wp-block-paragraph\" style=\"background-color:#eef0f8\">Effort: 20 hours. Running total: 172 hours. Cost: $300\/mo.<\/p>\n\n\n\n<div style=\"height:32px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Traceability<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">A PM asks: &#8220;Who actually asked for this?&#8221;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Fair question. An idea without receipts is just a sentence. So every idea needs links back to its source conversations, the customer quotes, and the people who asked. When the tenth request attaches to the SSO issue, all ten requesters should be listed on it.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Now the pipeline has memory, and the memory needs a schema.<\/p>\n\n\n\n<p class=\"has-background wp-block-paragraph\" style=\"background-color:#eef0f8\">Effort: 12 hours. Running total: 184 hours. Cost: $300\/mo.<\/p>\n\n\n\n<div style=\"height:32px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Undoing actions<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The AI files an idea under the wrong group. It merges two requests that aren&#8217;t duplicates. It doesn\u2019t happen often, but it happens.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The first time it happens, a PM asks two questions: why did it do that, and how do I fix it? So every automated action needs a trail, merges need to be reversible without losing the linked conversations, and a human&#8217;s correction has to survive the next pipeline run. Otherwise the AI quietly re-makes the same mistake tomorrow night.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In Canny, undo is a button. In your pipeline, undo is a Slack message to whoever built it.<\/p>\n\n\n\n<p class=\"has-background wp-block-paragraph\" style=\"background-color:#eef0f8\">Effort: 20 hours. Running total: 204 hours. Cost: $300\/mo.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<div style=\"display: flex; justify-content: center;\"><div class=\"hs-cta-embed hs-cta-embed-127905612377\" style=\"max-width:100%; max-height:100%; width:650px; height:313.4505275px; display: block; margin: 0 auto;\" data-hubspot-wrapper-cta-id=\"127905612377\">\n<link rel=\"stylesheet\" href=\"https:\/\/js.hscta.com\/embeddable_cta_placeholder_v1.css\">\n<div class=\"hs-cta-loading-dot__container\">\n<div class=\"hs-cta-loading-dot\"><\/div>\n<div class=\"hs-cta-loading-dot\"><\/div>\n<div class=\"hs-cta-loading-dot\"><\/div>\n<\/div>\n<div class=\"hs-cta-embed__skeleton\"><\/div>\n<picture>\n<source srcset=\"data:image\/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\" media=\"(max-width: 480px)\" \/>\n<img decoding=\"async\" alt=\"Form CTA\" loading=\"lazy\" src=\"https:\/\/no-cache.hubspot.com\/cta\/default\/5705808\/interactive-127905612377.png\" style=\"height: 100%; width: 100%; object-fit: fill\" onerror=\"this.style.display='none'\" \/>\n<\/picture>\n<\/div><\/div>\n\n\n\n<div style=\"height:32px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Connecting all the sources<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Support was just the beginning.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Sales wants their calls in there, so we integrate Gong. Except half the AEs use a different recorder. CS runs on a different tool entirely. Then someone asks about NPS surveys. Then app store reviews. Then G2.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Every source is a new integration: new API, new auth, new data shape, new failure modes. Then the sales team switches tools next quarter, and we rebuild one from scratch. The pipeline never gets finished. It just gets more inputs.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Every new source is also more volume, and the AI bill grows with it.<\/p>\n\n\n\n<p class=\"has-background wp-block-paragraph\" style=\"background-color:#eef0f8\">Effort: 32 hours. Running total: 236 hours. Cost: $380\/mo.<\/p>\n\n\n\n<div style=\"height:32px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">CRM integration<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">We now know what customers want. We don&#8217;t know what it&#8217;s worth.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">An idea plus a list of users is only so useful. It gets really useful when those users roll up to companies, the companies have revenue attached, and open deals link to the features blocking them. &#8220;27 people want SSO&#8221; is interesting. &#8220;SSO is blocking $840k in pipeline&#8221; gets a meeting.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">So we sync account and opportunity data from <a href=\"https:\/\/canny.io\/integrations\/salesforce\">Salesforce<\/a> or <a href=\"https:\/\/canny.io\/integrations\/hubspot\">HubSpot<\/a>. Field mapping, sync jobs, rate limits, retries. Someone owns that sync now. Forever. They know who they are.<\/p>\n\n\n\n<p class=\"has-background wp-block-paragraph\" style=\"background-color:#eef0f8\">Effort: 24 hours. Running total: 260 hours. Cost: $380\/mo.<\/p>\n\n\n\n<div style=\"height:32px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Deal filters<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Sales lives in segments. &#8220;Show me feedback from deals we lost last quarter.&#8221; &#8220;Just open opportunities.&#8221; &#8220;Only deals closing this quarter.&#8221; &#8220;New business only, not renewals.&#8221;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Each filter is easy. Supporting all of them means the CRM sync has to carry deal stages, close dates, amounts, and deal types, and keep them all fresh. A filter on stale data is a lie with a dropdown.<\/p>\n\n\n\n<p class=\"has-background wp-block-paragraph\" style=\"background-color:#eef0f8\">Effort: 8 hours. Running total: 268 hours. Cost: $380\/mo.<\/p>\n\n\n\n<div style=\"height:32px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">User segmentation<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Same story on the customer side. &#8220;Only companies paying over $50k.&#8221; &#8220;Only the enterprise plan.&#8221; &#8220;Only accounts using the API product.&#8221;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">So we sync company traits from billing and our app, then build the filtering UI. Then we keep the traits fresh, because stale data is worse than none.<\/p>\n\n\n\n<p class=\"has-background wp-block-paragraph\" style=\"background-color:#eef0f8\">Effort: 8 hours. Running total: 276 hours. Cost: $380\/mo.<\/p>\n\n\n\n<div style=\"height:32px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Reporting<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Leadership has questions. Which features will help us close deals? Which deals are blocked right now, and on what? We shipped three of those features last quarter. Did the deals actually close?<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">That last one is the killer. Answering it means joining feedback, issues, and CRM history across time. We build dashboards. Every exec wants a slightly different slice, and every slice is a ticket.<\/p>\n\n\n\n<p class=\"has-background wp-block-paragraph\" style=\"background-color:#eef0f8\">Effort: 24 hours. Running total: 300 hours. Cost: $380\/mo.<\/p>\n\n\n\n<div style=\"height:32px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">MCP access<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The team is living in Claude now. They don&#8217;t want another dashboard. They want to ask: &#8220;What are enterprise customers complaining about this month?&#8221; &#8220;Do we already have this feature?&#8221;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">So we build an <a href=\"https:\/\/canny.io\/features\/mcp\">MCP server<\/a> over the data: the ideas, the themes, the customer quotes behind them. Tool definitions, authentication, updates every time the schema changes. It&#8217;s genuinely useful. It&#8217;s also a second interface to maintain, and it has to respect every permission rule the first one has.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">We take a moment. We built an AI pipeline to avoid buying an AI tool, and now we&#8217;re building AI tooling so our AI can read our AI pipeline.<\/p>\n\n\n\n<p class=\"has-background wp-block-paragraph\" style=\"background-color:#eef0f8\">Effort: 8 hours. Running total: 308 hours. Cost: $380\/mo.<\/p>\n\n\n\n<div style=\"height:32px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Team notifications<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">A feature ships. Three closed-lost deals wanted it. Nobody tells the reps.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">So we build notifications. When an issue ships, the AEs and CSMs whose accounts asked for it get a ping: &#8220;Acme wanted this. It&#8217;s live. Go win them back.&#8221; It&#8217;s one of the most valuable things in the whole system. It&#8217;s also a join across feedback, issues, accounts, and deal owners that has to stay accurate forever.<\/p>\n\n\n\n<p class=\"has-background wp-block-paragraph\" style=\"background-color:#eef0f8\">Effort: 8 hours. Running total: 316 hours. Cost: $380\/mo.<\/p>\n\n\n\n<div style=\"height:32px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Close the loop<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Then the bigger version: email every customer who asked for a feature when it ships.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Which means we&#8217;re sending email now. A provider, a send queue, unsubscribe links, a preferences page. Bounce handling, because sending to dead addresses tanks deliverability, and once our sender reputation slips, every email we send lands in spam. Sanitizing anything user-generated that ends up in an email. Email is an entire discipline, and now it&#8217;s ours, bolted onto the side of a data pipeline.<\/p>\n\n\n\n<p class=\"has-background wp-block-paragraph\" style=\"background-color:#eef0f8\">Effort: 16 hours. Running total: 332 hours. Cost: $400\/mo.<\/p>\n\n\n\n<div style=\"height:32px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Privacy<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">It hits us one night. We built a database that stores copies of every customer conversation. Support tickets, sales calls, all of it. Names, emails, the occasional pasted API key.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">That needs access controls, a retention policy, and deletion that actually works. When a customer deletes their data in the support tool, our copy has to go too. GDPR doesn&#8217;t care that our copy lives in a side project.<\/p>\n\n\n\n<p class=\"has-background wp-block-paragraph\" style=\"background-color:#eef0f8\">Effort: 12 hours. Running total: 344 hours. Cost: $400\/mo.<\/p>\n\n\n\n<div style=\"height:32px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">SOC 2<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">A prospect&#8217;s security team sends a questionnaire. One question: &#8220;Do any internal tools process customer conversation data?&#8221;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Yes. Yes they do. The pipeline is now in scope for our <a href=\"https:\/\/canny.io\/security\">SOC 2 audit<\/a>. Access reviews, evidence collection, a pen test that covers one more application, vulnerability scanning, a slightly pricier audit. Call it another $300\/mo once the annual bills are amortized.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Our compliance lead just learned the pipeline exists. They have follow-up questions.<\/p>\n\n\n\n<p class=\"has-background wp-block-paragraph\" style=\"background-color:#eef0f8\">Effort: 12 hours. Running total: 356 hours. Cost: $700\/mo.<\/p>\n\n\n\n<div style=\"height:32px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">And this is just the start<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">One morning, an email arrives: the model we tuned everything on is being deprecated in 90 days.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Every prompt, every benchmark, every precision number we fought for, re-validated against its replacement. This will happen again, roughly once a year. It&#8217;s nobody&#8217;s fault. It&#8217;s just weather now, and we live in it.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">That&#8217;s one storm. There&#8217;s also the customer who writes in German. The exec who wants Zoom calls in the pipeline. The quarter where support volume triples, and so does the bill.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A pipeline isn&#8217;t a project with an end date. It&#8217;s a subscription you pay in engineers.<\/p>\n\n\n\n<div style=\"height:32px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">The real cost<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Notice what the tally doesn&#8217;t include: an owner.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Every pipeline needs one. Someone who re-runs the benchmarks, fixes the Gong sync, answers &#8220;why did it miss this ticket.&#8221; That person is one of your best engineers, because accuracy work is hard. Now a chunk of their year belongs to an internal tool.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The worse version is having no owner. The pipeline drifts, the numbers quietly rot, and the roadmap meeting runs on data nobody can vouch for. A wrong number in that meeting costs more than every line item in this post. You&#8217;ll just never see the invoice.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">You wanted this automated because the decisions riding on feedback are big ones. That logic cuts both ways. The bigger the decisions, the less you want them running on a side project.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ours isn&#8217;t a side project. It&#8217;s the whole company.<\/p>\n\n\n\n<div style=\"height:32px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Was it worth it?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Read the tally back. 356 hours. Twenty-seven grand of engineering time, $700 a month in bills, a quarter and a half on the calendar. For a pipeline that does, roughly, what the five-minute demo appeared to do.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Most internal tools degrade gracefully. Half-finished, they&#8217;re still half-useful. This one isn&#8217;t. If the pipeline misses a third of the feedback, or invents requests nobody made, your team notices. They stop trusting it, and they quietly go back to gut feel. Below a certain accuracy bar, the whole thing is a decoration.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Getting above that bar is the real work. It&#8217;s why a third of the tally is pure benchmarking. It&#8217;s also where a decade matters. To know whether a model is good enough, you need datasets to benchmark against. We spent a long time building ours, and we re-run those benchmarks every time a model changes, a prompt changes, or a new feedback type ships. That&#8217;s how Autopilot gets high accuracy without flagship costs. You&#8217;d be starting that work from zero, at flagship prices.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">So sure, spend the quarter. Or spend an afternoon connecting your tools to <a href=\"https:\/\/canny.io\/features\/autopilot\">Autopilot<\/a>, and spend the quarter on the product your customers are giving you all this feedback about.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">They&#8217;re already telling you what to build. Don&#8217;t make hearing them a side project.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<div style=\"text-align: center;\"><div class=\"hs-cta-embed hs-cta-embed-122984161548\" style=\"display: inline-block; max-width:100%; max-height:100%; width:700px;height:225.8854182470703px\" data-hubspot-wrapper-cta-id=\"122984161548\">\n<link rel=\"stylesheet\" href=\"https:\/\/js.hscta.com\/embeddable_cta_placeholder_v1.css\">\n<div class=\"hs-cta-loading-dot__container\">\n<div class=\"hs-cta-loading-dot\"><\/div>\n<div class=\"hs-cta-loading-dot\"><\/div>\n<div class=\"hs-cta-loading-dot\"><\/div>\n<\/div>\n<div class=\"hs-cta-embed__skeleton\"><\/div>\n<picture>\n<source srcset=\"data:image\/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\" media=\"(max-width: 480px)\" \/>\n<img decoding=\"async\" alt=\"Get a free walkthrough\" loading=\"lazy\" src=\"https:\/\/no-cache.hubspot.com\/cta\/default\/5705808\/interactive-122984161548.png\" style=\"height: 100%; width: 100%; object-fit: fill\" onerror=\"this.style.display='none'\" \/>\n<\/picture>\n<\/div><\/div>\n","protected":false},"excerpt":{"rendered":"<p>AI can pull feedback from a support ticket in five minutes. Here&#8217;s the 356 hours of pipeline, benchmarking, and compliance work that makes it real.<\/p>\n","protected":false},"author":3,"featured_media":11940,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"content-type":"","footnotes":""},"categories":[6,7],"tags":[15],"class_list":["post-11936","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-founder-stories","category-product-management","tag-product-management"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO Pro 5.0.1.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"AI can pull feedback from a support ticket in five minutes. Here&#039;s the 356 hours of pipeline, benchmarking, and compliance work that makes it real.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Andrew Rasmussen\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/canny.io\/blog\/build-ai-feedback-capture-in-house\/\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO Pro (AIOSEO) 5.0.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"en_US\" \/>\n\t\t<meta property=\"og:site_name\" content=\"Canny Blog - How to build a more informed product\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"What it actually takes to build AI feedback capture in-house - Canny Blog\" \/>\n\t\t<meta property=\"og:description\" content=\"AI can pull feedback from a support ticket in five minutes. Here&#039;s the 356 hours of pipeline, benchmarking, and compliance work that makes it real.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/canny.io\/blog\/build-ai-feedback-capture-in-house\/\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/canny.io\/blog\/wp-content\/uploads\/2026\/08\/building-autopilot.avif\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/canny.io\/blog\/wp-content\/uploads\/2026\/08\/building-autopilot.avif\" \/>\n\t\t<meta property=\"og:image:width\" content=\"1520\" \/>\n\t\t<meta property=\"og:image:height\" content=\"800\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2026-08-26T16:48:44+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2026-08-26T19:16:09+00:00\" \/>\n\t\t<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n\t\t<meta name=\"twitter:title\" content=\"What it actually takes to build AI feedback capture in-house - Canny Blog\" \/>\n\t\t<meta name=\"twitter:description\" content=\"AI can pull feedback from a support ticket in five minutes. Here&#039;s the 356 hours of pipeline, benchmarking, and compliance work that makes it real.\" \/>\n\t\t<meta name=\"twitter:creator\" content=\"@a13n\" \/>\n\t\t<meta name=\"twitter:image\" content=\"https:\/\/canny.io\/blog\/wp-content\/uploads\/2026\/08\/building-autopilot.avif\" \/>\n\t\t<script type=\"application\/ld+json\" class=\"aioseo-schema\">\n\t\t\t{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"BlogPosting\",\"@id\":\"https:\\\/\\\/canny.io\\\/blog\\\/build-ai-feedback-capture-in-house\\\/#blogposting\",\"name\":\"What it actually takes to build AI feedback capture in-house - Canny Blog\",\"headline\":\"What it actually takes to build AI feedback capture in-house\",\"author\":{\"@id\":\"https:\\\/\\\/canny.io\\\/blog\\\/author\\\/a13n\\\/#author\"},\"publisher\":{\"@id\":\"https:\\\/\\\/canny.io\\\/blog\\\/#organization\"},\"image\":{\"@type\":\"ImageObject\",\"url\":\"https:\\\/\\\/canny.io\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/08\\\/building-autopilot.avif\",\"width\":1520,\"height\":800,\"caption\":\"Cover image for blog post looking at how to use AI to build automated feedback capture in-house. Shows someone working on a robot with smoke coming from it.\"},\"datePublished\":\"2026-08-26T12:48:44-04:00\",\"dateModified\":\"2026-08-26T15:16:09-04:00\",\"inLanguage\":\"en-US\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/canny.io\\\/blog\\\/build-ai-feedback-capture-in-house\\\/#webpage\"},\"isPartOf\":{\"@id\":\"https:\\\/\\\/canny.io\\\/blog\\\/build-ai-feedback-capture-in-house\\\/#webpage\"},\"articleSection\":\"Founder Stories, Product Management, product management\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/canny.io\\\/blog\\\/build-ai-feedback-capture-in-house\\\/#breadcrumblist\",\"itemListElement\":[{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/canny.io\\\/blog#listItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/canny.io\\\/blog\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/canny.io\\\/blog\\\/category\\\/founder-stories\\\/#listItem\",\"name\":\"Founder Stories\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/canny.io\\\/blog\\\/category\\\/founder-stories\\\/#listItem\",\"position\":2,\"name\":\"Founder Stories\",\"item\":\"https:\\\/\\\/canny.io\\\/blog\\\/category\\\/founder-stories\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/canny.io\\\/blog\\\/build-ai-feedback-capture-in-house\\\/#listItem\",\"name\":\"What it actually takes to build AI feedback capture in-house\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/canny.io\\\/blog#listItem\",\"name\":\"Home\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/canny.io\\\/blog\\\/build-ai-feedback-capture-in-house\\\/#listItem\",\"position\":3,\"name\":\"What it actually takes to build AI feedback capture in-house\",\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/canny.io\\\/blog\\\/category\\\/founder-stories\\\/#listItem\",\"name\":\"Founder Stories\"}}]},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/canny.io\\\/blog\\\/#organization\",\"name\":\"Canny Blog\",\"description\":\"How to build a more informed product\",\"url\":\"https:\\\/\\\/canny.io\\\/blog\\\/\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/canny.io\\\/blog\\\/author\\\/a13n\\\/#author\",\"url\":\"https:\\\/\\\/canny.io\\\/blog\\\/author\\\/a13n\\\/\",\"name\":\"Andrew Rasmussen\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\\\/\\\/canny.io\\\/blog\\\/build-ai-feedback-capture-in-house\\\/#authorImage\",\"url\":\"https:\\\/\\\/canny.io\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/08\\\/andrew.png\"},\"sameAs\":[\"https:\\\/\\\/x.com\\\/a13n\"]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/canny.io\\\/blog\\\/build-ai-feedback-capture-in-house\\\/#webpage\",\"url\":\"https:\\\/\\\/canny.io\\\/blog\\\/build-ai-feedback-capture-in-house\\\/\",\"name\":\"What it actually takes to build AI feedback capture in-house - Canny Blog\",\"description\":\"AI can pull feedback from a support ticket in five minutes. Here's the 356 hours of pipeline, benchmarking, and compliance work that makes it real.\",\"inLanguage\":\"en-US\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/canny.io\\\/blog\\\/#website\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/canny.io\\\/blog\\\/build-ai-feedback-capture-in-house\\\/#breadcrumblist\"},\"author\":{\"@id\":\"https:\\\/\\\/canny.io\\\/blog\\\/author\\\/a13n\\\/#author\"},\"creator\":{\"@id\":\"https:\\\/\\\/canny.io\\\/blog\\\/author\\\/a13n\\\/#author\"},\"image\":{\"@type\":\"ImageObject\",\"url\":\"https:\\\/\\\/canny.io\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/08\\\/building-autopilot.avif\",\"@id\":\"https:\\\/\\\/canny.io\\\/blog\\\/build-ai-feedback-capture-in-house\\\/#mainImage\",\"width\":1520,\"height\":800,\"caption\":\"Cover image for blog post looking at how to use AI to build automated feedback capture in-house. Shows someone working on a robot with smoke coming from it.\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/canny.io\\\/blog\\\/build-ai-feedback-capture-in-house\\\/#mainImage\"},\"datePublished\":\"2026-08-26T12:48:44-04:00\",\"dateModified\":\"2026-08-26T15:16:09-04:00\"},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/canny.io\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/canny.io\\\/blog\\\/\",\"name\":\"Canny Blog\",\"description\":\"How to build a more informed product\",\"inLanguage\":\"en-US\",\"publisher\":{\"@id\":\"https:\\\/\\\/canny.io\\\/blog\\\/#organization\"}}]}\n\t\t<\/script>\n\t\t<!-- All in One SEO Pro -->\r\n\t\t<title>What it actually takes to build AI feedback capture in-house - Canny Blog<\/title>\n\n","aioseo_head_json":{"title":"What it actually takes to build AI feedback capture in-house - Canny Blog","description":"AI can pull feedback from a support ticket in five minutes. Here's the 356 hours of pipeline, benchmarking, and compliance work that makes it real.","canonical_url":"https:\/\/canny.io\/blog\/build-ai-feedback-capture-in-house\/","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"BlogPosting","@id":"https:\/\/canny.io\/blog\/build-ai-feedback-capture-in-house\/#blogposting","name":"What it actually takes to build AI feedback capture in-house - Canny Blog","headline":"What it actually takes to build AI feedback capture in-house","author":{"@id":"https:\/\/canny.io\/blog\/author\/a13n\/#author"},"publisher":{"@id":"https:\/\/canny.io\/blog\/#organization"},"image":{"@type":"ImageObject","url":"https:\/\/canny.io\/blog\/wp-content\/uploads\/2026\/08\/building-autopilot.avif","width":1520,"height":800,"caption":"Cover image for blog post looking at how to use AI to build automated feedback capture in-house. Shows someone working on a robot with smoke coming from it."},"datePublished":"2026-08-26T12:48:44-04:00","dateModified":"2026-08-26T15:16:09-04:00","inLanguage":"en-US","mainEntityOfPage":{"@id":"https:\/\/canny.io\/blog\/build-ai-feedback-capture-in-house\/#webpage"},"isPartOf":{"@id":"https:\/\/canny.io\/blog\/build-ai-feedback-capture-in-house\/#webpage"},"articleSection":"Founder Stories, Product Management, product management"},{"@type":"BreadcrumbList","@id":"https:\/\/canny.io\/blog\/build-ai-feedback-capture-in-house\/#breadcrumblist","itemListElement":[{"@type":"ListItem","@id":"https:\/\/canny.io\/blog#listItem","position":1,"name":"Home","item":"https:\/\/canny.io\/blog","nextItem":{"@type":"ListItem","@id":"https:\/\/canny.io\/blog\/category\/founder-stories\/#listItem","name":"Founder Stories"}},{"@type":"ListItem","@id":"https:\/\/canny.io\/blog\/category\/founder-stories\/#listItem","position":2,"name":"Founder Stories","item":"https:\/\/canny.io\/blog\/category\/founder-stories\/","nextItem":{"@type":"ListItem","@id":"https:\/\/canny.io\/blog\/build-ai-feedback-capture-in-house\/#listItem","name":"What it actually takes to build AI feedback capture in-house"},"previousItem":{"@type":"ListItem","@id":"https:\/\/canny.io\/blog#listItem","name":"Home"}},{"@type":"ListItem","@id":"https:\/\/canny.io\/blog\/build-ai-feedback-capture-in-house\/#listItem","position":3,"name":"What it actually takes to build AI feedback capture in-house","previousItem":{"@type":"ListItem","@id":"https:\/\/canny.io\/blog\/category\/founder-stories\/#listItem","name":"Founder Stories"}}]},{"@type":"Organization","@id":"https:\/\/canny.io\/blog\/#organization","name":"Canny Blog","description":"How to build a more informed product","url":"https:\/\/canny.io\/blog\/"},{"@type":"Person","@id":"https:\/\/canny.io\/blog\/author\/a13n\/#author","url":"https:\/\/canny.io\/blog\/author\/a13n\/","name":"Andrew Rasmussen","image":{"@type":"ImageObject","@id":"https:\/\/canny.io\/blog\/build-ai-feedback-capture-in-house\/#authorImage","url":"https:\/\/canny.io\/blog\/wp-content\/uploads\/2026\/08\/andrew.png"},"sameAs":["https:\/\/x.com\/a13n"]},{"@type":"WebPage","@id":"https:\/\/canny.io\/blog\/build-ai-feedback-capture-in-house\/#webpage","url":"https:\/\/canny.io\/blog\/build-ai-feedback-capture-in-house\/","name":"What it actually takes to build AI feedback capture in-house - Canny Blog","description":"AI can pull feedback from a support ticket in five minutes. Here's the 356 hours of pipeline, benchmarking, and compliance work that makes it real.","inLanguage":"en-US","isPartOf":{"@id":"https:\/\/canny.io\/blog\/#website"},"breadcrumb":{"@id":"https:\/\/canny.io\/blog\/build-ai-feedback-capture-in-house\/#breadcrumblist"},"author":{"@id":"https:\/\/canny.io\/blog\/author\/a13n\/#author"},"creator":{"@id":"https:\/\/canny.io\/blog\/author\/a13n\/#author"},"image":{"@type":"ImageObject","url":"https:\/\/canny.io\/blog\/wp-content\/uploads\/2026\/08\/building-autopilot.avif","@id":"https:\/\/canny.io\/blog\/build-ai-feedback-capture-in-house\/#mainImage","width":1520,"height":800,"caption":"Cover image for blog post looking at how to use AI to build automated feedback capture in-house. Shows someone working on a robot with smoke coming from it."},"primaryImageOfPage":{"@id":"https:\/\/canny.io\/blog\/build-ai-feedback-capture-in-house\/#mainImage"},"datePublished":"2026-08-26T12:48:44-04:00","dateModified":"2026-08-26T15:16:09-04:00"},{"@type":"WebSite","@id":"https:\/\/canny.io\/blog\/#website","url":"https:\/\/canny.io\/blog\/","name":"Canny Blog","description":"How to build a more informed product","inLanguage":"en-US","publisher":{"@id":"https:\/\/canny.io\/blog\/#organization"}}]},"og:locale":"en_US","og:site_name":"Canny Blog - How to build a more informed product","og:type":"article","og:title":"What it actually takes to build AI feedback capture in-house - Canny Blog","og:description":"AI can pull feedback from a support ticket in five minutes. Here's the 356 hours of pipeline, benchmarking, and compliance work that makes it real.","og:url":"https:\/\/canny.io\/blog\/build-ai-feedback-capture-in-house\/","og:image":"https:\/\/canny.io\/blog\/wp-content\/uploads\/2026\/08\/building-autopilot.avif","og:image:secure_url":"https:\/\/canny.io\/blog\/wp-content\/uploads\/2026\/08\/building-autopilot.avif","og:image:width":1520,"og:image:height":800,"article:published_time":"2026-08-26T16:48:44+00:00","article:modified_time":"2026-08-26T19:16:09+00:00","twitter:card":"summary_large_image","twitter:title":"What it actually takes to build AI feedback capture in-house - Canny Blog","twitter:description":"AI can pull feedback from a support ticket in five minutes. Here's the 356 hours of pipeline, benchmarking, and compliance work that makes it real.","twitter:creator":"@a13n","twitter:image":"https:\/\/canny.io\/blog\/wp-content\/uploads\/2026\/08\/building-autopilot.avif"},"aioseo_meta_data":{"post_id":"11936","title":null,"description":"AI can pull feedback from a support ticket in five minutes. Here's the 356 hours of pipeline, benchmarking, and compliance work that makes it real.","keywords":null,"keyphrases":{"focus":{"keyphrase":"","score":0,"analysis":{"keyphraseInTitle":{"score":0,"maxScore":9,"error":1}}},"additional":[]},"primary_term":{"category":6},"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":"","og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"BlogPosting","isEnabled":true},"graphs":[]},"schema_type":"default","schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":"-1","robots_max_videopreview":"-1","robots_max_imagepreview":"large","priority":null,"frequency":"default","local_seo":null,"breadcrumb_settings":null,"limit_modified_date":false,"ai":{"faqs":[],"keyPoints":[],"schemas":[],"titles":[],"descriptions":[],"socialPosts":{"email":{"subject":"","preview":"","content":""},"linkedin":[],"twitter":[],"facebook":[],"instagram":[]}},"created":"2026-08-26 04:08:43","updated":"2026-08-26 21:16:50","seo_analyzer_scan_date":"2026-08-26 19:17:14","reviewed_by":"0","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"aioseo_breadcrumb":"<div class=\"aioseo-breadcrumbs\"><span class=\"aioseo-breadcrumb\">\n\t<a href=\"https:\/\/canny.io\/blog\" title=\"Home\">Home<\/a>\n<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t<a href=\"https:\/\/canny.io\/blog\/category\/founder-stories\/\" title=\"Founder Stories\">Founder Stories<\/a>\n<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\tWhat it actually takes to build AI feedback capture in-house\n<\/span><\/div>","aioseo_breadcrumb_json":[{"label":"Home","link":"https:\/\/canny.io\/blog"},{"label":"Founder Stories","link":"https:\/\/canny.io\/blog\/category\/founder-stories\/"},{"label":"What it actually takes to build AI feedback capture in-house","link":"https:\/\/canny.io\/blog\/build-ai-feedback-capture-in-house\/"}],"_links":{"self":[{"href":"https:\/\/canny.io\/blog\/wp-json\/wp\/v2\/posts\/11936","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/canny.io\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/canny.io\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/canny.io\/blog\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/canny.io\/blog\/wp-json\/wp\/v2\/comments?post=11936"}],"version-history":[{"count":3,"href":"https:\/\/canny.io\/blog\/wp-json\/wp\/v2\/posts\/11936\/revisions"}],"predecessor-version":[{"id":11955,"href":"https:\/\/canny.io\/blog\/wp-json\/wp\/v2\/posts\/11936\/revisions\/11955"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/canny.io\/blog\/wp-json\/wp\/v2\/media\/11940"}],"wp:attachment":[{"href":"https:\/\/canny.io\/blog\/wp-json\/wp\/v2\/media?parent=11936"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/canny.io\/blog\/wp-json\/wp\/v2\/categories?post=11936"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/canny.io\/blog\/wp-json\/wp\/v2\/tags?post=11936"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}