#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:
- Programs. What a program covers, how long it lasts, which campus.
- Fees and scholarships. Tuition for a given intake, and what each scholarship asks for.
- Requirements and deadlines. Documents, test scores, interviews, closing dates.
- Application status. The stage and any missing documents.
- Visits and calls. A guided campus visit or a call with an advisor.
- Everything else goes to a person. Exceptions, appeals, disability support, payment plans.
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
- Who writes in, and about what? Prospective students and parents about programs, fees and deadlines; applicants about their status.
- What must it never say? Promises of admission or scholarships, chances based on scores, fees for an intake that is not priced yet.
- When does a person take over? Exceptions, appeals, disability support, payment plans.
- Which systems does it read from? The admissions system’s API, the calendar where visits are booked, the fee table, the scholarship rules.
- 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:
- The agent never delivers a decision. A decision deserves wording your admissions team chose, not a chat on a shared family phone. The endpoint below does not even return it, so the rule does not rest on the prompt alone.
- Fees only from knowledge, always with the intake. A fee quoted for the wrong year is a promise someone will hold you to.
after_turns: 14is higher than a booking agent’s because admissions conversations run long. Past fourteen messages, a person takes over.- Office hours go on the inbox’s Business page, not in
vatio.yml: here Monday to Thursday 9:00–18:00 and Friday 9:00–17:00, Santiago time, set by the admissions team. Inside them a handoff quiets the agent; outside them it keeps helping and says the team will reply.
#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:
- The parent is the contact.
identify_contactsaves the name of whoever is writing, so the inbox shows the parent, not a student who never wrote. - The student’s numbers open the application. A parent with the application number and the student’s ID gets the stage like anyone else. The rule is the same for everyone, which is what makes it safe.
- Memory carries over. People research a program months before applying. A WhatsApp conversation continues until the last message is eight hours old, then the next one starts fresh; with
rememberandrecall, what was saved in March is still there in October, and supervisors read the same notes on the contact in the inbox.
#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: