[object Object]

← back to Rentv Ad Engine

Emails tab: batch-drafted client emails for all 29 advertisers (draft-only, never sends), editable + copy + regenerate, DRAFT banner; /api/emails endpoint + scripts/draft-emails.py

8ae82f61981268d84c9b7c91693b2fb3f7172f43 · 2026-08-07 09:23:16 -0700 · Steve Abrams

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

Files touched

Diff

commit 8ae82f61981268d84c9b7c91693b2fb3f7172f43
Author: Steve Abrams <steve@designerwallcoverings.com>
Date:   Fri Aug 7 09:23:16 2026 -0700

    Emails tab: batch-drafted client emails for all 29 advertisers (draft-only, never sends), editable + copy + regenerate, DRAFT banner; /api/emails endpoint + scripts/draft-emails.py
    
    Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
---
 data/emails.json        | 424 ++++++++++++++++++++++++++++++++++++++++++++++++
 public/index.html       |  45 ++++-
 scripts/draft-emails.py |  78 +++++++++
 server.js               |   1 +
 4 files changed, 546 insertions(+), 2 deletions(-)

diff --git a/data/emails.json b/data/emails.json
new file mode 100644
index 0000000..d2e668f
--- /dev/null
+++ b/data/emails.json
@@ -0,0 +1,424 @@
+{
+ "generated_at": "2026-08-07 09:22:39",
+ "status": "DRAFT-ONLY \u2014 not sent",
+ "count": 29,
+ "emails": [
+  {
+   "name": "Commercial Real Estate Inspectors",
+   "category": "other",
+   "appearances": 17,
+   "to_websites": [],
+   "to_phones": [
+    "(818) 957-4654",
+    "818-957-4654",
+    "818-9574654",
+    "8189574654"
+   ],
+   "to_emails": [],
+   "to_contacts": [
+    "Paul Tiffany Simmington",
+    "Tiff Tiffany Simington",
+    "Tiffany Simington",
+    "Tiffany Simmington"
+   ],
+   "subject": "Thank You for Your Partnership and Opportunity to Grow Together",
+   "body": "Dear Paul,\n\nI hope this message finds you well. On behalf of the entire RENTV team, I would like to extend a warm thank you for your continued support as a sponsor of our 'Commercial Real Estate Talk' show. Your sponsorship has been instrumental in making these episodes a success and providing valuable insights to our audience.\n\nGiven the positive impact we've seen from our collaboration, we believe there is an even greater opportunity to grow together. Could we discuss ways to expand your advertising presence on RENTV?\n\nThank you again for your partnership, and I look forward to exploring how we can continue to serve both our audiences effectively.\n\nBest regards,\nSteve Bloom\nRENTV",
+   "status": "draft"
+  },
+  {
+   "name": "Fidelity Mortgage Lenders",
+   "category": "lender",
+   "appearances": 16,
+   "to_websites": [],
+   "to_phones": [
+    "800-752-9533",
+    "807 529533",
+    "807-529-533",
+    "807529533"
+   ],
+   "to_emails": [],
+   "to_contacts": [
+    "Uncle Chuck or John McClain",
+    "Uncle Chuck or John McLean",
+    "Uncle Chuck, SA is known or John McLean"
+   ],
+   "subject": "Thank You for Your Partnership and Opportunity to Grow Together",
+   "body": "Dear Uncle Chuck or John,\n\nI hope this email finds you well. On behalf of RENTV, I would like to extend our heartfelt thanks for your continued support as a sponsor of our 'Commercial Real Estate Talk' show. Your sponsorship has been instrumental in enhancing the value and reach of our content.\n\nGiven the success of our collaboration, we are excited about the potential to expand this partnership further. Could we discuss ways to enhance your exposure and perhaps explore new opportunities that align with Fidelity Mortgage Lenders' goals?\n\nThank you again for your commitment. Let's continue to grow together!\n\nBest regards,\nSteve Bloom\nRENTV",
+   "status": "draft"
+  },
+  {
+   "name": "Paramount Property Tax Appeal",
+   "category": "other",
+   "appearances": 10,
+   "to_websites": [],
+   "to_phones": [
+    "(858) 225-1200",
+    "(858) 758-9515",
+    "858-225-1200",
+    "858-2251200",
+    "858-758-9515",
+    "8582251200",
+    "8582251208"
+   ],
+   "to_emails": [],
+   "to_contacts": [
+    "Arnie",
+    "Wes Nichols",
+    "West Nichols"
+   ],
+   "subject": "Thanking You for Your Support and Inviting a Renewed Partnership",
+   "body": "Dear Arnie and Wes Nichols,\n\nI hope this message finds you well. On behalf of the RENTV team, I would like to extend our warmest thanks for your sponsorship of our 'Commercial Real Estate Talk' show. Your support has been instrumental in making these episodes highly informative and valuable for our audience.\n\nWe are excited about the positive impact our collaboration has had and believe there is even more potential to grow together. Could we discuss expanding your advertising presence or exploring new opportunities that could benefit both of our businesses?\n\nThank you again for your partnership, and I look forward to continuing this successful relationship.\n\nBest regards,\nSteve Bloom\nRENTV",
+   "status": "draft"
+  },
+  {
+   "name": "Chase Partners",
+   "category": "developer|investor",
+   "appearances": 9,
+   "to_websites": [
+    "chasepartners.com"
+   ],
+   "to_phones": [],
+   "to_emails": [
+    "Dave Parker, David@chasepartners.com",
+    "David Parker at David@chasepartners.com",
+    "David@chasepartners.com",
+    "david@chasepartners.com"
+   ],
+   "to_contacts": [
+    "David Parker",
+    "David Parker, Head of Chase Partners",
+    "David Parker, head of Chase"
+   ],
+   "subject": "Thanking You for Your Valuable Partnership and Sponsoring 'Commercial Real Estate Talk'",
+   "body": "Hello David,\n\nI hope this message finds you well. I wanted to extend a heartfelt thank you from RENTV for your support of our 'Commercial Real Estate Talk' show through sponsorship of 9 episodes, including those with Bill Shopoff, Daniel Weiss, and Marc Brutten. Your commitment has greatly enhanced the reach and impact of these discussions.\n\nWe are excited about the success we've seen together and believe there is even more potential for growth. Could we explore ways to further expand our partnership? We would love to discuss how we can continue to align with your goals in the commercial real estate industry.\n\nThank you again, and I look forward to speaking with you soon.\n\nBest regards,\nSteve Bloom\nRENTV",
+   "status": "draft"
+  },
+  {
+   "name": "Redwood Mortgage",
+   "category": "lender",
+   "appearances": 6,
+   "to_websites": [
+    "redwoodmortgage.com"
+   ],
+   "to_phones": [
+    "1-800-6596593",
+    "1806596593"
+   ],
+   "to_emails": [],
+   "to_contacts": [
+    "Steve Belleville"
+   ],
+   "subject": "Thanking You for Your Support and Offering Partnership Opportunities",
+   "body": "Dear Steve Belleville,\n\nI hope this message finds you well. On behalf of the RENTV team, I would like to extend our heartfelt gratitude for your generous sponsorship of our 'Commercial Real Estate Talk' show. Your support has greatly enhanced our ability to provide valuable insights to our viewers.\n\nWe are excited about the success we've achieved together and believe there is significant potential to further strengthen our partnership. Could we discuss expanding your advertising presence on RENTV? We have several upcoming opportunities that could benefit both of our businesses.\n\nThank you again for your continued support, and I look forward to exploring new ways to collaborate.\n\nBest regards,\nSteve Bloom\nRENTV",
+   "status": "draft"
+  },
+  {
+   "name": "Provident Savings Bank",
+   "category": "lender",
+   "appearances": 3,
+   "to_websites": [
+    "myprovident.com"
+   ],
+   "to_phones": [
+    "951-403-0567"
+   ],
+   "to_emails": [],
+   "to_contacts": [
+    "Gina Conant, Sales Manager",
+    "Gina Conant, Vice President and Sales Manager",
+    "Gina Conant, Vice President and Sales Manager of Commercial Real Estate Lending"
+   ],
+   "subject": "Thank You for Your Support and Partnership Opportunity",
+   "body": "Dear Gina,\n\nI hope this message finds you well. On behalf of the RENTV team, I would like to extend a warm thank you for your valuable sponsorship of our 'Commercial Real Estate Talk' show. Your support during episodes #20, 21, and 22 has been instrumental in enhancing our content and engaging with our audience.\n\nGiven the positive reception and the mutual benefits we have experienced, I would like to propose expanding our partnership to include additional sponsorship opportunities. We believe this can further boost your brand visibility among our targeted commercial real estate professionals.\n\nPlease let me know if you are interested in exploring these options or if there\u2019s any other way RENTV can assist Provident Savings Bank in achieving its marketing goals.\n\nBest regards,\nSteve Bloom, RENTV",
+   "status": "draft"
+  },
+  {
+   "name": "Rockefeller Group",
+   "category": "developer",
+   "appearances": 3,
+   "to_websites": [
+    "rockefellergroup.com"
+   ],
+   "to_phones": [],
+   "to_emails": [],
+   "to_contacts": [],
+   "subject": "Thank You for Your Partnership and Opportunity to Collaborate Further",
+   "body": "Subject: Thank You for Your Partnership and Opportunity to Collaborate Further\n\nDear Rockefeller Group Team,\n\nI hope this message finds you well. On behalf of the RENTV team, I would like to extend our heartfelt thanks for your continued support as a sponsor of our 'Commercial Real Estate Talk' show. It has been a pleasure working with you and featuring your expertise in episodes #20, 21, and 22.\n\nGiven your commitment to quality in the built environment, we believe there are even more opportunities to enhance our collaboration and reach new audiences together. Please let us know how we can continue or expand this partnership to benefit both of our businesses.\n\nThank you once again for your dedication and support.\n\nBest regards,\nSteve Bloom\nRENTV",
+   "status": "draft"
+  },
+  {
+   "name": "The Bascom Group",
+   "category": "developer|broker",
+   "appearances": 2,
+   "to_websites": [],
+   "to_phones": [],
+   "to_emails": [],
+   "to_contacts": [],
+   "subject": "Thanking You for Your Support and Exploring Partnership Opportunities",
+   "body": "Dear The Bascom Group Team,\n\nI hope this message finds you well. On behalf of the entire RENTV team, I would like to extend a heartfelt thank you for your generous sponsorship of our 'Commercial Real Estate Talk' show, specifically supporting our Multifamily Panel at the Greater LA State of the Market Conference and the RENTV ORANGE COUNTY MULTIFAMILY PANEL on July 26, 2022. Your support has been instrumental in enhancing our programming.\n\nWe are excited about the opportunity to continue our partnership and explore potential ways to expand your reach through additional advertising or content collaborations. Please let us know how we can further assist you.\n\nWarm regards,\nSteve Bloom\nRENTV",
+   "status": "draft"
+  },
+  {
+   "name": "Advanced Real Estate Services",
+   "category": "broker",
+   "appearances": 1,
+   "to_websites": [],
+   "to_phones": [],
+   "to_emails": [],
+   "to_contacts": [],
+   "subject": "Thanking You for Your Support and Exploring Partnership Opportunities",
+   "body": "Subject: Thanking You for Your Support and Exploring Partnership Opportunities\n\nDear Advanced Real Estate Services Team,\n\nI hope this message finds you well. I wanted to extend a heartfelt thank you for your sponsorship of RENTV's 'Commercial Real Estate Talk' show, specifically the Multifamily Panel at our Greater LA State of the Market Conference. Your support has been invaluable in enhancing our content and reaching key industry professionals.\n\nGiven your continued interest and success with us, I would like to explore potential ways we can further strengthen our partnership to better serve both our audiences. Please let me know if you are interested in renewing or expanding your advertising efforts.\n\nThank you again for your commitment, and I look forward to discussing this further.\n\nBest regards,\nSteve Bloom\nRENTV",
+   "status": "draft"
+  },
+  {
+   "name": "Advanced Real Estate The Firm",
+   "category": "property mgmt|developer",
+   "appearances": 1,
+   "to_websites": [],
+   "to_phones": [],
+   "to_emails": [],
+   "to_contacts": [],
+   "subject": "Thanking You for Your Partnership and Exploring Growth Opportunities",
+   "body": "Subject: Thanking You for Your Partnership and Exploring Growth Opportunities\n\nDear Advanced Real Estate The Firm,\n\nI hope this message finds you well. On behalf of the RENTV team, I would like to extend our warmest thanks for your recent sponsorship of our 'Commercial Real Estate Talk' show, specifically the RENTV ORANGE COUNTY MULTIFAMILY PANEL episode on July 26, 2022. Your support has been instrumental in enhancing our content and reaching a broader audience.\n\nWe believe there are further opportunities to expand our partnership and provide you with even greater exposure. Please let us know if you\u2019re interested in exploring these options.\n\nThank you again for your continued support.\n\nBest regards,\nSteve Bloom\nRENTV",
+   "status": "draft"
+  },
+  {
+   "name": "Axo Bank",
+   "category": "lender",
+   "appearances": 1,
+   "to_websites": [],
+   "to_phones": [],
+   "to_emails": [],
+   "to_contacts": [],
+   "subject": "Thanking You for Your Support and Exploring Partnership Opportunities",
+   "body": "Subject: Thanking You for Your Support and Exploring Partnership Opportunities\n\nDear Axo Bank Team,\n\nI hope this email finds you well. I wanted to extend a warm thank you on behalf of RENTV for your recent sponsorship during the 'The Finance Panel' at our Greater LA State of the Market Conference. Your support has been invaluable, especially as we navigate the complexities of commercial real estate financing.\n\nGiven your expertise in this space, we believe there are further opportunities to strengthen our partnership. Could we schedule a call to discuss potential ways for Axo Bank to continue supporting RENTV's 'Commercial Real Estate Talk' show and other initiatives?\n\nThank you again for your commitment and let\u2019s explore how we can work together even more closely.\n\nBest regards,\nSteve Bloom\nRENTV",
+   "status": "draft"
+  },
+  {
+   "name": "Axos Bank",
+   "category": "lender",
+   "appearances": 1,
+   "to_websites": [],
+   "to_phones": [],
+   "to_emails": [],
+   "to_contacts": [],
+   "subject": "Thanking Axos Bank for Your Support and Exploring New Opportunities",
+   "body": "Subject: Thanking Axos Bank for Your Support and Exploring New Opportunities\n\nDear Axos Bank Team,\n\nI hope this message finds you well. On behalf of the RENTV team, I would like to extend our heartfelt thanks for your recent sponsorship of our 'Commercial Real Estate Talk' show on October 19, 2022. Your support has been instrumental in enhancing the value and reach of our programming.\n\nWe believe that our partnership has already yielded significant benefits and look forward to exploring ways to further expand this collaboration. Could we schedule a call to discuss potential opportunities for future sponsorship or advertising?\n\nThank you again for your continued support!\n\nBest regards,\nSteve Bloom\nRENTV",
+   "status": "draft"
+  },
+  {
+   "name": "CBRE",
+   "category": "broker",
+   "appearances": 1,
+   "to_websites": [],
+   "to_phones": [],
+   "to_emails": [],
+   "to_contacts": [],
+   "subject": "Thank You for Your Valuable Partnership with RENTV's 'Commercial Real Estate Talk' Show",
+   "body": "Dear CBRE Team,\n\nI hope this message finds you well. On behalf of the RENTV team, I would like to extend our heartfelt gratitude for your recent sponsorship of our 'Commercial Real Estate Talk' show, specifically during the ORANGE COUNTY MULTIFAMILY PANEL episode on July 26, 2022. Your support has been instrumental in enhancing the visibility and credibility of this program.\n\nWe are excited about the positive impact you've had and would like to explore further opportunities to collaborate. Could we discuss ways to expand our partnership for upcoming episodes? We believe there is significant potential for mutual growth and value creation.\n\nThank you again, and I look forward to discussing next steps with you soon.\n\nBest regards,\nSteve Bloom\nRENTV",
+   "status": "draft"
+  },
+  {
+   "name": "CBRE's National Retail Partners West Team",
+   "category": "broker",
+   "appearances": 1,
+   "to_websites": [],
+   "to_phones": [],
+   "to_emails": [],
+   "to_contacts": [
+    "John Reed"
+   ],
+   "subject": "Thanking You for Your Support and Inviting You to Expand Our Partnership",
+   "body": "Dear John,\n\nI hope this email finds you well. We are writing to express our sincere gratitude for your sponsorship during the 'Retail Panel' at RENTV's Inland Empire State of The Market Conference. Your support has been invaluable, helping us reach a broader audience and fostering valuable connections.\n\nWe believe that our partnership can grow even stronger. Would you be interested in considering additional advertising opportunities or expanding your sponsorship to future events? We would love the chance to discuss how we can continue to benefit both of our organizations.\n\nThank you again for your commitment, and I look forward to exploring potential synergies with you.\n\nBest regards,\nSteve Bloom\nRENTV",
+   "status": "draft"
+  },
+  {
+   "name": "City of Ontario",
+   "category": "government entity",
+   "appearances": 1,
+   "to_websites": [],
+   "to_phones": [],
+   "to_emails": [],
+   "to_contacts": [
+    "Jennifer McClain Harimoto"
+   ],
+   "subject": "Thank You for Your Partnership and Invitation to Expand Our Collaboration",
+   "body": "Subject: Thank You for Your Partnership and Invitation to Expand Our Collaboration\n\nDear Jennifer,\n\nI hope this message finds you well. On behalf of RENTV, I would like to extend our heartfelt thanks for your recent sponsorship during the Retail Panel at our Inland Empire State of The Market Conference. Your support has been invaluable in enhancing our audience engagement and providing valuable insights into economic development opportunities.\n\nWe are excited about the potential to further strengthen this partnership and explore additional advertising avenues that align with City of Ontario\u2019s goals. Could we schedule a call to discuss how we can work together even more closely?\n\nThank you again for your continued support.\n\nWarm regards,\nSteve Bloom\nRENTV",
+   "status": "draft"
+  },
+  {
+   "name": "First",
+   "category": "lender",
+   "appearances": 1,
+   "to_websites": [],
+   "to_phones": [],
+   "to_emails": [],
+   "to_contacts": [],
+   "subject": "Thanking You for Your Partnership and Expanding Our Collaboration",
+   "body": "Subject: Thanking You for Your Partnership and Expanding Our Collaboration\n\nDear First Team,\n\nI hope this message finds you well. On behalf of the RENTV team, I want to extend a heartfelt thank you for your valuable sponsorship of our 'Commercial Real Estate Talk' show, specifically Episode #13 featuring Ethan Penner. Your support has been instrumental in enhancing the credibility and reach of our platform.\n\nGiven the success of our collaboration, we are excited about the potential to expand this partnership further. Could we schedule a call at your convenience to discuss how we can work together even more closely?\n\nBest regards,\nSteve Bloom\nRENTV",
+   "status": "draft"
+  },
+  {
+   "name": "Jones Lang LaSalle (JLL)",
+   "category": "lender|developer|broker",
+   "appearances": 1,
+   "to_websites": [],
+   "to_phones": [],
+   "to_emails": [],
+   "to_contacts": [
+    "Mark McAdams"
+   ],
+   "subject": "Thanking You for Your Support and Exploring Partnership Opportunities",
+   "body": "Subject: Thanking You for Your Support and Exploring Partnership Opportunities\n\nDear Mark,\n\nI hope this message finds you well. I wanted to extend a heartfelt thank you to Jones Lang LaSalle for sponsoring our 'Commercial Real Estate Talk' show, particularly the episode featuring The Office Panel at our Inland Empire State of the Market Conference. Your support has been invaluable in enhancing our content and reaching a broader audience.\n\nWe are currently looking to expand our partnership with JLL and would love to explore additional advertising opportunities that can benefit both our companies. Please let me know if you have any ideas or if we can schedule a call to discuss further.\n\nThank you again for your continued support.\n\nBest regards,\nSteve Bloom\nRENTV",
+   "status": "draft"
+  },
+  {
+   "name": "MG R Real Estate",
+   "category": "broker",
+   "appearances": 1,
+   "to_websites": [],
+   "to_phones": [],
+   "to_emails": [],
+   "to_contacts": [],
+   "subject": "Thanking You for Your Partnership and Renewal Opportunity",
+   "body": "Dear MG R Real Estate Team,\n\nI hope this message finds you well. I wanted to extend a heartfelt thank you for your valuable sponsorship of our 'Commercial Real Estate Talk' show, specifically at the Inland Empire State of The Market Conference where we featured The Office Panel.\n\nYour support has been instrumental in enhancing the quality and relevance of our content. Given your continued interest and success with us, I am excited to explore potential opportunities for expanding our partnership. Could we schedule a call to discuss how we can further align our goals?\n\nThank you once again for your commitment to RENTV.\n\nWarm regards,\nSteve Bloom\nRENTV",
+   "status": "draft"
+  },
+  {
+   "name": "MGR Real Estate Services",
+   "category": "brokerage|property management",
+   "appearances": 1,
+   "to_websites": [],
+   "to_phones": [],
+   "to_emails": [],
+   "to_contacts": [],
+   "subject": "Thanking You for Your Support and Exploring Partnership Opportunities",
+   "body": "Subject: Thanking You for Your Support and Exploring Partnership Opportunities\n\nDear MGR Real Estate Services Team,\n\nI hope this message finds you well. On behalf of the RENTV team, I would like to extend our heartfelt thanks for your sponsorship during RENTV CRE Talk Episode #11 with Michael Rademaker. Your support has been invaluable in enhancing our show's reach and relevance.\n\nWe are excited about the potential to deepen our partnership and explore new advertising opportunities that can benefit both of our businesses. Please let us know how we can collaborate further.\n\nThank you again for your continued support!\n\nBest regards,\nSteve Bloom, RENTV",
+   "status": "draft"
+  },
+  {
+   "name": "Ms. Rahi TE Bank",
+   "category": "lender",
+   "appearances": 1,
+   "to_websites": [],
+   "to_phones": [],
+   "to_emails": [],
+   "to_contacts": [],
+   "subject": "Thanking You for Your Support and Exploring Partnership Opportunities",
+   "body": "Subject: Thanking You for Your Support and Exploring Partnership Opportunities\n\nDear Ms. Rahi,\n\nI hope this message finds you well. On behalf of RENTV, I would like to extend our heartfelt gratitude for your recent sponsorship during the Finance Panel at our Greater LA State of the Market Conference. Your support has been instrumental in making the event a success.\n\nWe believe that our partnership can grow even stronger and are eager to explore opportunities to expand your presence on RENTV. Whether it\u2019s through additional sponsorships or co-branded content, we\u2019re confident that together we can reach new audiences and drive mutual growth.\n\nThank you again for your commitment to RENTV. Let\u2019s discuss how we can continue to collaborate effectively.\n\nWarm regards,\nSteve Bloom\nVP Business Development\nRENTV",
+   "status": "draft"
+  },
+  {
+   "name": "Newmark Merrill Companies",
+   "category": "developer|property manager",
+   "appearances": 1,
+   "to_websites": [],
+   "to_phones": [],
+   "to_emails": [],
+   "to_contacts": [
+    "Greg Gia Capozzi"
+   ],
+   "subject": "Thanking You for Your Support and Expanding Our Partnership",
+   "body": "Subject: Thanking You for Your Support and Expanding Our Partnership\n\nDear Greg,\n\nI hope this message finds you well. On behalf of the RENTV team, I would like to extend a heartfelt thank you for your sponsorship during our 'Commercial Real Estate Talk' show's Retail Panel at the Inland Empire State of The Market Conference. Your support has been invaluable in enhancing our audience engagement and providing valuable insights.\n\nWe are excited about the opportunity to further strengthen our partnership. Could we discuss expanding your advertising presence? Our team is eager to explore new opportunities that align with Newmark Merrill Companies' mission and goals.\n\nLooking forward to continuing this successful collaboration.\n\nBest regards,\nSteve Bloom, RENTV",
+   "status": "draft"
+  },
+  {
+   "name": "Pacific Southwest Realty Services",
+   "category": "broker",
+   "appearances": 1,
+   "to_websites": [],
+   "to_phones": [],
+   "to_emails": [],
+   "to_contacts": [],
+   "subject": "Thanking You for Your Partnership and Exploring New Opportunities",
+   "body": "Subject: Thanking You for Your Partnership and Exploring New Opportunities\n\nDear Pacific Southwest Realty Services,\n\nI hope this email finds you well. On behalf of RENTV, I would like to extend our sincere gratitude for your recent sponsorship of the 'Commercial Real Estate Talk' show, specifically during the Finance Panel at our Greater LA State of the Market Conference. Your support has been invaluable.\n\nWe believe there are numerous ways we can further enhance this partnership and provide even greater value to your business. Could we schedule a call to discuss potential expansion opportunities?\n\nThank you again for your continued trust in RENTV.\n\nBest regards,\nSteve Bloom, RENTV",
+   "status": "draft"
+  },
+  {
+   "name": "Paragon Commercial Group",
+   "category": "developer",
+   "appearances": 1,
+   "to_websites": [],
+   "to_phones": [],
+   "to_emails": [],
+   "to_contacts": [
+    "Todd Huber"
+   ],
+   "subject": "Thank You for Your Partnership and Invitation to Grow Together",
+   "body": "Subject: Thank You for Your Partnership and Invitation to Grow Together\n\nDear Todd,\n\nI hope this message finds you well. On behalf of the entire RENTV team, I would like to extend our heartfelt thanks for your continued support as a sponsor of our 'Commercial Real Estate Talk' show. Your sponsorship during The Retail Panel at our Inland Empire State of The Market Conference was invaluable and aligns perfectly with Paragon Commercial Group\u2019s expertise in value-add retail, particularly within the grocery-anchored space.\n\nWe are excited about the opportunity to explore potential new avenues for collaboration that can further enhance both our organizations. Please let us know if you have any ideas or if we can discuss expanding your advertising presence on RENTV.\n\nThank you again for your partnership and look forward to working with you.\n\nBest regards,\nSteve Bloom\nRENTV",
+   "status": "draft"
+  },
+  {
+   "name": "Provident Bank",
+   "category": "lender",
+   "appearances": 1,
+   "to_websites": [],
+   "to_phones": [],
+   "to_emails": [],
+   "to_contacts": [],
+   "subject": "Thanking You for Your Valuable Partnership and Exploring Future Opportunities",
+   "body": "Subject: Thanking You for Your Valuable Partnership and Exploring Future Opportunities\n\nDear Provident Bank Team,\n\nI hope this message finds you well. On behalf of RENTV, I would like to extend our sincere gratitude for your recent sponsorship at the Greater LA State of the Market Conference, where your presence on The Finance Panel was greatly appreciated.\n\nGiven the success of our partnership and the positive reception from attendees, we are eager to explore opportunities to further enhance our collaboration. We believe that together, we can continue to deliver value to both our audiences and stakeholders.\n\nLet's connect soon to discuss potential expansion or renewal options.\n\nWarm regards,\nSteve Bloom\nRENTV",
+   "status": "draft"
+  },
+  {
+   "name": "rent TV",
+   "category": "media company",
+   "appearances": 1,
+   "to_websites": [],
+   "to_phones": [],
+   "to_emails": [],
+   "to_contacts": [],
+   "subject": "Thanking You for Your Partnership and Sponsoring 'Commercial Real Estate Talk'",
+   "body": "",
+   "status": "draft"
+  },
+  {
+   "name": "Say What's Properties",
+   "category": "broker|developer",
+   "appearances": 1,
+   "to_websites": [],
+   "to_phones": [],
+   "to_emails": [],
+   "to_contacts": [],
+   "subject": "Thanking You for Your Support and Exploring Partnership Opportunities",
+   "body": "Subject: Thanking You for Your Support and Exploring Partnership Opportunities\n\nDear Say What's Properties Team,\n\nI hope this message finds you well. On behalf of the RENTV team, I would like to extend our heartfelt thanks for your recent sponsorship of our 'Commercial Real Estate Talk' show, specifically during the RENTV ORANGE COUNTY MULTIFAMILY PANEL on July 26, 2022. Your support has been instrumental in enhancing the value and reach of this episode.\n\nWe are keen to explore further opportunities where we can collaborate to mutual benefit. Could we schedule a call to discuss potential ways to expand our partnership? We believe there are many synergies that could be leveraged for both our companies.\n\nThank you again for your continued support!\n\nBest regards,\nSteve Bloom\nRENTV",
+   "status": "draft"
+  },
+  {
+   "name": "Torrey Pines Bank",
+   "category": "lender",
+   "appearances": 1,
+   "to_websites": [],
+   "to_phones": [],
+   "to_emails": [],
+   "to_contacts": [],
+   "subject": "Thanking You for Your Partnership and Exploring Growth Opportunities",
+   "body": "Subject: Thanking You for Your Partnership and Exploring Growth Opportunities\n\nDear Torrey Pines Bank Team,\n\nI hope this message finds you well. On behalf of RENTV, I would like to extend a heartfelt thank you for your continued support as the sponsor of our 'Commercial Real Estate Talk' show. Your sponsorship during the October 19, 2022 episode was instrumental in enhancing our viewers\u2019 experience and providing valuable insights into banking solutions.\n\nWe believe there are further opportunities where we can collaborate to reach an even broader audience. Could we schedule a call to discuss potential expansion of your advertising presence? Let\u2019s explore how we can continue this successful partnership.\n\nThank you again for your commitment to RENTV, and I look forward to our continued collaboration.\n\nBest regards,\nSteve Bloom\nRENTV",
+   "status": "draft"
+  },
+  {
+   "name": "Universe Holdings",
+   "category": "developer|lender",
+   "appearances": 1,
+   "to_websites": [],
+   "to_phones": [],
+   "to_emails": [],
+   "to_contacts": [],
+   "subject": "Thanking You for Your Partnership and Exploring Growth Opportunities",
+   "body": "Subject: Thanking You for Your Partnership and Exploring Growth Opportunities\n\nDear Universe Holdings Team,\n\nI hope this message finds you well. We wanted to extend our heartfelt thanks for your recent sponsorship of the 'Multifamily Panel' at RENTV's Greater LA State of the Market Conference. Your support has been invaluable in enhancing our event, and we appreciate your confidence in us.\n\nWe believe there are many more ways we can collaborate to reach even broader audiences. Would you be interested in discussing potential opportunities for expanding your advertising presence with us? Please let me know a convenient time to chat further.\n\nWarm regards,\nSteve Bloom\nRENTV",
+   "status": "draft"
+  },
+  {
+   "name": "Walker and Dunlop",
+   "category": "lender",
+   "appearances": 1,
+   "to_websites": [],
+   "to_phones": [],
+   "to_emails": [],
+   "to_contacts": [],
+   "subject": "Thanking You for Your Support and Expanding Our Partnership",
+   "body": "Dear Walker and Dunlop Team,\n\nI hope this email finds you well. It's been a pleasure working with such a knowledgeable partner as Walker and Dunlop, especially through our recent sponsorship of RENTV's 'Commercial Real Estate Talk' show on October 19, 2022. Your expertise in commercial real estate financing has added immense value to our audience.\n\nWe are excited about the opportunity to further strengthen our partnership. Could we discuss potential ways to expand your advertising presence and perhaps explore new segments or content? We believe there is significant mutual benefit in continuing this collaboration.\n\nThank you again for your support, and I look forward to our continued success together.\n\nBest regards,\nSteve Bloom\nRENTV",
+   "status": "draft"
+  }
+ ]
+}
\ No newline at end of file
diff --git a/public/index.html b/public/index.html
index 1b5f2c8..7d664a6 100644
--- a/public/index.html
+++ b/public/index.html
@@ -63,6 +63,7 @@
   <div class="tabs">
     <div class="tab on" data-view="advertisers">Advertisers</div>
     <div class="tab" data-view="guests">Guests</div>
