A local REST API that accepts a URL, scrapes its content, and returns a summary generated by a local LLM via Ollama

4 Open Issues Need Help Last updated: Mar 4, 2026

Open Issues Need Help

View All on GitHub

AI Summary: This issue proposes refactoring repetitive test functions in the test suite by utilizing `pytest.mark.parametrize`. The goal is to replace groups of nearly identical tests, which currently differ only by input values (e.g., summary lengths), with a single parameterized test function to improve maintainability and reduce redundancy. Known candidates in `tests/routes/test_summarize.py` are provided as an example.

Complexity: 2/5
enhancement good first issue

A local REST API that accepts a URL, scrapes its content, and returns a summary generated by a local LLM via Ollama

Python

AI Summary: This issue aims to enhance observability by implementing structured logging for all currently silent API routes within `app/routes/summarize.py`. Currently, only the `POST /summarize` endpoint emits logs, hindering debugging for other history-related operations. The task involves adding at least one `log.info` call with relevant structured fields to `GET /history`, `GET /history/{id}`, and `DELETE /history/{id}`, leveraging the project's existing `structlog` setup.

Complexity: 1/5
enhancement good first issue

A local REST API that accepts a URL, scrapes its content, and returns a summary generated by a local LLM via Ollama

Python

AI Summary: This GitHub issue proposes adding a `reading_time_minutes` field to the API's summary response. This field will be a computed property on the ORM model, calculating the estimated reading time based on the article's word count (assuming 200 words per minute) and then added to the `SummaryResponse` schema. A prerequisite for this feature is the completion of issue #48, which ensures the article's content is persisted and available.

Complexity: 1/5
enhancement good first issue

A local REST API that accepts a URL, scrapes its content, and returns a summary generated by a local LLM via Ollama

Python

AI Summary: This issue proposes persisting the raw scraped text content in the `content` column of the `summaries` database table. Currently, this column is unused, and the raw text is discarded after summarization, preventing review and requiring re-scraping for retries. The solution involves modifying the `create()` function in `app/repositories/summary.py` to accept and store the content, and updating the `POST /summarize` handler in `app/routes/summarize.py` to pass the scraped text to this function.

Complexity: 1/5
enhancement good first issue

A local REST API that accepts a URL, scrapes its content, and returns a summary generated by a local LLM via Ollama

Python