← Projects

TrayPal

traypal.app

TrayPal is a set of dining analytics tools that university dining teams use to actually improve their quality.

The problem

Students don't like campus dining. In a survey we ran at Trinity in May 2026, students scored their dining 2.7 out of 5. The most-picked reason was menus that don't reflect what they actually want.

And what they want is complicated: it shifts day to day with the weather, the workload, the point in the semester. Dining teams collect almost none of that signal, so menus get planned on last year's assumptions and served to this week's students.

The stakes

Dining contracts run long, ten to fifteen years at the schools we tracked, so for most of that time the dissatisfaction costs the operator nothing. Then the contract comes up for renewal, and every bad semester gets its vote at once. Some universities switch operators. Some walk away entirely and stand up their own in-house program, taking on hiring, procurement, food safety, and menu planning from scratch; schools that try it tend to hit staffing shortages and quality problems in the transition years. We counted the damage for one of the three major operators: 11 campuses lost in a single year, $48.6 million in annual contracts, one of them to a school that went independent.

So both sides need the same thing. The university needs an operator it can trust to fix problems instead of letting them fester, and the operator needs to hear problems while they're still small. That is a data problem, and nobody in the hall is collecting the data.

The features

TrayPal works both ends of it:

Students like it: 100 to 200 open it a day during the semester, out of the 1,800 on Trinity's meal plan. The campus paper ran a feature on it: “Coding and community” in the Trinity Tripod.

TrayPal menu screen
Shot in July. The dining team is on summer break; menus return in the fall.

Under the hood

Multi-tenant Next.js, built from day one to onboard more campuses. The underlying dining data is slow to fetch, so a dedicated server scrapes and warms menus into a Redis cache and a permanent Postgres store, and the site only ever reads from cache; menus load instantly at the 7am rush. Supabase Postgres, Upstash Redis, a VPS running the Playwright prefetch pipeline on cron lanes with monitoring and alerts, and a LangGraph service for the assistant. Currently working on bringing it to more colleges.