+    <div class="tab" data-view="emails">Emails</div>
     <div class="tab" data-view="coverage">Coverage</div>
   </div>
   <div class="stat" id="stat"></div>
@@ -95,12 +96,13 @@ const setLS=(k,v)=>localStorage.setItem("rae_"+k,JSON.stringify(v));
 const siteURL=s=>/^https?:/.test(s)?s:"https://"+s;
 const telURL=p=>"tel:"+String(p).replace(/[^\d+]/g,"");
 
-let DATA={advertisers:[],guests:[],videos:[]}, FRAMES={}, SYN={};
+let DATA={advertisers:[],guests:[],videos:[],emails:[]}, FRAMES={}, SYN={};
 let view=LS("view","advertisers"), mode=LS("mode","cards");
 
 const SORTS={
   advertisers:[["appearances","Most appearances"],["name","Name A→Z"],["category","Category"],["website","Website A→Z"]],
   guests:[["name","Name A→Z"],["company","Company A→Z"],["episode","Episode (newest)"]],
+  emails:[["appearances","Most appearances"],["name","Advertiser A→Z"],["category","Category"]],
   coverage:[["date","Newest"],["title","Title A→Z"],["chars","Most transcript"]]
 };
 // table columns per view (adjustable: toggle + reorder + sort)
