Government & Public Sector · C# SDK

Pause an adverse benefits decision while an appeal is open

Your eligibility agent drafts determinations. Approvals within the limit can go out. Denials get a closer look: GovernAsync sends the case facts, and your agency rules stop a denial that conflicts with an open appeal or has no reason code.

Why the reason code is a fact

A denial notice has to say why. When denial_reason_code is none, the rule has something concrete to stop on, and the caseworker who picks it up sees the gap right away.

C#: test the denial path before you connect

VeriproofTestHarness returns the decision you queue and makes no network requests, so this test runs in CI before the agency has an account.

C# · Veriproof.Sdk.Core

using Veriproof.Sdk.Core;
using Veriproof.Sdk.Core.Testing;

await using var local = new VeriproofTestHarness()
    .RespondWith(new TestPolicyDecision(PolicyAction.Deny));

var result = await local.Veriproof.GovernAsync(
    "benefits.determine",
    determination,
    (context, cancellationToken) =>
        notices.IssueAsync(context.Input, context.IdempotencyKey, cancellationToken),
    new GovernOptions
    {
        Facts = new Dictionary<string, object?>
        {
            ["program"] = "childcare_subsidy",
            ["household_size"] = 3,
            ["monthly_income_usd"] = 4200,
            ["income_threshold_usd"] = 3900,
            ["documentation_complete"] = true,
            ["residency_verified"] = true,
            ["appeal_pending"] = true,
            ["denial_reason_code"] = "none",
        },
    });

Assert.Equal(GovernedStatus.Blocked, result.Status);
Assert.Empty(notices.Issued);

Swap the harness for Veriproof.FromEnvironment() when you connect. The code under test stays the same.

Why C# here: Agency case management systems are frequently .NET, and the SDK’s test harness runs in the same test projects without a network connection.

Case facts for the eligibility rule

The eligibility simulator sends these fields. Reason codes are what make a denial notice explainable.

FactWhat it holds
programnutrition_assistance, housing_voucher, childcare_subsidy, or disability_support.
household_sizePeople in the household.
monthly_income_usdReported monthly household income.
income_threshold_usdThe program limit for this household size.
documentation_completeTrue when required documents are on file.
residency_verifiedTrue when residency is verified.
appeal_pendingTrue when an earlier decision on this case is under appeal.
denial_reason_codenone, income_exceeds, residency_unverified, or documentation_incomplete.

Approve, refer, or stop the denial

Three cases from the eligibility simulator. Run eligibility simulator

Allowed

When: A complete nutrition assistance file below the income limit.

Your code: The approval notice is issued, and the record keeps the case facts and the rule version.

Who picks it up: The Business Owner sees case throughput. Auditors read the record inside an engagement.

Sent to a person

When: A housing case slightly over the income limit.

Your code: The proposed denial waits for a caseworker.

Who picks it up: The caseworker with that authority, in the VeriProof Inbox, by email, or in Slack or Microsoft Teams, with reminders and escalation.

Stopped

When: A childcare denial while an earlier appeal is open, with no reason code.

Your code: The denial is blocked, and no notice goes out.

Who picks it up: The Governance Engineer sees the appeal rule that stopped it.

When policy changes the rules

Developer fix request

If the agency adds a rule on language preference for notices and your agent doesn’t send it, the Developer gets a fix request naming the field.

Changing the rule

Updating the income limits for a new program year can run in Shadow against live cases first. A compliance officer or administrator approves an engineer’s new limits before they enforce in production.

See how the six role portals hand off work

Build and test

Run the open-appeal case

The eligibility simulator stops the same denial your test covers. Compare its record with the facts in your test.