[{"data":1,"prerenderedAt":517},["ShallowReactive",2],{"insight-rpa-vs-api-integration":3,"insights-cards":407},{"id":4,"title":5,"body":6,"category":388,"date":389,"description":390,"extension":391,"meta":392,"navigation":393,"path":394,"readingTime":395,"relatedArticles":396,"relatedAssessment":400,"relatedServices":401,"seo":404,"stem":405,"__hash__":406},"insights\u002Finsights\u002Frpa-vs-api-integration.md","Bots on the screen or calls to the API: where RPA earns its place and where it becomes debt",{"type":7,"value":8,"toc":377},"minimark",[9,13,18,21,24,27,30,140,143,147,150,157,163,169,175,181,187,190,194,197,243,246,249,253,256,324,328,331,337,343,346,349,353,370,374],[10,11,12],"p",{},"RPA automates a system through the interface built for people. API integration automates it through an interface built for software. The first is faster to start and more expensive to keep. Screen automation is a reasonable tool when there is truly no other door into a system, and it turns into debt the moment it becomes a permanent substitute for an integration you could have built.",[14,15,17],"h2",{"id":16},"two-layers-one-job","Two layers, one job",[10,19,20],{},"Both approaches exist to move data between systems and trigger actions without a person retyping things. They differ in which layer of the target system they touch.",[10,22,23],{},"An RPA bot logs in as a user would. It opens a screen, finds a field by its position, label or underlying element, types a value, clicks a button and reads what appears. It depends on everything a human depends on: the layout, the order of screens, the session, the pop-ups.",[10,25,26],{},"An API integration sends a structured request to an endpoint the vendor has published and receives a structured response. It depends on a contract: these fields, these types, these error codes, this version.",[10,28,29],{},"That difference in what each one depends on explains almost everything else.",[31,32,33,48],"table",{},[34,35,36],"thead",{},[37,38,39,42,45],"tr",{},[40,41],"th",{},[40,43,44],{},"Screen automation (RPA)",[40,46,47],{},"API integration",[49,50,51,63,74,85,96,107,118,129],"tbody",{},[37,52,53,57,60],{},[54,55,56],"td",{},"Depends on",[54,58,59],{},"UI layout, labels, timing, session behavior",[54,61,62],{},"A documented, versioned contract",[37,64,65,68,71],{},[54,66,67],{},"Changes without warning",[54,69,70],{},"Often: any UI release can move things",[54,72,73],{},"Rarely: breaking changes are usually versioned and announced",[37,75,76,79,82],{},[54,77,78],{},"Failure style",[54,80,81],{},"Frequently silent: wrong field, stale screen, unexpected dialog",[54,83,84],{},"Usually explicit: status code and error body",[37,86,87,90,93],{},[54,88,89],{},"Speed and volume",[54,91,92],{},"Limited by how fast a UI responds",[54,94,95],{},"Limited by rate limits and server capacity",[37,97,98,101,104],{},[54,99,100],{},"Transaction safety",[54,102,103],{},"None: a crash mid-flow leaves partial work",[54,105,106],{},"Often atomic per call, sometimes idempotent",[37,108,109,112,115],{},[54,110,111],{},"Time to first result",[54,113,114],{},"Days",[54,116,117],{},"Weeks, more if the API is poor or missing",[37,119,120,123,126],{},[54,121,122],{},"Who can build it",[54,124,125],{},"Analysts with a low-code tool",[54,127,128],{},"Software engineers",[37,130,131,134,137],{},[54,132,133],{},"Needs vendor cooperation",[54,135,136],{},"No",[54,138,139],{},"Yes, an API must exist and you must have access",[10,141,142],{},"The last three rows are why RPA gets chosen. The first five are why it gets regretted.",[14,144,146],{"id":145},"the-cost-that-is-missing-from-the-estimate","The cost that is missing from the estimate",[10,148,149],{},"An RPA proposal usually prices the build: so many processes, so many days each. The build is the small part. The costs that arrive later look like this.",[10,151,152,156],{},[153,154,155],"strong",{},"Breakage from changes you do not control."," The SaaS vendor ships a redesigned form. The ERP gets a patch that adds a confirmation dialog. A browser update changes how an element renders. IT pushes a new screen resolution or a security banner. The bot was not consulted about any of these, and each one can stop it or, worse, misdirect it.",[10,158,159,162],{},[153,160,161],{},"Silent wrong results."," A failed API call tells you it failed. A bot that typed the amount into the reference field because the form gained a new row may complete \"successfully\" hundreds of times before anyone notices. The cost of a quiet error is the cleanup plus every decision made on the bad data.",[10,164,165,168],{},[153,166,167],{},"Exceptions that return to people."," A bot handles the path it was recorded on. The customer with two accounts, the invoice in a foreign currency, the record locked by another user all fall out to a manual queue. If that queue is thirty percent of the volume, you have automated the easy seventy percent and kept the team that handles the hard part, now with less context.",[10,170,171,174],{},[153,172,173],{},"Infrastructure and licenses."," Bots need machines or virtual desktops to run on, a scheduler, an orchestrator and, with commercial platforms, licenses that are often priced per bot or per runtime. These are recurring costs that sit outside the original business case.",[10,176,177,180],{},[153,178,179],{},"Credentials and audit."," A bot needs a login. It is tempting to give it a real employee's account or a shared one. Then the audit log says a person did things a script did, multi-factor authentication becomes an obstacle to work around, and password rotation breaks production on a schedule.",[10,182,183,186],{},[153,184,185],{},"The frozen process."," This is the least visible cost. Once forty bots depend on the exact screens of a system, upgrading that system means retesting and repairing forty bots. Modernization gets postponed because the automation built to cope with the old system has made it more expensive to leave.",[10,188,189],{},"A rough test for whether a bot has become debt: add up the hours spent each month repairing and babysitting it, and compare that with the hours it saves. Many teams have never done this sum for their oldest bots.",[14,191,193],{"id":192},"a-decision-order-that-holds-up","A decision order that holds up",[10,195,196],{},"Before choosing screen automation, go through the alternatives in order. Stop at the first one that works.",[198,199,200,207,213,219,225,231,237],"ol",{},[201,202,203,206],"li",{},[153,204,205],{},"A documented API."," Check current vendor documentation, not memory. Many systems that had no API five years ago have one now, sometimes on a higher license tier that is still cheaper than a bot farm.",[201,208,209,212],{},[153,210,211],{},"Webhooks or events"," the system can emit when something changes.",[201,214,215,218],{},[153,216,217],{},"A supported bulk interface",": scheduled export, import file, SFTP drop, EDI.",[201,220,221,224],{},[153,222,223],{},"A database interface the vendor supports",", such as a reporting replica or a staging table that the application itself validates and processes.",[201,226,227,230],{},[153,228,229],{},"An integration platform connector"," that someone else maintains against the vendor's API.",[201,232,233,236],{},[153,234,235],{},"Asking the vendor or the other party."," A partner portal with no API sometimes has one for customers who ask, or will send a daily file.",[201,238,239,242],{},[153,240,241],{},"Screen automation."," When all of the above are closed.",[10,244,245],{},"There are legitimate cases at step 7. A mainframe terminal application with no service layer. A government or insurer portal that offers only a web form. A desktop application whose vendor no longer exists. A partner's system you have no leverage over. A process that will be retired in six months, where a proper integration would never pay back.",[10,247,248],{},"There is also a legitimate tactical use: a bot as a bridge. You need relief this quarter and the real integration will take two. That is fine, provided the bridge has an end date written down and an owner for the replacement.",[14,250,252],{"id":251},"if-the-screen-is-your-only-door","If the screen is your only door",[10,254,255],{},"When RPA is the right answer, build it as if it were production software, because it is.",[257,258,259,270,276,282,288,294,300,306,312,318],"ul",{},[201,260,261,264,265,269],{},[153,262,263],{},"Wrap it behind an interface."," The rest of your systems should call something like ",[266,267,268],"code",{},"submitClaim(claim)"," and receive a result. They should not know a bot is involved. When an API becomes available, you replace the inside and nothing else changes.",[201,271,272,275],{},[153,273,274],{},"Never let the bot borrow a person's login."," Create a service account used by nothing else, grant it the minimum access the process requires, hold its credentials in a secrets vault, and make sure the audit log can tell its activity apart from human activity. Check the target system's terms of use: some prohibit automated access.",[201,277,278,281],{},[153,279,280],{},"Anchor on stable things."," Prefer element identifiers and accessibility labels to screen coordinates and image matching. Coordinates are the first thing a redesign breaks.",[201,283,284,287],{},[153,285,286],{},"Verify after every write."," Do not assume the click worked. Read the record back and compare it with what you intended to enter. This single habit converts most silent failures into loud ones.",[201,289,290,293],{},[153,291,292],{},"Make each item restartable."," Work from a queue. Record the state of every item (pending, in progress, done, failed with reason). A crashed run should resume without creating duplicates, which means checking whether the item already exists before entering it.",[201,295,296,299],{},[153,297,298],{},"Design the exception path first."," Decide where unhandled cases go, who works them and how fast. Capture a screenshot and the data at the point of failure so a person can pick it up without starting over.",[201,301,302,305],{},[153,303,304],{},"Monitor like a service."," Alert on failure, on unusually long run times and on unusual volumes, including zero. A bot that processed nothing and reported success is a common Monday morning discovery.",[201,307,308,311],{},[153,309,310],{},"Run a canary."," A small scheduled check that logs in and confirms key screens look as expected will catch a UI change before the nightly batch does.",[201,313,314,317],{},[153,315,316],{},"Keep the scripts in version control",", with a test environment if the target system offers one, and one named owner per bot.",[201,319,320,323],{},[153,321,322],{},"Write the exit condition."," \"Retire when the vendor releases the claims API\" or \"retire when system X is replaced\". Review it twice a year.",[14,325,327],{"id":326},"what-ai-changes-and-what-it-leaves-alone","What AI changes, and what it leaves alone",[10,329,330],{},"Language and vision models have changed part of this picture, and it helps to be precise about which part.",[10,332,333,336],{},[153,334,335],{},"Where they help."," A large share of bot failures used to come from unstructured input: an invoice PDF in a new layout, an email written by a person, a scanned form. Models are good at turning that into structured fields, which is the step that rigid templates handled worst. Models can also locate an element on a screen by what it is (\"the Submit button\") instead of where it is, which makes automation less sensitive to cosmetic changes. And they speed up the writing of integration code and mappings, which lowers the cost of doing the API work properly.",[10,338,339,342],{},[153,340,341],{},"Where nothing has changed."," A model that drives a user interface still depends on that interface. It is slower and more expensive per step than a script, and it is not deterministic: the same screen can produce a different action on a different run. A deterministic bot that breaks stops. A model-driven agent that is confused may keep going, plausibly and wrongly. For work that has to be done the same way ten thousand times, that is the wrong property.",[10,344,345],{},"It also does not make a user interface transactional, does not remove rate limits or terms of use, and does not produce a contract where the vendor has not published one.",[10,347,348],{},"The combination that works in practice: use a model to read and classify the messy input, attach a confidence measure, send low-confidence cases to a person, and let deterministic code (an API call where possible, a scripted bot where not) perform the action. Keep the judgment and the execution in separate components so each can be tested on its own.",[14,350,352],{"id":351},"the-short-version","The short version",[257,354,355,358,361,364,367],{},[201,356,357],{},"If an API, event or supported file interface exists, use it. It costs more in the first month and less every month after.",[201,359,360],{},"If none exists, RPA is a valid tool. Treat it as software: isolated behind an interface, verified, monitored, owned.",[201,362,363],{},"If RPA is a stopgap, give it an end date and fund the replacement.",[201,365,366],{},"A fleet of bots around an old system is a reason to modernize that system, not a way to avoid it.",[201,368,369],{},"AI improves the reading of unstructured input. It does not turn a screen into a contract.",[14,371,373],{"id":372},"is-your-automation-saving-time-or-just-moving-the-work-to-whoever-fixes-the-bots","Is your automation saving time, or just moving the work to whoever fixes the bots?",[10,375,376],{},"If you are not sure, that is worth measuring before the next bot gets built. Trivo can inventory your automations, sort the bots that could be replaced by a proper integration from the ones that should stay as they are, and give you a written plan with the costs side by side.",{"title":378,"searchDepth":379,"depth":379,"links":380},"",2,[381,382,383,384,385,386,387],{"id":16,"depth":379,"text":17},{"id":145,"depth":379,"text":146},{"id":192,"depth":379,"text":193},{"id":251,"depth":379,"text":252},{"id":326,"depth":379,"text":327},{"id":351,"depth":379,"text":352},{"id":372,"depth":379,"text":373},"AI","2026-10-12","RPA and API integration solve the same problem at different layers. How to choose, what screen automation really costs, and how to run it safely if you must.","md",{},true,"\u002Finsights\u002Frpa-vs-api-integration",9,[397,398,399],"legacy-erp-anticorruption-layer","llm-in-production-confidence-thresholds","strangler-fig-modernization","operational-efficiency",[402,403],"ai-automation","custom-software",{"title":5,"description":390},"insights\u002Frpa-vs-api-integration","4P6yr2YhYa5bJlrDAAs-zK8J8SvSYGRHsA6Pl861QJw",[408,415,422,427,432,437,445,450,455,460,466,472,477,483,489,495,500,505,507,512],{"path":409,"title":410,"description":411,"category":412,"readingTime":395,"relatedServices":413,"date":389},"\u002Finsights\u002Fbuild-vs-buy","The License Fee Is the Small Number: A Working Guide to Build or Buy","Buying software is usually right, until the product sits on top of how you make money. How to sort capabilities, price the hidden costs and decide.","Strategy",[403,414],"modernization",{"path":416,"title":417,"description":418,"category":419,"readingTime":395,"relatedServices":420,"date":389},"\u002Finsights\u002Fcloudflare-observability","The Cloudflare Signals You Need Wired Up Before Something Breaks","Cloudflare records plenty by default. Whether a person hears about a problem in time depends on choices made in a quiet week, not mid-outage.","Cloudflare",[421,414],"cloudflare",{"path":423,"title":424,"description":425,"category":419,"readingTime":395,"relatedServices":426,"date":389},"\u002Finsights\u002Fcloudflare-performance-tuning","After the Static Assets: Where Cloudflare Performance Is Actually Won","Default caching handles images, CSS and JavaScript. The larger gains sit in HTML, API responses, cache keys and origin trips that nobody tuned.",[421,403],{"path":428,"title":429,"description":430,"category":419,"readingTime":395,"relatedServices":431,"date":389},"\u002Finsights\u002Fcloudflare-waf-and-ddos","Managed Rules Know the Internet. Custom Rules Have to Know Your Application.","Cloudflare's managed WAF and DDoS rules stop generic attacks. Logins, APIs, bots and false positives still need rules written from your own traffic.",[421,403],{"path":433,"title":434,"description":435,"category":419,"readingTime":395,"relatedServices":436,"date":389},"\u002Finsights\u002Fcloudflare-zero-trust-and-integrity","Who Got In Versus What Is Running: Two Integrity Problems One Control Cannot Solve","Zero Trust verifies who reaches a system. Client-side script monitoring verifies what runs in the browser. They fail differently and need separate owners.",[421,414],{"path":438,"title":439,"description":440,"category":441,"readingTime":442,"relatedServices":443,"date":389},"\u002Finsights\u002Fcrm-adoption-and-training","Your CRM Passed Every Test and Nobody Uses It: A Diagnostic for Stalled Adoption","Low CRM adoption is rarely a training gap. How to tell whether the cause is screen friction, missing payback or management habits, and what to fix first.","CRM",8,[444],"crm",{"path":446,"title":447,"description":448,"category":441,"readingTime":442,"relatedServices":449,"date":389},"\u002Finsights\u002Fcrm-implementation-timeline","The Honest Calendar of a CRM Implementation: Five Phases and Where the Weeks Go","Provisioning a CRM takes a day. Making it the place your team sells from takes months. A phase-by-phase calendar, with the parts quotes tend to leave out.",[444,403],{"path":451,"title":452,"description":453,"category":441,"readingTime":395,"relatedServices":454,"date":389},"\u002Finsights\u002Fcrm-migration-checklist","CRM Migration Checklist: The Records Arrive, the Selling Process Gets Left Behind","A CRM migration is a process migration with a data load attached. What a plain export loses, how to choose a cutover, and a checklist for each stage.",[444,414],{"path":456,"title":457,"description":458,"category":441,"readingTime":442,"relatedServices":459,"date":389},"\u002Finsights\u002Fcustom-crm-vs-off-the-shelf","Should You Build Your Own CRM? Run the Build-or-Buy Test on Your Sales Process","Most of a CRM is a commodity you should buy. The question is whether the way you sell fits the platform's model, and what it costs when it does not.",[444,403],{"path":461,"title":462,"description":463,"category":412,"readingTime":464,"relatedServices":465,"date":389},"\u002Finsights\u002Fcustom-software-cost-framework","Estimate Before the Estimate: Sizing a Custom Software Budget on Your Own","You can't know the price before a quote, but you can know what drives it. Six cost drivers, a self-check worksheet and how to read a proposal.",10,[403],{"path":467,"title":468,"description":469,"category":470,"readingTime":395,"relatedServices":471,"date":389},"\u002Finsights\u002Fetl-vs-elt","Transform before or after loading? A practical ETL versus ELT decision for mid-sized teams","ETL or ELT is a question of where transformation runs and who pays for it. A practical way for a mid-sized team to choose, with the costs most plans miss.","Data",[403,402],{"path":473,"title":474,"description":475,"category":412,"readingTime":464,"relatedServices":476,"date":389},"\u002Finsights\u002Fevaluating-engineering-depth","Ask About the Outage: How to Vet a Software Vendor's Real Engineering Ability","Portfolios and logos look the same from every vendor. The interview questions, artifacts and deal-breakers that show who has really run software in production.",[403,414],{"path":478,"title":479,"description":480,"category":481,"readingTime":464,"relatedServices":482,"date":389},"\u002Finsights\u002Fhipaa-business-associate-agreement","A BAA Is a Contract, Not a Badge: What Your Software Vendor Is Really Signing Up For","What a HIPAA Business Associate Agreement commits a software vendor to, what it leaves unproven, and what to ask and build before PHI reaches the system.","Compliance",[403,402],{"path":484,"title":485,"description":486,"category":481,"readingTime":487,"relatedServices":488,"date":389},"\u002Finsights\u002Fhipaa-technical-safeguards-checklist","Reading 45 CFR 164.312 Like a Design Document: HIPAA Technical Safeguards for Engineers","The five HIPAA technical safeguard standards mapped to concrete engineering decisions: identity, logging, integrity, authentication and encryption.",11,[403,414,421],{"path":490,"title":491,"description":492,"category":493,"readingTime":395,"relatedServices":494,"date":389},"\u002Finsights\u002Flegacy-erp-anticorruption-layer","The ERP stays as it is: building on a decades-old system through an anti-corruption layer","How to build new software on an old ERP without modifying it, using an anti-corruption layer: what goes inside, how to handle writes, when to skip it.","Modernization",[414,403],{"path":496,"title":497,"description":498,"category":388,"readingTime":464,"relatedServices":499,"date":389},"\u002Finsights\u002Fllm-in-production-confidence-thresholds","An LLM that proposes and a system that decides: thresholds, review and audit for production AI","Running an LLM in production without giving it autonomy: measured confidence, thresholds set by business cost, human review that works, an audit trail.",[402,403],{"path":501,"title":502,"description":503,"category":412,"readingTime":395,"relatedServices":504,"date":389},"\u002Finsights\u002Fnearshore-offshore-onshore-cost","Cheap Hours, Expensive Projects: Pricing US, Nearshore and Offshore Teams Honestly","The hourly rate tells you little about what a project will cost. How overlap, rework, turnover and compliance change the math for each delivery model.",[403],{"path":394,"title":5,"description":390,"category":388,"readingTime":395,"relatedServices":506,"date":389},[402,403],{"path":508,"title":509,"description":510,"category":493,"readingTime":395,"relatedServices":511,"date":389},"\u002Finsights\u002Fstrangler-fig-modernization","Replace the legacy system in slices: a working guide to the strangler fig pattern","How to retire a legacy system piece by piece while the business keeps running: the facade, the first slice, parallel runs, and when the pattern fails.",[414,403],{"path":513,"title":514,"description":515,"category":412,"readingTime":464,"relatedServices":516,"date":389},"\u002Finsights\u002Ftwo-week-discovery-deliverables","Paying for a Plan, Not a Pitch: What Two Weeks of Discovery Owes You","A paid discovery should leave you with documents another team could build from. The five deliverables, the work behind them and the limits to expect.",[403,414],1792618973216]