Yes, you can learn this
Learn AI and Data Engineering
Build the skills to work on the digital products of the present.
Building an agent with LangGraph and running it: python -m extractor --batch reports/2026-Q3. 38 PDFs · 1,240 pages · ~4 h of manual work. pull revenue, margin and debt from every report. Before writing anything, I'll define the graph and. dry-run it over three documents.. from langgraph.graph import StateGraph, START, END. from langgraph.checkpoint.memory import InMemorySaver. from langgraph.types import interrupt, Command. class State(TypedDict):. document: str. figures: dict. review: bool. builder = StateGraph(State). builder.add_node("read", read_pdf). builder.add_node("extract", extract_figures). builder.add_node("review", ask_confirmation). builder.add_node("save", save_row). builder.add_edge(START, "read"). builder.add_conditional_edges("extract", route). builder.add_edge("save", END). agent = builder.compile(checkpointer=InMemorySaver()). graph compiled · 4 nodes · 1 branch · 1 interrupt. run the three test files. read → pdf.text("acme-q3.pdf"). extract → model(schema=Figures). acme-q3 · revenue 4.2M · margin 31% · debt 0.9M. read → pdf.text("borealis-q3.pdf"). borealis-q3 · no text layer · it's a scan. This one has no text. The branch sends it to OCR. instead of inventing the numbers.. route → ocr. ocr.read(dpi=300). borealis-q3 · revenue 1.8M · margin 12% · debt 2.4M. what if the model gets a figure wrong?. That's why nothing writes itself. The review node. halts the run and hands it back to you.. def ask_confirmation(state):. return interrupt({"figures": state["figures"]}). ⏸ interrupt · waiting for human confirmation. helios-q3 · margin 91% · confidence 0.41. That 91% doesn't match the sector. Flagged, not saved.. fix it to 19 and carry on. agent.invoke(Command(resume={"margin": 19})). resumed from checkpoint · step 3 of 4. good, run it over all 38. agent.stream(batch, config). 38/38 · 35 automatic · 3 flagged for review. 6 min 12 s · 0.42 USD in tokens. Four hours of work in six minutes, and the three. doubtful cases are flagged, not buried.
- registered students
- 6,767
- cohorts already taught
- 4
Two ways to learn with us
Start where you are
Only one fits you today. Pick by where you stand, not by what we sell.
- This is for you if
- you want to see how we teach before deciding anything
- It is
- complete, open guides. No card, no trial that expires
- How it runs
- at your own pace, come and go as you like
- This is for you if
- you want a calendar, work reviewed one by one, and someone on the other side
- It is
- intensive live programs, paid, plus free mini-bootcamps to get started
- How it runs
- live, twice a week, in a cohort with a start date
- This is for you if
- you already code and would rather not be tied to a calendar
- It is
- access to every course, organised into paths, plus a fortnightly live with an instructor
- How it runs
- self-paced, monthly subscription, cancel anytime
Intensive Programs
Bootcamps with Live Mentoring
Cohorts with live programs and weekly progress. Free (9 weeks) and paid (21 weeks).
This bootcamp has already started, but you can still register and join the live classes. We recommend catching up with the group, or writing to us so we can help you do it.
- Starts
- June 26, 2026
- Modules
- 4
Subscription
The Club: move at your own pace, month to month
The Club is a subscription. You get access to every course on the platform. The paths are the order worth taking them in, so you always know what comes next.
- Every available course
- A fortnightly live with an instructor to discuss the courses and where the market is heading
- A dedicated WhatsApp group
These are the ecosystems available today:
This learning path is designed to help you develop the skills you need in the field of AI Engineering.