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

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 steps
  1. 01 · AI proposes

    Profile in

    Pasted text or a PDF resume becomes structured profile fields.

  2. 02 · Rules decide

    Normalise

    GPA normalisation and a 0–100 completeness score are plain code.

  3. 03 · AI proposes

    Auditor preflight

    Finds the student's constraints and missing information, and pauses the run to ask.

  4. 04 · Person approves

    The student answers, or doesn't

    If there's no answer, the run continues on its own after two minutes.

  5. 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.

  6. 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 them
01

Multi-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.

02

Asking without stalling

The auditor can pause for clarification, but a delayed job resumes the run either way, so every run finishes.

03

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.
Next · Fig. 07GetCBAMEU carbon border reporting