An Australian undergraduate course aggregator and search engine. Students currently have to visit a dozen different university websites to compare courses, fees, and ATAR requirements. The Courseteer pulls all of that into one place.
- An AI-adaptive scraper collects course data (name, faculty, campus, ATAR, fees, prerequisites, duration) from Australian university websites
- If a university redesigns their site and selectors break, the scraper uses an LLM to re-map fields automatically
- A fast, filterable search interface lets students compare courses across universities in one view
| Layer | Technology |
|---|---|
| Frontend | Next.js (App Router), Tailwind CSS, next-themes |
| Database | PostgreSQL (Supabase) |
| Scraper | Python, Playwright |
| Scraper AI | Local LLM via Ollama (fallback: Claude Haiku) |
| University | Status |
|---|---|
| RMIT | Complete |
| University of Melbourne | Complete |
| Monash University | Complete |
| La Trobe University | Complete |
| Swinburne University of Technology | Complete |
| Federation University | Complete |
| Victoria University | Complete |
| Australian Catholic University (ACU) | Complete |
| Deakin University | Complete |
| University | Status |
|---|---|
| University of Sydney | Planned |
| University of Queensland | Planned |
| All remaining universities | Planned |
Prerequisites: dbmate
-
Environment setup:
cp .env.example .env # Set DATABASE_URL to your Supabase connection string (sslmode=require) -
Database: This project uses Supabase for both local dev and production. Point
DATABASE_URLat your Supabase instance — Transaction Pooler on port 6543 is recommended. -
Run migrations:
scripts\migrate.bat # Windows bash scripts/migrate.sh # macOS/Linux
Migrations live in
db/migrations/. dbmate tracks applied migrations and readsDATABASE_URLfrom.env. -
Run the scraper:
cd scraper uv run python run.py --university rmit
Phase 1 (Victorian universities) is complete. Phase 2 expands coverage to all remaining Australian universities.
| Component | Status |
|---|---|
| Database schema | Complete |
| Scraper infrastructure | Complete — robots.txt compliance, snapshot caching, AI re-mapping |
| Victorian university scrapers | Complete — all 9 universities |
| Next.js frontend | Complete — course listings, filters, pagination, campus/ATAR display |
| Admin health dashboard | Complete |
| Authentication (multi-provider) | Complete |
| Phase 2 scrapers | Planned |
MIT — see LICENSE.
