Products

Resources

Integration

Product & Engineering

Product & Engineering

From Policy Documents to Enforceable Rules: A Practical Guide to a BRE Without Writing a New System

From Policy Documents to Enforceable Rules: A Practical Guide to a BRE Without Writing a New System

From Policy Documents to Enforceable Rules: A Practical Guide to a BRE Without Writing a New System

Rohan Mahajan

Rohan Mahajan

April 3, 2026

9 Min

Table of Contents

Why Policy Documents Fail at the Point of Execution

The Translation Problem: From Clause to Executable Logic

What a Rules Engine Actually Needs to Do

How PolicyOS by Tartan Closes the Gap

Where This Matters Most in Financial Services

Where This Matters Most in Financial Services

Build Connected Systems with Tartan

Automate workflows with integrated data across your customer applications at scale

There is a version of this conversation happening at almost every lending, insurance, and financial services company right now. The risk team updates the credit policy. The change goes into a document. That document gets emailed to the tech team with a request to "update the rules." Three weeks later, the change is live - maybe. In the meantime, decisions are being made against the old logic. Nobody is entirely sure which version is actually running in production.

This is not a technology failure. It is a structural one. Most financial services organisations built their policy management and their rule execution as two completely separate things. Policy lives in documents. Rules live in code. The gap between them is filled with email threads, sprint tickets, and a quiet accumulation of drift that only becomes visible when something goes wrong.

The question worth asking is not "how do we build a better rule engine?" It is "how do we close the gap between the policy we intend and the logic we enforce - without rebuilding our systems from scratch?"

Why Policy Documents Fail at the Point of Execution

Policy documents are written to communicate intent. They use language like "generally eligible," "subject to override," and "at the discretion of the approving authority" because their authors are capturing judgment, not writing instructions.

The problem is that execution systems do not handle intent. A credit decisioning workflow needs a binary: approve or decline. A KYC check needs pass or fail. A claims rule needs pay or investigate. When the policy document says "applicants with thin bureau files may be considered with alternative data support," somebody has to decide what "may be considered" means in a system context, what counts as a thin file, and what qualifies as alternative data support. That somebody is usually a developer working from a verbal briefing, under time pressure, with imperfect information.

What gets built is a proxy for the policy - close enough to pass review, but not the same thing. And every subsequent policy change that goes through the same process widens the gap a little further.

For a CXO, the downstream effects are familiar: inconsistent decisions that cannot be explained cleanly to auditors, credit quality variance that correlates with rule deployment timings, and a technology team that becomes a bottleneck every time risk wants to move quickly on a policy change. The cost is not just operational. It is strategic. A lending business that takes three weeks to change an eligibility threshold cannot respond to a credit cycle the way one that takes three hours can.

The Translation Problem: From Clause to Executable Logic

The core challenge is translation. A policy clause has several components that need to be made explicit before they can be enforced: the entities the rule applies to, the conditions and thresholds, the exceptions, the outcome, and the reason code that explains the outcome.

Take a clause like: "Salaried applicants with a bureau score below 700 are not eligible for unsecured personal loans above ₹5 lakhs, unless they have an existing relationship with a clean repayment history of 24 months or more."

Unpacked, this has five components. The entity is a salaried applicant. The condition is bureau score below 700 on an unsecured personal loan above ₹5 lakhs. The exception is existing customer status with 24 months of clean repayment. The outcomes are decline and approve-with-exception. The reason code should distinguish between a standard decline and an exception approval.

This decomposition is work. It requires a policy owner and a technical owner to sit in the same room, go through each clause, and agree on exactly what it means in data terms. Most organisations skip this step because it is uncomfortable - it surfaces contradictions, undefined terms, and exceptions that nobody has formally sanctioned. But skipping it means the developer fills in the blanks alone, and the blanks are where the drift begins.

The practical method is straightforward: for every policy clause, write out the entity, the inputs it requires, the condition logic, the threshold, the exception criteria, the outcome, and the reason code. Do this in plain language first, before anything goes near a system. When every stakeholder can read it and agree it represents the policy, it is ready to be built.

What a Rules Engine Actually Needs to Do

Once the translation work is done, the question of tooling becomes clearer. A business rules engine at its core needs to do four things well.

It needs to evaluate conditions against data inputs and produce consistent outcomes. It needs to handle exceptions and overrides in a way that is bounded and logged, not informal and invisible. It needs to version every rule so that the logic applied to any historical decision can be reconstructed - this is what auditors actually want. And it needs to allow non-technical users to make changes without raising a development ticket.

That last requirement is where most legacy approaches break down. When rule changes require engineering effort, policy owners stop trying to keep the rules current. They work around the system, make informal decisions, and document exceptions after the fact rather than before. The rules engine becomes a historical artifact rather than a live reflection of current policy.

The BRE that actually solves the problem is not the most sophisticated one. It is the one that the risk manager can use on a Tuesday afternoon without filing a sprint ticket.

How PolicyOS by Tartan Closes the Gap

PolicyOS is built around the premise that policy management and rule execution should not be separate systems. It combines a workflow engine and a rules engine into a single environment where the people who own the policy are also the people who deploy the rules - without needing to involve engineering for every change.

The practical implication is significant. A credit risk manager who wants to tighten the bureau score threshold for a specific product segment can make that change, test it against historical cases, version it with a change log entry, and push it live - in the same session. The policy document and the live rule stay in sync because they are managed in the same place by the same person.

For CXOs, the three capabilities that matter most are the ones that close the gaps that create audit and credit quality risk.

  • No engineering required to deploy rules. Policy changes that previously required developer involvement - and the delays, miscommunications, and sprint prioritisation battles that come with it - can be executed directly by risk and operations teams. The technology team is freed from being a policy bottleneck.

  • Rules stay in sync with policy intent. Because PolicyOS is a workflow and rules engine combined, the logic being enforced reflects the current policy, not a version from three sprints ago. There is no separate document to keep updated alongside the system.

  • Version control and audit trail built in. Every rule change is versioned, timestamped, and logged with the identity of the person who made it. When an auditor asks what logic was applied to a cohort of loan approvals in a given month, the answer is retrievable in minutes, not weeks.

Where This Matters Most in Financial Services

The use cases where the policy-to-execution gap causes the most damage are also the ones where PolicyOS is most directly applicable.

In lending underwriting, eligibility rules change frequently in response to bureau performance, macroeconomic conditions, and product strategy. Each change that travels through a development cycle is a change that runs late, is implemented with partial information, and is not testable against historical data before it goes live.

In KYC and KYB, compliance requirements evolve and the rules governing document acceptance, screening thresholds, and escalation criteria need to reflect current regulatory guidance - not the guidance that was current when the system was last built.

In internal approvals and exception management, the rules governing who can approve what, under what conditions, and with what documentation are often entirely informal. PolicyOS makes them explicit, enforced, and auditable.

The Real Cost of Leaving the Gap Open

The organisations that have lived with the policy-to-execution gap for long enough often stop noticing it. It becomes the cost of doing business - a few weeks of delay on every policy change, a layer of manual review to compensate for rules that do not quite reflect current policy, an audit finding or two that gets closed with a process note.

The cost of closing the gap is the work of structured translation: sitting down with your policy documents, decomposing every clause into its logical components, and building rules that actually reflect what the policy says. 

That work is not trivial. 

But it does not require building a new system. It requires the right environment - one where the people who own the policy can also enforce it, directly, without a developer in the middle.

That is the gap PolicyOS is built to close.

One platform. Across workflows.

One platform.
Many workflows.

Tartan helps teams integrate, enrich, and validate critical customer data across workflows, not as a one-off step but as an infrastructure layer.