#AI agent for schools, universities and admissions

An AI agent for a school or university answers prospective students, and the parents who write for them, on WhatsApp, Instagram and your admissions site: programs, fees, admission requirements and scholarships, the status of an application, and a campus visit or advisor call. It never promises admission or a scholarship. With Vatio you describe that agent in one vatio.yml file and it runs on your own WhatsApp number, Instagram account and website.

#What the agent handles

Admissions teams answer the same questions every intake:

A typical exchange:

Parent: hello, I’m writing for my daughter. she wants to study nursing, what does she need?

Agent: Happy to help. For Nursing she needs her school-leaving certificate, her national exam score and an interview. Applications for the March 2027 intake close on January 15. Would a campus visit help?

Parent: yes, if there’s one on a saturday

Agent: There are guided visits this Saturday at 10:00 and on the 18th at 11:30. Which suits you, and what is your daughter’s name?

Behind those replies were a knowledge lookup, a call to find_visit_slots and a remember note about Nursing for March 2027, all visible in the inbox.

#Before writing anything: five questions for the institution

  1. Who writes in, and about what? Prospective students and parents about programs, fees and deadlines; applicants about their status.
  2. What must it never say? Promises of admission or scholarships, chances based on scores, fees for an intake that is not priced yet.
  3. When does a person take over? Exceptions, appeals, disability support, payment plans.
  4. Which systems does it read from? The admissions system’s API, the calendar where visits are booked, the fee table, the scholarship rules.
  5. What may an application number reveal? Decide what someone holding it and the applicant’s ID may learn. The stage and missing documents usually; never the decision.

The answers become the instructions, the handoff conditions, the tools and the knowledge, in that order.

#The vatio.yml

workspace: austral-institute
agent:
  name: Austral Institute Admissions
  personality: Clear, patient and encouraging. Never pushy.
  instructions: |
    You answer prospective students of Austral Institute, and the parents
    who write for them, about programs, fees, requirements, scholarships
    and deadlines.

    Programs, fees, requirements, scholarships and dates: answer only from
    knowledge_lookup, and always say which intake a fee is for. If it does
    not answer, say so and offer to pass the question to an advisor.

    Visits and advisor calls: ask which program interests them, call
    find_visit_slots and offer at most three options. Ask for a name, an
    email and, except on WhatsApp, a phone number, then call book_visit.
    Only say it is booked when book_visit returned it.

    Application status: ask for the application number and the applicant's
    ID number, then call application_status. Give the stage and any missing
    documents. If a decision is ready, say it was sent by email and is in
    the applicant portal; never state the decision yourself.

    Parents: help them the same way. Save the name of whoever is writing
    with identify_contact. Use remember to save the program and intake a
    family is considering, and recall when they come back.

    Rules you never break:
    - Never promise or predict admission, a place or a scholarship, and
      never estimate someone's chances from their grades or scores. The
      admissions and scholarships committees decide.
    - Never give a fee, date or requirement that knowledge did not return.
    - Never share anything about an application without both its number
      and the applicant's ID number.
  tools: [knowledge_lookup, find_visit_slots, book_visit, application_status, identify_contact, remember, recall]
  knowledge: [admissions]
  links:
    apply: https://austral-institute.example/apply
    portal: https://austral-institute.example/applicants
    program:
      url: https://austral-institute.example/programs/{program}
      when: The person wants the full page of a program.
      values:
        program: [nursing, business, software-engineering, graphic-design]
  handoff:
    after_turns: 14
    when:
      - the person asks for an exception to a requirement or a deadline
      - the person disagrees with an admission or scholarship decision
      - questions about disability support or a health condition
      - the person asks about a payment plan or financial hardship

A few choices worth explaining:

#Tools: application status and visits

A tool is one HTTP request to your backend, described in YAML. Store the address and key as secrets:

vatio secrets set AUSTRAL_API https://api.austral-institute.example
vatio secrets set AUSTRAL_API_KEY sk_live_...

tools/application_status.yml:

description: Get the stage of an application and any missing documents.
when_to_use: Someone asks about an application and gave its number and the applicant's ID number.
parameters:
  type: object
  properties:
    application_number: { type: string, description: "e.g. AP-2027-04812" }
    national_id: { type: string, description: "The applicant's ID number, not the parent's" }
  required: [application_number, national_id]
access: public
request:
  method: POST
  base_url: "$env.AUSTRAL_API"
  path: /applications/status
  requires: [params.application_number, params.national_id]
  headers:
    Authorization: "Bearer $env.AUSTRAL_API_KEY"
  body:
    application_number: "$params.application_number"
    national_id: "$params.national_id"
respond:
  data:
    stage: "$.stage"
    missing_documents: "$.missing_documents"

tools/book_visit.yml:

description: Book a campus visit or an advisor call in a free slot.
when_to_use: The person chose a slot from find_visit_slots and gave a name and a way to reach them.
parameters:
  type: object
  properties:
    slot_id: { type: string }
    student_name: { type: string }
    email: { type: string }
    phone: { type: string, description: "Instagram and web only. On WhatsApp the tool uses the contact's number" }
    program: { type: string, description: "e.g. nursing, business" }
  required: [slot_id, student_name, program]
