Build
Connect & operate
Design & teams
Start hereScope a build in one callBring a spec, a wireframe, or a paragraph. You leave with an architecture, a timeline, and a number.Book a scoping call
AI software
LLM & data systems
Vibe coding
Ready to ship?Put AI where the work isAgents, RAG, and private LLMs wired into the systems your team already uses — not a chatbot bolted to a homepage.Discuss an AI project
Domain firstWe learn your workflow before we model itRegulated, operational, or high-volume — the constraints belong in the schema, not in a training doc.Talk about your domain
Plan smarterEstimate before you commitCost ranges, scope templates, and the questions we ask in discovery — free, no form.Open the cost calculator
Real conversationsTalk with a technical leadNo SDR, no discovery gauntlet. The person on the call is the one who scopes the build.Book a call
Rules-based automation, not a black box

Robotic process automation (RPA)
that survives the next system upgrade

RPA bots are fast and cheap to build against a stable process, and they break the moment a source system's UI changes underneath them. We map the process before we automate it, build against APIs wherever one exists instead of scripting a screen, and tell you plainly when the real fix is a data pipeline or an integration — not another bot layered on top of a workaround.

Map your process for automation How engagements work
Process mapped and documented before anything is automatedAPI-first bots wherever an API exists, screen-scraping only where it doesn'tA maintenance plan for when the source system changes

Senior only

Engineers on every build

Process mapping through bot maintenance

US-based

Team, start to finish

No unnamed subcontractor added mid-project

Day one

You own the code and the bots

Runs in your environment, from the first commit

10 biz days

To start

From a signed scope to the first sprint

Before you automate

RPA is the right tool for a narrower set of problems than it's sold for

Robotic process automation means scripting a computer to do what a person currently does by hand — reading a screen, moving data between systems, following the same rule every time. It's a genuinely strong fit for some work and a poor one for other work that gets sold the same way. Knowing which is which before you scope a bot saves the rebuild later.

RPA fits rules-based, repeatable work

Moving data between systems, filling in a form the same way every time, reconciling two reports against a fixed rule. If a person doing the task would never need to use judgment, a bot can do it reliably.

RPA is the wrong tool for judgment calls

Deciding whether an invoice looks fraudulent, classifying an ambiguous support ticket, or anything where a trained person would weigh context — that needs a machine learning layer on top of, or instead of, scripted RPA. Automating the judgment call with plain rules just moves the error rate somewhere less visible.

APIs beat screen-scraping every time one exists

A bot built against a documented API reads structured data and rarely breaks. A bot built by scripting clicks against a UI is reading pixels and coordinates, and it breaks the day that UI gets a redesign nobody told you about. Check for an API before accepting a screen-scraping scope.

Screen-scraping is sometimes the only option, not a shortcut

Legacy mainframes, some vendor portals, and systems with no public API leave no other path. That's a legitimate reason to screen-scrape — the problem is when it's chosen for convenience on a system that actually exposes an API nobody checked for.

Process mapping comes before automation, not after

Automating a broken or undocumented process just makes the broken process run faster and harder to change. Mapping every branch and exception first — including the ones nobody mentions until the bot hits them in production — is what keeps a bot from silently doing the wrong thing on the case nobody thought to describe.

A bot inherits every quirk of the process it copies

If the person doing the task today has an informal workaround for a known data-entry bug upstream, the bot needs that workaround explicitly designed in — it won't discover it the way a person would, and it won't flag that anything's unusual when it hits the case that needs one.

What it costs

RPA engagement types

Real ranges for the engagements we're actually asked to run. The variable that moves a quote is not the number of bots — it's how many source systems are undocumented, and how many exceptions the process actually has once you go looking.

EngagementCommitmentTimelineWhat's included
Process assessmentFixed scope1 – 3 weeksProcess mapping, an automation-fit rating for each candidate task, and a prioritized list ranked by return against effort.
Single-process bot buildFixed scope3 – 6 weeksOne process automated end to end, including exception handling for the branches the mapping phase actually found.
Multi-process automation programFixed scope8 – 16 weeksSeveral related bots built against a shared framework, with centralized logging and a single place to see what's running and what failed.
AI-assisted automationFixed scope6 – 12 weeksA classification or extraction model layered onto rules-based RPA for the parts of the process that need judgment rather than a fixed rule.
Ongoing bot maintenanceOngoing retainerOngoingMonitoring, source-system change detection, and fixes when an upstream UI or schema changes underneath a running bot.

Ranges assume US-based senior engineers and include exception-handling design, not just the happy path. A quote well under these bands is usually automating only the common case and leaving every edge case to fail silently in production, which shows up later as a support ticket nobody can explain.

Where bots break

RPA maintenance is the part every pitch underestimates

