{"repo":"brayden-s-haws/pm_am_newsletter","free":true,"listed":false,"github":"https://github.com/brayden-s-haws/pm_am_newsletter","clone":"git clone https://github.com/brayden-s-haws/pm_am_newsletter.git","description":"This is code generates a daily, automated newsletter. It uses crowd-sourced content, combined with OpenAI GPT to curate the email contents. (The prompts and sources could easily be tweaked to cover any domain).","language":"Python","stars":28,"topics":["ai","api","html","python","scraper","sendgrid"],"license":"MIT","category":"scrapers-browser-automation","readme_excerpt":"PM AM Newsletter Current status: Complete Personal Progress ### What I learned: Various ways to acquire and shape data including scraping and APIs. How to use the SendGrid API to manage contacts and send emails. I also worked heavily with the OpenAI API and figured out how to build a multi-step process for working with an LLM to refine content. What I wish I had done differently: Spent more time on logging and tests. I mostly relied on print statements when there were errors and did not have programtic fallbacks for when there were issues. I also should have refactored many peices of this project to be more generalized. I built multiple scrapers instead of figuring out a way to build a single scraper that would work for many sources. What I am most proud of: summary generator.py. LLMS can be extremely fickle, especially if you overload them with context. I was really proud of how I was able to chain multiple API calls together to get a consistent, quality output. I also thought it was really clever to use the LLM's knowlede of Domain Reputation as a proxy for a very expensive domain reputation tool. I also had a lot of fun combining prompt engineering with more traditional parsing to ensure LLM outputs aligned with the parameters of the functions in the chain. What I want to learn next: I want to spend more time on Classes and Sub-Classes. There were lots of opportunities to use them in this project between the LLM API calls and the scrapers. I would like to better understand","default_branch":null,"files":null,"tree":[],"storefront":"/r/brayden-s-haws","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/brayden-s-haws/pm_am_newsletter/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}