Skip to content

regulated-activity-classifier

Slugregulated-activity-classifier
Version0.1.0
Statusexperimental
Last fully evaluatednone
Eval stateno validated eval cases
Categoryclassification
Domainresearch-administration
Manifestationsprompt
Created2026-05-21
Updated2026-05-21

Tags: cost-allowability compliance irb iacuc biosafety classification research-administration

Audience: post-award-staff, sponsored-programs-staff, research-compliance-staff

Manifestations in repo: prompt.md

Flags whether an expense implicates an activity that requires institutional compliance oversight — human subjects (IRB), animals (IACUC), or biosafety (IBC) — based on expense-level signals such as the description, vendor, and account coding. It is the detection layer of the federal cost-allowability analysis workflow.

Output contract: schema.json Contract scope: repo-local

Inputs

A normalized expense record (see expense-transaction-extraction), optionally with award context. The component works from expense-level signals, not from the general nature of the project.

Outputs

A single JSON object — see schema.json — with a per-regime decision (triggered, rationale, trigger_signals) for human subjects, animals, and biosafety, plus an any_regime_triggered roll-up and a one-sentence summary.

The classifier is deliberately inclusive: a plausible signal is enough to flag a regime. Its purpose is to surface expenses for a reviewer to verify against the protocol-approval system, not to make a final determination.

Contract scope

Repo-local. The classification record is a prompt-library detection contract that routes the downstream protocol-approval-allowability-check. It is not a shared AI4RA-UDM schema.

Triad integration

  • Evaluation datasets: none yet — repo-local synthetic coverage planned.
  • Harness notes: canonical manifestation is prompt.md; validation surface is schema.json. Invoked as a Step 1 task of the cost-allowability-analysis workflow; its output routes the protocol-approval check in Step 2.
  • Shared UDM relationship: aligned to research-compliance semantics; does not define or depend on a shared UDM schema.

Manifestations

  • prompt.md — canonical, LLM-agnostic prompt

Evals

See evals/.

Provenance

Created 2026-05-21 as the detection layer of the federal cost-allowability analysis component set, to catch expenses tied to IRB-, IACUC-, and IBC-regulated activities.

Contract scope

  • Output format: json_object

  • Contract scope: repo_local_detection_contract

  • Validation surfaces: json_schema

  • Schema entrypoints: #

  • Notes: Repo-local classification record flagging whether an expense implicates an activity requiring institutional compliance oversight — human subjects (IRB), animals (IACUC), or biosafety (IBC). Detection-layer contract for the cost-allowability analysis workflow; not a shared AI4RA-UDM schema.

  • Machine-readable catalog entry: component_catalog.json

Triad integration

  • UDM alignment: repo_local_detection_contract — Aligns to research-compliance semantics; the per-regime classification shape is a prompt-library contract and is not a shared UDM schema.

  • Evaluation datasets: no shared evaluation-data-sets catalog entry recorded yet; current references are repo-local eval artifacts.

  • Harness notes: Validate JSON output against schema.json. Canonical invocation surface is prompt.md. Invoked as a Step 1 task of the workflows/cost-allowability-analysis Vandalizer workflow; its output routes the protocol-approval check in Step 2.

  • Related component: protocol-approval-allowability-check (gates) — The regime flags determine whether the protocol-approval check applies.

Prompt body

Source: prompt.md.

Show prompt

Regulated Activity Classifier

Purpose: Flag whether an expense implicates an activity that requires institutional compliance oversight — human subjects (IRB), animals (IACUC), or biosafety (IBC).

Expected input: A normalized expense record, optionally with award context.

Expected output: One JSON object conforming to schema.json.

This component is the detection layer of the federal cost-allowability analysis workflow. It does not verify protocol approval — it routes the expense by flagging which oversight regimes apply. The downstream protocol-approval-allowability-check does the verification.

Prompt

You are a research-compliance triage assistant. Given an expense, determine whether it implicates an activity that requires institutional compliance oversight, and emit one structured classification record.

Return only a single JSON object. No prose, Markdown, comments, or code fences.

The three regimes

Evaluate each regime independently:

  • human_subjects — research involving human participants, their data, or their identifiable specimens. Common expense signals: participant incentives or compensation (gift cards, ClinCards, cash, "subject payment"), survey or panel platforms (Prolific, MTurk, paid Qualtrics panels, Centiment), interview transcription, recruitment advertising, consent-form translation or interpretation, specimen-collection kits tied to human data.

  • animal — research involving live vertebrate animals. Common expense signals: animal purchases (Jackson Laboratory, Charles River, Envigo), vivarium / per-diem / cage / ULAR / DLAR housing charges, veterinary services, lab-animal feed, bedding, or enrichment, anesthetic or euthanasia agents tied to animal use.

  • biosafety — research involving recombinant or synthetic nucleic acids, viral vectors, select agents or toxins, human or non-human-primate cells, blood, or tissue, or other biohazards. Common expense signals: viral vectors (lentivirus, AAV), plasmids and recombinant reagents, select agents or toxins, biosafety cabinets, BSL-2/3 supplies, biohazard or sharps disposal, autoclave service tied to biohazard handling.

Method

  1. Read the expense description, vendor, account coding, and any award context.

  2. For each regime, decide whether the expense plausibly implicates that regulated activity. Be inclusive at the flagging stage — the purpose is to surface expenses for a reviewer to verify, not to make a final call. A plausible signal is enough to set triggered: true.

  3. When you flag a regime, record the concrete signals you relied on in trigger_signals and explain the inference in rationale.

  4. When a regime is not implicated, set triggered: false, give a short reason in rationale, and leave trigger_signals an empty array.

  5. Do not infer a regime from the mere existence of a research award. Flag on expense-level signals, not on the general nature of the project.

Output fields

  • expense_id — carried from the input when present.

  • human_subjects, animal, biosafety — each an object with triggered (boolean), rationale (string), and trigger_signals (array of strings).

  • any_regime_triggered — true when at least one regime is triggered.

  • summary — one sentence stating which regimes were flagged and what a reviewer should verify next.

Produce the JSON object now.

Output schema

Source: schema.json.

Show schema.json
{

  "$schema": "https://json-schema.org/draft/2020-12/schema",

  "$id": "https://github.com/AI4RA/prompt-library/components/regulated-activity-classifier/schema.json",

  "title": "Regulated Activity Classifier \u2014 Output",

  "description": "Classification record flagging whether an expense implicates an activity that requires institutional compliance oversight \u2014 human subjects (IRB), animals (IACUC), or biosafety (IBC). Detection-layer contract for the federal cost-allowability analysis workflow.",

  "version": "0.1.0",

  "type": "object",

  "additionalProperties": false,

  "$defs": {

    "regime": {

      "type": "object",

      "additionalProperties": false,

      "required": [

        "triggered",

        "rationale",

        "trigger_signals"

      ],

      "properties": {

        "triggered": {

          "type": "boolean",

          "description": "True when the expense plausibly implicates this regulated activity."

        },

        "rationale": {

          "type": "string",

          "minLength": 1,

          "description": "Explanation of the flag decision."

        },

        "trigger_signals": {

          "type": "array",

          "description": "Concrete expense signals relied on. Empty array when not triggered.",

          "items": {

            "type": "string",

            "minLength": 1

          }

        }

      }

    }

  },

  "required": [

    "human_subjects",

    "animal",

    "biosafety",

    "any_regime_triggered",

    "summary"

  ],

  "properties": {

    "expense_id": {

      "type": [

        "string",

        "null"

      ],

      "description": "Expense reference carried from the input."

    },

    "human_subjects": {

      "$ref": "#/$defs/regime",

      "description": "Human-subjects (IRB) oversight regime."

    },

    "animal": {

      "$ref": "#/$defs/regime",

      "description": "Animal-care (IACUC) oversight regime."

    },

    "biosafety": {

      "$ref": "#/$defs/regime",

      "description": "Biosafety (IBC) oversight regime."

    },

    "any_regime_triggered": {

      "type": "boolean",

      "description": "True when at least one regime is triggered."

    },

    "summary": {

      "type": "string",

      "minLength": 1,

      "description": "One-sentence statement of flagged regimes and what to verify next."

    }

  }

}

Changelog

Source: CHANGELOG.md.

All notable changes to this component. Versions follow semver: MAJOR for output-contract breaks, MINOR for backward-compatible additions, PATCH for wording or clarity.

[0.1.0] — 2026-05-21

  • Initial experimental release.
  • Per-regime classification (human subjects / animal / biosafety), each with triggered, rationale, and trigger_signals, plus an any_regime_triggered roll-up.
  • Inclusive flagging posture: a plausible expense-level signal sets triggered: true so the expense is surfaced for reviewer verification.
  • No eval cases yet — status experimental until at least one golden classification is added under evals/cases/.