A bot that works perfectly on day one is not the same thing as a bot that's still working in month eight. Screen-based automation in particular is fragile in a specific, predictable way, and planning for that is cheaper than discovering it during an outage.

A UI redesign breaks a screen-scraping bot without warning

The vendor or internal team that owns the source system has no reason to know a bot depends on the exact position of a button, and no obligation to warn anyone before changing it. Monitoring that catches a failed run within hours, not days, is what keeps this from becoming an invisible backlog of unprocessed work.

An API version bump is gentler, but not free

API-based bots break less often than screen-scraping ones, but a deprecated endpoint or a changed response schema still needs someone watching for it. Version pinning and a deprecation-notice habit reduce surprise, they don't eliminate it.

Exception volume tends to grow, not shrink, after launch

The mapping phase finds the exceptions that happen often enough to notice. The rare ones surface over the following months, one at a time, and each one is a small design decision about whether the bot should handle it, flag it, or stop and wait for a person.

Centralized logging is what makes maintenance possible at all

A bot that fails silently in a script window nobody's watching is worse than no automation, because everyone assumes the work is getting done. A dashboard showing what ran, what failed, and why turns maintenance into a routine check instead of a surprise.

Bot sprawl is the long-term failure mode, not any single bot breaking

Dozens of small bots built by different people over a few years, with no shared framework or inventory, becomes its own undocumented legacy system — the exact problem RPA was supposed to fix, one layer up. An inventory of what's running and who owns it should exist from the second bot onward, not the fiftieth.

RPA and AI

Where RPA ends and machine learning actually starts

Modern automation projects increasingly combine both, and knowing which piece is doing which job keeps the design honest instead of over-promising what plain rules-based RPA can do on its own.

Structured data, fixed rules: RPA alone

Moving a number from one system to another, applying a fixed threshold, filling a form the same way every time. No model needed, and adding one here just adds cost and a new failure mode for no benefit.

Unstructured input, consistent categories: add classification

Sorting incoming documents or tickets into a known, fixed set of categories is a good fit for a classification model feeding into an RPA workflow that then acts on the result.

Extracting data from documents: add OCR and extraction

Pulling structured fields out of invoices, forms, or scanned documents that vary in layout is squarely a document-intelligence problem, not something a scripted bot can do reliably on its own.

Genuine judgment calls: keep a person in the loop

Anything with real ambiguity or business risk in the decision — approving an exception, flagging likely fraud — should route to a person with the AI's assessment as input, not silently auto-decide. The point of adding AI here is better-informed humans, not fewer of them making the call.

The AI layer needs the same maintenance discipline as the bot

A classification model trained on last year's document formats drifts as those formats change, the same way a screen-scraping bot drifts when a UI changes. Budget for retraining and accuracy monitoring, not just the initial build.

Start with RPA, add AI where the mapping shows you need it

Building the AI layer before mapping the process usually means guessing at what needs judgment instead of knowing. The assessment phase should tell you exactly which steps are rules and which are calls, before either gets built.

How an engagement runs

From process map to a bot your team can operate

The sequence below exists so a bot ships with documentation and monitoring attached, not as a script only its author understands.

Business process mapping

Breaking the process into discrete, actionable steps and documenting every branch and exception, not just the common path — this is the work that determines whether automation will actually hold up in production.

Automation-fit assessment

Rating each candidate step for whether it's a fixed rule, a judgment call, or something in between, and sequencing the build around the highest-return, lowest-risk steps first.

Design and build

Building against an API wherever one exists, with exception handling designed in from the branches the mapping phase found — not added after the bot hits one in production.

Testing against real cases, not just the happy path

Running the bot against historical data that includes the known exceptions, and deliberately including the messy, rare cases rather than only the clean examples used in the demo.

Deployment with monitoring attached

Shipping with logging and alerting in place from day one, so a failed run surfaces within hours instead of showing up as a pile of unprocessed work weeks later.

Ongoing support

Watching for source-system changes, fixing what breaks, and extending the bot as the process it automates inevitably changes too.

Related

Related services

What RPA projects usually need alongside the bots themselves.

Questions

RPA questions we get before scoping a build

What teams ask before a first call.

RPA is software that performs a rules-based, repeatable task the way a person currently does it by hand — moving data between systems, filling in a form, reconciling two reports against a fixed rule. It works best on tasks a trained person would do the exact same way every single time.

It is not a general problem-solver. Tasks that genuinely need judgment or handle unpredictable input need a machine learning layer added on top, or a person kept in the loop, rather than more elaborate rules bolted onto a scripted bot.

Not sure if a process is actually a fit for RPA?

Send us the process, exceptions included. We'll map it, tell you honestly whether it's a clean fit for rules-based automation, needs an AI layer, or needs the underlying system fixed first — and what keeping a bot running actually takes after launch.