Fig. 06 · A council of admissions agents
AdmitMe-AI
A council of agents builds a student's reach, match and safety list, finds the gaps that could get them rejected, and helps with essays, all grounded in a structured profile.
- Role
- Sole engineer
- Team
- Solo
- When
- Apr 2026
- Stack
- Laravel 13, Inertia + React, Laravel AI SDK, OpenAI, Laravel Reverb, Stripe
- Links
- GitHub repo
01The problem
Students without a private counsellor get generic advice. Chatbots don't keep a structured profile, and they don't give calibrated answers.
02How it works
6 steps01 · AI proposes
Profile in
Pasted text or a PDF resume becomes structured profile fields.
02 · Rules decide
Normalise
GPA normalisation and a 0–100 completeness score are plain code.
03 · AI proposes
Auditor preflight
Finds the student's constraints and missing information, and pauses the run to ask.
04 · Person approves
The student answers, or doesn't
If there's no answer, the run continues on its own after two minutes.
05 · AI proposes
Scout and judge
A scout searches (at most 5 searches, 3 fetches, allow-listed domains only), and a judge evaluates schools in batches of 10. A failed batch skips only those schools.
06 · Rules decide
Assemble
Tiers are clamped to reach, match or safety, fit to 0–100, and gap analyses are validated against the exact schools the student picked. Progress streams live over WebSockets.
- AI proposes
- Rules decide
- Person approves
- System moves data
03Hard problems
3 of themMulti-minute agent runs inside a chat
The council runs as a queued job with explicit stages and streams progress over Reverb. The chat agent only starts jobs and reads their status, so no request ever blocks on a long LLM run.
Asking without stalling
The auditor can pause for clarification, but a delayed job resumes the run either way, so every run finishes.
A broken built-in tool
The SDK's web-fetch tool caused HTTP 400s on OpenAI's Responses API. I replaced it with my own allow-listed fetch tool with call and size caps.
04By the numbers
- automated tests
- 173
- from first commit to billing and live progress
- 2 wks
- essay agents, from brainstorm to roast
- 6
- engineer
- 1
05What I'd do differently
I'd build an evaluation set early (anonymised past applicants with known outcomes) and score the council's tiers against it. Without one there's no proof the reach/match/safety calls are calibrated, and that's what students pay for.