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,780
cohorts already taught
3

Three 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 on my ownCourses and ecosystems
This is for you if
you want to dive in on your own and see how far you get
It is
the open catalog: complete guides and ordered ecosystems
How it runs
at your own pace, come and go as you like
I want support and reviewed workBootcamps
This is for you if
you want your work reviewed one by one, with someone on the other side
It is
the same syllabus in two formats: a dated cohort, or individual with 1:1 sessions
How it runs
both are weekly: in a group we all meet, individually the hour is yours alone
I want to get interview-readyInterview Club
This is for you if
you already code and you are job hunting
It is
technical interview practice, with a live session every month
How it runs
at your own pace, with a live session every month

Two ways to learn

Group and individual bootcamps

Same syllabus, two formats, both meeting every week. In a cohort you move with a group that starts the same day you do and we all meet live together. Individually we book a call, pick your slot, and that weekly hour is yours alone.

Open catalog

Complete ecosystems, open end to end

Each ecosystem orders the guides from beginner to production, built from what real job postings actually ask for.

These are the ecosystems available today: