Yes, you can learn this

Learn AI and Data Engineering

Build the skills to work on the digital products of the present.

nieva ~ chat

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.

Start without payingFree courses
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
See the free ones
I want dates and supportBootcamps
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
Explore Bootcamps
I want to move at my own paceLearning Club
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
Discover the Club

Intensive Programs

Bootcamps with Live Mentoring

Cohorts with live programs and weekly progress. Free (9 weeks) and paid (21 weeks).

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
Discover the Club

These are the ecosystems available today: