The estimate is always the same. One engineer, three months, and then it is done.
That estimate is wrong by roughly an order of magnitude, and it is wrong in a specific and predictable way: it prices the build and ignores the operation. Enrichment infrastructure is not a project that ships. It is a system that requires a permanent owner, because the thing it manages, professional data about people and companies, changes continuously whether you maintain it or not.
This is a cost model you can take to a budget conversation. It covers what the build actually involves, what the ongoing obligation looks like, the risks that do not appear on a spreadsheet, and the three cases where building is genuinely the right call.
Why the estimate is always low
The three-month estimate is not incompetence. It is a reasonable estimate of the wrong scope.
What engineers price is the integration: call some APIs, normalize some fields, write to a database. That genuinely is a few weeks of work, and if that were the system, buying would be hard to justify.
What they omit is everything that makes the output trustworthy over time. Entity resolution, normalization taxonomies, refresh scheduling, change detection, quality monitoring, and the operational burden of all of it. Those are not phase two. They are the actual product, and they have no end date.
A useful way to frame it internally: you are not building a pipeline, you are starting a dataset. Pipelines ship. Datasets are owned.
The build, component by component
Realistic engineering estimates for a system serving a mid-sized B2B company. Adjust for your scale, but the ratios hold.
Entity resolution: 3 to 5 engineer-months
Deciding whether two records describe the same person or company. "Northwind Logistics Inc" and "Northwind Logistics LLC" may be one company or two. Two people named Jane Doe in logistics may be one person or two.
This is a genuinely hard problem with an active research literature and no library that solves it. You will build a matcher, discover it is 85% accurate, and spend the rest of the project's life pushing it toward 92%. The reasoning on why string matching fails and what the alternative looks like is in what B2B identity resolution actually is.
Normalization taxonomies: 4 to 6 engineer-months, then permanent
Job titles, skills, industries, seniority bands, geographies. Each needs a canonical form, and each needs mapping rules from the infinite variety of how they appear in the wild.
"VP Eng", "Vice President, Engineering", "V.P. of Engineering" and "Engineering Vice President" are one role and four strings, in one language, in one country. Multiply by every market you serve.
These rot. New job titles appear, new tools appear, industry classifications get revised. A taxonomy is a subscription you pay in engineering time forever.
Search and query infrastructure: 2 to 3 engineer-months, plus run cost
Serving multi-signal queries over tens of millions of records at acceptable latency. Index design, query planning, and the operational work when a plan degrades.
Managed search at this scale typically runs low-to-mid four figures monthly, plus storage, plus a staging environment, plus someone who understands index tuning at 2am on a Friday.
Change detection: 4 to 6 engineer-months
The hardest component and the most frequently omitted entirely.
To know somebody changed jobs, you need yesterday's state, today's state, a diff, and enough confidence in both snapshots that a difference means a real change rather than a correction or a formatting difference. A profile that was edited is not a job change, and separating those is most of the work.
Skip this and your data silently decays. Build it and you have committed to storing longitudinal snapshots indefinitely. The business value of getting it right is covered in job change signals.
Quality monitoring: 2 to 3 engineer-months
Without it you cannot tell whether your system is working, because bad enrichment looks exactly like good enrichment in a database. You need accuracy sampling, drift detection, coverage tracking by segment, and alerting on degradation.
Most internal builds skip this and discover problems when a sales leader complains. The measurement methodology is in how to evaluate a B2B data provider, and it applies to your own system as much as to a vendor's.
Refresh orchestration: 3 to 4 engineer-months
Prioritizing which records to refresh, scheduling within a budget, handling failures, avoiding thrash. Naive approaches either refresh everything constantly at enormous cost or refresh on a calendar and miss the records that actually changed. The field-level approach is in CRM data decay.
Totals
| Component | Build | Ongoing |
|---|---|---|
| Entity resolution | 3-5 eng-months | Continuous tuning |
| Normalization taxonomies | 4-6 eng-months | Permanent |
| Search infrastructure | 2-3 eng-months | Ops plus run cost |
| Change detection | 4-6 eng-months | Permanent |
| Quality monitoring | 2-3 eng-months | Permanent |
| Refresh orchestration | 3-4 eng-months | Permanent |
| Total | 18-27 eng-months | 1.5-2.5 FTE indefinitely |
Eighteen to twenty-seven engineer-months is roughly two to three engineers for nine to twelve months once you account for coordination overhead, and that is before any data acquisition, which is a separate problem with its own legal and commercial complexity.
The ongoing cost is the real number
The build is a one-time expense that executives can approve. The operation is a recurring one that nobody approves, it just appears.
1.5 to 2.5 engineers permanently. Taxonomy maintenance, matcher tuning, refresh operations, quality investigation, and incident response. This is not optional headcount. If you stop, quality degrades within months and nobody notices until it has cost you something.
Infrastructure. Search cluster, storage for longitudinal snapshots, compute for refresh cycles, staging. Low-to-mid four figures monthly at modest scale, growing with your record count.
On-call. Enrichment that feeds lead routing or scoring is production. It needs a rotation.
Opportunity cost. The largest line and the one never written down. Two to three of your engineers spent a year building infrastructure rather than product. At a company where data is not the product, that is the most expensive part of the decision.
A fully loaded annual figure for the steady state, before infrastructure:
12 engineers × fully loaded cost
2+ infrastructure
3+ on-call burden
4= a recurring line item that outlives everyone who approved itCompare that to an enrichment contract, including an enterprise one, and the arithmetic is rarely close.
Risks that never make the spreadsheet
Key person dependency. The engineer who built your matcher understands why the thresholds are set the way they are. When they leave, you inherit a system nobody can safely change. This is the most common reason internal builds get replaced two years later.
Silent degradation. Enrichment fails quietly. There is no error when a title becomes stale. Quality erodes for months before anyone connects a sales complaint to a data problem.
Compliance obligations transfer to you. If you acquire and process professional data yourself, the handling obligations are yours. Deletion requests, retention policy, lawful basis, regional requirements. With a vendor, a meaningful part of that sits with them and is covered contractually. This is not a reason to buy on its own, but it belongs in the comparison and it is routinely omitted.
Coverage ceiling. Your internal system covers what you acquire. A vendor's covers what they acquire across their whole customer base. For a company entering a new market, that gap is immediate and expensive.
When building is actually correct
Three cases, and they are real.
Data is your product. If you sell data, or your product's core value is derived from a proprietary dataset, this is your core competency. Build it, staff it properly, and treat it as the product it is.
Your domain is genuinely unserved. If you operate in a vertical or region where no vendor has meaningful coverage, buying does not solve your problem regardless of cost. Test this rather than assuming it, with a real sample of your own records, because teams routinely assume unique coverage needs that a vendor already serves.
Regulatory constraints make external processing impossible. Some sectors and jurisdictions genuinely prohibit sending identifiers to third parties. If that is your situation, the decision is already made and the cost model above is simply your budget.
Outside those three, building is usually a decision to spend two engineer-years on something that is not your product, to arrive at something worse than you could have bought, and to carry a permanent maintenance obligation.
The hybrid that usually wins
The real answer for most organizations is not either pole.
Buy the data layer. Build the logic layer.
Resolution, normalization, coverage and freshness are commodity infrastructure with no competitive advantage in them. Your scoring model, your routing rules, your ICP definition and your workflows are where your differentiation lives.
Teams that get this right spend their engineering time on how records are used rather than on how records are obtained. Teams that get it wrong spend a year rebuilding resolution and never get to the scoring model that was the actual point.
A worked version of that split: buy the resolution and the change feed, then build the ICP filtering logic and the waterfall routing that encodes your specific commercial judgment. The first part is infrastructure. The second part is strategy, and nobody can sell it to you.
How to run the evaluation properly
If you are at this decision, the analysis takes about two weeks and produces numbers rather than opinions.
Define the requirement precisely. Which fields, at what accuracy, refreshed how often, across which geographies. Vague requirements make buying look expensive and building look easy, because an unspecified build has no scope.
Price the build honestly. Use the component table above, adjusted for your scale. Have the engineer who would own it review the estimate, and specifically ask them to estimate the ongoing maintenance rather than the build.
Test a vendor on your own data. Not their sample, which is drawn from their strengths. Take 500 of your records, measure match rate, accuracy against a golden set, and effective cost per usable record. The full method is in how to evaluate a B2B data provider.
Model three years, not one. Build costs front-load and operational costs accumulate. A one-year comparison flatters building. A three-year comparison is closer to the real decision, because that is how long you will own whatever you choose.
Include the opportunity cost explicitly. Write down what those two engineers would otherwise ship. This line changes more decisions than any other, and leaving it out is how the analysis gets rigged without anyone intending to rig it.
What to require from a vendor if you buy
Buying only wins if the vendor is actually better than what you would have built. The things that matter:
Stable identifiers. Opaque IDs that never change, so your records do not break when a name or handle does.
Honest failure modes. Explicit not-found responses and graded confidence rather than a confident guess. A vendor that cannot express uncertainty forces you to trust everything at the level of its worst result.
Observable cost. Per-call cost reporting, so effective cost per usable record is something you measure rather than reconstruct from an invoice.
Freshness as a choice. Bulk reads and freshest-available resolution as separate calls, so you make the accuracy-versus-cost tradeoff per workload rather than inheriting one.
Batch semantics that survive failure. Resumable jobs, results keyed to your inputs, and a defined not-found list. The patterns are in batch enrichment at scale.
Renidly is built around those five, which is a deliberate choice rather than a feature list: they are the properties that determine whether buying actually removes work or merely relocates it. The database, live resolution and email products share one key and one credit pool, and per-route costs are published at a public endpoint so you can price an integration before signing up for one. Volume and contract terms are on the pricing page.
Frequently asked questions
How long does it take to build a data enrichment system?
Eighteen to twenty-seven engineer-months for the core components, which is two to three engineers for nine to twelve months. That excludes data acquisition and assumes you have the records already.
What is the ongoing cost of maintaining enrichment infrastructure?
Typically 1.5 to 2.5 engineers permanently, plus infrastructure and on-call. The maintenance obligation does not decrease over time, because the underlying data keeps changing.
Is it cheaper to build or buy data enrichment?
Buying is cheaper in nearly every case where data is not your product, usually by a wide margin once opportunity cost and multi-year maintenance are included.
When does building make sense?
When data is your core product, when your domain genuinely has no vendor coverage, or when regulation prevents external processing. Test the second case rather than assuming it.
What is the biggest hidden cost?
Opportunity cost, followed by key person dependency. Both are real and neither appears on a standard build estimate.
Can we build part of it?
Yes, and this is usually the right answer. Buy resolution, normalization and freshness. Build the scoring, routing and workflow logic where your commercial judgment actually lives.
The one-line version
Price the operation, not the build. Enrichment is a dataset you own rather than a pipeline you ship, which means the recurring cost of one and a half to two and a half engineers matters more than the eighteen to twenty-seven engineer-months of initial work.
Build it if data is your product, if your domain has no coverage, or if regulation requires it. Otherwise buy the data layer and spend your engineering on the logic layer, which is the part that is actually yours and the part nobody can sell you.
And whichever way you go, model three years rather than one, and write down the opportunity cost explicitly. That single line changes more of these decisions than every other number combined.
If you want to run the vendor side of the comparison on your own records, there are 100 free credits with no card required, which covers a 500-record test. For procurement, volume pricing or an SLA conversation, talk to us directly.


