Block a user
Add patent filing trend charts to the Analytics page
Add webhook/notification support for batch job completion and score changes
Implement scheduled/recurring analysis with change alerts
Add side-by-side patent portfolio comparison view for two companies
Allow users to export analysis reports as PDF or CSV from the dashboard
Add ruff (Python) and tsc --noEmit (TypeScript) linting to CI
Add pytest test stage to CI workflow that gates the Docker image build
Commit a frontend lockfile (package-lock.json or pnpm-lock.yaml) for reproducible builds
Add loading skeletons and error states to Batch and Analytics pages
Document patent PDF volume mount requirement and fix analyze_single_patent download step
Fix Patent.patent_id type annotation from int to str in types.py
Expose SERP cache TTL as SERP_CACHE_TTL_HOURS environment variable
Make LLM model configurable via MODEL environment variable
Replace print() calls with structured logging in analyzer.py, serp_api.py, and llm.py
chore: validate PWA behavior on iPhone Safari (iOS safe areas, standalone mode, service worker)
Add JWT auth flow tests: registration, login, protected routes, token refresh, admin endpoints
Add rate limiting middleware to auth endpoints
Persist job state in PostgreSQL so batch results survive API restarts
Refactor get_db_client() in auth.py to use a shared connection pool
Remove hardcoded database credentials from docker-compose.yml