A free-text field takes any philosophical prompt — a term, a phrase, a full question — and returns a sequenced reading list through twentieth-century continental philosophy. Citations point to specific chapters, sections, page ranges, or aphorisms, and each reading is tagged Introductory, Intermediate, or Advanced.
The constraint is enforced at two levels. A Gemini responseSchema requires the
output to be JSON matching a fixed shape: a topic, a short overview, and an
ordered list of modules, each containing readings with author, work,
specificLocation, rationale, and a difficulty field restricted to a three-value
enum. The API enforces the schema at generation time; citation granularity is
carried by the prompt and the specificLocation field.
Each reading offers two follow-ups, a deep dive and a paper search, that run
through a small MCP layer exposing one live tool, query_academic_repository. It
queries the OpenAlex scholarly index over HTTP and returns up to three works with
title, author, year, DOI, and citation count, and the model builds its answer from
those results. Every tool call and
response is logged and rendered in an on-screen protocol viewer.
In production both AI paths proxy through Netlify Functions, rate-limited at the edge: 10 requests per 60 seconds for generation and 5 for MCP analysis, where each request fans out into several model calls. Every request is stateless.