Buildml organizes its coding challenges into problem sets — curated groups of Python problems that build on each other progressively. Each set covers a specific AI/ML topic (such as NumPy fundamentals, neural networks, or transformer architecture) and guides you from foundational concepts through advanced implementations.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/Praashh/buildml/llms.txt
Use this file to discover all available pages before exploring further.
URL Structure
Navigating challenges follows a three-level hierarchy:/practice
The top-level practice page. Lists all available problem sets, each showing its title, description, and total challenge count.
/practice/[slug]
The problem set detail page. Shows all problems in the set, ordered by their
order field, each tagged with a difficulty badge./practice/[slug]/[problemSlug]
The interactive problem solver. Renders the full problem statement, Monaco code editor, and console panel for running and submitting code.
Example
/practice/numpy-fundamentals/numpy-create-reshape opens the “Create and Reshape” problem inside the NumPy Fundamentals set.Problem Structure
Every problem stored in the database has the following fields:| Field | Type | Description |
|---|---|---|
title | String | Human-readable name displayed in the header bar and problem list |
slug | String | URL-safe unique identifier used in routing |
description | String (Text) | Full problem statement written in Markdown with KaTeX math support |
difficulty | String | One of Easy, Medium, or Hard |
templateCode | String (Text) | Starter Python code pre-loaded into the editor when the problem opens |
testCode | String (Text) | The test script the executor runs to validate the user’s solution |
order | Int | Integer determining the problem’s position within its set (default: 0) |
problemSetId | String? | Foreign key linking the problem to its parent ProblemSet |
Difficulty Badges
Problems are colour-coded by difficulty throughout the UI:| Badge | Colour |
|---|---|
| Easy | Green (--tag-beginner-bg / --tag-beginner-ink) |
| Medium | Yellow (--tag-intermediate-bg / --tag-intermediate-ink) |
| Hard | Red (--tag-advanced-bg / --tag-advanced-ink) |
Problem Sets
Buildml ships with three seed files that populate the database with ready-to-use problems:prisma/seed.ts— Seeds the Attention Is All You Need set, which walks through the Transformer architecture from the landmark paper, including positional encodings, attention mechanisms, and encoder forward passes — all in pure NumPy.prisma/seed-numpy.ts— Seeds the NumPy Fundamentals set (9 problems: 3 Easy, 3 Medium, 3 Hard), covering array creation, reshaping, broadcasting, and vectorization.prisma/seed-nn.ts— Seeds the Neural Networks from Scratch set (6 problems: 2 Easy, 2 Medium, 2 Hard), covering activation functions, forward passes, loss computation, and backpropagation in pure NumPy.
Authentication
All challenge routes under/practice/:path* are protected by Next.js middleware. Unauthenticated visitors are redirected to /signin before they can view a problem set or attempt a problem. The top-level /practice listing page is also covered by this middleware, so a valid session is required to browse challenges at all.
Navigating Between Problems
Inside a problem page (/practice/[slug]/[problemSlug]), a header bar spans the top of the viewport. It shows breadcrumb navigation (Practice → Set Title → Problem Title) alongside the difficulty badge, and provides Prev / Next arrow buttons to jump to adjacent problems in the set.
The previous and next problem slugs are determined at render time by finding the current problem’s index in the set’s problems array (ordered by the order field) and reading the entries immediately before and after it.
Problems within a set are always fetched in ascending
order — the sequence you see in the UI reflects the intentional learning progression designed into each set.