stadtwerke/leads/compare_pdf_csv.py

160 lines
16 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import csv
# All entries from PDF (name → {contact, email, phone, type})
pdf_entries = {
# Bäcker
"Bäckerinnung Bayerischer Untermain": {"contact": "Veronika Hench", "email": "v.hench@baeckerinnung-bayerischer-untermain.de", "phone": "06021 790777"},
"Bäckerinnung Bad Kissingen - Rhön-Grabfeld": {"contact": "Petra Schwab (Ansp.) / Ullrich Amthor (Obermeister)", "email": "khw-kg@t-online.de", "phone": "0971 78536971"},
"Bäckerinnung Kitzingen": {"contact": "Elisabeth Hofmann (Ansp.) / Tilo Brönner (Obermeister)", "email": "", "phone": "09332 590636"},
"Bäckerinnung Schweinfurt - Haßberge": {"contact": "Brigitte Rapp (Ansp.) / Gerhard Götz (Obermeister)", "email": "rapp@kreishandwerkerschaft-sw.de", "phone": "09721 473578"},
"Bäckerinnung Mainfranken": {"contact": "Christine Winterbauer (Ansp.) / Marcel Scherg (Obermeister)", "email": "christine.winterbauer@baeckerbuchstelle.de", "phone": "09302 909431"},
# Bau
"Bauinnung Aschaffenburg": {"contact": "Nina Emeneth (Ansp.) / Felix Englert (Obermeister)", "email": "info@bauinnung-aschaffenburg.de", "phone": "06021 421086"},
"Bauinnung Bad Kissingen / Rhön-Grabfeld": {"contact": "Petra Schwab (Ansp.) / Stefan Goos (Obermeister)", "email": "khw-kg@t-online.de", "phone": "0971 78536971"},
"Bau-Innung Schweinfurt": {"contact": "Ramona Ziegler (Ansp.) / Karl Böhner (Obermeister)", "email": "info@bauinnung-schweinfurt.de", "phone": "09721 74220"},
"Bauinnung Mainfranken - Würzburg": {"contact": "Manfred Dallner (Ansp.) / Ralf Stegmeier (Obermeister)", "email": "baugewerbe@lbb-unterfranken.de", "phone": "0931 454440"},
# Bekleidung
"Innung des Bekleidungshandwerks Unterfranken": {"contact": "Nicole Brandler (Ansp.) / Friedrun Schlagbauer-Werner (Obermeisterin)", "email": "info@innung-unterfranken.de", "phone": "09732 2277"},
# Brauer
"Brauer- und Mälzerinnung Unterfranken": {"contact": "Josef Göller (Obermeister)", "email": "info@private-brauereien-bayern.de", "phone": "089 2909560"},
# Dachdecker
"Dachdeckerinnung Aschaffenburg - Miltenberg": {"contact": "Lukas Thalheimer (Obermeister)", "email": "lukas.thalheimer@thalheimer.de", "phone": "0160 8480279"},
"Dachdeckerinnung Unterfranken": {"contact": "Timo Markert (Obermeister)", "email": "info@mein-dachdecker.com", "phone": "09321 3905830"},
# Elektro
"Innung für Elektro- und Informationstechnik Bayerischer Untermain": {"contact": "Annett Kinzel (Ansp.) / Edwin Palzer (Obermeister)", "email": "info@elektroinnung-bayerischeruntermain.de", "phone": "06021 480331"},
"Innung für Elektro- und Informationstechnik Haßberge": {"contact": "Gitta Klopf (Ansp.) / Ralf Jooß (Obermeister)", "email": "info@elektroinnung-hassberge.de", "phone": "09526 8250"},
"Innung für Elektro- und Informationstechnik Schweinfurt": {"contact": "Gaby Fröschel / Roland Klöffel / Ronald Niessner / Rainer Walter-Helk (Obermeister)", "email": "info@elektroinnung-sw.de", "phone": "09721 41175"},
"Innung für Elektro- und Informationstechnik Würzburg": {"contact": "Heike Langner (Ansp.) / Sebastian Seynstahl (Obermeister)", "email": "mailbox@elektro-innung-wuerzburg.de", "phone": "0931 4501790"},
# Fotografen
"Berufsfotografen-Innung für Unterfranken": {"contact": "Michael Alfen (Obermeister)", "email": "info@foto-alfen.de", "phone": "06021 23807"},
# Friseure
"Friseur-Innung Aschaffenburg Stadt und Land": {"contact": "Corina Bayer (Obermeisterin)", "email": "friseurinnung-aschaffenburg@t-online.de", "phone": "06021 12646"},
"Friseur-Innung Haßberge": {"contact": "Heinz Göhr (Ansp.) / Oliver Merkl (Obermeister)", "email": "info@team-art-of-hair.com", "phone": "09522 7948"},
"Friseurinnung Kitzingen": {"contact": "Sabine Hack (Obermeisterin)", "email": "sabine.hack71@web.de", "phone": "09321 389988"},
"Friseurinnung Miltenberg": {"contact": "Monique Haas (Obermeisterin)", "email": "info@haarmonique.de", "phone": "0160 1405397"},
"Friseurinnung Main-Rhön": {"contact": "Brigitte Rapp (Ansp.) / Margit Rosentritt (Obermeisterin)", "email": "rapp@kreishandwerkerschaft-sw.de", "phone": "09721 473578"},
"Friseur-Innung Würzburg, Main-Spessart und Bad Kissingen": {"contact": "Katharina Walker (Obermeisterin)", "email": "katharinawalker88@gmx.de", "phone": "0931 4605400"},
# Glaser
"Glaserinnung Unterfranken": {"contact": "Siegfried Frank (Obermeister)", "email": "info@frank-bauglaserei.de", "phone": "09321 31890"},
# Kaminkehrer
"Kaminkehrer-Innung Unterfranken": {"contact": "Benjamin Schreck (Obermeister)", "email": "info@kaminkehrerinnung-unterfranken.de", "phone": "09302 2187"},
# Karosserie
"Karosserie- und Fahrzeugtechnik Innung Unterfranken": {"contact": "Manuela Wohlert (Ansp.) / Michael Seidel (Obermeister)", "email": "info@seidel-karosserie.de", "phone": "0911 2358880"},
# Kfz
"Kfz-Innung Unterfranken": {"contact": "Michael Frank (Ansp.) / Roland Hoier (Obermeister)", "email": "info@kfz-innung-ufr.de", "phone": "0931 279910"},
# Landmaschinen
"Innung für Land- und Baumaschinentechnik Unterfranken": {"contact": "Brigitte Rapp (Ansp.) / Bertram Muth (Obermeister)", "email": "rapp@kreishandwerkerschaft-sw.de", "phone": "09721 473578"},
# Maler
"Maler-, Tüncher- und Lackierer Innung Alzenau": {"contact": "Karlheinz Trageser (Obermeister)", "email": "maler_trageser@gmx.de", "phone": "06023 8736"},
"Maler- und Lackierer-Innung Aschaffenburg Stadt und Land": {"contact": "Uta Kern (Ansp.) / Ansgar Kern (Obermeister)", "email": "uta.kern@kolb-kern.de", "phone": "06021 859120"},
"Maler- und Lackiererinnung Bad Kissingen": {"contact": "Petra Schwab (Ansp.) / Mathias Stöth (Obermeister)", "email": "khw-kg@t-online.de", "phone": "0971 78536971"},
"Maler- und Tüncherinnung Haßberge": {"contact": "Michael Ott (Obermeister)", "email": "obermeister@malerinnung-hassberge.de", "phone": "09534 173330"},
"Maler- und Lackiererinnung Kitzingen": {"contact": "Sandra und Andreas Zobel (Ansp.) / Thomas Wandler (Obermeister)", "email": "info@malerinnung-kitzingen.de", "phone": "09381 9141"},
"Maler- und Lackiererinnung Miltenberg": {"contact": "Melitta Becker (Ansp.) / Jan Becker (Obermeister)", "email": "info@farbe-miltenberg.de", "phone": "09371 1090"},
"Maler-, Tüncher- und Lackierer-Innung Rhön-Grabfeld": {"contact": "Birgit Neuhöfer (Ansp.) / Stefan Neuhöfer (Obermeister)", "email": "info@malerinnung-rg.de", "phone": "09766 1555"},
"Malerinnung Schweinfurt Stadt- und Land": {"contact": "Brigitte Rapp (Ansp.) / Andreas Spath (Obermeister)", "email": "rapp@kreishandwerkerschaft-sw.de", "phone": "09721 473578"},
"Maler- und Stuckateur-Innung Würzburg und Main-Spessart": {"contact": "Claudius Wolfrum (Ansp.) / Peter Killinger (Obermeister)", "email": "info@malerinnung-wuerzburg.de", "phone": "0931 54306"},
# Metall
"Innung Metallbau- und Feinwerktechnik Bayerischer Untermain": {"contact": "Claudia Find / Stefanie Belle (Ansp.) / Matthias Kreß (Obermeister)", "email": "info@innung-metallbau-feinwerktechnik.de", "phone": "06021 401286"},
"Metall-Innung Bad Kissingen/Rhön-Grabfeld": {"contact": "Petra Schwab (Ansp.) / Klaus Engelmann (Obermeister)", "email": "khw-kg@t-online.de", "phone": "0971 78536971"},
"Metallinnung Schweinfurt - Haßberge": {"contact": "Brigitte Rapp (Ansp.) / René Dauelsberg (Obermeister)", "email": "rapp@kreishandwerkerschaft-sw.de", "phone": "09721 473578"},
"Metallinnung Mainfranken - Mitte": {"contact": "Birgit Beckmann (Ansp.) / Detlef Lurz (Obermeister)", "email": "info@metallinnung-mainfranken.de", "phone": "0931 412614"},
# Metzger
"Metzgerinnung Aschaffenburg": {"contact": "Dagobert Pfarr (Ansp.) / Marco Häuser (Obermeister)", "email": "metzgerei-pfarr@t-online.de", "phone": "06027 8468"},
"Fleischer-Innung Main-Spessart": {"contact": "Sebastian Bumm (Ansp./komm. Stellv. Obermeister)", "email": "fleischerinnungMSP@gmx.de", "phone": ""},
"Metzgerinnung Miltenberg": {"contact": "Josef Neuberger (Obermeister)", "email": "j.neuberger@t-online.de", "phone": "09371 2671"},
"Metzgerinnung Main-Rhön": {"contact": "Jürgen Straub / Sonja Grob (Ansp.) / Barbara Fink (Obermeisterin)", "email": "innung@fleischerring.de", "phone": "09721 65050"},
"Metzger-Innung Würzburg": {"contact": "Horst Schömig (Obermeister)", "email": "horst@schoemig.eu", "phone": "0931 73926"},
# Ofen
"Unterfränkische Ofen- und Luftheizungsbauer-Innung": {"contact": "Josef Bock (Ansp.) / Michael Heigel (Obermeister)", "email": "josef.bock60@gmail.com", "phone": "0175 8855931"},
# Raumausstatter
"Raumausstatter- und Sattlerinnung Unterfranken": {"contact": "Brigitte Rapp (Ansp.) / Hermann Noske (Obermeister)", "email": "rapp@kreishandwerkerschaft-sw.de", "phone": "09721 473578"},
# SHK
"Spengler-, Sanitär- und Heizungstechnik Innung Aschaffenburg - Miltenberg": {"contact": "Michael Bramm (Ansp.) / Christoph Winkler (Obermeister)", "email": "shk-aschaffenburg@t-online.de", "phone": "06021 28731"},
"Innung für Spengler-, Sanitär-, und Heizungstechnik Kitzingen": {"contact": "Christine Keppner-Siegert (Ansp.) / Thomas Lößlein (Obermeister)", "email": "innung-kitzingen@freenet.de", "phone": "09324 978667"},
"SHK-Innung Main-Spessart Innung Sanitär-, Heizungs- und Klimatechnik": {"contact": "Johannes Reber (Obermeister)", "email": "info@shk-main-spessart.de", "phone": "09355 97400"},
"Innung für Spengler-, Sanitär-, Heizungs- und Klimatechnik Schweinfurt - Main-Rhön": {"contact": "Stefan Köppe (Ansp.) / Heinz Schuchbauer (Obermeister)", "email": "info@shk-schweinfurt.de", "phone": "09721 471526"},
"Innung für Sanitär-, Heizungs-, Klempner- und Klimatechnik Würzburg": {"contact": "Sandra Köller (Ansp.) / Werner Rath (Obermeister)", "email": "innung.shk@t-online.de", "phone": "0931 7841878"},
# Schreiner
"Schreinerinnung Aschaffenburg Stadt und Land": {"contact": "Michael Deller (Obermeister)", "email": "info@dellers-werkstatt.de", "phone": "06021 460428"},
"Schreinerinnung Bad Kissingen": {"contact": "Petra Schwab (Ansp.) / Norbert Borst (Obermeister)", "email": "khw-kg@t-online.de", "phone": "0971 78536971"},
"Schreinerinnung Miltenberg-Obernburg": {"contact": "Werner Tausch (Obermeister)", "email": "wt@reichert-betten.de", "phone": "09371 97770"},
"Schreinerinnung Rhön-Grabfeld": {"contact": "Michael Werner (Obermeister)", "email": "info@schreiner-rhoen-grabfeld.de", "phone": "09772 9300990"},
"Schreinerinnung Haßberge Schweinfurt": {"contact": "Brigitte Rapp (Ansp.) / Horst Zitterbart (Obermeister)", "email": "rapp@kreishandwerkerschaft-sw.de", "phone": "09721 473578"},
"Schreinerinnung Mainfranken": {"contact": "Ramona Pfenning (Ansp.) / Thomas Heußlein (Obermeister)", "email": "info@schreinerinnung-mainfranken.de", "phone": "09394 9957944"},
# Schuhmacher
"Schuhmacherinnung Unterfranken": {"contact": "Leo Emge (Obermeister)", "email": "l.emge@t-online.de", "phone": "06021 423235"},
# Steinmetz
"Steinmetz- und Steinbildhauerinnung Unterfranken": {"contact": "Brigitte Rapp (Ansp.) / Sebastian Ludwig (Obermeister)", "email": "rapp@kreishandwerkerschaft-sw.de", "phone": "09721 473578"},
# Uhrmacher
"Uhrmacher-, Gold- und Silberschmiedeinnung Unterfranken": {"contact": "Markus Graf (Ansp.) / Klaus Imhof (Obermeister)", "email": "m.graf@hwk-ufr.de", "phone": "0931 309081132"},
# Zimmerer
"Zimmerer-Innung Aschaffenburg - Miltenberg": {"contact": "Theresa Breunig (Ansp.) / Jürgen Pfarr (Obermeister)", "email": "info@zimmerer-aschaffenburg-miltenberg.de", "phone": "06094 1361"},
"Zimmerer-Innung Bad Neustadt": {"contact": "Michael Eyrich-Halbig (Obermeister)", "email": "info@holzbau-eyrich.de", "phone": "09736 223"},
"Zimmerer-Innung Main-Spessart": {"contact": "Ulrike Feser (Ansp.) / Volker Schäfer (Obermeister)", "email": "info@zimmerer-main-spessart.de", "phone": "09355 97400"},
"Zimmerer-Innung Schweinfurt-Haßberge": {"contact": "Brigitte Rapp (Ansp.) / Marion Reichhold (Obermeisterin)", "email": "rapp@kreishandwerkerschaft-sw.de", "phone": "09721 473578"},
"Zimmerer-Innung Würzburg - Kitzingen": {"contact": "Ulrike Feser (Ansp.) / Hermann Lang (Obermeister)", "email": "info@zimmerer-wuerzburg-kitzingen.de", "phone": "0931 72760"},
# Kreishandwerkerschaften
"Kreishandwerkerschaft Aschaffenburg": {"contact": "Claudia Find (Ansp.) / Matthias Kreß (KH-Meister)", "email": "info@khw-ab.de", "phone": "06021 401286"},
"Kreishandwerkerschaft Bad Kissingen": {"contact": "Petra Schwab (Ansp.) / Ulrike Lochner-Erhard (KH-Meisterin)", "email": "khw-kg@t-online.de", "phone": "0971 78536971"},
"Kreishandwerkerschaft Haßberge": {"contact": "Gitta Klopf (Ansp.) / Udo Merz (KH-Meister)", "email": "info@elektroinnung-hassberge.de", "phone": "09524 7492"},
"Kreishandwerkerschaft Kitzingen": {"contact": "Elisabeth Hofmann (Ansp.) / Monika Henneberger (KH-Meisterin)", "email": "khw.kitzingen@gmail.com", "phone": "09332 590636"},
"Kreishandwerkerschaft Main-Spessart": {"contact": "Petra Stegerwald (Ansp.) / Thomas Heußlein (KH-Meister)", "email": "petra@stegerwald.de", "phone": "09352 6056495"},
"Kreishandwerkerschaft Miltenberg": {"contact": "Monique Haas (KH-Meisterin)", "email": "kreishandwerker.mil@gmail.com", "phone": "09371 6693681"},
"Kreishandwerkerschaft Rhön-Grabfeld": {"contact": "Bruno Werner (KH-Meister)", "email": "khwsch-rhoen-grabfeld@mail.de", "phone": "09772 9300990"},
"Kreishandwerkerschaft Schweinfurt": {"contact": "Brigitte Rapp (Ansp.) / Margit Rosentritt (KH-Meisterin)", "email": "rapp@Kreishandwerkerschaft-sw.de", "phone": "09721 473578"},
"Kreishandwerkerschaft Würzburg": {"contact": "Sandra Köller (Ansp.) / Martin Strobl (KH-Meister)", "email": "info@kreishandwerkerschaft-wuerzburg.de", "phone": "0931 7841879"},
}
# Read current leads.csv - only Unterfranken entries
csv_entries = {}
with open(r'C:\Users\a931627\Documents\stadtwerke-saas-analysis\leads\leads.csv', encoding='utf-8') as f:
reader = csv.DictReader(f)
for row in reader:
if row.get('Region','') == 'Unterfranken':
csv_entries[row['Firm/Innung'].strip()] = {
'contact': row.get('Contact Person',''),
'email': row.get('Email',''),
'phone': row.get('Phone',''),
}
# Compare
print("=== IN PDF BUT NOT IN CSV (missing leads) ===")
missing = []
for name in pdf_entries:
if name not in csv_entries:
# fuzzy check
found = False
for csv_name in csv_entries:
# normalize
if name.lower().replace('','-').replace(' ',' ') in csv_name.lower() or csv_name.lower() in name.lower():
found = True
break
if not found:
missing.append(name)
print(f" MISSING: {name}")
print(f"\nTotal missing: {len(missing)}")
print("\n=== EMAIL DISCREPANCIES (PDF vs CSV) ===")
for pdf_name, pdf_data in pdf_entries.items():
for csv_name, csv_data in csv_entries.items():
# Match by similar name
if (pdf_name.lower()[:20] in csv_name.lower()[:25] or csv_name.lower()[:20] in pdf_name.lower()[:25]):
pdf_email = pdf_data.get('email','').lower().strip()
csv_email = csv_data.get('email','').lower().strip()
if pdf_email and csv_email and pdf_email != csv_email:
print(f" {pdf_name}")
print(f" PDF: {pdf_email}")
print(f" CSV: {csv_email}")
print("\n=== IN CSV BUT DATA NOT MATCHING PDF (spot check) ===")
# Check Steinmetz specifically
for csv_name, csv_data in csv_entries.items():
if 'steinmetz' in csv_name.lower() or 'steinbild' in csv_name.lower():
print(f"CSV: {csv_name} | email: {csv_data['email']} | contact: {csv_data['contact']}")
if 'bäckerinnung kitzingen' in csv_name.lower():
print(f"CSV: {csv_name} | email: {csv_data['email']}")
if 'land- und bau' in csv_name.lower():
print(f"CSV: {csv_name} | email: {csv_data['email']}")