Inspiration
AI has made it easy to build working software without understanding any of it. With the right prompting you can ship something stable and close to production ready. I see it every day. The problem is that real learning is quietly disappearing. The effort that used to build skill is now optional, so most people skip it. Static courses never adapt to you, and chatbots just hand you the answer. I wanted to use an agent for the opposite purpose, to make you do the work, set to exactly where you are.
What it does
You give Dex a goal and it runs the whole course itself. It assesses you, builds a curriculum around your actual gaps, writes each lesson when you open it, evaluates the code you submit, and reshapes the rest of the plan at every checkpoint. In one real run the goal was "I want to learn Python." The assessment found that I could read Python but was not yet writing it, so it built a contact book project aimed straight at that gap.
How we built it
A TypeScript monorepo with a hexagonal architecture, so the learning logic stays separate from any vendor. The core lists no vendor SDKs at all, and each adapter wraps exactly one. The agent runs on Gemini 2.5 through Vertex AI. Its read path is a read only MongoDB MCP server, which is the partner integration. It reads a learner's full history through MCP to ground its decisions but cannot write through it. Data lives in MongoDB Atlas across 13 collections. The frontend is Next.js, the API is Hono, and auth is Firebase. Everything runs on Cloud Run, with Cloud Build, Artifact Registry, and Secret Manager.
Challenges we ran into
Getting the MongoDB MCP server stable on Cloud Run was the hard part. The protocol holds a long lived stream open, and Cloud Run broke it two ways at once. With one request per instance the stream starved every query, so the agent timed out after 60 seconds. With more than one instance the session landed on a different machine than the one that created it and came back as "session not found." Both pointed to the same fix: a single pinned instance with high concurrency. I confirmed it by holding the stream open by hand and firing a query into the same session. It went from a 60 second timeout to a one second reply.
The other challenge was keeping an autonomous agent safe. I made the read path read only at the protocol level, so the agent can read everything but cannot corrupt anything. Every write goes through the app's own logic.
Accomplishments that we're proud of
A working loop that assesses, builds, teaches, evaluates, and replans, running live on real infrastructure. An agent with full read access to learner history that still cannot damage it. And an architecture where the learning logic knows nothing about Gemini, MongoDB, or Firebase.
What we learned
MCP on serverless is easy to get wrong, and the symptoms look unrelated until you trace them. A good agent loop is free to reason over everything but limited in what it can change. And read only can be a real boundary, not just a habit.
What's next for projectdex
Moving beyond coding, since the platform is general purpose by design. Running submitted code in a real sandbox instead of just evaluating it. And building a deeper picture of each learner over time, so the plans get sharper the longer you use it.

Log in or sign up for Devpost to join the conversation.