Problems & solutions · Internal Tools

MLR Review Software Problems: The 7 That Cost Real Money, and How to Avoid Them

Promotional Material Review Software product interface illustration showing common problems and fixes.
The short answer

The most expensive failure mode is a claim that dies but stays in the field. A reference is superseded or a label narrows, and every asset resting on that reference stays live on rep tablets, on the product site and inside email templates for weeks, because review platforms expire assets by date and notify an owner rather than removing anything. Recovery is a manual sweep across every channel you distribute through, which costs a weekend of compliance and brand time per event and still leaves you unable to prove the material is gone. The gap between the moment a claim goes invalid and the moment it disappears from a tablet is the exposure an inspector asks about first.

Why does an MLR build get scoped as a document workflow when the risk lives in claims?

Nearly every failed promotional review project we have seen started with the same scoping conversation. Someone described the current process, which is a file moving between a medical reviewer, a legal reviewer and a regulatory reviewer, and the developer built exactly that. The result is a workflow engine around a document, which is what Veeva Vault PromoMats and Vodori Pepper Flow already do, only slower and without their annotation maturity.

This is specific to pharmaceutical commercial operations because the unit that carries liability is not the file. It is the claim: a statement about the product, tied to a reference, approved for an indication, in a market, for a period. The same sentence lives in forty assets in forty slightly different wordings, and when the substantiation moves, nobody can produce the list of live material affected. A workflow engine cannot answer that question because it never stored the relationship.

The fix is a data model decision made before any screen is designed. The claim becomes the primary record with its own version history, its own linked references and its own status per market and per indication. An asset becomes a composition of placements, each bound to a specific claim version. Once that exists, reviewers open a file where eight of ten placements are already approved claim versions and only two need fresh reading, and a reference change produces an exact impact list instead of a search. If a prospective developer draws documents and approvals on the whiteboard, they have quoted the wrong system.

What goes wrong when you migrate an approved asset library?

The second reliable failure is migration. A company decides to bring five years of approved assets into the new system so nothing is lost, and the project stalls for months. The reason is that legacy assets have no claim bindings. They were approved as documents, so the claim data your new model requires simply does not exist in the source, and reconstructing it means someone reading each asset and deciding which claim version each sentence corresponds to.

Teams try three shortcuts and all three cost more than they save. Importing assets without bindings gives you a library that looks complete and cannot participate in a withdrawal cascade, which is the exact capability you paid for. Fuzzy text matching produces bindings nobody trusts, and an untrusted binding in a regulated system is worse than none. Re reviewing everything triples the medical and regulatory workload while the team is still learning new software.

The approach that works is unglamorous. Migrate the canonical claim set first, agreed between medical and regulatory as the wording that is actually approved today. Bind only assets that are still in market and still within their expiry, which is typically a fraction of the archive. Import everything else as a read only historical record with its original approval evidence attached, marked explicitly as unbound and out of scope for withdrawal. Companies that migrate every brand and every archived asset at once spend the first quarter in data cleanup and lose the momentum that funds the second phase.

Why do the distribution integrations break after launch?

Withdrawal only works if the system can reach the places material actually lives, which means a customer relationship management (CRM) library on rep devices, a product website, an email platform, a congress or event portal and printed inventory in a warehouse. Each of those is a separate integration with a separate failure mode, and the failures share a pattern: they are silent.

A rep tablet syncs on a schedule and only when the device is online, so an unpublish issued on Thursday may not take effect on a device that has been in a bag since Tuesday. A content management system accepts the API call and returns success while a cache layer keeps serving the old page. An email platform disables a template while a scheduled send already holds a rendered copy. Printed inventory has no API at all, so the withdrawal is a task assigned to a human in a warehouse, and if nobody closes it the record says pending forever.

The design that survives launch treats each endpoint as an adapter with three obligations: issue the instruction, verify the resulting state by reading it back, and record a completion event with a timestamp and the identity of whoever or whatever confirmed it. Devices that have not synced within the expected window appear on an exception list with the assigned representative named. Physical destruction produces a signed record. What you want at the end is one screen showing what is invalid, where it still exists and who owes you an action, which turns an inspection question into a short answer rather than a reconstruction.

What happens when expiry driven withdrawal is not covered in phase one?

Withdrawal is routinely deferred because it looks like a phase two feature. It is not. It is the reason the claim model exists, and deferring it means the first release is a review queue that duplicates what you already own.

The operational gap is easy to describe. Your review platform sets an expiry date on an asset and emails the owner when it approaches. That handles the predictable case where an asset simply ages out. It does not handle the case that actually hurts, which is a reference changing mid cycle, because the trigger is not a date. A label update, a narrowed indication or a retracted study invalidates claims immediately, and every asset resting on those claims becomes a problem the same afternoon.

The compliance consequence compounds. Form FDA 2253 submission at first use is a packet assembly exercise that most companies do by hand, and the same missing relationships that block withdrawal also make packet assembly manual. When the claim, the reference, the approval evidence and the distribution record are one connected structure, the packet generates. When they are folders, someone rebuilds it. Build the cascade in the first release even if you only wire one endpoint, because a cascade with one working adapter proves the model and a cascade specified for later usually never arrives.

Should you build custom or configure what you already own?

Configure, genuinely, if you are a single brand company in one market with a review committee that fits around one table and a few hundred assets a year. Veeva Vault PromoMats is the category default for good reasons: the annotation is mature, the audit trail is serious and the expiry and approval mechanics are correct for that shape of business. Vodori Pepper Flow is a lighter and faster option at smaller scale and is often the better buy for a company that finds Vault heavy. Aprimo comes from marketing resource management and is stronger on planning than on claim level substantiation, and Ennov is document centric in the same way Vault is. At single brand scale a custom build is a distraction from launch and we would tell you so.

Before you commission anything, spend two weeks pushing your existing platform harder. Most companies have never defined a canonical claim list, and have not asked what their platform can do with distribution endpoints. Some of what looks like a product limit is a configuration gap.

Build when the claim really is your unit of risk. The signals are consistent: the same statements recur across brands and channels, you operate in more than three markets with genuinely different review chains, your assets are majority video and interactive rather than page based, your last reference change triggered a sweep that took more than a day, and your agencies and affiliates sit outside the system because seat cost pushed them into email.

How do hidden costs get into the quote?

A first release covering the claims register, reference linking, asset composition, routed review with annotation and an audit trail runs $90,000 to $180,000 and ships in 14 to 20 weeks in Digital Heroes delivery experience. A full platform adding video and interactive annotation, affiliate review chains, withdrawal to live endpoints and 2253 packet assembly runs $250,000 to $600,000 phased over 8 to 14 months. The overruns come from five places, and all five are visible before kickoff if you look.

  • Market count. Each affiliate chain is a distinct rule set with its own reviewer roles, its own mandatory local text and sometimes a national association pre vetting step. Quotes priced for one market and delivered for five are the most common overrun in this category.
  • Endpoint count. Four distribution channels is four integrations with four verification problems, not one line item called distribution.
  • Interactive and video annotation. Anchoring a comment to a timecode or a named module state is genuinely harder engineering than annotating a page, and many quotes quietly assume flattened screenshots.
  • Library migration. Priced as data loading, delivered as claim reconstruction by medical and regulatory staff whose time was never in the budget.
  • Validation expectations. If your quality organisation treats the system as relevant to good practice regulations, qualification documentation is real effort and it belongs in the plan rather than in a surprise.

What separates a build that works from one that fails here?

Four things, and none of them are technology choices. The first is that medical and regulatory agree the canonical claim set before engineering starts. That agreement is a content exercise, it takes longer than anyone expects because the same claim exists in several approved wordings, and projects that expect the software to produce the list instead of consume it lose a month.

The second is that the first release wires at least one real withdrawal endpoint end to end. A cascade that stops at a notification has not been proven, and proving it on one channel tells you more than specifying it for six.

The third is that external contributors are inside the system from day one. Agencies, medical writers, congress vendors and affiliate marketers should get scoped, time limited access to the specific assets they work on, with no licence economics forcing them back into email. The measurable effect is that the review clock starts when the agency uploads rather than when someone opens an attachment, and that single change usually shortens cycle time more than any workflow refinement.

The fourth is ownership. You should hold the repository, the cloud accounts and the unrestricted right to hire another firm, written into the contract before kickoff. At Digital Heroes the client owns the code from the first commit. Promotional approval evidence has to be producible years after a campaign ends, and evidence that sits inside a vendor relationship you might want to leave is a continuity risk as well as a commercial one.

Research & sources

The evidence behind this guide

Independent findings on why this investment pays off. Every link goes to the primary source.

  1. The median annual wage for U.S. software developers was $133,080 in May 2024, and employment is projected to grow 15% from 2024 to 2034 - a core input to any in-house build-vs-buy TCO model. Source: U.S. Bureau of Labor Statistics (2024) →
  2. The federal government spends about 80% of its IT budget on operations and maintenance of existing systems rather than on development or modernization, with many critical systems being decades old. Source: U.S. Government Accountability Office (GAO) (2025) →
  3. Sensor Tower's State of Mobile 2026 reports that global users spent 5.3 trillion hours in iOS and Google Play apps in 2025 (+3.8% YoY), roughly 3.6 hours per day per mobile user. (Note: the page does not itself contrast app time vs. mobile-browser time, so the 'overwhelming majority of time in apps vs browsers' framing is not directly supported by this source.). Source: Sensor Tower (2026) →
  4. McKinsey Global Institute estimated that about half of all work activities globally have the technical potential to be automated by adapting currently demonstrated technologies, though few occupations can be fully automated. Source: McKinsey Global Institute (2017) →
Khushi G. · Project Manager · Lucknow

Khushi runs several client projects at once, which mostly means deciding whose problem gets solved first. She coordinates developers, designers and clients across time zones, tracks budget against work completed, and raises the difficult conversation early. Readers learn how an agency actually allocates attention when everything is urgent.

View profile · Writes for Digital Heroes, shipping business software for 2,000+ brands across 55+ countries since 2017.

FAQ

Frequently asked questions

