<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Cortex AI</title>
    <description>The latest articles on DEV Community by Cortex AI (@cortexai).</description>
    <link>https://dev.to/cortexai</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4166425%2Fbbc7a459-b165-4ab8-911f-9af82328c62b.png</url>
      <title>DEV Community: Cortex AI</title>
      <link>https://dev.to/cortexai</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/cortexai"/>
    <language>en</language>
    <item>
      <title>Self hosted AI for business: hardware, upkeep and which jobs fit</title>
      <dc:creator>Cortex AI</dc:creator>
      <pubDate>Fri, 30 Oct 2026 12:57:28 +0000</pubDate>
      <link>https://dev.to/cortexai/self-hosted-ai-for-business-hardware-upkeep-and-which-jobs-fit-4mcn</link>
      <guid>https://dev.to/cortexai/self-hosted-ai-for-business-hardware-upkeep-and-which-jobs-fit-4mcn</guid>
      <description>&lt;p&gt;Self hosted ai for business means the model runs on a computer you own or control instead of a provider's servers. The limiting factor is graphics card memory: a small 8 billion parameter model is about 4.9GB, a 70 billion one is 43GB. It suits nightly jobs and sensitive records, but someone has to update, secure and watch the machine, so most small service companies should start in the cloud.&lt;/p&gt;

&lt;p&gt;Self hosted ai for business means the model runs on a computer you own or control, in your building or a rack you rent, instead of on a provider's servers. For a small service company it is a real option, but not a default one. Most first builds start in the cloud. This page covers what the hardware has to do, what it costs you in upkeep, and which jobs are worth keeping on-site.&lt;/p&gt;

&lt;h2&gt;
  
  
  What self-hosting actually means
&lt;/h2&gt;

&lt;p&gt;There are three setups, and people mix them up.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Cloud:&lt;/strong&gt; every request goes to a provider's model over the internet.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Self-hosted (on-premise):&lt;/strong&gt; the model files sit on your own machine and answer requests there.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Hybrid:&lt;/strong&gt; routine work runs locally and a hard job calls a cloud model when you allow it.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For a software tool such as Ollama, the first claim is simple: &lt;a href="https://github.com/ollama/ollama/blob/main/docs/faq.mdx" rel="noopener noreferrer"&gt;Ollama runs locally, and its makers say they do not see your prompts or data when you run it that way&lt;/a&gt;. That is the privacy argument in one line. Nothing about it fixes a badly connected system, but it does mean the text of a customer record does not leave your network for that job.&lt;/p&gt;

&lt;h2&gt;
  
  
  What the hardware has to do
&lt;/h2&gt;

&lt;p&gt;The main constraint is memory. A model has to fit in the graphics card's memory (VRAM) to run at a good speed. Ollama's own library lists &lt;a href="https://ollama.com/library/llama3.1" rel="noopener noreferrer"&gt;Llama 3.1 at 4.9GB for the 8 billion parameter version and 43GB for the 70 billion version&lt;/a&gt;, both with a 128K context window. Those are file sizes before the system needs room to work.&lt;/p&gt;

&lt;p&gt;What follows from that:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;A small model on one decent graphics card&lt;/strong&gt; can handle routine jobs: summarizing a day of jobs, drafting a short text, classifying an inbound message.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A large model needs far more memory&lt;/strong&gt; than a typical office PC has. A 43GB model will not fit on a single consumer card. Ollama's documentation notes that when a model does not fit, it &lt;a href="https://github.com/ollama/ollama/blob/main/docs/faq.mdx" rel="noopener noreferrer"&gt;loads partly onto the GPU and partly into system memory&lt;/a&gt;, which is slower, and that it can spread a model across several GPUs.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Requests queue.&lt;/strong&gt; Ollama &lt;a href="https://github.com/ollama/ollama/blob/main/docs/faq.mdx" rel="noopener noreferrer"&gt;processes queued requests in order&lt;/a&gt;. If three agents ask at once, two wait. That is fine for an overnight job and wrong for a phone line.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We are not quoting a hardware price or a speed figure here. They depend on the model, the card and the job, and they change every few months. Anyone who gives you a number before asking what the machine will do is guessing.&lt;/p&gt;

&lt;h2&gt;
  
  
  What it costs you in upkeep
&lt;/h2&gt;

&lt;p&gt;Self-hosting moves work onto you.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Someone updates it.&lt;/strong&gt; Models, the runtime and the operating system all change.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Someone secures it.&lt;/strong&gt; Ollama &lt;a href="https://github.com/ollama/ollama/blob/main/docs/faq.mdx" rel="noopener noreferrer"&gt;binds to 127.0.0.1 by default&lt;/a&gt; and you have to deliberately change a setting to expose it to your network. If an agent on another machine needs it, the network path is something a person must lock down.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Someone watches it.&lt;/strong&gt; A server that fails at 2am and quietly skips the morning report is worse than a cloud service with an outage page.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Someone owns the hardware.&lt;/strong&gt; Power, cooling, a place to put it, a plan for when the card dies.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Which jobs are worth keeping on-site
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Good fits:&lt;/strong&gt; work that runs every night or every morning whether anyone is in the building, because per-use cloud pricing is a poor match for a fixed daily job. Routine checks on records the owner would rather not send out, such as customer names, invoices and repair order notes. Work that should not stop because a provider is having a bad day.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Poor fits:&lt;/strong&gt; an occasional hard task, like a messy customer email that needs a stronger model. Send that to a capable cloud model and pay for what you use. A single HVAC or plumbing company with two follow-up workflows rarely needs a server at all.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where small businesses are today
&lt;/h2&gt;

&lt;p&gt;You do not need to settle this to get started. The Census Bureau puts &lt;a href="https://census.gov/library/stories/2026/05/ai-use-businesses.html" rel="noopener noreferrer"&gt;business AI use at 19.8% as of May 3, 2026&lt;/a&gt;. The Federal Reserve's survey of small employers found that &lt;a href="https://www.fedsmallbusiness.org/2026-report-on-employer-firms" rel="noopener noreferrer"&gt;time to implement and train employees was named by 37% of firms planning to start&lt;/a&gt;. A hardware project adds to that time. Starting in the cloud and moving a job on-site later is a normal path.&lt;/p&gt;

&lt;h2&gt;
  
  
  How Cortex handles it
&lt;/h2&gt;

&lt;p&gt;Cortex designs the setup around the workload: cloud, private hardware or a mix. Our &lt;a href="https://buildcortex.dev/private-ai" rel="noopener noreferrer"&gt;private AI page&lt;/a&gt; explains the split. Routine overnight checks and briefings can run on local models, rules handle what does not need AI, and a cloud model is called when a task requires it. At Detail Driven, we run local models for the overnight checks and morning briefing on dedicated Linux hardware the owner controls, and call a cloud model only when a job needs more. For a longer comparison, see &lt;a href="https://buildcortex.dev/blog/local-vs-cloud-ai-service-businesses" rel="noopener noreferrer"&gt;local vs cloud AI for service businesses&lt;/a&gt; and the &lt;a href="https://buildcortex.dev/blog/private-ai-workforce-automotive" rel="noopener noreferrer"&gt;automotive private AI workforce&lt;/a&gt; write-up.&lt;/p&gt;

&lt;p&gt;What we do not do: tell you to buy a server so the proposal looks bigger. If your workload does not call for hardware, we say so.&lt;/p&gt;

&lt;h2&gt;
  
  
  Next step
&lt;/h2&gt;

&lt;p&gt;Book the free &lt;a href="https://buildcortex.dev/audit" rel="noopener noreferrer"&gt;AI Operations Audit&lt;/a&gt;. It tells you which of your jobs belong in the cloud, which could run on-site and which need no AI at all. You owe us nothing after it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Questions people ask
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;What is self hosted AI for a business?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A language model that runs on hardware you own or control, so requests are answered on your machine instead of by a provider's servers. Ollama is one common way to run models this way.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Does self-hosted AI keep my data private?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;For jobs run locally, the text does not go to a provider for that request. Ollama's makers say they do not see prompts or data when it runs locally. You still have to secure the machine and the network path to it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How much hardware do I need?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;It depends on the model. Ollama lists Llama 3.1 at 4.9GB for the 8B version and 43GB for the 70B version, and the model needs to fit in graphics card memory to run well. We do not quote prices because they depend on the job and change often.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Which jobs should stay on-site?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Nightly and morning jobs that run whether or not anyone is in, and routine checks on sensitive records. Occasional hard tasks usually fit a cloud model better.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Do I need my own AI server to start?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;No. Many companies start in the cloud and move a job on-site later if privacy, cost or control call for it. Cortex's audit says which fits your workload.&lt;/p&gt;

&lt;h2&gt;
  
  
  Sources
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;a href="https://ollama.com/library/llama3.1" rel="noopener noreferrer"&gt;llama3.1&lt;/a&gt;, Ollama&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/ollama/ollama/blob/main/docs/faq.mdx" rel="noopener noreferrer"&gt;Ollama FAQ&lt;/a&gt;, Ollama&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://census.gov/library/stories/2026/05/ai-use-businesses.html" rel="noopener noreferrer"&gt;Large Firms With at Least 20 Employees Biggest AI Users&lt;/a&gt;, U.S. Census Bureau&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.fedsmallbusiness.org/2026-report-on-employer-firms" rel="noopener noreferrer"&gt;2026 Report on Employer Firms&lt;/a&gt;, Federal Reserve Banks&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;em&gt;Originally published at &lt;a href="https://buildcortex.dev/guides/self-hosted-ai-for-business" rel="noopener noreferrer"&gt;buildcortex.dev&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>selfhostedai</category>
      <category>privateai</category>
      <category>onpremise</category>
      <category>hardware</category>
    </item>
    <item>
      <title>Custom AI agent development: what a service business should expect</title>
      <dc:creator>Cortex AI</dc:creator>
      <pubDate>Fri, 30 Oct 2026 12:55:40 +0000</pubDate>
      <link>https://dev.to/cortexai/custom-ai-agent-development-what-a-service-business-should-expect-3i2j</link>
      <guid>https://dev.to/cortexai/custom-ai-agent-development-what-a-service-business-should-expect-3i2j</guid>
      <description>&lt;p&gt;Custom ai agent development means building one software agent that does one defined job inside the systems your business already runs, with limited permissions and a person approving anything that matters. Most of the work is data access, permissions, approval rules and testing, not training a model. Before you pay a developer, ask what the agent can touch, what it does alone, who holds the credentials and what you keep if you leave.&lt;/p&gt;

&lt;p&gt;Custom ai agent development means building one software agent that does one real job inside the systems your business already runs, with limits on what it can touch and a person approving what matters. It is mostly plumbing and rules, not model training. This page walks through what the work involves, what you should be handed at the end, and how to judge a developer before you pay one.&lt;/p&gt;

&lt;h2&gt;
  
  
  Start with one job, not "an agent"
&lt;/h2&gt;

&lt;p&gt;"Build us an AI agent" is not a scope. A job is. "When an estimate has had no reply for four days, draft a follow-up text and put it in the office manager's queue" is a job. So is "every morning at 6, pull yesterday's booked jobs, unpaid invoices and missed calls into one summary."&lt;/p&gt;

&lt;p&gt;Anthropic's engineering team, which builds these systems for a living, &lt;a href="https://www.anthropic.com/engineering/building-effective-agents" rel="noopener noreferrer"&gt;recommends finding the simplest solution possible and only adding complexity when needed&lt;/a&gt;. Its guidance also separates fixed workflows, which suit well-defined tasks, from agents that decide their own steps, which suit open-ended problems. Most office work in a service company is the first kind. If the steps are known, build the plain workflow and let the model handle the writing or the reading inside it.&lt;/p&gt;

&lt;h2&gt;
  
  
  The five parts of a build
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;1. Data access.&lt;/strong&gt; The agent needs a way into your software. For ServiceTitan that means &lt;a href="https://help.servicetitan.com/docs/get-started-with-api-dev-portal-v2" rel="noopener noreferrer"&gt;a registered app, an application key, and a client ID and secret generated by an admin&lt;/a&gt;. For HubSpot it is &lt;a href="https://developers.hubspot.com/docs/guides/apps/private-apps/overview" rel="noopener noreferrer"&gt;a private app token&lt;/a&gt;, which that vendor says to rotate every six months. Every tool is different, and a developer who has done it before already knows the quirks. Ask which of your systems have a usable API before anyone quotes you.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Permissions.&lt;/strong&gt; Give the agent the least access that gets the job done. OWASP, the security nonprofit, lists &lt;a href="https://genai.owasp.org/llmrisk/llm062025-excessive-agency/" rel="noopener noreferrer"&gt;excessive agency&lt;/a&gt; as a named risk for AI systems and traces it to excessive functionality, excessive permissions and excessive autonomy. Its fixes are plain: offer the agent only the tools it needs, keep downstream access to least privilege (read-only where possible), and require a human to approve high-impact actions. A follow-up agent should not be able to see payroll.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Approval gates.&lt;/strong&gt; Decide in advance what the agent may do alone and what waits for a person. Drafting a text is low risk. Sending it to a customer, changing a price, issuing a refund or promising an arrival time is not. Start with everything in a draft queue and open paths one at a time, once you have watched it work.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Testing.&lt;/strong&gt; Anthropic &lt;a href="https://www.anthropic.com/engineering/building-effective-agents" rel="noopener noreferrer"&gt;recommends extensive testing in sandboxed environments, along with appropriate guardrails&lt;/a&gt;. In practice that means running the agent against copies or read-only views first, reading what it would have sent, and keeping a log of every action and the record it touched. If your software vendor offers a test environment, use it. ServiceTitan, for example, can provide an integration environment on request.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. Someone who maintains it.&lt;/strong&gt; Credentials expire, vendors change their APIs and your process changes. Decide who watches the logs and fixes breakage after launch.&lt;/p&gt;

&lt;h2&gt;
  
  
  What you should be handed at the end
&lt;/h2&gt;

&lt;p&gt;Whoever builds it, the following should end up in your hands, in writing:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The list of systems the agent connects to and exactly which permissions it has in each.&lt;/li&gt;
&lt;li&gt;Credentials held in accounts you own, not in the developer's personal login.&lt;/li&gt;
&lt;li&gt;The agent's rules: what it does alone, what it queues, what it never does.&lt;/li&gt;
&lt;li&gt;The prompts and configuration, so the work is not locked inside one person's head.&lt;/li&gt;
&lt;li&gt;An action log you can read without asking the developer.&lt;/li&gt;
&lt;li&gt;A plain statement of what happens if you stop working with them.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If a developer will not put those in writing, keep looking.&lt;/p&gt;

&lt;h2&gt;
  
  
  Build, buy or hire
&lt;/h2&gt;

&lt;p&gt;Many jobs do not need custom work. If your field service software already follows up on estimates the way you want, turn that on. The Federal Reserve's survey of small employers found that &lt;a href="https://www.fedsmallbusiness.org/2026-report-on-employer-firms" rel="noopener noreferrer"&gt;firms planning to start with AI named finding tools that meet business needs as their top obstacle (54%), and current users named adapting tools to the business (43%)&lt;/a&gt;. Custom development exists for that second problem: the job crosses several systems or follows rules no product ships with.&lt;/p&gt;

&lt;h2&gt;
  
  
  How Cortex does it
&lt;/h2&gt;

&lt;p&gt;Cortex builds agents inside the software a service company already uses, and our &lt;a href="https://buildcortex.dev/trust" rel="noopener noreferrer"&gt;trust page&lt;/a&gt; states the defaults: each agent gets defined access to defined systems, sensitive actions require approval, and an agent sends nothing on its own unless you have explicitly allowed that path. We start with one or two workflows, not dozens. You own your software accounts and records. We do not publish a price, and we do not quote a date before someone has looked at your systems.&lt;/p&gt;

&lt;p&gt;What we do not do: replace your software, make judgment calls about pricing exceptions or angry customers, or connect to a vendor that offers no usable interface. If that is your situation, the audit says so.&lt;/p&gt;

&lt;h2&gt;
  
  
  Mistakes to avoid
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Paying before the job is defined.&lt;/strong&gt; If the proposal says "AI agents" without naming a trigger, the data it reads and the result it produces, it is not a scope.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Giving it admin access because it is easier.&lt;/strong&gt; It is easier once. It is also the thing you will regret.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Skipping the draft stage.&lt;/strong&gt; Watch it work for a couple of weeks before it sends anything alone.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Building an agent for a problem a setting would solve.&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Next step
&lt;/h2&gt;

&lt;p&gt;Book the free &lt;a href="https://buildcortex.dev/audit" rel="noopener noreferrer"&gt;AI Operations Audit&lt;/a&gt;. You get a ranked list of workflows worth building and you owe us nothing after it. To see how agents fit together, read about &lt;a href="https://buildcortex.dev/ai-agents" rel="noopener noreferrer"&gt;AI agents&lt;/a&gt;, the &lt;a href="https://buildcortex.dev/help/human-in-the-loop" rel="noopener noreferrer"&gt;human-in-the-loop approach&lt;/a&gt;, our &lt;a href="https://buildcortex.dev/integrations" rel="noopener noreferrer"&gt;integrations&lt;/a&gt; and &lt;a href="https://buildcortex.dev/how-we-work" rel="noopener noreferrer"&gt;how we work&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Questions people ask
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;What is custom AI agent development?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Building a software agent around your own workflow and systems. It reads data from tools like your field service software or CRM, does one defined job such as drafting a follow-up, and stops at a person's approval where it should.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How do I build an AI agent for my business?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Pick one repeatable job with a clear trigger and result. List the systems it reads, give it read-only access where you can, run it in draft mode against real data, and open each action path only after you have watched it work.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Do I need to train my own model?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Almost never for a service business. The work is connecting an existing model to your tools, giving it narrow permissions and writing the rules for what it does alone.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What should a developer hand over?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A list of connected systems and permissions, credentials held in accounts you own, the agent's rules, its prompts and configuration, a readable action log, and a written statement of what happens if you leave.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How much does it cost and how long does it take?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;It depends on how many systems and workflows are involved and how much ongoing management you want. Cortex does not publish a price and scopes after a free audit. A first agent can land in weeks, but nobody should promise a date before looking at your systems.&lt;/p&gt;

&lt;h2&gt;
  
  
  Sources
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;a href="https://www.anthropic.com/engineering/building-effective-agents" rel="noopener noreferrer"&gt;Building effective agents&lt;/a&gt;, Anthropic&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://genai.owasp.org/llmrisk/llm062025-excessive-agency/" rel="noopener noreferrer"&gt;LLM06:2025 Excessive Agency&lt;/a&gt;, OWASP GenAI Security Project&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://help.servicetitan.com/docs/get-started-with-api-dev-portal-v2" rel="noopener noreferrer"&gt;Get started with API dev portal V2&lt;/a&gt;, ServiceTitan&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://developers.hubspot.com/docs/guides/apps/private-apps/overview" rel="noopener noreferrer"&gt;Private apps&lt;/a&gt;, HubSpot&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.fedsmallbusiness.org/2026-report-on-employer-firms" rel="noopener noreferrer"&gt;2026 Report on Employer Firms&lt;/a&gt;, Federal Reserve Banks&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;em&gt;Originally published at &lt;a href="https://buildcortex.dev/guides/custom-ai-agent-development" rel="noopener noreferrer"&gt;buildcortex.dev&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>aiagents</category>
      <category>customai</category>
      <category>implementation</category>
      <category>servicebusiness</category>
    </item>
    <item>
      <title>Hybrid AI system for business: routing work between local and cloud models</title>
      <dc:creator>Cortex AI</dc:creator>
      <pubDate>Mon, 26 Oct 2026 17:23:02 +0000</pubDate>
      <link>https://dev.to/cortexai/hybrid-ai-system-for-business-routing-work-between-local-and-cloud-models-25oe</link>
      <guid>https://dev.to/cortexai/hybrid-ai-system-for-business-routing-work-between-local-and-cloud-models-25oe</guid>
      <description>&lt;p&gt;A hybrid ai system for business runs routine, repeated work on a model you host yourself and sends hard or unusual reasoning to a cloud model, with a router deciding which job goes where. Local keeps more data on your own hardware but does not replace access controls, logs or a person's approval. For a service business the split is a per-job decision, and Detail Driven, an automotive group, runs this way.&lt;/p&gt;

&lt;p&gt;Picture an auto repair group with four kinds of shop under one owner. Every night something has to look at open repair orders and note which ones have not moved. Every morning someone wants a one-page briefing. Once in a while a customer sends an email so odd that nobody in the office knows how to answer it. Those three jobs do not need the same brain, and they do not need to run in the same place. A hybrid AI system for business is the arrangement that stops pretending they do.&lt;/p&gt;

&lt;h2&gt;
  
  
  What a hybrid AI system is
&lt;/h2&gt;

&lt;p&gt;In a hybrid setup, some work runs on a model that sits on hardware you control (local), and some work is sent to a model run by a provider over the internet (cloud). A small piece of software, the router, decides which job goes where. Rules decide the easy cases, and a person decides anything that commits the company.&lt;/p&gt;

&lt;p&gt;Anthropic describes the same pattern in its guide to building agents. It calls it routing: &lt;a href="https://www.anthropic.com/engineering/building-effective-agents" rel="noopener noreferrer"&gt;classify an input and direct it to a specialized follow-up task&lt;/a&gt;, for example sending easy and common questions to smaller, cost-efficient models and hard or unusual questions to more capable ones. The business version of that is a sorting decision you make once, on purpose, per job.&lt;/p&gt;

&lt;h2&gt;
  
  
  What belongs on each side
&lt;/h2&gt;

&lt;p&gt;There is no universal split. These are the questions we ask about each job.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Question about the job&lt;/th&gt;
&lt;th&gt;Leans local&lt;/th&gt;
&lt;th&gt;Leans cloud&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;How often does it run?&lt;/td&gt;
&lt;td&gt;Many times a day, same shape&lt;/td&gt;
&lt;td&gt;Rarely, different every time&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;How hard is the reasoning?&lt;/td&gt;
&lt;td&gt;Compare, match, flag, summarize a known format&lt;/td&gt;
&lt;td&gt;Read something messy and make a judgment&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;How sensitive is the data?&lt;/td&gt;
&lt;td&gt;Customer names, repair notes and invoices you would rather not send out every hour&lt;/td&gt;
&lt;td&gt;Little or no customer detail needed&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;What happens if it is wrong?&lt;/td&gt;
&lt;td&gt;A person reviews every output anyway&lt;/td&gt;
&lt;td&gt;A person reviews, and a better model reduces the rework&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;What if the internet drops?&lt;/td&gt;
&lt;td&gt;It must still run&lt;/td&gt;
&lt;td&gt;It can wait&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Routine, repeated work next to records you already hold usually leans local: an overnight check for stalled tickets, the morning briefing, a first draft of a follow-up built from a job file. Odd, rare or long jobs lean cloud: a strange customer email, an estimate that fits no template, a one-off summary of a messy file. Rules and ordinary automation handle a lot of what remains, and that is cheaper than either model.&lt;/p&gt;

&lt;h2&gt;
  
  
  What staying local does and does not buy you
&lt;/h2&gt;

&lt;p&gt;Running a model on your own machine means your prompts do not have to leave it. The Ollama FAQ, for one popular local runtime, says that &lt;a href="https://github.com/ollama/ollama/blob/main/docs/faq.mdx" rel="noopener noreferrer"&gt;when you run locally, they do not see your prompts or data&lt;/a&gt;, and gives a setting to turn its cloud features off entirely. That is the data-handling benefit in plain terms.&lt;/p&gt;

&lt;p&gt;It is not a security program. A local box with a shared password and no logs is worse than a well-configured cloud service. Local does not decide who can see what, what each agent can touch, or what a person approves. Those controls matter in either place, which is why Cortex agents each get &lt;a href="https://buildcortex.dev/trust" rel="noopener noreferrer"&gt;defined access to defined systems, with sensitive actions requiring approval and activity recorded&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Cloud has its own honest case. When your shop software is already in the cloud and its API is the only supported way in, you are already trusting that vendor with the customer list. The useful question is what new processing you are adding, under whose keys and with what log.&lt;/p&gt;

&lt;h2&gt;
  
  
  A real example from an automotive business
&lt;/h2&gt;

&lt;p&gt;Detail Driven in Jackson Hole runs four kinds of shop (repair, collision, detailing and glass) on Tekmetric, CCC ONE, GoHighLevel, QuickBooks and their ad accounts. Cortex installed dedicated local AI hardware and hybrid local and cloud inference, with routine watches and the daily briefing handled locally and harder reasoning sent to a stronger cloud model when a job needs it. Tekmetric stays the repair system of record and CCC ONE stays the collision estimating system. The AI reads them. It does not replace them. A person still owns the customer conversation.&lt;/p&gt;

&lt;p&gt;We have not published hours-saved or dollars-recovered figures for it, and we will not guess at them here. The &lt;a href="https://buildcortex.dev/case-studies/detail-driven" rel="noopener noreferrer"&gt;Detail Driven case study&lt;/a&gt; lists what we can stand behind, and our article on &lt;a href="https://buildcortex.dev/blog/local-vs-cloud-ai-service-businesses" rel="noopener noreferrer"&gt;local versus cloud AI for service businesses&lt;/a&gt; goes through the routing decision in more detail.&lt;/p&gt;

&lt;h2&gt;
  
  
  Setting up a hybrid system sensibly
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;List the jobs, not the models.&lt;/strong&gt; Write down what you want done each night, each morning and each time something odd shows up.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Sort each job with the table above.&lt;/strong&gt; Mark the ones that need a person's approval regardless of where they run.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Start in the cloud if you have nothing local.&lt;/strong&gt; Local hardware is a decision, not a prerequisite. If the work is small, a locked-down cloud path can be the honest answer. Move jobs local when volume or data sensitivity justifies the box.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Write the routing rules down.&lt;/strong&gt; A rule like "customer messages never go to a cloud model without a person's approval" is easy to audit. A vague intention is not.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Log every run.&lt;/strong&gt; Which model ran, on what, and who approved the output. If you cannot see it, it should not have happened.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Review the split every quarter.&lt;/strong&gt; Models change. A job that needed the cloud last year may run fine locally now, and the reverse.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;NIST's AI Risk Management Framework, which is &lt;a href="https://www.nist.gov/itl/ai-risk-management-framework" rel="noopener noreferrer"&gt;intended for voluntary use&lt;/a&gt; and organized around govern, map, measure and manage, is a reasonable checklist for this conversation. Map the jobs, decide where each may run, measure whether it ran that way, and manage the exceptions.&lt;/p&gt;

&lt;h2&gt;
  
  
  Mistakes to avoid
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Buying hardware before you know the jobs. Size it to the work you listed.&lt;/li&gt;
&lt;li&gt;Sending everything to the biggest model out of habit. Noticing that a ticket has not moved is a rule and a lookup, not a reasoning problem.&lt;/li&gt;
&lt;li&gt;Treating local as the same thing as safe.&lt;/li&gt;
&lt;li&gt;Letting the router decide things only a person should, like prices, refunds or promises to a customer.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Hybrid is a design choice, not a product. If you want to know whether your shop or trade business has enough repeated work to justify any of it, the &lt;a href="https://buildcortex.dev/private-ai" rel="noopener noreferrer"&gt;private AI page&lt;/a&gt; explains the options, and the &lt;a href="https://buildcortex.dev/audit" rel="noopener noreferrer"&gt;free AI Operations Audit&lt;/a&gt; is where we map your jobs to a split.&lt;/p&gt;

&lt;h2&gt;
  
  
  Questions people ask
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;What is a hybrid AI system?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;One that uses both a local model on hardware you control and a cloud model from a provider, with a router sending each job to the right one.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Do I need a server in my shop for hybrid AI?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Not at first. If the workload is small, a locked-down cloud setup can be the honest answer. Add local hardware when volume or data sensitivity justifies it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Is local AI always more private?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Local means your prompts need not leave your machine, but it does not set access rules, keep logs or require approvals. Those controls matter wherever the model runs.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Which jobs should stay local?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Repeated, high-volume work next to records you already hold, such as overnight checks for stalled tickets and the morning briefing, and any job that must run when the internet is down.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Which jobs should go to the cloud?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Rare, messy or long jobs that need a stronger model, like an unusual customer email or an estimate that fits no template, always with a person reviewing the result.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Can a hybrid system send messages to customers on its own?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;It should not. Cortex agents draft, and sending needs approval unless you explicitly open that path.&lt;/p&gt;

&lt;h2&gt;
  
  
  Sources
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;a href="https://www.anthropic.com/engineering/building-effective-agents" rel="noopener noreferrer"&gt;Building effective agents&lt;/a&gt;, Anthropic&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/ollama/ollama/blob/main/docs/faq.mdx" rel="noopener noreferrer"&gt;Ollama FAQ&lt;/a&gt;, Ollama (GitHub)&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.nist.gov/itl/ai-risk-management-framework" rel="noopener noreferrer"&gt;AI Risk Management Framework&lt;/a&gt;, NIST&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://buildcortex.dev/trust" rel="noopener noreferrer"&gt;Trust and Security&lt;/a&gt;, Cortex&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;em&gt;Originally published at &lt;a href="https://buildcortex.dev/guides/hybrid-ai-for-business" rel="noopener noreferrer"&gt;buildcortex.dev&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>hybridai</category>
      <category>localai</category>
      <category>cloudai</category>
      <category>privateai</category>
    </item>
    <item>
      <title>Jobber reporting automation: a daily summary instead of reports built by hand</title>
      <dc:creator>Cortex AI</dc:creator>
      <pubDate>Mon, 26 Oct 2026 17:20:50 +0000</pubDate>
      <link>https://dev.to/cortexai/jobber-reporting-automation-a-daily-summary-instead-of-reports-built-by-hand-4ie3</link>
      <guid>https://dev.to/cortexai/jobber-reporting-automation-a-daily-summary-instead-of-reports-built-by-hand-4ie3</guid>
      <description>&lt;p&gt;Jobber reporting automation means the figures and exceptions an owner checks every morning arrive as one short summary instead of being assembled from separate reports. Jobber can already email a report as a CSV, run a Report Scheduler app on a schedule, and build custom reports on the Plus plan. An agent adds the cross-report view: quotes with no reply, finished visits with no invoice, past-due invoices, with thresholds you set and a link to each record.&lt;/p&gt;

&lt;p&gt;Jobber reporting automation means the numbers an owner checks every morning arrive on their own as a short summary, with the exceptions called out, instead of someone opening report after report and piecing the picture together by hand. Jobber already covers part of that. This page shows which part, where it stops, and what an agent adds on top, using Jobber's own documentation.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Jobber already reports on its own
&lt;/h2&gt;

&lt;p&gt;Reports live on Jobber.com under Insights, then Reports. &lt;a href="https://help.getjobber.com/en/articles/reports-basics/" rel="noopener noreferrer"&gt;Only admins, or users with the Reports permission, can open them&lt;/a&gt;, and the list depends on your plan. The ones an owner usually cares about are the invoice and payment reports, the projected income report, the client balance summary, the visits, jobs, requests and quotes reports, timesheets, and the client re-engagement report.&lt;/p&gt;

&lt;p&gt;Getting a report out of Jobber is a button: &lt;a href="https://help.getjobber.com/en/articles/reports-basics/" rel="noopener noreferrer"&gt;Email CSV sends a .csv file to the address you are signed in with&lt;/a&gt;, with all columns or only the ones on screen. A few reports, including Job Follow-ups, cannot be exported. For a schedule, Jobber's help article points to &lt;a href="https://help.getjobber.com/en/articles/reports-basics/" rel="noopener noreferrer"&gt;the Report Scheduler app in the App Marketplace&lt;/a&gt;, which exports and emails a report automatically once you authorize it.&lt;/p&gt;

&lt;p&gt;On the Plus plan there is also a &lt;a href="https://help.getjobber.com/en/articles/create-a-custom-report-with-jobber-ai/" rel="noopener noreferrer"&gt;Custom Report Builder, where you describe the report you want in your own words&lt;/a&gt;. Only admins can create these reports, a report that takes longer than five minutes to build times out, and Jobber says its AI can make mistakes, so check the data before you act on it.&lt;/p&gt;

&lt;p&gt;If a weekly CSV of one report is all you need, stop here. Use the Report Scheduler app. You do not need an agent for that.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where the morning routine still breaks
&lt;/h2&gt;

&lt;p&gt;Each report is built around one kind of record. The question an owner asks at 7am crosses them: which quote went out last week and never got an answer, which visit finished without an invoice behind it, which invoice slid past due, which new request is still sitting unread.&lt;/p&gt;

&lt;p&gt;You can build each of those as its own report. Someone still has to open them, read them in the right order, and decide what matters. In most offices that someone is the owner, on a phone, before the first truck rolls. The reports exist. The habit of checking them is what slips.&lt;/p&gt;

&lt;h2&gt;
  
  
  What a daily summary should contain
&lt;/h2&gt;

&lt;p&gt;The test of a good summary is that it is short and that most mornings it tells you something you can act on. A reasonable first version has two parts.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The few figures you already watch.&lt;/strong&gt; Visits completed yesterday and booked today, invoices sent, payments received, requests that came in. These come straight from Jobber, with a link back to the record.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The exceptions, each with a name next to it.&lt;/strong&gt; For example:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Quotes sent more than a set number of days ago with no reply&lt;/li&gt;
&lt;li&gt;Completed visits with no invoice&lt;/li&gt;
&lt;li&gt;Invoices past due by more than a set number of days&lt;/li&gt;
&lt;li&gt;New requests with no response or no assessment booked&lt;/li&gt;
&lt;li&gt;Tomorrow's visits that are unassigned or not yet confirmed&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You choose the thresholds. A roofing company and a lawn crew will not agree on how many days is "late" for a quote. The summary should say how many days you set, so nobody has to guess.&lt;/p&gt;

&lt;h2&gt;
  
  
  What it looks like (example)
&lt;/h2&gt;

&lt;p&gt;This is an illustration with made-up names, not a real company or real numbers.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Morning summary, Tuesday&lt;/strong&gt;&lt;br&gt;
Needs you today: 3 quotes with no reply after 5 days (Rivera, Okafor, Lindqvist). 2 completed visits with no invoice (Harmon, 14 Elm St; Patel). 1 unassigned visit tomorrow at 10:00.&lt;br&gt;
Already handled: 4 requests answered overnight, 6 payments received.&lt;br&gt;
Open any item to go straight to the record in Jobber.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Nothing in that message is a new metric. Every line is a record that already exists in Jobber, sorted so the owner sees the ones that need a decision first.&lt;/p&gt;

&lt;h2&gt;
  
  
  How the connection works
&lt;/h2&gt;

&lt;p&gt;Jobber's API is &lt;a href="https://developer.getjobber.com/docs/getting_started/" rel="noopener noreferrer"&gt;GraphQL over a single endpoint, and it uses OAuth 2.0, not API keys&lt;/a&gt;: an admin on each Jobber account authorizes the app. &lt;a href="https://developer.getjobber.com/docs/building_your_app/app_authorization/" rel="noopener noreferrer"&gt;Access tokens expire after 60 minutes&lt;/a&gt; and a refresh token gets a new one. Jobber &lt;a href="https://developer.getjobber.com/docs/using_jobbers_api/api_rate_limits/" rel="noopener noreferrer"&gt;limits an app to 2,500 requests per 5 minutes&lt;/a&gt;, so a reporting job should ask for the fields it needs and not pull everything.&lt;/p&gt;

&lt;p&gt;There are two ways to learn about changes. A scheduled job can read at set times, which suits a morning summary. Webhooks push events as they happen, but &lt;a href="https://developer.getjobber.com/docs/using_jobbers_api/setting_up_webhooks/" rel="noopener noreferrer"&gt;Jobber expects a response within one second and says it may disable an app's webhooks if responses are slow or error often&lt;/a&gt;, so a reporting job should use them only when it needs to react in real time.&lt;/p&gt;

&lt;p&gt;One limit worth knowing: &lt;a href="https://developer.getjobber.com/docs/custom_integrations/" rel="noopener noreferrer"&gt;a private app in Draft state can connect to no more than five paying Jobber accounts&lt;/a&gt; before API access is blocked. For one company's own reporting that is not an issue. It does mean a tool sold to many shops has to go through Jobber's review.&lt;/p&gt;

&lt;h2&gt;
  
  
  What it does not do
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;It does not change records. A summary reads from Jobber. Sending a follow-up, writing off an invoice or moving a visit is a separate action, and it waits for a person.&lt;/li&gt;
&lt;li&gt;It does not replace Jobber's reports. When you need an accounting figure, use the report. The summary points you to it.&lt;/li&gt;
&lt;li&gt;It does not invent targets. If you have not told it what "late" means, it says so instead of choosing for you.&lt;/li&gt;
&lt;li&gt;It is not a forecast. It tells you what already happened and what is stuck.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Accuracy is a fair worry. In the Federal Reserve's small business survey, &lt;a href="https://www.fedsmallbusiness.org/2026-report-on-employer-firms" rel="noopener noreferrer"&gt;46% of firms already using AI named accuracy as an obstacle&lt;/a&gt;. That is why every line in the summary links back to the Jobber record it came from, so you can check it in one tap.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where Cortex fits
&lt;/h2&gt;

&lt;p&gt;Cortex builds these summaries as agents that read your software overnight and list what needs a person, in the same place every morning. Jobber stays your system of record. The &lt;a href="https://buildcortex.dev/help/daily-briefing" rel="noopener noreferrer"&gt;daily owner briefing&lt;/a&gt; page shows the pattern for several tools, and our &lt;a href="https://buildcortex.dev/guides/jobber-ai-integration" rel="noopener noreferrer"&gt;Jobber integration guide&lt;/a&gt; covers what the agent can and cannot touch. Home-service owners can see how this fits with the rest of their stack under &lt;a href="https://buildcortex.dev/industries/home-services" rel="noopener noreferrer"&gt;home services&lt;/a&gt; and &lt;a href="https://buildcortex.dev/integrations" rel="noopener noreferrer"&gt;integrations&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Next step
&lt;/h2&gt;

&lt;p&gt;If you only need one report on a schedule, set up the Report Scheduler app. If you want the exceptions in one place with the thresholds set for your business, book the free &lt;a href="https://buildcortex.dev/audit" rel="noopener noreferrer"&gt;AI Operations Audit&lt;/a&gt;. It lists which reports are worth automating and which are fine as they are.&lt;/p&gt;

&lt;h2&gt;
  
  
  Questions people ask
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Can Jobber send reports automatically?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Jobber's help center says the Report Scheduler app in the App Marketplace can export a report on a schedule and email it to you once you authorize it. Without that app, the Email CSV button sends a report to the address you are signed in with when you click it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Which Jobber plan has the Custom Report Builder?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Jobber's help article says Custom Report Builder is available on the Plus plan, and only admins can create and access custom reports. Check your own plan page, since plans change.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Is Jobber's AI report builder accurate?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Jobber's own help article warns that Jobber AI can make mistakes and tells users to verify report data. Treat a generated report like any new report: spot check a few rows against the records.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Does Jobber have an API for reporting?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Yes. Jobber's API is GraphQL over HTTPS with OAuth 2.0, and apps read quotes, jobs, invoices, clients and requests. Access is authorized by an admin on each Jobber account.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What should a daily Jobber summary include?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A few figures you already watch, then the exceptions: quotes with no reply, completed visits with no invoice, past-due invoices, unanswered requests and unassigned visits tomorrow. You set the day thresholds.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Will an agent change anything in Jobber?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A reporting agent only reads. Anything that changes a record or contacts a customer should wait for a person to approve it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Sources
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;a href="https://help.getjobber.com/en/articles/reports-basics/" rel="noopener noreferrer"&gt;Reports basics&lt;/a&gt;, Jobber&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://help.getjobber.com/en/articles/create-a-custom-report-with-jobber-ai/" rel="noopener noreferrer"&gt;Create a custom report with Jobber AI&lt;/a&gt;, Jobber&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://developer.getjobber.com/docs/getting_started/" rel="noopener noreferrer"&gt;Getting started&lt;/a&gt;, Jobber Developer Center&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://developer.getjobber.com/docs/building_your_app/app_authorization/" rel="noopener noreferrer"&gt;App authorization&lt;/a&gt;, Jobber Developer Center&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://developer.getjobber.com/docs/using_jobbers_api/api_rate_limits/" rel="noopener noreferrer"&gt;API rate limits&lt;/a&gt;, Jobber Developer Center&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://developer.getjobber.com/docs/using_jobbers_api/setting_up_webhooks/" rel="noopener noreferrer"&gt;Setting up webhooks&lt;/a&gt;, Jobber Developer Center&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://developer.getjobber.com/docs/custom_integrations/" rel="noopener noreferrer"&gt;Custom integrations&lt;/a&gt;, Jobber Developer Center&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.fedsmallbusiness.org/2026-report-on-employer-firms" rel="noopener noreferrer"&gt;2026 Report on Employer Firms&lt;/a&gt;, Federal Reserve Banks&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;em&gt;Originally published at &lt;a href="https://buildcortex.dev/guides/jobber-reporting-automation" rel="noopener noreferrer"&gt;buildcortex.dev&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>jobber</category>
      <category>reporting</category>
      <category>automation</category>
      <category>dailybriefing</category>
    </item>
    <item>
      <title>Local AI system for business: what local models can and cannot do</title>
      <dc:creator>Cortex AI</dc:creator>
      <pubDate>Mon, 26 Oct 2026 17:18:11 +0000</pubDate>
      <link>https://dev.to/cortexai/local-ai-system-for-business-what-local-models-can-and-cannot-do-171d</link>
      <guid>https://dev.to/cortexai/local-ai-system-for-business-what-local-models-can-and-cannot-do-171d</guid>
      <description>&lt;p&gt;A local ai system for business runs AI jobs on a model you host on hardware you control, and it fits routine language work: summaries, pulling fields out of free text, and sorting messages into queues. Hard, costly or ambiguous cases still belong with a larger cloud model or a person. Test the line on 50 of your own examples, and keep a person on anything a customer sees.&lt;/p&gt;

&lt;p&gt;A local ai system for business is a set of AI jobs that run on a model you host, on hardware you control, instead of calling a cloud provider every time. The honest version is narrower than the pitch. A local model can do routine, repetitive language work well enough to be useful, and the hard cases still belong with a larger cloud model. This page sorts everyday service-business jobs into those two groups and shows how to test where your own line sits.&lt;/p&gt;

&lt;h2&gt;
  
  
  What "local" means here
&lt;/h2&gt;

&lt;p&gt;A local model's files sit on a machine you own or rent, and requests are answered there. Ollama, a common way to run them, says that &lt;a href="https://github.com/ollama/ollama/blob/main/docs/faq.mdx" rel="noopener noreferrer"&gt;it does not see your prompts or data when you run it locally&lt;/a&gt;, and that by default &lt;a href="https://github.com/ollama/ollama/blob/main/docs/faq.mdx" rel="noopener noreferrer"&gt;it binds to 127.0.0.1&lt;/a&gt;, so nothing outside that machine can reach it until you change a setting.&lt;/p&gt;

&lt;p&gt;That is the privacy argument, and it is real for the jobs you run locally. It does not cover jobs you send to a cloud model, and it does not make a badly set-up network safe. For the hardware and upkeep side, see our guide to &lt;a href="https://buildcortex.dev/guides/self-hosted-ai-for-business" rel="noopener noreferrer"&gt;self hosted AI for business&lt;/a&gt;. This page is about what to ask the model to do.&lt;/p&gt;

&lt;h2&gt;
  
  
  Jobs a local model handles well
&lt;/h2&gt;

&lt;p&gt;Three kinds of work fit, because the input is text you already have, the output is short or structured, and a person or a rule checks the result.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Summaries.&lt;/strong&gt; A night's worth of job notes, a long email thread, a day of call transcripts. Ollama's Llama 3.1 page lists &lt;a href="https://ollama.com/library/llama3.1" rel="noopener noreferrer"&gt;long-form text summarization&lt;/a&gt; among its use cases, with a 128K-token context window on every size.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Extraction into fields.&lt;/strong&gt; Pull a customer name, address, system type and urgency out of a voicemail transcript or a free-text note and put them in a form. Ollama can &lt;a href="https://docs.ollama.com/capabilities/structured-outputs" rel="noopener noreferrer"&gt;enforce a JSON schema on a model's reply&lt;/a&gt; so the output has the same fields every time. Its docs also say to validate the response against that same schema, and to use a low temperature for more predictable results. Treat the schema as a guardrail and the validation as the safety net.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Routing and sorting.&lt;/strong&gt; Tag an inbound message as spam, new lead, existing customer, scheduling question or complaint, and send it to the right queue. The model's job is a label, not a decision, and a wrong label goes to a person.&lt;/p&gt;

&lt;p&gt;A fourth category is &lt;strong&gt;fixed-pattern drafts&lt;/strong&gt;: an appointment reminder, a "we received your request" note, a morning briefing in the same structure each day. The wording is set. The model fills the blanks. A person approves anything that goes to a customer until the pattern has proven itself.&lt;/p&gt;

&lt;p&gt;Cortex runs this way at Detail Driven, where local models handle the overnight checks and the morning briefing on dedicated Linux hardware. It does not publish a performance number for that setup.&lt;/p&gt;

&lt;h2&gt;
  
  
  Jobs that still need a larger cloud model
&lt;/h2&gt;

&lt;p&gt;Plan on sending these to a stronger model, or to a person:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A messy customer email with three problems, a threat and a half-remembered invoice.&lt;/li&gt;
&lt;li&gt;Reasoning across many documents, such as comparing a contract, an estimate and a change order.&lt;/li&gt;
&lt;li&gt;Anything where a wrong answer costs money or makes a promise: pricing, refunds, warranty decisions.&lt;/li&gt;
&lt;li&gt;Unusual cases the model has not seen in your files.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Size is part of the reason. Ollama's Llama 3.1 comes in &lt;a href="https://ollama.com/library/llama3.1" rel="noopener noreferrer"&gt;8B at 4.9GB, 70B at 43GB and 405B at 243GB&lt;/a&gt;. The big one is a data-center model, not a desktop one, and the smaller versions are what most small businesses can host. We are not claiming a ranking between local and cloud models, because it changes every few months. Test it on your own files.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to find your line in a week
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Collect 50 real examples&lt;/strong&gt; of one job: 50 job notes to summarize, 50 messages to sort.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Run them through a local model&lt;/strong&gt;, with the schema or wording you plan to use.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Have the person who owns the work grade each result&lt;/strong&gt; as fine, fixable or wrong.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Run the same 50 through a cloud model&lt;/strong&gt; and grade those too.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Decide the line.&lt;/strong&gt; If the local model is fine on nearly every case and the misses are caught by validation or review, run that job locally. If the misses are costly, route those cases to the cloud model or to a person.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;A grading sheet beats an opinion. It also gives you something to rerun when a new model arrives.&lt;/p&gt;

&lt;h2&gt;
  
  
  How a hybrid system routes work
&lt;/h2&gt;

&lt;p&gt;A practical setup uses three layers in order:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Rules first.&lt;/strong&gt; If a plain rule doe&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>localllm</category>
      <category>privateai</category>
      <category>ollama</category>
      <category>smallbusiness</category>
    </item>
    <item>
      <title>How an AI agent for GoHighLevel works</title>
      <dc:creator>Cortex AI</dc:creator>
      <pubDate>Tue, 20 Oct 2026 16:17:31 +0000</pubDate>
      <link>https://dev.to/cortexai/how-an-ai-agent-for-gohighlevel-works-331f</link>
      <guid>https://dev.to/cortexai/how-an-ai-agent-for-gohighlevel-works-331f</guid>
      <description>&lt;p&gt;An AI agent for GoHighLevel connects three ways: a Custom Webhook action in a workflow, a Private Integration Token for one sub-account, or an OAuth Marketplace app. OAuth apps get 100 requests per 10 seconds and 200,000 per day. HighLevel already has AI Agent, Voice AI and Conversation AI features, so an outside agent earns its place by reading across your field software and books, with a person approving customer messages.&lt;/p&gt;

&lt;p&gt;An AI agent for GoHighLevel is a program that watches your CRM (a form lead nobody called, an estimate follow-up stuck in a pipeline stage, a missed-call text that went unanswered) and drafts or sends the next step. GoHighLevel already ships AI features of its own, so the real question is where an outside agent adds something. For a home-service company that runs leads, texts and booking in GoHighLevel and the jobs in separate field software, the answer is usually the space between the two.&lt;/p&gt;

&lt;p&gt;This guide covers what GoHighLevel already includes, the three ways to connect an agent, the limits that break builds, and what to keep with your office team.&lt;/p&gt;

&lt;h2&gt;
  
  
  What GoHighLevel already does
&lt;/h2&gt;

&lt;p&gt;Check this first. A weekly roundup from &lt;a href="https://www.ghlexperts.com/blog/highlevel-weekly-roundup-april-7-13-2026" rel="noopener noreferrer"&gt;GHL Experts&lt;/a&gt; (a partner community, not HighLevel itself) describes an AI Agent action inside Workflows that takes a plain-language instruction, picks tools, reads CRM context and acts in a single step. It lists 11 prebuilt templates such as form lead follow-up and quiz lead routing, and usage-based pricing for the model tokens. The same post covers a redesigned Voice AI builder and says Conversation AI previously had to be wired into workflows by hand.&lt;/p&gt;

&lt;p&gt;So lead follow-up and phone answering are covered inside the platform. Cortex does not replace those. Look at what these features can't see.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where the built-in tools stop
&lt;/h2&gt;

&lt;p&gt;GoHighLevel knows what happened in GoHighLevel. It doesn't know that the tech finished the job in ServiceTitan or Jobber, that the invoice is open in QuickBooks, or that the same customer called about a different problem last week. A Supergood review also reports that some newer AI surfaces, snapshot operations and parts of the funnel builder &lt;a href="https://supergood.ai/api-report-card/gohighlevel" rel="noopener noreferrer"&gt;aren't exposed through the API&lt;/a&gt;. If the feature you want has no API, an outside agent can't drive it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Three ways an agent connects to GoHighLevel
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;1. The Custom Webhook action.&lt;/strong&gt; HighLevel's help center says a workflow can &lt;a href="https://help.gohighlevel.com/support/solutions/articles/155000003305-workflow-action-webhook" rel="noopener noreferrer"&gt;send an HTTP request to any URL&lt;/a&gt; (GET, POST, PUT or DELETE), with bearer token, API key, basic auth or OAuth2. The workflow fires it when it reaches that step, so you choose which events leave. The article does not describe built-in retries, and notes HighLevel does not offer a static IP, so authentication must use headers. This is the simplest route and a good first one: a workflow triggers, the agent receives the contact and context, and the agent writes back.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. A Private Integration Token.&lt;/strong&gt; For one sub-account you own, &lt;a href="https://supergood.ai/api-report-card/gohighlevel" rel="noopener noreferrer"&gt;Supergood&lt;/a&gt; says HighLevel offers a token scoped to that account. It suits a company connecting its own account.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. A Marketplace app with OAuth.&lt;/strong&gt; For agencies and anything installed on many accounts, the same review says apps use OAuth 2.0, access tokens expire about every 24 hours, and refresh tokens rotate, so a build must save the new one each time. It also says scope is confusing (agency level versus sub-account level) and many endpoints need a &lt;code&gt;locationId&lt;/code&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Connecting ChatGPT to GoHighLevel
&lt;/h3&gt;

&lt;p&gt;We found no one-click ChatGPT connector from HighLevel in our research. An assistant would use one of the three routes above, plus a place where a person approves what it drafts. That second part is what makes it safe near your customers.&lt;/p&gt;

&lt;h2&gt;
  
  
  The limits that break builds
&lt;/h2&gt;

&lt;p&gt;HighLevel's &lt;a href="https://marketplace.gohighlevel.com/docs/other/rate-limits" rel="noopener noreferrer"&gt;rate limits page&lt;/a&gt; says that for apps using OAuth, each app gets 100 requests per 10 seconds and 200,000 requests per day, counted per sub-account or agency, with headers on every response showing what is left. Installing on more sub-accounts doesn't split the budget. For one company that is ample. A careless agent that checks every contact one by one still burns it, because the same review notes there is no bulk export, so pulling full account data means paging through each resource.&lt;/p&gt;

&lt;p&gt;Two more points from the same review: documentation lags new features, and UI changes sometimes ship without notice. Both mean someone has to watch a live connection. Version 1 of the API is also end-of-support, so build on v2.&lt;/p&gt;

&lt;h2&gt;
  
  
  What an agent does around GoHighLevel
&lt;/h2&gt;

&lt;p&gt;These are illustrations of the pattern, not a client story.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Agent&lt;/th&gt;
&lt;th&gt;Starts when&lt;/th&gt;
&lt;th&gt;Reads&lt;/th&gt;
&lt;th&gt;Drafts&lt;/th&gt;
&lt;th&gt;Person approves&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Stuck lead follow-up&lt;/td&gt;
&lt;td&gt;An opportunity sits in a stage past a set number of days&lt;/td&gt;
&lt;td&gt;Contact, notes, conversation history&lt;/td&gt;
&lt;td&gt;A personal text or a call note&lt;/td&gt;
&lt;td&gt;Office manager&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Estimate follow-up&lt;/td&gt;
&lt;td&gt;An estimate was sent and the contact went quiet&lt;/td&gt;
&lt;td&gt;Opportunity, field software estimate&lt;/td&gt;
&lt;td&gt;A message that names the job&lt;/td&gt;
&lt;td&gt;Sales lead or owner&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Missed-call recovery&lt;/td&gt;
&lt;td&gt;A call is missed outside hours&lt;/td&gt;
&lt;td&gt;Call log, contact history&lt;/td&gt;
&lt;td&gt;A text that fits the situation&lt;/td&gt;
&lt;td&gt;Dispatcher in the morning&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Owner morning report&lt;/td&gt;
&lt;td&gt;Every morning&lt;/td&gt;
&lt;td&gt;Pipeline, appointments, replies&lt;/td&gt;
&lt;td&gt;One summary&lt;/td&gt;
&lt;td&gt;None, it only reads&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The pattern is the same as in our guide to &lt;a href="https://buildcortex.dev/blog/connecting-gohighlevel-to-tekmetric" rel="noopener noreferrer"&gt;GoHighLevel and Tekmetric as systems of record&lt;/a&gt;: decide which system owns each fact, then let the agent read from both.&lt;/p&gt;

&lt;h2&gt;
  
  
  Setup steps and what you need
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;A GoHighLevel admin who can create the token, add the webhook step or install the app.&lt;/li&gt;
&lt;li&gt;Two or three jobs in order. Stuck leads and quiet estimates usually come first (see &lt;a href="https://buildcortex.dev/blog/crm-leads-sitting-four-days" rel="noopener noreferrer"&gt;CRM leads sitting four days&lt;/a&gt;).&lt;/li&gt;
&lt;li&gt;Access to the field software and phone provider, so the agent can see what GoHighLevel can't.&lt;/li&gt;
&lt;li&gt;One person per agent approving drafts for the first few weeks. Read &lt;a href="https://buildcortex.dev/help/human-in-the-loop" rel="noopener noreferrer"&gt;human-in-the-loop AI&lt;/a&gt; for how that works.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Limits and risks
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Texting rules.&lt;/strong&gt; Check your texting consent rules with whoever handles compliance. Your office decides what an agent may send and to whom.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pricing and scope.&lt;/strong&gt; Quotes, discounts and scope changes stay with a person.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Double messages.&lt;/strong&gt; If GoHighLevel's own AI and an outside agent both reply to the same lead, pick one for each stage.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Upkeep.&lt;/strong&gt; Tokens rotate, docs lag and limits apply. Someone has to own the connection, which is the reason for &lt;a href="https://buildcortex.dev/managed-ai" rel="noopener noreferrer"&gt;managed AI operations&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Where Cortex fits
&lt;/h2&gt;

&lt;p&gt;Cortex builds &lt;a href="https://buildcortex.dev/ai-agents" rel="noopener noreferrer"&gt;AI agents&lt;/a&gt; that work inside the software you already run, with a person approving anything that reaches a customer. We are not a HighLevel partner or a certified app, and we'll say so when GoHighLevel's own tools are enough. See what we connect on &lt;a href="https://buildcortex.dev/integrations" rel="noopener noreferrer"&gt;integrations&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The free &lt;a href="https://buildcortex.dev/audit" rel="noopener noreferrer"&gt;AI Operations Audit&lt;/a&gt; looks at your CRM, field software, phones and books in 30 minutes and tells you which job to hand an agent first.&lt;/p&gt;

&lt;h2&gt;
  
  
  Questions people ask
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Does GoHighLevel have AI built in?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Yes. A partner community's roundup describes an AI Agent action in Workflows, a redesigned Voice AI builder and Conversation AI. An outside agent adds value mainly where it needs data GoHighLevel does not hold, such as field software and accounting.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Does GoHighLevel have an API?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Yes. Version 2 uses OAuth 2.0 for Marketplace apps and a Private Integration Token for a single sub-account. Version 1 is end-of-support, so new builds should use v2.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Can I connect ChatGPT to GoHighLevel?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;We found no one-click connector. A ChatGPT-style assistant would connect through a Custom Webhook, a private token or an OAuth app, and needs a place where a person approves drafts before they reach customers.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What are GoHighLevel's API rate limits?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;For OAuth apps, 100 requests per 10 seconds and 200,000 per day, counted per sub-account or agency. Response headers show how much is left, and installing on more sub-accounts does not split the budget.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Can GoHighLevel send data to another system automatically?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Yes. The Custom Webhook workflow action sends an HTTP request to any URL when a workflow reaches that step, using GET, POST, PUT or DELETE with bearer, API key, basic or OAuth2 authentication.&lt;/p&gt;

&lt;h2&gt;
  
  
  Sources
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;a href="https://help.gohighlevel.com/support/solutions/articles/155000003305-workflow-action-webhook" rel="noopener noreferrer"&gt;Workflow Action - Custom Webhook&lt;/a&gt;, HighLevel Support&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://marketplace.gohighlevel.com/docs/other/rate-limits" rel="noopener noreferrer"&gt;Rate Limits&lt;/a&gt;, HighLevel Marketplace Docs&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://supergood.ai/api-report-card/gohighlevel" rel="noopener noreferrer"&gt;GoHighLevel API report card&lt;/a&gt;, Supergood&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.ghlexperts.com/blog/highlevel-weekly-roundup-april-7-13-2026" rel="noopener noreferrer"&gt;HighLevel Weekly Roundup April 7-13, 2026&lt;/a&gt;, GHL Experts&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;em&gt;Originally published at &lt;a href="https://buildcortex.dev/guides/gohighlevel-ai-integration" rel="noopener noreferrer"&gt;buildcortex.dev&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>gohighlevel</category>
      <category>aiagents</category>
      <category>integrations</category>
      <category>crm</category>
    </item>
    <item>
      <title>How an AI agent for ServiceTitan works</title>
      <dc:creator>Cortex AI</dc:creator>
      <pubDate>Tue, 20 Oct 2026 16:17:16 +0000</pubDate>
      <link>https://dev.to/cortexai/how-an-ai-agent-for-servicetitan-works-3c7f</link>
      <guid>https://dev.to/cortexai/how-an-ai-agent-for-servicetitan-works-3c7f</guid>
      <description>&lt;p&gt;An AI agent for ServiceTitan connects through an app you register in the ServiceTitan developer portal, an application key, and a client ID and secret an admin generates inside ServiceTitan, then swaps those for a token on every session. You choose which parts of the data it can touch by selecting scopes, so a follow-up agent need not see accounting. It drafts and flags, and a dispatcher or CSR approves anything a customer or a technician receives.&lt;/p&gt;

&lt;p&gt;An AI agent for ServiceTitan is a small program that watches your jobs, estimates and customers (an unsold estimate nobody called back, a job that finished with no invoice sent, a maintenance customer who has not been scheduled this season) and drafts the next step for a person to approve. ServiceTitan lets an outside agent in through an app you register and credentials an admin generates. What the agent should not do is message a customer or move a truck without a person looking at it first.&lt;/p&gt;

&lt;p&gt;This guide covers how the connection works, which choices matter, where builds go wrong, and what stays with your dispatchers and CSRs. It is written for HVAC, plumbing and electrical owners and operations managers.&lt;/p&gt;

&lt;h2&gt;
  
  
  What ServiceTitan gives an agent to work with
&lt;/h2&gt;

&lt;p&gt;ServiceTitan documents a developer portal in its help center. &lt;a href="https://help.servicetitan.com/docs/get-started-with-api-dev-portal-v2" rel="noopener noreferrer"&gt;Its V2 setup page&lt;/a&gt; says the APIs use OAuth 2.0 with a machine-to-machine grant. In plain terms, a program shows a client ID and secret, gets a token back, then calls the API with that token and an application key. Nobody logs in as a person.&lt;/p&gt;

&lt;p&gt;That matters for an owner because the agent does not borrow a staff member's login. It has its own credentials, and you can switch them off without touching anyone's account.&lt;/p&gt;

&lt;h2&gt;
  
  
  How an agent connects
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Register an app and pick scopes.&lt;/strong&gt; In the developer portal the app is created under My Apps, the tenant IDs are added, and the endpoints it may use are chosen under API Scope. ServiceTitan says the application key is then copied from the app. The scopes are the real safety control: a follow-up agent has no reason to see payroll or the pricebook. &lt;a href="https://www.makini.io/blog/servicetitan-connection-guide" rel="noopener noreferrer"&gt;Makini&lt;/a&gt;, a company that sells ServiceTitan integrations, lists scope groups such as CRM, Dispatch, Job Planning and Management, Marketing, Accounting and Timesheets, and warns that missing scopes cause permission errors. Start narrow and add only what a job proves it needs.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Connect it inside your tenant.&lt;/strong&gt; An admin goes to Settings, Integrations, API Application Access, chooses Connect New App, picks the app and allows access, then copies the client ID and generates a client secret. The ServiceTitan page lists two permissions the person needs, Generate API Application Key and Manage API Application Access, and says you cannot sign in with an Enterprise Hub or Partner Portal login. Makini adds that the secret cannot be viewed again once the window closes, so a lost secret means generating a new one and updating whatever uses it, and that the app must be in an Enabled state.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Test before it touches real jobs.&lt;/strong&gt; ServiceTitan says developers can request an integration environment through the developer site, and that for production customers it is a clone of production data. Ask for one. Even with it, keep the first agent read-only, drafts only, for a few weeks.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Rate limits and events.&lt;/strong&gt; A 2024 guide from the vendor &lt;a href="https://rollout.com/integration-guides/servicetitan/api-essentials" rel="noopener noreferrer"&gt;Rollout&lt;/a&gt; says most APIs allow 60 calls per second per application per tenant, and that reporting APIs allow five runs of the same report per minute. The same page says it may be out of date and that webhook subscriptions were limited to an older version at the time. We could not read ServiceTitan's developer pages for current event details, so treat limits and webhooks as questions for your account rep before you scope anything that depends on them.&lt;/p&gt;

&lt;h2&gt;
  
  
  ServiceTitan's own AI, and where an outside agent fits
&lt;/h2&gt;

&lt;p&gt;ServiceTitan is building AI into the product. In September 2025 &lt;a href="https://www.contractormag.com/technology/news/55317927/servicetitan-brings-ai-automation-to-the-trades-with-atlas" rel="noopener noreferrer"&gt;Contractor magazine reported on Atlas&lt;/a&gt;, an assistant ServiceTitan describes as "the ultimate ServiceTitan power user." According to that article it can run reports, find jobs and dispatch technicians from typed or spoken commands, and take actions such as lowering marketing spend when schedules are full. The article does not say what it costs or who can use it.&lt;/p&gt;

