Spearworks AI

Blog

What does an AI agent actually do that a chatbot can't?

August 16, 2026

Every piece of software you touch now claims to have an agent in it. Your CRM has one. Your email client has one. Half the AI tools that showed up in your inbox this year use the word somewhere in the pitch. Fewer than one in ten people can actually explain what makes something an agent instead of a chatbot with a new coat of paint, and honestly, that's not a knock on anyone. The vendors haven't made it easy to tell the difference.

Here's the plain version. A tool waits for you. Spell check waits for you to type something wrong, highlights it, and lets you decide. A chatbot waits for you to ask something and answers. An agent does the work. It reads what you actually asked for, reasons over your real data, decides which steps to take, and acts, inside a boundary you set. You're still the one in charge. The agent just doesn't need you to click every button along the way.

That's a definition. Definitions are forgettable. What sticks is seeing one work.

A real example: an agent built for a local business

A client of mine runs two small businesses out of the same life: an insurance brokerage and a boutique consulting practice, plus a third personal account, all hosted through a common domain reseller. Three separate calendars, no single view, and a real risk of double-booking or missing something because it lived on the wrong calendar. He wanted one honest answer to "what's actually on my plate today" without handing his logins over to some vendor's cloud dashboard.

That's a completely ordinary knowledge-worker problem. It's also a good test case for what "agent" actually means, because this one earns the word.

It used real tools, not a fixed script. The system had close to thirty distinct actions available to it: list calendars, search events, detect conflicts, find duplicates, create, update, delete, undo. It decided which ones to call based on what was actually asked, not a hardcoded sequence someone wrote in advance.

It reasoned over the messy stuff, not just the tidy fields. Two differently-titled events sat at the same time on two different calendars. The agent didn't just flag a scheduling conflict. It read into the notes on each entry, not just the title and time, and found that one of them had already been cancelled by the other party that morning and simply never got removed from the calendar. Neither title said that. Only reading the body did. That's a reasoning step, not a database lookup.

It had a boundary, set on purpose. For the first week, the agent was scoped to read-only: list and view, no creates, no deletes. That wasn't a technical limit. It was a trust decision, made in plain language with the client before the first real query ran. Autonomy got expanded later, once the agent had earned it.

It handled credentials the way credentials should be handled. Every account's login lived in the operating system's own credential store, never in a config file, never printed anywhere, including in the agent's own output. That last part turns out to matter more than it sounds like it should.

The proof moment: a live query asking what's on the calendar today, across all three accounts. Raw result, fifteen events. After the agent removed real cross-account duplicates and caught one entry mistagged in the wrong timezone, the real number was nine, one of which it flagged as likely already cancelled based on the note content the client hadn't read himself. That's the difference between an agent and a calendar app. A calendar app shows you what's there. An agent tells you what's actually true.

Agents are here. Readiness isn't.

Here's the part that didn't happen on a slide. It happened on its own, a few days after delivery, because the client got curious.

He's technical and sharp, so over the weekend he built his own version with a general-purpose AI tool and a scripting language he already knew. It didn't go the way he planned. While troubleshooting, the script ended up storing his email password in a plain local file, and the AI tool read that password back to him in cleartext, inside the chat itself. He did exactly the right thing: treated the credential as burned and rotated it across roughly a dozen places. Nothing was ultimately compromised. But it's precisely the failure mode the delivered agent was built to avoid, and it took about a day of unsupervised tinkering to recreate it.

Same week, he tried a second experiment: a local AI model running on an older laptop with 8GB of memory. He hit the ceiling directly. Slow responses, visible errors, a small model working outside the range it could handle on that hardware. He described it himself as watching a seventh grader learn to type on a typewriter. Nobody told him this would happen. He found the exact constraint that had already been accounted for in the system I'd built him, the hard way, on his own.

None of that makes him unsophisticated. He's technical enough to write his own integration code and stand up a local AI setup in an afternoon. The capability was never in question, for him or in general. These tools are genuinely that good now. What was missing wasn't skill. It was the accumulated, unglamorous knowledge of where the failure modes actually live: what credentials should never touch a script, what a given machine can and can't hold in memory, what "someone tested this before you" is actually worth.

That gap doesn't show up until you hit it. That's the whole reason it's dangerous.

What closing that gap looks like

On the delivery side, the parts that made the difference were boring, on purpose:

  • The tool behind the agent got vetted before it touched a client machine: verified developer identity through the platform's own code-signing process, not a self-reported name, plus a look at commit history and release cadence for signs of active maintenance versus an abandoned side project.
  • The whole setup got rehearsed solo, twice, on my own machine before the client ever saw it: once on an easier account type, once specifically reproducing his actual account type. Two real bugs got found and fixed in rehearsal, invisibly, before delivery.
  • The hardware sizing for a local model got planned against his actual, confirmed specs, not a guess. That's precisely the step his own unsupervised attempt skipped.

If you're wondering whether your business is ready

You don't need a use case that sounds impressive. You need one task you'd love to hand off, something repetitive, error-prone, or just tedious enough that you'd pay someone else to do it if you could. Write down how much time it actually takes you in a normal week before you touch a single tool. That number is how you'll know later whether any of this was worth it.

Start with one thing. Set a boundary you're comfortable with, read-only is a fine place to begin. Let it earn more access as it proves itself. That's a smaller ask than it sounds like, and it's the same thing I'd walk through with you in a free 30-minute conversation, no pitch, just figuring out together whether there's a real fit.

Get new posts by email.

One post a month. Plain language, specific examples, no hype. Unsubscribe anytime.