[{"data":1,"prerenderedAt":2610},["ShallowReactive",2],{"site-nav-content":3,"blog:/blog/loop-vs-rpa":179,"blog-index-copy":959,"blog:/blog/loop-vs-rpa:surround":980,"hiring-banner-content":2579,"site-cta-content":2591},{"header":4,"productNav":9,"nav":42,"footer":61,"askAI":132,"id":163,"title":164,"archived":165,"authors":166,"badge":166,"body":167,"date":166,"definedTerm":166,"department":166,"description":171,"extension":174,"eyebrow":166,"faqHeader":166,"faqs":166,"footerBand":166,"headline":166,"image":166,"industry":166,"jobType":166,"listed":131,"location":166,"navigation":131,"openRoles":166,"pageLayout":166,"path":175,"relatedHeading":166,"seo":176,"series":166,"sitemap":165,"status":166,"stem":177,"subhead":166,"tags":166,"video":166,"whyJoin":166,"workplaceType":166,"__hash__":178},{"productLabel":5,"loginLabel":6,"contactLabel":7,"contactSalesLabel":8},"Product","Log in","Contact","Get started for free",[10,14,18,22,26,30,34,38],{"label":11,"to":12,"description":13},"Overview","/overview","Seven layers. One closed loop.",{"label":15,"to":16,"description":17},"Conflux","/product/conflux","Where your team, workstreams, and agents meet.",{"label":19,"to":20,"description":21},"Agent Teams","/product/agent-teams","Specialist teams - governed from day one.",{"label":23,"to":24,"description":25},"Lifecycle Graph","/product/lifecycle-graph","Intelligence that compounds across every interaction.",{"label":27,"to":28,"description":29},"Company Wiki","/product/wiki","Playbooks and policies where expertise stays.",{"label":31,"to":32,"description":33},"Workstreams","/product/workstreams","From brief to signed-off deliverable on one canvas.",{"label":35,"to":36,"description":37},"Perception Console","/product/perception","Ask your whole business in plain English.",{"label":39,"to":40,"description":41},"Governance","/product/governance","Frontier AI you can actually sign off on.",[43,46,49,52,55,58],{"label":44,"to":45},"Models","/models",{"label":47,"to":48},"Pricing","/pricing",{"label":50,"to":51},"Integrations","/integrations",{"label":53,"to":54},"Security","/security",{"label":56,"to":57},"Partners","/partners",{"label":59,"to":60},"Insights","/blog",{"productHeading":5,"companyHeading":62,"resourcesHeading":63,"legalHeading":64,"docsLabel":65,"docsUrl":66,"statementLines":67,"copyright":70,"companyLinks":71,"resourcesLinks":86,"legalLinks":102,"socialLinks":109,"bottomLinks":119},"Company","Resources","Legal","Docs","https://docs.gonimbus.ai",[68,69],"Stop training someone else's model.","Control your AI.","© 2026 Nimbus Intelligence, Inc. All rights reserved.",[72,73,74,75,76,78,81,84],{"label":47,"to":48},{"label":50,"to":51},{"label":53,"to":54},{"label":59,"to":60},{"label":77,"to":57},"Partner Program",{"label":79,"to":80},"Careers","/careers",{"label":82,"to":83},"System status","/status",{"label":7,"to":85},"/contact",[87,90,93,96,99],{"label":88,"to":89},"Glossary","/glossary",{"label":91,"to":92},"Compare","/compare",{"label":94,"to":95},"Evaluate","/evaluate",{"label":97,"to":98},"Problems","/problems",{"label":100,"to":101},"Use cases","/use-cases",[103,106],{"label":104,"to":105},"Terms of Service","/terms",{"label":107,"to":108},"Privacy Policy","/privacy",[110,113,116],{"label":111,"href":112},"LinkedIn","https://www.linkedin.com/company/gonimbusai/",{"label":114,"href":115},"X","https://x.com/gonimbusai",{"label":117,"href":118},"Instagram","https://www.instagram.com/gonimbus_ai/",[120,122,124,127,128],{"label":121,"to":105},"Terms",{"label":123,"to":108},"Privacy",{"label":125,"to":126},"Compliance","/compliance",{"label":82,"to":83},{"label":129,"to":130,"external":131},"LLMs.txt","/llms.txt",true,{"text":133,"prompt":134},"Ask AI about Nimbus",{"I'm researching enterprise intelligence platforms and want to know how Nimbus combines perception, collaboration, and autonomous agents to drive strategic decision-making":135,"platforms":137},{" Summarize the highlights from Nimbus's website":136},"https://gonimbus.ai",[138,143,148,153,158],{"name":139,"label":140,"icon":141,"hrefPrefix":142},"chatgpt","ChatGPT","simple-icons:openai","https://chatgpt.com/?prompt=",{"name":144,"label":145,"icon":146,"hrefPrefix":147},"perplexity","Perplexity","mdi:magnify","https://www.perplexity.ai/search/new?q=",{"name":149,"label":150,"icon":151,"hrefPrefix":152},"grok","Grok","simple-icons:x","https://x.com/i/grok?text=",{"name":154,"label":155,"icon":156,"hrefPrefix":157},"claude","Claude","simple-icons:anthropic","https://claude.ai/new?q=",{"name":159,"label":160,"icon":161,"hrefPrefix":162},"google-ai","Google AI","simple-icons:google","https://www.google.com/search?udm=50&aep=11&q=","content/shared/nav.md","Site navigation",false,null,{"type":168,"value":169,"toc":170},"minimark",[],{"title":171,"searchDepth":172,"depth":172,"links":173},"",2,[],"md","/shared/nav",{"title":164,"description":171},"shared/nav","1dD7ahDRl0SQ4hz53-kKo0tEFrGaLuaztZ3PPfp6a9k",{"id":180,"title":181,"archived":165,"authors":182,"badge":185,"body":187,"date":933,"definedTerm":166,"department":166,"description":934,"extension":174,"eyebrow":166,"faqHeader":935,"faqs":938,"footerBand":166,"headline":166,"image":166,"industry":166,"jobType":166,"listed":165,"location":166,"navigation":131,"openRoles":166,"pageLayout":166,"path":951,"relatedHeading":166,"seo":952,"series":953,"sitemap":131,"status":166,"stem":954,"subhead":166,"tags":955,"video":166,"whyJoin":166,"workplaceType":166,"__hash__":958},"content/blog/loop-vs-rpa.md","Loop vs RPA",[183],{"name":184,"to":136},"Nimbus Research",{"label":186},"Explainer",{"type":168,"value":188,"toc":923},[189,210,213,216,256,264,273,276,281,289,305,308,334,337,363,366,398,401,405,412,440,452,460,471,487,491,602,618,664,668,671,698,705,708,716,720,723,753,761,768,772,778,784,793,803,813,817,820,858,861,864,886,899,903,916,919],[190,191,192,193,200,201,205,206,209],"p",{},"Robotic process automation records clicks on screens. A standing-order loop records a recipe that runs when a signal fires, skips when nothing changed, and leaves a run page. ",[194,195,199],"a",{"href":196,"rel":197},"https://www.gartner.com/reviews/market/robotic-process-automation",[198],"nofollow","Gartner defines RPA"," as software that automates tasks by using scripts that emulate human interaction with an application user interface. That definition is honest about the superpower — ",[202,203,204],"strong",{},"any screen"," — and the weakness — ",[202,207,208],{},"the screen",".",[190,211,212],{},"The two categories are cousins, not synonyms. Both sit above systems of record. Both can run unattended. Both fail when nobody owns the definition of the job. They fail for different mechanical reasons, and programmes that collapse them into “automation” spend years fixing the wrong fragility.",[190,214,215],{},"Three adjacent nouns, so they do not leak into this comparison:",[217,218,219,235,245],"ul",{},[220,221,222,225,226,230,231,209],"li",{},[202,223,224],{},"Loop."," Compiled repeat work with triggers and a run page. See ",[194,227,229],{"href":228},"what-is-loop-engineering","loop engineering"," and ",[194,232,234],{"href":233},"six-things-that-start-a-loop","six things that start a loop",[220,236,237,240,241,209],{},[202,238,239],{},"Eval loop."," Independent verification that a job finished — not UI replay, not a trigger. See ",[194,242,244],{"href":243},"eval-loops-for-enterprise-agent-harnesses","eval loops for enterprise agent harnesses",[220,246,247,250,251,255],{},[202,248,249],{},"Agentic workflow."," A person-designed sequence with stops — often interactive. See ",[194,252,254],{"href":253},"what-is-an-agentic-workflow","what is an agentic workflow",". Different from both RPA and loops.",[190,257,258,263],{},[194,259,262],{"href":260,"rel":261},"https://www.ibm.com/think/topics/rpa",[198],"IBM’s explainer on robotic process automation"," describes the same pattern in plainer language: software robots execute repetitive office tasks by interacting with applications the way a person would — extracting data, filling forms, moving files. IBM is also careful to separate process-driven replay from data-driven AI. That split is the educational core of this page. A bot follows a recording. A standing-order loop follows a recipe attached to a signal. A model, if it appears at all, is an optional step for messy reads — not the reason the job exists.",[190,265,266,267,272],{},"This is not a hit piece on UiPath, Automation Anywhere, Blue Prism, or desktop flows in Power Automate. Those products built real value on a real constraint: when the only path into a 1990s terminal or a thick-client ERP is click-type-click, RPA is still the right hammer. ",[194,268,271],{"href":269,"rel":270},"https://www.deloitte.com/us/en/insights/topics/talent/intelligent-automation-2022-survey-results.html",[198],"Deloitte’s Global Intelligent Automation survey"," found RPA in the mainstream — seventy-four percent of respondents were already implementing it — and also found that toolkits widen because one technology does not cover the work. Integration debt, not model quality, is what usually caps scale.",[190,274,275],{},"The mistake is using the hammer when the job already has an API, a webhook, or a file drop — and then calling the recording “AI transformation.”",[277,278,280],"h2",{"id":279},"what-rpa-is-as-a-category","What RPA is, as a category",[190,282,283,284,288],{},"RPA’s contract is the user interface. A person performs a task; a recorder or a low-code author turns that performance into a script; a runtime called a bot or robot executes the script against the same screens. Gartner’s wording matters: the executable is the robot; the thing being automated is a ",[285,286,287],"em",{},"task"," inside a process, not necessarily the process end to end.",[190,290,291,292,297,298,301,302,304],{},"That is why IBM’s companion note on ",[194,293,296],{"href":294,"rel":295},"https://www.ibm.com/think/topics/rpa-types",[198],"types of RPA"," is worth reading even if you never buy IBM. The piece argues that “robotic ",[285,299,300],{},"process"," automation” is partly a misnomer — the technology is often robotic ",[285,303,287],{}," automation — and that orchestration across humans, decisions, and multiple automations is a different job, closer to business process management. Standing-order loops live on that orchestration side of the line: they care about the signal, the skip, and the run, not about whether the fetch happened by API or by a leftover bot.",[190,306,307],{},"RPA shines in constrained, UI-only environments:",[217,309,310,316,322,328],{},[220,311,312,315],{},[202,313,314],{},"Legacy green-screen or thick-client ERP"," with no stable API",[220,317,318,321],{},[202,319,320],{},"High-volume, low-variance data entry"," where the steps never change and the screen rarely does",[220,323,324,327],{},[202,325,326],{},"Short-lived bridge automation"," while IT delivers a proper integration",[220,329,330,333],{},[202,331,332],{},"Attended automation"," where a person still drives the session and the bot takes the repetitive keystrokes",[190,335,336],{},"Operator virtues of a mature RPA programme are real:",[217,338,339,345,351,357],{},[220,340,341,344],{},[202,342,343],{},"Deterministic steps"," when the UI cooperates",[220,346,347,350],{},[202,348,349],{},"A central bot inventory",", if the CoE actually has one",[220,352,353,356],{},[202,354,355],{},"Audit logs of bot accounts",", if IT enforces service identities instead of shared logins",[220,358,359,362],{},[202,360,361],{},"Speed to a first automation"," when the alternative is a twelve-month interface project",[190,364,365],{},"Operator failures everyone has seen are also real:",[217,367,368,374,380,386,392],{},[220,369,370,373],{},[202,371,372],{},"Brittle selectors"," — CSS changes, A/B tests, localisation, a vendor’s “minor” redesign",[220,375,376,379],{},[202,377,378],{},"Timing flakes"," — load spinners, network blips, a pop-up that was not on the recording",[220,381,382,385],{},[202,383,384],{},"No skip semantics"," — the bot runs, clicks through zero rows, and emails success",[220,387,388,391],{},[202,389,390],{},"Outcomes in bot logs",", not on a roster-facing run page",[220,393,394,397],{},[202,395,396],{},"Shadow bots"," on personal laptops when the IT backlog is measured in quarters",[190,399,400],{},"Deloitte’s survey is useful because it normalises the second list. Organisations started with RPA and OCR, got value, then hit the limit of automating the current process with one or two tools. The response was a wider toolkit and, often, process redesign. That is the mature reading. The immature reading is “replace the CoE with agents.”",[277,402,404],{"id":403},"what-a-standing-order-loop-is-as-a-category","What a standing-order loop is, as a category",[190,406,407,408,411],{},"A loop is a ",[202,409,410],{},"standing order"," in the company’s automation library:",[217,413,414,422,428,434],{},[220,415,416,419,420,209],{},[202,417,418],{},"Triggers"," — schedule, file, data change, drop, ping, run now. See ",[194,421,234],{"href":233},[220,423,424,427],{},[202,425,426],{},"Recipe"," — the trusted sequence, versioned, replayable",[220,429,430,433],{},[202,431,432],{},"Run page"," — what ran, skipped, produced, notified",[220,435,436,439],{},[202,437,438],{},"Skip when nothing changed"," — quiet success is success",[190,441,442,443,446,447,451],{},"Loops prefer structured paths: a CRM field changed, a file hash matches last week, a billing webhook is idempotent. When inputs are messy — a PDF allowance list, a scanned statement — a loop may include a ",[202,444,445],{},"bounded"," model step, then return to deterministic writes with ",[194,448,450],{"href":449},"what-is-write-back-governance","write-back governance",". The model is not the loop. The loop is the standing order that decided to call a reader.",[190,453,454,455,459],{},"Compare ",[194,456,458],{"href":457},"loop-vs-workflow-vs-agent","loop vs workflow vs agent",": loops compile repeat work; agents reason on novel paths; workflows carry explicit human stops. RPA is a fourth cousin — UI replay — not a substitute for any of the three. If you only remember one sentence from this page, remember that.",[190,461,462,465,466,470],{},[202,463,464],{},"Operator test from"," ",[194,467,469],{"href":468},"how-to-evaluate-loop-engineering","how to evaluate loop engineering",": run ten times with empty inputs. Do you get ten skipped run pages — or ten green checkmarks that lied? RPA programmes often fail that test because “the script finished” is treated as success. Finishing a script that had nothing to do is how Finance learns to ignore the 6am email.",[190,472,473,478,479,482,483,486],{},[194,474,477],{"href":475,"rel":476},"https://www.mckinsey.com/capabilities/quantumblack/our-insights/the-state-of-ai",[198],"McKinsey’s 2025 State of AI"," is not an argument to rip out RPA. It is an argument to stop treating screen bots as the only automation language while models make ",[202,480,481],{},"reading"," cheap and ",[202,484,485],{},"governed writes"," remain hard. Usage without redesign is the survey’s recurring theme. Redesign, for repeat work, looks like a recipe library with start conditions — not a larger bot farm.",[277,488,490],{"id":489},"side-by-side","Side by side",[492,493,494,510],"table",{},[495,496,497],"thead",{},[498,499,500,504,507],"tr",{},[501,502,503],"th",{},"Question",[501,505,506],{},"RPA",[501,508,509],{},"Standing-order loop",[511,512,513,525,536,547,558,569,580,591],"tbody",{},[498,514,515,519,522],{},[516,517,518],"td",{},"Primary interface",[516,520,521],{},"Screen clicks",[516,523,524],{},"Events, files, APIs",[498,526,527,530,533],{},[516,528,529],{},"When UI changes",[516,531,532],{},"Breaks often",[516,534,535],{},"Often unaffected",[498,537,538,541,544],{},[516,539,540],{},"Repeat signal",[516,542,543],{},"Scheduler on a bot",[516,545,546],{},"Several trigger types",[498,548,549,552,555],{},[516,550,551],{},"Nothing to do",[516,553,554],{},"May still “succeed”",[516,556,557],{},"Skipped run recorded",[498,559,560,563,566],{},[516,561,562],{},"Outcome surface",[516,564,565],{},"Bot log / email",[516,567,568],{},"Run page + roster",[498,570,571,574,577],{},[516,572,573],{},"Best for",[516,575,576],{},"No API, stable UI",[516,578,579],{},"Repeat ops with signals",[498,581,582,585,588],{},[516,583,584],{},"Model required?",[516,586,587],{},"No",[516,589,590],{},"Optional, bounded",[498,592,593,596,599],{},[516,594,595],{},"Typical fragility",[516,597,598],{},"Selectors and timing",[516,600,601],{},"Stale recipes, missing skips",[190,603,604,605,608,609,613,614,209],{},"Neither row replaces your system of record. Both sit ",[202,606,607],{},"above"," CRM and ERP. They are part of the automate pillar in ",[194,610,612],{"href":611},"four-pillars-of-an-enterprise-ai-platform","the four pillars of an enterprise AI platform",", not a second ledger. If a bot or a loop writes without a quoted payload and a signer, you have a control problem that no category name will fix. See ",[194,615,617],{"href":616},"what-is-ai-governance","what is AI governance",[619,620,624],"pre",{"className":621,"code":622,"language":623,"meta":171,"style":171},"language-mermaid shiki shiki-themes github-light github-dark","flowchart TD\n  door{\"How does the work get in?\"}\n  door -->|\"Only a screen\"| rpaPick[\"RPA: record the clicks\"]\n  door -->|\"File, field, or event\"| loopPick[\"Loop: run the recipe\"]\n  rpaPick --> fetch[\"Often: fetch a file\"]\n  fetch --> loopPick\n","mermaid",[625,626,627,635,640,646,652,658],"code",{"__ignoreMap":171},[628,629,632],"span",{"class":630,"line":631},"line",1,[628,633,634],{},"flowchart TD\n",[628,636,637],{"class":630,"line":172},[628,638,639],{},"  door{\"How does the work get in?\"}\n",[628,641,643],{"class":630,"line":642},3,[628,644,645],{},"  door -->|\"Only a screen\"| rpaPick[\"RPA: record the clicks\"]\n",[628,647,649],{"class":630,"line":648},4,[628,650,651],{},"  door -->|\"File, field, or event\"| loopPick[\"Loop: run the recipe\"]\n",[628,653,655],{"class":630,"line":654},5,[628,656,657],{},"  rpaPick --> fetch[\"Often: fetch a file\"]\n",[628,659,661],{"class":630,"line":660},6,[628,662,663],{},"  fetch --> loopPick\n",[277,665,667],{"id":666},"when-rpa-is-still-the-right-tool","When RPA is still the right tool",[190,669,670],{},"Choose RPA — or keep the bot you have — when most of the following are true:",[672,673,674,680,686,692],"ol",{},[220,675,676,679],{},[202,677,678],{},"No integration exists"," and IT has not prioritized one. The screen is the only door, not the door a citizen developer preferred.",[220,681,682,685],{},[202,683,684],{},"The UI path is stable."," That module has not been redesigned in years, and the vendor’s roadmap does not threaten it this quarter.",[220,687,688,691],{},[202,689,690],{},"Volume justifies babysitting."," Operations accepts selector maintenance as opex and has a named owner for break-fix, not a hero who “knows the recording.”",[220,693,694,697],{},[202,695,696],{},"The action is fetch-shaped."," Scrape, download, paste into a governed folder that a standing-order loop picks up next. The bot’s job ends when the file lands.",[190,699,700,701,704],{},"That last pattern is common and sensible: ",[202,702,703],{},"RPA fetches; the loop processes."," The bot is a temporary or permanent adapter. The loop owns variance checks, notifications, and draft writes waiting on sign. You have not “failed at AI” because a 1990s terminal still needs a click. You have been honest about the interface.",[190,706,707],{},"Also keep RPA for attended automation where a person is already in the session. A desktop helper that types the next twenty fields while a clerk reviews exceptions is a different object from an unattended Monday close. Do not force that helper into a standing-order costume.",[190,709,710,715],{},[194,711,714],{"href":712,"rel":713},"https://www.nist.gov/itl/ai-risk-management-framework",[198],"NIST’s AI Risk Management Framework"," still applies if the bot’s output later feeds a model or a write. Map the system. Measure the outcomes. Do not pretend a bot log is Measure if only the CoE can read it.",[277,717,719],{"id":718},"when-a-standing-order-loop-is-the-right-tool","When a standing-order loop is the right tool",[190,721,722],{},"Choose a loop when:",[672,724,725,731,737,747],{},[220,726,727,730],{},[202,728,729],{},"The signal is already digital"," — webhook, CRM field, calendar, a file hash, an event from billing",[220,732,733,736],{},[202,734,735],{},"Skip semantics matter"," — month-end with no exceptions should not spam Legal",[220,738,739,742,743],{},[202,740,741],{},"The roster needs a run page"," — audit, handoffs, ",[194,744,746],{"href":745},"what-is-collaborative-ai","collaborative AI",[220,748,749,752],{},[202,750,751],{},"You will reuse the recipe"," across teams without copying Slack threads",[190,754,755,760],{},[194,756,759],{"href":757,"rel":758},"https://www.ibm.com/think/topics/event-driven-architecture",[198],"IBM on event-driven architecture"," is the right adjacent reading for this side of the comparison. Something happened elsewhere; your process responds with idempotence and a record. If the same event arrives twice, one run should process and one should skip. Bots can be written that way. They often are not, because the recording did not include “check whether we already did this.”",[190,762,763,764,209],{},"Loops are also the right tool when the “RPA job” is actually document intelligence wearing a bot costume. Bots should not pretend to read contracts. A loop step may use a model to extract tables; the write still quotes a payload and waits on sign. See ",[194,765,767],{"href":766},"loops-for-legal-and-compliance","loops for legal and compliance",[277,769,771],{"id":770},"what-goes-wrong-in-hybrid-programmes","What goes wrong in hybrid programmes",[190,773,774,777],{},[202,775,776],{},"Lift-and-shift the bot into a loop skin."," Changing the logo does not add skip semantics or a roster. If the runtime is still clicking Production with a god account, you kept the brittleness and added a new name.",[190,779,780,783],{},[202,781,782],{},"Loop that secretly RPAs the CRM."," If your “AI automation” is still one service identity clicking through a web UI because “the connector was slower,” you have not moved categories. You have hidden a bot behind a recipe.",[190,785,786,789,790,792],{},[202,787,788],{},"RPA for PDF intelligence."," Screen replay is a poor reader. If the job is “understand this invoice,” you need a document step with evals — see ",[194,791,244],{"href":243}," — not a tighter selector on the PDF viewer.",[190,794,795,798,799,802],{},[202,796,797],{},"No ownership."," RPA bots die when Linda leaves. Loops die when “the recipe” lives in Linda’s channel. ",[194,800,801],{"href":228},"Loop engineering"," is org-owned recipes — the same discipline as shared close checklists. Deloitte’s wider-toolkit finding is really an ownership finding: more tools without a named owner is how shadow automation returns.",[190,804,805,808,809,812],{},[202,806,807],{},"Automation that cannot refuse."," Whether the runtime clicks or reacts to a webhook, an unsigned write should not land. ",[194,810,811],{"href":449},"What is write-back governance"," is category-agnostic. If your CoE cannot show a refused payload and an unchanged system of record, you are scoring the wrong success metric.",[277,814,816],{"id":815},"a-practical-migration-path","A practical migration path",[190,818,819],{},"Treat migration as an inventory problem, not a branding problem.",[672,821,822,828,834,840,846],{},[220,823,824,827],{},[202,825,826],{},"Inventory bots."," For each one: which screen, how often, how brittle, which service account, who gets the failure email, what the last three incidents were.",[220,829,830,833],{},[202,831,832],{},"Mark API-available jobs."," If the system now exposes an event, a file export, or a documented API, migrate those jobs to standing-order loops first. Stop paying selector tax on work that no longer needs a screen.",[220,835,836,839],{},[202,837,838],{},"Pair fetch bots with loops."," Where the screen remains the only door, shrink the bot to fetch-and-drop. The loop owns processing, skip, notify, and any draft write.",[220,841,842,845],{},[202,843,844],{},"Keep one honest bot"," where the screen is the only door and the UI is stable. Review it quarterly with IT for an integration. Do not hide it. Name it in the architecture review.",[220,847,848,851,852,465,854,857],{},[202,849,850],{},"Score new buys"," with ",[194,853,469],{"href":468},[285,855,856],{},"and"," your existing RPA ops metrics — hours lost to break-fix, mean time to repair a selector, percentage of “success” emails that were empty runs.",[190,859,860],{},"A sensible first quarter is not “zero bots.” It is “zero bots clicking a system that already had an API,” plus “every remaining bot has a named owner and a fetch-shaped job.” That is a programme a CFO can understand and an auditor can follow.",[190,862,863],{},"Department starting points for the loop side of the hybrid:",[217,865,866,873,880],{},[220,867,868,872],{},[194,869,871],{"href":870},"loops-for-finance-and-planning","Loops for finance and planning"," — scheduled packs, quiet skips",[220,874,875,879],{},[194,876,878],{"href":877},"loops-for-revenue-operations","Loops for revenue operations"," — stage-triggered hygiene",[220,881,882,885],{},[194,883,884],{"href":766},"Loops for legal and compliance"," — inbound redlines without click bots",[190,887,888,889,893,894,898],{},"Related reading: ",[194,890,892],{"href":891},"what-is-an-enterprise-ai-operating-system","what is an enterprise AI operating system"," for the kernel metaphor, and ",[194,895,897],{"href":896},"loop-engineering-vs-harness-engineering","loop engineering vs harness engineering"," when interactive agents need different stops than repeat recipes.",[277,900,902],{"id":901},"how-this-shows-up-in-nimbus","How this shows up in Nimbus",[190,904,905,906,851,909,912,913,915],{},"Nimbus Loops are standing orders on ",[194,907,908],{"href":32},"workstreams",[194,910,911],{"href":40},"governance"," — not a bot farm and not a recorder. They prefer events, files, and APIs; they record skipped runs; they notify a roster. When a legacy screen is still the only door, the honest pattern is the one above: let the incumbent RPA tool click, land the file in ",[194,914,15],{"href":16}," or a governed folder, and let the Loop compile what happens next.",[190,917,918],{},"That is one vendor’s implementation of the category split, not a requirement that every bot be replaced. If you are scoring platforms, keep Gartner’s UI-emulation definition for RPA and keep this page’s run-page tests for standing orders. Run both. The companies that get hurt are the ones that buy a single noun for both jobs.",[920,921,922],"style",{},"html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":171,"searchDepth":172,"depth":172,"links":924},[925,926,927,928,929,930,931,932],{"id":279,"depth":172,"text":280},{"id":403,"depth":172,"text":404},{"id":489,"depth":172,"text":490},{"id":666,"depth":172,"text":667},{"id":718,"depth":172,"text":719},{"id":770,"depth":172,"text":771},{"id":815,"depth":172,"text":816},{"id":901,"depth":172,"text":902},"2026-09-12","RPA records clicks on screens. A standing-order loop records a recipe that runs when a signal fires, skips when nothing changed, and leaves a run page. Both have a place — the mistake is sending a bot to read a PDF when an API would do.",{"eyebrow":936,"title":937},"Common questions","Clicks, standing orders, and when each fits",[939,942,945,948],{"question":940,"answer":941},"Should we replace our RPA bots with standing-order loops?","Not automatically, and a rip-and-replace programme is how you lose the jobs that still have no API. Keep RPA where the only interface is a legacy screen and the UI path is stable enough that selector maintenance is accepted opex. Add standing-order loops where the job already has a digital signal, needs skip semantics, and should land on a run page the roster can audit. Use a hybrid when a bot’s only honest job is to fetch a file that a loop then processes. Refuse a migration that changes the logo on the bot farm and calls the result “AI transformation.” The screen did not get an API because you renamed the programme.",{"question":943,"answer":944},"Is a loop just RPA with a model attached?","No. A loop is a compiled standing order — triggers, recipe, run page — that may include a bounded model step for messy inputs. RPA is UI replay: scripts that emulate a person on a screen. Some loops never call a model; some RPA bots never should have been bots. Use RPA when the application will only talk through its interface, and use a loop when the signal is already an event, a file, or a field. Refuse a pitch that treats “intelligent automation” as a single category: Gartner’s RPA definition is about emulating UI interaction, which is a different object from a standing order.",{"question":946,"answer":947},"Why do RPA projects break when a vendor moves a button?","Because the bot’s contract is the screen, not the business event. Selectors, pixel layout, load timing, localisation, and surprise pop-ups are all part of the interface the script assumed would sit still. When the vendor redesigns a module, the recording is now a lie. Standing-order loops prefer structured events and payloads when those exist, so a CSS change does not cancel month-end. Keep the bot if the screen is truly the only door — and budget the break-fix. Refuse to point a bot at a system that already exposes an API just because the recording was faster than an integration ticket. Speed in week one is how you buy fragility for year two.",{"question":949,"answer":950},"What should a migration inventory include?","For each bot, name the screen, the frequency, the last three break-fix incidents, the service account, and whether an API or file export now exists. Mark jobs that can move to a standing-order loop first — those are the ones still paying a selector tax for no reason. Keep a short list of screens that remain the only door and review them quarterly with IT. Pair fetch-only bots with loops so the bot’s job ends when the file lands. Refuse an inventory that is only a licence count. Licences do not tell you which automations lie on empty tables.","/blog/loop-vs-rpa",{"title":181,"description":934},"explainer","blog/loop-vs-rpa",[956,953,506,957],"loops","automation","-iI03pSB3WJWjPFfWvfEvVDXqlQitOm0KbTlQ1rmFdw",{"hero":960,"id":962,"title":963,"archived":165,"authors":166,"badge":166,"body":964,"date":166,"definedTerm":166,"department":166,"description":968,"extension":174,"eyebrow":969,"faqHeader":166,"faqs":166,"footerBand":970,"headline":166,"image":166,"industry":166,"jobType":166,"listed":131,"location":166,"navigation":131,"openRoles":166,"pageLayout":166,"path":60,"relatedHeading":976,"seo":977,"series":166,"sitemap":131,"status":166,"stem":978,"subhead":166,"tags":166,"video":166,"whyJoin":166,"workplaceType":166,"__hash__":979},{"filename":961},"u2221455217_Flat_design_of_a_futuristic_minimalist_landscape__5d589295-cdea-4ea9-a262-be766881accf_1.png","content/blog/index.md","Exploring the future of intelligence.",{"type":168,"value":965,"toc":966},[],{"title":171,"searchDepth":172,"depth":172,"links":967},[],"Deep dives into pre-cognitive intelligence, sentient enterprises, and the evolving landscape of AI-driven business transformation.","Latest Research",{"headline":971,"description":972,"primaryLabel":973,"primaryTo":974,"secondaryLabel":975,"secondaryTo":12},"Stay at the frontier.","Subscribe for product updates and new insights.","Subscribe","/newsletter","Explore the platform","More research",{"title":963,"description":968},"blog/index","BFSWGYO9bcTlaulivKYWyg08_DJHsdGg3OC6g_CG1Hw",[981,1663],{"id":982,"title":983,"archived":165,"authors":984,"badge":986,"body":987,"date":933,"definedTerm":166,"department":166,"description":1640,"extension":174,"eyebrow":166,"faqHeader":1641,"faqs":1643,"footerBand":166,"headline":166,"image":166,"industry":166,"jobType":166,"listed":165,"location":166,"navigation":131,"openRoles":166,"pageLayout":166,"path":1656,"relatedHeading":166,"seo":1657,"series":953,"sitemap":131,"status":166,"stem":1658,"subhead":166,"tags":1659,"video":166,"whyJoin":166,"workplaceType":166,"__hash__":1662},"content/blog/loop-vs-workflow-vs-agent.md","Loop vs Workflow vs Agent",[985],{"name":184,"to":136},{"label":186},{"type":168,"value":988,"toc":1630},[989,998,1001,1055,1062,1066,1073,1076,1105,1108,1111,1117,1128,1132,1141,1144,1173,1184,1190,1195,1201,1205,1218,1221,1249,1258,1263,1271,1275,1378,1389,1397,1401,1404,1421,1424,1427,1463,1469,1473,1479,1485,1494,1503,1509,1520,1524,1527,1541,1575,1581,1584,1590,1606,1608,1620,1628],[190,990,991,992,997],{},"A workflow enumerates steps a person invented. A loop is a compiled standing order that fires when a signal repeats. An agent reasons when the path is not yet known. ",[194,993,996],{"href":994,"rel":995},"https://www.anthropic.com/engineering/building-effective-agents",[198],"Anthropic’s guidance on building effective agents"," is blunt about the distinction: encode the job when you can; reserve autonomy for inputs that will not sit still. Operators need the noun that matches how stable the job is — not the noun that wins the demo.",[190,999,1000],{},"Three words, disambiguated up front, plus the sibling people keep folding in:",[217,1002,1003,1017,1025,1041],{},[220,1004,1005,1007,1008,1010,1011,230,1014,1016],{},[202,1006,224],{}," A compiled ",[202,1009,410],{},": triggers, a trusted recipe, outcomes on a run page, skip when nothing changed. See ",[194,1012,1013],{"href":228},"what is loop engineering",[194,1015,234],{"href":233},". Loops are for work that repeats on recognizable signals.",[220,1018,1019,1021,1022,1024],{},[202,1020,239],{}," An independent verification that a job finished — tests, schema, read-back, signer — not the model’s claim. See ",[194,1023,244],{"href":243},". A loop may include eval steps; “eval loop” is not “loop.”",[220,1026,1027,1029,1030,1033,1034,1036,1037,209],{},[202,1028,249],{}," A ",[202,1031,1032],{},"designed sequence"," of steps toward a goal, with business stop conditions — including a person before a live system changes. See ",[194,1035,254],{"href":253},". Workflows are what someone invented; they are versioned and hosted on a ",[194,1038,1040],{"href":1039},"what-is-an-ai-workstream","workstream",[220,1042,1043,1046,1047,230,1051,209],{},[202,1044,1045],{},"Agent."," A reasoner that picks tools when the path is not fully enumerated. See ",[194,1048,1050],{"href":1049},"what-is-an-agent-harness","what is an agent harness",[194,1052,1054],{"href":1053},"a-loop-is-not-an-agent","a loop is not an agent",[190,1056,1057,1058,1061],{},"If your buying conversation starts with “we need an agent,” pause. That sentence often means three different jobs. Buying the wrong one wastes the quarter — not because the model is weak, but because the operating object is wrong. ",[194,1059,477],{"href":475,"rel":1060},[198]," keeps showing high usage and uneven scale. Scale, in this vocabulary, usually means compiling what worked — into a workflow or a loop — not hiring a larger model to improvise the same close every month.",[277,1063,1065],{"id":1064},"workflow-steps-a-person-invented","Workflow — steps a person invented",[190,1067,1068,1069,1072],{},"A ",[202,1070,1071],{},"workflow"," is a sequence someone designed: extract, compare to a playbook, quote the CRM fields, wait for the named signer, write or refuse. The author is a person. The instance is durable. The finish line is named before the run starts.",[190,1074,1075],{},"Workflows excel when:",[217,1077,1078,1085,1091,1098],{},[220,1079,1080,1081,1084],{},"the ",[202,1082,1083],{},"stop conditions"," matter as much as the steps — budget, approval, empty result, a clause that is non-standard",[220,1086,1087,1090],{},[202,1088,1089],{},"roles"," differ by step — analyst drafts, controller signs, counsel refuses",[220,1092,1093,1094,1097],{},"the job is ",[202,1095,1096],{},"interactive"," — humans join mid-flight with context attached",[220,1099,1100,1101,1104],{},"you must ",[202,1102,1103],{},"version"," the definition — “which workflow ran last Tuesday?” is a fair audit question",[190,1106,1107],{},"A workflow is the right object when the path is known enough to draw and still needs a person at a gate. Month-end sign-off is a workflow even if a loop assembled the pack. Discount exceptions are a workflow even if a loop watched the stage change. The designed sequence is how you keep roles from collapsing into “the model posted it.”",[190,1109,1110],{},"Workflows fail when teams treat them as magic. A checklist in a prompt is not a workflow. A chat with tools is not a workflow. A Lucidchart on a wiki is not a workflow runtime. A workflow has a durable instance, a finish line, and a record that survives the session. If you hide the chat and cannot reconstruct which step was waiting on a person, you bought conversation.",[190,1112,1113,1116],{},[202,1114,1115],{},"Operator test:"," Can an independent reader reconstruct which steps ran, what was waiting on a person, and what was refused — without Slack search?",[190,1118,1119,1123,1124,1127],{},[194,1120,1122],{"href":1121},"what-is-human-in-the-loop-ai","What is human-in-the-loop AI"," belongs here more than it belongs on the loop. Loops can pause; workflows are often ",[285,1125,1126],{},"about"," the pause. The pause is the product. If your vendor cannot show a named stop, you do not have a workflow. You have a script with optimism.",[277,1129,1131],{"id":1130},"loop-a-compiled-standing-order","Loop — a compiled standing order",[190,1133,1068,1134,1137,1138,1140],{},[202,1135,1136],{},"loop"," is what you run when the world sends the same signal again: Monday close, file in folder, stage flipped, billing event, someone presses run now. See ",[194,1139,234],{"href":233},". The author compiled the recipe once. The trigger admits a run. The run page is the contract.",[190,1142,1143],{},"Loops excel when:",[217,1145,1146,1153,1159,1166],{},[220,1147,1148,1149,1152],{},"the recipe is ",[202,1150,1151],{},"stable"," enough to reuse without re-prompting",[220,1154,1155,1158],{},[202,1156,1157],{},"skip semantics"," matter — “nothing changed” should be a first-class outcome",[220,1160,1161,1162,1165],{},"operators need a ",[202,1163,1164],{},"run page",", not a transcript",[220,1167,1168,1169,1172],{},"the same kernel should answer to ",[202,1170,1171],{},"several triggers"," without several copies",[190,1174,1175,1176,1179,1180,1183],{},"Loops are not “set and forget” if forget means no record. A good loop logs quiet outcomes, notifies the roster, and attaches outputs where the next role expects them. ",[194,1177,1178],{"href":468},"How to evaluate loop engineering"," is the RFP sheet for this object. ",[194,1181,714],{"href":712,"rel":1182},[198]," Measure function assumes you can observe those outcomes. A loop without a run page is not observable. It is email archaeology.",[190,1185,1186,1187,1189],{},"Loops fail when they are copied from someone’s channel, when skip is implemented as “don’t email,” or when every step secretly calls a model. On the happy path, ",[194,1188,1054],{"href":1053},": it should not re-derive the job. If Monday’s close still begins with “please do the usual,” you have not compiled anything.",[190,1191,1192,1194],{},[202,1193,1115],{}," Run it ten times with empty inputs. Do you get ten run pages that say skipped — or ten emails saying error?",[190,1196,1197,1200],{},[194,1198,1199],{"href":896},"Loop engineering vs harness engineering"," draws the line: loop engineering compiles repeat work; harness engineering tightens the environment when interactive agents fail. You need both crafts. They fail differently. A loop that guesses at 3am is a harness problem you imported into unattended hours.",[277,1202,1204],{"id":1203},"agent-reasons-when-the-path-is-unknown","Agent — reasons when the path is unknown",[190,1206,1207,1208,1211,1212,1217],{},"An ",[202,1209,1210],{},"agent"," (in the product sense) chooses actions when you cannot enumerate every branch upfront: read these ten documents and tell me which clause conflicts; investigate why margin diverged across three regions; draft three options for a novel pricing exception. ",[194,1213,1216],{"href":1214,"rel":1215},"https://docs.langchain.com/oss/python/langchain/agents",[198],"LangChain’s definition"," is a useful shorthand: Agent = Model + Harness. The harness is not optional. Without tools, stops, and a budget, you have a chatbot with aspirations.",[190,1219,1220],{},"Agents excel when:",[217,1222,1223,1230,1236,1242],{},[220,1224,1225,1226,1229],{},"inputs are ",[202,1227,1228],{},"messy or novel"," — PDFs, threads, ambiguous tickets, a vendor paper the team has not seen",[220,1231,1080,1232,1235],{},[202,1233,1234],{},"path emerges"," during the job — you would not trust a fixed script yet",[220,1237,1238,1239,1241],{},"the cost of a wrong step is ",[202,1240,445],{}," — read-only tools, draft-only outputs",[220,1243,1244,1245,1248],{},"a human will ",[202,1246,1247],{},"compress"," the result into a decision artefact",[190,1250,1251,1252,1257],{},"Agents fail when teams use them as cron with charisma. If the job is the same every Monday, an agent rediscovering the steps is expensive theatre. It is also a control failure: the path that ran last week is not a path you can open next week. ",[194,1253,1256],{"href":1254,"rel":1255},"https://aiindex.stanford.edu/",[198],"Stanford HAI’s AI Index"," is a reminder that capability is not the scarce resource. Operational maturity is.",[190,1259,1260,1262],{},[202,1261,1115],{}," If you hid the chat and kept only the artefact, would the company still know what changed? If not, you bought conversation, not control.",[190,1264,1265,1266,1270],{},"Score agents with ",[194,1267,1269],{"href":1268},"how-to-evaluate-an-agent-harness","how to evaluate an agent harness",", not with this page’s skip-semantics tests. The hero metric for an agent is whether you can stop a write and replay what was refused. The hero metric for a loop is whether you can skip quietly and prove it.",[277,1272,1274],{"id":1273},"three-way-comparison","Three-way comparison",[492,1276,1277,1292],{},[495,1278,1279],{},[498,1280,1281,1283,1286,1289],{},[501,1282,503],{},[501,1284,1285],{},"Workflow",[501,1287,1288],{},"Loop",[501,1290,1291],{},"Agent",[511,1293,1294,1308,1322,1336,1350,1364],{},[498,1295,1296,1299,1302,1305],{},[516,1297,1298],{},"Who designed the path?",[516,1300,1301],{},"A person encoded steps",[516,1303,1304],{},"A compiled recipe",[516,1306,1307],{},"The model plans within bounds",[498,1309,1310,1313,1316,1319],{},[516,1311,1312],{},"Typical host",[516,1314,1315],{},"Workstream with gates",[516,1317,1318],{},"Recipe library + run page",[516,1320,1321],{},"Workstream or task room",[498,1323,1324,1327,1330,1333],{},[516,1325,1326],{},"Best when",[516,1328,1329],{},"Stops and roles matter",[516,1331,1332],{},"Signal repeats",[516,1334,1335],{},"Path unknown",[498,1337,1338,1341,1344,1347],{},[516,1339,1340],{},"Quiet success",[516,1342,1343],{},"Waiting on signer",[516,1345,1346],{},"Skipped — no change",[516,1348,1349],{},"“Nothing found” with sources",[498,1351,1352,1355,1358,1361],{},[516,1353,1354],{},"Versioning",[516,1356,1357],{},"Workflow definition",[516,1359,1360],{},"Recipe version",[516,1362,1363],{},"Prompt + tool grants",[498,1365,1366,1369,1372,1375],{},[516,1367,1368],{},"Audit reader asks",[516,1370,1371],{},"Which step, which gate",[516,1373,1374],{},"Which trigger, which run",[516,1376,1377],{},"Which sources, which draft",[190,1379,1380,1381,1384,1385,1388],{},"None of these rows replaces your CRM. They describe how work runs ",[202,1382,1383],{},"on top of"," systems of record. The ",[194,1386,1387],{"href":891},"enterprise AI operating system"," metaphor is the kernel version of the same problem — isolation, permissions, durable state — applied to jobs rather than applications. This article stays at the operator nouns. Use the OS page when you need the kernel language; use this page when someone says “agent” and means a Monday report.",[190,1390,1391,1396],{},[194,1392,1395],{"href":1393,"rel":1394},"https://www.iso.org/standard/81230.html",[198],"ISO/IEC 42001"," will not tell you which noun to buy. It will ask whether you can name the system, the owner, and the record. Workflows, loops, and agents all fail that test when they live only in a transcript.",[277,1398,1400],{"id":1399},"how-they-compose-in-one-quarter","How they compose in one quarter",[190,1402,1403],{},"Real companies stack all three. The stack is not three products competing. It is three stability levels: novel → designed → repeated.",[672,1405,1406,1411,1416],{},[220,1407,1408,1410],{},[202,1409,1291],{}," investigates a new vendor contract — extracts obligations, flags non-standard terms, drafts a summary for counsel. The path is unknown. The output is a draft. Nothing customer-facing sends.",[220,1412,1413,1415],{},[202,1414,1285],{}," routes the summary through Legal review on a workstream, with a hard stop before anything leaves the company. Roles stay distinct. The instance is durable. Counsel can refuse.",[220,1417,1418,1420],{},[202,1419,1288],{}," watches the signed folder and, every time a countersigned PDF lands, updates the renewal tracker and notifies RevOps — skipping if the hash matches last week’s file. The signal repeats. The recipe does not.",[190,1422,1423],{},"That composition is how you avoid the two failure modes that dominate programmes: agent-for-everything, and checklist-in-a-wiki. The first burns tokens and produces untraceable month six. The second produces a drawing that nobody runs.",[190,1425,1426],{},"Department guides use the same stack with different default nouns:",[217,1428,1429,1442,1455],{},[220,1430,1431,1434,1435,230,1438,209],{},[202,1432,1433],{},"Finance and planning"," — loops for scheduled packs; workflows for close sign-offs; agents for one-off variance forensics. See ",[194,1436,1437],{"href":870},"loops for finance and planning",[194,1439,1441],{"href":1440},"collaborative-ai-for-finance-and-planning","collaborative AI for finance and planning",[220,1443,1444,1447,1448,230,1451,209],{},[202,1445,1446],{},"Revenue operations"," — loops on stage changes; workflows for discount exceptions; agents for messy account research. See ",[194,1449,1450],{"href":877},"loops for revenue operations",[194,1452,1454],{"href":1453},"collaborative-ai-for-revenue-operations","collaborative AI for revenue operations",[220,1456,1457,1460,1461,209],{},[202,1458,1459],{},"Legal and compliance"," — workflows for approvals; loops on inbound redlines; agents for first-pass clause comparison. See ",[194,1462,767],{"href":766},[190,1464,1465,1468],{},[194,1466,1467],{"href":745},"Collaborative AI"," is the roster pattern underneath all three: multiple roles, one job object, a finish line. The noun you pick does not replace the roster. An agent without a roster is a personal copilot. A loop without a roster notifies a dead channel. A workflow without a roster has nobody to stand at the gate.",[277,1470,1472],{"id":1471},"what-people-get-wrong","What people get wrong",[190,1474,1475,1478],{},[202,1476,1477],{},"Agent for everything."," Impressive week one; untraceable month six. The model will happily re-solve a solved problem. You will pay for it twice: inference, and the incident when it improvises a write.",[190,1480,1481,1484],{},[202,1482,1483],{},"Workflow without an instance."," A diagram is not a runtime. If you cannot open last Tuesday’s run and see the step that was waiting, you have documentation, not a workflow.",[190,1486,1487,1490,1491,1493],{},[202,1488,1489],{},"Loop copied from someone’s Slack channel."," If reuse means “find the old thread,” you have folklore, not ",[194,1492,229],{"href":228},". Folklore does not survive vacation.",[190,1495,1496,1499,1500,1502],{},[202,1497,1498],{},"Confusing eval loops with loops."," Benchmarks and read-backs verify completion; standing-order loops start and record repeat work. Both can coexist on one job. Collapsing them hides whether you can start work ",[285,1501,856],{}," whether you can prove it finished.",[190,1504,1505,1508],{},[202,1506,1507],{},"Buying a platform that only sells one noun."," If the vendor cannot host a workflow gate, a loop run page, and an agent task on the same roster, you will rebuild org boundaries in email. That is not a tooling preference. It is how departments already work.",[190,1510,1511,1514,1515,1519],{},[202,1512,1513],{},"Treating RPA as the fourth synonym."," Screen replay is a different category. See ",[194,1516,1518],{"href":1517},"loop-vs-rpa","loop vs RPA",". A bot that clicks an ERP has a place. It is not a standing-order loop, a designed workflow, or a reasoner.",[277,1521,1523],{"id":1522},"choosing-this-week","Choosing this week",[190,1525,1526],{},"Ask two questions, in this order:",[672,1528,1529,1535],{},[220,1530,1531,1534],{},[202,1532,1533],{},"Do we know the steps?"," No → agent, bounded. Yes → workflow or loop.",[220,1536,1537,1540],{},[202,1538,1539],{},"Will the same signal fire again?"," Yes → loop. No → workflow.",[619,1542,1544],{"className":621,"code":1543,"language":623,"meta":171,"style":171},"flowchart TD\n  steps{\"Do we know the steps?\"}\n  steps -->|no| agentPick[\"Agent: explore, keep a draft\"]\n  steps -->|yes| signal{\"Will the same signal fire again?\"}\n  signal -->|yes| loopPick[\"Loop: standing order\"]\n  signal -->|no| workflowPick[\"Workflow: designed sequence with stops\"]\n",[625,1545,1546,1550,1555,1560,1565,1570],{"__ignoreMap":171},[628,1547,1548],{"class":630,"line":631},[628,1549,634],{},[628,1551,1552],{"class":630,"line":172},[628,1553,1554],{},"  steps{\"Do we know the steps?\"}\n",[628,1556,1557],{"class":630,"line":642},[628,1558,1559],{},"  steps -->|no| agentPick[\"Agent: explore, keep a draft\"]\n",[628,1561,1562],{"class":630,"line":648},[628,1563,1564],{},"  steps -->|yes| signal{\"Will the same signal fire again?\"}\n",[628,1566,1567],{"class":630,"line":654},[628,1568,1569],{},"  signal -->|yes| loopPick[\"Loop: standing order\"]\n",[628,1571,1572],{"class":630,"line":660},[628,1573,1574],{},"  signal -->|no| workflowPick[\"Workflow: designed sequence with stops\"]\n",[190,1576,1577,1578,1580],{},"If both yes — stable steps ",[285,1579,856],{}," a repeating signal — start with a loop. Add workflow gates inside it when a named signer must appear. Add an agent step when one stage still needs reading messy inputs. That is the composition above, reduced to a decision tree you can use in a working session.",[190,1582,1583],{},"If both no — unknown steps and a one-off — you are in research. Do not compile yet. Do not buy a bot. Bound the tools, keep the output as a draft, and decide next week whether the path is now known.",[190,1585,1586,1589],{},[194,1587,1588],{"href":611},"The four pillars of an enterprise AI platform"," is the wider map: communication brings context, collaboration hosts the job, automate repeats the recipe, governance refuses what should not land. Loops, workflows, and agents all sit on that map. They are not a substitute for it.",[190,1591,888,1592,1595,1596,1600,1601,1605],{},[194,1593,1594],{"href":745},"what is collaborative AI",", ",[194,1597,1599],{"href":1598},"how-to-evaluate-collaborative-ai","how to evaluate collaborative AI",", and ",[194,1602,1604],{"href":1603},"what-is-harness-engineering","what is harness engineering"," when agents and loops share the same stops.",[277,1607,902],{"id":901},[190,1609,1610,1611,1613,1614,1616,1617,1619],{},"Nimbus hosts all three nouns on the same ",[194,1612,1040],{"href":32},". Loops are standing orders with run pages. Agentic workflows are designed sequences with ",[194,1615,911],{"href":40}," gates. Agents run as bounded teammates with scoped grants, not as a second platform. ",[194,1618,15],{"href":16}," is often the communication door that starts a loop when a file lands.",[190,1621,1622,1623,230,1625,1627],{},"Treat that as one vendor’s mapping of the pattern, not as the definition. If you are writing an RFP, paste the questions from ",[194,1624,469],{"href":468},[194,1626,1269],{"href":1268}," and run them on whoever claims the nouns. The useful outcome is not a logo. It is whether Tuesday’s close, Tuesday’s exception, and Tuesday’s novel contract can share a roster without collapsing into one chat.",[920,1629,922],{},{"title":171,"searchDepth":172,"depth":172,"links":1631},[1632,1633,1634,1635,1636,1637,1638,1639],{"id":1064,"depth":172,"text":1065},{"id":1130,"depth":172,"text":1131},{"id":1203,"depth":172,"text":1204},{"id":1273,"depth":172,"text":1274},{"id":1399,"depth":172,"text":1400},{"id":1471,"depth":172,"text":1472},{"id":1522,"depth":172,"text":1523},{"id":901,"depth":172,"text":902},"A workflow enumerates steps a person invented. A loop is a compiled standing order with a run page. An agent reasons when the path is unknown. Three nouns vendors collapse — and operators pay for the confusion.",{"eyebrow":936,"title":1642},"Standing orders, sequences, and reasoners",[1644,1647,1650,1653],{"question":1645,"answer":1646},"Can a loop contain an agent?","Yes, and that composition is often the adult design. A loop is the standing order — triggers, recipe, run page, skip semantics. A step inside may call an agent when the input is messy, the same way a close pack may include a first-pass read of a PDF. The loop still owns notifications, quiet outcomes, and where artefacts land. Use this pattern when one stage is genuinely unstructured and the rest is known. Refuse a design that lets the agent rewrite the recipe, skip the signer, or hide its tool calls off the run page. The reasoner is a guest on the standing order, not the owner of the job.",{"question":1648,"answer":1649},"Is an agentic workflow just a loop with extra steps?","Not quite, and the difference shows up under audit. Workflows are authored sequences with explicit stops — often interactive, versioned per department, and meant for jobs that need a person mid-flight. Loops are reused recipes optimized for repeat signals and quiet skips. Many teams use both on the same workstream: the loop watches the folder, the workflow carries the exception that needs counsel. Choose a workflow when stop conditions and roles matter as much as the steps. Choose a loop when the same signal will fire again and nobody should re-describe the job. Refuse a vendor that uses the two words interchangeably on slide one and cannot show both objects in a demo.",{"question":1651,"answer":1652},"When should I choose an agent instead of a loop?","When nobody can write the steps yet — novel research, one-off negotiation, exploratory analysis, a contract shape the team has not seen. Agents earn their keep on the unknown path. Once the path stabilizes, compile it into a loop or a workflow so the company is not paying for rediscovery every Monday. Use an agent when the cost of a wrong step is bounded — read-only tools, draft-only outputs, a human who will compress the result. Refuse an agent as a Monday cron job. That is expensive theatre, and it fails the first time the model improvises a write. See [a loop is not an agent](a-loop-is-not-an-agent).",{"question":1654,"answer":1655},"How do I keep the three nouns from collapsing in an RFP?","Score them on different sheets. Ask for a designed sequence with a durable instance and a named stop — that is the workflow. Ask for a repeating signal, a skipped run, and a recipe you can clone — that is the loop. Ask for a bounded reasoner that cites sources and cannot write without a signer — that is the agent. [How to evaluate loop engineering](how-to-evaluate-loop-engineering) and [how to evaluate an agent harness](how-to-evaluate-an-agent-harness) exist because one checklist cannot cover both. Refuse a single “agentic platform” scorecard that starts with context-window size. That sheet buys a model for a job that needed a standing order.","/blog/loop-vs-workflow-vs-agent",{"title":983,"description":1640},"blog/loop-vs-workflow-vs-agent",[956,953,1660,1661],"agentic-workflow","agents","WsdKtSsbWOvqG1UsJ3XMgcLoc3qJt6B_RUAqj_i_Si4",{"id":1664,"title":1665,"archived":165,"authors":1666,"badge":1668,"body":1669,"date":933,"definedTerm":166,"department":166,"description":2558,"extension":174,"eyebrow":166,"faqHeader":2559,"faqs":2561,"footerBand":166,"headline":166,"image":166,"industry":166,"jobType":166,"listed":165,"location":166,"navigation":131,"openRoles":166,"pageLayout":166,"path":2571,"relatedHeading":166,"seo":2572,"series":953,"sitemap":131,"status":166,"stem":2573,"subhead":166,"tags":2574,"video":166,"whyJoin":166,"workplaceType":166,"__hash__":2578},"content/blog/loop-engineering-vs-harness-engineering.md","Loop Engineering vs Harness Engineering",[1667],{"name":184,"to":136},{"label":186},{"type":168,"value":1670,"toc":2544},[1671,1687,1702,1705,1732,1735,1737,1848,1858,1892,1908,1911,1915,1967,1970,1974,1977,1997,2000,2009,2015,2019,2022,2051,2054,2060,2075,2078,2082,2089,2098,2107,2113,2124,2130,2133,2142,2149,2153,2161,2174,2180,2186,2196,2206,2212,2221,2225,2232,2239,2246,2269,2276,2280,2283,2289,2295,2305,2311,2322,2331,2334,2337,2341,2344,2389,2395,2398,2400,2416,2426,2433,2437,2463,2467,2542],[190,1672,1673,230,1675,1678,1679,1682,1683,1686],{},[202,1674,801],{},[202,1676,1677],{},"harness engineering"," are two disciplines enterprise AI programmes confuse at their peril. Harness engineering designs the runtime around a ",[202,1680,1681],{},"model"," — tools, hooks, stops, eval sensors. Loop engineering compiles the ",[202,1684,1685],{},"known path"," for unattended work — triggers, recipes, skips, run pages. You need both. They are not interchangeable.",[190,1688,1689,1693,1694,1697,1698,1701],{},[194,1690,1692],{"href":1214,"rel":1691},[198],"LangChain"," states Agent = Model + Harness. That equation is harness engineering’s centre of gravity. Loop engineering deliberately stays ",[202,1695,1696],{},"off"," that equation for the happy path: if the steps are known, compile them; do not pay tokens to re-derive them. ",[194,1699,996],{"href":994,"rel":1700},[198]," makes the same architectural point: do not wrap a problem in agentic machinery when a fixed pipeline will complete the job.",[190,1703,1704],{},"Before the comparison lands, three nouns:",[217,1706,1707,1715,1724],{},[220,1708,1709,1712,1713,209],{},[202,1710,1711],{},"Eval loop"," — sensor that grades a run. See ",[194,1714,244],{"href":243},[220,1716,1717,1719,1720,209],{},[202,1718,509],{}," — job on a workstream that admits a run. See ",[194,1721,1723],{"href":1722},"what-is-a-nimbus-loop","what is a standing-order loop",[220,1725,1726,1729,1730,209],{},[202,1727,1728],{},"Agentic workflow"," — interactive reasoning when the route is not fully known. See ",[194,1731,254],{"href":253},[190,1733,1734],{},"An eval loop is not a standing order. A standing order is not an agent. Harness engineering owns the model path; loop engineering owns the compiled path. Mixing the words is how a programme buys sensors and still starts work from Slack.",[277,1736,1199],{"id":896},[492,1738,1739,1750],{},[495,1740,1741],{},[498,1742,1743,1745,1747],{},[501,1744,503],{},[501,1746,801],{},[501,1748,1749],{},"Harness engineering",[511,1751,1752,1765,1777,1790,1803,1818,1831],{},[498,1753,1754,1759,1762],{},[516,1755,1756],{},[202,1757,1758],{},"Unit of design",[516,1760,1761],{},"Compiled recipe on a workstream",[516,1763,1764],{},"Runtime around a model call",[498,1766,1767,1772,1774],{},[516,1768,1769],{},[202,1770,1771],{},"Happy path uses a model?",[516,1773,587],{},[516,1775,1776],{},"Yes",[498,1778,1779,1784,1787],{},[516,1780,1781],{},[202,1782,1783],{},"Primary failure mode",[516,1785,1786],{},"Silent drift, unrecorded skips",[516,1788,1789],{},"Tool misuse, prompt drift, false “done”",[498,1791,1792,1797,1800],{},[516,1793,1794],{},[202,1795,1796],{},"Primary artefact",[516,1798,1799],{},"Run page with outputs and skips",[516,1801,1802],{},"Hooks, sensors, versioned guides",[498,1804,1805,1810,1815],{},[516,1806,1807],{},[202,1808,1809],{},"Operator starts from",[516,1811,1812,1813],{},"Form on a ",[194,1814,1040],{"href":1039},[516,1816,1817],{},"Chat or task inside a harness",[498,1819,1820,1825,1828],{},[516,1821,1822],{},[202,1823,1824],{},"Verification",[516,1826,1827],{},"Input sensors, skip rules, diff vs baseline",[516,1829,1830],{},"Eval loops, schema checks, human gates",[498,1832,1833,1838,1843],{},[516,1834,1835],{},[202,1836,1837],{},"Best reference",[516,1839,1840],{},[194,1841,1842],{"href":228},"What is loop engineering",[516,1844,1845],{},[194,1846,1847],{"href":1603},"What is harness engineering",[190,1849,1850,1851,1854,1855],{},"Loop engineering asks: ",[202,1852,1853],{},"can this job run the same way without anyone re-describing it?"," Harness engineering asks: ",[202,1856,1857],{},"when the model acts, what can it reach, and what independently verifies the claim?",[619,1859,1861],{"className":621,"code":1860,"language":623,"meta":171,"style":171},"flowchart TD\n  job[\"A recurring job\"] --> known{\"Are the steps already known?\"}\n  known -->|yes| loopPath[\"Loop engineering: compile, skip, record\"]\n  known -->|no| harnessPath[\"Harness engineering: bound the model\"]\n  loopPath --> same[\"Same team, same finish line\"]\n  harnessPath --> same\n",[625,1862,1863,1867,1872,1877,1882,1887],{"__ignoreMap":171},[628,1864,1865],{"class":630,"line":631},[628,1866,634],{},[628,1868,1869],{"class":630,"line":172},[628,1870,1871],{},"  job[\"A recurring job\"] --> known{\"Are the steps already known?\"}\n",[628,1873,1874],{"class":630,"line":642},[628,1875,1876],{},"  known -->|yes| loopPath[\"Loop engineering: compile, skip, record\"]\n",[628,1878,1879],{"class":630,"line":648},[628,1880,1881],{},"  known -->|no| harnessPath[\"Harness engineering: bound the model\"]\n",[628,1883,1884],{"class":630,"line":654},[628,1885,1886],{},"  loopPath --> same[\"Same team, same finish line\"]\n",[628,1888,1889],{"class":630,"line":660},[628,1890,1891],{},"  harnessPath --> same\n",[190,1893,1894,1899,1900,1903,1904,1907],{},[194,1895,1898],{"href":1896,"rel":1897},"https://www.thoughtworks.com/insights/articles/operating-system-enterprise-ai",[198],"Thoughtworks’ operating system for enterprise AI"," maps organisational layers — model, builder harness, user harness, organisational harness. Loop engineering sits closest to ",[202,1901,1902],{},"user harness"," for deterministic segments: feed-forward rules, deterministic feedback. Harness engineering owns the ",[202,1905,1906],{},"probabilistic"," segments and the hooks that refuse bad tool calls.",[190,1909,1910],{},"Neither replaces the other. A programme that only buys harness tooling will agent-wrap every checklist. A programme that only compiles loops will stall the first time someone says “it depends.”",[277,1912,1914],{"id":1913},"words-youll-hear","Words you’ll hear",[217,1916,1917,1923,1929,1935,1941,1949,1955,1961],{},[220,1918,1919,1922],{},[202,1920,1921],{},"Compile."," Turn a known checklist into a replayable recipe. Loop engineering’s verb.",[220,1924,1925,1928],{},[202,1926,1927],{},"Harness."," Constrain a model: tools, stops, sensors. Harness engineering’s noun.",[220,1930,1931,1934],{},[202,1932,1933],{},"Happy path."," The route that should not need judgement. Keep the model off it.",[220,1936,1937,1940],{},[202,1938,1939],{},"Exception class."," A named kind of skip you might later attach to an agentic workflow.",[220,1942,1943,1946,1947,209],{},[202,1944,1945],{},"Eval sensor."," Grades a run. Does not admit a run. See ",[194,1948,244],{"href":243},[220,1950,1951,1954],{},[202,1952,1953],{},"Hook."," A refuse-or-allow gate around a tool call. Harness vocabulary.",[220,1956,1957,1960],{},[202,1958,1959],{},"Skip."," A recorded halt on the compiled path. Loop vocabulary.",[220,1962,1963,1966],{},[202,1964,1965],{},"Guide / playbook."," Feed-forward context. In coding harnesses, a file; in enterprise work, a wiki section on the workstream.",[190,1968,1969],{},"If a meeting uses “loop” for both a cron job and an eval sensor, stop and rename. You cannot staff a discipline you cannot point at.",[277,1971,1973],{"id":1972},"when-loop-engineering-leads","When loop engineering leads",[190,1975,1976],{},"Choose loop engineering when:",[217,1978,1979,1982,1985,1988,1991],{},[220,1980,1981],{},"the job already has a written checklist two people can follow",[220,1983,1984],{},"inputs are structured (APIs, sheets, exports), not scanned documents of unknown layout",[220,1986,1987],{},"the output is a table, list, or draft — not a novel strategy",[220,1989,1990],{},"runs should happen on a schedule or trigger without a human starting chat",[220,1992,1993,1994],{},"cost and audit favour ",[202,1995,1996],{},"no model on the happy path",[190,1998,1999],{},"Examples: weekly pipeline exception lists, inventory threshold reports, connector health summaries, accrual mismatch passes, licence true-ups against a source of truth.",[190,2001,2002,2004,2005,2008],{},[194,2003,181],{"href":1517},": prefer API reads and explicit skips over screen replay. ",[194,2006,2007],{"href":457},"Loop vs workflow vs agent",": compile the segment that is stable; leave agentic workflow for the branch that is not.",[190,2010,2011,2014],{},[194,2012,1256],{"href":1254,"rel":2013},[198]," tracks capability rising faster than operational discipline. Loop engineering is discipline for work you already know how to do. Capability is not the bottleneck on a Monday exception table.",[277,2016,2018],{"id":2017},"when-harness-engineering-leads","When harness engineering leads",[190,2020,2021],{},"Choose harness engineering when:",[217,2023,2024,2027,2030,2033,2040],{},[220,2025,2026],{},"the step requires language generation with judgement (customer-facing prose, legal first draft)",[220,2028,2029],{},"tool selection is dynamic (which system depends on the case)",[220,2031,2032],{},"the environment changes faster than you can compile (greenfield code exploration)",[220,2034,2035,2036,2039],{},"verification must include inferential sensors (rubric-based quality) ",[202,2037,2038],{},"in addition to"," deterministic gates",[220,2041,2042,2043,2046,2047],{},"you are wrapping an ",[194,2044,2045],{"href":1049},"agent harness"," or ",[194,2048,2050],{"href":2049},"what-is-an-enterprise-agent-harness","enterprise agent harness",[190,2052,2053],{},"Examples: drafting a renewal brief from scattered notes, proposing a code patch with tests, summarising an incident with citations, negotiating which connector to query based on the question.",[190,2055,2056,2059],{},[194,2057,2058],{"href":243},"Eval loops for enterprise agent harnesses"," are harness engineering’s feedback layer. They do not admit runs; they grade them.",[190,2061,2062,230,2067,2072,2073,209],{},[194,2063,2066],{"href":2064,"rel":2065},"https://martinfowler.com/articles/harness-engineering.html",[198],"Böckeler on harness engineering",[194,2068,2071],{"href":2069,"rel":2070},"https://www.thoughtworks.com/en-us/insights/blog/generative-ai/harness-engineering-agent-feedback-exploring-ai-coding-sensors",[198],"Thoughtworks on agent feedback sensors"," are the coding-native vocabulary — guides in, sensors back. The enterprise translation is wiki playbooks in, quoted writes and graph exports back. See ",[194,2074,450],{"href":449},[190,2076,2077],{},"Harness engineering is not “add a model.” It is “when a model acts, bound it.” Without hooks and sensors, you have a chat window with production credentials.",[277,2079,2081],{"id":2080},"how-they-meet-on-one-job","How they meet on one job",[190,2083,2084,2085,2088],{},"Real work is a ",[202,2086,2087],{},"chain",", not a purity test.",[190,2090,2091,2094,2095,2097],{},[202,2092,2093],{},"Segment 1 — compile."," Nightly pull and exception table. Standing-order loop on a ",[194,2096,1040],{"href":1039},". No model.",[190,2099,2100,2103,2104,2106],{},[202,2101,2102],{},"Segment 2 — collaborate."," Humans resolve skips on the run page. ",[194,2105,1467],{"href":745}," on the same roster. Still no model required.",[190,2108,2109,2112],{},[202,2110,2111],{},"Segment 3 — draft."," For approved exception classes, an agentic workflow drafts customer email or CRM note. Harness engineering applies: tool allow-list, wiki context, eval sensor on tone and facts.",[190,2114,2115,2118,2119,2123],{},[202,2116,2117],{},"Segment 4 — act."," Signed write to CRM. ",[194,2120,2122],{"href":2121},"governance-as-a-multiplayer-primitive","Governance as a multiplayer primitive",". Harness sensor: payload hash matches execution.",[190,2125,2126,2129],{},[202,2127,2128],{},"Segment 5 — record."," Lifecycle evidence for replay. Loop run page links to harness trace.",[190,2131,2132],{},"Buying only segment 3 because “we are an AI company” leaves segments 1, 2, 4, and 5 in Slack. Buying only segment 1 because “we hate agents” leaves segment 3 as manual paste from a personal chat tool — the worst of both worlds.",[190,2134,2135,2138,2139,2141],{},[194,2136,2137],{"href":611},"Four pillars of an enterprise AI platform"," is the hosting story: workstream holds the loop ",[202,2140,856],{}," the harness steps; governance holds the write plane; graph holds the evidence.",[190,2143,2144,2148],{},[194,2145,2147],{"href":475,"rel":2146},[198],"McKinsey’s State of AI"," reports usage ahead of redesign. Segment maps are redesign. A single “AI initiative” slide is not.",[277,2150,2152],{"id":2151},"what-goes-wrong-when-you-conflate-them","What goes wrong when you conflate them",[190,2154,2155,2158,2159,209],{},[202,2156,2157],{},"Agent-wrapping a checklist."," Every Monday the model re-reads instructions and re-derives spreadsheet logic. Cost scales with repetition. Drift scales with temperature. Audit sees a transcript, not a recipe version. See ",[194,2160,1054],{"href":1053},[190,2162,2163,2166,2167,2170,2171,209],{},[202,2164,2165],{},"Treating eval as admission."," A sensor that grades runs does not replace a standing order that starts them. See ",[194,2168,2169],{"href":1722},"standing-order loops"," versus ",[194,2172,2173],{"href":243},"eval loops",[190,2175,2176,2179],{},[202,2177,2178],{},"Harness without organisational ownership."," Hooks exist; nobody owns skip trends on the compiled side. Incidents become prompt edits, not recipe updates.",[190,2181,2182,2185],{},[202,2183,2184],{},"Loop without escalation path."," Ambiguous rows get “best effort” fills. Unknown path → person or explicit agentic workflow, never silent guess overnight.",[190,2187,2188,465,2191,2195],{},[202,2189,2190],{},"Disposable agents ignored.",[194,2192,2194],{"href":2193},"agents-should-be-disposable","Agents should be disposable"," for exploration. If the compiled loop depends on one irreplaceable prompt, you have not compiled — you have hidden a harness inside a scheduled job.",[190,2197,2198,465,2201,230,2203,2205],{},[202,2199,2200],{},"One scorecard.",[194,2202,1178],{"href":468},[194,2204,1269],{"href":1268}," are sibling sheets. Scoring fluency will buy you a copilot. Scoring skip semantics will buy you a standing order. You likely need both, on different segments.",[190,2207,2208,2211],{},[202,2209,2210],{},"Religious war."," “We do not do agents” leaves judgement in side tools. “Everything is an agent” leaves checklists expensive and unauditable. Map the chain.",[190,2213,2214,2215,2217,2218,2220],{},"Conflation is a common lag pattern — one product category expected to solve operations ",[202,2216,856],{}," generation ",[202,2219,856],{}," governance. It will not.",[277,2222,2224],{"id":2223},"governance-and-risk-both-disciplines","Governance and risk (both disciplines)",[190,2226,2227,2231],{},[194,2228,2230],{"href":712,"rel":2229},[198],"NIST AI RMF"," applies to both: Map the job, Measure what ran, Manage controls after incidents. Loop engineering contributes Measure via run pages and skip logs. Harness engineering contributes Manage via hooks and eval ratchets.",[190,2233,2234,2238],{},[194,2235,1395],{"href":2236,"rel":2237},"https://www.iso.org/standard/42001",[198]," wants documented roles. Loops name roster and owner. Harnesses name who may add tools.",[190,2240,2241,2245],{},[194,2242,2244],{"href":1254,"rel":2243},[198],"Stanford HAI AI Index"," tracks deployment velocity. Velocity without segment clarity produces headline pilots that do not survive audit season.",[190,2247,2248,2249,1595,2254,1595,2259,2264,2265,2268],{},"Regulatory texts — ",[194,2250,2253],{"href":2251,"rel":2252},"https://www.govinfo.gov/content/pkg/PLAW-107publ204/html/PLAW-107publ204.htm",[198],"Sarbanes-Oxley",[194,2255,2258],{"href":2256,"rel":2257},"https://artificialintelligenceact.eu/",[198],"EU AI Act",[194,2260,2263],{"href":2261,"rel":2262},"https://gdpr.eu/",[198],"GDPR"," — rarely name either discipline. They ask operational questions: who decided, what ran, can you replay it. Loops answer for unattended segments; harnesses answer for model segments. ",[194,2266,2267],{"href":1121},"Human-in-the-loop"," remains the bridge for judgement.",[190,2270,2271,2272,2275],{},"A practical control split: compiled segments should be replayable without a model; model segments should be refuse-able without trusting the model’s manners. ",[194,2273,2274],{"href":449},"Write-back governance"," sits on actions from either path.",[277,2277,2279],{"id":2278},"a-worked-example-vendor-invoice-matching","A worked example: vendor invoice matching",[190,2281,2282],{},"Accounts payable matches invoices to purchase orders every day.",[190,2284,2285,2288],{},[202,2286,2287],{},"Loop segment (compile)."," Trigger: files in the AP inbox folder. Recipe: read invoice metadata via a structured parser, read the purchase-order export, apply matching rules, output an exception list, notify the AP lead. Skips: unknown vendor code, multi-order ambiguity. No model on the happy path.",[190,2290,2291,2294],{},[202,2292,2293],{},"Harness segment (judgement)."," For “fuzzy description match” rows escalated to a queue, an agentic workflow proposes line mapping with citations to prior approved matches. Harness: read-only history connector, wiki “AP matching v2,” eval loop samples a tenth of cases for controller review.",[190,2296,2297,2300,2301,2304],{},[202,2298,2299],{},"Collaborative segment."," AP lead and controller work skips on the workstream. ",[194,2302,2303],{"href":1598},"How to evaluate collaborative AI",": same run page, named signers, stored rejections.",[190,2306,2307,2310],{},[202,2308,2309],{},"Action segment."," Approved match posts to ERP. Write-back governance. Harness sensor on payload.",[190,2312,2313,2314,2316,2317,230,2319,2321],{},"Score the programme: loop metrics (skip rate, time to list) ",[202,2315,856],{}," harness metrics (refusal rate, eval pass rate). ",[194,2318,1178],{"href":468},[194,2320,1269],{"href":1268}," are sibling scorecards.",[190,2323,2324,2325,2330],{},"Human–AI team research (",[194,2326,2329],{"href":2327,"rel":2328},"https://www.nature.com/articles/s41562-022-01358-0",[198],"Yang et al., Nature Human Behaviour, 2022",") supports explicit division of labour. Loops and harnesses are that division made architectural.",[190,2332,2333],{},"Walk a Tuesday. Eighty invoices match by rule. Twelve skip for unknown vendor codes and go to the human queue. Three fuzzy descriptions enter the harnessed workflow; one proposal is refused because the citation is a different legal entity. Two signed posts go to ERP. The run page shows all of that. Nobody asked a channel “did the bot run.”",[190,2335,2336],{},"If you had agent-wrapped the entire inbox, those eighty matches would have been eighty opportunities to drift. If you had compiled only, the three fuzzy rows would have sat until someone invented a private workaround.",[277,2338,2340],{"id":2339},"how-to-start-this-quarter","How to start this quarter",[190,2342,2343],{},"Do not launch a “loop versus harness” religious war. Map one job.",[672,2345,2346,2352,2358,2369,2377,2383],{},[220,2347,2348,2351],{},[202,2349,2350],{},"Draw the chain"," from trigger to outcome. Box each step.",[220,2353,2354,2357],{},[202,2355,2356],{},"Mark steps as compile, collaborate, generate, or act."," Most chains are mostly compile.",[220,2359,2360,2363,2364,2366,2367,209],{},[202,2361,2362],{},"Implement compile first"," on a ",[194,2365,1040],{"href":1039}," with outputs only. ",[194,2368,1842],{"href":228},[220,2370,2371,2374,2375,209],{},[202,2372,2373],{},"Add harness only on marked generate steps"," with one eval sensor and one refuse case. ",[194,2376,1847],{"href":1603},[220,2378,2379,2382],{},[202,2380,2381],{},"Run ten cycles."," Count skips (loop) and refusals (harness). Update recipe or hooks — not both in one undifferentiated “AI tuning” meeting.",[220,2384,2385,2388],{},[202,2386,2387],{},"Promote one action class"," only after outputs match the manual baseline and at least one rejection has been stored.",[190,2390,2391,2392,2394],{},"If your vendor cannot show a run page ",[202,2393,856],{}," a harness trace for the same job, ask which discipline they actually sell.",[190,2396,2397],{},"Staff the work accordingly. Recipe ownership is an operations role. Hook and sensor ownership is a platform or risk role. Do not assign both to “the AI champion” and hope.",[277,2399,902],{"id":901},[190,2401,2402,2403,2405,2406,2408,2409,2412,2413,209],{},"The platform hosts both patterns on the same ",[194,2404,1040],{"href":1039},". A ",[202,2407,1288],{}," is the compiled standing order — trigger, recipe, run page, skips. Harness controls apply when a model step is attached for an exception class or an ",[194,2410,2411],{"href":253},"agentic workflow",": tools, stops, ",[194,2414,2415],{"href":243},"eval sensors",[190,2417,2418,2420,2421,230,2424,209],{},[194,2419,39],{"href":449}," sits on the write plane for either path. Operators should still be able to point at each object separately. See ",[194,2422,2423],{"href":1722},"what is a Nimbus Loop",[194,2425,1604],{"href":1603},[190,2427,2428,2429,230,2431,209],{},"Product surfaces: ",[194,2430,908],{"href":32},[194,2432,911],{"href":40},[277,2434,2436],{"id":2435},"related-reading","Related reading",[217,2438,2439,2443,2447,2452,2457],{},[220,2440,2441],{},[194,2442,1842],{"href":228},[220,2444,2445],{},[194,2446,1847],{"href":1603},[220,2448,2449],{},[194,2450,2451],{"href":1722},"What is a Nimbus Loop",[220,2453,2454],{},[194,2455,2456],{"href":1053},"A loop is not an agent",[220,2458,2459],{},[194,2460,2462],{"href":2461},"agent-harness-vs-agent-framework","Agent harness vs agent framework",[277,2464,2466],{"id":2465},"sources","Sources",[217,2468,2469,2475,2481,2487,2493,2499,2505,2510,2515,2521,2526,2532,2537],{},[220,2470,2471],{},[194,2472,2474],{"href":1214,"rel":2473},[198],"LangChain, Agents",[220,2476,2477],{},[194,2478,2480],{"href":1896,"rel":2479},[198],"Thoughtworks, The operating system for enterprise AI",[220,2482,2483],{},[194,2484,2486],{"href":2069,"rel":2485},[198],"Thoughtworks, Harness engineering and agent feedback",[220,2488,2489],{},[194,2490,2492],{"href":2064,"rel":2491},[198],"Böckeler, Harness engineering",[220,2494,2495],{},[194,2496,2498],{"href":994,"rel":2497},[198],"Anthropic, Building effective agents",[220,2500,2501],{},[194,2502,2504],{"href":475,"rel":2503},[198],"McKinsey, The state of AI in 2025",[220,2506,2507],{},[194,2508,2230],{"href":712,"rel":2509},[198],[220,2511,2512],{},[194,2513,1395],{"href":2236,"rel":2514},[198],[220,2516,2517],{},[194,2518,2520],{"href":1254,"rel":2519},[198],"Stanford HAI, AI Index",[220,2522,2523],{},[194,2524,2329],{"href":2327,"rel":2525},[198],[220,2527,2528],{},[194,2529,2531],{"href":2251,"rel":2530},[198],"Sarbanes-Oxley Act of 2002",[220,2533,2534],{},[194,2535,2258],{"href":2256,"rel":2536},[198],[220,2538,2539],{},[194,2540,2263],{"href":2261,"rel":2541},[198],[920,2543,922],{},{"title":171,"searchDepth":172,"depth":172,"links":2545},[2546,2547,2548,2549,2550,2551,2552,2553,2554,2555,2556,2557],{"id":896,"depth":172,"text":1199},{"id":1913,"depth":172,"text":1914},{"id":1972,"depth":172,"text":1973},{"id":2017,"depth":172,"text":2018},{"id":2080,"depth":172,"text":2081},{"id":2151,"depth":172,"text":2152},{"id":2223,"depth":172,"text":2224},{"id":2278,"depth":172,"text":2279},{"id":2339,"depth":172,"text":2340},{"id":901,"depth":172,"text":902},{"id":2435,"depth":172,"text":2436},{"id":2465,"depth":172,"text":2466},"Harness engineering designs the runtime around a model. Loop engineering compiles the known path for unattended work. Enterprise programmes need both — they fail in different places.",{"eyebrow":936,"title":2560},"Two disciplines, one programme",[2562,2565,2568],{"question":2563,"answer":2564},"Which comes first — loop engineering or harness engineering?","Start with loop engineering for jobs that already have a checklist and no model on the happy path. Add harness engineering when a step needs generation, tool use, or non-deterministic judgement. Most operational chains are mostly compile: read, rule, table, notify. Generation is a segment, not the programme. Use this order so you do not pay tokens to re-derive VLOOKUP logic every Monday. Refuse a plan that begins with an agent wrap because the vendor demo was fluent.",{"question":2566,"answer":2567},"Can one vendor do both?","A platform can host both patterns. The disciplines stay distinct: compiled recipes with skips are not the same object as hooks and eval sensors around a model. Ask to see a run page for the compiled segment and a harness trace for the generative segment — separately, on the same job. Use one workstream so roster and connectors are shared. Refuse a single slide that calls every scheduled prompt a loop and every checklist an agent. If the vendor cannot show each object, they sell one discipline and market the other.",{"question":2569,"answer":2570},"Does harness engineering replace RPA or loops?","No: harness engineering wraps model steps, loop engineering compiles deterministic paths, and RPA replays screens. Pick the simplest tool for each segment of the job. Use APIs and recorded skips instead of screen replay when the interface will change. Use a harness only where judgement or generation is required. Refuse to replace a working compiled path with an agent because the word agent is in this year's budget, and refuse to call a brittle click-path loop engineering. See loop vs RPA.","/blog/loop-engineering-vs-harness-engineering",{"title":1665,"description":2558},"blog/loop-engineering-vs-harness-engineering",[953,2575,2576,2577],"loop-engineering","harness-engineering","enterprise-ai","6QkINtgytBlvGGP3M1kqCfKMM8RfUAeTIuzaX_-cBio",{"enabled":165,"message":2580,"linkLabel":79,"linkHref":80,"id":2581,"title":2582,"archived":165,"authors":166,"badge":166,"body":2583,"date":166,"definedTerm":166,"department":166,"description":171,"extension":174,"eyebrow":166,"faqHeader":166,"faqs":166,"footerBand":166,"headline":166,"image":166,"industry":166,"jobType":166,"listed":131,"location":166,"navigation":131,"openRoles":166,"pageLayout":166,"path":2587,"relatedHeading":166,"seo":2588,"series":166,"sitemap":165,"status":166,"stem":2589,"subhead":166,"tags":166,"video":166,"whyJoin":166,"workplaceType":166,"__hash__":2590},"We're hiring! Join the team building the Sentient Enterprise.","content/shared/hiring.md","Hiring banner",{"type":168,"value":2584,"toc":2585},[],{"title":171,"searchDepth":172,"depth":172,"links":2586},[],"/shared/hiring",{"title":2582,"description":171},"shared/hiring","1zs3boivKda1e-b-hAyuNcmZSKjZUAXmecnwHVgcHzk",{"fold":2592,"id":2596,"title":2597,"archived":165,"authors":166,"badge":166,"body":2598,"date":166,"definedTerm":166,"department":166,"description":171,"extension":174,"eyebrow":166,"faqHeader":166,"faqs":166,"footerBand":2602,"headline":166,"image":166,"industry":166,"jobType":166,"listed":131,"location":166,"navigation":131,"openRoles":166,"pageLayout":166,"path":2606,"relatedHeading":166,"seo":2607,"series":166,"sitemap":165,"status":166,"stem":2608,"subhead":166,"tags":166,"video":166,"whyJoin":166,"workplaceType":166,"__hash__":2609},{"headline":2593,"description":2594,"primaryLabel":8,"primaryTo":2595,"secondaryLabel":975,"secondaryTo":12},"Run frontier AI your business actually owns.","Governed agent swarms, 2,000+ integrations, and a knowledge graph that stays inside your walls. Start on Free.","/signup?plan=free","content/shared/cta.md","Site CTAs",{"type":168,"value":2599,"toc":2600},[],{"title":171,"searchDepth":172,"depth":172,"links":2601},[],{"headline":2603,"description":2604,"primaryLabel":8,"primaryTo":2595,"secondaryLabel":2605,"secondaryTo":85},"See what governed AI looks like on your stack.","Connect your tools, run a workstream, and keep every decision on your ledger. Start on Free.","Talk to our team","/shared/cta",{"title":2597,"description":171},"shared/cta","PS2VPJsszmUpMBZT6nEp8cWXCdeiN6zDRl-p8d0uY2k",1789797893076]