Skip to main content

Are We Actually Eliminating the Complexity Tax, or Just Getting Better at Paying It?

Gabe Hilado
Founder and CEO, Zenpo Software Innovations

April 15 is Tax Day. Fitting, because software has its own version: a complexity tax that most teams pay without ever seeing the bill.

Every manual handoff between systems. Every field re-keyed from one screen into another. Every reconciliation spreadsheet that exists because two platforms don't agree on what happened. That's the tax. And most organizations pay it so routinely they've stopped noticing the line item.

What does "reduced duplicate entry" actually mean?

ACRP recently published a piece on EHR-to-EDC integration — connecting electronic health records to electronic data capture systems in clinical trials. The problem it addresses is real and well-documented: as much as 70% of EDC data originates from EHRs and other external sources. Sites re-enter that data manually. That manual re-entry introduces errors. Those errors trigger sponsor queries. Those queries eat coordinator time. The cycle has been grinding for over twenty years.

Medidata's answer is an integration layer. A "supervised, assistive workflow" that keeps humans in the loop while automating the rote transcription. The pitch: reduce site burden, accelerate study completion, catch safety events earlier.

Sounds good. And it probably is good — for the organizations adopting it.

But notice the language. Reduce site burden. Reduce duplicate entry. Reduce operational overhead. Every claim is about reduction, not elimination. That distinction matters more than the press release suggests.

Complexity tax: reduction versus removal

Reducing a complexity tax means you still pay it. You just pay less.

Tax removal means the underlying obligation no longer exists. The transaction that generated the tax is gone — redesigned, collapsed, or made unnecessary.

When a clinical site integrates EHR data into an EDC system, the data still moves between two architecturally separate systems. The integration layer smooths the handoff. It pre-populates fields. It flags mismatches. But the two-system architecture remains. The site still operates in both environments. The mapping rules still need maintenance. The edge cases — the ones where EHR data doesn't cleanly map to EDC fields — still require human judgment.

The toll booth got a wider lane and an E-ZPass reader. But the toll booth is still there.

This isn't a criticism of Medidata specifically. It's a pattern that repeats across enterprise software. The incumbent optimizes inside its own layer. It makes the existing workflow faster, smoother, less painful. But it rarely questions whether the workflow itself should exist.

Why incumbents optimize the toll booth

There's a structural reason for this. Incumbent platforms are load-bearing walls. Medidata Rave is embedded in thousands of active clinical trials. Epic is the operating system of major health networks. You don't rip out a load-bearing wall because someone invented a better floor plan.

So the rational move — the commercially sound, technically safe, regulatory-defensible move — is to make the existing architecture less painful. Build bridges between the systems. Automate the manual steps. Reduce the error rate on the handoff.

And honestly, that's valuable. A 40% reduction in coordinator time spent on data entry is real money, real hours, real burnout avoided. Nobody should dismiss that.

But it's also worth being precise about what happened. The complexity didn't disappear. It got a better interface.

The same pattern shows up everywhere

Clinical research isn't special here. The pattern is everywhere enterprise software touches operational workflows.

A SharePoint site connected to a CRM through Power Automate. The data flows, mostly. Until someone changes a column name, or a flow hits a throttling limit, or the connection token expires on a Friday night. The integration reduced manual copy-paste. It didn't remove the reason manual copy-paste existed — two systems that don't share a data model.

A project management tool synced to a time-tracking tool synced to a billing system. Three sources of truth, stitched together with webhooks and prayer. The sync "works." The reconciliation spreadsheet still exists, just in case.

Every one of these is a payment against that tax. The tax got smaller. The obligation didn't.

Effort toward storage vs. effort toward decisions

Here's where the difference starts to matter operationally.

When the tax stays in place — even at a reduced rate — the effort people spend goes toward maintaining the system. Keeping the sync alive. Validating the mapping. Reconciling the discrepancies. That effort produces compliance. It produces data storage. It produces audit trails. All necessary. None of it produces insight.

The alternative isn't necessarily fewer systems or less data. It's a different return on the same effort. When operational work produces visibility — when the act of entering data also surfaces a pattern, or flags a risk, or informs a decision — the effort has a different ROI. Same keystrokes, different yield.

A coordinator who spends 30 minutes re-entering vitals into an EDC form has produced a record. A coordinator who spends 30 minutes reviewing auto-populated data and confirming clinical context has produced a judgment. The time spent might be similar. What the organization gets back is not.

Seattle Children's Therapeutic Development Network Coordinating Center ran into this exact distinction. Enrollment data lived in Medidata Rave — study-level, execution-focused, doing exactly what an EDC is built to do. But the network needed a portfolio-level view across studies. Rave doesn't provide that. It was never designed to. They had COMET, a custom clinical trials portfolio management system, with roots going back to 2009.

For years, the team bridged that gap manually. In one meeting, they described the process almost casually: export a report from the EDC, use it as a cheat sheet, then go screen by screen in COMET and re-enter the data. Carefully. Repeatedly. Because they needed that portfolio view. The behavior wasn’t the problem. The friction was.

So we built the integration. Instead of using exports as a guide for manual entry, the data flowed directly from Rave into COMET. Around 300 study sites’ worth of data moving through each month. Fewer errors. Less time spent on transcription. A real efficiency gain.

But the reason it worked wasn’t just automation. Importing into COMET was a desired flow — because it produced a portfolio-level view the EDC was never meant to provide.

The data wasn’t just copied. Rather, it was transformed — from execution-level records into network-wide visibility. The tax didn’t disappear; it was already justified. The integration just stripped out the wasted motion. What matters isn’t speed. It’s whether that movement produces anything beyond compliance.

Designing around unavoidable complexity

Some complexity is genuinely unavoidable. Regulated industries require documentation trails. Multi-system environments exist because no single vendor covers every function. Data has to move between contexts, and that movement has friction.

The design question isn't "how do we eliminate all friction?"

Given that this friction exists, what does the user get in exchange for enduring it?

Most enterprise UX treats operational friction as a cost to minimize. But the sharper move is treating friction as a surface.

If someone has to touch the data anyway, that moment should produce a view they cannot get anywhere else.

Every interaction is a chance to show something new. They can surface context. They can prompt decisions. They can make the person doing the work smarter about the work, not just faster at completing it.

You don’t add this later. It has to be part of the system from the start. Most integration-layer vendors don’t build this way — their business depends on keeping the systems separate. The bridge is the product. Tear down the bridge, and you tear down the revenue.

When a system claims to reduce complexity, how do you tell if it's removing the tax — or just optimizing the toll booth?

Three questions worth asking before the next vendor demo:

Where does the data live after the "integration"?

If it still lives in two places, the complexity tax is still being paid. The check might be smaller, but the obligation is unchanged.

What happens when the integration inevitably breaks?

Every integration has a failure mode. If the failure mode is "people go back to doing it manually," then the manual process was never actually replaced. It was papered over.

What does the person doing the work get out of the interaction?

If the answer is "they complete a task," that's storage. If the answer is "they see something they wouldn't have seen otherwise," that's visibility. Same effort. Different return.

Reducing the complexity tax is worth doing. But it's worth knowing which operation you're paying for — a lower rate, or a different structure entirely.

The toll booth is smoother than it's ever been. The question is whether the road still needs one.