ESAI is an AI-powered college admissions platform used by over 750,000 students. When I joined, our AI tools helped students craft stories, pick colleges, and plan their path, but we only outputted walls of text that users would grab and leave.

I rebuilt our inference pipeline to support structured extraction, teaching the LLM to return its responses as JSON with defined fields for each card’s title, description, and cross-sells instead of a single block of prose. Once our frontend knew what a “card” was, it could render each one separately. Once our backend knew what a “card” was, students could favorite them, save them to folders, and view cards from different tools side-by-side to draw connections and craft their story. A wall of text became a workspace.
But the tools need constant tweaking by our college advisors, and though I was happy to have Claude edit JSON schemas to my liking, I needed to build a more useful self-serve solution for our team. I built a CMS in Django that wrapped a schema generator. An advisor could specify bounded inputs — what part of the admissions process the tool covers, what kind of output cards it should produce, what fields each card needs — and the CMS would translate those specs into a valid schema the LLM could use. Our CEO and college advisors could now create and customize AI tools without touching code.
Students’ stories are now stored as structured building blocks they can recombine however they need. The long-term vision: LLMs as the translation layer between a student’s history and whatever they want to turn it into — a personal statement, a cover letter, an investor pitch.
I wrote about the broader ideas behind this work in a blog post on malleability inspired by Ink and Switch’s research.