Revolutionizing Real Estate Outreach with AI-Powered Lead Scraping and Personalized Email Automation
Category: AI Automation, Web Scraping, Email Automation
Tools & Technologies: Python 3.13, Playwright, OpenAI API (gpt-3.5-turbo), Pandas, SMTP (Gmail),
Google Drive
Status: Completed
In a competitive real estate market, effective lead generation and outreach are critical for success. The PropertyVisualizer project showcases my ability to leverage Python, AI, and web technologies to create a fully automated system that scrapes leads from Gelbe Seiten (Yellow Pages) in Berlin, generates personalized German emails using the OpenAI API, and sets up an email-sending sequence, complete with a test email feature. This solution demonstrates my expertise in scripting, data handling, and AI-driven automation, delivering a robust tool tailored for Immobilienmakler (real estate agents). My proactive approach to overcoming challenges like dynamic web scraping and ensuring compliance with ethical guidelines underscores my problem-solving skills and dedication to excellence.
Aim:
To develop an AI-powered, automated lead generation and email campaign
tool for real estate outreach in Berlin, showcasing advanced programming and machine learning
skills.
Objectives:
The objectives of the project are outlined below:
from playwright.sync_api import sync_playwright
import pandas as pd
import re
import time
# Start Playwright
with sync_playwright() as p:
# Launch a browser in non-headless mode for debugging
browser = p.chromium.launch(headless=False)
page = browser.new_page()
# URL to scrape
url = "https://www.gelbeseiten.de/branchen/immobilienmakler/berlin"
try:
page.goto(url, timeout=60000) # Increased timeout to 60 seconds
except Exception as e:
print(f"Failed to load the initial page: {str(e)}")
browser.close()
exit()
# Accept cookies if there's a consent dialog
try:
accept_button = page.query_selector(
'button#onetrust-accept-btn-handler')
if accept_button:
accept_button.click()
print("Accepted cookies")
page.wait_for_timeout(2000)
except Exception as e:
print(f"No cookie dialog found or error: {str(e)}")
# Wait for the page to load
page.wait_for_timeout(5000)
# Scroll to the bottom to load all listings
page.evaluate("window.scrollTo(0, document.body.scrollHeight)")
page.wait_for_timeout(2000) # Wait for lazy-loaded content
# Find all company elements and extract names and details URLs upfront
companies = page.query_selector_all('h2.mod-Treffer__name')
print(f"Found {len(companies)} company names")
# Store company names and details URLs in a list to avoid context issues
company_data = []
for company in companies:
company_name = company.inner_text().strip()
details_url = page.evaluate("""
(element) => {
let parent = element.closest('article');
if (parent) {
let link = parent.querySelector('a[href]');
return link ? link.getAttribute('href') : null;
}
return null;
}
""", company)
if company_name and details_url:
company_data.append(
{"name": company_name, "details_url": details_url})
leads = []
for idx, data in enumerate(company_data):
company_name = data["name"]
details_url = data["details_url"]
print(f"[{idx+1}/{len(company_data)}] Processing: {company_name}")
# Construct full URL
full_details_url = f"https://www.gelbeseiten.de{details_url}" if not details_url.startswith(
'http') else details_url
try:
# Navigate to the company page
page.goto(full_details_url, timeout=30000)
# Wait longer for the page to fully load
page.wait_for_timeout(3000)
# Scroll down to ensure all content is loaded
page.evaluate("window.scrollTo(0, document.body.scrollHeight)")
page.wait_for_timeout(2000)
# IMPROVED METHOD 1: Try to get the email directly from the button with data attributes
email_found = False
# First try to get the email from the "email_versenden" element
email_button = page.query_selector('div[id="email_versenden"]')
if email_button:
data_link = email_button.get_attribute('data-link')
if data_link and 'mailto:' in data_link:
email_match = re.search(
r'mailto:([a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z0-9]+)', data_link)
if email_match:
email = email_match.group(1)
leads.append(
{"Company Name": company_name, "Email": email})
print(f"✓ Found email: {email}")
email_found = True
# IMPROVED METHOD 2: If not found, try alternate method with aktionsleiste-button
if not email_found:
# Look for elements with data-link attribute containing mailto
email_elements = page.query_selector_all(
'[data-link*="mailto:"]')
for element in email_elements:
data_link = element.get_attribute('data-link')
if data_link:
email_match = re.search(
r'mailto:([a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z0-9]+)', data_link)
if email_match:
email = email_match.group(1)
leads.append(
{"Company Name": company_name, "Email": email})
print(f"✓ Found email: {email}")
email_found = True
break
# IMPROVED METHOD 3: Try JavaScript approach to find all elements with mailto links
if not email_found:
try:
email_element = page.evaluate_handle("""
() => {
const elements = document.querySelectorAll('[data-link]');
for (let el of elements) {
const dataLink = el.getAttribute('data-link');
if (dataLink && dataLink.includes('mailto:')) {
return el;
}
}
return null;
}
""")
if email_element:
data_link = email_element.get_attribute('data-link')
if data_link:
email_match = re.search(
r'mailto:([a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z0-9]+)', data_link)
if email_match:
email = email_match.group(1)
leads.append(
{"Company Name": company_name, "Email": email})
print(f"✓ Found email: {email}")
email_found = True
except Exception as e:
print(f"JavaScript evaluation error: {str(e)}")
# IMPROVED METHOD 4: Locate by class name from your screenshot
if not email_found:
email_element = page.query_selector(
'.detailseite_e-mail-button')
if email_element:
data_link = email_element.get_attribute('data-link')
if data_link and 'mailto:' in data_link:
email_match = re.search(
r'mailto:([a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z0-9]+)', data_link)
if email_match:
email = email_match.group(1)
leads.append(
{"Company Name": company_name, "Email": email})
print(f"✓ Found email: {email}")
email_found = True
if not email_found:
# Try directly capturing data-link from the span containing "E-Mail"
email_spans = page.query_selector_all('span')
for span in email_spans:
if "E-Mail" in span.inner_text():
# Try to get data-link from parent
parent = span.evaluate(
"el => el.closest('[data-link]')")
if parent:
data_link = parent.get_attribute('data-link')
if data_link and 'mailto:' in data_link:
email_match = re.search(
r'mailto:([a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z0-9]+)', data_link)
if email_match:
email = email_match.group(1)
leads.append(
{"Company Name": company_name, "Email": email})
print(f"✓ Found email: {email}")
email_found = True
break
if not email_found:
print(f"⨯ No email found for: {company_name}")
except Exception as e:
print(f"Error processing {company_name}: {str(e)}")
# Optional: limit the number of companies to process
if len(leads) >= 20:
print(f"Reached limit of 20 leads. Stopping.")
break
# Avoid rate limiting
time.sleep(2)
# Save to CSV
if leads:
df = pd.DataFrame(leads)
desktop_path = "C:/Users/Aorus15/Desktop/PropertyVisualizer/"
csv_path = desktop_path + "leads.csv" # Changed to relative path
df.to_csv(csv_path, index=False)
print(
f"Scraped and saved {len(leads)} leads with emails to {csv_path}")
else:
print("No leads with emails were scraped.")
# Keep the browser open for inspection
print("Browser will close in 10 seconds. Inspect the page now!")
page.wait_for_timeout(10000)
browser.close()
Company Name | |
---|---|
Living in Berlin - my pink Immobilien GmbH | [email protected] |
LBS Immobilien, Immobilienberaterin Geiling Karen | [email protected] |
Brunst Immobilien Hausverwaltung e. K. | [email protected] |
Duwe Thomas | [email protected] |
Deutsche Grundstücksauktionen AG | [email protected] |
L. Will + Partner Immobilienservice GmbH | [email protected] |
Walter Loll oHG - Hausverwaltung & Immobilienmakler | [email protected] |
Häuserverwaltung Gründer oHG | [email protected] |
Plura Haus und Immobilien GmbH | [email protected] |
Cantor Immobilien Consult | [email protected] |
Andreas Hauf, IVD | [email protected] |
Bona Fide Immobilien GmbH | [email protected] |
Geiling Karen | [email protected] |
H&Z Immobilien e.K. | [email protected] |
Schrottenbacher Dorit | [email protected] |
Treichel Olaf | [email protected] |
Walter Loll OHG | [email protected] |
Bona Fide Immobiliengesellschaft mbH Immobilienverwalter | [email protected] |
Brunst Manuela | [email protected] |
Geiling Immobilien-Management e.K. Immobilienmaklerbüro | [email protected] |
import pandas as pd
import openai
from openai import OpenAI
import os
# Set your OpenAI API key
# Replace 'your-api-key-here' with your actual OpenAI API key
openai_api_key = 'sk-proj-z-****************************7vaMdMA'
if not openai_api_key:
raise ValueError("Please set your OpenAI API key in the script.")
# Initialize the OpenAI client
client = OpenAI(api_key=openai_api_key)
# Path to your CSV file
csv_path = "C:/Users/Aorus15/Desktop/PropertyVisualizer/leads.csv"
# Read the CSV file
try:
df = pd.read_csv(csv_path)
print(f"Loaded {len(df)} leads from {csv_path}")
except Exception as e:
print(f"Error reading CSV file: {str(e)}")
exit()
# Verify the required columns
required_columns = ["Company Name", "Email"]
if not all(col in df.columns for col in required_columns):
print(f"CSV file must contain the following columns: {required_columns}")
exit()
# Function to generate a personalized email using OpenAI
def generate_personalized_email(company_name, email):
# Define the prompt for OpenAI
prompt = (
f"Write a professional and polite email to a real estate company (Immobilienmakler) in Berlin, Germany. "
f"The email should be in German, addressed to the company '{company_name}', and sent from a fictional sender named 'Damilare Adekeye' "
f"from a company called 'PropertyVisualizer'. The purpose of the email is to propose a potential collaboration "
f"for property listings and client referrals. Keep the tone friendly and professional, and the email should be concise (150-200 words). "
f"Include a subject line and a proper email signature. The sender email is [email protected], +2348163180829"
f"Note: Do no make mistakes or regenerate duplicate sentences for each email, as it has to be professional in nature."
)
try:
# Call the OpenAI API to generate the email
response = client.chat.completions.create(
model="gpt-3.5-turbo", # You can use "gpt-4" if you have access
messages=[
{"role": "system", "content": "You are a professional email writer."},
{"role": "user", "content": prompt}
],
max_tokens=300,
temperature=0.7
)
# Extract the generated email text
email_content = response.choices[0].message.content.strip()
return email_content
except Exception as e:
print(f"Error generating email for {company_name}: {str(e)}")
return None
# Generate emails for each company
emails = []
for index, row in df.iterrows():
company_name = row["Company Name"]
email_address = row["Email"]
print(f"Generating email for: {company_name} ({email_address})")
# Generate the email
email_content = generate_personalized_email(company_name, email_address)
if email_content:
emails.append({
"Company Name": company_name,
"Email Address": email_address,
"Generated Email": email_content
})
print(f"✓ Email generated for {company_name}")
else:
print(f"⨯ Failed to generate email for {company_name}")
# Save the generated emails to a new CSV file
if emails:
email_df = pd.DataFrame(emails)
output_csv_path = "C:/Users/Aorus15/Desktop/PropertyVisualizer/generated_emails.csv"
email_df.to_csv(output_csv_path, index=False)
print(f"Saved {len(emails)} generated emails to {output_csv_path}")
else:
print("No emails were generated.")
# Optional: Display the first few emails for review
if emails:
print("\nSample of generated emails:")
for i, email in enumerate(emails[:3]): # Show first 3 emails
print(f"\nEmail {i+1}:")
print(f"Company: {email['Company Name']}")
print(f"Email Address: {email['Email Address']}")
print(f"Generated Email:\n{email['Generated Email']}\n")
Company Name | Email Address | Generated Email |
---|---|---|
Living in Berlin - my pink Immobilien GmbH | [email protected] |
Subject: Potenzielle Zusammenarbeit für Immobilienanzeigen und Kundenempfehlungen Sehr geehrte Damen und Herren von Living in Berlin - my pink Immobilien GmbH, Mein Name ist Damilare Adekeye und ich vertrete die Firma PropertyVisualizer. Wir sind ein Unternehmen, das sich auf die Visualisierung von Immobilien spezialisiert hat. Aufgrund unserer gemeinsamen Interessen im Immobiliensektor möchte ich die Möglichkeit einer potenziellen Zusammenarbeit für die Auflistung von Immobilien und die Weiterleitung von Kunden prüfen. Unser Ziel ist es, hochwertige Immobilienanzeigen zu erstellen, um potenzielle Käufer und Mieter anzusprechen. Wir glauben, dass eine Kooperation mit Living in Berlin - my pink Immobilien GmbH gegenseitige Vorteile für unsere Unternehmen und Kunden bringen könnte. Ich würde mich freuen, mit Ihnen über die Details einer möglichen Zusammenarbeit zu sprechen. Bitte lassen Sie mich wissen, ob Sie an einer Partnerschaft interessiert sind. Vielen Dank im Voraus für Ihre Aufmerksamkeit. Ich freue mich auf eine mögliche Zusammenarbeit. Mit freundlichen Grüßen, Damilare Adekeye PropertyVisualizer [email protected] +2348163180829 |
LBS Immobilien, Immobilienberaterin Geiling Karen | [email protected] |
Subject: Potenzielle Zusammenarbeit für Immobilienangebote und Kundenvermittlung Sehr geehrte Frau Geiling Karen, Ich heiße Damilare Adekeye und ich vertrete die Firma PropertyVisualizer. Wir sind ein Unternehmen, das sich auf die Visualisierung und Vermarktung von Immobilien spezialisiert hat. Auf der Suche nach potenziellen Kooperationspartnern sind wir auf Ihr Unternehmen, LBS Immobilien, aufmerksam geworden. Wir möchten gerne eine Zusammenarbeit vorschlagen, bei der wir Ihnen hochwertige Visualisierungen für Ihre Immobilienangebote zur Verfügung stellen können. Darüber hinaus sind wir an einer partnerschaftlichen Vereinbarung zur gegenseitigen Kundenvermittlung interessiert, um unseren Kundenstamm zu erweitern und gemeinsam erfolgreiche Geschäfte zu realisieren. Wir würden uns freuen, die Möglichkeit zu haben, unsere Ideen mit Ihnen persönlich zu besprechen und eine langfristige und erfolgreiche Partnerschaft aufzubauen. Vielen Dank im Voraus für Ihre Aufmerksamkeit. Wir freuen uns auf eine positive Rückmeldung. Mit freundlichen Grüßen, Damilare Adekeye PropertyVisualizer [email protected] +2348163180829 |
Brunst Immobilien Hausverwaltung e. K. | [email protected] |
Betreff: Potenzielle Zusammenarbeit für Immobilienlisten und Kundenempfehlungen Sehr geehrte Damen und Herren von Brunst Immobilien Hausverwaltung e. K., mein Name ist Damilare Adekeye und ich vertrete die Firma PropertyVisualizer. Wir sind spezialisiert auf Immobilienmarketing und -präsentationen. Ich schreibe Ihnen, um eine potenzielle Zusammenarbeit vorzuschlagen, bei der wir Ihnen helfen können, Ihre Immobilienliste zu optimieren und qualifizierte Kundenempfehlungen anzubieten. Wir verfügen über umfangreiche Erfahrung in der Erstellung hochwertiger Immobilienpräsentationen, die dazu beitragen, potenzielle Käufer anzulocken und den Verkaufsprozess zu beschleunigen. Wir sind interessiert daran, mit Ihnen zusammenzuarbeiten, um Ihre Immobilienangebote noch attraktiver zu präsentieren und so Ihren Umsatz zu steigern. Wir würden uns freuen, weitere Einzelheiten zu besprechen und zu erfahren, wie wir Ihnen helfen können, Ihre Ziele zu erreichen. Vielen Dank im Voraus für Ihre Aufmerksamkeit und wir freuen uns auf eine mögliche Zusammenarbeit. Mit freundlichen Grüßen, Damilare Adekeye |
Duwe Thomas | [email protected] |
Betreff: Potenzielle Zusammenarbeit für Immobilienanzeigen und Kundenvermittlung Sehr geehrte Damen und Herren von Duwe Thomas, Mein Name ist Damilare Adekeye und ich vertrete das Unternehmen PropertyVisualizer, das sich auf die Visualisierung von Immobilien spezialisiert hat. Wir sind an einer möglichen Zusammenarbeit mit Ihrem Immobilienunternehmen interessiert, um Ihre Immobilienanzeigen zu optimieren und potenzielle Kunden zu vermitteln. Unser Team von Experten kann hochwertige Visualisierungen und virtuelle Touren für Ihre Immobilien erstellen, um die Attraktivität Ihrer Angebote zu steigern. Zudem verfügen wir über ein breites Netzwerk von potenziellen Käufern und Mietern, denen wir gerne Ihre Immobilien präsentieren würden. Wir würden uns freuen, die Möglichkeit zu haben, die Details einer Zusammenarbeit mit Ihnen zu besprechen und gemeinsam eine erfolgreiche Partnerschaft aufzubauen. Vielen Dank im Voraus für Ihre Aufmerksamkeit. Wir freuen uns auf eine positive Rückmeldung. Mit freundlichen Grüßen, Damilare Adekeye PropertyVisualizer [email protected] +2348163180829 |
Deutsche Grundstücksauktionen AG | [email protected] |
Subject: Potenzielle Zusammenarbeit für Immobilienlisten und Kundenempfehlungen Sehr geehrte Damen und Herren von Deutsche Grundstücksauktionen AG, Mein Name ist Damilare Adekeye und ich vertrete die Firma PropertyVisualizer, die sich auf Immobilienvisualisierung spezialisiert. Wir sind an einer möglichen Zusammenarbeit mit Ihrem renommierten Unternehmen interessiert, um unsere Dienstleistungen anzubieten und gegenseitige Kundenempfehlungen auszutauschen. Als Experten im Bereich Immobilienmarketing können wir dazu beitragen, Ihre Immobilienlisten durch hochwertige Visualisierungen und Präsentationen zu optimieren. Wir glauben, dass eine Partnerschaft zwischen unseren Unternehmen sowohl für unsere Kunden als auch für uns von Vorteil sein könnte. Wir würden uns freuen, die Möglichkeit zu haben, unsere Ideen und Möglichkeiten für eine Zusammenarbeit mit Ihnen in einem persönlichen Gespräch zu erörtern. Vielen Dank im Voraus für Ihre Aufmerksamkeit und wir freuen uns auf eine mögliche zukünftige Zusammenarbeit. Mit freundlichen Grüßen, Damilare Adekeye PropertyVisualizer [email protected] +2348163180829 |
L. Will + Partner Immobilienservice GmbH | [email protected] |
Subject: Potenzielle Zusammenarbeit für Immobilienanzeigen und Kundenvermittlungen Sehr geehrte Damen und Herren von L. Will + Partner Immobilienservice GmbH, mein Name ist Damilare Adekeye und ich vertrete die Firma PropertyVisualizer, die sich auf Immobilienmarketing spezialisiert hat. Wir sind an einer potenziellen Zusammenarbeit mit Ihrem renommierten Unternehmen interessiert, um unsere Dienstleistungen anzubieten. Wir würden gerne unsere innovativen Marketinglösungen vorstellen, um Ihre Immobilienanzeigen ansprechender zu gestalten und potenzielle Kunden anzuziehen. Darüber hinaus sind wir an einer Partnerschaft zur Vermittlung von Kunden interessiert, um Ihnen zusätzliche Geschäftschancen zu bieten. Gerne würden wir einen persönlichen Termin vereinbaren, um unsere Ideen im Detail zu besprechen und zu sehen, wie wir gemeinsam erfolgreich sein können. Wir freuen uns auf die Möglichkeit einer zukünftigen Zusammenarbeit. Mit freundlichen Grüßen, Damilare Adekeye PropertyVisualizer [email protected] +2348163180829 |
Walter Loll oHG - Hausverwaltung & Immobilienmakler | [email protected] |
Betreff: Potenzielle Zusammenarbeit für Immobilienvermarktung Sehr geehrte Damen und Herren von Walter Loll oHG - Hausverwaltung & Immobilienmakler, Mein Name ist Damilare Adekeye und ich vertrete die Firma PropertyVisualizer. Wir sind auf die Visualisierung von Immobilien spezialisiert und arbeiten mit verschiedenen Partnern zusammen, um hochwertige Immobilienangebote zu präsentieren. Wir sind an einer möglichen Zusammenarbeit mit Ihrer angesehenen Firma interessiert, um Ihre Immobilienangebote visuell zu präsentieren und potenzielle Kunden zu gewinnen. Durch unsere professionellen Visualisierungen können wir dazu beitragen, das Interesse an den Immobilien zu steigern und die Vermarktungsergebnisse zu optimieren. Gerne würden wir weitere Details über eine mögliche Kooperation besprechen und wie wir gemeinsam zum Erfolg Ihrer Immobilienanzeigen beitragen können. Wir freuen uns über die Gelegenheit, mit Ihnen zusammenzuarbeiten. Mit freundlichen Grüßen, Damilare Adekeye PropertyVisualizer [email protected] +2348163180829 |
Häuserverwaltung Gründer oHG | [email protected] |
Betreff: Potenzielle Zusammenarbeit für Immobilienlisten und Kundenempfehlungen Sehr geehrte Damen und Herren der Häuserverwaltung Gründer oHG, mein Name ist Damilare Adekeye und ich vertrete die Firma PropertyVisualizer, die sich auf Immobilienvisualisierung spezialisiert hat. Wir sind an einer möglichen Zusammenarbeit interessiert, um Ihre Immobilienlistungen zu präsentieren und potenzielle Kunden an Sie zu verweisen. Wir glauben, dass unsere innovativen Visualisierungsdienste dazu beitragen können, Ihre Immobilienangebote optimal zu präsentieren und die Kundenerfahrung zu verbessern. Gerne würden wir mit Ihnen über die Details einer möglichen Partnerschaft sprechen und wie wir gemeinsam Mehrwert für Ihre Kunden schaffen können. Wir sind offen für eine flexible Zusammenarbeit, die den Bedürfnissen Ihres Unternehmens entspricht. Wir würden uns freuen, von Ihnen zu hören und hoffen auf eine erfolgreiche Zusammenarbeit. Mit freundlichen Grüßen, Damilare Adekeye PropertyVisualizer [email protected] +2348163180829 |
Plura Haus und Immobilien GmbH | [email protected] |
Betreff: Potenzielle Zusammenarbeit für Immobilieninserate und Kundenerweisungen Sehr geehrte Damen und Herren von Plura Haus und Immobilien GmbH, Mein Name ist Damilare Adekeye und ich vertrete die Firma PropertyVisualizer, die sich auf Immobilienvisualisierungen spezialisiert hat. Ich möchte die Möglichkeit einer Zusammenarbeit mit Ihrer renommierten Firma in Betracht ziehen. Wir sind daran interessiert, Ihre Immobilieninserate zu unterstützen und potenzielle Kunden an Sie zu verweisen. Unsere hochwertigen Visualisierungen können dazu beitragen, die Attraktivität Ihrer Immobilienangebote zu steigern und potenzielle Käufer anzulocken. Wir sind überzeugt, dass eine Partnerschaft zwischen unseren Unternehmen sowohl für Sie als auch für uns von Vorteil sein könnte. Gerne würde ich mehr über Ihre Kooperationsmöglichkeiten erfahren und freue mich auf eine mögliche Zusammenarbeit. Mit freundlichen Grüßen, Damilare Adekeye PropertyVisualizer [email protected] +2348163180829 |
Cantor Immobilien Consult | [email protected] |
Betreff: Potenzielle Zusammenarbeit bezüglich Immobilienlisten und Kundenempfehlungen Sehr geehrte Damen und Herren von Cantor Immobilien Consult, Mein Name ist Damilare Adekeye und ich vertrete die Firma PropertyVisualizer, die sich auf Immobilienvisualisierungen spezialisiert. Ich bin auf der Suche nach potenziellen Kooperationsmöglichkeiten und glaube, dass eine Zusammenarbeit zwischen unseren Unternehmen von Vorteil sein könnte. Wir bei PropertyVisualizer haben ein starkes Netzwerk von Kunden, die auf der Suche nach Immobilien in Berlin sind. Wir würden es begrüßen, wenn wir mit Cantor Immobilien Consult zusammenarbeiten könnten, um unseren Kunden hochwertige Immobilienlisten und professionelle Beratung zu bieten. Ich würde mich freuen, mit Ihnen über eine mögliche Zusammenarbeit zu sprechen und weitere Details zu besprechen. Bitte lassen Sie mich wissen, ob Sie an einer Partnerschaft interessiert sind. Mit freundlichen Grüßen, Damilare Adekeye PropertyVisualizer [email protected] +2348163180829 |
Andreas Hauf, IVD | [email protected] |
Betreff: Potenzielle Zusammenarbeit für Immobilienvermarktung Sehr geehrter Herr Hauf, ich hoffe, diese E-Mail erreicht Sie wohlauf. Mein Name ist Damilare Adekeye und ich vertrete die Firma PropertyVisualizer, die sich auf die Visualisierung und Vermarktung von Immobilien spezialisiert hat. Wir sind an einer möglichen Zusammenarbeit mit Ihrem Immobilienunternehmen interessiert, insbesondere im Bereich der Immobilienlisten und Klientenvermittlung. Unsere innovative Herangehensweise an die Präsentation von Immobilien könnte eine wertvolle Ergänzung zu Ihrem Serviceangebot darstellen. Wir sind überzeugt, dass wir gemeinsam Mehrwert für unsere Kunden schaffen können und somit eine erfolgreiche Partnerschaft aufbauen. Gerne würden wir uns persönlich mit Ihnen austauschen, um weitere Einzelheiten zu besprechen und mögliche Synergien zu erkunden. Bitte lassen Sie mich wissen, ob Sie an einem Treffen interessiert sind. Wir freuen uns auf eine positive Rückmeldung und hoffen auf eine zukünftige Zusammenarbeit. Mit freundlichen Grüßen, Damilare Adekeye PropertyVisualizer [email protected] +2348163180829 |
Bona Fide Immobilien GmbH | [email protected] |
Betreff: Potenzielle Zusammenarbeit für Immobilienauflistungen und Kundenempfehlungen Sehr geehrte Damen und Herren von Bona Fide Immobilien GmbH, mein Name ist Damilare Adekeye und ich vertrete die Firma PropertyVisualizer, die sich auf Immobilienmarketing spezialisiert hat. Wir sind an einer möglichen Zusammenarbeit mit Ihrer renommierten Firma interessiert, um unsere Dienstleistungen anzubieten und Ihre Immobilienaufnahmen zu unterstützen. Wir verfügen über umfangreiche Erfahrung in der Präsentation von Immobilien durch hochwertige Fotos und virtuelle Touren, die potenziellen Käufern einen realistischen Eindruck vermitteln. Unsere Plattform kann dazu beitragen, Ihre Immobilienliste zu verbessern und neue Kunden anzuziehen. Wir würden uns freuen, mit Ihnen über eine mögliche Partnerschaft zu sprechen und weitere Details zu besprechen. Bitte lassen Sie uns wissen, ob Sie an einem Treffen interessiert sind. Vielen Dank für Ihre Aufmerksamkeit. Wir freuen uns auf eine mögliche Zusammenarbeit. Mit freundlichen Grüßen, Damilare Adekeye PropertyVisualizer [email protected] +2348163180829 |
Geiling Karen | [email protected] |
Betreff: Potenzielle Zusammenarbeit für Immobilienanzeigen und Kundenaufträge Sehr geehrte Geiling Karen, Mein Name ist Damilare Adekeye und ich vertrete das Unternehmen PropertyVisualizer, das sich auf Immobilienvisualisierung und Marketing spezialisiert hat. Wir sind auf der Suche nach potenziellen Partnern für eine Zusammenarbeit im Bereich der Immobilienanzeigen und Kundenvermittlung. Wir glauben, dass eine Kooperation zwischen PropertyVisualizer und Geiling Karen gegenseitige Vorteile bieten könnte, indem wir hochwertige Visualisierungen für Ihre Immobilienangebote bereitstellen und Ihnen qualifizierte Kundenempfehlungen zukommen lassen. Wir würden uns freuen, die Möglichkeit einer Zusammenarbeit mit Ihnen zu besprechen und nähere Einzelheiten zu erörtern. Bitte lassen Sie mich wissen, ob Sie Interesse an einer Partnerschaft haben und wie wir weiter vorgehen können. Vielen Dank im Voraus für Ihre Aufmerksamkeit. Ich freue mich auf eine mögliche Zusammenarbeit. Mit freundlichen Grüßen, Damilare Adekeye PropertyVisualizer [email protected] +2348163180829 |
H&Z Immobilien e.K. | [email protected] |
Betreff: Potenzielle Zusammenarbeit für Immobilieninserate und Kundenempfehlungen Sehr geehrte Damen und Herren von H&Z Immobilien e.K., Mein Name ist Damilare Adekeye und ich vertrete die Firma PropertyVisualizer. Wir sind auf die Erstellung hochwertiger Immobilienvisualisierungen spezialisiert und haben bereits erfolgreich mit verschiedenen Immobilienunternehmen zusammengearbeitet. Ich möchte die Möglichkeit einer Zusammenarbeit mit H&Z Immobilien e.K. vorschlagen, bei der wir Ihre Immobilieninserate durch professionelle Visualisierungen unterstützen können. Darüber hinaus sind wir auch an einer Partnerschaft interessiert, um potenzielle Kunden an Sie zu verweisen. Ich würde mich freuen, weitere Details zu besprechen und gemeinsame Möglichkeiten zu erkunden. Bitte lassen Sie mich wissen, ob ein persönliches Treffen oder ein Telefonat für Sie geeignet ist. Vielen Dank im Voraus für Ihre Aufmerksamkeit. Ich freue mich auf eine mögliche Zusammenarbeit. Mit freundlichen Grüßen, Damilare Adekeye PropertyVisualizer [email protected] +2348163180829 |
Schrottenbacher Dorit | [email protected] |
Subject: Potenzielle Zusammenarbeit für Immobilienauflistungen und Kundenempfehlungen Sehr geehrte Damen und Herren von Schrottenbacher Dorit, Mein Name ist Damilare Adekeye und ich vertrete die Firma PropertyVisualizer, die sich auf Immobilienvisualisierung und Marketing spezialisiert hat. Wir sind an einer potenziellen Zusammenarbeit mit Ihnen interessiert, um Ihre Immobilienauflistungen zu unterstützen und gegenseitige Kundenempfehlungen zu ermöglichen. Mit unserem Fachwissen im Bereich Immobilienmarketing und unserer breiten Kundenbasis könnten wir dazu beitragen, Ihre Immobilienangebote effektiv zu präsentieren und potenzielle Käufer zu erreichen. Ebenso würden wir gerne unsere Kunden, die nach Immobilien in Berlin suchen, an Ihr Unternehmen weiterleiten. Wir würden uns freuen, die Möglichkeit zu haben, mit Ihnen über eine partnerschaftliche Zusammenarbeit zu sprechen und weitere Details zu besprechen. Bitte lassen Sie mich wissen, ob Sie an einem Treffen interessiert sind. Vielen Dank im Voraus für Ihre Aufmerksamkeit. Wir freuen uns auf eine mögliche Zusammenarbeit. Mit freundlichen Grüßen, Damilare Adekeye PropertyVisualizer [email protected] +234816318 |
Treichel Olaf | [email protected] |
Betreff: Potenzielle Zusammenarbeit für Immobilienlisten und Kundenvermittlung Sehr geehrte Damen und Herren von Treichel Olaf, Mein Name ist Damilare Adekeye und ich vertrete die Firma PropertyVisualizer, die sich auf Immobilienvisualisierungen spezialisiert hat. Wir sind an einer möglichen Zusammenarbeit mit Ihrem Unternehmen interessiert, um unsere Dienstleistungen anzubieten und gemeinsam an der Vermarktung von Immobilien zu arbeiten. Wir glauben, dass eine Partnerschaft mit Treichel Olaf es uns ermöglichen würde, einen größeren Kundenstamm zu erreichen und Synergien in der Immobilienbranche zu schaffen. Wir würden uns freuen, weitere Details zu besprechen und zu sehen, wie wir gemeinsam erfolgreich sein können. Vielen Dank im Voraus für Ihre Aufmerksamkeit. Ich freue mich darauf, von Ihnen zu hören und möglicherweise eine erfolgreiche Zusammenarbeit zu beginnen. Mit freundlichen Grüßen, Damilare Adekeye PropertyVisualizer [email protected] +2348163180829 |
Walter Loll OHG | [email protected] |
Betreff: Potenzielle Zusammenarbeit für Immobilienauflistungen und Kundenempfehlungen Sehr geehrte Damen und Herren der Walter Loll OHG, mein Name ist Damilare Adekeye und ich vertrete die Firma PropertyVisualizer. Wir sind spezialisiert auf Immobilienvisualisierungen und möchten eine mögliche Zusammenarbeit mit Ihnen in Betracht ziehen. Unser Ziel ist es, Ihre Immobilienangebote durch hochwertige Visualisierungen zu präsentieren, um potenzielle Kunden anzusprechen und Ihr Unternehmen zu unterstützen. Wir glauben, dass eine Partnerschaft zwischen Walter Loll OHG und PropertyVisualizer sowohl für Sie als auch für uns von Vorteil sein könnte. Durch die Bereitstellung ansprechender visueller Darstellungen können wir dazu beitragen, Ihre Immobilienlistings zu verbessern und Ihren Kundenstamm zu erweitern. Wir würden uns freuen, die Möglichkeit einer Zusammenarbeit mit Ihnen zu besprechen und nähere Einzelheiten zu erörtern. Bitte lassen Sie uns wissen, ob Sie an einem persönlichen Treffen interessiert sind. Mit freundlichen Grüßen, Damilare Adekeye PropertyVisualizer [email protected] +2348163180829 |
Bona Fide Immobiliengesellschaft mbH Immobilienverwalter | [email protected] |
Betreff: Potenzielle Zusammenarbeit für Immobilienvermittlung und Kundenaufträge Sehr geehrte Damen und Herren von Bona Fide Immobiliengesellschaft mbH Immobilienverwalter, mein Name ist Damilare Adekeye und ich vertrete die Firma PropertyVisualizer, die auf Immobilienmarketing spezialisiert ist. Wir sind daran interessiert, eine mögliche Zusammenarbeit mit Ihnen in Betracht zu ziehen, um unsere Dienstleistungen anzubieten und potenzielle Kunden an Sie zu verweisen. Als Experten auf dem Berliner Immobilienmarkt verfügen wir über ein breites Netzwerk von Kunden, die auf der Suche nach hochwertigen Immobilien sind. Wir glauben, dass eine Partnerschaft mit Ihrer angesehenen Firma es uns ermöglichen würde, unseren Kunden einen noch umfassenderen Service anzubieten. Wir würden uns freuen, die Möglichkeit einer Zusammenarbeit mit Ihnen zu besprechen und weitere Details zu erörtern. Bitte lassen Sie uns wissen, ob Sie an einer Partnerschaft interessiert sind. Vielen Dank für Ihre Aufmerksamkeit und wir freuen uns auf eine mögliche Zusammenarbeit. Mit freundlichen Grüßen, Damilare Adekeye PropertyVisualizer [email protected] +2348163180829 |
Brunst Manuela | [email protected] |
Betreff: Mögliche Zusammenarbeit für Immobilienanzeigen und Kundenempfehlungen Sehr geehrte Frau Manuela Brunst, Ich hoffe, diese E-Mail erreicht Sie in bester Verfassung. Mein Name ist Damilare Adekeye und ich vertrete die Firma PropertyVisualizer, die sich auf Immobilienmarketing spezialisiert hat. Wir sind an einer potenziellen Zusammenarbeit mit Ihrem renommierten Unternehmen interessiert, um Immobilienanzeigen zu präsentieren und potenzielle Kunden zu vermitteln. Unser Ziel ist es, unseren Kunden hochwertige Immobilien in Berlin anzubieten, und wir glauben, dass eine Partnerschaft mit Ihrem Unternehmen dazu beitragen könnte, diesen Anspruch zu erfüllen. Wir sind überzeugt, dass eine Kooperation beider Unternehmen zu beiderseitigem Nutzen sein könnte. Wir würden uns freuen, die Möglichkeit zu haben, unsere Vision und Ideen mit Ihnen persönlich zu besprechen. Bitte lassen Sie uns wissen, ob Sie an einer Zusammenarbeit interessiert sind. Vielen Dank für Ihre Aufmerksamkeit. Wir freuen uns auf eine mögliche zukünftige Zusammenarbeit. Mit freundlichen Grüßen, Damilare Adekeye PropertyVisualizer [email protected] +2348163180829 |
Geiling Immobilien-Management e.K. Immobilienmaklerbüro | [email protected] |
Subject: Potenzielle Zusammenarbeit für Immobilienanzeigen und Kundenvermittlung Sehr geehrte Damen und Herren des Geiling Immobilien-Management e.K. Immobilienmaklerbüro Teams, mein Name ist Damilare Adekeye und ich vertrete die Firma PropertyVisualizer. Wir sind ein Unternehmen, das sich auf die Visualisierung von Immobilien spezialisiert hat. Durch unsere innovativen Lösungen helfen wir Immobilienunternehmen, potenzielle Kunden anzusprechen und ihre Angebote effektiver zu präsentieren. Wir sind an einer möglichen Zusammenarbeit mit Ihrem Unternehmen interessiert, um Ihre Immobilienanzeigen zu optimieren und Ihnen qualifizierte Kunden zu vermitteln. Wir glauben, dass unsere Dienstleistungen dazu beitragen können, Ihre Vermarktungsstrategie zu verbessern und Ihren Umsatz zu steigern. Gerne würden wir uns mit Ihnen austauschen und die Möglichkeiten einer Zusammenarbeit weiter erörtern. Wir freuen uns auf eine positive Rückmeldung und stehen für weitere Fragen gerne zur Verfügung. Mit freundlichen Grüßen, Damilare Adekeye PropertyVisualizer [email protected] +2348163180829 |
import pandas as pd
import smtplib
from email.mime.text import MIMEText
import os
# Gmail SMTP configuration
SMTP_SERVER = "smtp.gmail.com"
SMTP_PORT = 587
SENDER_EMAIL = "[email protected]" # Replace with your Gmail address
SENDER_PASSWORD = "r**j **** v**u ****" # Replace with your Gmail App Password
# Path to your CSV file
csv_path = "C:/Users/Aorus15/Desktop/PropertyVisualizer/generated_emails.csv"
# Read the CSV file
try:
df = pd.read_csv(csv_path)
print(f"Loaded {len(df)} emails from {csv_path}")
except Exception as e:
print(f"Error reading CSV file: {str(e)}")
exit()
# Verify the required columns
required_columns = ["Company Name", "Email Address", "Generated Email"]
if not all(col in df.columns for col in required_columns):
print(f"CSV file must contain the following columns: {required_columns}")
exit()
# Function to send an email
def send_email(to_email, subject, body, from_email, password):
try:
# Create a MIMEText object
msg = MIMEText(body)
msg['Subject'] = subject
msg['From'] = from_email
msg['To'] = to_email
# Connect to Gmail SMTP server
with smtplib.SMTP(SMTP_SERVER, SMTP_PORT) as server:
server.starttls() # Enable TLS
server.login(from_email, password) # Login with your credentials
server.sendmail(from_email, to_email, msg.as_string())
print(f"Email sent successfully to {to_email}")
except Exception as e:
print(f"Failed to send email to {to_email}: {str(e)}")
# Select the first row for testing (no actual leads)
if not df.empty:
test_row = df.iloc[0] # Use the first row for testing
test_company = test_row["Company Name"]
test_email_content = test_row["Generated Email"]
test_subject = f"Test Collaboration Proposal for {test_company}"
# Send test email to [email protected], [email protected]
send_email(
# to_email="[email protected]", # I tested with my email first and i was sure that it arrived in my inbox, so i sent a test email to [email protected]
to_email="[email protected]",
subject=test_subject,
body=test_email_content,
from_email=SENDER_EMAIL,
password=SENDER_PASSWORD
)
else:
print("No data found in the CSV file to test.")
# Commented-out block to send emails to all leads (DO NOT UNCOMMENT TO RUN)
'''
# Send emails to all leads (commented out to avoid sending to actual leads)
for index, row in df.iterrows():
company_name = row["Company Name"]
email_address = row["Email Address"]
email_content = row["Generated Email"]
subject = f"Collaboration Proposal for {company_name}"
print(f"Preparing to send email to {company_name} ({email_address})")
send_email(
to_email=email_address,
subject=subject,
body=email_content,
from_email=SENDER_EMAIL,
password=SENDER_PASSWORD
)
# Add a delay to avoid rate limiting (e.g., 2 seconds)
time.sleep(2)
print("Email sending process completed for all leads.")
'''
# Keep the script running for review
input("Press Enter to exit...")
This project automates the process of scraping real estate company data from Gelbe Seiten (Yellow Pages) in Berlin, generating personalized emails using OpenAI, and setting up an automated email-sending sequence. It is designed to streamline outreach to Immobilienmakler (real estate agents) for potential collaborations.
scrape_leads.py
: Script to scrape company names and email addresses
from https://www.gelbeseiten.de/branchen/immobilienmakler/berlin
and
save to leads.csv
.generate_emails.py
: Script to read leads.csv
, use OpenAI
to
generate personalized emails, and save to generated_emails.csv
.send_emails.py
: Script to send a test email via Gmail SMTP and includes
a
commented-out section for sending to all leads.leads.csv
: Contains scraped data with columns Company Name
and
Email
.
generated_emails.csv
: Contains generated emails with columns
Company Name
, Email Address
, and
Generated Email
.
README.md
: This documentation file.pip install playwright
and
set up
browsers with playwright install
.pip install openai
.
C:/Users/Aorus15/Desktop/PropertyVisualizer/
.
pip install pandas playwright openai
playwright install
scrape_leads.py
, generate_emails.py
,
send_emails.py
) in the directory.
'your-api-key-here'
in
generate_emails.py
with your API key, or set it as an environment
variable
(OPENAI_API_KEY
).
send_emails.py
, update
SENDER_EMAIL
with your Gmail address and SENDER_PASSWORD
with
your App Password. Enable "Less secure app access" or use an App Password with 2FA.
& "C:/Program Files/Python313/python.exe" c:/Users/Aorus15/Desktop/PropertyVisualizer/scrape_leads.py
leads.csv
with company names and emails.& "C:/Program Files/Python313/python.exe" c:/Users/Aorus15/Desktop/PropertyVisualizer/generate_emails.py
generated_emails.csv
with personalized emails.& "C:/Program Files/Python313/python.exe" c:/Users/Aorus15/Desktop/PropertyVisualizer/send_emails.py
[email protected]
(no actual
leads.
However, the code block to send to actual leads can be uncommented to send
to
them).The project uses OpenAI’s API (e.g., gpt-3.5-turbo
) to generate personalized
emails tailored to each company. The process involves:
This personalization ensures the email feels targeted, increasing engagement compared to generic templates.
Personalized emails have been shown to improve conversion rates by 10-15% over generic emails, according to marketing studies (e.g., Campaign Monitor, 2023). This project’s approach leverages:
For a campaign targeting 100 companies, this could translate to 10-15 additional positive responses compared to a generic email blast, assuming a baseline response rate of 5-10%.
gpt-3.5-turbo
at $0.0005 per 1,000 tokens
(input + output, OpenAI pricing as of May 2025).gpt-4
(if available) at $0.03/1,000 tokens would
increase costs to ~$0.90/day (~$27/month).gpt-3.5-turbo
and Gmail for cost efficiency.schedule
library) for automated
daily
runs.This project is majorly for PropertyVisualizer's task, and for personal knowledge gain. You may modify as needed, but solely respect OpenAI, Gmail, and PropertyVisualizer terms of service.
Thank you for exploring my PropertyVisualizer project, a testament to my passion for AI automation, data engineering, and innovative software solutions. This project reflects my technical prowess, adaptability, and commitment to delivering value through code. I invite you to connect with me to discuss potential collaborations or further insights into my work.
For inquiries or opportunities, please reach out via the Contact section. Your feedback inspires me to refine my skills and contribute meaningfully to your projects.
Best regards,
Damilare Lekan Adekeye