Developer fix request
If the aid office adds a rule on outside scholarships and your agent doesn’t report them, the Developer gets a fix request naming the field.
Higher Education · Java SDK
Your aid packaging agent proposes an award. Before it posts to the student account, the Java SDK sends the package facts to your institution’s rules, which stop over-awards and send progress warnings to an aid officer.
Three students from the financial aid simulator. Run financial aid simulator
When: A standard full-time package for a student meeting academic progress.
Your code: The award posts, and the record keeps the package facts and the rule version.
Who picks it up: The Business Owner sees packages moving. Auditors read the record inside an engagement.
When: The student has an academic progress warning.
Your code: The package waits for an aid officer.
Who picks it up: The aid officer with that authority, in the VeriProof Inbox, by email, or in Slack or Microsoft Teams, with reminders and escalation.
When: A proposed $31,400 award against a $28,500 cost of attendance.
Your code: The status is BLOCKED, and nothing posts.
Who picks it up: The Governance Engineer sees the over-award rule that stopped it.
This version opens and closes the client with try-with-resources. In a long-running service, create it once and reuse it.
Java · com.veriproof:veriproof-sdk-core
import com.veriproof.sdk.GovernOptions;
import com.veriproof.sdk.Veriproof;
import java.util.Map;
try (var veriproof = Veriproof.fromEnvironment()) {
var result = veriproof.govern(
"aid.award",
packageDraft,
context -> studentAccounts.post(context.input(), context.idempotencyKey()),
GovernOptions.builder()
.facts(Map.of(
"enrollment_status", student.enrollmentStatus(),
"sap_status", student.sapStatus(),
"student_aid_index", aidApplication.studentAidIndex(),
"cost_of_attendance_usd", budget.costOfAttendanceUsd(),
"proposed_award_total_usd", packageDraft.totalUsd(),
"verification_complete", verification.isComplete(),
"dependency_status", student.dependencyStatus()))
.build());
if (result.completed()) {
notifyStudent(result.value());
} else {
holdPackage(result.status(), result.reasonCode(), result.message());
}
}A held package never reaches studentAccounts.post, so the student account stays unchanged until the rules allow the award.
Why Java here: Many student information systems and their integration layers run on the JVM, so the check wraps the posting call.
The financial aid simulator sends these fields with every proposed package.
| Fact | What it holds |
|---|---|
enrollment_status | full_time, three_quarter, or half_time. |
sap_status | Academic progress: meeting, warning, or failing. |
student_aid_index | The index from the student’s aid application. |
cost_of_attendance_usd | The student’s cost of attendance. |
proposed_award_total_usd | Total of the proposed package. |
verification_complete | True when required verification is done. |
dependency_status | dependent or independent. |
The over-award rule compares proposed_award_total_usd with cost_of_attendance_usd. Send both, even when your agent already checked. The record then shows the numbers the rule saw, not only its verdict.
Developer fix request
If the aid office adds a rule on outside scholarships and your agent doesn’t report them, the Developer gets a fix request naming the field.
Changing the rule
Changing how warnings are handled can be tried in Shadow against real packages. Before the new version enforces in production, an administrator or compliance officer approves the engineer’s change.
For your business owner
The higher education page explains what the agent can take on and how its decisions are defended.
Read the higher education business caseDocs
Install com.veriproof:veriproof-sdk-core, configure the key, and look up industry values for Higher Education.
Run the $31,400 package in the financial aid simulator, then open the record and compare the two amounts.