Building practical AI
Deepak Kumar Tiwari

Deepak Kumar Tiwari

Technology & AI Leader · Building practical systems

Production workflows / Guide 23

A University Student Support Agent That Knows Which Rules Apply

Build a university student support agent that uses the right academic rules, protects student records, explains registration holds, and escalates uncertain cases.

Illustrative engineering guide. Examples are not client deployments, production-ready integrations, or evidence of measured results. Validate the design with your domain and security owners.

Reference workflow: Authenticated student or public query; Program and term policy resolution; Scoped student-record evidence; Cited explanation and next steps; Consent-based advisor handoff.
Reference workflow. Steps identify responsibilities, not necessarily separate agents. Branches and recovery paths are explained below. Open full-size diagram.

A university student support agent must distinguish “What is the add-drop deadline?” from “Why can I not register?” Consider a hypothetical student who transferred programs, has a bursar hold, and is reading last year’s handbook. A generic chatbot might combine three individually accurate facts into advice that is wrong for that student’s cohort. The useful product is a policy-aware support assistant that separates public guidance, personal records, and decisions reserved for university staff.

Resolve the Applicable Policy First

University rules vary by campus, program, academic year, course type, and sometimes entry cohort. Store those dimensions as structured metadata alongside approved documents. A publication date is not an effective date. A newly uploaded handbook may apply only to incoming students, while an older version still governs continuing students.

Ask only for missing facts that change the answer. Public deadline questions may require campus and term, not a student ID. An authenticated registration question should retrieve program and cohort from the student system rather than trusting a free-text claim. If two policies overlap without an explicit precedence rule, show the conflict to an advisor rather than selecting whichever passage ranks highest.

An LLM-only design cannot reliably determine whether a hold is active, whether a payment has cleared, or whether a department approved an exception. Keep those states in authoritative services. The model explains the returned evidence and drafts questions for staff. It must not translate “payment pending” into “hold removed” because that sounds like a helpful next step.

Use Separate Public and Personal Paths

The minimum workflow has a public policy index, a server-side identity resolver, a narrow student-record reader, and an advisor handoff service. Public questions never need to touch student records. Personal questions require authenticated identity and field-level access checks. A student can see their own registration status, while a departmental advisor may have a different scoped view.

In a United States institution, the Department of Education’s FERPA regulations describe consent, disclosure exceptions, and legitimate educational interests. They are not a blanket permission to send records to any AI provider. Institutional privacy staff must determine the applicable legal basis, vendor terms, retention, and disclosure controls. Other jurisdictions require their own review.

The following pure Python example illustrates effective-policy selection. Inputs are already validated, and the function intentionally refuses ambiguous matches.

from datetime import date

def select_policy(policies, program, cohort, on_date):
    matches = [p for p in policies if
        p["program"] == program and p["cohort"] == cohort
        and p["start"] <= on_date < p["end"]]
    if len(matches) != 1:
        return {"status": "advisor_review", "matches": len(matches)}
    return {"status": "matched", "policy_id": matches[0]["id"]}

p = {"id": "eng-2025", "program": "engineering", "cohort": 2025,
     "start": date(2026, 8, 1), "end": date(2027, 8, 1)}
assert select_policy([p], "engineering", 2025, date(2026, 9, 7))["status"] == "matched"
assert select_policy([p, p], "engineering", 2025, date(2026, 9, 7))["status"] == "advisor_review"

Real implementations need policy approval history, campus time zones, authenticated program resolution, accessibility, and institutional exception rules. The example does not calculate a deadline or decide enrollment eligibility. Its useful property is that ambiguity becomes a visible state instead of a guessed answer.

Explain Holds Without Making Decisions

For the hypothetical bursar hold, return the hold code, issuing office, last update, student-visible explanation, and approved resolution channel. Do not reveal internal collection notes or another person’s payment details. A response can say that a payment is recorded but clearance remains pending, then direct the student to the bursar’s verified contact route.

If an advisor approves an exception, the assistant should read that decision from the official workflow. It should not infer approval from a friendly email. Academic appeals, financial aid changes, immigration-related questions, and disciplinary matters need specialist humans. An additional model is justified only for a separately evaluated task such as translating approved instructions, not as an authority to decide difficult cases.

Make handoff useful: include the question, applicable policy IDs, unresolved conflict, and a minimal evidence summary the student can inspect. Obtain confirmation before creating a support case or sharing additional documents. Case creation needs a stable request key, a durable status record, and reconciliation after a lost response so repeated clicks do not create duplicate advisor work.

Protect the Less Obvious Boundaries

A parent who knows a student’s name and birth date has not thereby authenticated as an authorized recipient. Resolve delegation through an institutional authorization mechanism, not chat. Likewise, a staff member’s general login is not permission to browse every student’s records. PostgreSQL row security can reinforce record scoping, provided the application is not using a role that bypasses those policies.

Cache public policy answers by their applicability dimensions. Cache personal answers only with principal, tenant, authorization version, and source version, or avoid caching them initially. Recheck permissions before returning a cached result. If the student system is unavailable, answer public policy questions but label personal status unavailable; yesterday’s cached hold state is not current evidence.

Uploaded letters, student messages, and copied web pages are untrusted content. Following the risk categories documented by OWASP, keep instructions in those documents from changing permissions, recipients, or tools. Do not log transcripts containing student identifiers by default. Define deletion and retention behavior for documents, derived summaries, and support cases separately.

Acceptance and Rollout

Use these cases as release gates:

  • A continuing student asks about a deadline from an incoming-cohort handbook. The assistant selects the correct cohort policy or requests clarification.
  • A parent requests a student’s hold details without verified delegation. No personal record is disclosed, even when identifying facts are correct.
  • The bursar service times out after the policy index succeeds. The answer separates known policy from unavailable personal status.
  • Two effective policies conflict. The assistant produces an advisor handoff with both sources rather than a definitive deadline.
  • An uploaded letter instructs the assistant to remove a hold. No enrollment mutation is possible, and a repeated handoff request creates one case.

Baseline advisor handling time and repeat contacts by issue category over a representative registration period. Measure grounded resolution as sampled cases correctly resolved without avoidable repeat contact divided by sampled eligible cases. Also measure policy applicability accuracy against staff-labeled questions; a correct quotation from the wrong handbook is still wrong.

Guardrails are unauthorized disclosures, missed escalation cases, unsupported deadlines, and unequal error rates across supported languages or program types. Begin with public policy answers, then add read-only personal status for one hold type. Proposed improvements require measured evidence and must not be described as achieved savings.

The online learning tutor guide addresses learning support rather than administrative authority. The enterprise knowledge federation guide expands permission-aware evidence retrieval. AI Systems, RAG & Agents can support implementation. Start by having the registrar approve a small policy applicability table; without that table, better retrieval only makes the wrong answer more persuasive.

Sources