Startup update 17
Originally posted 2025-09-03
Tagged: cartesian_tutor, llms
Obligatory disclaimer: all opinions are mine and not of my employer
Progress update
This week, I launched my practice test taking interface! I’ve finished uploading and Q/C’ing ~15 years worth of the USNCO local exams; it took me overall about 3-4 hours to do, so it’ll be relatively easy to finish uploading the rest of the USNCO local and national exams this week.
Alongside the test-taking interface, I launched a guide to studying for the USNCO as a content marketing exercise. I ran a few Perplexity/Google searches and found a few incomplete and uninformed takes on this topic, so I expect my page to rank highly for any USNCO-related queries.
Claude as codebase navigator
This week, I started consulting for one of my friends to help build AI features into his educational app. In addition to generating some basic cashflow, this has been a great exercise for my consultant muscles, as well as a great test of Claude for exploring wholly new codebases.
This company’s codebase is a relatively old Django installation, started perhaps 10-15 years ago, and relatively crufty. Luckily, it looks pretty familiar, as I used Django around 10-15 years ago to build a college Go Tournament website. But Claude was still essential to getting up and running. Here are some of the ways that Claude has been useful, just in the first two days.
- The nginx server was giving me a 502 error; I asked Claude to use
docker
commands to inspect the logs and figure out what was going on. It knew the right docker invocations to list containers, tail logs, and was able to pinpoint that my React dev server was not up and running. - I couldn’t get the
django makemigration
command working. Claude was able to whip up a working migration file from scratch. - Then, I couldn’t figure out how to apply the migration. Claude was able to inpsect all the relevant dockerfiles and tell me that a secondary worker container had an environment flag, which triggered migrations to be executed upon startup - so restarting that secondary worker container, rather than the main server container, was the key to getting migrations to run.
- After implementing some HTTP endpoints, I couldn’t figure out a CURL
command to test my own endpoint. I asked Claude to debug it, and after
perusing through the
urls.py
andviews.py
files, it confirmed all the details of the HTTP method, form encoding, headers, and pinpointed the error to a missing path component.
At this point, I am really tempted to just invoke all one-off commands through Claude, to take advantage of its built-in debugging abilities.
It used to be that “can a new hire merge a pull request on their first day?” was a litmus test for how well-organized your codebase and READMEs were. Today, despite some very stale documentation, all I really needed was a general indication of “never mind all this legacy cruft; this is how we develop these days” in order to get Claude on the right trail.