
The problem
The client had to know when any of dozens of public policy pages changed. Checking them by hand meant changes were found late or not at all.
What I built
- Watch list of pages, each with the CSS selector for its main text, so menus and footers never show up as changes.
- Fetch and extract with requests and BeautifulSoup inside Lambda.
- Compare against the last stored version with a unified diff, and skip pages that did not change.
- Report: each change is stored as a new version and an SES email with the diff goes to every subscriber.
- Review API: API Gateway endpoints mark a change as reviewed, lock it while someone is on it, and log who reviewed it and when.
Stack
Python, AWS Lambda, API Gateway, DynamoDB, SES, BeautifulSoup, difflib