{"id":258,"date":"2026-09-07T22:41:11","date_gmt":"2026-09-07T20:41:11","guid":{"rendered":"https:\/\/www.insync.co.za\/blog\/?p=258"},"modified":"2026-09-07T22:41:12","modified_gmt":"2026-09-07T20:41:12","slug":"how-we-used-41000-copilot-studio-credits-in-2-days","status":"publish","type":"post","link":"https:\/\/www.insync.co.za\/blog\/2026\/09\/07\/how-we-used-41000-copilot-studio-credits-in-2-days\/","title":{"rendered":"How We Used 41,000 Copilot Studio Credits in 2 Days"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\"><strong>41,000 Copilot Studio credits in two days.<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">That got our attention.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">While working with a colleague, we were building an agent in <strong>Microsoft Copilot Studio<\/strong> to perform lookups against data.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The agent worked. The responses were good.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The problem was the model we selected.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">We were using a <strong>deep reasoning model<\/strong> for a workload that was primarily a lookup operation.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">And that turned into an expensive architecture lesson.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">The Problem<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The workflow was fairly simple:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>User request\n     \u2193\nUnderstand request\n     \u2193\nFind required data\n     \u2193\nRetrieve data\n     \u2193\nReturn response\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">There was some natural-language understanding involved, but we weren&#8217;t asking the agent to solve a complex problem or perform sophisticated multi-step reasoning.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">It was mostly:<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">&#8220;Find this information and give it to me.&#8221;<\/p>\n<\/blockquote>\n\n\n\n<p class=\"wp-block-paragraph\">Yet we had selected a model designed for much deeper reasoning.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The result?<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Approximately 41,000 Copilot Studio credits consumed in two days.<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Nothing was broken. The agent was doing exactly what we asked it to do.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Our architecture was simply using <strong>more reasoning capability than the workload required<\/strong>.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">The Lesson: More Powerful Doesn&#8217;t Mean Better<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">One of the easiest mistakes to make when building AI agents is choosing the most capable model available.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">It feels logical:<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">More intelligence \u2192 better responses \u2192 better solution.<\/p>\n<\/blockquote>\n\n\n\n<p class=\"wp-block-paragraph\">But there&#8217;s another side to the equation:<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\"><strong>More capability \u2192 potentially more cost and latency.<\/strong><\/p>\n<\/blockquote>\n\n\n\n<p class=\"wp-block-paragraph\">Microsoft&#8217;s Copilot Studio documentation makes a similar distinction between models intended for simpler workloads and models designed for deeper reasoning.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">That means model selection should be treated as an <strong>architecture decision<\/strong>, not just an AI configuration decision.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The question shouldn&#8217;t be:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>&#8220;What&#8217;s the most powerful model we can use?&#8221;<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">It should be:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>&#8220;What&#8217;s the appropriate level of intelligence for this workload?&#8221;<\/strong><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Use Code Where Code Makes Sense<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">This also reinforces a principle from traditional software architecture:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Don&#8217;t use a complex solution for a deterministic problem.<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">If the requirement is simply:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Get customer by ID\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">then an API or database query is probably the right tool.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">You don&#8217;t necessarily need an AI agent to solve it.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">AI becomes more useful when the input is less deterministic.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">For example:<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">&#8220;I&#8217;m looking for information about my outstanding account and the payments I made recently.&#8221;<\/p>\n<\/blockquote>\n\n\n\n<p class=\"wp-block-paragraph\">Now we need to interpret the request, identify the relevant information and potentially combine multiple sources.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">That&#8217;s where an agent can provide real value.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The architecture might therefore look more like:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>User\n \u2193\nAI \/ Intent Understanding\n \u2193\nApplication Logic\n \u2193\nAPI \/ Database\n \u2193\nResponse\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Rather than allowing a reasoning model to control every step.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Think About Cost Per Operation<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Traditional software engineers are already used to thinking about:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>CPU<\/li>\n\n\n\n<li>Memory<\/li>\n\n\n\n<li>Database performance<\/li>\n\n\n\n<li>Network traffic<\/li>\n\n\n\n<li>Infrastructure costs<\/li>\n\n\n\n<li>Latency<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">AI applications introduce another important metric:<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Inference cost.<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">For Copilot Studio, that means understanding <strong>Copilot Credit consumption<\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A development environment might look perfectly fine when you&#8217;re testing a handful of requests.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">But consider what happens when the same agent handles thousands of interactions.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A small inefficiency becomes a significant operating cost.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">That&#8217;s why I&#8217;d recommend monitoring:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Credits per interaction<\/li>\n\n\n\n<li>Model usage<\/li>\n\n\n\n<li>Agent invocation frequency<\/li>\n\n\n\n<li>Response latency<\/li>\n\n\n\n<li>Retrieval operations<\/li>\n\n\n\n<li>Cost per business process<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">The goal isn&#8217;t simply to make the agent work.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">It&#8217;s to make the agent <strong>work efficiently at scale<\/strong>.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">The Approach I&#8217;d Take Going Forward<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">For new agent workloads, I&#8217;d start by categorising the operation.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Deterministic<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Use:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>API \/ database \/ application logic<\/strong><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Simple language task<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Use:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Lightweight model<\/strong><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Retrieval and response generation<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Use:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>General-purpose model<\/strong><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Complex reasoning or planning<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Use:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Reasoning model<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This gives us a much better architecture than simply putting the most powerful model behind every operation.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">The Bigger Lesson<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The 41,000 credits weren&#8217;t really the problem.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">They were the <strong>signal<\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The important lesson was that an application can be:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Functionally correct<\/li>\n\n\n\n<li>Reliable<\/li>\n\n\n\n<li>Producing good responses<\/li>\n\n\n\n<li>Technically well designed<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\u2026and still be <strong>economically inefficient<\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">As AI moves into enterprise applications, I think this will become an increasingly important part of software architecture.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">We&#8217;re no longer only asking:<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\"><strong>&#8220;Does it work?&#8221;<\/strong><\/p>\n<\/blockquote>\n\n\n\n<p class=\"wp-block-paragraph\">We&#8217;re also asking:<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\"><strong>&#8220;Does it work efficiently, reliably and at the right cost?&#8221;<\/strong><\/p>\n<\/blockquote>\n\n\n\n<p class=\"wp-block-paragraph\">For us, 41,000 Copilot Studio credits in two days was an expensive reminder:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Choose the model based on the problem you&#8217;re solving \u2014 not simply the capability of the model.<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Sometimes, the smartest architecture is knowing when <strong>not to use the smartest model.<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">#MicrosoftCopilotStudio #CopilotStudio #SoftwareArchitecture #AIEngineering #Microsoft #CloudArchitecture #SoftwareDevelopment #EnterpriseAI<\/p>\n","protected":false},"excerpt":{"rendered":"<p>41,000 Copilot Studio credits in two days. That got our attention. While working with a colleague, we were building an agent in Microsoft Copilot Studio to perform lookups against data. The agent worked. The responses were good. The problem was the model we selected. We were using a deep reasoning model for a workload that [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":263,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"pagelayer_contact_templates":[],"_pagelayer_content":"","footnotes":""},"categories":[18],"tags":[46,50,48,45,47,49],"class_list":["post-258","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-software-development","tag-copilotstudio","tag-enterpriseai","tag-microsoft","tag-microsoftcopilotstudio","tag-softwarearchitecture-2","tag-softwaredevelopment"],"_links":{"self":[{"href":"https:\/\/www.insync.co.za\/blog\/wp-json\/wp\/v2\/posts\/258","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.insync.co.za\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.insync.co.za\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.insync.co.za\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.insync.co.za\/blog\/wp-json\/wp\/v2\/comments?post=258"}],"version-history":[{"count":2,"href":"https:\/\/www.insync.co.za\/blog\/wp-json\/wp\/v2\/posts\/258\/revisions"}],"predecessor-version":[{"id":264,"href":"https:\/\/www.insync.co.za\/blog\/wp-json\/wp\/v2\/posts\/258\/revisions\/264"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.insync.co.za\/blog\/wp-json\/wp\/v2\/media\/263"}],"wp:attachment":[{"href":"https:\/\/www.insync.co.za\/blog\/wp-json\/wp\/v2\/media?parent=258"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.insync.co.za\/blog\/wp-json\/wp\/v2\/categories?post=258"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.insync.co.za\/blog\/wp-json\/wp\/v2\/tags?post=258"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}