@@ -121,6 +123,7 @@ async function boot(){
   DATA.advertisers=a.advertisers||[]; DATA.guests=g.guests||[]; DATA.videos=m.videos||[];
   (fr.frames||[]).forEach(f=>FRAMES[f.id]=f);
   try{SYN=await fetch("/api/synopses").then(r=>r.json())}catch{SYN={}}
+  try{DATA.emails=(await fetch("/api/emails").then(r=>r.json())).emails||[]}catch{DATA.emails=[]}
   $("#stat").innerHTML=`<b>${s.advertisers}</b> advertisers · <b>${s.guests}</b> guests · <b>${s.videos_rich}</b>/${s.videos_total} videos transcribed`;
   $("#dens").value=LS("dens",4); document.documentElement.style.setProperty("--cols",$("#dens").value);
   document.querySelectorAll(".tab").forEach(t=>t.classList.toggle("on",t.dataset.view===view));
@@ -144,6 +147,12 @@ function curList(){
     L.sort((x,y)=> s==="episode"?(y.episode_id-x.episode_id):((x[s]||"").localeCompare(y[s]||"")));
     return L;
   }
+  if(view==="emails"){
+    let L=DATA.emails.filter(e=>matches([e.name,e.category,e.subject,e.body,(e.to_websites||[]).join(" ")].join(" ")));
+    const s=LS("sort_emails","appearances");
+    L.sort((x,y)=> s==="appearances"?y.appearances-x.appearances:((x[s]||"").localeCompare(y[s]||"")));
+    return L;
+  }
   let L=DATA.videos.filter(v=>matches([v.title,v.id].join(" ")));
   const s=LS("sort_coverage","date");
   L.sort((x,y)=> s==="chars"?y.caption_chars-x.caption_chars : s==="title"?x.title.localeCompare(y.title) : y.id-x.id);
@@ -158,7 +167,7 @@ function render(){
   const L=curList();
   const main=$("#main"); main.innerHTML="";
   if(!L.length){main.appendChild(el("div","empty","No results. "+(view==="coverage"?"":"Extraction may still be running — refresh in a moment."))); return;}
-  mode==="table"?renderTable(main,L):renderCards(main,L);
+  (mode==="table"&&COLS[view])?renderTable(main,L):renderCards(main,L);
 }
 
 function epChips(eps){return (eps||[]).map(e=>`<span class="chip ep" onclick="openEpisode(${e.id})" title="${esc(e.title)} — open dossier">▶ ${esc(e.title.replace(/RENTV |CRE Talk /g,'').slice(0,26))}</span>`).join("")}
@@ -188,6 +197,29 @@ function renderCards(main,L){
       <div class="row"><span class="chip ep" onclick="openEpisode(${gu.episode_id})">▶ ${esc(gu.episode_title.slice(0,32))}</span>${gu.is_panel?'<span class="badge">panel</span>':''}</div>`;
     g.appendChild(c);
   });
+  else if(view==="emails"){
+    main.querySelectorAll(".grid").forEach(x=>x.remove());
+    const note=el("div",null,'📝 <b>DRAFT emails — nothing has been sent.</b> Review/edit, then Copy to send from your own mail client. Sending is never automated here.');
+    note.style.cssText="background:#1a1400;border:1px solid var(--gold);color:var(--gold);padding:10px 14px;border-radius:10px;margin-bottom:14px;font-size:13px";
+    main.appendChild(note);
+    L.forEach(e=>{
+      const c=el("div","card"); c.style.maxWidth="820px";
+      const rcpt=[...(e.to_emails||[]).map(x=>"✉️ "+x),...(e.to_websites||[]).map(x=>"🌐 "+x),...(e.to_phones||[]).map(x=>"📞 "+x),...(e.to_contacts||[]).map(x=>"👤 "+x)];
+      c.innerHTML=`<div class="row" style="justify-content:space-between">
+          <h3 style="cursor:default">${esc(e.name)} <span class="badge cat">${esc(e.category)}</span> <span class="appear">${e.appearances} run${e.appearances>1?"s":""}</span></h3>
+          <span class="badge" style="color:var(--gold);border-color:var(--gold)">DRAFT · not sent</span></div>
+        <div class="kv">To: ${rcpt.length?esc(rcpt.join("  ·  ")):'<span class="muted">no contact captured — route manually</span>'}</div>
+        <input class="es" value="${esc(e.subject)}" style="width:100%;margin:8px 0;font-weight:600">
+        <textarea class="eb" style="width:100%;height:180px;background:#0e1116;color:var(--ink);border:1px solid var(--line);border-radius:8px;padding:10px">${esc(e.body)}</textarea>
+        <div class="row" style="margin-top:8px">
+          <button class="mailbtn" onclick="copyDraft(this)">Copy</button>
+          <button class="mailbtn" style="background:#2a3038;color:var(--ink)" onclick='regenDraft(this,${JSON.stringify(e.name)})'>↻ Regenerate</button>
+          <span class="muted" title="Name confirmed by the episode title"></span>
+        </div>`;
+      main.appendChild(c);
+    });
+    return;
+  }
   else L.forEach(v=>{
     const c=el("div","card"); const fr=FRAMES[v.id];
     c.innerHTML=`${fr&&fr.poster?`<img src="${esc(fr.poster)}" loading="lazy" onclick="openEpisode(${v.id})" style="width:100%;border-radius:8px;cursor:pointer;border:1px solid var(--line)">`:""}
@@ -345,6 +377,15 @@ window.genEmail=(kind,name,epid)=>{
     }).catch(e=>{out.innerHTML=`<div class="mailpanel" style="color:#e5989b">draft failed: ${esc(e.message)}</div>`});
 };
 window.copyMail=btn=>{const s=$("#mailsubj").value,b=$("#mailbody").value;navigator.clipboard.writeText("Subject: "+s+"\n\n"+b);btn.textContent="Copied ✓";setTimeout(()=>btn.textContent="Copy",1500)};
