Inspiration
I'm a sophomore at NYU Stern, studying in London this term and spending winter break in Beijing. When I sat down to pick January courses, NYU's class search labelled dozens of sections "Online". That one word leaves out the three things that decide whether I can actually take a class: the hour it meets on my clock, whether my school counts the credit, and what the note at the bottom of the listing restricts.
I'm far from the only one asking. NYU has 27,532 international students (2024/25), and 4,524 NYU students studied abroad in 2023/24 (IIE Open Doors 2025).
What it does
You finish one sentence: I'm a Stern undergrad, and I'll be in Beijing for January 2027. I can be in class from 8:00 am to 11:00 pm my time. Takeable reads NYU's public class search and gives every online or blended undergraduate section one verdict, with its reasons:
- ✓ Takeable: fits your clock and counts for credit
- ? Check: looks possible, with the one thing to confirm quoted from NYU's note
- ✕ Not takeable: wrong hour, in person, or no credit
For a Stern student in Beijing, 55 of January's 60 sections are not takeable. TECH-UB 25 is "Online", and it meets Mon–Fri 10:00 pm – 2:00 am Beijing time. ECON1-UC 301 is asynchronous, but Stern doesn't count SPS courses, and Takeable links the Stern policy. Change the city to London and 10 sections turn green.
Every section opens a week chart on your clock next to New York's, with the dates, credits and NYU's note. Star the ones you want, and a boarding-pass shortlist totals your credits and copies the class numbers to paste into Albert. A live world map in the header shows day and night, with the real sun, between New York and where you'll be.
How I built it
I planned before building, with the Devpost Learn Skill Pack in Claude Code: scope.md, prd.md and spec.md, then five build slices tracked in checklist.md. All of them are in the repo's devpost/ folder.
- Server: zero-dependency Node.js. It reads NYU's public class search (CourseLeaf) with no login. Results stream to the page as each section's details arrive, are cached for six hours, and fall back to a committed snapshot.
- Judging: pure ES modules shared by the page and the tests.
time.jsconverts New York wall time on each section's real session dates, so daylight-saving shifts are exact.notes.jsreads synchronous/asynchronous signals and restriction phrases.schools.jsencodes Stern's credit rules with their source.verdict.jscombines the reasons.sun.jsplaces the sun for the map.
- Tests: 30 tests, including every acceptance case in the PRD, on real NYU data.
Challenges I ran into
- Free-text notes. NYU's restrictions live in sentences like "only Drama seniors will have priority". Takeable quotes them as a Check instead of guessing about the student.
- Real time zones. Times are converted on each section's actual dates, so a class that shifts when the clocks change says so.
- Big terms. Fall 2026 has more than 400 online and blended sections. Streaming puts the first cards on screen within about two seconds while the rest fill in. A cached term shows its first cards in about 60 ms.
Accomplishments that I'm proud of
- Every verdict on screen comes from live NYU data, and every reason shows its evidence.
- A data investigation in the first build slice checked NYU's credit field against the NYU Bulletin and confirmed that all 125 Fall 2026 sections without meeting times are marked asynchronous or "Does Not Meet".
- The interface works on phones and in light and dark themes.
What I learned
Planning first made the agent dependable. With the scope, PRD and spec written down, each build slice had a clear target. Decisions stayed made, and each slice ended with passing tests and a commit. Delegating the technical choices while keeping approval let me move fast and still own the product.
Takeable is live
Try it at takeable.yingzhilu.cn, in English or Chinese. The first build answered one question for students abroad. The live version plans a whole term for any NYU undergraduate, and it was load-tested with 1,000 students online at once.
- All of Spring 2027. 16,726 sections, in person and online, are judged against the credit rules of all 11 undergraduate schools. When your school and your major's school disagree, Takeable says so and marks the credit "to be confirmed" instead of guessing.
- Every verdict comes with the next step. A class that "starts 9:30 am, before your earliest 10:00 am" comes with a one-tap "Set earliest to 9:30 am". A note that needs department consent says who to ask.
- One-click timetable. It schedules whole courses with their recitations and labs, and keeps to a limit on days on campus that you set. Every section switch is shown as old → new with its time and instructor changes. Lock a class or an instructor and it stays put.
- Plan my next term. 446 majors and minors from the 2026–27 NYU Bulletin, year by year. A course your year only suggests you took counts once you confirm it.
- Ask Takeable. The chat assistant answers through the same verdict engine and turns the sections it names into cards you can add to your cart. For dates and policies the course data doesn't hold, it searches NYU's own pages and gives the links.
- Evidence on every card. Each card shows how the course is assessed, including a reviewed list of 136 sections whose professor's own syllabus keeps exams under 30%. It also shows the professor's Rate My Professors score with its number of ratings, from 2,465 profiles.
What's next for Takeable
- New terms' sections and syllabi as soon as NYU publishes them.
- Phone sign-in by text message for students in China.
- Bringing Takeable to NYU students ahead of Spring 2027 registration.
Built With
- claude
- claude-code
- css3
- deepseek
- gemini
- html5
- javascript
- node.js
- playwright
Log in or sign up for Devpost to join the conversation.