&lt;p&gt;If ServiceTitan's own tools cover a job, use them. An outside agent makes sense when the work crosses tools (ServiceTitan, QuickBooks, your phones, your ad accounts), when you want your own rules about who is contacted and when, or when you want a record of what the agent did and who approved it that is not tied to one vendor's roadmap.&lt;/p&gt;

&lt;h2&gt;
  
  
  What an agent does inside ServiceTitan
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Job&lt;/th&gt;
&lt;th&gt;What it watches&lt;/th&gt;
&lt;th&gt;What it reads&lt;/th&gt;
&lt;th&gt;What it drafts&lt;/th&gt;
&lt;th&gt;Who approves&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Unsold estimate follow-up&lt;/td&gt;
&lt;td&gt;An estimate with no decision after a set number of days&lt;/td&gt;
&lt;td&gt;Estimate, customer, last contact&lt;/td&gt;
&lt;td&gt;A short note referencing the work quoted&lt;/td&gt;
&lt;td&gt;CSR or comfort advisor&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Completed job, no invoice&lt;/td&gt;
&lt;td&gt;A finished job with no invoice&lt;/td&gt;
&lt;td&gt;Job, invoice status, technician notes&lt;/td&gt;
&lt;td&gt;A nudge to the office, not the customer&lt;/td&gt;
&lt;td&gt;Office manager&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Maintenance due&lt;/td&gt;
&lt;td&gt;A customer whose service is due this season&lt;/td&gt;
&lt;td&gt;Customer, equipment, last visit&lt;/td&gt;
&lt;td&gt;A message offering times&lt;/td&gt;
&lt;td&gt;CSR&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Missed-call recovery&lt;/td&gt;
&lt;td&gt;A call that ended with no booking&lt;/td&gt;
&lt;td&gt;Call log, customer match&lt;/td&gt;
&lt;td&gt;A text back and a task&lt;/td&gt;
&lt;td&gt;CSR&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Owner morning summary&lt;/td&gt;
&lt;td&gt;Every morning&lt;/td&gt;
&lt;td&gt;Jobs, estimates, cancellations, unbilled work&lt;/td&gt;
&lt;td&gt;One summary with exceptions first&lt;/td&gt;
&lt;td&gt;None, it only reads&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Which of these is first depends on where your office loses work. The &lt;a href="https://buildcortex.dev/help/estimate-follow-up" rel="noopener noreferrer"&gt;estimate follow-up workflow&lt;/a&gt; is where many HVAC companies start, because the data is simple and the loss is easy to see.&lt;/p&gt;

&lt;h2&gt;
  
  
  Setup steps and what you need
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;A ServiceTitan admin with the two permissions above, willing to register an app and generate a secret.&lt;/li&gt;
&lt;li&gt;Two or three jobs, in order, each with its narrowest scopes.&lt;/li&gt;
&lt;li&gt;An integration environment requested before any build.&lt;/li&gt;
&lt;li&gt;A place where drafts land and a named person who approves them each day.&lt;/li&gt;
&lt;li&gt;Someone who owns rotating credentials and watching for failures.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Start with a person approving every message and loosen it only after you have read enough drafts to trust them. We explain the model in &lt;a href="https://buildcortex.dev/help/human-in-the-loop" rel="noopener noreferrer"&gt;human-in-the-loop AI&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Limits and risks
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Pricing and discounts.&lt;/strong&gt; Dispatchers and comfort advisors decide, not an agent.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Scheduling changes.&lt;/strong&gt; An agent can suggest a slot. A person confirms it with the customer and the technician, especially for emergency calls.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Wrong customer.&lt;/strong&gt; Match on address and phone, not only a name, and check the service location on multi-site accounts.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Double messages.&lt;/strong&gt; If ServiceTitan's own marketing or booking tools already text a customer, decide which one owns that message.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Upkeep.&lt;/strong&gt; Scopes, secrets and the product itself change. Someone has to own that, which is the reason for &lt;a href="https://buildcortex.dev/managed-ai" rel="noopener noreferrer"&gt;managed AI operations&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Where Cortex fits
&lt;/h2&gt;

&lt;p&gt;Cortex builds &lt;a href="https://buildcortex.dev/ai-agents" rel="noopener noreferrer"&gt;AI agents&lt;/a&gt; that work inside the software you already run, with a person approving anything that goes to a customer. We are not a ServiceTitan partner or a certified app, and we will say so when ServiceTitan's own tools are enough. See what we connect on &lt;a href="https://buildcortex.dev/integrations" rel="noopener noreferrer"&gt;integrations&lt;/a&gt;, how this looks for &lt;a href="https://buildcortex.dev/industries/hvac" rel="noopener noreferrer"&gt;HVAC companies&lt;/a&gt;, and how agents help with &lt;a href="https://buildcortex.dev/help/dispatch-and-schedule" rel="noopener noreferrer"&gt;dispatch and scheduling&lt;/a&gt;. If you run Jobber instead, see &lt;a href="https://buildcortex.dev/guides/jobber-ai-integration" rel="noopener noreferrer"&gt;AI agents for Jobber&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The free &lt;a href="https://buildcortex.dev/audit" rel="noopener noreferrer"&gt;AI Operations Audit&lt;/a&gt; looks at your software, phones and books in 30 minutes and tells you which job to hand an agent first.&lt;/p&gt;

&lt;h2&gt;
  
  
  Questions people ask
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Does ServiceTitan have an API?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Yes. ServiceTitan's help center documents a developer portal where you register an app, pick the endpoints it may use, and get an application key. Calls use OAuth 2.0 with a client ID and secret.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Who can set up ServiceTitan API access?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;ServiceTitan says your team needs the Generate API Application Key and Manage API Application Access permissions, and that you sign in with a ServiceTitan account, not an Enterprise Hub or Partner Portal login. In practice that means an admin.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Can I connect ChatGPT to ServiceTitan?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;We found no native ChatGPT connector. An assistant would need the API credentials behind it, the narrowest scopes that do the job, and a rule that a person approves anything a customer sees.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Is there a test environment?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;ServiceTitan says developers can request an integration environment, and that for production customers it is a clone of production data. Request it before you build, and keep the first agent read-only.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Should I use ServiceTitan's own AI instead?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Sometimes. ServiceTitan announced Atlas in September 2025 as an assistant inside the product. If it covers a job, use it. An outside agent earns its place on work that spans ServiceTitan and your other tools, or needs your own rules.&lt;/p&gt;

&lt;h2&gt;
  
  
  Sources
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;a href="https://help.servicetitan.com/docs/get-started-with-api-dev-portal-v2" rel="noopener noreferrer"&gt;Get started with API dev portal V2&lt;/a&gt;, ServiceTitan&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.makini.io/blog/servicetitan-connection-guide" rel="noopener noreferrer"&gt;ServiceTitan connection guide&lt;/a&gt;, Makini&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://rollout.com/integration-guides/servicetitan/api-essentials" rel="noopener noreferrer"&gt;ServiceTitan API Essential Guide&lt;/a&gt;, Rollout&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.contractormag.com/technology/news/55317927/servicetitan-brings-ai-automation-to-the-trades-with-atlas" rel="noopener noreferrer"&gt;ServiceTitan Brings AI Automation to the Trades With Atlas&lt;/a&gt;, Contractor magazine&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;em&gt;Originally published at &lt;a href="https://buildcortex.dev/guides/servicetitan-ai-integration" rel="noopener noreferrer"&gt;buildcortex.dev&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>servicetitan</category>
      <category>hvac</category>
      <category>aiagents</category>
      <category>integrations</category>
    </item>
    <item>
      <title>An AI agent that uses my CRM, without a migration</title>
      <dc:creator>Cortex AI</dc:creator>
      <pubDate>Tue, 20 Oct 2026 16:17:01 +0000</pubDate>
      <link>https://dev.to/cortexai/an-ai-agent-that-uses-my-crm-without-a-migration-854</link>
      <guid>https://dev.to/cortexai/an-ai-agent-that-uses-my-crm-without-a-migration-854</guid>
      <description>&lt;p&gt;An AI agent that uses my CRM connects through the access your CRM already offers, such as a HubSpot private app token or a GoHighLevel marketplace app, with scopes you choose. It can flag stale leads, draft follow-ups, log what happened and brief the owner each morning, and your records stay where they are. A person approves anything a customer receives and anything that changes who owns a deal.&lt;/p&gt;

&lt;p&gt;An AI agent that uses my CRM is a program with its own login to the CRM you already run, so it can read your leads and deals, notice what is going stale, and draft the next move for a person to approve. You keep your records where they are. Nothing gets exported, rebuilt or migrated. This page explains how that access works in HubSpot and GoHighLevel, what an agent can do with it, and what should stay with you.&lt;/p&gt;

&lt;p&gt;The short version for an owner: the CRM stays the system of record, the agent is one more user with narrow permissions, and every message a customer sees is approved by a person at first.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why it matters for a service business
&lt;/h2&gt;

&lt;p&gt;A CRM is only as good as the follow-up around it. In &lt;a href="https://scholarsarchive.byu.edu/facpub/9711" rel="noopener noreferrer"&gt;a Harvard Business Review study of online sales leads&lt;/a&gt;, the authors' summary is blunt: most companies are not responding nearly fast enough. In a home-service company the lead is a homeowner with a broken furnace or a quote request, and the person who should reply is on a roof or in a van. The CRM holds the record. Nobody holds the clock.&lt;/p&gt;

&lt;p&gt;The pool of companies doing something about it is small. The Census Bureau's Business Trends and Outlook Survey put &lt;a href="https://census.gov/library/stories/2026/05/ai-use-businesses.html" rel="noopener noreferrer"&gt;business AI use at 19.8% as of May 3, 2026&lt;/a&gt;, with fewer than 20% of firms of four or fewer employees using it. Most of your competitors are still doing follow-up from memory.&lt;/p&gt;

&lt;h2&gt;
  
  
  How an agent gets access to your CRM
&lt;/h2&gt;

&lt;p&gt;You do not need a new product. The CRM already has a way to let a program in. The details differ.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;HubSpot: a private app.&lt;/strong&gt; &lt;a href="https://developers.hubspot.com/docs/guides/apps/private-apps/overview" rel="noopener noreferrer"&gt;HubSpot's documentation&lt;/a&gt; says only super admins can create private apps, each account can have up to 20, and each app gets its own access token that the program sends as a bearer token. Scopes control what the app can see or change, so a follow-up agent can read contacts and deals without touching billing settings. HubSpot says to rotate the token every six months, and warns that removing the user who created an app can make its calls fail with a permissions error. Create the app from an account that will not be offboarded.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;GoHighLevel: a marketplace app.&lt;/strong&gt; &lt;a href="https://marketplace.gohighlevel.com/docs/oauth/Faqs" rel="noopener noreferrer"&gt;GoHighLevel's OAuth guide&lt;/a&gt; says a location or agency admin installs the app, then the program exchanges a code for a token. Access tokens last one day and are renewed with a refresh token, which GoHighLevel expires after a year of non-use. A build that does not renew tokens automatically will quietly stop working the next morning, which is the most common way this connection breaks.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Your field service software.&lt;/strong&gt; If your leads live in ServiceTitan, Jobber or Housecall Pro instead, the same pattern applies with that vendor's own access. See our guides to &lt;a href="https://buildcortex.dev/guides/servicetitan-ai-integration" rel="noopener noreferrer"&gt;ServiceTitan&lt;/a&gt; and &lt;a href="https://buildcortex.dev/guides/jobber-ai-integration" rel="noopener noreferrer"&gt;Jobber&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Limits you plan around
&lt;/h2&gt;

&lt;p&gt;HubSpot's &lt;a href="https://developers.hubspot.com/docs/api/usage-details" rel="noopener noreferrer"&gt;usage guidelines&lt;/a&gt; give private apps 100 calls per 10 seconds on Free and Starter and 190 on Professional and Enterprise, with daily limits of 250,000, 625,000 and 1,000,000 per account on Free or Starter, Professional and Enterprise. GoHighLevel's guide gives a burst limit of 100 requests per 10 seconds and 200,000 a day, counted per app. Neither is a problem for follow-up work on a few thousand leads. Both punish a first sync that tries to read everything at once, so a build should page through history slowly.&lt;/p&gt;

&lt;h2&gt;
  
  
  What an agent does with a CRM
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Job&lt;/th&gt;
&lt;th&gt;What it watches&lt;/th&gt;
&lt;th&gt;What it reads&lt;/th&gt;
&lt;th&gt;What it drafts or does&lt;/th&gt;
&lt;th&gt;Who approves&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Lead sitting too long&lt;/td&gt;
&lt;td&gt;A new lead with no activity after a set time&lt;/td&gt;
&lt;td&gt;Lead, source, owner, last activity&lt;/td&gt;
&lt;td&gt;A first reply and a nudge to the owner&lt;/td&gt;
&lt;td&gt;Office manager&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Stale estimate or deal&lt;/td&gt;
&lt;td&gt;A deal with no movement for a set number of days&lt;/td&gt;
&lt;td&gt;Deal stage, last note, amount&lt;/td&gt;
&lt;td&gt;A follow-up that references the work quoted&lt;/td&gt;
&lt;td&gt;Salesperson or estimator&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Log what happened&lt;/td&gt;
&lt;td&gt;A call, text or email thread&lt;/td&gt;
&lt;td&gt;Conversation&lt;/td&gt;
&lt;td&gt;A clean note on the record&lt;/td&gt;
&lt;td&gt;None for notes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Assign by rule&lt;/td&gt;
&lt;td&gt;A new lead in a service area&lt;/td&gt;
&lt;td&gt;Address, trade, availability&lt;/td&gt;
&lt;td&gt;A suggested owner&lt;/td&gt;
&lt;td&gt;Office manager&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Owner morning summary&lt;/td&gt;
&lt;td&gt;Every morning&lt;/td&gt;
&lt;td&gt;New leads, stale deals, unanswered replies&lt;/td&gt;
&lt;td&gt;One summary with exceptions first&lt;/td&gt;
&lt;td&gt;None, it only reads&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;We wrote about &lt;a href="https://buildcortex.dev/blog/crm-leads-sitting-four-days" rel="noopener noreferrer"&gt;leads that sit in a CRM for four days&lt;/a&gt; and about &lt;a href="https://buildcortex.dev/help/speed-to-lead" rel="noopener noreferrer"&gt;speed to lead&lt;/a&gt; if you want the operational side of the first two rows.&lt;/p&gt;

&lt;h2&gt;
  
  
  What it should not do
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Change who owns a deal on its own.&lt;/strong&gt; Assignment is a management call. The agent suggests.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Send price or promises.&lt;/strong&gt; Quotes, discounts and schedule commitments come from a person.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Delete or merge records.&lt;/strong&gt; Read and add notes first. Anything destructive needs an explicit approval.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Message people who did not opt in.&lt;/strong&gt; Keep consent on the record and have the agent check it.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Start with a person approving every message and loosen it only after you have read enough drafts to trust them. We explain the model in &lt;a href="https://buildcortex.dev/help/human-in-the-loop" rel="noopener noreferrer"&gt;human-in-the-loop AI&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Setup steps and what you need
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;List the three follow-ups that depend on someone remembering.&lt;/li&gt;
&lt;li&gt;Check whether your CRM's own automation already handles one. If it does, leave it.&lt;/li&gt;
&lt;li&gt;Have an admin create the app or install the marketplace app with the narrowest scopes.&lt;/li&gt;
&lt;li&gt;Pick where drafts land and who approves them each day.&lt;/li&gt;
&lt;li&gt;Name the person who owns tokens, scopes and failures.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Where Cortex fits
&lt;/h2&gt;

&lt;p&gt;Cortex builds &lt;a href="https://buildcortex.dev/ai-agents" rel="noopener noreferrer"&gt;AI agents&lt;/a&gt; that work inside the software you already run, with a person approving anything that goes to a customer. We are not a HubSpot or GoHighLevel partner or a certified app, and we will say so when your CRM's own tools are enough. See what we connect on &lt;a href="https://buildcortex.dev/integrations" rel="noopener noreferrer"&gt;integrations&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The free &lt;a href="https://buildcortex.dev/audit" rel="noopener noreferrer"&gt;AI Operations Audit&lt;/a&gt; looks at your CRM, phones and field software in 30 minutes and tells you which job to hand an agent first.&lt;/p&gt;

&lt;h2&gt;
  
  
  Questions people ask
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Can an AI agent work with the CRM I already use?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Usually yes, if the CRM has an API or marketplace app model, which HubSpot and GoHighLevel both do. The agent reads and writes records through that access, so you do not migrate anything.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How does an AI agent get into HubSpot?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;HubSpot documents private apps. A super admin creates one, picks scopes, and gets a token the agent sends with each call. HubSpot says to rotate the token every six months.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How does an AI agent get into GoHighLevel?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;GoHighLevel documents an OAuth marketplace app that a location or agency admin installs. Its access tokens last one day and are renewed with a refresh token, so the connection needs to handle that automatically.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What is the best AI for CRM automation?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;There is no single best one. First list the jobs you lose money on, then check whether your CRM's own tools cover them. An outside agent fits when the work crosses your CRM and other systems or needs your own approval rules.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Will an AI agent send messages to my leads on its own?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;It should not at first. Begin with drafts that a person approves, and loosen that only for narrow, low-risk messages after you have read enough of them.&lt;/p&gt;

&lt;h2&gt;
  
  
  Sources
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;a href="https://developers.hubspot.com/docs/guides/apps/private-apps/overview" rel="noopener noreferrer"&gt;Private apps&lt;/a&gt;, HubSpot&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://developers.hubspot.com/docs/api/usage-details" rel="noopener noreferrer"&gt;API usage details&lt;/a&gt;, HubSpot&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://marketplace.gohighlevel.com/docs/oauth/Faqs" rel="noopener noreferrer"&gt;OAuth FAQs&lt;/a&gt;, GoHighLevel&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://scholarsarchive.byu.edu/facpub/9711" rel="noopener noreferrer"&gt;The Short Life of Online Sales Leads&lt;/a&gt;, Harvard Business Review (BYU archive record)&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://census.gov/library/stories/2026/05/ai-use-businesses.html" rel="noopener noreferrer"&gt;Large Firms With at Least 20 Employees Biggest AI Users&lt;/a&gt;, U.S. Census Bureau&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;em&gt;Originally published at &lt;a href="https://buildcortex.dev/guides/ai-agent-crm-integration" rel="noopener noreferrer"&gt;buildcortex.dev&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>crm</category>
      <category>aiagents</category>
      <category>hubspot</category>
      <category>gohighlevel</category>
    </item>
    <item>
      <title>How an AI agent for FieldRoutes works</title>
      <dc:creator>Cortex AI</dc:creator>
      <pubDate>Tue, 20 Oct 2026 16:16:37 +0000</pubDate>
      <link>https://dev.to/cortexai/how-an-ai-agent-for-fieldroutes-works-3jn1</link>
      <guid>https://dev.to/cortexai/how-an-ai-agent-for-fieldroutes-works-3jn1</guid>
      <description>&lt;p&gt;An AI agent for FieldRoutes connects through API credentials that FieldRoutes support issues (a subdomain, an authentication key and an authentication token) and through trigger rules that send job events to an endpoint you control. It can watch customers and jobs, draft reactivation and review messages, and send an owner a morning summary, while a person approves anything a customer reads. Plan access, field names and limits come from FieldRoutes, so confirm them before you build.&lt;/p&gt;

&lt;p&gt;An AI agent for FieldRoutes is a small program that reads your customers and jobs, notices what slipped (a quarterly customer who stopped answering, a completed service with no review request, a cancelled stop nobody called back about) and drafts the next step for your office to approve. FieldRoutes gives it two ways in: API credentials, and trigger rules that send an event when a job changes. What the agent should not do is send a message to a customer that nobody read.&lt;/p&gt;

&lt;p&gt;This guide covers how the connection works, what the data is likely to look like, where builds go wrong, and what stays with your team. It is written for pest control and lawn owners and office managers, not developers.&lt;/p&gt;

&lt;h2&gt;
  
  
  What FieldRoutes gives an agent to work with
&lt;/h2&gt;

&lt;p&gt;FieldRoutes lists &lt;a href="https://www.fieldroutes.com/" rel="noopener noreferrer"&gt;an API on its own site&lt;/a&gt;, alongside routing, scheduling, dashboards, payment processing and a mobile app, and describes it as connecting your tools in one place. In a &lt;a href="https://www.fieldroutes.com/resources/tips-and-tools/connecting-the-dots-integrating-your-tech-for-game-changing-success" rel="noopener noreferrer"&gt;FieldRoutes article on integrations&lt;/a&gt; the company says its API "allows you to share data with any vendor of your choosing" and recommends an open API because it opens integrations beyond a vendor's preferred-partner list. That is the door an outside agent uses.&lt;/p&gt;

&lt;p&gt;The public documentation is thin. FieldRoutes' developer docs sit behind your account, so a lot of what is written about the API comes from third parties with a product to sell. Where we lean on one below, we say so, and you should confirm it in your own account.&lt;/p&gt;

&lt;h2&gt;
  
  
  How an agent connects
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;API credentials from FieldRoutes support.&lt;/strong&gt; Podium's &lt;a href="https://www.podium.com/marketplace/fieldroutes" rel="noopener noreferrer"&gt;setup page for FieldRoutes&lt;/a&gt; says your plan must include API access and that you email FieldRoutes support to request credentials. You end up with three values: a subdomain, an authentication key and an authentication token. Treat the token like a password. One thing to ask support up front is which plan includes API access, because the answer decides whether this is a project or a billing conversation.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Requests.&lt;/strong&gt; An automation agency, &lt;a href="https://rexautomaton.com/blog/fieldroutes-api-integration-crm-follow-up" rel="noopener noreferrer"&gt;Rex Automaton&lt;/a&gt;, writes that requests go to your own subdomain on pestroutes.com and carry the key and token as query parameters. Secrets in a URL tend to end up in logs, so whoever builds this should keep them out of code and out of any log. The same post says to keep credentials separate for each office, because mixing them causes permission errors that are hard to trace.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Rate limits.&lt;/strong&gt; &lt;a href="https://rexautomaton.com/blog/fieldroutes-api-integration-crm-follow-up" rel="noopener noreferrer"&gt;The same post&lt;/a&gt; gives documented defaults of 3,000 reads and 3,000 writes per office at 60 requests per minute. That is plenty for follow-up work and too little for pulling your whole customer history in one pass, so a first sync has to run slowly and in pieces. Treat the figure as that author's reading of the docs and check it in yours.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Trigger rules.&lt;/strong&gt; FieldRoutes lets an admin set trigger rules in the app that post JSON to an address you give them. According to Rex Automaton, the events are job scheduled, rescheduled, completed and canceled. These report that something happened. They do not report that something did not happen, so "this customer has gone quiet for 60 days" is something the agent works out by looking at dates.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Zapier alone usually falls short
&lt;/h2&gt;

&lt;p&gt;The same post says FieldRoutes has no native Zapier or Make app as of July 2026, and &lt;a href="https://support.callrail.com/hc/en-us/community/posts/25590973349133-FieldRoutes-integration" rel="noopener noreferrer"&gt;CallRail's support team&lt;/a&gt; told one customer in 2024 that it had no native FieldRoutes integration and suggested a custom build against the API. If that is still true when you read this, a no-code tool can pass an event along, but it will not decide whether a customer should be contacted. That decision is the agent's job, and it is the reason to build one.&lt;/p&gt;

&lt;p&gt;One more detail from Rex Automaton: if your receiver is not careful, a retried webhook can create a duplicate record. Give every event a stable ID and refuse to process the same one twice.&lt;/p&gt;

&lt;h2&gt;
  
  
  What an agent does inside FieldRoutes
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Job&lt;/th&gt;
&lt;th&gt;What it watches&lt;/th&gt;
&lt;th&gt;What it reads&lt;/th&gt;
&lt;th&gt;What it drafts&lt;/th&gt;
&lt;th&gt;Who approves&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Win back a lapsed customer&lt;/td&gt;
&lt;td&gt;Last completed service date against the plan's schedule&lt;/td&gt;
&lt;td&gt;Customer, service type, last job, contact preference&lt;/td&gt;
&lt;td&gt;A short message naming the service and offering a time&lt;/td&gt;
&lt;td&gt;Office manager&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Review request after a clean service&lt;/td&gt;
&lt;td&gt;A job moving to completed&lt;/td&gt;
&lt;td&gt;Job status, invoice balance, any open complaint&lt;/td&gt;
&lt;td&gt;A request, held back if the account has a balance or complaint&lt;/td&gt;
&lt;td&gt;Office manager&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cancelled stop follow-up&lt;/td&gt;
&lt;td&gt;A job moving to canceled&lt;/td&gt;
&lt;td&gt;Customer, reason if recorded, route date&lt;/td&gt;
&lt;td&gt;A call-back note or text&lt;/td&gt;
&lt;td&gt;Dispatcher&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Reschedule gap&lt;/td&gt;
&lt;td&gt;A rescheduled job with no new date inside your window&lt;/td&gt;
&lt;td&gt;Job, route, technician availability&lt;/td&gt;
&lt;td&gt;A suggested slot for the customer&lt;/td&gt;
&lt;td&gt;Dispatcher&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Owner morning summary&lt;/td&gt;
&lt;td&gt;Every morning&lt;/td&gt;
&lt;td&gt;Jobs, cancellations, balances, new customers&lt;/td&gt;
&lt;td&gt;One summary with exceptions at the top&lt;/td&gt;
&lt;td&gt;None, it only reads&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Rex Automaton's advice on review requests is worth copying: do not ask for a review after an incomplete job, an overdue invoice, an open complaint or a refund. Also keep the consent record per channel, and only message people who agreed to be messaged.&lt;/p&gt;

&lt;h2&gt;
  
  
  Setup steps and what you need
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;An owner or admin who can ask FieldRoutes support for credentials and set trigger rules.&lt;/li&gt;
&lt;li&gt;Two or three jobs picked in order. Lapsed customers and cancelled stops are a good start because the data is simple.&lt;/li&gt;
&lt;li&gt;A place for the drafts to land where your office manager can read them before they go.&lt;/li&gt;
&lt;li&gt;A list of customers who have opted in to text or email, kept apart from the rest.&lt;/li&gt;
&lt;li&gt;A person watching the connection for the first few weeks, since keys, plans and rules change.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Start with a person approving every message and loosen it only after you have read enough drafts to trust them. We explain the model in &lt;a href="https://buildcortex.dev/help/human-in-the-loop" rel="noopener noreferrer"&gt;human-in-the-loop AI&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Limits and risks
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Recurring service decisions stay human.&lt;/strong&gt; Cancelling, pausing or repricing a recurring plan is for the office manager or owner.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Safety and liability.&lt;/strong&gt; A complaint about a chemical, a pet or a child goes to a person the same day, never to an agent.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Wrong customer.&lt;/strong&gt; Match on address and phone, not just a name, since neighbors share surnames.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Double messages.&lt;/strong&gt; If FieldRoutes sends its own reminders, decide which system owns which message.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Upkeep.&lt;/strong&gt; Keys, plan access and trigger rules change. Someone has to own that, which is the reason for &lt;a href="https://buildcortex.dev/managed-ai" rel="noopener noreferrer"&gt;managed AI operations&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Where Cortex fits
&lt;/h2&gt;

&lt;p&gt;Cortex builds &lt;a href="https://buildcortex.dev/ai-agents" rel="noopener noreferrer"&gt;AI agents&lt;/a&gt; that work inside the software you already run, with a person approving anything that goes to a customer. We are not a FieldRoutes partner or a certified app, and we will say so when FieldRoutes' own tools are enough. See what we connect on &lt;a href="https://buildcortex.dev/integrations" rel="noopener noreferrer"&gt;integrations&lt;/a&gt; and how this looks for &lt;a href="https://buildcortex.dev/industries/pest-control" rel="noopener noreferrer"&gt;pest control&lt;/a&gt;. To bring back customers who drifted away, read about &lt;a href="https://buildcortex.dev/help/customer-reactivation" rel="noopener noreferrer"&gt;customer reactivation&lt;/a&gt;. If your company runs a different system, see &lt;a href="https://buildcortex.dev/guides/pestpac-ai-integration" rel="noopener noreferrer"&gt;AI agents for PestPac&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The free &lt;a href="https://buildcortex.dev/audit" rel="noopener noreferrer"&gt;AI Operations Audit&lt;/a&gt; looks at your software, phones and books in 30 minutes and tells you which job to hand an agent first.&lt;/p&gt;

&lt;h2&gt;
  
  
  Questions people ask
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Does FieldRoutes have an API?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Yes. FieldRoutes lists an API on its site and says it lets you share data with any vendor you choose. Credentials are not self-serve in most accounts, so you request them from FieldRoutes support.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How do I get FieldRoutes API credentials?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Podium's setup page says your plan must include API access and that you email FieldRoutes support for a subdomain, an authentication key and an authentication token. Ask which plan covers it before you scope a project.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Can I connect ChatGPT to FieldRoutes?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;We found no native ChatGPT connector. A chat assistant would need those API credentials or a webhook feed behind it, plus a rule that a person approves anything sent to a customer.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Does FieldRoutes work with Zapier or Make?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;One automation agency reports no native Zapier or Make app as of July 2026, so you either build your own receiver or relay events through a webhook step. Check the current state in your account, since this can change.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What stays with a person in a pest control office?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Pricing exceptions, complaints, refunds, cancellations of recurring service and anything about a safety or liability issue. An agent can draft, but an office manager or owner decides and sends.&lt;/p&gt;

&lt;h2&gt;
  
  
  Sources
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;a href="https://www.fieldroutes.com/" rel="noopener noreferrer"&gt;FieldRoutes&lt;/a&gt;, FieldRoutes&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.fieldroutes.com/resources/tips-and-tools/connecting-the-dots-integrating-your-tech-for-game-changing-success" rel="noopener noreferrer"&gt;Integrating Your Tech For Game-Changing Success&lt;/a&gt;, FieldRoutes&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.podium.com/marketplace/fieldroutes" rel="noopener noreferrer"&gt;FieldRoutes tech partner listing&lt;/a&gt;, Podium&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://rexautomaton.com/blog/fieldroutes-api-integration-crm-follow-up" rel="noopener noreferrer"&gt;FieldRoutes API: Connect to Your CRM and Automate Follow-Up&lt;/a&gt;, Rex Automaton&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://support.callrail.com/hc/en-us/community/posts/25590973349133-FieldRoutes-integration" rel="noopener noreferrer"&gt;FieldRoutes integration&lt;/a&gt;, CallRail support community&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;em&gt;Originally published at &lt;a href="https://buildcortex.dev/guides/fieldroutes-ai-integration" rel="noopener noreferrer"&gt;buildcortex.dev&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>fieldroutes</category>
      <category>pestcontrol</category>
      <category>aiagents</category>
      <category>integrations</category>
    </item>
    <item>
      <title>How an AI agent for QuickBooks works</title>
      <dc:creator>Cortex AI</dc:creator>
      <pubDate>Fri, 16 Oct 2026 17:46:41 +0000</pubDate>
      <link>https://dev.to/cortexai/how-an-ai-agent-for-quickbooks-works-oll</link>
      <guid>https://dev.to/cortexai/how-an-ai-agent-for-quickbooks-works-oll</guid>
      <description>&lt;p&gt;An AI agent for QuickBooks connects to QuickBooks Online through OAuth 2.0, with no API keys, and reads or drafts work such as unbilled jobs and overdue invoices. Tokens expire (one hour for access, 100 days for refresh), webhooks carry only record IDs, and updates replace the whole record. Your office manager or bookkeeper should approve anything that changes the ledger or reaches a customer.&lt;/p&gt;

&lt;p&gt;An AI agent for QuickBooks is a program that reads your books through Intuit's API, notices what needs a human (an invoice 30 days past due, a finished job nobody billed, a customer who paid but still shows open) and drafts the next step for your office manager to approve. For a service company the books are where field work turns into money, so the useful agents sit between QuickBooks and the software your crew uses all day. The one rule that matters most: a person approves anything that changes the ledger or goes to a customer.&lt;/p&gt;

&lt;p&gt;This guide covers what QuickBooks already includes, how an outside agent connects, the technical limits that trip up builds, and what to keep with your bookkeeper.&lt;/p&gt;

&lt;h2&gt;
  
  
  What QuickBooks already does
&lt;/h2&gt;

&lt;p&gt;Check this first so you don't pay twice. Intuit has added AI agents to QuickBooks Online. According to &lt;a href="https://www.usecarly.com/blog/quickbooks-ai" rel="noopener noreferrer"&gt;a vendor's rundown of the agents&lt;/a&gt;, there is an Accounting Agent that categorizes transactions and flags anomalies, and a Payments Agent that predicts late payments and sends invoice reminders. Which agents you get depends on your plan. The same article says the agents work inside the ledger and do not update your field service software or message your team, and that bookkeepers still advise "trust, but verify."&lt;/p&gt;

&lt;p&gt;That article is written by a company that sells an AI assistant, and the plan details come from Intuit's marketing, so check them in your own account. The takeaway is simple: reminders and categorizing are covered. The gaps are across systems.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where the built-in tools stop
&lt;/h2&gt;

&lt;p&gt;QuickBooks sees invoices. It does not see that a job finished on Tuesday and nobody created the invoice, because that fact lives in ServiceTitan, Jobber or Housecall Pro. For a trades company the expensive gaps are these:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Unbilled work.&lt;/strong&gt; Completed jobs with no invoice. See &lt;a href="https://buildcortex.dev/help/unbilled-work" rel="noopener noreferrer"&gt;unbilled work&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Slow collections.&lt;/strong&gt; A reminder that goes out on a schedule and ignores the customer who just called about the balance. See &lt;a href="https://buildcortex.dev/help/invoice-reminders" rel="noopener noreferrer"&gt;invoice reminders&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Two sources of truth.&lt;/strong&gt; The field system says paid, QuickBooks says open.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The owner's morning view.&lt;/strong&gt; Cash in, money owed, jobs done but not billed, in one place.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  How an agent connects to QuickBooks
&lt;/h2&gt;

&lt;p&gt;QuickBooks Online uses OAuth 2.0 only, according to &lt;a href="https://satvasolutions.com/blog/quickbooks-online-api-guide" rel="noopener noreferrer"&gt;one developer guide&lt;/a&gt;. There are no API keys. The company owner (or an admin) approves the connection once, and the agent then holds tokens.&lt;/p&gt;

&lt;p&gt;Three details matter in practice:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Tokens expire.&lt;/strong&gt; Intuit's own sample code says the &lt;a href="https://github.com/IntuitDeveloper/OAuth2-Dotnet_UsingSDK/blob/master/docs/help/Tokens.md" rel="noopener noreferrer"&gt;access token is valid for one hour and the refresh token for 100 days&lt;/a&gt; before you must re-authorize. The developer guide adds that the refresh token changes each time you renew, so a build has to store the newest one. A connection that nobody watches simply dies, and the agent goes quiet.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Limits.&lt;/strong&gt; One guide puts the cap at &lt;a href="https://satvasolutions.com/blog/quickbooks-online-api-limitations-guide" rel="noopener noreferrer"&gt;about 500 requests per minute per company, with batches of up to 30 operations&lt;/a&gt;, and says going over returns an HTTP 429. Those numbers are approximate, so read Intuit's current limits page before you size a build.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Webhooks are thin.&lt;/strong&gt; The &lt;a href="https://satvasolutions.com/blog/quickbooks-online-api-guide" rel="noopener noreferrer"&gt;developer guide&lt;/a&gt; says notifications cover 24 entity types (including invoices, payments, estimates and customers) and that "webhook payloads only contain entity IDs and operation types," so the agent has to fetch the record afterward. The limits guide recommends pairing webhooks with periodic checks because notifications can be delayed or duplicated.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Connecting ChatGPT to QuickBooks
&lt;/h3&gt;

&lt;p&gt;We found no direct ChatGPT connector from Intuit in our research. An assistant would need the OAuth connection above and a place where your bookkeeper approves what it drafts. Without that second part, a chatbot with access to your books is a risk, not a helper.&lt;/p&gt;

&lt;h2&gt;
  
  
  What an agent does around QuickBooks
&lt;/h2&gt;

&lt;p&gt;These are illustrations of the pattern, not a client story.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Agent&lt;/th&gt;
&lt;th&gt;Starts when&lt;/th&gt;
&lt;th&gt;Reads&lt;/th&gt;
&lt;th&gt;Drafts&lt;/th&gt;
&lt;th&gt;Person approves&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Unbilled work finder&lt;/td&gt;
&lt;td&gt;A job is complete in the field system with no matching invoice&lt;/td&gt;
&lt;td&gt;Job records, QuickBooks invoices&lt;/td&gt;
&lt;td&gt;A list of jobs to bill, with the likely invoice&lt;/td&gt;
&lt;td&gt;Office manager&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Collections follow-up&lt;/td&gt;
&lt;td&gt;An invoice passes a set number of days overdue&lt;/td&gt;
&lt;td&gt;Invoice, balance, last contact&lt;/td&gt;
&lt;td&gt;A personal reminder, or a call note&lt;/td&gt;
&lt;td&gt;Office manager&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Payment match&lt;/td&gt;
&lt;td&gt;A payment arrives&lt;/td&gt;
&lt;td&gt;Payment, open invoices&lt;/td&gt;
&lt;td&gt;A suggested match&lt;/td&gt;
&lt;td&gt;Bookkeeper&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Owner cash report&lt;/td&gt;
&lt;td&gt;Every morning&lt;/td&gt;
&lt;td&gt;Invoices, payments, aging&lt;/td&gt;
&lt;td&gt;One summary&lt;/td&gt;
&lt;td&gt;None, it only reads&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Setup steps and what you need
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;A QuickBooks admin who can approve the app connection.&lt;/li&gt;
&lt;li&gt;A read-only start. Let the agent read for two weeks and compare what it says with your own numbers before it drafts anything.&lt;/li&gt;
&lt;li&gt;Access to the field system and phone provider, so the agent can see what QuickBooks can't.&lt;/li&gt;
&lt;li&gt;One person per agent approving drafts, usually your office manager or bookkeeper.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Updates in QuickBooks replace the whole record, according to the developer guide, which says partial updates are not supported and that each change must carry the record's current version number. An agent that edits an invoice from stale data can wipe out fields. This is one reason we start with agents that read and draft, not agents that write to the ledger.&lt;/p&gt;

&lt;h2&gt;
  
  
  Limits and risks
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Money moves stay human.&lt;/strong&gt; Writing off a balance, issuing a credit or voiding an invoice is the owner's or bookkeeper's call.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Accuracy is a real problem.&lt;/strong&gt; In the Federal Reserve's survey of small firms already using AI, &lt;a href="https://www.fedsmallbusiness.org/2026-report-on-employer-firms" rel="noopener noreferrer"&gt;46% named accuracy as a top challenge&lt;/a&gt;. That is a reason to review drafts, not to avoid them.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Double reminders.&lt;/strong&gt; If QuickBooks sends its own payment reminders and an agent also writes to the customer, pick one for each stage.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Upkeep.&lt;/strong&gt; Tokens expire, limits change and fields get renamed. Someone has to own that, which is the reason for &lt;a href="https://buildcortex.dev/managed-ai" rel="noopener noreferrer"&gt;managed AI operations&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Where Cortex fits
&lt;/h2&gt;

&lt;p&gt;Cortex builds &lt;a href="https://buildcortex.dev/ai-agents" rel="noopener noreferrer"&gt;AI agents&lt;/a&gt; that work inside the software you already run, with a person approving anything that changes your books or reaches a customer. We are not an Intuit partner, and we'll say so when QuickBooks' own tools are enough. See what we connect on &lt;a href="https://buildcortex.dev/integrations" rel="noopener noreferrer"&gt;integrations&lt;/a&gt;, and read how the same pattern works for &lt;a href="https://buildcortex.dev/guides/jobber-ai-integration" rel="noopener noreferrer"&gt;Jobber&lt;/a&gt;. The approval model is explained under &lt;a href="https://buildcortex.dev/help/human-in-the-loop" rel="noopener noreferrer"&gt;human-in-the-loop AI&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The free &lt;a href="https://buildcortex.dev/audit" rel="noopener noreferrer"&gt;AI Operations Audit&lt;/a&gt; looks at your field software, phones and books in 30 minutes and tells you which job to hand an agent first.&lt;/p&gt;

&lt;h2&gt;
  
  
  Questions people ask
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Does QuickBooks have AI built in?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Yes. A vendor's rundown describes an Accounting Agent that categorizes transactions and a Payments Agent that predicts late payments and sends reminders, with access depending on plan. Check your own account for what your plan includes.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Does QuickBooks Online have an API?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Yes. It uses OAuth 2.0 only, with no API keys, according to a developer guide. The owner or an admin approves the connection once, and the app then holds tokens that must be refreshed.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Can I connect ChatGPT to QuickBooks?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;We found no direct connector from Intuit. An assistant would need the OAuth connection and a place where your bookkeeper approves what it drafts, because a chatbot with write access to your books is a risk.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Does QuickBooks support webhooks?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Yes, for 24 entity types including invoices, payments, estimates and customers. Payloads carry only record IDs and the operation, so the agent fetches the record afterward. Notifications can be delayed or duplicated.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How do I keep an AI agent from changing the wrong thing in my books?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Start read-only for two weeks, compare its output to your own numbers, then let it draft while a person approves. QuickBooks updates replace the whole record, so edits from stale data can erase fields.&lt;/p&gt;

&lt;h2&gt;
  
  
  Sources
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;a href="https://satvasolutions.com/blog/quickbooks-online-api-guide" rel="noopener noreferrer"&gt;QuickBooks Online API: Complete Developer Guide for 2026&lt;/a&gt;, Satva Solutions&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://satvasolutions.com/blog/quickbooks-online-api-limitations-guide" rel="noopener noreferrer"&gt;Top 5 QuickBooks API Rate Limits (2026)&lt;/a&gt;, Satva Solutions&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/IntuitDeveloper/OAuth2-Dotnet_UsingSDK/blob/master/docs/help/Tokens.md" rel="noopener noreferrer"&gt;OAuth2 Tokens help&lt;/a&gt;, Intuit Developer (GitHub sample)&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.usecarly.com/blog/quickbooks-ai" rel="noopener noreferrer"&gt;QuickBooks AI: The Agents, the Tiers, and What They Miss (2026)&lt;/a&gt;, Carly&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.fedsmallbusiness.org/2026-report-on-employer-firms" rel="noopener noreferrer"&gt;2026 Report on Employer Firms&lt;/a&gt;, Federal Reserve Banks (Small Business Credit Survey)&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;em&gt;Originally published at &lt;a href="https://buildcortex.dev/guides/quickbooks-ai-integration" rel="noopener noreferrer"&gt;buildcortex.dev&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>quickbooks</category>
      <category>aiagents</category>
      <category>integrations</category>
      <category>accounting</category>
    </item>
    <item>
      <title>How an AI agent for Shopmonkey works</title>
      <dc:creator>Cortex AI</dc:creator>
      <pubDate>Fri, 16 Oct 2026 15:46:35 +0000</pubDate>
      <link>https://dev.to/cortexai/how-an-ai-agent-for-shopmonkey-works-1gab</link>
      <guid>https://dev.to/cortexai/how-an-ai-agent-for-shopmonkey-works-1gab</guid>
      <description>&lt;p&gt;An AI agent for Shopmonkey connects through an API key an admin creates under Settings, Integration, API Keys, and through webhooks that report changes to orders, messages, inspections and other records. Estimates, repair orders and invoices are all orders told apart by status, and webhooks report record changes, not business events. A service advisor should approve every customer message.&lt;/p&gt;

&lt;p&gt;An AI agent for Shopmonkey is a small program that watches your shop's records (an estimate nobody answered, a repair order that finished while the car sat in the lot, a customer who declined a brake job in the spring) and drafts the next step for a service advisor to approve. Shopmonkey gives it two ways in: an API key an admin creates, and webhooks that tell the agent when something changed. What the agent should not do is send anything to a customer without a person reading it first.&lt;/p&gt;

&lt;p&gt;This guide covers how the connection works, what the data looks like, where builds go wrong, and what stays with your advisors.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Shopmonkey gives an agent to work with
&lt;/h2&gt;

&lt;p&gt;Shopmonkey describes its &lt;a href="https://www.shopmonkey.io/integrations/api-es-webhooks" rel="noopener noreferrer"&gt;API and webhooks page&lt;/a&gt; in plain terms: an API is "a door through which information and capabilities can be shared between two softwares," and a webhook is a kind of API driven by events instead of requests. The page says Shopmonkey can send information to other systems so they update on their own. It does not say which plans include access or how to get a key, so ask Shopmonkey or your account rep before you plan around it.&lt;/p&gt;

&lt;p&gt;The developer site, &lt;a href="https://shopmonkey.dev" rel="noopener noreferrer"&gt;shopmonkey.dev&lt;/a&gt;, links to the API overview, a webhooks page and an enterprise data streaming option. Third parties fill in the rest, and the quality varies. One of them, &lt;a href="https://www.usecarly.com/blog/shopmonkey-api/" rel="noopener noreferrer"&gt;Carly&lt;/a&gt;, is a company that competes in this space, so read its claims as a starting point and confirm them in your own account.&lt;/p&gt;

&lt;h2&gt;
  
  
  How an agent connects
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;An API key from an admin.&lt;/strong&gt; Carly's guide says an admin creates the key under Settings, Integration, API Keys, and that &lt;a href="https://www.usecarly.com/blog/shopmonkey-api/" rel="noopener noreferrer"&gt;a key carries the same permissions as the person who made it&lt;/a&gt;. Two practical consequences follow. If that admin leaves or has their role narrowed, the integration starts failing with a 403. And the key can't be viewed again after you create it, so a lost key means a new one and a broken connection until it is swapped. Create keys from a dedicated account with only the access the agent needs.&lt;/p&gt;

&lt;p&gt;A &lt;a href="https://supergood.ai/api-report-card/shopmonkey" rel="noopener noreferrer"&gt;Supergood review&lt;/a&gt; adds that there is no sandbox or developer tier, so a builder tests inside a real shop's account, and that there is no fine-grained scope for keys. That review comes from a company that sells API tooling, so treat it as one view. The practical point holds either way: test with read-only work first.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Webhooks.&lt;/strong&gt; Carly lists eleven kinds of records that send events when they are created, changed or deleted: appointments, customers, inspections, inventory, messages, orders, payments, purchase orders, users, vehicles and vendors. These are changes to records, not business events. One edit in the shop can fire several webhooks. An agent has to work out for itself that "this estimate has gone quiet" is a fact, because no event says so.&lt;/p&gt;

&lt;p&gt;Two details matter for reliability. Delivery times out after about 55 seconds, so the receiving end should acknowledge fast and do its work afterward. And after repeated failures a webhook is switched off and missed events are not replayed on their own, according to the same guide. Someone has to notice and replay them.&lt;/p&gt;

&lt;h2&gt;
  
  
  One thing that surprises people: estimates are orders
&lt;/h2&gt;

&lt;p&gt;In Shopmonkey's data, per Carly's guide, an estimate, a repair order and an invoice are all the same kind of record, an order, told apart by a status field. There is no separate estimate endpoint. An agent that follows up on quiet estimates therefore watches orders in the Estimate status and ignores the rest. A build that skips this will either miss estimates or text customers about finished jobs.&lt;/p&gt;

&lt;h2&gt;
  
  
  What an agent does around Shopmonkey
&lt;/h2&gt;