+window.copyDraft=btn=>{const card=btn.closest(".card");const s=card.querySelector(".es").value,b=card.querySelector(".eb").value;navigator.clipboard.writeText("Subject: "+s+"\n\n"+b);btn.textContent="Copied ✓";setTimeout(()=>btn.textContent="Copy",1500)};
+window.regenDraft=(btn,name)=>{
+  const card=btn.closest(".card"); const a=DATA.advertisers.find(x=>x.name===name)||{};
+  const context=`Advertiser: ${a.name}\nCategory: ${a.category}\nWebsites: ${(a.websites||[]).join(", ")}\nPhones: ${(a.phones||[]).join(", ")}\nWhat they do: ${a.pitch}\nSponsored ${a.appearances} episode(s): ${(a.episodes||[]).map(e=>e.title).join("; ")}`;
+  btn.textContent="…";
+  fetch("/api/email",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({kind:"advertiser",name,context})})
+    .then(r=>r.json()).then(d=>{if(d.subject)card.querySelector(".es").value=d.subject; if(d.body)card.querySelector(".eb").value=d.body; btn.textContent="↻ Regenerate";})
+    .catch(()=>btn.textContent="↻ Regenerate");
+};
 
 window.closeM=()=>$("#modal").classList.remove("on");
 $("#modal").onclick=e=>{if(e.target.id==="modal")closeM()};
