{"id":14,"date":"2026-09-04T19:38:58","date_gmt":"2026-09-04T19:38:58","guid":{"rendered":"https:\/\/demos.canvaswp.com\/ai-coding\/blog\/"},"modified":"2026-09-04T19:38:58","modified_gmt":"2026-09-04T19:38:58","slug":"blog","status":"publish","type":"page","link":"https:\/\/demos.canvaswp.com\/ai-coding\/blog\/","title":{"rendered":"Engineering Blog"},"content":{"rendered":"<section class=\"section my-0 dark cp-band\"><div class=\"container\"><div class=\"cp-section-head\"><span class=\"cp-eyebrow\">\/\/ ENGINEERING BLOG<\/span><h2 class=\"cp-h2\">How the assistant is built<\/h2><p class=\"cp-lead\">Notes from the team on indexing, ranking, evaluation and the parts that are harder than they look.<\/p><\/div><div class=\"canvas-posts-widget post-grid row gutter-30\">\n\t<div class=\"entry col-md-6 col-lg-4\">\n\t<div class=\"grid-inner\">\n\t\t\n\t\t<div class=\"entry-title\">\n\t<h3>\n\t\t\t\t\t<a href=\"https:\/\/demos.canvaswp.com\/ai-coding\/2026\/08\/18\/incremental-indexing-at-repository-scale\/\">Incremental Indexing at Repository Scale<\/a>\n\t\t\t<\/h3>\n<\/div>\n\n\t\t<div class=\"entry-meta\">\n\t<ul>\n\t\t\t\t\t\t\t\t\t\t<li>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<i class=\"uil uil-schedule\"><\/i> \t\t\t\t\t\tAugust 18, 2026\t\t\t\t\t<\/li>\n\t\t\t\t\t\t\t\t<\/ul>\n<\/div>\n\n\t\t<div class=\"entry-content\">\n\t\t\t<p>The first index of a million-line repository takes four minutes. Every index after it follows your saves. Here is what&hellip;<\/p>\n\t<\/div>\n\n\t\t\t<\/div>\n<\/div>\n<div class=\"entry col-md-6 col-lg-4\">\n\t<div class=\"grid-inner\">\n\t\t\n\t\t<div class=\"entry-title\">\n\t<h3>\n\t\t\t\t\t<a href=\"https:\/\/demos.canvaswp.com\/ai-coding\/2026\/08\/04\/why-the-second-suggestion-was-the-one-you-wanted\/\">Why the Second Suggestion Was the One You Wanted<\/a>\n\t\t\t<\/h3>\n<\/div>\n\n\t\t<div class=\"entry-meta\">\n\t<ul>\n\t\t\t\t\t\t\t\t\t\t<li>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<i class=\"uil uil-schedule\"><\/i> \t\t\t\t\t\tAugust 4, 2026\t\t\t\t\t<\/li>\n\t\t\t\t\t\t\t\t<\/ul>\n<\/div>\n\n\t\t<div class=\"entry-content\">\n\t\t\t<p>For three months our acceptance rate was stuck. The completions were right; the order was wrong. Fixing the order moved&hellip;<\/p>\n\t<\/div>\n\n\t\t\t<\/div>\n<\/div>\n<div class=\"entry col-md-6 col-lg-4\">\n\t<div class=\"grid-inner\">\n\t\t\n\t\t<div class=\"entry-title\">\n\t<h3>\n\t\t\t\t\t<a href=\"https:\/\/demos.canvaswp.com\/ai-coding\/2026\/07\/21\/evaluating-a-code-assistant-honestly\/\">Evaluating a Code Assistant Honestly<\/a>\n\t\t\t<\/h3>\n<\/div>\n\n\t\t<div class=\"entry-meta\">\n\t<ul>\n\t\t\t\t\t\t\t\t\t\t<li>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<i class=\"uil uil-schedule\"><\/i> \t\t\t\t\t\tJuly 21, 2026\t\t\t\t\t<\/li>\n\t\t\t\t\t\t\t\t<\/ul>\n<\/div>\n\n\t\t<div class=\"entry-content\">\n\t\t\t<p>Every assistant claims a benchmark. Most benchmarks measure the benchmark. This is the evaluation set we use internally and why&hellip;<\/p>\n\t<\/div>\n\n\t\t\t<\/div>\n<\/div>\n<div class=\"entry col-md-6 col-lg-4\">\n\t<div class=\"grid-inner\">\n\t\t\n\t\t<div class=\"entry-title\">\n\t<h3>\n\t\t\t\t\t<a href=\"https:\/\/demos.canvaswp.com\/ai-coding\/2026\/07\/02\/shipping-pull-request-review-without-annoying-anyone\/\">Shipping Pull Request Review Without Annoying Anyone<\/a>\n\t\t\t<\/h3>\n<\/div>\n\n\t\t<div class=\"entry-meta\">\n\t<ul>\n\t\t\t\t\t\t\t\t\t\t<li>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<i class=\"uil uil-schedule\"><\/i> \t\t\t\t\t\tJuly 2, 2026\t\t\t\t\t<\/li>\n\t\t\t\t\t\t\t\t<\/ul>\n<\/div>\n\n\t\t<div class=\"entry-content\">\n\t\t\t<p>An automated reviewer that comments on everything is a reviewer nobody reads. The whole design problem is deciding what to&hellip;<\/p>\n\t<\/div>\n\n\t\t\t<\/div>\n<\/div>\n<div class=\"entry col-md-6 col-lg-4\">\n\t<div class=\"grid-inner\">\n\t\t\n\t\t<div class=\"entry-title\">\n\t<h3>\n\t\t\t\t\t<a href=\"https:\/\/demos.canvaswp.com\/ai-coding\/2026\/06\/16\/forty-languages-is-not-forty-grammars\/\">Forty Languages Is Not Forty Grammars<\/a>\n\t\t\t<\/h3>\n<\/div>\n\n\t\t<div class=\"entry-meta\">\n\t<ul>\n\t\t\t\t\t\t\t\t\t\t<li>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<i class=\"uil uil-schedule\"><\/i> \t\t\t\t\t\tJune 16, 2026\t\t\t\t\t<\/li>\n\t\t\t\t\t\t\t\t<\/ul>\n<\/div>\n\n\t\t<div class=\"entry-content\">\n\t\t\t<p>Adding a language takes us about three weeks, and almost none of it is parsing. Here is where the time&hellip;<\/p>\n\t<\/div>\n\n\t\t\t<\/div>\n<\/div>\n<\/div>\n<\/div><\/section>","protected":false},"excerpt":{"rendered":"<p>Notes from the CodePilot engineering team on indexing, ranking, evaluation and shipping a code assistant.<\/p>\n","protected":false},"author":56,"featured_media":0,"parent":0,"menu_order":6,"comment_status":"closed","ping_status":"closed","template":"page-canvas","meta":{"footnotes":""},"class_list":["post-14","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/demos.canvaswp.com\/ai-coding\/wp-json\/wp\/v2\/pages\/14","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/demos.canvaswp.com\/ai-coding\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/demos.canvaswp.com\/ai-coding\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/demos.canvaswp.com\/ai-coding\/wp-json\/wp\/v2\/users\/56"}],"replies":[{"embeddable":true,"href":"https:\/\/demos.canvaswp.com\/ai-coding\/wp-json\/wp\/v2\/comments?post=14"}],"version-history":[{"count":0,"href":"https:\/\/demos.canvaswp.com\/ai-coding\/wp-json\/wp\/v2\/pages\/14\/revisions"}],"wp:attachment":[{"href":"https:\/\/demos.canvaswp.com\/ai-coding\/wp-json\/wp\/v2\/media?parent=14"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}