Practice & Learn AI
by building it.
29 short labs that take you from your first model call to an assistant a customer can rely on. No videos. Every lab has a task, a command that checks it, and a plain description of a pass.
AI engineering
Five parts, in order: call a model, give it knowledge, build the harness around it, make it reliable, and deliver it to a customer.
Talk to a model
Run a model, call it from code, compare models with numbers, and give one tools.
Give it knowledge
Search by meaning, answer from your own documents, measure it, and fine-tune a small model.
Build the harness
The parts around the model: permissions, budgets, tool servers, and checks on generated code.
Make it reliable
Grading, traces, memory, flows that survive a restart, parallel work, and safe self-improvement.
Deliver to a customer
Choose the right problem, attack your own work, control every tool call, ship it, and hand it over.
Talk to a model
Run a model, call it from code, compare models with numbers, and give one tools.
Run a model on your laptop
Run a small open model on your own machine and call it two ways: from the terminal and over HTTP.
Call a hosted model and read the bill
Send a chat request to a hosted model from your own script, keep a conversation going, and print what each call costs.
Pick a model with numbers
Run the same five tasks on three models and choose one from a table of speed, cost and quality.
Give a model tools: the loop from scratch
Write the loop that lets a model call your functions, with no framework, so you know what every framework is doing for you.
Get data back, not prose
Turn messy customer emails into validated records your code can trust.
Give it knowledge
Search by meaning, answer from your own documents, measure it, and fine-tune a small model.
Search by meaning
Turn text into vectors and find the closest sentences, first in memory and then in a database.
Answer from your documents, with sources
Build a question answerer that reads your own documents, names the file each answer came from, and says so when the answer is not there.
Measure retrieval before you tune it
Put a number on how often the right page is found, then change one thing and see if the number moves.
Build a dataset and a baseline to beat
Make a small labelled dataset and score two cheap baselines on it, so later work has a number to beat.
Fine-tune a small open model
Train a small adapter (LoRA) on your dataset and prove with the test rows whether it beat the baselines.
Build the harness
The parts around the model: permissions, budgets, tool servers, and checks on generated code.
A model plus a harness
Wrap your tool loop in the parts that make it usable: instructions in a file, a permission question, a budget and a log.
Put a coding agent on rails
Write the instruction file a coding agent reads, and use permission modes so it plans before it edits.
Build a tool server any assistant can use
Publish your tools over the Model Context Protocol so any assistant that speaks it can call them.
Make AI-written code safe to merge
Set up the checks that catch a coding agent's mistakes before a person has to: lint, types, tests with a coverage floor, and a commit hook.
Choose and run open models
Measure what a smaller, more compressed copy of a model costs you in quality and gives you in speed and memory.
Make it reliable
Grading, traces, memory, flows that survive a restart, parallel work, and safe self-improvement.
Grade with a judge you have checked
Use a model to grade answers, and prove first that it grades the way you do.
See every step: traces
Record every model call and tool call of a run so you can see where the time and money went.
Memory that outlives the conversation
Let your assistant store facts and find them in a later session, without one customer seeing another's.
Survive a restart, wait for a person
Build a claim flow that saves its place after every step, pauses for a human on large amounts, and pays exactly once.
Many workers, one dispatcher
Process a batch of claims in parallel with a cap on how many run at once, retries for the ones that fail, and no claim lost.
Let it improve itself, and prove it
Have a model propose changes to your prompt from its own failures, and accept a change only when held-back data says it helped.
Deliver to a customer
Choose the right problem, attack your own work, control every tool call, ship it, and hand it over.
Find the use case worth building
Turn a customer's vague wish for AI into one use case with a number that says when it worked.
Attack your own assistant
Break your assistant with instructions hidden in the content it reads, then close the hole in the design rather than in the prompt.
One door for every tool, with rules
Put every tool call through one checkpoint that decides allow, deny or ask a person, from rules kept in a file.
Ship it and know the bill
Package your assistant so it runs the same anywhere, keep secrets out of the package, and work out what a request costs.
Capstone: the claims desk
Put the course together into one assistant for Parcel Desk and hand it to someone else to run.
Flisk CLI
Step through Flisk commands as a replay, see what each one writes, then run them yourself.
Foundations
Get oriented, confirm your CLI, and make a project that Flisk can understand.
Project structure
Learn how projects, stacks, and resources fit together.
First service
Create a backend resource and inspect the generated contract.
Foundations
Get oriented, confirm your CLI, and make a project that Flisk can understand.
Is Flisk installed?
Check that the Flisk CLI is on your PATH and that your machine can run a local stack.
Scaffold a project
Create a new Flisk project in an empty folder.
Add a backend resource
Add your first backend service to the project and see Flisk pick it up.
Project structure
Learn how projects, stacks, and resources fit together.
First service
Create a backend resource and inspect the generated contract.