diff --git a/scripts/draft-emails.py b/scripts/draft-emails.py
new file mode 100644
index 0000000..4fd3ed2
--- /dev/null
+++ b/scripts/draft-emails.py
@@ -0,0 +1,78 @@
+#!/usr/bin/env python3
+"""Batch-DRAFT client emails for RENTV advertisers (local Ollama, $0).
+
+DRAFT-ONLY. This writes editable drafts to data/emails.json for Steve to review.
+It NEVER sends anything and holds no send capability — sending is Steve-gated.
+
+Prioritizes recurring/high-value advertisers (most appearances first). Env:
+    OLLAMA_URL, OLLAMA_MODEL (default qwen2.5:latest), MIN_RUNS (default 1), FORCE=1
+"""
+import json, os, re, urllib.request, time
+
+ROOT = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
+ADV = os.path.join(ROOT, "data", "advertisers.json")
+OUT = os.path.join(ROOT, "data", "emails.json")
+OLLAMA = os.environ.get("OLLAMA_URL", "http://127.0.0.1:11434")
+MODEL = os.environ.get("OLLAMA_MODEL", "qwen2.5:latest")
+MIN_RUNS = int(os.environ.get("MIN_RUNS", "1"))
+FORCE = os.environ.get("FORCE", "") == "1"
+
+PROMPT = """Write a warm, professional business-development email from RENTV to {name}, a company that has advertised/sponsored RENTV's "Commercial Real Estate Talk" show, to thank them for their partnership and renew or expand their advertising. Reference their sponsorship naturally; do NOT invent facts not in the context. Keep it under 170 words. Sign as "Steve Bloom, RENTV".
+
+Return ONLY JSON: {"subject":"...","body":"...(use \\n for line breaks)..."}
+
+CONTEXT:
+{context}"""
+
+
+def ollama(prompt):
+    body = json.dumps({"model": MODEL, "prompt": prompt, "format": "json", "stream": False,
+                       "options": {"temperature": 0.5, "num_ctx": 8192}}).encode()
+    req = urllib.request.Request(OLLAMA + "/api/generate", data=body, headers={"Content-Type": "application/json"})
+    raw = json.load(urllib.request.urlopen(req, timeout=180)).get("response", "").strip()
+    try:
+        return json.loads(raw)
+    except Exception:
+        m = re.search(r"\{[\s\S]*\}", raw)
+        return json.loads(m.group(0)) if m else {}
+
+
+def context_for(a):
+    return (f"Advertiser: {a['name']}\nCategory: {a.get('category','')}\n"
+            f"Websites: {', '.join(a.get('websites',[]))}\nPhones: {', '.join(a.get('phones',[]))}\n"
+            f"Emails: {', '.join(a.get('emails',[]))}\nContacts: {', '.join(a.get('contacts',[]))}\n"
+            f"What they do: {a.get('pitch','')}\n"
+            f"Sponsored {a['appearances']} episode(s): {'; '.join(e['title'] for e in a.get('episodes',[]))}")
+
+
+def main():
+    advs = json.load(open(ADV))["advertisers"]
+    advs = [a for a in advs if a["appearances"] >= MIN_RUNS]
+    advs.sort(key=lambda a: -a["appearances"])
+    prev = {d["name"]: d for d in json.load(open(OUT)).get("emails", [])} if os.path.exists(OUT) and not FORCE else {}
+    print(f"[emails] drafting for {len(advs)} advertisers (>= {MIN_RUNS} run)  model={MODEL}  DRAFT-ONLY, no send")
+    out = []
+    for i, a in enumerate(advs, 1):
+        if a["name"] in prev and not FORCE:
+            out.append(prev[a["name"]]); continue
+        try:
+            r = ollama(PROMPT.replace("{name}", a["name"]).replace("{context}", context_for(a)))
+        except Exception as e:
+            r = {"subject": "", "body": "", "err": str(e)}
+        out.append({
+            "name": a["name"], "category": a.get("category", ""),
+            "appearances": a["appearances"],
+            "to_websites": a.get("websites", []), "to_phones": a.get("phones", []),
+            "to_emails": a.get("emails", []), "to_contacts": a.get("contacts", []),
+            "subject": r.get("subject", ""), "body": r.get("body", ""),
+            "status": "draft",   # NEVER "sent" — sending is out of scope / Steve-gated
+        })
+        if i % 5 == 0 or i == len(advs):
+            print(f"  [{i}/{len(advs)}] {a['name'][:36]} ({a['appearances']} runs)")
+    json.dump({"generated_at": time.strftime("%Y-%m-%d %H:%M:%S"), "status": "DRAFT-ONLY — not sent",
+               "count": len(out), "emails": out}, open(OUT, "w"), indent=1)
+    print(f"[emails] DONE  {len(out)} drafts -> {OUT}  (review in the viewer's Emails tab)")
+
+
+if __name__ == "__main__":
+    main()
diff --git a/server.js b/server.js
index 1937264..c6ded5f 100644
--- a/server.js
+++ b/server.js
@@ -39,6 +39,7 @@ const server = http.createServer((req, res) => {
   if (p === "/api/manifest") return send(res, 200, readJSON("manifest.json", { videos: [] }));
   if (p === "/api/frames") return send(res, 200, readJSON("frames.json", { frames: [] }));
   if (p === "/api/synopses") return send(res, 200, readJSON("synopses.json", {}));
+  if (p === "/api/emails") return send(res, 200, readJSON("emails.json", { emails: [] }));
   if (p === "/api/email" && req.method === "POST") return draftEmail(req, res);
   if (p === "/api/health") return send(res, 200, { ok: true, ts: Date.now() });
   if (p === "/api/stats") {

← a3bfc8b per-video DOSSIER flow: Vimeo embed + poster screenshot + in  ·  back to Rentv Ad Engine  ·  Phase 2b: advertiser ADDRESS field via free website lookup ( e9257f6 →