&lt;p&gt;These are examples of the pattern, not a client story.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Agent&lt;/th&gt;
&lt;th&gt;Starts when&lt;/th&gt;
&lt;th&gt;Reads&lt;/th&gt;
&lt;th&gt;Drafts&lt;/th&gt;
&lt;th&gt;Person approves&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Estimate follow-up&lt;/td&gt;
&lt;td&gt;An order in Estimate status has had no reply after a set number of days&lt;/td&gt;
&lt;td&gt;Order lines, vehicle, customer messages&lt;/td&gt;
&lt;td&gt;A personal text, ranked by dollar value&lt;/td&gt;
&lt;td&gt;Service advisor&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Declined work revisit&lt;/td&gt;
&lt;td&gt;A customer is due back with declined inspection items&lt;/td&gt;
&lt;td&gt;Inspection results, last visit, vehicle&lt;/td&gt;
&lt;td&gt;A message naming the specific item&lt;/td&gt;
&lt;td&gt;Service advisor&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Ready for pickup&lt;/td&gt;
&lt;td&gt;An order moves to complete and the car is still on site&lt;/td&gt;
&lt;td&gt;Order status, customer contact&lt;/td&gt;
&lt;td&gt;A pickup message&lt;/td&gt;
&lt;td&gt;Front desk&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Owner morning report&lt;/td&gt;
&lt;td&gt;Every morning&lt;/td&gt;
&lt;td&gt;Orders, payments, appointments&lt;/td&gt;
&lt;td&gt;One summary&lt;/td&gt;
&lt;td&gt;None, it only reads&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Setup steps and what you need
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;A Shopmonkey admin willing to create a limited key and add a webhook.&lt;/li&gt;
&lt;li&gt;Two or three jobs, in order. Quiet estimates and declined work usually come first.&lt;/li&gt;
&lt;li&gt;Access to the other systems in play: your phone provider, QuickBooks, review accounts. Supergood reports that Shopmonkey's built-in catalog is short (QuickBooks Online, CARFAX, PartsTech, Nexpart and RepairLink), so most other connections need custom work.&lt;/li&gt;
&lt;li&gt;One advisor per agent approving drafts for the first few weeks.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Start with a person approving every message and loosen it only after you have read enough drafts to trust them. We explain the model in &lt;a href="https://buildcortex.dev/help/human-in-the-loop" rel="noopener noreferrer"&gt;human-in-the-loop AI&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Limits and risks
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Safety work stays human.&lt;/strong&gt; An agent never tells a customer a car is safe to drive or talks anyone out of a brake or steering repair.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Prices and warranty.&lt;/strong&gt; Discounts, goodwill repairs and warranty calls belong to the advisor.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Wrong customer.&lt;/strong&gt; Match on phone number and vehicle, not just a name.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Double messages.&lt;/strong&gt; If Shopmonkey's own messaging and an agent both text about the same car, pick one for each stage.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Upkeep.&lt;/strong&gt; Keys, permissions and events change. Someone has to own that, which is the reason for &lt;a href="https://buildcortex.dev/managed-ai" rel="noopener noreferrer"&gt;managed AI operations&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Where Cortex fits
&lt;/h2&gt;

&lt;p&gt;Cortex builds &lt;a href="https://buildcortex.dev/ai-agents" rel="noopener noreferrer"&gt;AI agents&lt;/a&gt; that work inside the software you already run, with a person approving anything that goes to a customer. We are not a Shopmonkey partner or a certified app, and we will say so when Shopmonkey's own tools are enough. See what we connect on &lt;a href="https://buildcortex.dev/integrations" rel="noopener noreferrer"&gt;integrations&lt;/a&gt; and how this looks for &lt;a href="https://buildcortex.dev/industries/automotive-service" rel="noopener noreferrer"&gt;auto repair&lt;/a&gt;. For recovering work that fell off the board, read about &lt;a href="https://buildcortex.dev/help/declined-work" rel="noopener noreferrer"&gt;declined work&lt;/a&gt;. If your shop runs a different system, see &lt;a href="https://buildcortex.dev/guides/tekmetric-ai-integration" rel="noopener noreferrer"&gt;AI agents for Tekmetric&lt;/a&gt; or &lt;a href="https://buildcortex.dev/guides/autoleap-ai-integration" rel="noopener noreferrer"&gt;AutoLeap&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The free &lt;a href="https://buildcortex.dev/audit" rel="noopener noreferrer"&gt;AI Operations Audit&lt;/a&gt; looks at your shop software, phones and books in 30 minutes and tells you which job to hand an agent first.&lt;/p&gt;

&lt;h2&gt;
  
  
  Questions people ask
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Does Shopmonkey have an API?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Yes. Shopmonkey's API and webhooks page describes both, and its developer site is shopmonkey.dev. The page does not say which plans include access, so confirm that with Shopmonkey before you plan a build.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Does Shopmonkey support webhooks?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Yes. A third-party guide lists eleven record types that send events, including orders, messages, inspections and payments. These are record changes, so an agent has to work out for itself that an estimate has gone quiet.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Can I connect ChatGPT to Shopmonkey?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;We found no native ChatGPT connector. An assistant would need an admin-created API key or a webhook feed, plus a place where a service advisor approves drafts before anything reaches a customer.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Is there a sandbox to test an AI integration?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;One third-party review reports there is no sandbox or developer tier, so testing happens in a real shop account. Start with read-only work and give the agent a key with limited access.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What happens if the admin who made the API key leaves?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A third-party guide says a key carries the same permissions as its creator, and the integration fails with a 403 if that person is offboarded or their role is narrowed. Create keys from a dedicated account.&lt;/p&gt;

&lt;h2&gt;
  
  
  Sources
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;a href="https://www.shopmonkey.io/integrations/api-es-webhooks" rel="noopener noreferrer"&gt;API &amp;amp; Webhooks Integration&lt;/a&gt;, Shopmonkey&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://shopmonkey.dev" rel="noopener noreferrer"&gt;Shopmonkey API documentation&lt;/a&gt;, Shopmonkey&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.usecarly.com/blog/shopmonkey-api/" rel="noopener noreferrer"&gt;Shopmonkey API guide&lt;/a&gt;, Carly&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://supergood.ai/api-report-card/shopmonkey" rel="noopener noreferrer"&gt;Shopmonkey API report card&lt;/a&gt;, Supergood&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;em&gt;Originally published at &lt;a href="https://buildcortex.dev/guides/shopmonkey-ai-integration" rel="noopener noreferrer"&gt;buildcortex.dev&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>shopmonkey</category>
      <category>aiagents</category>
      <category>integrations</category>
      <category>autorepair</category>
    </item>
    <item>
      <title>How an AI agent for Tekmetric works</title>
      <dc:creator>Cortex AI</dc:creator>
      <pubDate>Thu, 15 Oct 2026 23:49:04 +0000</pubDate>
      <link>https://dev.to/cortexai/how-an-ai-agent-for-tekmetric-works-4ob8</link>
      <guid>https://dev.to/cortexai/how-an-ai-agent-for-tekmetric-works-4ob8</guid>
      <description>&lt;p&gt;An AI agent for Tekmetric connects one of two ways: an app approved by Tekmetric that the shop admin authorizes under Shop Settings, Integrations, or a webhook an admin adds themselves. API credentials are not self-serve (one review reports a wait of 2 to 3 weeks). Tekmetric already covers texting, reminders and campaigns; an agent adds follow-up judgment on estimates and declined work, with a service advisor approving every message.&lt;/p&gt;

&lt;p&gt;An AI agent for Tekmetric is a small program that watches what happens in your shop (an estimate nobody answered, a repair order that finished while the car sat on the lot, declined work for a customer who is due back) and drafts the next step for a service advisor to approve. In Tekmetric it can reach your data in two ways: through an app Tekmetric has approved, which your shop admin authorizes, or through a webhook an admin adds themselves. What it should not do is send anything to a customer without a person reading it first.&lt;/p&gt;

&lt;p&gt;This guide covers what Tekmetric already does, where the gaps are, how an agent connects, and what to keep with your advisors.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Tekmetric already does
&lt;/h2&gt;

&lt;p&gt;Check this first so you don't pay for something you already have.&lt;/p&gt;

&lt;p&gt;Tekmetric's &lt;a href="https://www.tekmetric.com/integrations" rel="noopener noreferrer"&gt;integrations page&lt;/a&gt; says it has 70+ integrations and lists two-way texting, text-to-pay, digital vehicle inspections, automated reminders, scheduled campaigns and Google review requests. Partners such as ShopGenie and AutoBucks add things like service reminders and a text-based rewards program. We did not find AI features described on that page.&lt;/p&gt;

&lt;p&gt;So the reminders and campaigns are already there. They run on rules: this message, at this time, to this list.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where the built-in tools stop
&lt;/h2&gt;

&lt;p&gt;A reminder fires on a date. It doesn't know that the customer who declined a suspension job last month asked about financing, or that two estimates are sitting unanswered on the same day your advisor is out.&lt;/p&gt;

&lt;p&gt;The gaps we hear about most:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Estimates that go quiet.&lt;/strong&gt; Sent, viewed, never answered, then forgotten.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Declined work.&lt;/strong&gt; Inspection findings the customer put off, never revisited at the right moment.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Finished cars that wait.&lt;/strong&gt; A repair order marked complete and a customer who hasn't been told.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Money and parts elsewhere.&lt;/strong&gt; Balances in QuickBooks, parts in a supplier portal, leads in your phone system.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The owner's morning view.&lt;/strong&gt; Cars in, estimates open, cars ready, balances owed.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What an agent does around Tekmetric
&lt;/h2&gt;

&lt;p&gt;These are illustrations of the pattern, not a client story.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Agent&lt;/th&gt;
&lt;th&gt;Starts when&lt;/th&gt;
&lt;th&gt;Reads&lt;/th&gt;
&lt;th&gt;Drafts&lt;/th&gt;
&lt;th&gt;Person approves&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Estimate follow-up&lt;/td&gt;
&lt;td&gt;An estimate has no response after a set number of days&lt;/td&gt;
&lt;td&gt;Estimate lines, vehicle, notes, history&lt;/td&gt;
&lt;td&gt;A personal text or a call reminder, ranked by dollar value&lt;/td&gt;
&lt;td&gt;Service advisor&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Declined work revisit&lt;/td&gt;
&lt;td&gt;A customer is due back and has open declined items&lt;/td&gt;
&lt;td&gt;Declined lines, mileage, last visit&lt;/td&gt;
&lt;td&gt;A message naming the specific item&lt;/td&gt;
&lt;td&gt;Service advisor&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Ready for pickup&lt;/td&gt;
&lt;td&gt;A repair order is complete and the car is still there&lt;/td&gt;
&lt;td&gt;Repair order status, contact&lt;/td&gt;
&lt;td&gt;A pickup message&lt;/td&gt;
&lt;td&gt;Front desk&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Owner morning report&lt;/td&gt;
&lt;td&gt;Every morning&lt;/td&gt;
&lt;td&gt;Orders, estimates, balances&lt;/td&gt;
&lt;td&gt;One summary&lt;/td&gt;
&lt;td&gt;None, it reads only&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  How an agent connects to Tekmetric
&lt;/h2&gt;

&lt;p&gt;Two routes exist, and they are quite different.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;An approved app, authorized by your admin.&lt;/strong&gt; Tekmetric points developers to &lt;a href="https://www.tekmetric.com/integrations" rel="noopener noreferrer"&gt;an application page&lt;/a&gt;. One &lt;a href="https://supergood.ai/api-report-card/tekmetric" rel="noopener noreferrer"&gt;third-party review&lt;/a&gt; reports that credentials are not self-serve: they need an active paid subscription and manual approval from Tekmetric that typically takes 2 to 3 weeks, and they use OAuth 2.0 client credentials. It also reports that each query returns at most 25 records, so reading a whole shop's history takes many requests. That review is published by a company that sells managed API layers, so confirm these details with Tekmetric. Once a connected app exists, the shop admin grants it access: &lt;a href="https://help.steercrm.com/knowledge/connecting-your-shop-management-system-to-autoops" rel="noopener noreferrer"&gt;Shop Settings, then the Integrations tab, then Manage, then Grant Access&lt;/a&gt;. Revoking it works from the same screen.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A webhook you add yourself.&lt;/strong&gt; A partner's setup guide shows that &lt;a href="https://support.shopgenie.io/support/setting-up-webhooks-in-tekmetric" rel="noopener noreferrer"&gt;an admin can add a webhook under Settings, then Integrations&lt;/a&gt;, and that webhooks deliver appointment and repair order updates in real time, instead of waiting for an hourly sync. We found no public list of events, so ask Tekmetric which ones exist before building on them.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Webhooks tell an agent something changed, which suits follow-up. A good agent then reads the record, checks it hasn't already acted on that event, and drafts. Events can repeat, and a careless build messages the customer twice.&lt;/p&gt;

&lt;h3&gt;
  
  
  Connecting ChatGPT to Tekmetric
&lt;/h3&gt;

&lt;p&gt;We found no native ChatGPT or Claude connector. An assistant would need approved API access or a webhook feeding it, plus a place for a person to approve drafts. That last part is what turns a chatbot into something safe to put near customers.&lt;/p&gt;

&lt;h2&gt;
  
  
  Setup steps and what you need
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;A Tekmetric admin who can grant access and add integrations.&lt;/li&gt;
&lt;li&gt;Two or three jobs in order. Quiet estimates and declined work are usually first.&lt;/li&gt;
&lt;li&gt;Access to the other systems: phone provider, QuickBooks, review accounts.&lt;/li&gt;
&lt;li&gt;One advisor per agent approving drafts for the first few weeks.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Start with a person approving every draft and loosen it only after you've read enough to trust it. We explain the model in &lt;a href="https://buildcortex.dev/help/human-in-the-loop" rel="noopener noreferrer"&gt;human-in-the-loop AI&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Limits and risks
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Safety work stays human.&lt;/strong&gt; An agent never tells a customer a car is safe to drive or talks anyone out of a brake or steering repair.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Prices and warranty.&lt;/strong&gt; Discounts, goodwill repairs and warranty calls are the advisor's.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Double messages.&lt;/strong&gt; If Tekmetric's automated reminders and an agent both text about the same car, pick one per stage.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Wrong customer.&lt;/strong&gt; Match on phone number and vehicle, not just a name.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Upkeep.&lt;/strong&gt; Credentials and events change. Someone has to own that, which is the reason for &lt;a href="https://buildcortex.dev/managed-ai" rel="noopener noreferrer"&gt;managed AI operations&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Where Cortex fits
&lt;/h2&gt;

&lt;p&gt;Cortex builds &lt;a href="https://buildcortex.dev/ai-agents" rel="noopener noreferrer"&gt;AI agents&lt;/a&gt; that work inside the software you already run, with a person approving anything that goes to a customer. We are not a Tekmetric partner or certified app, and we'll say so when Tekmetric's own tools are enough. See what we connect on &lt;a href="https://buildcortex.dev/integrations" rel="noopener noreferrer"&gt;integrations&lt;/a&gt; and how this looks for &lt;a href="https://buildcortex.dev/industries/automotive-service" rel="noopener noreferrer"&gt;auto repair&lt;/a&gt;. For recovering work that fell off the board, see &lt;a href="https://buildcortex.dev/help/declined-work" rel="noopener noreferrer"&gt;declined work&lt;/a&gt;. If your shop runs another system, read &lt;a href="https://buildcortex.dev/guides/autoleap-ai-integration" rel="noopener noreferrer"&gt;AI agents inside AutoLeap&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The free &lt;a href="https://buildcortex.dev/audit" rel="noopener noreferrer"&gt;AI Operations Audit&lt;/a&gt; looks at your shop software, phones and books in 30 minutes and tells you which job to hand an agent first.&lt;/p&gt;

&lt;h2&gt;
  
  
  Questions people ask
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Does Tekmetric have AI built in?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Tekmetric's integrations page lists two-way texting, automated reminders, scheduled campaigns, Google review requests and digital vehicle inspections. We did not find AI features described on that page.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Does Tekmetric have an API?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Yes, but it is not self-serve. Tekmetric sends developers to an application page, and one third-party review reports it needs an active paid subscription plus manual approval that typically takes 2 to 3 weeks.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Can I connect ChatGPT to Tekmetric?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;We foun&lt;/p&gt;

</description>
      <category>tekmetric</category>
      <category>aiagents</category>
      <category>integrations</category>
      <category>autorepair</category>
    </item>
  </channel>
</rss>
