The world of software is changing so quickly that it's hard to keep up with all of the new ways we can use it. One of those ways became apparent to me yesterday.
Custom Software
I'm on the admissions committee for my department, and about three or four weeks ago, we all met together to discuss ways that we could use AI to streamline and enhance our review of student applications to our Master of Public Administration program.
I took notes on everybody's feedback and ideas, and I also recorded the meeting and exported a transcript. I used these for a two-hour planning session with Claude exploring and detailing what the app would be like. After that, Claude Code and I spent probably another five to six hours building and tweaking it and getting it ready to go for everybody. This is a fully functional Next.js/React app with a Convex database using email auth, and then connected to my university's OpenAI endpoint.
The app ingests a CSV file with all of the student applicants and their details, then ingests the PDFs of every student's application. Those PDFs contain things like letters of recommendation, their statement of intent, resumes, and transcripts. All the PDFs were then analyzed by GPT-5.2 Thinking—assessing things like grades in quantitative classes, a demonstrated interest in public service, and so on.
Everybody on the committee loved it. I’d show screenshots, but they contain private data so I’ll just describe. As they reviewed each applicant assigned to them, reviewers saw a panel on the left-hand side showing the AI summary of the applicant, their statement of intent, their transcript, and their letters of recommendation. In the middle was a view of the actual PDF so that the full application of the student was there to read. On the right-hand side was our scoring mechanism, where we scored each candidate on a variety of dimensions and left comments. Not a design breakthrough, but tidy, efficient, and orders of magnitude more convenient than our previous approach.
Living Software
This was all really cool and it worked really well. But the especially fun part (and the part I wanted to comment on in this short post) was the page that I had created for our admissions decisions meeting. It had all the applicants listed where you could click on one and it would expand to show each of the reviewers' comments and scores. We used it together to go through all 123 applications and make admit, deny, or waitlist decisions on each one.
But here's the amazing part: this meeting review page was just something I designed quickly, thinking through the basics of what we needed. Then throughout the first hour of the meeting, as we came across user interface improvements we could make, we just made them.
“It would be really nice if we could see a count of each declared emphasis and how many we’ve admitted so far.”
“Great idea! Give me a minute.”
“Can we make this part float like a frozen row in Excel.”
“Sure!”
Each time, I pulled up Claude Code to prompt the change, pushed to GitHub, Vercel rebuilt, we refreshed the page, and in a few short minutes the software was substantially better. We easily made a dozen changes to the app on the fly.
As a treat, I secretly had Claude Code make a celebration screen that appeared when we made the final decision. Digital confetti makes everything better.
It was all frankly amazing, and it shows where we are now—where software doesn't have to be a "take it or leave it" proposition. (This being how most users have been forced to experience software for decades.) Instead, the app was a living and adaptive thing that fit our needs in the moment. Such a model of software is mind-blowing when you think about it. "One size fits all" is an old paradigm now, and it's exciting to think about software that adapts and changes in a living way as you use it.














