> ## Documentation Index
> Fetch the complete documentation index at: https://docs.rulebase.co/llms.txt
> Use this file to discover all available pages before exploring further.

# Set up a compliance testing program

> Create a testing program, agree the controls and test scripts it runs, define how its population is sampled, and add the periodic tests that hold each cycle's work.

A testing program is the standing definition of one piece of monitoring: which records it examines
and which control questions it asks of each. Each cycle of that program is a **test**, holding a
sheet of sampled records with one column per question. Finish the definition before anyone draws a sample, so cycles stay comparable
across the year.

<img src="https://mintcdn.com/rulebase/nRmHnyRJv-otnvt6/images/compliance-testing-programs-list.png?fit=max&auto=format&n=nRmHnyRJv-otnvt6&q=85&s=c1a7cc93668f7a48a7687abae6999c3e" alt="Compliance > Testing showing a monthly UDAAP testing program in the programs list" data-og-width="2416" width="2416" data-og-height="284" height="284" data-path="images/compliance-testing-programs-list.png" data-optimize="true" data-opv="3" srcset="https://mintcdn.com/rulebase/nRmHnyRJv-otnvt6/images/compliance-testing-programs-list.png?w=280&fit=max&auto=format&n=nRmHnyRJv-otnvt6&q=85&s=6d352cae72fcebd68276b2dfb3ce7ee3 280w, https://mintcdn.com/rulebase/nRmHnyRJv-otnvt6/images/compliance-testing-programs-list.png?w=560&fit=max&auto=format&n=nRmHnyRJv-otnvt6&q=85&s=51d460bd464a420a3fd0e8e2946076e8 560w, https://mintcdn.com/rulebase/nRmHnyRJv-otnvt6/images/compliance-testing-programs-list.png?w=840&fit=max&auto=format&n=nRmHnyRJv-otnvt6&q=85&s=27d08fad3eb47fbda5f4362bdb5b440e 840w, https://mintcdn.com/rulebase/nRmHnyRJv-otnvt6/images/compliance-testing-programs-list.png?w=1100&fit=max&auto=format&n=nRmHnyRJv-otnvt6&q=85&s=f757b9fa2924a63cd3edb2c8506151d1 1100w, https://mintcdn.com/rulebase/nRmHnyRJv-otnvt6/images/compliance-testing-programs-list.png?w=1650&fit=max&auto=format&n=nRmHnyRJv-otnvt6&q=85&s=c1de52785b954ef7246847c66de07586 1650w, https://mintcdn.com/rulebase/nRmHnyRJv-otnvt6/images/compliance-testing-programs-list.png?w=2500&fit=max&auto=format&n=nRmHnyRJv-otnvt6&q=85&s=e3081ce9d793244aef3964daf7b8de67 2500w" />

<Note>
  Programs live under **Compliance > Testing**. Parts of the flow say *test* where they mean
  *program*: the create page is headed **Create a test** and the setup wizard reads **Set up
  test**. You are building a program in both. Individual tests come after the program is
  confirmed.
</Note>

## Before you start

* **Compliance** must be enabled for your organization
  ([Settings > Features](https://app.rulebase.co/settings/features)). If **Compliance** is missing
  from the sidebar, ask an administrator to switch it on.
* The records you intend to test need to be reaching Rulebase already: tickets and sales calls from
  your help desk, or cases and alerts from a monitoring tool such as
  [Unit21](/guides/integrations/unit21).
* Have your control language to hand. Rulebase drafts controls and questions, but the wording that
  ends up in the program is what your testing will be judged against, so edit it before you accept
  it.

## How programs, tests, and samples relate

* **Program**: the reusable definition. Record type, controls, test scripts, population and
  sampling rules, frequency.
* **Test**: one cycle of that program, bounded by a start and end date, holding a sheet and its
  own analysis.
* **Sample**: the rows inside a test's sheet, the specific records drawn for that period.

Drawing the sample is covered in
[Populate a compliance test](/guides/compliance/populate-tests), and reading the result in
[Run and analyze a compliance test](/guides/compliance/run-and-analyze-a-test).

## Create the program

1. Go to **Compliance > Testing**.
2. Click **New**.
3. Either describe the program in **Describe what you would like to test** and submit it
   (optionally attaching a policy or procedure with **Upload**), or click a framework card under
   **or select from a program**. Each card shows how many control modules it brings.
4. Rulebase creates the program and opens the setup wizard on the **Details** step.

<img src="https://mintcdn.com/rulebase/nRmHnyRJv-otnvt6/images/compliance-create-program.png?fit=max&auto=format&n=nRmHnyRJv-otnvt6&q=85&s=2be430bfa2a9f567ef0001d84f1a1795" alt="Create a testing program page with a prompt box and framework cards showing their control module counts" width="2416" height="1100" data-path="images/compliance-create-program.png" />

Both routes land in the same wizard with the same three steps: **Details**, **Population**, and
**Risk factors**. The framework route pre-selects a control library instead of inferring one from
your description.

## Confirm the details

The **Details** step fixes the program's scope:

* **Test name**: the program name, and the name that appears on every test and report it produces.
* **Description**: what the program covers. Rulebase uses it as context when it fills a test.
* **Applies to**: the record type the program examines: **Interactions**, **Disputes**,
  **Cases**, or **Alerts**. It decides which filters the **Populate test** dialog offers and which
  columns a new test sheet is built with, so settle it before you sample: sheets that already exist
  keep the columns they were created with.
* **Frequency**: **Weekly**, **Monthly**, or **Quarterly**. It sets the default period for each
  new test.

Underneath, the control library shows every control in the framework with a checkbox. Checked
controls are in the program, and each holds its test scripts on the right: the questions Rulebase
answers for each sampled record. Add a question in the **Does the agent...?** field and click
**Add new**; write them as questions with a defensible yes, because the analysis counts answers per
question.

<img src="https://mintcdn.com/rulebase/nRmHnyRJv-otnvt6/images/compliance-program-setup-details.png?fit=max&auto=format&n=nRmHnyRJv-otnvt6&q=85&s=49b86173575175bea6515978c36ad05a" alt="Program setup Details step with test name, applies to, frequency, the UDAAP control list, and test scripts per control" width="2880" height="1520" data-path="images/compliance-program-setup-details.png" />

Uncheck a control to take it out of this program. The pencil beside the framework name switches the
list into editing mode, where you can rename a control or delete it with the bin icon. A deletion
there removes the control from your whole organization, across every program, without asking twice.
Unchecking is what you want in almost every case.

When the details are right, click **Determine population**. The button stays disabled while a draft
question is pending, so finish or discard any half-written one first.

## Define how the population is sampled

This step records what the program covers and how much you intend to test; the
wording becomes part of your audit record.

1. Click **Add test population**.
2. Give the population a **Population name**, such as `Retail support tickets`.
3. Under **Determine test population**, choose **Natural language** and describe the population, or
   choose **Determine via attributes** and set a condition on a field such as **Interaction type**
   or **Channel**. The attributes option appears for the record types that support it, and the
   panel takes one condition.
4. Save the population, then set **Sample size** as a percentage of it. Check **Test the full
   population.** instead when the program is a census of every record.

<img src="https://mintcdn.com/rulebase/nRmHnyRJv-otnvt6/images/compliance-program-setup-population.png?fit=max&auto=format&n=nRmHnyRJv-otnvt6&q=85&s=c6553fd1debe5ae4e09328bc24c2164f" alt="Population step of program setup with a named test population and a 10% sample size" width="2880" height="880" data-path="images/compliance-program-setup-population.png" />

Where coverage should scale with volume, open **Advanced controls** and turn on **Define tiered
sampling rules and sample size**. Each tier takes a **Population size** band and its own **Sample
size**, as a percentage (**%**) or a fixed count (**items**); **Add tier** adds the next band.

Rulebase passes these rules to the AI as program context when it fills a test sheet, and they stand
as the program's documented methodology. They do not prefill the **Populate test** dialog: you still
choose the filters and sample size when drawing each sample.

Click **Evaluate risk factors** to continue. At least one population is required.

## Review the risk factors

Rulebase reads what it already knows about your interactions and drafts the failure patterns worth
watching: a fee described without its condition, dissatisfaction acknowledged but never logged.
Each factor has a title and a short explanation. Use **Add instructions** to add your own guidance
to one, **Remove** to drop it, and **Add risk factor** to write one Rulebase missed.

<img src="https://mintcdn.com/rulebase/nRmHnyRJv-otnvt6/images/compliance-program-risk-factors.png?fit=max&auto=format&n=nRmHnyRJv-otnvt6&q=85&s=a3f8f1ee0e639bd53e8f4f8acc4522cd" alt="Risk factors step showing drafted risk factors with Add instructions and Remove actions" width="1400" height="780" data-path="images/compliance-program-risk-factors.png" />

Treat this step as a review of your own thinking. Risk factors are recorded on the program; they are
not fed into cell filling or the analysis report, so anything you actually want tested has to exist
as a test script on the **Details** step.

**Confirm risk factors** finishes setup and opens the program.

## Add the tests

A confirmed program has no tests until you create them; a test holds a period's sample.

1. On the program, click **New test**.
2. Set the **Period**. It defaults to the current period for the program's frequency.
3. Click **Create test**.

Rulebase names the test after its period (a full calendar month becomes `June 2026 test`) and
opens it on an empty sheet.

<img src="https://mintcdn.com/rulebase/nRmHnyRJv-otnvt6/images/compliance-new-test-dialog.png?fit=max&auto=format&n=nRmHnyRJv-otnvt6&q=85&s=174ab2c0759b12b7bad2af00fc9a34a4" alt="New test dialog with a June 2026 period and the Create test button" width="896" height="376" data-path="images/compliance-new-test-dialog.png" />

<img src="https://mintcdn.com/rulebase/nRmHnyRJv-otnvt6/images/compliance-program-tests.png?fit=max&auto=format&n=nRmHnyRJv-otnvt6&q=85&s=0925076406bf287bce42007141cdddc6" alt="Program page listing the July and June tests with their periods and authors" width="2416" height="400" data-path="images/compliance-program-tests.png" />

<Tip>
  Create each test when you are ready to sample it. The period you choose is the window the sample is
  drawn from, so a test created for the wrong month quietly produces the wrong population.
</Tip>

Next, [Populate a compliance test](/guides/compliance/populate-tests) draws the sample into this
sheet.

## Change a program later

The **...** menu beside the program name offers **Edit**, which reopens the setup wizard with your
confirmations intact, and **Delete**, which removes the program along with its tests. Editing a
program does not change tests that have already run: their sheets keep their columns, so a mid-year
change to the test scripts shows up in the next test and leaves the last one as it was.

Each test row has its own **...** menu with **Rename** and **Delete**. Renaming is cosmetic. The
period controls what a test covers, regardless of the name.

## Related

* [Populate a compliance test](/guides/compliance/populate-tests)
* [Run and analyze a compliance test](/guides/compliance/run-and-analyze-a-test)
* [Unit21](/guides/integrations/unit21)
* [Rulebase glossary](/guides/concepts/glossary)