Our review platform already sets expiry dates. Why is that not enough?
Because expiry by date only handles assets that age out on a predictable schedule. The case that creates exposure is a reference changing mid cycle when a label narrows, an indication is restricted or a study is retracted, which invalidates claims immediately with no date involved. You need a cascade that moves from the reference to every claim version resting on it, then to every asset placement binding those versions, then to a withdrawal instruction per distribution endpoint with a verified completion record.
How do we know whether our real problem is claims or just a slow workflow?
Run one test. Pick a reference that changed in the last year and ask how long it takes to produce the complete list of assets still in market that depend on it. If the answer is under an hour and comes from a system, your problem is workflow speed and you should configure what you own. If it takes a day and involves someone reading files, the claim relationships do not exist anywhere and no amount of workflow tuning will create them.
Why does migrating our approved asset archive cost so much?
Because legacy assets were approved as documents and carry no claim bindings, so the data your new model needs does not exist in the source and has to be created by people reading assets. Fuzzy text matching produces bindings nobody trusts, which is worse than none in a regulated system. Migrate the canonical claim set first, bind only assets still in market and within expiry, and import the rest as a read only historical record marked explicitly as out of scope for withdrawal.
What breaks first when withdrawal reaches a rep tablet?
Sync timing. A device that has been offline for two days will not receive an unpublish issued today, so the instruction succeeds in your system and the material is still on the tablet. The design that handles this reads state back rather than assuming, lists devices that have not synced inside the expected window, and names the representative responsible. Content management caches and already rendered scheduled emails fail the same way, which is why every endpoint needs verification rather than a success response.
Can we keep Veeva Vault PromoMats and build only the claims layer?
Often yes, and it is usually the cheaper project. Vault stays the review and annotation environment your reviewers already know, while the custom layer owns the claim register, the reference relationships, the placement bindings and the withdrawal cascade. The integration cost is real and it is far below replacement cost, and it avoids the migration that kills these projects. Confirm what your platform exposes through its interfaces before committing to the split.
How should video and interactive assets be reviewed without approving screenshots?
Anchor annotations to a timecode for video and to a named state for a branching interactive module, so a comment thread survives a re cut rather than being orphaned. Store the built artifact itself with a hash as the approved record, and generate the field distribution package from that exact artifact. Approving a flattened export means your approval does not strictly cover what the field is showing, which is the specific gap that grows as spend shifts from print to interactive.
What should we settle before engineering starts on an MLR build?
The canonical claim set, agreed between medical and regulatory, including which of several approved wordings is the one that survives. Also settle which markets are in the first release, which distribution endpoint gets wired end to end, and whether your quality organisation considers the system relevant to good practice regulations, because that determines documentation effort. These are content and governance decisions, they take longer than the software work they gate, and starting them at kickoff costs a month.
Is a validated system required, and what does that add to the timeline?
Scope is a determination your quality organisation makes rather than a vendor, so get it from them in writing early. Regardless of the outcome, build controlled access, an append only audit trail nobody can quietly edit and a reproducible record of who approved what and when, because retrofitting audit integrity into a system that allowed silent edits is far more expensive than designing for it. If qualification documentation is required, plan it as a workstream rather than discovering it during user acceptance.
At what point does Retool cost more than building a custom tool?
The crossover usually lands between 25 and 50 daily users. At Retool's published Business rates of $50 per standard user and $15 per end user monthly, a 40-person deployment with a typical seat mix runs roughly $9,000 to $15,000 per year, every year, while a comparable custom tool built once for $20,000 to $30,000 carries no per-seat fees and costs about 15 to 20 percent of the build price annually to maintain. On a three-year horizon, custom comes out ahead for most growing teams in Digital Heroes engagements.
Can a custom internal tool connect to QuickBooks, Salesforce, and the other software we already use?
Yes, and integrations are usually the strongest argument for going custom instead of chaining tools together with Zapier. QuickBooks, Salesforce, Shopify, Stripe, Slack, and Google Workspace all have mature APIs, and each integration typically adds $1,500 to $5,000 to a Digital Heroes build depending on how much two-way syncing you need. The honest caveat is legacy industry software without an API, which may need file-based imports instead of a live connection, so list every system in the first conversation.
Is a freelancer or an agency better for building an internal tool?
A solid freelancer works for a single-workflow tool under roughly $10,000, if you accept that one person holds all the knowledge. An agency earns its premium once the tool spans departments or integrations, because you get a developer, a designer, and a project manager plus continuity when someone leaves or gets sick. The hidden freelancer cost appears 18 months later when you need changes and the original builder has moved on, a rescue situation Digital Heroes is hired for regularly.
Who owns the code when an agency builds my software?
You should, completely, through a written intellectual property assignment that transfers everything on final payment; without that clause, copyright stays with whoever wrote the code by default. Insist that the repository lives in your own GitHub organization from day one and that hosting, domains, and third-party accounts are registered to you. Also check for licenses to the agency's proprietary frameworks buried in the contract, because those can make switching vendors practically impossible even when you own your own code.
How much should a small business budget for its first custom app or website?
For a focused first build, most small businesses land between $8,000 and $60,000: roughly $8,000 to $45,000 for a custom website and $25,000 to $60,000 for an internal tool or simple web app, based on Digital Heroes delivery across 2,000+ projects. Customer-facing products with payments, logins, or a mobile app start around $40,000. Quotes far below these bands usually mean a template with your logo on it, not software shaped around your workflow.
Should we build the whole internal tool at once or start with an MVP?
Start with a version that fully replaces one workflow, ship it in 4 to 6 weeks, and let real usage set the roadmap. Internal tools have a captive audience, so you learn within days which features matter, and across Digital Heroes projects roughly a third of initially requested features never get built once staff work with version one. Phasing also spreads the spend: a $40,000 vision becomes a $15,000 phase one that starts paying for itself while phase two is scoped.
How do I calculate the ROI of a custom internal tool?
Count hours first: multiply the weekly hours staff spend on the manual process by their loaded hourly cost, then add the cost of errors such as mispriced quotes or missed renewals. A tool saving a 10-person team 5 hours each per week recovers about 2,500 hours a year, which repays a $20,000 to $30,000 build well inside a year at typical wages. Most internal tools Digital Heroes delivers reach payback in 6 to 18 months, with quoting and billing tools at the fast end because they plug revenue leaks, not just time.
Is custom software more secure than off-the-shelf SaaS?
Neither is secure by default; security tracks the practices of whoever builds and operates the system, not the model. SaaS gives you the vendor's certifications and patching but puts your data in a shared multi-tenant platform on their terms, while custom gives you full control over data residency, access rules, and compliance requirements like HIPAA, with the responsibility sitting with you and your agency. Before hiring anyone for a system holding sensitive data, ask for their security checklist: encryption at rest and in transit, an OWASP Top 10 review, role-based access, and a penetration test before launch.
Who can build a custom internal tools system?

Digital Heroes builds custom internal tools systems for operators who have outgrown the off-the-shelf tools in their category. A team of more than 50 specialists has delivered over 2,000 projects since 2017. Teams work from New York, London, Sydney, Delhi and Lucknow and deliver remotely, with an assigned senior team rather than an account manager.

Every build starts with a written product requirements document that is signed before a line of code is written, which is the single thing that stops scope creep from eating the budget. Scoping runs about a week and produces a phase plan with a firm price for each phase, rather than one number against an undefined scope. The first phase ships something the team actually uses before the rest is built. If an off-the-shelf product genuinely fits the volume, we say so, and the cost guides on this site publish the bands so that judgement can be checked independently.

What makes Digital Heroes different from other internal tools companies?

Four things that competitors in this bracket cannot simply copy. Digital Heroes runs a YouTube channel with more than 2.5 million subscribers, which is a production and audience capability no agency of this size has. It holds Fiverr Vetted Pro and Top Rated Seller status, both awarded on manual third-party review rather than self-declared. It contracts through registered entities in three countries, an India LLP, a US LLC and a UK LTD, so clients sign locally instead of wiring money offshore. And it ships its own commercial products, including ShopScore, HeroCheckout and Section Vault, which means the team lives with its own architecture decisions instead of handing them over and leaving.

Two more that show up in the work. Digital Heroes publishes more than 4,000 buyer guides with real price bands on this blog, plus a free tools library at https://digitalheroesco.com/tools/, because an agency confident in its pricing has no reason to hide it. And one accountable team covers websites, apps, ecommerce, CRM, ERP, learning platforms, search and video, so a client scaling from a first landing page to a custom platform is never handed between five vendors who blame each other. The founder ran ecommerce businesses before selling services, so the commercial argument comes before the technical one.

How can I check Digital Heroes is legitimate before getting in touch?

Verify it independently rather than taking the site's word for it. The YouTube channel is at https://youtube.com/@DigitalMarketingHeroes, the Fiverr profile at https://www.fiverr.com/shreyanshsin261, and the Upwork profile at https://www.upwork.com/freelancers/shreyanshsingh. Client reviews sit on Clutch at https://clutch.co/profile/digital-heroes-0 and Trustpilot at https://www.trustpilot.com/review/digitalheroes.co.in, and the company page is at https://www.linkedin.com/company/digital-heroes-1/.

Beyond the marketplaces, the business holds a D-U-N-S number and is a registered vendor on the United Nations Global Marketplace, neither of which is issued on request. Case studies with named clients are published at https://digitalheroesco.com/case-studies/. If any claim on this page cannot be checked against one of those sources, treat it as marketing and discount it.

Keep reading
let's build

Build something worth launching.

A plan, a team, a timeline, within 24 hours. No decks, no discovery calls. Tell us what you're building and we'll come back with a real scope and a real number.

message us directly · we reply within one business day

mission briefing

Monthly dispatch

Playbooks, real build costs, and what we're shipping. One email a month. No fluff.

visit us

New York HQ

1140 Broadway, Suite 704 · New York, NY 10001

Get directions
Online now

Hey there 👋 How can we help you today?