Block a user
Add webhook/notification support for batch job completion and score changes
Implement scheduled/recurring patent analysis with alerts on significant changes
Add side-by-side comparison view for two companies patent portfolios
Add export feature: download analysis results as PDF or CSV from the dashboard
Add ruff (Python) and tsc --noEmit (TypeScript) linting/type-check jobs to CI
Add pytest test stage to Gitea Actions build.yaml that gates the image build
Commit a frontend lockfile (package-lock.json or pnpm-lock.yaml) for reproducible builds
Add skeleton loaders and error states to Batch and Analytics pages
Fix Patent.patent_id type annotation in types.py from int to str
Fix analyze_single_patent to download PDF before reading, or document prerequisite clearly
Document patents/ directory volume mount requirement for containerised deployments
Expose SERP_CACHE_TTL_HOURS as an environment variable in config.py
Make LLM model configurable via MODEL environment variable in llm.py
Replace print() calls with structured Python logging in analyzer.py, serp_api.py, and llm.py
Add auth test coverage: JWT registration, login, protected routes, and admin endpoints
Add rate limiting middleware to /auth/login and /auth/register endpoints
Persist async job state in PostgreSQL so batch results survive API restarts
Refactor get_db_client() in auth.py to use a shared pooled connection
Remove hardcoded PostgreSQL credentials from docker-compose.yml
Make CORS allowed origins configurable via environment variable