Ask TA
A locally deployable study assistant for the Foundations of Data Science course at UZH.
Ask TA answers your questions from the course's own lecture notes and nothing else. It runs on your machine: install the app from PyPI, import the course bundle handed out on the course page, and add a free Gemini API key.
What it does
- Answers grounded in the notes: every reply is built from the course material, not from the model's general knowledge.
- Citations you can open: each answer names the sections it used, and a click opens the lecture-notes PDF at that page with the quoted lines highlighted.
- Quotes checked against the source: the verbatim lines an answer quotes are checked locally against the notes, and a quote that cannot be confirmed is flagged on screen.
- Section summaries: ask it to summarize a section and it works through that section's whole subtree in order, not just the passages that matched.
- Math and code rendering: answers stream in with LaTeX and syntax highlighting.
It is still a language model, so an answer can be wrong even when it reads as confident. Every answer carries its citations, so check it against the notes before you rely on it.
Requirements
- Python 3.10-3.14: check with
python3 --version(py --versionon Windows). Ifpipsays no matching distribution found, install Python 3.14 or older and try again. - The course bundle:
ask-ta-data-YYYY-MM-DD.tar.gz(about 65 MB), from the FDS course page. Bundles built before the app was renamed keep the olderfds-bot-data-YYYY-MM-DD.tar.gzname, and either is the right file. It holds the lecture notes and the search indices built from them: course material shared only with enrolled students through the course page. - A Gemini API key: free from Google AI Studio.
- An internet connection: the notes and the search run on your machine, but the answers are generated by Google's Gemini API.
Installation
pip install ask-ta
If pip throws errors or if the install succeeds but ask-ta is then
"command not found", install it into its own environment instead:
pipx install ask-ta
Then download the course bundle from the FDS course page and leave it packed;
the app takes the .tar.gz as it downloaded.
Running it
ask-ta
The server starts and your browser opens at http://127.0.0.1:8000/. The
terminal stays almost silent, which is what a healthy start looks like:
ask-ta is ready: open http://127.0.0.1:8000/ in your browser.
Press Ctrl+C to stop.
Only errors are logged, so anything printed alongside those lines is worth reading. The address is printed on every launch, and you can always open it yourself.
First launch
The first start asks for two things, right where you would chat:
- The course bundle: drag the downloaded
.tar.gzonto the page, or use the file picker. The app copies it into its own data folder under~/.ask-ta/, so you can delete the download afterwards. - A Gemini API key: paste in a free key from Google AI Studio and you are ready to go.
Keeping the course material up to date
When the notes are updated mid-semester, download the new file and import it
from Settings, then Course material, then Replace. That settings
card shows the build date of the bundle you have, and ask-ta --version
prints it next to the app version.
Command-line options
| Option | What it does |
|---|---|
--host HOST |
Serve on a specific host |
--port PORT |
Serve on another port when 8000 is already in use |
--version |
Print the app version and the build date of the imported bundle |
--help |
Show every option, including --host and --log-level |
Your data stays on your machine
Your API key, your conversations, your settings, and the imported course bundle
all live under ~/.ask-ta/.
Platform requirements
Pre-built wheels cover all supported platforms, so no compiler is needed:
| Platform | Requirement |
|---|---|
| Linux | x86_64 or arm64, glibc >= 2.28 (Ubuntu 20.04+, Debian 10+, RHEL 8+) |
| macOS (Apple Silicon) | macOS >= 11 on Python 3.10-3.13; macOS >= 14 on Python 3.14 |
| macOS (Intel) | macOS >= 10.14 on Python 3.10-3.13; macOS >= 15 on Python 3.14 |
| Windows | AMD64 |
If pip reports no matching distribution, or starts compiling something, you
are on an unsupported combination; an older Python (3.10-3.13) is the quickest
fix.
Support
Found a wrong answer or a bug? The app has a built-in feedback flow: select the answers in question and click Copy package, which fills in the app and model metadata for you. Then use Open email app or Download .md on the screen that follows, and send the result to the course maintainer.
Source access is internal to the UZH DaST group. Contact
mayer@ifi.uzh.ch or
giuseppe.doda@uzh.ch. Contributors working from a
checkout: see CONTRIBUTING.md.
License
The application code is released under the MIT License. The course bundle is not covered by it: the lecture notes and everything derived from them are licensed for use by enrolled FDS students only, and must not be redistributed.
Release files for ask-ta 0.2.3
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| ask_ta-0.2.3-py3-none-any.whl | Python 3 | none | any | Details |
Release files / ask_ta-0.2.3-py3-none-any.whl
| Download URL | ask_ta-0.2.3-py3-none-any.whl |
|---|---|
| Size | 1.5 MB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
fb7c6d08432fc0cb6dae186e5d42bc23c449be964594ccc15fa07e8968331411
|
|
BLAKE2b-256 checksum How to use checksums |
6b549aabfd4eafdceafaa75ce3a1df63d71ab344c91d38c5c9bc971ac56ee9b4
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 13, 2026.
Transparency log