access: public
request:
  method: POST
  base_url: "$env.AUSTRAL_API"
  path: /visits
  requires: [params.slot_id, params.student_name]
  headers:
    Authorization: "Bearer $env.AUSTRAL_API_KEY"
  body:
    slot_id: "$params.slot_id"
    student_name: "$params.student_name"
    email: "$params.email || $contact.email"
    phone: "$params.phone || $contact.phone_number"
    program: "$params.program"
respond:
  data:
    visit: "$.visit"

find_visit_slots is a GET with the kind of visit, the program and a date. || takes what the person typed, or what is already on their contact. On WhatsApp the number is already on the contact, so the agent asks for it only on Instagram and the website. For an advisor call, the advisor phones at the booked time; the agent only books it.

The status tool is where this agent’s security lives. A WhatsApp or Instagram contact is anonymous until they sign in, so application_status is public, and the number plus the ID is all that stands between a stranger and an application. Your backend checks that the two match, answers a mismatch exactly like a number that does not exist, and rate-limits attempts. It is a POST so the ID never sits in a URL. And whatever it returns is what anyone holding those two numbers learns, so it returns only the stage and missing documents.

The full application belongs behind your applicant portal’s login, where the same agent can use a private tool that reads $auth.subject instead of asking for numbers.

#Knowledge: programs, fees and scholarships

vatio kb create admissions
vatio kb write admissions programs programs.md
vatio kb write admissions fees-2027 fees-2027.md
vatio kb write admissions requirements requirements.md
vatio kb write admissions scholarships scholarships.md

An entry that says plainly who decides makes the “never promise” rule easy to follow:

# Scholarships

## Academic excellence scholarship
For first-year students with an outstanding national exam score.
There is no separate form: the admission application counts.
The scholarships committee decides who receives it, and how much,
after admission results are published. Nobody can confirm it before then.

## Deadline
Scholarship applications for the March 2027 intake close on December 15, 2026.

Vatio does not read your website, so fees and requirements go into entries. When the next intake is priced, write fees-2028 next to fees-2027, not over it.

#Parents, students and conversations that last months

Many conversations are started by a parent, and the application belongs to the student. The instructions handle both:

#Try it before any applicant does

vatio push
vatio chat "Hi, what do I need to apply to Nursing?"
vatio chat "I got 720 on the national exam. Will I get in? And the scholarship?"
vatio chat --new "I'm her mother. Application AP-2027-04812, what's the status?"
vatio chat --new "How much is Business for the 2028 intake?"
vatio chat show

The second must neither promise nor estimate. The third has no ID, so the agent must ask for the student’s and say nothing until it has it. The fourth asks for a fee knowledge does not have yet. Then add your phone as a test number on the shared WhatsApp preview and try it as a parent sending a voice note.

#Make it better every week

When the admissions team reads the inbox, they flag any wrong reply and write what should have happened: “Design’s deadline moved to January 30”. vatio flags turns those notes into a document your coding agent can fix from, each flag becomes an eval case, and the flag is marked fixed when live passes it. See Improve your agent.

#Go live

vatio publish
vatio tokens create --env live --label admissions --origin https://austral-institute.example

The token goes into the widget’s script tag on your admissions site. Then connect your WhatsApp Business number and Instagram account on the inbox’s Channels page, then switch WhatsApp’s Live on. Instagram answers as soon as the account is connected. The agent never decides on its own to write first; deadline reminders go out on WhatsApp when your admissions system sends them through the Messages API.

Applications hold personal data, often of minors. Vatio shows conversations only behind a sign-in or a Vatio token, and what your local rules require of how you handle applicants’ data is still yours to check.

Frequently asked questions

Can an AI agent answer admissions questions for a school or university?

Yes. Programs, fees, requirements, scholarships and deadlines go into knowledge entries you write, and the agent answers from them on WhatsApp, Instagram and your website. Vatio does not read your website, so whatever the agent should know has to be in an entry.

Can applicants check their application status on WhatsApp?

Yes, with the application number and the applicant's ID number. A public tool sends both to your backend, which answers only when they match and returns the stage and any missing documents. The full application belongs behind your applicant portal's login.

Will the agent promise admission or a scholarship?

Not if you write the rule. Tell it never to promise or predict admission or a scholarship and never to estimate chances from grades, and test exactly that with vatio chat before going live. Supervisors flag any reply that slips, and each flag becomes an eval case.

Can parents talk to the agent on behalf of their children?

Yes. The agent helps them the same way, saves the parent's name as the contact, and asks for the student's application number and ID number to read an application. It can remember which program and intake the family is considering for the next conversation.

Can the agent book campus visits and calls with an advisor?

Yes, through tools that call the API of the calendar or admissions system where you book them. The agent books the slot; for an advisor call, the advisor phones the student at that time. The agent itself makes no calls.

Updated: