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']}")