Tag: AI workflow

  • How We Qualify Contractor Leads With AI: The Intake Matrix

    How We Qualify Contractor Leads With AI: The Intake Matrix

    How can AI automatically qualify contractor leads?

    Short answer, and it is the whole article: the AI does not qualify the lead. It collects the facts qualification runs on — the same questions, in the same order, at 2 a.m. exactly the way they run at 10 a.m. — and it stops where judgment starts. Qualification questions are not qualification judgment, and the difference is the entire ballgame. The questions collect facts. The judgment decides what the facts mean: is this a job we want — at this size, this distance, for this payer, with the crews already buried?

    That distinction is what makes the automation worth having. A flooded kitchen ten minutes away and a “come look at a stain” forty minutes out both answer the questions perfectly. Only one of them should get your Saturday. The matrix below is how we draw that line before a human ever picks up the phone.

    The intake matrix: six facts, in order

    Every inbound call and form runs through the same six gates. Each gate is a fact, not an opinion, and each one exists because it changes what happens next.

    1. Territory. Where is the job, exactly? Distance is the first filter because it is the one an unsupervised agent gets wrong first — nothing about a polite conversation tells a model that forty minutes each way eats the margin. The address gets captured and checked against the service area before anything is booked.

    2. Trade and scope. What happened, in the caller’s words? Water, fire, mold, storm — and what they can already see: standing water, a burst line, a smell, a stain. The intake records the problem as described; it does not diagnose. Scope facts decide who the lead routes to and how fast.

    3. Size signals. How big is it likely to be — one room or the whole floor, home or commercial space, occupied or empty? Size is a fact the caller usually knows and an agent can ask without pretending to estimate. Nobody quotes anything at intake. Size just tells the human what kind of job this probably is.

    4. Payer path. Is this going through insurance, or is the customer paying directly? Asked plainly, recorded as stated. The answer changes the paperwork, the pace, and who needs to be in the conversation — it never becomes a coverage opinion. The agent asks; it does not advise.

    5. Urgency. Is water still moving? Is the home livable tonight? Urgency is what separates the 2 a.m. emergency from the Tuesday estimate, and it drives the one promise-shaped thing the system is allowed to do: escalate to a human now, not at 8 a.m.

    6. A complete record. Name, callback number, address, and the facts above — logged on every call, whether it books or not. In our own operation the intake pipeline logs calls into a database the follow-up system can query, so no communication ever begins from scratch. A lead that doesn’t book today is still a record the shop owns tomorrow.

    What happens to each outcome

    The matrix sorts; it does not decide. A lead inside territory, in scope, and urgent gets booked or escalated immediately. A lead that is real but not urgent gets logged and followed up by the automated sequence — the same pipeline discipline we run on our own 3 a.m. shift, where follow-ups compile into a daily briefing sorted red, yellow, green for human review. A lead outside the lines — wrong territory, wrong trade — gets a polite, honest close and a record of why. Nothing disappears, and nothing gets promised that a person hasn’t approved.

    What the human keeps

    Pricing. Promises. The handoff. What a job costs is a person’s call, made with the board in front of them. “We’ll have a crew there by nine” is a promise only someone who knows the crew should make. And the moment a prospect stops being a lead and starts being a customer — when they need to hear that a real person owns their problem — a person takes the conversation. The agent’s job is to make that moment arrive fast, facts collected and appointment real. It is not to be that moment.

    The failure shape, so you can recognize it

    Hand an agent the whole seat — the questions and the judgment both — and it will qualify everybody. It will book the estimate outside your service area because nothing told it distance matters. It will fill the calendar with meetings a person would have filtered in thirty seconds, and once your techs learn to distrust anything the system books, you have automated the exact problem you bought it to solve. The bad version doesn’t fail loudly. It fails as a slow leak — wasted drive time, stood-up appointments — until somebody turns it off and announces that AI doesn’t work.

    The seat works when its boundary is drawn, not when the model is smart. A boundary is a list: what it can ask, what it can book, what it can never promise, and where it stops and hands over. Answer, qualify, schedule — first response, not the close. That is not a limitation of the setup. That is the product, correctly shaped.

    This is the intake standard we publish and work from. It describes our method; it is not a guarantee of lead volume or outcomes for any individual business.

  • AI Governance Is the Gate That Caught the Thing

    AI Governance Is the Gate That Caught the Thing

    Most AI governance is written by people who have never had to govern an agent that could actually break something. It reads like insurance paperwork: frameworks, maturity models, principles laminated on a wall. Then a real agent, on a real Tuesday, publishes your drafting notes as if they were the article — and the framework has nothing to say about it, because the framework was never in the room.

    We run a small agency where AI agents do real production work every day: research, drafting, publishing, measurement, and an unattended night queue that runs while we sleep. Governance, for us, is not a document. It is the set of gates that have caught real things. Every rule below exists because something specific got past us first, and the rule is the scar.

    Governance starts with who is allowed to remember

    The agents are stateless; the memory lives in one place. Every agent we dispatch starts cold. It knows nothing about our clients, our sites, or yesterday’s decisions until its work order tells it. That sounds like a limitation. It is the control surface. Because the agent holds no standing memory, it holds no standing permissions either — every job is scoped, priced, and bounded by the order that created it, and when the job ends, the access ends with it.

    The work order itself is a governance document. It states the whole price up front, names the points where a human must tap before work proceeds, and lists what the executor may ship directly and what it must hold. An agent that has to ask a question the order should have answered is not a governance failure by the agent. It is a drafting failure by us, and we treat it that way.

    Draw the doors as lines, not policies

    Four things always need a human tap: money, credentials, outbound sends, and publishing. Everything else, the fleet runs on its own. That split is the entire access policy, and it fits in one sentence because it has to survive contact with a tired operator at the end of a long day. Policies that need interpretation get interpreted — usually at the worst moment, in the most generous direction.

    Credentials get the hardest line. Our agents never hold passwords, never see them, never pass them along. Work that reaches a login the agent cannot complete through an already-signed-in session does not get worked around. It stops, logs a hold, and waits for the human whose door that is. One night this fall, a run reached a registry login at three in the morning. The operator could not face the tap, said so, and went to bed. The work was built to survive stopping, so stopping cost nothing. The credential never moved. That is what a line is for: it has to hold when nobody has the energy to argue with it.

    The risk is not a rogue agent. The risk is a report you believe.

    Every serious failure we have had was a verification failure, not a rebellion. A judge model, asked to grade drafts against a length limit, invented word counts that were off by a quarter to a third — confidently, in both directions. A publish report stated a post ID from memory instead of reading it back from the result file, and the number was wrong. A page was verified from its HTML source and declared fine while its signup form rendered as blank white cards. Drafting notes were once published as article content because the check stopped at “the words are there.”

    So the rule is mechanical: proof lives at the receiving end. Numbers get read back by value from the file that recorded them. Pages get verified as rendered pages, in a browser, the way a reader sees them — not from source. A finished article must show visible structure, or it is a hold, not a publish. None of this requires trusting the agent less. It requires trusting the report exactly as far as the evidence under it, which is where trust should have been calibrated all along.

    We also measure trust per model, the way you would per employee. In scored head-to-head runs on identical briefs, exactly one of our models graded perfectly — every defect real, no invented ones — so that model holds the verifier seat. Another writes fast and clean but invents defects when it judges, so it drafts and never judges. The cheapest tier once certified work it had not actually checked, so its output is never trusted without a pass behind it. “The AI said so” is not a control. A scorecard is.

    Failures become regressions, not folklore

    Every break gets an ID, an entry in the failure ledger, and a gate. When the night queue failed in a new way, the failure was written down with its cause and its receipt, and a regression check was built that fails the next run if the same shape reappears. The ledger is unglamorous. It is also the difference between an operation that learns and an operation that just has stories. Governance that lives in people’s memories leaves with their mood, their weekend, and eventually their employment. Governance that lives in a gate runs every time.

    Each work order also carries one pre-decided instruction for the moment something breaks: if a step’s end state cannot be verified, stop that step, log the hold, and move to the next independent step. Never improvise past a failed check. The decision is made in advance, in calm, because the middle of a failing run is the worst possible place to invent policy.

    The 3 a.m. test

    Here is the only governance question we ask anymore: what can this system not do at 3 a.m.? Our night queue runs unattended with hard caps — a maximum number of jobs, a maximum number of attempts, a hard stop before dawn, and a pause switch that halts everything if a single file exists. Agents working overnight cannot spend money, cannot send anything to anyone, cannot touch a credential, and cannot publish. They can draft, measure, and report. Morning is a review: a human reads what the night produced, approves what is good, and the approvals are the fuel for the next day’s work.

    That is the whole philosophy. Governance is not the set of things your agents are allowed to do. It is the set of things they structurally cannot do while you are asleep, plus the evidence trail that lets you check everything else over coffee.

    What this is not

    This will not satisfy a compliance department, and it is not meant to. If you handle medical records or other people’s money under regulation, you need the paperwork kind too. But the paperwork kind alone will not save you from the ordinary failures — the believed report, the generous interpretation, the confident invented number — because those failures are not compliance failures. They are operating failures, and they happen at every scale, in shops with two people and in companies with two thousand.

    Start where the risk actually is. Give the agents no memory and no keys. Draw four doors and hold them. Verify at the receiving end. Write every failure down and make it a gate. Then run the 3 a.m. test on your own setup, honestly, and fix what it shows you. The framework can come later. The gate that catches the thing comes first.

  • The First Agent You Hire Answers the Phone

    The First Agent You Hire Answers the Phone

    Updated November 2, 2026 — added direct answers on how AI handles after-hours calls for a service business, from our own published work.

    Nobody’s first AI hire is a strategist. Ask a room full of operators what they’d hand off first and nobody says the thinking — they say the phone. The call that comes in at 6:40, after the office went dark at five. The form filled out at midnight, water coming through the kitchen ceiling. The lead that goes to whichever company answers first — and in home services, the first answer is very often the whole sale.

    That seat — first response — is where small businesses are actually hiring agents, and the money just said so out loud. On October 13, Dapta, an AI sales agent company out of Scottsdale and Miami, announced a $6 million seed round led by Chingona Ventures. Its agent, Dapti, answers, qualifies, and books the meeting the moment a prospect reaches out — no human touching it. Dapta says 200,000-plus users are on it, signing up at better than 4,000 a week, and that revenue will pass $4 million this year. Home services is one of the verticals where it took hold first.

    The seat, in a real shop

    First response in a small shop is a person-shaped hole. The owner answers between jobs, one glove off. The office manager answers until five. After five, a service answers, or nobody does, and the prospect — wet floor, search results page in hand — calls the next name on the list. It’s a staffing problem, not a marketing problem — one that shows up at the exact hours nobody wants to staff.

    The money makes it worse. On Google Local Services, a connected call that runs past twenty seconds can bill you whether a person picked up or not — you pay for the ring. And the caller isn’t comparison-shopping at leisure. They’re standing in water, or sleeping in a 90-degree house, and they hire the first competent voice that treats them like a person.

    What the agent can own outright

    The front half of the seat is script work, and script work is exactly what an agent is for. Answer instantly, at any hour, in the customer’s own language — Dapta got its start with Spanish-speaking owners in the U.S., and first response is meeting the customer where they are. Ask the basic qualifying set: what happened, where is it, when did it start, who is paying, how do we reach you. Then do what most shops fumble even in business hours: put a real appointment on a real calendar, confirmed where the customer can see it — not a callback promise the morning forgets.

    None of that requires judgment — just the script, the calendar, and the discipline to run both at 2 a.m. the way they run at 10 a.m., on the nights the office sits empty.

    What the human keeps

    Qualification questions are not qualification judgment, and the difference is the entire ballgame. The questions collect facts. The judgment decides what the facts mean: Is this a job we want — at this size, this distance, for this payer, with the crews already buried? A flooded kitchen ten minutes away and a “come look at a stain” forty minutes out both answer the questions perfectly. Only one of them should get your Saturday.

    The human also keeps pricing, promises, and the handoff. What a job costs is a person’s call, made with the board in front of them. “We’ll have a crew there by nine” is a promise only someone who knows the crew should make. And the moment a prospect stops being a lead and starts being a customer — when they need to hear a real person owns their problem — a person takes the conversation. The agent’s job is to make that moment arrive fast, facts collected and appointment real. It is not to be that moment.

    The failure shape

    Hand an agent the whole seat — the questions and the judgment both — and it will qualify everybody. It will book the estimate outside your service area because nothing told it distance matters. It will fill the calendar with meetings a person would have filtered in thirty seconds — and once your techs learn to distrust anything the system books, you have automated the exact problem you bought it to solve. The bad version doesn’t fail loudly. It fails as a slow leak — wasted drive time, stood-up appointments — until somebody turns it off and announces that AI doesn’t work.

    The seat works when its boundary is drawn, not when the model is smart. A boundary is a list: what it can ask, what it can book, what it can never promise, and where it stops and hands over. Dapta’s own framing stops at answer, qualify, schedule — first response, not the close. That is not a limitation. That is the product, correctly shaped.

    How can AI handle after-hours calls for a service business?

    For a service business, handling after-hours calls with AI is a matter of strict boundary design rather than conversational cleverness. When a pipe bursts or an AC fails after the office closes, an AI voice agent can own the front half of the intake seat outright: answering instantly at 2 a.m. in the caller’s language, running the structured qualifying questions (what happened, where is the property, when did the damage start, who is paying, and how to reach them), and booking a confirmed appointment on a live calendar instead of leaving an empty callback promise.

    What the AI agent cannot own is the judgment. As detailed in What the human keeps, human dispatchers must retain pricing, arrival promises (“we’ll have a crew there by nine”), and the decision of whether a job fits current crew capacity and service territory. The danger, as shown in The failure shape, is handing an agent both the script and the judgment: without hard boundaries, it books calls outside your territory, clogs the schedule with low-margin jobs, and creates a slow leak of wasted drive time until crews distrust the system. An effective after-hours setup treats the agent as first response—capturing verified facts and locking in the calendar slot—and hands off the data to an automated operational workflow so morning crews arrive with complete context.

    Hire it like a person

    You would never hand a new receptionist the phone on day one with no script, no boundary, and no “if it’s this, come get me.” An agent seat deserves the same three things, because it is the same hire: a script it runs word for word, a boundary it does not cross on its best day, and an escalation path that puts a human in the conversation the moment judgment enters.

    The $6 million is a bet that every small business staffs this seat the way it eventually got a website. The operators who get it right will not be the ones with the smartest agent. They will be the ones who wrote the seat down — job, boundary, and the name of the human who owns the judgment — before they let anything answer their phone.

    Sources: “Dapta Raises $6M to Accelerate the Adoption of AI Sales Agents for SMBs across the U.S. and Latin America,” Dapta LLC via GlobeNewswire, October 13, 2026 — globenewswire.com. User, signup-rate, and revenue figures are Dapta’s own statements in that release.

  • Move the Design System Before December 14 — the Chat Does Not Come With It

    Move the Design System Before December 14 — the Chat Does Not Come With It

    The standalone Claude Design site at claude.ai/design closes on December 14, 2026. After that date, the address opens Claude. Anthropic’s announcement gives the reason in one sentence: “Running two versions slows down fixes for both, so we’re folding the standalone site into Claude.”

    The migration that Anthropic offers moves design systems. It does not move projects. And the parts of your work that live only in the standalone product — the chats, the comments, the originals — have a deletion date, not a transfer path. This is the procedure for a team that has brand systems and client one-pagers in there, in the order the steps have to happen.

    What gets deleted, exactly

    Anthropic’s migration guide names the deletion list in two bullets: “Your chats with Claude” and “Comments on your projects and design systems.” Those stay in the standalone version and are deleted after it closes, per Anthropic’s data retention practices.

    Your originals are a separate statement, in the guide’s FAQ: they keep working in the standalone version until it closes on December 14, 2026, and “after that, they’re deleted.” A design system you migrate leaves its original behind in the standalone product, unchanged — and that original is on the same clock.

    Public links to standalone projects are a third outcome, and the guide words it differently on purpose: they “will no longer work after it closes.” Not deleted — dead. Every client you sent a public project link to holds a URL with an expiry date.

    The instruction Anthropic prints is the whole strategy for this section: save anything you need from your chats and comments before the standalone version closes. No fetched Anthropic page documents an export for chats or comments. The capture that matches the documentation is a screenshot of each comment thread and a copy of the chat text, done by hand.

    The dangerous sentence: “You don’t need to do anything with your projects yet”

    That sentence is in the migration guide, and it is true — your projects keep working in the standalone version until the close. It is also the sentence that will get client work deleted, because projects are the files with no migration path and a deadline.

    The Artifacts page in Claude lists up to 60 of your standalone projects, and they open in the standalone version. That list is a directory back into the product that is closing. It is not a move, and it is not a complete inventory if your team has made more than 60 projects. Anthropic’s position, in the guide’s words: “More details about moving your projects to Claude are coming soon.” Soon is doing a lot of work in that sentence, and December 14 is 56 days out.

    So the inventory step happens in the standalone product itself, not on the Artifacts list. Walk the standalone library for every client one-pager, deck, and brand system — including everything past the first 60 the Artifacts page shows.

    Before anyone clicks Migrate: the sharing problem

    One migration brings over every design system in your organization, including other people’s. It only needs to be started once — and anyone who can use Claude Design can start it, not just the organization’s owners. On individual plans there is no confirmation step at all: click, and it starts.

    The consequence that matters for a shop holding more than one client’s brand: “Published design systems that aren’t private will be shared with everyone in your organization and appear in their design system menu.” A system you published so your own projects would use it becomes an entry in every teammate’s menu the moment anyone runs the migration. On individual plans, nothing is shared — this is a team and organization trap, not a solo one.

    The precaution has to happen before the first click, because undoing it is not documented. In the standalone product, the setup guide names the Published toggle as the control that makes a system the organization’s working system. For every design system that should not appear in the whole organization’s menu, turn that toggle off first. A second migration is not a way back: a later run leaves an unchanged system alone and skips one that has changed inside Claude, so neither pass pulls a system out of the menu.

    Two kinds of systems do not migrate at all, no matter who clicks: “Empty design systems aren’t migrated, and neither are ones made from a built-in starter theme, even if you’ve edited them.” If your house brand began life as a starter theme you customized, the migration will silently leave it behind. There is no documented design-system export to fall back on. Copy the source assets out by hand before December 14.

    The export drill: one project, one zip

    There is no bulk download. Anthropic’s FAQ is blunt: “Not all at once. You can download them one at a time.” Open the project in the standalone version, click Share, choose “Project HTML” — for a slide deck, that item hides under “More formats and apps” — keep “Project archive” selected, and click Export.

    You get a .zip file with every file in the project. It is free and does not count toward your usage limits. Repeat it for every client one-pager and deck you cannot afford to lose, and store the zips outside Claude.

    Know what the zip is not. It is documented as every file in the project. Chats are on the deletion list, and no Anthropic page says the conversation comes along inside the archive. The zip preserves the files. The reasoning your team talked through in chat, and the client’s comments on the work, survive only if you captured them in the previous step.

    Enterprise: three switches, and one hard stop

    On Enterprise plans the migration is gated by settings that are easy to flatten into one wrong sentence, so take them separately. Artifacts themselves must be on — if they are off, people cannot migrate anything and will not even see the “Claude Design lives here now” banner.

    Design systems are a separate template switch: on for Team plans, off for Enterprise until an owner turns on Design systems in Organization settings > Artifacts. That is a different switch from Design and Slides, which Anthropic’s pages say were set to turn on by default on October 15, 2026 — a date that has now passed, with the help text still printing the scheduled sentence, so check your own settings rather than assuming either state. On plans with custom roles, each role also needs the Artifacts permissions, and a design system cannot be migrated if its owner’s role does not include design systems.

    The hard stop: “Organizations with zero data retention (ZDR) can’t turn on artifacts, so they can’t migrate.” If that is your organization, the migration procedure does not exist for you. The guide’s path is the per-project download, done before the close, one zip at a time.

    One more setting that does not do what an admin might hope: the Enterprise custom-retention article states that custom retention periods “do not apply to Claude Design.” The retention dial your organization already configured is not the instrument that keeps or deletes standalone chats, comments, or originals. The closure is.

    After it lands

    A migrated design system keeps its files as they were, and it cannot be hand-edited on its page yet. Its editors see the note: “Migrated from the standalone version. Ask Claude to make changes.” The editing model for a migrated brand system is a conversation, not a settings page.

    If someone edits a migrated system inside Claude and you later run the migration again, that system is listed under Skipped — “changed on claude.ai, left as they are” — so your edits are not overwritten. Replacing it with a fresh copy is a deliberate act: duplicate it first if the Claude-side changes matter, delete it in Claude, then migrate again.

    New design work lives in three doors now: any chat (ask for a design, or Output > Design in the message box), the Artifacts tab, and Claude Code, with /design to create, edit, and sync designs and /design-sync to pull in your design system. All of it draws on the same usage pool as the rest of Claude, including Claude Code — the separate weekly Claude Design allowance the product launched with is already gone, per the get-started guide.

    Two gaps in the new home are worth knowing before you move the team: Claude Design does not have version history yet, and inline comments there occasionally fail to appear on the page — Anthropic’s own workaround is to paste the feedback into the chat instead. The standalone product’s comment threads, the ones being deleted in December, are still the reliable record until you screenshot them.

    The order is the procedure

    Inventory in the standalone product. Turn off Published on anything that must not become an organization-wide menu entry. Mark the empty and starter-theme systems the migration will refuse, and copy their assets out by hand. Export every project that matters, one zip at a time. Screenshot the comments and copy the chats. Only then — owners having turned on Artifacts, Design systems, and the role permissions — does one person click Migrate, read the results window, and fix any failed system in the standalone product before running it again.

    Do those steps in that order and December 14 is a non-event: the address starts opening Claude, and everything you cared about is already there or already saved. Do them out of order — migrate first, inventory later — and the button will happily move the systems while the projects, comments, and originals sit in a product with 56 days left on it. We track vendor surface changes like this one on the desk because the procedure is always in the help pages; it is just never in the announcement. The announcement for this closure said chats and comments “won’t be available.” The help center is the text that says deleted.

    Sources: Anthropic’s migration guide, Migrate from standalone Claude Design to Claude, and the get-started guide, Get started with Claude Design, both read in full on October 19, 2026. A related surface change, worked the same way: Cursor’s shareable canvases, and how we check a vendor’s what’s-new claims in What’s New in Cursor Is a Claim.

  • Review the Run, Not the Diff: Cursor’s Shareable Canvases in a Fleet Loop

    Review the Run, Not the Diff: Cursor’s Shareable Canvases in a Fleet Loop

    What shipped on October 16

    Cursor’s changelog entry dated October 16, 2026 — “Cloud Agent Canvases and Environment Improvements” — is three short sections long, and one of them changes the shape of a finished run: “Cloud agents can now build interactive canvases as part of their work. Share a finished canvas with your team by sending its link.” That sentence is Cursor’s. Everything in this section is theirs, from that changelog entry and the Canvases page of their docs, read October 19, 2026.

    A canvas, in their docs, is an interactive artifact that renders next to the chat: a standalone view laid out with sections, stats, and tables, instead of a long markdown table or a code block to scroll through. Ask an agent for a dashboard, an analysis, an audit, or a report, and Cursor opens the result in a canvas when a visual view is the better fit. The canvas is saved to the workspace’s canvas list, so you can reopen it, edit it, and rerun it later with fresh data.

    Sharing is a publish, not a forward. From the canvas toolbar you Publish — which publishes a share or refreshes an existing one — then copy the link and send it. What the link opens is a live snapshot: the same layout, charts, and tables, without rerunning the agent and without digging through the chat history. Teammates open it in the browser with read-only access. A Shared Canvases page on the dashboard lists the shares you published yourself, so you can reopen, copy, or delete your own; it does not list a teammate’s shares — for those, you ask for the link.

    The same release carried two more items, logged here for completeness. The Environments API is available in beta: a programmatic way to create and manage the cloud environments agents run in. And the environments themselves grew: up to 300 repositories per environment, with large environments loading 5x faster — Cursor’s numbers, not measurements of ours. Neither item is this piece’s subject; both are on the desk’s check list.

    The gate is part of the story

    A canvas link is not a public link. The docs are explicit: anyone on your team can open the link in the browser. Only members of your team can open a share, and you need to be on a team to share at all. Sending the link outside the team sends a door the recipient cannot walk through — which makes the canvas a team surface, not a publishing surface.

    Sharing is also a paid-plan surface with conditions attached. Shares can be created on paid plans — Premium and higher, Teams, Enterprise, and the legacy Pro, Pro+, and Ultra tiers; free accounts cannot create shares. Sharing requires a privacy mode that allows data storage, so Legacy Privacy Mode blocks it. And a team admin can turn shared canvases off for the whole organization from team settings. A shop adopting the feature checks those three gates before it builds a habit on them.

    A snapshot is not the run itself. The canvas shows the view as published; the chat, the reasoning, and the diff stay behind it. When the underlying numbers move, the share does not move with them — refreshing it is another Publish. A reviewer who needs the execution record still goes to the record. The canvas is the board on the wall, not the flight recorder.

    Where it lands in our loop

    Our loop fits in one sentence: a work order is written with everything the executor needs, the agent flies it, and the result is debriefed at the receiving end — the live page checked in a browser, the delivered file opened, the count re-added by hand. The debrief is where quality is decided here, and its surface depends on the seat. A cloud run launched over the API hands back result text. A Desktop sitting hands back a transcript and screenshots at verification points, which this shop trusts over any summary.

    A canvas inserts a third surface into that debrief: the agent arranges its own evidence — sections, stats, tables — into the board the reviewer actually opens. For the data-heavy work this shop runs constantly — citation pulls, model-catalog diffs, site audits — a rendered board is the shape the answer wanted anyway. Cursor’s docs make the same point from their side: canvases earn their keep on data-intensive tasks, where information arranged non-linearly is easier to digest than a wall of text.

    The approval moment in this shop is a tap on finished work. Will reviews results, not work in progress, and the decision lands on an artifact he can read in one pass. A canvas link is the first Cursor surface shaped exactly like that decision: open the link, read the board, decide. No repo, no diff, and no IDE sits between the finished result and the person approving it.

    The lane question the feature raises is a seat question. What reaches Stefani and Ziggy today is finished artifacts — live pages, PDFs, one-line summaries — because they work outside the operator’s seat. A canvas would be the cheapest of those artifacts to produce and the easiest to read, if the recipients hold team seats. The docs make team membership the door, so who holds a seat becomes a setup decision to make on purpose — not an assumption to discover after a link bounces off someone it was meant for.

    What is not established, labeled plainly: our production lane launches cloud agents over the API and receives text back. The docs describe canvases in the app surfaces — the Agents Window, the canvas toolbar, the dashboard. Whether a run launched through the API can produce a canvas, or return a share link, is not in the docs we read and not in our records. That question goes on the check list. It does not go into the workflow.

    One more mapping, labeled as intent rather than record. The docs say common canvas workflows can be packaged as skills, so every run that uses the skill returns the same output shape. In this shop’s language, that is a debrief template: the same board for every fleet run — what was asked, what landed, what the counts say, what failed. A debrief-canvas skill is the first experiment this change earns here. It has not run yet.

    Our record, stated plainly

    No canvas has appeared in our runs yet. Our run record — every cloud agent this desk has launched, reconciled from the API and watched daily — contains no canvas artifact and no share link as of October 19, 2026. The only “canvas” in that record is an agent named for a Google Maps canvas, a different sense of the word, and a standing reminder to grep carefully before claiming a first.

    So this piece is a map, written before the landing: what the feature is on the vendor’s own pages, what its gates are, and where it would sit in a loop that already exists. The check is decided. The next data-heavy Desktop sitting asks for its debrief as a canvas, by name, and the canvas gets read against the same sitting’s transcript — the surface we trust — before the desk adopts it anywhere. If the board and the record disagree, the record wins, and the disagreement gets written down on this page with a date.

    Method & settings — this piece

    Sources: Cursor changelog, entry dated October 16, 2026; Cursor Docs, “Canvases” (read October 19, 2026). Vendor facts are stated as the vendor’s; the secondary write-ups that surfaced this item were used as leads only, never as sources

    Our surfaces in this mapping: Desktop 3.25.9 on the laptop (read from the install itself, October 19, 2026); cloud agents over the API (model catalog baseline 46 models, October 16, 2026)

    Our canvas record: none — no canvas artifact or share link in our run record as of October 19, 2026. This is a mapping piece, not a hands-on report

    Desk rule: every fact carries its provenance and date — our record, or Cursor’s page, never blended

    Filed under the Cursor desk — the desk that runs Cursor as a production harness.

  • The Meta Model API, As We Run It

    The Meta Model API, As We Run It

    From the Tygart Media Meta desk — our own API key, our own test envelope, our own receipts. Desk home: Meta AI, Run in the Open.

    Every vendor will sell you an API with a launch post. What a working shop needs is duller and more valuable: does it answer, does it finish real work, what does it cost to find out, and what stupid thing will eat your first afternoon? On October 14, 2026, we wired Meta’s Model API into our own tooling and ran it. Here is the whole story, including the part where we blamed the API for our own mistake.

    The setup: one key, stored like it matters

    Meta’s developer platform is dev.meta.ai. You make a key in the dashboard, you put it in a vault — ours lives in our credential store, injected into the process only at run time, never written to disk, never pasted into a chat. Billing rides a partner-controlled card with a hard $25 test envelope on it. That envelope is a deliberate choice: a new platform earns production trust in stages, and stage one is “prove it works for pocket change.”

    The first check cost nothing: list the models. Our key read Meta’s catalog clean — nine models, from Muse Wonder down to a segmentation model we still haven’t touched. A key that can read the catalog is a key that works; everything after that is about the work, not the wiring.

    The proof: a work-order-shaped task, 52 seconds

    We pointed OpenCode — an open-source terminal agent, version 1.19.0 — at Meta’s API as an OpenAI-compatible provider, and handed Muse Spark 1.3 the kind of job this shop hands every seat: a written spec (SPEC.md), from which it had to produce a working Python module (a slug utility) plus a pytest suite covering it. Not a riddle, not a benchmark — a small, real, verifiable unit of work with a pass/fail at the end.

    Spark 1.3 finished in about 52 seconds. Mid-run it discovered pytest wasn’t installed in its environment, provisioned its own virtual environment, installed what it needed, and ran its tests: 8 of 8 passing. Then we did what we do with every seat’s output, including our own: we didn’t take its word. We re-ran the suite ourselves, added five extra cases of our own, read the code line by line. All green, code clean. Total damage to the $25 envelope across the entire day’s probing of every text model on the account: under two cents.

    The gotcha: our first failure was not Meta’s

    The first attempt “failed.” Silently. No error, no output — the run simply never came back. The natural conclusion is that the shiny new API is broken. The actual cause: opencode run hangs forever when its standard input is left open in a non-terminal session. Run it with stdin closed — </dev/null — and it works perfectly. No API fault, no key fault; a harness quirk that cost us one debugging cycle and taught us, again, the oldest lesson in this shop: when a new platform “fails,” check your own plumbing before you write the platform off. We’re printing the gotcha in the desk’s first article on purpose. The next shop that wires this API deserves to skip our lost afternoon.

    One API, three dialects — and why a shop should care

    The most consequential thing about Meta’s API is not any single model. It’s that the same key speaks three protocols: OpenAI’s Chat Completions, OpenAI’s Responses API, and Anthropic’s Messages API. Meta’s own quickstart documents pointing Claude Code at api.meta.ai by changing a base URL, Codex at the Responses surface, and OpenCode at the OpenAI-compatible endpoint — all with the one key.

    For a shop, that collapses a real cost. Harnesses are habits: your prompts, your permissions, your work-order formats, your muscle memory. A model provider that demands a new harness taxes every one of those. A provider that plugs into the harness you already run lets you spend your evaluation budget on the only question that matters — is the model any good at your work? It’s also a discipline on the provider: when switching is cheap, the model has to win on merit every month, not on lock-in. We like platforms that volunteer for that test.

    Two quirks worth knowing before your first loop. Reasoning is mandatory on these models: settings like reasoning_effort: "none" come back as errors rather than being quietly ignored, so sloppy OpenAI drop-in code can fail loudly — better than silently, but plan for it. And reasoning tokens burn against your output cap, so set generous maximums; a tight cap buys you empty replies, as our census probes found out so yours don’t have to.

    What this does not prove — yet

    One 52-second task proves the route works and the model can finish a small job cleanly. It does not prove Wonder’s ceiling, anyone’s reliability across a month of autonomous loops, or behavior under production load — and this desk won’t claim otherwise. The head-to-head that would actually settle the seat question — Composer vs. Spark in Cursor vs. Wonder through this API, same work order, same scoring — is scheduled and unrun, and it’s named that way on the desk’s front page. When it runs, it lands here, numbers and all, whichever way it cuts.

    Prices, tiers, and the one discount that should make you read the fine print twice are on the desk’s pricing page: Meta Model API Pricing & Limits.

  • What’s New in Cursor Is a Claim. Here’s How We Check It.

    What’s New in Cursor Is a Claim. Here’s How We Check It.

    A changelog entry is a claim

    When a platform ships an upgrade, the changelog tells you what the vendor wants you to believe about it. Sometimes the claim is the whole story. Sometimes the feature is real and irrelevant to your work. Sometimes — the dangerous case — something you depend on moved and the entry is three lines long. A shop that builds on a harness needs a discipline that sorts those three piles. This is ours.

    The loop, in order

    • Watch. Two daily diffs: the model catalog (running since October 16, 2026) and the changelog itself (from today). Change-only reporting — silence means nothing moved, and a failed watch reports itself once rather than going quietly blind.
    • Read against our record. Every real change gets one question: does it touch a surface we run — Desktop sittings, the cloud API, mobile steering, or a model our routing names? If not, it is logged and skipped, however shiny.
    • Check before adopting. A change that touches the harness earns a check against a known quantity — a brief we have already graded, a sitting pattern we already run. The check’s result, not the changelog’s adjectives, decides what changes in our work-order kit.
    • Write it down, dated. The desk pages update with the date of the change and the date of our check. A claim we repeated and later found wrong gets corrected in place, with the correction visible.

    This week’s page, sorted by the discipline

    Cursor’s changelog top, as of October 19, 2026 (entry dates October 16 and 13 at the head of the page): cloud-agent entries lead — canvases from cloud agents, an environments API. Those matter here, because cloud agents are a production lane for us; they go on the check list. A remote-control entry — see and reply to local agents from the iOS app, in Cursor’s description — matters specifically to a shop whose sittings run on one laptop: it changes how a sitting can be supervised, so it gets read carefully before it gets used. A marketplace launch and a pair of shipping bots are logged-and-skipped for now: real, announced, and not touching our record yet. Those descriptions are Cursor’s; the sorting is ours.

    Say where each fact came from

    One habit does more for a desk’s credibility than any other: provenance on the page. The changelog currently shows entry dates but no Desktop version string — so this desk’s version knowledge does not come from the changelog. It comes from reading our own install (3.25.9, October 19, 2026). When the basis of a number is our fleet, we say fleet. When it is the vendor’s page, we say vendor. A reader who can tell which is which can trust both.

    That is the whole method: vendor claims in, checked knowledge out, dates on everything. The watches are cheap. The discipline is the product.

    Method & settings — this piece

    Watches: Model-catalog diff (daily since October 16, 2026) + changelog diff (daily from October 19, 2026); change-only; failures reported once

    Sorting rule: Touches a surface we run = check list. Otherwise logged and skipped. Vendor descriptions labeled as the vendor’s

    Desk rule: Every fact carries its provenance and date — our record, or Cursor’s page, never blended

    Filed under the Cursor desk — the desk these watches feed.

  • Composer 2.5 Is Our Code Seat. Here’s Its Record.

    Composer 2.5 Is Our Code Seat. Here’s Its Record.

    Why Composer holds the code seat

    Every work order this shop writes names its executor up front — the model, the seat, and what happens if that seat is unavailable (stop; never substitute quietly). For code, the name on the order is Composer 2.5, Cursor’s own model. It did not get the seat by brand. It got it on a board we ran ourselves.

    The board: October 16, 2026

    Our fleet comparison put the models on one identical brief and graded the work. In the initial trio — Grok 4.7, Composer 2.5, and Auto — all three scored perfectly, and Composer was the fastest of the three: 31 seconds, 13 cents. Across the full board it was the fastest model tested, full stop, while identical perfect scores elsewhere on the board cost up to 86 cents. Speed with a perfect score is exactly the profile a code seat wants: code work is iterative, and iteration speed compounds.

    The same board explains the seat Composer does not hold. Our first pass — the wide, cheap, read-everything pass — belongs to GLM 5.3 Flash, which produced its perfect score for 0.83 cents. A hundred-fold cost spread for the same correct answers is the whole argument for routing by evidence instead of by logo: Composer where its speed pays, GLM where its price pays, and the receipts to say which is which.

    What we have put through it

    Through Desktop sittings, Composer executes the shop’s build work: fleet website builds and repairs across our WordPress properties, the Work Order Desk application (a BMAD+ build whose doctor checks pass 35 of 35), and the tooling runs in between. The work-order standard it runs under is not a prompt and a prayer — it is an unaided first pass in its own words before any templating, a permissions pre-flight, ship/hold boundaries stated in the order, and evidence graded on its timestamped trail plus screenshots at the verification points.

    The dents, on the record

    • The seat is bounded by the order. Our standing rule exists because it was earned: a work order that comes back with questions is a work order that was not finished. Composer executes what the order covers — gaps in the order surface as gaps in the run.
    • The real gates stay human. Sends, deletions, money, and credentials are never pre-approved for any executor. Composer stops there by design, and that is a feature of the harness, not a limit of the model.
    • The pipeline around it can bruise the output. In one October sitting, deliverables written through the Windows pipeline came back with mojibake on the em-dashes; the fix was ours to make — UTF-8 stated explicitly in every work order since. Blaming the model for a harness defect is how shops learn nothing.

    Cursor describes Composer as its in-house model family built for agentic coding — that is their claim, labeled as theirs. What this desk can vouch for is narrower and, we think, worth more: on our briefs, on our board, at our volume, it is the fastest pair of hands we have measured, and the record above is the whole of why it holds the seat.

    Method & settings — this piece

    Comparison: One identical brief across the fleet’s models, October 16, 2026; graded on output and execution trajectory; Composer 2.5: perfect score, 31 s, 13¢

    Seats: Composer 2.5 = code executor (Desktop sittings); GLM 5.3 Flash at max = first pass; Grok 4.7 = deep-verification seat — all three on Will’s Cursor plan

    Work-order standard: WO-198: execution model first, unaided first pass, permissions pre-flight, evidence = timestamped trail + screenshots

    Filed under the Cursor desk.

  • The Cursor Model Catalog, Watched Daily

    The Cursor Model Catalog, Watched Daily

    Your stack includes a list you didn’t write

    Every shop building on AI agents has a dependency it rarely names: the model catalog. Which models exist, what they are called, which variant is the default, what the reasoning dial offers — all of it is set by the platform, and all of it can change overnight. If your routing doctrine names a model, the catalog is part of your infrastructure. We diff ours every morning.

    The baseline: 46 models, October 16, 2026

    The watch started with a full pull of Cursor’s model list through the API on October 16, 2026: 46 models. Each model is normalized the same way every day — its id, its display name, the values its reasoning parameter offers, and which variant is marked default. The GLM family that day, the family our first pass rides on:

    • GLM 5.2 — reasoning: high, max — default: high
    • GLM 5.3 — reasoning: low, high, max — default: max
    • GLM 5.3 Flash — reasoning: low, high, max — default: max

    That last line is load-bearing. Our first-pass doctrine is GLM 5.3 Flash at reasoning set explicitly to max on every launch. The explicit set is not ceremony: the day a platform quietly changes a default is the day your output changes and nobody knows why. A daily diff turns that silent event into a dated line in a changes log.

    What a catalog change actually does to a shop

    • A model arrives: it earns nothing until it runs the identical brief against the incumbents. New seats are tested, never adopted on a changelog’s say-so.
    • A model leaves: every doctrine that names it has a hole. The diff tells you the morning it happens, not the week a job starts failing.
    • A default changes: the most dangerous entry in the catalog, because nothing in your own setup moved. This is the change the watch exists to catch.
    • A dial gains a setting: a reasoning value appearing or vanishing changes what your pinned configuration even means.

    The trap in the easy route

    One tooling lesson from building this watch, offered free: the convenient command-line listing of the catalog truncates at roughly 6 KB — a partial catalog that looks complete. The full list only comes through the raw API call. A shop reading the truncated output believes it is watching 46 models while seeing a fraction of them. Whatever you monitor, monitor the untruncated source.

    The watch reports changes only. Silence means the catalog is what it was yesterday — and if the API itself fails, the failure is reported once, out loud. A blind watch is worse than a noisy one.

    Method & settings — this piece

    Baseline: Full model-list pull via api.cursor.com/v1, October 16, 2026: 46 models total, 3 GLM

    Normalization: id, displayName, reasoning parameter values, default variant — compared field by field against the stored snapshot

    Cadence: Daily, change-only reporting; failures reported once

    Full method: The same watch pattern guards our GLM doctrine — see the GLM desk

    Filed under the Cursor desk.

  • Desktop, Cloud, or API: One Cursor Harness, Three Seats

    Desktop, Cloud, or API: One Cursor Harness, Three Seats

    The seat is a routing decision

    Cursor is not one tool in this shop. It is three seats that share a harness — a Desktop app on a laptop, cloud agents behind an API, and a phone — and picking the wrong one wastes the day in a characteristic way. Desktop waits on a human. The cloud knows nothing about your logged-in life. The phone is a steering wheel, not a workbench. The routing rule we run: the seat is decided by where the work’s context lives.

    Desktop wins when the unlock is a logged-in browser

    A Desktop sitting is a supervised run: a written work order, an executor (Composer 2.5 in our shop) that makes an unaided first pass in its own words before any templating, and a human in the room for the real gates. Its superpower is everything the laptop already is — signed-in dashboards, the WordPress admin, the GA4 Advisor, the files on disk. When a fleet site needs hands inside a web UI that only exists behind Will’s login, no API lane substitutes.

    We learned the boundary the hard way. On October 18, an executor stopped cold at a site’s login redirect and left the step undone — which cost that sitting its unlock path. The standing rule now: in a sitting on Will’s own laptop, the executor clicks through sign-ins using the browser’s saved session. Saved-login only. No saved login means the step logs a HOLD — nobody hunts a password, ever.

    Desktop’s honest cost: it waits on a human, and a queued sitting is not a running job. Our TM pricing diagnosis (WO-353) has sat untouched since October 18 at 6:16 PM — steps written, folder staged — because a sitting starts when Will sits down. Anyone who tells you their Desktop pipeline is autonomous has not watched a folder sit still for a day.

    The cloud wins when the work fans out

    Cloud agents, launched from this desk over api.cursor.com, are the opposite shape: no login, no laptop, no waiting room — and they multiply. On October 16 we ran a census through that API: 44 models, one identical brief, five comparison rounds, graded on their execution trajectories. That is a shape of work a single Desktop seat cannot do before lunch, and it set our model routing for everything since.

    The scale shows in the bookkeeping: our completion watcher has seen 1,431 cloud agents come and go. The API runs two launch shapes for us — repo tasks that come back as pull requests, and no-repo research and evaluation runs with the model pinned in the launch body. The API is beta, and we treat it that way: when an endpoint changes shape, the error gets surfaced plainly, never papered over with invented fields.

    Mobile wins when the human is the bottleneck

    The phone’s job is judgment at human speed. Will reviews runs, reads results, and steers from his phone while the machines work elsewhere — and because a review that evaporates is a review wasted, a distiller folds his mobile and Desktop runs into the shop’s memory and Feed every 20 minutes. Mobile is not a production surface here. It is where the approvals live, and approvals are the scarcest resource in the building.

    What each seat’s failure taught the kit

    • Desktop: permission prompts were taxing the one human in the loop — fixed by a Step 0 permissions pre-flight in every work order (October 18): the executor declares the commands it expects up front, the human approves once, and prompts are reserved for sends, deletions, money, and credentials — which are never pre-approved.
    • Cloud: a finished summary is not evidence — fixed by trajectory grading and a completion watcher: results are verified at the receiving end, or they are not results.
    • Mobile: steering from the phone only counts if it lands in the record — fixed by the 20-minute distiller.

    One harness, three seats, and a routing rule a shop can steal: if the context is a login, sit down at Desktop. If the work fans out, launch it in the cloud. If the blocker is a decision, put it on the phone.

    Method & settings — this piece

    Evidence: This shop’s work-order record, October 2026: WO-198 standard, the WO-343 and WO-348 sittings, the WO-353 stall, the October 16 cloud census

    Desktop: Cursor 3.25.9 on Will’s laptop (read from the install, October 19, 2026); executor seat Composer 2.5

    Cloud: api.cursor.com/v1 (beta); completion watcher count 1,431 agents seen as of October 18, 2026

    Mobile: Cursor mobile app in a review/steer role; runs distilled into memory + Feed every 20 minutes

    Filed under the Cursor desk — where the catalog and the changelog are watched daily.