Seven weeks turn one paper curator into an agent
The course starts with a FastAPI service, PostgreSQL, OpenSearch, Airflow, and Ollama. Each week changes the same arXiv paper curator instead of presenting a fresh toy. Week 2 fetches and parses papers. Week 3 builds BM25 search. Week 4 adds section-aware chunks, Jina embeddings, and reciprocal rank fusion. The generated-answer layer arrives in Week 5, followed by Redis and Langfuse in Week 6.
Week 7 is where the title earns the word agentic. A LangGraph workflow validates the query, retrieves documents, grades them, rewrites weak queries, and generates an answer. A Telegram bot exposes that path on a phone. This sequence is the repo's best teaching choice: you can see why each extra service exists because the previous week's limits are visible first.
The local stack needs 20 GB before it needs an agent
The README asks for Python 3.12, Docker Compose, at least 8 GB of RAM, and more than 20 GB of free disk. Its Compose file then brings up the API, two PostgreSQL databases, OpenSearch and its dashboard, Airflow, Ollama, Redis, ClickHouse, Langfuse, and MinIO-related services. That is a useful systems lesson. It is also a lot of moving parts for someone who only wants to understand retrieval.
Our checkout was 11.5 MB across 160 files and about 10,759 lines of source. Installing its Python environment expanded disk use to 6,297 MB before Docker images, database volumes, downloaded papers, or Ollama model data entered the picture. The README's 20 GB warning is therefore believable. A learner on a small laptop should choose a narrower alternative or run one week at a time.
What happened when we ran it
Our sandbox installed commit 424a0eb in 155 seconds. It pulled 236 packages and occupied 6,297 MB on disk. The build succeeded in 6 seconds, and pip-audit found 0 known vulnerabilities. We ran this in a fresh unprivileged Debian container with 3 CPUs, 8 GB of RAM, Python 3.12, and no secrets.
The test command failed after 57 seconds. Pytest reported 58 passed, 14 failed, and 23 collection or setup errors out of 95. The tail showed failures in the arXiv client, metadata fetcher, and PDF parser tests. Each quoted failure said async functions are not natively supported. That is the observed error, not a diagnosis of which dependency or setting should change.
A green build and 58 passing tests still tell us a fair amount of code loaded and ran. They do not cancel 14 failures or 23 errors. The repository has a tests directory but no CI workflow files, so a prospective user cannot point to a visible GitHub Actions run for the commit we tested. Reproduce the suite on your own branch before using these services as a base.
Python support is narrower than the README says
The README labels the requirement as Python 3.12+. The actual package metadata requires >=3.12,<3.13, which means Python 3.13 does not qualify. That small mismatch matters because the setup uses uv and a large dependency set. Let uv create a 3.12 environment rather than asking it to solve against whichever interpreter happens to be installed.
Configuration also grows with the weekly path. Jina credentials are required for hybrid search. Telegram needs a BotFather token. Langfuse keys are optional, while its local deployment needs secrets and an encryption key. Ollama keeps answer generation local, but model weights still have to be pulled. The supplied environment file explains these variables, including warnings to replace development values.
The Compose defaults belong on a learning machine
OpenSearch runs with its security plugin disabled. The Compose file contains fixed local database passwords and initializes Langfuse with a sample admin email and password. Those choices reduce friction in a course environment. They also make the stack unsuitable for an exposed host until you replace credentials, enable the controls you need, and decide which dashboards should be reachable.
The repo calls the system production-grade, but the safer reading is production-shaped. You get queues, caching, tracing, health checks, a search engine, and separate persistence layers. You do not get a finished security or deployment policy. The course teaches the pieces and their connections. Your organization still owns authentication, network boundaries, backups, upgrades, cost limits, and incident response.
Current activity exists outside the last release
GitHub showed 9,302 stars and 29 combined open issues and pull requests on October 3, 2026. The default branch was last pushed on June 5. The latest tagged release, week7.0, was published on November 26, 2025. Those dates alone could look stale, but the open queue included an issue from September 27 and a pull request from October 3.
The queue split was 13 open issues and 16 open pull requests when checked. One July issue reports large CUDA dependencies entering the Airflow image through Docling, which is relevant beside our 6,297 MB install. The activity shows that people still work around the project. It does not give us a passing suite for commit 424a0eb. Treat the repo as course material worth studying, then promote only the parts your own tests can defend.

