diff --git a/energie360/KI-Lead Management System - Energie360 - Offerte 20250820.pdf b/energie360/KI-Lead Management System - Energie360 - Offerte 20250820.pdf
deleted file mode 100644
index 3fadffc..0000000
Binary files a/energie360/KI-Lead Management System - Energie360 - Offerte 20250820.pdf and /dev/null differ
diff --git a/general/index.txt b/general/index.txt
deleted file mode 100644
index e69de29..0000000
diff --git a/spitch/Spitch.ch Integration Technical Specification - PowerOn Platform 20250812.pdf b/mandates/spitch/Spitch.ch Integration Technical Specification - PowerOn Platform 20250812.pdf
similarity index 100%
rename from spitch/Spitch.ch Integration Technical Specification - PowerOn Platform 20250812.pdf
rename to mandates/spitch/Spitch.ch Integration Technical Specification - PowerOn Platform 20250812.pdf
diff --git a/spitch/Spitch.ch Integration Technical Specification - PowerOn Platform 20250813.pdf b/mandates/spitch/Spitch.ch Integration Technical Specification - PowerOn Platform 20250813.pdf
similarity index 100%
rename from spitch/Spitch.ch Integration Technical Specification - PowerOn Platform 20250813.pdf
rename to mandates/spitch/Spitch.ch Integration Technical Specification - PowerOn Platform 20250813.pdf
diff --git a/spitch/spitch_integration_specification.html b/mandates/spitch/spitch_integration_specification.html
similarity index 100%
rename from spitch/spitch_integration_specification.html
rename to mandates/spitch/spitch_integration_specification.html
diff --git a/mandates/vattenfall/110 Base Documents/DBT Questionaire V0.2.xlsx b/mandates/vattenfall/110 Base Documents/DBT Questionaire V0.2.xlsx
new file mode 100644
index 0000000..5b8f17a
Binary files /dev/null and b/mandates/vattenfall/110 Base Documents/DBT Questionaire V0.2.xlsx differ
diff --git a/mandates/vattenfall/110 Base Documents/Intro pamo.txt b/mandates/vattenfall/110 Base Documents/Intro pamo.txt
new file mode 100644
index 0000000..6890e37
--- /dev/null
+++ b/mandates/vattenfall/110 Base Documents/Intro pamo.txt
@@ -0,0 +1,7 @@
+born in geneva, f part
+live in switzerland north near zurich with family 3 kids, wonderful wife
+
+digital business since 26 years
+started in infrastructure as civil engineer
+then it & communication to support digital transformations, design and build datacenters
+finally supporting ai integrations with people and teams in the focus
diff --git a/mandates/vattenfall/110 Base Documents/Notes Setup.docx b/mandates/vattenfall/110 Base Documents/Notes Setup.docx
new file mode 100644
index 0000000..4c8a22b
Binary files /dev/null and b/mandates/vattenfall/110 Base Documents/Notes Setup.docx differ
diff --git a/mandates/vattenfall/111 Interview Tobias - Procurement/00 Interview Guide - Tobias Winblad von Walter.pptx b/mandates/vattenfall/111 Interview Tobias - Procurement/00 Interview Guide - Tobias Winblad von Walter.pptx
new file mode 100644
index 0000000..d9df8e6
Binary files /dev/null and b/mandates/vattenfall/111 Interview Tobias - Procurement/00 Interview Guide - Tobias Winblad von Walter.pptx differ
diff --git a/mandates/vattenfall/111 Interview Tobias - Procurement/02 questions.txt b/mandates/vattenfall/111 Interview Tobias - Procurement/02 questions.txt
new file mode 100644
index 0000000..765a2bd
--- /dev/null
+++ b/mandates/vattenfall/111 Interview Tobias - Procurement/02 questions.txt
@@ -0,0 +1,11 @@
+Procurement
+
+From your procurement expertise, how can strategic sourcing and supplier partnerships accelerate our business transformation?
+
+What's your view on how procurement can enable innovation through digital supplier ecosystems and partnerships that benefit our core business?
+
+How can procurement's data and spend analytics provide insights that drive better business decisions across the organization?
+
+Based on your experience, how should we engage procurement teams to ensure they're aligned with and supporting our business transformation goals?
+
+What procurement-driven value creation opportunities do you see that could strengthen our overall business strategy and benefit our internal customers?
diff --git a/mandates/vattenfall/111 Interview Tobias - Procurement/03 notes.txt b/mandates/vattenfall/111 Interview Tobias - Procurement/03 notes.txt
new file mode 100644
index 0000000..86fb3dd
--- /dev/null
+++ b/mandates/vattenfall/111 Interview Tobias - Procurement/03 notes.txt
@@ -0,0 +1,85 @@
+STAKEHOLDER INTERVIEW TOBIAS
+
+Date: 29 August 2025
+Attendees: Tobias, Pieter, Patrick, Jeroen
+
+Agenda (60”):
+Framing & introductions (10” max.)
+Interview
+Next staps & wrap-up (5”)
+
+Notes:
+Pieter’s introduction: charismatic, empathic, clear, concise, …
+Could be clearer on exact deliverables of the initiative
+Lighting is not optimal in Pieter’s room
+
+Q2: E-mobility questions for managers from outside the BU E-mobility
+How well do you know E-mobility? Do you know the BU’s primary strategic targets?
+BOrn inSweden
+Mgmt consultant
+MSc Civil Engineering, nuclear domain & reactor, then treasury dept.
+Thomas based in Stockholm, his major team in Berlin
+Supporting 6 categories: solar, m&c, Finance, E-mobility, hydrogen
+17 FTE, 6 team leads and strateg. Buyers, junior buyers too to share load incl diversity
+I like procurement, because
+People , great team to lead
+In the center of transformation of industry (electrification)
+To contribute to better world
+
+
+What is the nature of your relationship with E-mobility?
+Before was category manager of BU E-Mob
+
+
+If at all, where and how can the collaboration between your team and E-mobility be elevated to a next level in service of Vattenfall?
+Closely integrated already, sometimes surprised about decision and direction to jeopardize current state, to identify short-termed changes
+Unclear changes on situations, short-term → difficult to adapt so fast to adapt better
+Example:_ batteries to integrate into chargers → grid connections and revenue as criteria; so different solutions which lead to pressure and short termed adaptions
+When handed over category manager role, one job was to NOT ACT until date fixed, so to prevent unused work → then acted on all initiatives, which overloads the team → creates informal leaders (Bastiaan de Jong vs. Stefano/Sven) → difficult situation then how to lead and give oversight → so to prepare answers wisely and having the pig picture, rather than just giving an answer
+Collaborative mood? - great collaboration in super atmosphere, “special persons” now away, psycho safety awareness in the team without hidden agenda. So good clean healthy communication. Always to improve for sure.
+To treat suppliers fair and neutral, some still preferring suppliers - this to be fixed → brand is in the core!
+
+
+
+
+Q3: Tech vision & framework
+This initiative aims to develop, implement and maintain the tech vision for BU E-mobility. How would you define a tech vision?
+Tech vision feels for me like engineering focus → i miss the link to the customer needs. No to bombard him with 1000 technical needs, away from he really wants
+Procurement can help focussing
+Capabilities to shape better, to focus on corporate strengths → to identify our USP
+We use a framework to cover all relevant aspects. What do you feel is missing if anything? SHOW THE STEERING WHEEL – SEE SLIDE 3
+Culture & strategy → not to underesimate CULTURE
+Customer to put more to FOCUS
+How strongly is digital transformation anchored in your procurement strategy, and what's your vision for procurement's role in the company's digital future?
+Category deep dive running now → WORK IN PROGRESS
+
+
+
+
+
+
+
+
+Catecory management tool, AI enabled: launched beginning of 2025, named: :-)
+
+Q4: Procurement
+From your procurement expertise, how can strategic sourcing and supplier partnerships accelerate our business transformation?
+Procurement has a lot of experience and a time-tested framework when it comes to identifying and managing strategic suppliers (Fast-charging and AC suppliers) → Core values: Active, open, positive space
+ABB, Kempower, Alfen are already supported this way. The others can benefit from this
+What's your view on how procurement can enable innovation through digital supplier ecosystems and partnerships that benefit our core business?
+If our roadmap is clearly communicated we can piggyback on an enormous amount of R&D budget on suppliers side, so that we can influence their R&D agendas in a way that helps the BU to be successful → Could be a multiplier to our R&D budgets
+There is a lot of interest from the hardware team to explore many interesting possibilities, yet sometimes it feels like they are running without a compass.
+How can procurement's data and spend analytics provide insights that drive better business decisions across the organization?
+Procurement already has a supplier dashboard (SBTI - scientific based target initiative).
+Based on your experience, how should we engage procurement teams to ensure they're aligned with and supporting our business transformation goals?
+I have experienced that there was a bit more pushback for working with cat management. We now have a 5-point support approach, which has been time-tested. “Steal with pride”.
+What procurement-driven value creation opportunities do you see that could strengthen our overall business strategy and benefit our internal customers?
+Cooperation between Susanna Hurtig and Network Solutions was not helping in the past, lack of focussing on the bigger picture, that was annoying and I could not support that. Some individuals are still there and this has affected the relationships. Intercompany margins is not for procurement to get involved with.
+5. Conclusion:
+Anything else? Focus on Change Management → there is a lot going on within BU E-mobility. There may be a few who think “there we go again”. It is important to take that into account.
+
+Do you have anything else to add in this context? Anything we missed?
+– change management to understand and to have a clear process
+
+Interviewers: Thank the interviewee → Pieter
+
diff --git a/mandates/vattenfall/111 Interview Tobias - Procurement/04 transscript.txt b/mandates/vattenfall/111 Interview Tobias - Procurement/04 transscript.txt
new file mode 100644
index 0000000..23281b2
--- /dev/null
+++ b/mandates/vattenfall/111 Interview Tobias - Procurement/04 transscript.txt
@@ -0,0 +1,257 @@
+00:00 Ommeren Pieter van (SB): And I'm also still applying for the role, so I need to go to full formal process. Including talks, assessment, tests, everything this week. But now I'm done with that analogy. Yeah, yeah, he did it as well.
+
+00:17 Winblad Tobias (FPSC): Oh yeah, yeah.
+
+00:20 Ommeren Pieter van (SB): I must say I like the company.
+
+00:22 Winblad Tobias (FPSC): Yeah, yeah.
+
+00:26 Ommeren Pieter van (SB): It's it's good but but of course you need to prepare, right?
+
+00:26 Winblad Tobias (FPSC): Yeah, but it's it's nice to get hit in the face and sort of. I mean, I've. I've never felt as stupid as when I did the assessment.
+
+00:40 Patrick Motsch: This I know this I understand.
+
+00:43 Winblad Tobias (FPSC): But yeah, but apparently I I passed so.
+
+00:45 Ommeren Pieter van (SB): Yeah, yeah, yeah. You're still here? Yeah. So let's see if I'm still there next week.
+
+00:51 Winblad Tobias (FPSC): Yeah.
+
+00:52 Jeroen Haverkorn van Rijsewijk: So so the so the so the method works. The methodology works then, yeah.
+
+00:55 Winblad Tobias (FPSC): Yeah, indeed. And I have. I have another meeting that starts at 2 by the way, and I need to prep a bit so if we can end maybe latest 1022 would be appreciated.
+
+01:07 Ommeren Pieter van (SB): Then I will. Shall I then immediately kick off guys. So thanks for joining to be assured and thanks for also for the questions you raised. I'd like to introduce the initiative really quickly and then hand over to you and Patrick for introduction. But looking at the the DSH, this is my unit now digital solution in hardware. Any mobility, there's great people. A lot of great work happening and also huge potential ahead and I cannot say but. At the same time, many challenges and opportunities that we're facing and so I think we're often questioned about our strategy and quite often we don't have a clear answer. Things like how do we incorporate AI into our way of working? How do we further accelerate the automation in our system landscape? What do we think of plug in charge and what is our road map towards it? What should we buy and what should we build but also connected to hardware? And So what is our vision? On take offers on supplier management. On what is actually, how do we make sure we select the right suppliers? I think we have experienced this as well together, right where things change along the way quite often because we don't know or didn't think it through upfront. And also you mentioned sometimes to Mia. What is it that you want, right? So tell me because then we can better support you. And then please don't change it every time. I think it's fair, right? So. On the digital side, we have similar similar challenges. And This is why I discussed the Fabian. That would be good to start the initiative to come to a, to a vision and a tech strategy or tech vision and a strategy. And this is where H3, so eole and Patrick come in. I know you know it for a long time. Sort of. Us basically help from H3 company to support us in this journey. Because I really see it as a journey. Where we say, OK, we launched this initiative which is collaborative effort. So it's a Co creation to defining and accelerate our long term Technology Strategy and we decided to to start from top to bottom. So we don't want to to. Drown in details immediately, but we want to start basically from strategic level, which is why we will start with amongst others you, but also yetska from it and Fabian. But obviously along the way we will, when we've defined what we actually want to do, involve of course more colleagues on the pressure levels. So that is, in short, is it? Does it make sense they get what we were after a little bit from the initiative perspective?
+
+03:51 Winblad Tobias (FPSC): So the expected outcome of this exercise is to have a documented and clear hardware and sort of asset management strategy is that. In a nutshell, or.
+
+04:04 Ommeren Pieter van (SB): I would say technology vision, which is broader than that than it also includes for instance. But but if you now say we know that AI is coming name something. If you would ask me, what do we do with it? The answer is we don't know because we haven't looked into it. So this is an example for instance.
+
+04:24 Winblad Tobias (FPSC): Mm-hmm.
+
+04:25 Ommeren Pieter van (SB): That the level of detail, it's still still not known yet, I would say. But it should give a lot of guidance and an overall vision that should at least solve the problems that we're currently facing.
+
+04:37 Winblad Tobias (FPSC): OK. Yeah. Clear. Thanks.
+
+04:40 Ommeren Pieter van (SB): And I would like to hand over to Johan for the intro and next steps.
+
+04:44 Jeroen Haverkorn van Rijsewijk: Wonderful. And then thanks, Peter and again wonderful to meet you, Tobias. I think you're in best in Berlin. If I remember correctly, or or Amsterdam still.
+
+04:54 Winblad Tobias (FPSC): No. Yeah, exactly. The majority of my team is based in Berlin, so maybe that is why.
+
+05:00 Jeroen Haverkorn van Rijsewijk: OK. Well then I was. It's it's, it's, I guess three times, right? But then with with with it has to be. Probably Burlington still cold. More Amsterdam, but good to meet you and maybe just before before I share a bit about myself to build 11 extra thing on what Peter said at the tech vision, but also to help, I think a clear deliverable is also to help. In fabulous words, DSH to. To. To to to to create a clear kind of a signature. So a signature present. So for an identity, right, Peter, that's what we also spoke about.
+
+05:40 Ommeren Pieter van (SB): I think the unit, especially here.
+
+05:43 Jeroen Haverkorn van Rijsewijk: And then the tech vision is one of the yeah, one of the deliverables in which that manifests. So it's also there's also a team building aspect within DSH and a wonderful that you were here willing to to talk to us in, in spirit of Co creation. So yeah. So I've been wearing several jackets. Since 2018, but that's when I started first working with Peter and his colleagues from the BUMT. Back then, with Thomas and Stefano and Eric, and all of them. And so we've seen quite a few teams and yeah, very excited. Now with this with. This context. I'm Dutch. I'm based in east of the Netherlands. Let's say Greater Amsterdam, three kids and. I've been an executive coach and boardroom advisor for about 1 1/2. Decades. Yeah, and very, very happy to welcome Patrick alongside me, who is an absolute expert on the on the specific topic or I come more also from the leadership culture change management strategy side better comes from the from the side that he can now explain himself. So that's great.
+
+06:52 Patrick Motsch: Thank you. My name is Patrick. I'm based in Switzerland, originally from the French part. Now I live in the German part I'm. Would say I'm what is important originally. I'm civil engineer and from another domain. This helped me because recently I did data centres. My whole job was a long time to plan build hand over data centres in the northern part of Switzerland for a touch company. It was at that time and based on this I'm skilled. I would say an infrastructure and company. Combination with management skills and also management coach. My core competence is digital transformation combined with AI integration and in this field the major of topics I have is to communicate to people and the way how we interact together. I have three kids and a nice wife, so now I'm done.
+
+07:43 Jeroen Haverkorn van Rijsewijk: Thanks. Wonderful.
+
+07:46 Winblad Tobias (FPSC): So the and the kids are not nice then, right?
+
+07:47 Patrick Motsch: Good observation. Sorry, talk to talk when you say this. Yes, I had a girl. The girl was very nice and I have two boys. OK.
+
+07:58 Jeroen Haverkorn van Rijsewijk: Yeah, yeah, I'm afraid we're not going to make the time. Toby is when we start talking about kids. So, but yeah, no. Maybe one to two add. So thanks Patrick. And to add, maybe one thing on my side, so I back in the days actually studied computer science, artificial intelligence. But that's already quite a while ago and I've been helping to be you not only to be UMT, but also the various teams, and I'm helping. So the various teams reporting into the BU M. The over the years, including their snows and and central teams, and now helping Peter with this in this context. So maybe over to you if that works at Tobias, then we have some questions and. Unless of course, you want to ask us some questions before. Are you good to? Good. Good to go.
+
+08:49 Winblad Tobias (FPSC): I can give. I'm good to go. I think I can give you my one minute executive summary of who I am and.
+
+08:57 Jeroen Haverkorn van Rijsewijk: That's our first question, so that's great.
+
+08:59 Winblad Tobias (FPSC): Yeah, alright. Right. So born and raised in Sweden, I've been working with the company for quite some time. So that as a management consultant, I also I'm I have a Master of Science in in engineering, so also a civil engineer I've been and also. Studied sort of my my core competence. Is actually a nuclear engineering. So I'm I'm I'm I majored in quantum physics. So that's where I'm originating. And 15 years ago I wanted to deploy my sort of knowledge in the energy sector and it was either solar or nuclear. And then solar 15 years ago was basically nothing. So I decided to go nuclear, so that is where I spent most of my time designing course and bundles and and nuclear sort of. Sort of. The the bundle that goes into the reactor so the reactor design and also the sort of the the bubble, doesn't really. It's not a one to one fit with what I'm procuring and supporting the business with now, but it's it's where I'm where I'm from, I spent quite. A few years, also in the Treasury Department. So managing currency exposures of buying and and selling. Swaps and financial instruments. And. After that I transition to procurement and I've been leading a team that is growing. For now, I think it's three years and. So I'm supporting 6 categories we define from procurement that we work with category management and and the main category that I'm supporting in addition to VOE mobility then or E mobility or evsc is solar large scale solar batteries, hydrogen marketing and communication and finance. So I'm sometimes it feels like I'm a bit schizophrenic, so I'm all over the place and and nowhere sometimes.
+
+10:56 Jeroen Haverkorn van Rijsewijk: So solar marketing and communication finance.
+
+11:01 Winblad Tobias (FPSC): Hydrogen.
+
+11:03 Jeroen Haverkorn van Rijsewijk: Hydrogen.
+
+11:05 Winblad Tobias (FPSC): And yeah, so now.
+
+11:08 Jeroen Haverkorn van Rijsewijk: OK, but no nuclear anymore.
+
+11:08 Winblad Tobias (FPSC): No, not yet, at least we're. I think that you have seen in the news that it's it's a big fuss in the media nowadays that we have down selected down to two suppliers that we are preparing to build a new small modular reactor in the on the West Coast of Sweden. So it could. Be I mean a battery that's an advanced battery in a sense. With a. With a pressure cooker inside integrated. No, and I'm living in Stockholm. I only have two kids, so not 3. That's the rest of you. But I I think I keep myself busy with those two girls anyway. They're five and seven and definitely a handful and and I have sort of two nice girls and a nice wife.
+
+11:59 Jeroen Haverkorn van Rijsewijk: Well, that's let's celebrate that during the school. That's good. Tobias, thanks. Wonderful. Yeah. Thanks. Yeah. And so and so your team. How big is your team? I mean, Peter knows but.
+
+12:14 Winblad Tobias (FPSC): I have 17 FT XS right now with 16 leads and. Strategic buyers. Basically all of them, but I have quite a few. Sort of union buyers as well. So I'm it was more or less when I inherited the team we were nine and it was mainly grey foxes. To put it mightily. And and now I've been able to put a bit more energy into the team and and a bit more diversity. So I have more. More ladies and also more younger and promising individuals. So. A nice team.
+
+12:52 Jeroen Haverkorn van Rijsewijk: And what? Yeah. Nice. And it sounds nice. Just maybe one last maybe in a few words. What do what do you like most about your about, about your work in, in procurement? What? Yeah. Gives you energy, let's say.
+
+13:07 Winblad Tobias (FPSC): Well, within a picture I mean the the, the role that I have, I would say the the people, I mean I really like that I'm in this in the center of the transformation of the industry that we're facing in terms of electrification. I mean, it's definitely why I. Go up in the morning or to to leave a better place for my 2 girls than. The the world that I that I was born into. That's very I I. I live and breathe our purpose. That's and I think that that is also a common denominator with my team. I'm I have a great team and they also give me and they seem to be happy with me. They give me a lot of positive feedback at least so.
+
+13:52 Jeroen Haverkorn van Rijsewijk: Great, good. Thanks. Thanks. Yeah. And indeed, I think that at least I feel that's also true for most, if not all people I meet within the BU E mobility. I haven't been a lot outside of being with you in front of so many purpose driven really people wanting to contribute to this transition. So that caused lots of energy to to to be there at fulfillment. Thanks. So next question.
+
+14:20 Winblad Tobias (FPSC): And maybe worth mentioning as well that before the the sort of I've been needing this three in three years and then before that I was. Dedicating most or basically all my effort to BUE mobility because I was the category manager for BU Mobility. So now I'm a bit further away, so I'm I'm still familiar with how it was run when when you mentioned Stefano and Thomas and so forth. I'm still keeping in contact with Peter and and I and also with Fabian. But but I'm a bit more distant, used to the fact that I need to prioritize my time, and I don't have.
+
+14:55 Jeroen Haverkorn van Rijsewijk: Yeah, yeah, yeah.
+
+14:56 Winblad Tobias (FPSC): Even though it's so I have, I think that I know at least. Quite quite a bit about mobility and the journey.
+
+15:05 Jeroen Haverkorn van Rijsewijk: What? Yeah, yeah. Wonderful. Yeah. Yeah. Peter, you are. You already told us about that, that you and the Tobias knows a lot about you. And see. Yeah, and. And the journey and, well, what a journey it has been. And it's not yet. And it still is, let's say. Let's do it like that. Wonderful. So. I think maybe the next question would be. How do you feel the collaboration between your team and immobility can be? Can be elevated to the next level. Let's say in service of Father. What would come to mind comes to mind.
+
+15:45 Winblad Tobias (FPSC): Well, I think Peter already mentioned that that to to I think that we are very closely integrated, but sometimes for some reason we are still a bit surprised with the decisions or directions that are completely in opposite of what we thought we would support the BU with and. Then all of a sudden we take the the example that comes to mind is the battery integrated charger. Where where? We were more or less. Advised. Store. I wouldn't say force, but at least it was a lot of effort that we put into making sure that we had a solution in place. Fabian was really keen on having it. Well, yesterday rather than tomorrow because we were losing a lot of money. We had EBITDA figures that that was sort of provided to us and it was a forecast that was more or less bankable with 50 stations. And then I'm exaggerating. A bit, but that is in a nutshell. What I'm and then all of a sudden one month passed after we signed a contract, another one, and then we didn't see any orders and we were a bit OK. So what? What happened along their journey? I mean, why did we put other stuff aside and prioritize on this issue when apparently it wasn't that important? So that I think, can be even further. Her enhanced sort of the the communication and what would be, how would she could should we prioritize our efforts to best meet your strategic ambitions when it comes to solutions that that we can then provide to you from the supply base?
+
+17:29 Jeroen Haverkorn van Rijsewijk: Yeah. And could you repeat the specific example that battery, what did you call it?
+
+17:35 Winblad Tobias (FPSC): Yeah. Well, where we have batteries that are integrated into the charger. So one of the main I think Fabian always mentioned that two of the main challenges that eBay mobility is facing is grid connections and and sort of revenues or or utilization or what is it's not the correct word but.
+
+17:58 Jeroen Haverkorn van Rijsewijk: Usage, yeah.
+
+18:00 Winblad Tobias (FPSC): Yeah, usage. Yeah, maybe that's easier. Easy enough, and one of one of the one of the solutions is to make sure that we reinforce the grid, in particular in Germany with buying Transformers. Another one would be to integrate batteries.
+
+18:14 Jeroen Haverkorn van Rijsewijk: OK. Yeah, yeah. And that was a recent example where you experience these. A lot of pressure and then a little result, but was there also? Yeah. OK. So and then, so communications is what I hear you. That's where where we can throw better, more frequent or communications? Is that what I hear?
+
+18:38 Winblad Tobias (FPSC): Yeah. But, but I mean now also being very open and transparent. One of the things that I actually sorry. Yeah. One of the things that I went when I handed over my category management role to chainer, one of the tips that I gave him was to not act. Until you give it a day, because things can change, and if you sort of act on the emails and and the directions that you get one day the other day, it could be completely different. So what we need to do is to sit back, take a deep breath, and not be sort of acting on all of these initiatives that are coming from right and left and also to really figure out who is it that we should listen to because there are so. Many opinions. And we need to have one BU mobility voice. And that is one thing that has been lagging or lacking. So because there are. There are informal leaders, I. One one of the. Out one of the one of the informal leaders that I engaged a lot with was Boston de John used to give you a great I think that he's still around, right?
+
+19:50 Ommeren Pieter van (SB): Yes. Yep.
+
+19:53 Winblad Tobias (FPSC): Yeah. And then he has. He's really opinionated and could build a lot of momentum. It's my perception in the organization and then that could deviate from Stefano's perspective on what should be the Orson Jasper's position. So it it was a bit complex to really navigate and and to. To really be clear on what direction is that the right one and and who we should listen to?
+
+20:19 Jeroen Haverkorn van Rijsewijk: Yeah, clear. So then on your side, indeed not responding to every e-mail, but maybe take a breath and see what's still true tomorrow. But on BU inability side more clarity.
+
+20:39 Winblad Tobias (FPSC): Wouldn't say not responding to emails, but I would say do not respond directly.
+
+20:42 Jeroen Haverkorn van Rijsewijk: Yeah, yeah, I don't. Yeah, I mean, indeed, taking a breath and and.
+
+20:47 Ommeren Pieter van (SB): And connected to that, we have seen to many more of these examples right where there was a there was a tender process started with an ambition and along the way it changed and not sometimes even more than once. The question is, do we actually know what we want?
+
+21:05 Jeroen Haverkorn van Rijsewijk: Yeah, yeah. And what I what I what? I then what? I conclude I don't hear you say. But what I conclude is that what would also benefit this collaboration is improved. What you said. Who can actually decide? But that translates into my head as a clear business processes with clear roles in within those processes and a more kind of a discipline to keep to those processes. Something like that happens then in me, but maybe I'm. I'm I'm going places. But I mean, there's also something on the bubbles side. That can can help to elevate this collaboration. This black point here, OK. Wonderful. How would you say would you say the how is the general mood, let's say in the collaboration? Is it? Is it positive? Is it friendly? Is it engaging or is it also? Is it not so much of that what you maybe?
+
+22:14 Winblad Tobias (FPSC): No, I think that that is that is one of the reasons why I still have my my buyers in and and why they are motivated because it's they have great fun collaborating and and I think that the atmosphere is is is super we've we've had in the past. A few. Exceptions to that, but those I think there was very much tied to specific individuals and and they are no longer there. And so I think that that is definitely. I I feel that's one of the. Things that I'm working a lot with within my team. Psychological safety I think that was for a time period, not there where certain individuals were afraid to speak up. And now I feel the opposite, that it's very open, very transparent and there is no hidden agenda or any. Blaming games or or anything but, but we need to also make sure that we can challenge each other and and be clear and crisp about what what we need to support you. And that is definitely.
+
+23:13 Jeroen Haverkorn van Rijsewijk: Yeah.
+
+23:13 Winblad Tobias (FPSC): Where I see there is still room for improvement and also one-on-one of the core sort of purposes of of procurement is to make sure that we treat our suppliers fair and transparently. And I still have the tension that some individuals have a tendency to prefer certain suppliers rather than focusing on demands and and technical requirements so that we can openly support. And and drive our process. And it's natural. It's not something that is unique to bemobility, but that's that's something that we continuously need to work with to protect our brand. When we then go to the market next time.
+
+23:57 Jeroen Haverkorn van Rijsewijk: Right. Thanks. A couple of questions on tech, the tech vision. So firstly. Yeah. When we say these and Peter is framing what what comes to your mind, how do you? How would you define the tech vision? 'Cause it's it's not set in stone. We have a lot of thoughts around it, but we also would love to, yeah, be in the space of Co creation to make sure that we are actually creating something that. Yeah, it's connected and and makes sense in in the context in which it should land.
+
+24:33 Winblad Tobias (FPSC): You know well for me, honestly, when I heard the word, when I hear the word tech vision, it feels like we would. It's engineering focus and a lot of technical capabilities well, I think. One of the one of the sort of missing links that I have felt at least a couple of years ago is sort of the the customer needs. How do we make sure that we are not? Bombarding our customer with a lot of technically advanced solutions where they are saying OK, nice, but I don't need that. And and how do we then connect the dots from the supply side with their R&D capabilities? Because procurement can give you a mobility access to a lot of R&D capabilities rather than focusing on our R&D capabilities in House, I mean there are still 2030 or 40 suppliers that when, whenever. We enter a hardware tender that they are super keen on working with us, even though we haven't. Bought anywhere close to the volumes that we have put out to the market. Year to date but but still I think that is that that is what I would hope to see, that there is a red thread from from the customer and to the capabilities that we have and that we actually. Focus on our strengths as a company that we are an integrated utility that we have a really strong sustainability agenda and focus and that if you want to choose should be very clear that we have offerings that other CP OS don't have with when it comes to green.
+
+26:15 Jeroen Haverkorn van Rijsewijk: OK.
+
+26:16 Winblad Tobias (FPSC): Electricity when it comes to loyalty, there is a lot of. A lot of solutions that you can build and integrate. If you start with the customer and put that in focus.
+
+26:28 Jeroen Haverkorn van Rijsewijk: Thanks. So we actually have a, let's say, a prototype. I'll share that. Which we feel at least covers. At least these aspects should be in it, and as you were speaking, of course I was checking whether we actually have customers. We do, even though maybe not super prominent, but we have them here with engagement now there. I mean we will go into this. We will bring this also to the kickoff and then we can read it. I could like explore it together and we're going to flesh it out. Also based on the interviews of course, but at a high level. We feel leadership is at the core of making this into a reality. Of course, you have the culture strategy and an operating model to enable that. All that within. Within the the context of data and AI equality. And implementation. So if you look at this, is there anything? And I know, I know it. I know this was very fast and and we actually spent a lot of hours on this and I'm not doing that any justice, but like kind of from the first five, this is kind of is anything crucial missing. Let me maybe put it that way. When you, when you look at this with the limited knowledge that you have now. About this.
+
+27:56 Winblad Tobias (FPSC): Yeah, that's. That's, I guess why we would pay you for helping us with this, but no. But I mean the first glad there there is a vote that comes to mind when I see culture and strategy. That culture eats strategy for breakfast. So I think the culture element of this is I think should not be underestimated. I think culture is really. Where? Where it where it starts and ends.
+
+28:25 Jeroen Haverkorn van Rijsewijk: Very good. Yeah. I'm fully with you.
+
+28:32 Winblad Tobias (FPSC): I've done that. I think that customers should be a bit more visible than underneath engagement.
+
+28:37 Jeroen Haverkorn van Rijsewijk: Yeah. Clear. Clear. Thanks. Yeah, that's super helpful feedback. Wonderful. So back-to-back to you. Back to not looking at a PowerPoint, I mean. Maybe the last question for me and then switching to Patrick. And then I will take over the note taking. Patrick, thanks. I'm looking at a Google Doc which is being filled. Thanks to Patrick as well. Next to AIRAI note taker. Umm. Within procurement, yeah, what initiatives or trends or or things are relevant for us to to know or maybe there are documents that that would be really helpful for us to receive as well. So we can. Be of better service to to this initiative.
+
+29:32 Winblad Tobias (FPSC): Just just by chance I requested a category deep dive on Monday together with my manager and we went through all of these categories of view. Imbility was one.
+
+29:41 Jeroen Haverkorn van Rijsewijk: OK.
+
+29:42 Winblad Tobias (FPSC): Then we had five additional sessions that I think also it's very interesting, but maybe not for you at this stage. And I can just give you a glance and I'm happy to share that in hindsight. What I was now you disappear, but you can see my screen I. Hope and it's only we tried to condensate it with four slides where this is the strategic landscape. The the sort of services and hardware that we're buying. But insights in the maturity and and the the pricing level. So it's more sort of procurement focus. Here or how we translate the needs to negotiate? These are the initiatives that we're currently working on. These are the key trends that we have identified and the risks and how we respond to those and also another sort of the last picture is very much driven out of our category management. Framework. So these four slides I think would potentially help you to respond to those questions that you raised.
+
+30:50 Jeroen Haverkorn van Rijsewijk: Fantastic.
+
+30:52 Ommeren Pieter van (SB): Yeah, 100%.
+
+30:53 Winblad Tobias (FPSC): So I'm happy to share that with you after this. And then rather than going through because going through that will take me more than 30 minutes.
+
+31:03 Jeroen Haverkorn van Rijsewijk: For sure. No. Amazing and great timing then.
+
+31:07 Winblad Tobias (FPSC): And then if you I think if that's more efficient, if you look through the PowerPoint and then if you have any questions, I'm happy to elaborate on or potentially also reaching out to Chainer who is then the category manager within the team.
+
+31:18 Jeroen Haverkorn van Rijsewijk: Yeah, yeah. Yeah, yeah, yeah, for sure. Super thanks tobius. And that would be very helpful if you could indeed share that with us.
+
+31:30 Winblad Tobias (FPSC): Well, I share that with Peter and then you you take care of the distribution, Peter.
+
+31:34 Jeroen Haverkorn van Rijsewijk: Perfect.
+
+31:35 Ommeren Pieter van (SB): Thanks for.
+
+31:39 Jeroen Haverkorn van Rijsewijk: Last question, I think it's you gave it to me. So how strongly is digital transformation anchored in your procurement strategy? And what's your vision for Procurement's role in the company's digital future?
+
+31:54 Winblad Tobias (FPSC): Well, we have actually recently deployed a category management tool that is called searcho that is based on AI where we do some prompting about what, how does the market look like. What are our levers that we would like to focus on? And then it sort of spots out a category plan? So we already integrate AI into developing all of our category strategies now going forward and that is something that recently was launched at beginning of this year. So we are, I think also from procurement, we are lagging a bit behind in terms of AI, but we are ramping up and there's a lot of lessons learned along the way with utilizing this tool and so far so good. It looks very promising even though there are. Some hiccups.
+
+32:39 Jeroen Haverkorn van Rijsewijk: Yeah. Wonderful. Thanks torias. That's it for me, Patrick. You take over.
+
+32:45 Patrick Motsch: Perfect. I have some 234 questions about the procurement itself, about the supporting role that you also have for us and especially your expert role in this. So first what I would like to be interested if you can say something the strategic sourcing and the supplier management that you do, how you could support us with these disciplines in our business? What do you think?
+
+33:07 Winblad Tobias (FPSC): In terms of supply relationship management, you mean or?
+
+33:11 Patrick Motsch: Yes.
+
+33:12 Winblad Tobias (FPSC): Well, we have a lot of experience within the company when it comes to managing our strategic suppliers and we have a framework in place that we have deployed for all of our identified strategic suppliers at least for the the fast charging suppliers and also the AC suppliers, so. We have defined how we would, at least from our perspective together then with Stefan Lutz, who has also been around for quite some time. How we engage strategically, tactically and operational. And the strategic element is agreed that it's something that we will support and we will follow that framework where we make use of our core values or. Well its core values now. It's not experience principles any longer. It goes back and forth within the company, but active open, positive and safe. And then we we find, well, we build up with, with, with some questions and then self-assessment where where we rank from 1:00 to 5:00 and then we have. An open conversation with the management team on. The performance and then how to translate that into sort of tangible initiatives? I I keep it very high level now, but that is in a nutshell how we support.
+
+34:26 Patrick Motsch: I already I tried to summarize, so this is means we can profit from a framework that you have that you have aligned that you have adaptative straight and forward and you can support us using this framework that we all are fast.
+
+34:36 Winblad Tobias (FPSC): That's what we're currently doing. I think that we can definitely enhance that even further. So we are doing it with with some suppliers really advanced with with sort of ABB and and chem power to some extent. But ABB and ALPHAN comes to mind. The others might need a bit more push. And I'm I'm a bit uncertain about the future of C tech. I don't all of the details in in front of me, but. We can definitely make use of the already existing framework. How we work with suppliers from procurement.
+
+35:12 Patrick Motsch: Perfect. Thank you. An Intel questions just because we are curious because it could have an impact on us. What's what is your personal view on how procurement could enable innovation through an EMT's work, digital suppliers, ecosystems, digital supplier ecosystems. What would you say about this? Your opinion?
+
+35:32 Winblad Tobias (FPSC): Yeah. Well, I I don't. Well, correct me if I'm if I'm out of scope of your question, but I I think I mentioned that already that I think we could definitely make sure that if our road map is clearly communicated to our suppliers and also the supply base, we can piggyback on a. Enormous buffer of R&D budget that we cannot do by ourselves. So I think that that is something to be clear on if we. If we can push or get support from the market, but it starts with also getting a bit clear on what we would like them to focus on. So they are not doing what they think is necessary, but we can actually influence and that starts with them being clear. On what we would like them to focus on, I think that there's still a good appetite for them to to listen to what we need and then. We would. Well, we we have a. What is sort of a multiplier of our R&D budget, if we can use that wisely?
+
+36:43 Patrick Motsch: You've got the perfect. What was my Commission? I try. I try carefully to summarize what I understood is we are not yet there that we have shaped. What are our needs in the digitalisation business that we can align the suppliers and to categorize what we need from who? But we are on this road to define this would be summarise it correctly or what would you say?
+
+37:05 Winblad Tobias (FPSC): I think to some degree we, we all you already know when it comes to ISO 1511, although it's the kind of sort of initiatives that we've been talking about with OCPD 2.0 those abbreviations with. But how do we actually? How can we make sure that we then can translate that into some tangible customer value? That is the missing element? I think that is where.
+
+37:30 Patrick Motsch: Good to transform it to formulate what kind of service or component we need. This point is this is still open. Did I get it?
+
+37:40 Winblad Tobias (FPSC): Yeah, I think that there is a lot of a lot of interest from the the guys and girls within the hardware team to explore all certain innovative aspects. But sometimes it feels like they're running without the compass, to be honest.
+
+37:56 Patrick Motsch: So clear. Make sense then about procurement state that you have much state. You also expressed it before the the KP as that you measure the alignments of that you have the cutteries that you have. What do you think? Could there be something in for us that we could use better? Something like a dashboard or what? You just said before. Some some category list or analysis? What do you think about this? Could there be some some service from your side, from procurement or what could we expect? I ask like this openly.
+
+38:25 Winblad Tobias (FPSC): No, but we already have a a supplier dashboard. I mean it it it was mainly driven out of the SPTI. I mean the scientific based target initiatives and used to track the suppliers who have signed up to that, but also when it comes to Echo, Vades and EPD's. And so it it has grown a bit. So we already have that in place and in particular, if I go into. That system and look into alpha and I get a lot of business intelligence. And so from from that.
+
+38:57 Patrick Motsch: Perfect. Next question. I just keep because, well, it was about your experience how it can be enhanced, the engagement of procurement teams on your site with our teams that they are aligned and supporting us. I think this already had in deep this collaboration that we can enhance or you have some some more comments that you will give on this because I think you already said it.
+
+39:19 Winblad Tobias (FPSC): You know what? I think that there. Maybe again, I've experienced that there was a bit more push back from working with category management in the past and now I I mean we we have a five step approach or a sort of a continuous circle that we are deploying for all our categories and I think. That is, it starts with. How does it. What is the status as of today? What is the strategic outlook if we continue the way that we are doing today? Will it serve the purpose that we have or sort of the ambitions that we have? And I mean we we can support you with, with, with, with guidance on driving these strategic initiatives through that model. It doesn't mean that we would. Give you a strategy, but it we can act the enablers or or facilitators.
+
+40:12 Patrick Motsch: You contribute. Yeah, I facilitate good things now. Afterward, good. You can facilitate us by your experience as.
+
+40:22 Winblad Tobias (FPSC): Yeah, I think that that is one of one of the one of the corporate ditches that we sometimes end up with throughout the company that we are eager to reinvent the wheel. When we do have a lot of capabilities in the House already. So still with pride, that's also something that I continuously ask to to sort of share across not only BU's but B as and. Make sure that we are not. That's also part of the excellence ambition. Is that we have and the expectation from our CFO.
+
+40:57 Patrick Motsch: Good, good expectation. So last question, you are experiencing external suppliers. We have internal customers and suppliers. Is there something that you could give us from your experience that we should integrate or think about when we exchange now or adapt our business strategy?
+
+41:18 Winblad Tobias (FPSC): In relation to your internal customers.
+
+41:21 Patrick Motsch: About relations. Yes, relation about our I speak about, we say our internal customers we also contribute services internally not to external customers. It's the collaboration between the teams. Is there something based on procurement work on procurement expert that you do that you say guys internally you should think about this and this that you do it better?
+
+41:39 Winblad Tobias (FPSC): Well, I don't if that is still the case, but that annoyed the hell out of me when I was exposed to. It was mainly, I think, the cooperation between Susana Huttig and the Network Solutions, because Network Solutions they sell power as a service and then they wanted they. They obviously also talk to customers and then they need then the support by the BOE mobility and then they wanted to. Buy some some chargers and then all of a sudden they were exposed to a 10 or 15. 15% margin on top of the already negotiated prices and I said I will not support that from procurement. You need to figure that out with with an SLA internally. But I I was really depressed with the lack of focusing on the big picture as well with with having just your own P&L in focus. That's something that should not be there within the company that I will never support those kind of. Initiatives where you try to. To boost your own figures. So that's something to and I think that for for some individuals, they are still there. And I think that that the relationship might have been affected by that experience.
+
+42:52 Patrick Motsch: OK, I understand now. Great point. Also to follow the Intel corporate rules and boundaries.
+
+43:03 Winblad Tobias (FPSC): Yeah, yeah, yeah. But that is, there is no internal rules on on the on those topics. It's more when it comes to those arm lengths, but the procurement will not support with with. With those kind of intercompany margins.
+
+43:21 Patrick Motsch: Good point. Important point. That's it. From the questionary. So did we forget or did we miss anything that you after discussion all these points that we had together that you say hey, this is something that it would like to give you. You already said or. So for this tech vision that you want to do that, we don't do it too much engineering driven. These are already wrote, but are there more points that you tell us when you do these round guys think about this.
+
+43:53 Winblad Tobias (FPSC): Hmm. No, no, I don't think so. But I think that there has been. A lot of changes within BOE mobility and yeah, you need to figure out how to how to work with change management. That's that's definitely core. And then so that I know that there are quite a few that will feel whole here we go again. But how to then make sure that it's understandable why we need to do this? That's. And also with the I mean it's something that I think is still confidential when it comes to these rotten fallen customer investor direction, but that will have an impact on the on on BU on the BU. So.
+
+44:41 Jeroen Haverkorn van Rijsewijk: Yeah.
+
+44:41 Patrick Motsch: Thanks.
+
+44:43 Winblad Tobias (FPSC): Yeah.
+
+44:43 Jeroen Haverkorn van Rijsewijk: Thanks and. Yeah, we didn't. I I I should have mentioned before, but indeed like Peter said, please be open. This is confidential set up. Obviously we do have an AI note taker. It's it's been. It's it's a GDPR compliant and everything and runs on EU servers as well. I find it important to to share. We we use that for our own purpose only, and those are also available to to Peter and to to you. If you want to as well as part of this Co creative exploration. So just just to to note that as well. Thanks Peter. Back to you, I think.
+
+45:30 Ommeren Pieter van (SB): Yeah. And then I will. I will round off in 2 minutes so we give you the the 10 minutes you need, hopefully even a little bit more. First of all thanks. I find it's very I found it very interesting and I've learned a few new things. For instance, on the Ind budget. Topic you mentioned. Maybe you've mentioned it before to me, but now now it really sticks. Finally, and thanks for the for openly sharing and and not always new for me of course, but I think it's it's good when we have these interviews to yeah. Have us all on the same page. We will for now in the next two weeks, finalize interviews with all senior stakeholders. Jetzka from IT. You are the one from procurement. We will talk to the SN OS to funny and Fabian. So those will will be taken into account as a first round and then we will basically take all those feedback, everything we're learning through consideration to design the kick off session. You will also be part of that. And from there we will start the program, which is still also a little bit unknown. Because we based also on the interviews, we have a structure for it that what we will exactly do, and by when it's also something we will define over the next few weeks. So that is it actually. Yeah. Thanks a lot.
+
+46:45 Winblad Tobias (FPSC): Well, happy. Hopefully you got something out of it and then happy to. To to support and give you feedback. I know that I've been also challenging the the BU when I was in in sort of more involved in in certain things that that that I felt was not really working in the right direction. So I'm happy to to try to avoid getting into those corporate ditches again, and if there is anything, any specific question, I'm I'm happy to elaborate. As I mentioned, for these PowerPoint them.
+
+47:20 Ommeren Pieter van (SB): Yep.
+
+47:20 Patrick Motsch: Thank you.
+
+47:21 Ommeren Pieter van (SB): Thank you so much.
+
+47:23 Winblad Tobias (FPSC): All right. Good. Yeah, same to you.
+
+47:28 Ommeren Pieter van (SB): All right.
+
+47:30 Jeroen Haverkorn van Rijsewijk: Nice meetings.
+
+47:30 Winblad Tobias (FPSC): All right, bye.
+
+47:32 Patrick Motsch: Thank you. Bye.
+
+47:32 Jeroen Haverkorn van Rijsewijk: Ciao, Ciao.
\ No newline at end of file
diff --git a/mandates/vattenfall/111 Interview Tobias - Procurement/05 document FPSC Category Deep Dive E-Mobility.pdf b/mandates/vattenfall/111 Interview Tobias - Procurement/05 document FPSC Category Deep Dive E-Mobility.pdf
new file mode 100644
index 0000000..fcd52dc
Binary files /dev/null and b/mandates/vattenfall/111 Interview Tobias - Procurement/05 document FPSC Category Deep Dive E-Mobility.pdf differ
diff --git a/mandates/vattenfall/112 Interview Alied - Sales and Operations/00 Interview Guide - Alied Wesselsboer.pptx b/mandates/vattenfall/112 Interview Alied - Sales and Operations/00 Interview Guide - Alied Wesselsboer.pptx
new file mode 100644
index 0000000..6297164
Binary files /dev/null and b/mandates/vattenfall/112 Interview Alied - Sales and Operations/00 Interview Guide - Alied Wesselsboer.pptx differ
diff --git a/mandates/vattenfall/112 Interview Alied - Sales and Operations/01 briefing.txt b/mandates/vattenfall/112 Interview Alied - Sales and Operations/01 briefing.txt
new file mode 100644
index 0000000..42838c4
--- /dev/null
+++ b/mandates/vattenfall/112 Interview Alied - Sales and Operations/01 briefing.txt
@@ -0,0 +1,18 @@
+0:00: So, good evening, , Patrick.
+ 0:03: , a voice app to brief you on tomorrow's stakeholders, , elite and funny, , elite, , both female leaders, both.
+ 0:17: Strong leaders, I would say in their own right, , Ali being Dutch based in Amsterdam, , has succeeded Peter after he left to, , do a one year stint as director of Germany in Berlin, which he is now ending, , as he, , takes on the role of director of digital services and hardware.
+ 0:46: But Ali was very much .
+ 0:49: Yeah, Peter's right hand, so to speak, in the.
+ 0:53: In running the .
+ 0:55: Sales and operations unit in the Netherlands.
+ 0:59: , she is a lawyer by degree, , went, I think, into like public, , relationships and communication and gradually ended up, , more in operations, being very successful in the Dutch tenders, , , which, , was an important and is an important part of, .
+ 1:27: Of, , of the, of the, the Dutch success, , and still is very much a driver of the BU P&L.
+ 1:41: So she's, , I would say she, she describes herself as herself as a red in terms of color theory.
+ 1:50: , now it depends a bit on which color theory you're talking about, right?
+ 1:53: But this, in this case, red means results, so she's result driven and oriented, , yet also super fun to kind of hang out with and good sense of humor, , so also in that sense I would say a warm personality.
+ 2:09: , yeah, I think mother to two children, , probably in the range of .
+ 2:17: Yeah, let's say 6,7, and 9, 10-ish, I think, , from the top of my head, and I've been , well, so I, I had, so I, I was, , helping, supporting Peter to make a step in the team development, and then she took over, so I ran a few sessions.
+ 2:41: Also with her as the new leader for the Netherlands.
+ 2:46: , and I really enjoyed that collaboration.
+ 2:50: , A bit hard to really connect to on a deeper level, but definitely very easy to connect to.
+ 3:01: , when it comes to achieving results.
diff --git a/mandates/vattenfall/112 Interview Alied - Sales and Operations/02 transscript.txt b/mandates/vattenfall/112 Interview Alied - Sales and Operations/02 transscript.txt
new file mode 100644
index 0000000..511786d
--- /dev/null
+++ b/mandates/vattenfall/112 Interview Alied - Sales and Operations/02 transscript.txt
@@ -0,0 +1,333 @@
+00:00 Ommeren Pieter van (SB): Early morning for you? Or did you travel flying yesterday?
+
+00:00 Jeroen Haverkorn van Rijsewijk: No, actually I went with a train yesterday afternoon. It was very relaxing. Yeah, I was here at. I was in Berlin at 6:00. I thought. Give myself a bit of a break and prioritize health, and that was very good. Good decision, yeah.
+
+00:19 Ommeren Pieter van (SB): So the train was on time and all cool.
+
+00:23 Jeroen Haverkorn van Rijsewijk: Train was on time and it's direct train, right? So no, no stress. So yeah, yeah. Amid.
+
+00:33 Ommeren Pieter van (SB): Hey, elite.
+
+00:34 Jeroen Haverkorn van Rijsewijk: Good morning. Yeah, we're in English because of Patrick today, but.
+
+00:41 Patrick Motsch: I see. Yes, it's the Dutch company today.
+
+00:45 Jeroen Haverkorn van Rijsewijk: Yeah.
+
+00:48 Patrick Motsch: This this I cannot offer. This is too difficult for me.
+
+00:51 Jeroen Haverkorn van Rijsewijk: The the fool for us of the Netherlands.
+
+00:55 Ommeren Pieter van (SB): I would say with AI rapidly developing, how long will it take before we could just speak your own language?
+
+01:03 Jeroen Haverkorn van Rijsewijk: I think you already can. Actually, there's already. I think Google has something that you can just speak your own language and it will talk back.
+
+01:10 Patrick Motsch: With the headsets you can real time to real time translation, yes.
+
+01:15 Jeroen Haverkorn van Rijsewijk: Yeah.
+
+01:17 Ommeren Pieter van (SB): All right. So we were just quickly checking in. On the on the morning and how everybody's doing. So how are you doing elite?
+
+01:28 Wessels Boer Alied (SB-M): Yeah, I'm OK. I'm fine. Yeah, will be another busy week, so. But I'm fine.
+
+01:52 Ommeren Pieter van (SB): Cool. Are you Patrick?
+
+01:52 Patrick Motsch: I'm very good this morning. Wonderful day, not too hot.
+
+01:52 Ommeren Pieter van (SB): Not too hot.
+
+01:52 Wessels Boer Alied (SB-M): Where are you located, Patrick?
+
+01:52 Patrick Motsch: In near Zurich, in the how far area to the mountains, we had some really nice days latest days and now I'm happy to have a little bit rain. It's it sounds strange, but at the moment I'm happy when I have to work in the office.
+
+02:04 Wessels Boer Alied (SB-M): OK.
+
+02:06 Ommeren Pieter van (SB): Are you yelling?
+
+02:08 Jeroen Haverkorn van Rijsewijk: Yeah, I'm good. As you can see, I'm in the waterfall office.
+
+02:12 Ommeren Pieter van (SB): Brilliant office.
+
+02:14 Jeroen Haverkorn van Rijsewijk: Yeah, the Britain offers. I'm. I'm sitting in the room where normally at a Fabian or someone else is sitting. When I meet them virtually. So that's nice. I met Fabian also just now back back from holiday, so I told them a bit about. How we kicked off last Friday, if you're happy. But yeah, good to good to be here. Bit bit bittersweet because it's it's back at work, which is only one and nice, but we have we had such a nice summer vacation with so many nice family memories that yesterday there were tears when I left. And and and also with me. I was like stuck so bad to be away from family. But in a very good way. So happy to to be here. Yeah.
+
+02:55 Ommeren Pieter van (SB): Cool. And I'm also happy that I will also introduce the the program. Good weekend, very busy weekend and also with football matches in the morning. So Saturday morning, 8:00 on the IT was quite early. But a bit good weekend and also did some surfing yesterday again which was also nice. I did a course during summer and now practiced another while another one yesterday. So it was nice. And now we're back to work. And we're here for the for the tech vision initiative. And I will immediately kick it off. Maybe already shared some things with you elite, but I think we, we we started from the from the angle of of these age where we see a great unit with great people, a lot of great things happening but also a lot of challenges and opportunities that we're facing. And if you look at strategy, we're quite often questioned about it. I'm not looking from the DSH perspective. When it comes to AI. How to incorporate AI? How can we accelerate automation in the system landscape? What do we want with plug in charge? What are the bigger themes? We should invest in should we buy? Should we build? Same things for hardware for connecting charge. When do we want to do it? When what are the boundary conditions? Strategic supplier management. How does that look? So there's a lot of questions and we launched this initiative. As a collaborative effort to to define and accelerate that vision or the Technology Strategy. And we're here with H3 company, so famil familiar face Patrick, new face to support us in this journey. And we start top from top. Basically, we start from the top. To to basically. Also refrain from details at the start. So we have interviews scheduled this week. With basically you or S. No directors funny and yes from it. And Tobias from procurement and after that we will really define and kick off the program. Then I would like to hand over to you.
+
+05:08 Jeroen Haverkorn van Rijsewijk: Yeah. Wonderful. Is that enough for as an intro for you anit?
+
+05:13 Wessels Boer Alied (SB-M): I think so, yeah.
+
+05:16 Jeroen Haverkorn van Rijsewijk: OK, good. Yeah. So. Indeed. Some time ago and Peter and Fabio and approached me to to support this initiative and already since the beginning of this year or actually end of last year. I'm in the process of setting up an or a company called H3 Company which helps people, organizations and also people within organizations to. Yeah, to deal with what is now upon us. Due to the push from AI. This initiative is broader than AI. It's it's technology as a whole and it also encompasses supporting the DSH team to to develop their own signature in, in, in, in the business unit. So with me on in this in this context, very happy to to welcome Patrick. Patrick is very good at much better than me at describing his own expertise. But I can already share you. It is an absolute expert when it comes to digital transformation. Also building and running data centers, including the human side, so teams within data centers, etc etc. Building them from the ground. So that's something that I've never done, of course. So so bring in leadership culture and team development and and the and the and the real hardcore data and analytics. Expertise and experience from from Patrick. Makes the team. For today, and we're also. Supported by by my business partner from H3 Company who Peter already met. But Patrick over to you. Would you? Would you like to introduce yourself to Alex? She's she knows already too much about Peter and about me, so that would be very boring, I'm sure.
+
+07:15 Patrick Motsch: OK. That's good. So thank you very much that you can do this call. I'm originally born in Geneva. I come from the French part of Switzerland. Now I live near Zurich, half area upstairs to the mountains in a wonderful area with my family, three kids and wonderful wife, and I learned in the last call. Also, my kids are wonderful because last time they said so I have purchased. I don't say this. My digital journey started about 20-6 years ago. Oh, I first made the civil engineer. I also made architecture in in Switzerland in 80. Huh. And then suddenly I was combined with communication and it and this entertained by what I said before designing implementing data centres. But more and more, this went away from technology. It was already there, people, business to have the right teams in the right places. It was a timing topic to having eighty months such a data centre. Ready. It is quite tough. And finally, then, this AI technology raising more and more the last four years I was changing again. So back from infrastructure back from it still in the backhead, but the people and organisations to support them to integrate this AI, which finally is, I would say 5% AI, 95% is integration work with teams, with people on this journey.
+
+08:43 Jeroen Haverkorn van Rijsewijk: Yeah. Thanks Patrick.
+
+08:45 Wessels Boer Alied (SB-M): Can I take those? Do you want me to take over? Do you want me to take?
+
+08:49 Jeroen Haverkorn van Rijsewijk: Sorry. Yeah, yeah, yeah. Before, before you do that, just a note that this meeting is being recorded by GDPR compliant. You European server based AI note taker and yeah if you want you can also of course get the link to the to the interview. But the the idea is that this stays within the four of us and Peter, Patrick and me used, let's say, the outcomes in the highlights. Of this interview as inputs for for for the next steps, which Peter will. Tell you at the end of the interview. Cool. Yes, please. Please take over if it's OK, yeah.
+
+09:32 Wessels Boer Alied (SB-M): And last week I learned that I can object against it, right? I took a course in, but I'm not going to. I'm not going to but.
+
+09:41 Jeroen Haverkorn van Rijsewijk: Absolutely.
+
+09:42 Wessels Boer Alied (SB-M): Yeah. Yeah, but I'm I will. My name is Elizabeth. I think I'm the person with the the least knowledge on tech or on the digital, but I guess that also has a positive side as long as I still understand it, then I think everybody will understand it in our department. I'm the director of SN. ONL. So after Peter left, I took over a year ago. And what else? I live in Amsterdam. I'm happily married. I have two children. And yeah, I'm now just starting to work with copilot and I have been sometime the asset for asset management, asset management, the manager for short while before I took on this job. So from that perspective. I do have some knowledge on what's going on in the team. And yeah, I'm really looking forward to this meeting. So very curious. The topics that you are going to raise, and I also think that there's lots of room to improve. Internally. So I'm really glad with this initiative.
+
+10:57 Patrick Motsch: Thank you, Alex.
+
+10:59 Jeroen Haverkorn van Rijsewijk: Oh, wonderful, wonderful. So also wonderful kids. We assume at least right for the just for the notes. Yeah. Yeah. Not only happily married, but also happily parent.
+
+11:10 Wessels Boer Alied (SB-M): At the moments where they are lovely, they are lovely. Yeah, that's true. Most of the time they are.
+
+11:16 Jeroen Haverkorn van Rijsewijk: We can shake hands. Cool. Well, maybe just to to to continue where you left off, which is indeed lots of things to to improve, so. If it's OK with you and we now get into the, we ask you a few questions and Peter, please feel invited to chime in, right, whenever something spontaneous comes up. I will ask the first bunch of questions and Patrick will take over and and and and I will take notes and and then we aim to yeah to be done. A few minutes before 10. So you're not sitting on the hot coals. If that's an English saying, I don't think so. But you know what I mean. Maybe let's start with the collaboration with with DSH from your perspective. Right. So. Maybe you can. Yeah. And of course, I'm Peter and me were a bit pre informed, but maybe just for with one sentence, give a bit of context what the nature of that collaboration is for, for Patrick and how satisfied how satisfied your current Dr. with the services and products provided by. DSH. And also the just the call, yeah. OK.
+
+12:30 Wessels Boer Alied (SB-M): Yeah. So from the parts of hardware, I think. The specialists are in central team, so whenever there's a tender or something else where they need input from the hardware team, they will approach them and also when it comes to all kinds of firmware updates, running these and testing new firmware. So we really see them as our. Firmware specialist and also our specialist on the hardware and also. Our specialist in terms of issues that, let's say, the technical people within our local organization cannot solve. So this is how we regard them in terms of, yeah, what kind of work do they take home from a hardware perspective? And on the digital side, I I honestly have to admit that I'm not really aware. I know that they work with sprints. I know that there are teams. I know that in the Top Model ideally. MCO is giving them the cues on what they do and I think in practice. So we highly depend on all kinds of systems like share also in operations. We flag what I see happening is that we flag often. What's not working? Well then this is taken in and then it becomes a bit of a black box. Well, yeah, what happens to fix? That's more or less it in a nutshell.
+
+14:04 Jeroen Haverkorn van Rijsewijk: And so is that. Are you then satisfied or not? Or parts you are and other parts you are less. Or how how would you? Say that.
+
+14:15 Wessels Boer Alied (SB-M): I think that's so. So a lot of things are not delivered in time. And that that's that's a really serious issue because. Yeah, that means that a lot of also manual labour needs to be done continuously. And in some respects, we are really fast growing. So we have more and more people using our charge cards. That's increasing the workloads, but it's not. And from what I understand from the operations and there's lots of room to to to optimize things, making it more efficient and that's currently not done yet.
+
+14:57 Jeroen Haverkorn van Rijsewijk: And does that apply for digital or also for hardware? Well.
+
+15:11 Wessels Boer Alied (SB-M): What's the if?
+
+15:12 Jeroen Haverkorn van Rijsewijk: That things are not delivered on time etc etc. What you just said?
+
+15:16 Wessels Boer Alied (SB-M): Hmm. Now, that's not my experience, but so I think the cooperation itself is quite good. I think there's bad communication could sometimes be improved, so I think an example maybe that also Peter saw on the e-mail yesterday is or maybe last week is that we don't always fully understand each other so.
+
+15:42 Jeroen Haverkorn van Rijsewijk: OK. With digital or with hardware or both.
+
+15:47 Wessels Boer Alied (SB-M): Yeah, we've, we've hardware.
+
+15:47 Jeroen Haverkorn van Rijsewijk: With hardware. OK, OK. Thanks. Or maybe on that note, what what you know where and how do you feel the collaboration between SNL and L and DSH? How can it be elevated to to next level? What would be what would unlock that?
+
+16:07 Wessels Boer Alied (SB-M): Yeah. I think to to have more clarity on who's working on what and when and how to cooperate with each other and and when I was the manager, we we did. Make like an overview of of all the positions that we have and what people are working on. So we try to start with that. I also think that on the level of meetings we've had pretty clear on operational, tactical strategical level, who's participating.
+
+16:33 Jeroen Haverkorn van Rijsewijk: Mm-hmm.
+
+16:34 Wessels Boer Alied (SB-M): So a lot is also going. Well, but I think and that's maybe also a challenge for the hardware team, but it's not up to me to to, to answer. That's more maybe a question from my side. I think that the asset management team in NL. Working quite well. We have the highest upside, so there are. To some extent also. They depend on the central team, but they're also capable of doing. Things themselves and take pride in that because they are delivering a good job. So. And of course that then gives a bit of tension. If somebody says, hey, you need to do this or that and then you think, hey, yeah, but I'm running my business quite well, so. These kinds of tensions. So I think clarity on who does what and how do we cooperate that that will help. And I think it's also a bit of back office front office. So of course, we like all kinds of things to be in place for our customers or to win tenders.
+
+17:48 Jeroen Haverkorn van Rijsewijk: Yeah.
+
+17:48 Wessels Boer Alied (SB-M): Yeah, from a different perspective, that's maybe not ideal because you need to manage them more. Hardware supplies just to give an example. And it's it's all. It's all fair. So the local perspective is in some way is true, but also the central perspective is true. But then? It's really about understanding each other. That's that. Yeah, that both. Be there at the same time.
+
+18:12 Jeroen Haverkorn van Rijsewijk: Yeah. And I imagine that it also helps. But that's just an assumption I'm testing with you on the elevator collaboration. It would help for things to be more that you can depend more on on what is being delivered when, and that there's less of a black box. Even though I understand that that black box also includes MCO for a large part. But yeah, how do you see that?
+
+18:41 Wessels Boer Alied (SB-M): Get the black box becomes less. Yes, I think in general, if you can be quite transparent on where you are and that's not sometimes regarded a bit as control. But I think if if the transparency is there then you are really on a high professional level.
+
+19:01 Jeroen Haverkorn van Rijsewijk: Yeah. OK. Thanks.
+
+19:03 Wessels Boer Alied (SB-M): So yeah, that's something I fully agree upon.
+
+19:06 Jeroen Haverkorn van Rijsewijk: Yeah. OK. Then switching to more the tech vision and let's say. Our collective, which includes you, our thoughts on the framework, so this initiative aims to develop, implement and maintain the tech vision for the BU. How would you define a tech vision? And especially because? You are. You regard yourself not as a techie. I'm I'm interested to to learn your perspective.
+
+19:38 Wessels Boer Alied (SB-M): This is a difficult question for me to answer tech vision.
+
+19:42 Jeroen Haverkorn van Rijsewijk: It's, and therefore it's also very easy would be my, yeah.
+
+19:50 Wessels Boer Alied (SB-M): I think it needs to be clear what our strategy is there. What kind of approach do we take?
+
+19:56 Jeroen Haverkorn van Rijsewijk: Yep, Yep.
+
+19:57 Wessels Boer Alied (SB-M): And and then there's probably a couple of choices to make in this strategy. Here. So do you want to be really flexible or do you want to be? Say no. Every once everything to be managed perfectly. But that means we need to make choices. Difficult choices. Listen to local demands. Or is it? Is this is a hardware. This telling local teams what to do.
+
+20:35 Jeroen Haverkorn van Rijsewijk: Yeah.
+
+20:36 Wessels Boer Alied (SB-M): And I think you need to understand, of course, what what, where is this landscape going to? I think you already mentioned AI, but these kinds of things and and also the needs of the customer. I think more and more emphasis. Has been in the past years in tenders on asset management. So how is this run? So the demands will only increase, so it will become more difficult and also saying if the uptake is already. Quite high in the Netherlands. It means you need to put a lot of effort and maybe also money in in adding one additional percent. And is that where we really are? Or. And then also these different KPI's per countries is a bit complex in itself so. From that perspective, it's it's it's it's more difficult in the Netherlands because we are already quite high. We all have the same central budget, but we need to increase to an even higher level where locally they are on a on a lower level. I think it's probably more easy there to to to get some gates. But I'm not. I. I don't know. That's just from.
+
+21:57 Jeroen Haverkorn van Rijsewijk: Yep. Yeah, very good. Yeah. Yeah. Thanks. And I'll just share what it's work in progress, but I'll share how we how we think about what should be. And it's just for you to kind of look at. It's very high level. It's so high level that, you know, in a way, you can't really be. You can't really miss it, right? But this is our starting premises with things that it's tech vision should include. So you already mentioned strategy, so that's definitely part of part of that vision. It also means strategic posture. So what kind of? Yeah. Are you like a front runner, are you? Are you more defensive? Etcetera, etcetera. There's also kind of how, yeah. How do we show up and how do we see ourselves? Right, which which also defines how we show up and where we put our attention. Leadership obviously at the at the center we lead this very important part is also culture. What? What? Patrick said. Also the the people side of things and then how to make it operational? So there's a lot of parts of that also. Is it operational? So that's why there's also a large part of that in what we call the operating model. And of course, all of this depends heavily on on data and and nowadays it's data and AI. So this is how we how we see that any any obvious things are not here for you for now.
+
+23:36 Wessels Boer Alied (SB-M): No, thank you, Sir.
+
+23:39 Jeroen Haverkorn van Rijsewijk: OK, good then. Yeah, like I said, we're using this as a kind of a prototype going into further exploration, but happy to happy to hear that. Next question would be, yeah, what? What initiatives or or trends or things are relevant for us to know from within snow in the Netherlands within? This this context.
+
+24:06 Wessels Boer Alied (SB-M): Yeah, I already mentioned that we have growing demands from our customers. So more and more, they want us to do more on how we manage assets. So they want more reporting. They want us to be more proactive. These kinds of things. What was your question again? What is?
+
+24:32 Jeroen Haverkorn van Rijsewijk: What initiatives or trends or things are relevant for us to know within this context from from within? Then there let's.
+
+24:41 Wessels Boer Alied (SB-M): Yeah, but I was also thinking looking at what you just showed. So in terms of the organization, I think maybe it's not culture, but it's maybe organization. Is that one of the observation that I have is that we also need to run a lot of projects, whereas the central team has a lot of experts and you're not necessarily a good project manager when you're an expert and and and and we don't distinguish between these. Things internally. So we think, OK, you're the expert.
+
+25:08 Jeroen Haverkorn van Rijsewijk: Ah, OK.
+
+25:09 Wessels Boer Alied (SB-M): So you're in Leeds, but that doesn't necessarily make them a good project manager. So if we need to onboard, for instance, new hardware, who's then managing these projects and these? These are also things that need to be clear.
+
+25:24 Jeroen Haverkorn van Rijsewijk: Yeah.
+
+25:27 Wessels Boer Alied (SB-M): Maybe just a loose remark, but.
+
+25:31 Jeroen Haverkorn van Rijsewijk: Yeah. Yeah, good point. Yeah.
+
+25:38 Wessels Boer Alied (SB-M): What trends did you say right?
+
+25:41 Jeroen Haverkorn van Rijsewijk: Yeah, and what initiatives? Maybe there's already some digitization things going on or automation of business processes or?
+
+25:48 Wessels Boer Alied (SB-M): As with this asset management information system, that's something I really believe in that that should be there. I also think that competitors are ahead of us.
+
+25:56 Jeroen Haverkorn van Rijsewijk: OK.
+
+25:57 Wessels Boer Alied (SB-M): That's what we also know. So in so in that sense, it's interesting to to ask people about LMS when they did the hack because that gave them an inside rise on how it was run by competitors and then they saw, hey, the competitor is doing some things far more efficient.
+
+26:12 Jeroen Haverkorn van Rijsewijk: OK.
+
+26:14 Wessels Boer Alied (SB-M): So for instance, the maintenance part. Partners get an automatic queue when something is wrong and then they need to go to charging station and I think this is also the purpose with the asset management information system and I think that that in general I think our system. So people like Boston will say we have all the information. Yeah, that's true. And we know tons of things. So when I was the manager of the asset management team. I also asked OK how many things can you see in the technical guide told me like, yeah, I can see like 8000. Cute on things that are not how they should be, but then it's like a bit like being a doctor. OK. If somebody has like, 20 complaints, where do you start? Or do you just think go away? You're a bit of a hypo.
+
+27:03 Jeroen Haverkorn van Rijsewijk: Yeah, yeah.
+
+27:05 Wessels Boer Alied (SB-M): Crite but but but so you need to see. OK, this is really serious. This is this person. This is needs to end it. And this is a really big batch. I don't know, but I don't think that this is automated yet and this is also something. Of course, if the system. As so much information on what's not how it should be, how how do we follow up upon that in a structured and as far as possible automated way. So for large parts, but I think it's also something we talked upon before Peterhead for a large part, maybe you. Can have automatic queues, so just to restart and it will solve it. And maybe there are also big batches with simple things that we. Can filter or maybe. Some things have to raise immediate red flags, like who? Hey, this is like a new issue that we don't know. This it also needs to be seen and understood by the central team. I don't know, but I don't think this is how we currently deal with this information. So we have the idea that it needs to be understood by the by the maintenance partner, but I I probably we can do way more, right?
+
+28:15 Jeroen Haverkorn van Rijsewijk: Yeah, yeah. So that would be also my last question and then handing over to Patrick, So what? What is your vision on for, let's say, NL's role in? Yeah. What we call the the business units, digital future, if you wanna give it, give it some words.
+
+28:36 Wessels Boer Alied (SB-M): Our rules that we are we, we are the end user, I say. And we we should also be able. I think it's it's probably never finished right. So it's like this plan to check act. Somebody's going to be the owner of this or hey, you are probably going to check this vision again in in one year, etc etc. So. You probably need to have people to to to. To challenge it. Repeatedly and then also say OK what? What things are not in place that should be there and it's not only the asset management team is also then the tender team and the operations team in terms of digital. So I think operations is really depends a lot on the digital team. I would, I would think. To do their work in in the most efficient manner.
+
+29:36 Jeroen Haverkorn van Rijsewijk: Thanks. Patrick handing over to you.
+
+29:40 Ommeren Pieter van (SB): So the topic you just mentioned I think is highly relevant on the. So for Patrick, this is probably new, but all those stations, so they are connected, right? They're they're sending tons of information to our system all the time about statuses. What errors about behavior, and I think today this generates charge points there about temperature charging. Modules in the charging station, whether or not they are working, and so they're sending tons of information. Currently, the team is translating that into actions for operations, but you can imagine with thousands of stations or this also generates a lot of work and that currently needs to be interpreted. I think a lot of a lot manually, right? Elite. So I think this is this is where I see, especially in our AI part of this program, a lot of an important part. How do we how we're going to automise this also in combination of users reporting something? So we have so much knowledge on the back in the back of our courses. System landscape so much probably we already know before the customer's calling us, but today we either wait before for the customer to call or we we, as DSH, expect the S&O to look into all those rows of information and then yeah, do something with it. I think here's.
+
+31:04 Wessels Boer Alied (SB-M): And the central team has no time. That's what I understand more or less, right, that they're not really, unless it's really something that that the local team is not able to to to resolve. But I think it's also my impression that they are really busy. With the firmware new updates. Choosing new hardware, testing new hardware. It's. I don't think they have really time to follow up on this.
+
+31:32 Ommeren Pieter van (SB): No. And then my last point and then we go back to the interview to you again. But imagine we would. Increase our asset base by 10 tenfold, right? So 10 times as much than we would have, let's say 400,000 stations. I think you would need to have a full floor of people here to manage that. And I think this is this is where I would would want us in the tech vision initiative to look look into because I fully believe.
+
+31:59 Jeroen Haverkorn van Rijsewijk: Sir, can you repeat that? Sorry, sorry, sorry. Can you repeat that? Sorry, Peter.
+
+32:03 Ommeren Pieter van (SB): So so if we would, if we would have a much bigger asset base, we would need to have a lot of people here in each team to manage all those messages, errors and things where I believe there is a crucial part in this technology initiative to look into. Automation and AI to solve this for us 90% in combination in combination with customer interaction because on the one hand and then I will stop because it's of course your interview elite, but I think it's relevant. So on the one hand, there's information that is generating in our IT landscape, right? A station sending an error, for instance, and there's customers interacting with us either through WhatsApp or sending something in the in the app. Something is not working, but I think 90% should be solved automatically by the system from those two streams.
+
+32:54 Patrick Motsch: It's very crucial point that you are with assets linked to the staffing count currently.
+
+33:02 Ommeren Pieter van (SB): Yeah.
+
+33:06 Patrick Motsch: But I take over. Where you see the current and future challenges for your business unit and for the business units and for the Netherlands that you drive now your current and future challenges that you see?
+
+33:24 Wessels Boer Alied (SB-M): Hmm.
+
+33:25 Patrick Motsch: So I give some examples. Things like time to market, limited financials and humans, things like this to have some short lists that you can tell.
+
+33:38 Wessels Boer Alied (SB-M): Good to see you. How far are you? I think one of the issues that that we that we have is that. That the market is a bit shaky at the moment. So on the one hand you want a hardware suppliers to be you want them to be there forever. So for you can also have. WhatsApp on the daily spare parts for a really long time in the future. On the other hand, you want of course to do to be competitive, to be innovative. So preferred supply strategy is not ideal. So maybe you need to have more, but then it becomes more difficult to manage. So I think that's one of the challenges. To balance that out in the right way and also having different markets where we are active. I think that one of the challenges is that we have. We are growing, like Peter said. So you can wonder if the way we are working, if that's really how we can can go on in the future. I'm also worried about safety in all honesty. So are we giving that sufficient attention? So last year we had an issue and it's still not really properly resolved, but it boils down to the point where where the whole market is seeing that maybe the the full protection is not ideal the way it is, but it's more really a hardware issue. But then if you have such a big base also. Repairing this is a risk in itself, so probably it will be phased out and and it's also not possible to bear these kinds of costs, because if you need to retrofit it, it will. It will just kill the business case of every, each and everyone in the market. So it's it's such a huge problem if you have a serious hardware issue. It will be such a huge problem that it can simply not be addressed. Because it will. Yeah. Cost too much money. Yeah, I think it's really hard to from from. To answer this question.
+
+36:05 Patrick Motsch: We don't need each pizza, but it's it's OK for the for the. I think the topics that you address first is that you have first in mind. They are more relevant, but can you address also looking to the future when you look what happens internationally, the regulations, the environment, what do you think, what risks will raise?
+
+36:26 Wessels Boer Alied (SB-M): So in terms of in terms of this departments?
+
+36:30 Patrick Motsch: Department and also the trend, the business unit. What do you think? Feeling experience.
+
+36:43 Wessels Boer Alied (SB-M): I think the market will be more and more regulated, but but if it's so, I have a background in regulatory affairs. In in normally also always have a reasonable time to to implement changes, but you need to be flexible in that sense. So a lot of stock, for instance, that's that's highly risky if if you if you see that there are regulatory changes coming. So where you do need to have let's say a payment terminal or whatever. If you're then stuck with a really big old batch of hardware, yeah, that's not ideal of course. Yeah, I think.
+
+37:31 Patrick Motsch: OK. It's OK if we don't all test, we continue. Based on your experience, how should we engage the Netherlands team to ensure that they are aligned with and supporting our business transformation goals that you just want to set? What can we learn how to integrate?
+
+37:55 Wessels Boer Alied (SB-M): I think they have a lot of operational knowledge and from this one can learn a lot so. And I think they they have probably. Yeah, they have the biggest batch of assets. We have really big concessions, so we have really big contracts where we, let's say corporate with 80 municipalities and need to install thousands of charges. So with really big clients, so we operate on a large. Skill, I would say compared to, say, the older markets currently. Of course we are different in the sense that we do a lot of AC or the majority of what we have is AC, where the other markets focus on DC. And so we would like to grow in DC. But we are a front runner and and. The market leader, when it comes to AC in the Netherlands.
+
+38:53 Patrick Motsch: OK. And how you think we should engage the Netherland teams that all can profit from this experience? This know how this one step being ahead? How? How we could engage these resources?
+
+39:09 Wessels Boer Alied (SB-M): In this project that you're currently running.
+
+39:12 Patrick Motsch: In the vision that we do and also for the whole organization to profit from from where we are already good. Any ideas? The creative question.
+
+39:26 Wessels Boer Alied (SB-M): Yeah. I think I would like an exchange, so let somebody of the hardware team maybe do the work. Work a month or two within the local teams to really understand and see where they are day-to-day facing, I think a really better understanding so and also for the digital team. Work, work a day or two in operations and see what they come across to know to get this understanding because we have a lot of translators, we have process managers, they need to translate everything to the to the tone and then from the tone it needs to it. Like when you have this Wisp game and I'm saying and we go round. Before it ends up with DHH, there's a lot of things that get lost so. If you don't want things to get lost in translation. You can of course do classical things like having meetings and discussions, and it's all fine, but I think then it also would be helpful just to yeah to to really work in a local team or have some exchanges and maybe also the other way around, so would also. Be interesting for somebody in in the local team, maybe to run a project or whatever in that, in a central team.
+
+40:48 Patrick Motsch: Very good. So to be more specific on on this point, what unique local opportunities you see that we could profit also in our in our DSH vision is there's some topic that you say, hey, guys here can really profit from us. For our vision.
+
+41:17 Wessels Boer Alied (SB-M): In what sense? Profits. Yeah, it's it's such a broad question I.
+
+41:21 Patrick Motsch: What do you what do you do? Very good. Better than the others that you say. Hey this we should share.
+
+41:27 Wessels Boer Alied (SB-M): Rip sign. It's a really clear KPI and I think we are really good at it because we really on top of it. So it's the way we manage our maintenance partners. It's the way we we. Yeah, take action upon what we see. And it of course also gives Rick Shinne in our local team. But because we're not doing everything, of course we also make choices. So sometimes people can be complaining a lot about some charges that are not working. But they take a pretty rational view and say, OK, we focus on the biggest badges that we can solve the easiest. Even if that means that, let's say a charging that is already not broken for a long periods will not get attention, and maybe because it's it's only one case.
+
+42:20 Patrick Motsch: Let me allow one deep dive. How you decide where to take focus? Is there a system or is it experience? What is? What is the driver?
+
+42:32 Wessels Boer Alied (SB-M): In the mid, so they try to digest it, but I think they now do it themselves. Ideally that's it's it's done. The system does it for them.
+
+42:45 Patrick Motsch: Thank you.
+
+42:46 Wessels Boer Alied (SB-M): And I think it's also experienced they know what's going on and yeah.
+
+42:55 Patrick Motsch: Right. So finally, let's dive. Let's go back from dive. What is good and should be kept and what should we change and summarize?
+
+43:08 Wessels Boer Alied (SB-M): My impression is that that the teams are really knowledgeable. I think that for the hardware team, I think it's a lot about the cooperation and and. About making it easier to decide on what to act upon. So I think the responsibilities and rules should be come more clear and and then also saying hey, we have a lot of projects, how do we deal with that? Because I don't think there's really a project manager's really in in both, so not locally, but also not centrally. So I think that's the issue. And from a digital perspective? I think it's really important to deliver on time and manage expectations. And also have under real understanding of what's going on locally. So it it seems that there are far far away. Sometimes I guess. But that's not really I'm really now.
+
+44:13 Patrick Motsch: The headlines. It's it's. It's great for us to have the headlines here.
+
+44:19 Wessels Boer Alied (SB-M): It's a bit like this, but so maybe it's not a full picture, but OK. But I think that in itself the hardware team doesn't feel really far away from me. I do feel that there's sometimes, and it's also it's also interesting to see how big a difference individuals make here. So some are really great in cooperations and others. It's. So that's also something that's in there. So it's not always connected to structure. It's also connected to the profile of people that we have in. I think the team would benefit from really strong communicators.
+
+45:01 Patrick Motsch: It is a great point at the end to say.
+
+45:05 Wessels Boer Alied (SB-M): Or somebody with project management skills, you know somebody that's gluing things together and be a bit like the oil man in between.
+
+45:12 Patrick Motsch: Yes. Yeah. Great point is I like for the end. So last question, did we miss anything? When you look back what we ask you that you would say, hey, this also would like to tell you what would be important that you reflect when you make another decision and you go on.
+
+45:32 Wessels Boer Alied (SB-M): Uh. Yeah, I think it's hard to. It's really from the scratch, right? So it's easier to to if there's some like a blueprint already to for me to respond upon, but. But yeah, let me think about.
+
+45:54 Patrick Motsch: Your opinion, your I fully understand. I fully agree. By the way, it was also discussion to give a script before or just to ask, but what we think also what we know, what you see, what you experienced. This is most valuable that we can get.
+
+46:07 Wessels Boer Alied (SB-M): Yeah. Uh, no, I don't. I don't have anything to add. Yeah, I think you should really talk to somebody like in my team and people like Bob. So that would be my recommendation.
+
+46:20 Patrick Motsch: You have this name Sharon because I don't have this. You know the people.
+
+46:23 Wessels Boer Alied (SB-M): And also of course, when it comes to digital talk to. But you probably already have a long list right of names that you in our organization that you would like to talk to.
+
+46:36 Patrick Motsch: We already have.
+
+46:37 Wessels Boer Alied (SB-M): Yeah, and also.
+
+46:39 Ommeren Pieter van (SB): Could be could generate, of course, yeah.
+
+46:41 Wessels Boer Alied (SB-M): Yeah. And also Jasper from operations. And. Yeah. So yeah. Houston.
+
+46:52 Jeroen Haverkorn van Rijsewijk: For, for, for now, we're keeping it small because we are preparing the kickoff. But in the phase one, which Peter will also share and definitely there are many, many people we we can think of talking to, but we also want to do so in alignment with with you and and your peers.
+
+47:11 Wessels Boer Alied (SB-M): The only thing I haven't really touched upon is where we can automize things. But I think that there's one thing before it's also the data quality. That's a big issue, right? So a lot of data. So if you if you would like to know more. And and also. The idea that we have with how many systems we are working, what's our system landscape looks like. So for instance, for this public business, Houston Ham and I has looked into it. Because some cues just don't reach us. They get lost somewhere and it's because our system is connected to the system of the diesel. So the grid operator, but from to municipalities, from tooling, that's the municipalities used to do this processes. What else? Contract management system. So there's tons of systems with a lot of information flow, and they're also. So. So we sometimes maybe focus a lot on our own systems, but do have high efficient processes. We also need to interact with a lot of different systems, not only our maintenance partner but so. But I think this is known.
+
+48:34 Ommeren Pieter van (SB): Maybe one last question from my side, is there any?
+
+48:39 Jeroen Haverkorn van Rijsewijk: Yeah. Sorry, Peter. Peter, sorry. You said data quality is an issue. To know more about this and then I was like, I'm going to write this down. But then you didn't say it. Select.
+
+48:49 Wessels Boer Alied (SB-M): Yeah. Talk to Houston hammeray. And he also has made like, an overview of all the systems that they interact. And I think there's 80 flows of information just for this one tender concession.
+
+49:02 Jeroen Haverkorn van Rijsewijk: Yeah. Thanks. Thanks.
+
+49:05 Wessels Boer Alied (SB-M): And not everything is a happy flow. So that's often what goes wrong in when we develop things for our operations that we think in terms of happy flows. But then what happens to everything where somehow things are not in a happy flow and they just fall out of our sides? And then we literally lose track of of charging stations that are in development?
+
+49:30 Jeroen Haverkorn van Rijsewijk: Yeah. Thanks. Thanks. Sorry Peter. Thanks.
+
+49:34 Ommeren Pieter van (SB): No, no, no problem, no problem. And we still have some minutes left. So I was thinking maybe so as part of the vision, it could be that we also need to make a few choices here and there, right? For instance, on buy versus build or on giving direction on the I we want to work with all all potential suppliers in the world. Oh, no, no, no. We want to work with selective part of suppliers. I mean, it could be a strategic choice. What kind of strategic choices do you see for us to make? Do you see more strategic choices for us to make?
+
+50:13 Wessels Boer Alied (SB-M): Yeah. I think if if if we see that our performance is not so great. In Digibility, in terms of delivering in time. Yet then then you could also consider maybe going externally, right? So we think our back end is is pretty OK because that's what Accenture says in the past. But but. At the pace in which this market grows is really fast, so we cannot just hang on to this Accenture. Conclusion for let's say two years. That's quite. Others could be ahead of us in that time. And how do we make sure so all our competitors are looking into externals? So and we are, we are yet having. In which extent do we do we really get the complete overview because we are really focusing on our. Right. We are really internally focused. We don't have contracts with them, so we can also not judge their performance. I'm not saying it's better, but we we need to acknowledge that we don't know, right?
+
+51:23 Ommeren Pieter van (SB): Mm.
+
+51:23 Wessels Boer Alied (SB-M): We think that our internal system is the best. But, but that's probably an assumption that needs to regularly be checked and reviewed again.
+
+51:35 Jeroen Haverkorn van Rijsewijk: And you're you mean specifically the deliveries of the digital team or yeah, OK, fine.
+
+51:47 Patrick Motsch: Thank you very much.
+
+51:50 Wessels Boer Alied (SB-M): And they and and people are located far away, right? So that's also. I think we are struggling with how to manage these teams as well because like I know probably most of the people in the central hardware team. I. I hardly know people in the digital team a couple, but, and maybe that's my my fault. But I think that also a lot of them are really far away.
+
+52:20 Ommeren Pieter van (SB): Yeah.
+
+52:21 Jeroen Haverkorn van Rijsewijk: It did geographically, also. Yeah.
+
+52:24 Wessels Boer Alied (SB-M): Yeah. And then also their understanding really of the business, so, so when we had this MLA project, I was discussing with one of them things. What we are doing in the Netherlands and he was in he wanted. So he was really like, yeah, how much energy does it sell? And I said, well, our customers are, is the governments, they they don't care about, they don't have commercial interests. They more have they they want. It to work properly so the uptime for them is important. But if you if you miss out on these fundamental things, then you're not building the system at a display in the right manner. Just to give an example. So he he never heard of AC and what how it's working probably because he's always talking to different people, which is quite remarkable if you think that most assets are currently. Revenues, especially at that time, even even more are in the Netherlands. So he completely missed out on the picture.
+
+53:34 Patrick Motsch: Probably give this cup back to you, Peter Pan.
+
+53:37 Ommeren Pieter van (SB): Yeah, yeah. And I will round off. So as I said, thanks a lot for the spontaneous first round and I get it. It's a bit of improvising, but there will be. There will be a whole program, so there's much more opportunity to to chip in if you want later on. So thanks a lot. So we will do this as as mentioned, this first round of interviews with with director, with a few directors within the unit with it and and procurement and based on all those interviews, we will put together a program for a kick off. This kickoff will be with a selected group. And based on based on that, we will kick off a program where we will involve much more, much more stakeholders. But how exactly is not yet known? Yeah, so basically this is a first round of interviews and then thanks a lot for all the for all the input.
+
+54:27 Wessels Boer Alied (SB-M): Yeah, I hope it helps.
+
+54:29 Patrick Motsch: Thank you, Alex. Evan it.
+
+54:32 Jeroen Haverkorn van Rijsewijk: Yeah, maybe to add 3 words, Peter, is that OK? So it it's in a, it's a, it was an intentional choice to have this round of off the bat conversations also because we are let's say we we want to connect to real things, not just to our concept. Of how things are. So that's very valuable to talk like this to you, alit. And to to Fani and to. Hamrick, and to Anna Marie and to Fabian. And to and to Tobias and then the kickoff select group that we now have is is Peter Fabian Jetska from father for it and Tobias from procurement. So just to also demystify who's that select group? Yeah, cool.
+
+55:22 Ommeren Pieter van (SB): All right.
+
+55:24 Wessels Boer Alied (SB-M): Yeah, I'm, I'm thinking. I I really didn't prepare maybe for this session sufficiently, but let me rethink it now that we talked. OK, so. OK.
+
+55:37 Jeroen Haverkorn van Rijsewijk: We're not going anywhere, and if you want to have another, if you want to have, for example, another 30 minutes with one of us or something, that's that's perfectly possible. And and like we said, don't stress about it because this is actually intentional. But yeah, by design. And we are iterating this this this. It's an iterative Co creative approach, so very, very great. If if other things come to mind please please share. To me, this was already very helpful. Yeah, we'll see.
+
+56:08 Wessels Boer Alied (SB-M): OK.
+
+56:09 Patrick Motsch: Me too.
+
+56:11 Ommeren Pieter van (SB): Thanks a lot and have a nice day all.
+
+56:13 Wessels Boer Alied (SB-M): You too.
+
+56:14 Patrick Motsch: Have a nice day all.
\ No newline at end of file
diff --git a/mandates/vattenfall/112 Interview Alied - Sales and Operations/03 notes.txt b/mandates/vattenfall/112 Interview Alied - Sales and Operations/03 notes.txt
new file mode 100644
index 0000000..84e4ea5
--- /dev/null
+++ b/mandates/vattenfall/112 Interview Alied - Sales and Operations/03 notes.txt
@@ -0,0 +1,80 @@
+STAKEHOLDER INTERVIEW ALIED
+
+Date: 1 Sep 2025
+Attendees: Alied, Pieter, Patrick, Jeroen
+
+Agenda (60”):
+Framing & introductions (10” max.)
+Interview
+Next steps & wrap-up (5”)
+
+Potential AI use cases highlighted in pink.
+
+Notes:
+…
+
+2. Collaboration with DSH
+How satisfied are you currently with services and products provided by DSH?
+HW:, firmware, issues with it: Specialist in central team → to approach them
+Digital: Not aware of sprints, teams, structures → we depend on the systems to work, we have contact for issue to fix
+HW: I do not know, cooperation good, communication can be improved → not fully understanding each other
+Digital: A lot of things not delivered in time = serious issue → we are fast growing → more people using charge cards → automation not yet done
+Where and how can the collaboration between your team and DSH be elevated to a next level?
+Know structures & positions & cooperation model → overview & sync meetings per level
+Also issues regarding backoffice/frontoffice to arrange better → agreement and alignment of workflow, who does what to raise efficiency
+Asset mgmt team in NL working well, highest upsell; depend of central team, but also able to solve problems themselves
+I see progress in reducing blackbox by transparency
+
+3. Tech vision & framework
+This initiative aims to develop, implement and maintain the tech vision for BU E-mobility. How would you define a tech vision?
+Needs to be clear, what is our strategy and approach. Choices to be clear
+To be flexible, or to be able to manage everything perfectly, or to listen to local demands, or is it defined centrally?
+To understand where landscape is going to with products, customers, using AI. Demand will increase, so also to think about where to invest for sales deals, complexity will raise with teams like NL, which are already on a high level. To identify low and high levels to FOCUS
+We use a framework to cover all relevant aspects. What do you feel is missing if anything?
+SHOW THE STEERING WHEEL – SEE SLIDE 3
+Topics there, that i would need
+What initiatives / trends / things are relevant for us to know from within S&O NL within this context?
+Growing demands from customers → do more on asset management, more reporting, more corrective actions
+Org: We need to run a lot of projects with centralized teams, so experts not to be project managers - not necessary a good idea (profile, roles)
+Competitors are ahead in of automation of asset management (incl getting cues on maintenance), efficiency → to ask them, to learn from them
+Have a prioritization mechanism
+How strongly is digital transformation anchored in NL strategy, and what's your vision for NL’s role in the BU’s digital future?
+We need to have people to challenge current processes and organisation, this plan/check/run to question again and again to enhance
+To reinvent every day work how to do
+CP’s are sending tonnes of info to the BU, and currently team translates this into actions for ops team. Here AI can help A LOT with automizing and prioritizing.
+If we have a bigger asset base, we need more people. But I believe this tech vision initiative in combo with customer experience, we can make a huge difference with AI.
+
+4. NL
+Where do you see the current and future challenges for the BU and for NL (time-to-market; limited financial or human resources; increasing risks; regulatory requirements, etc.)?
+Market is a bit shaky: you want enough spare parts yet at the same time stay competitive (not being in exclusive partnerships)
+We are growing → Is our WoW sustainable when we grow bigger?
+Safety → Are we giving that sufficient attention?
+Where do you see the biggest challenges or success factors for successful tech vision implementation?
+Future → Market will be more and more regulated. Normally you have a reasonable time to implement changes. But a lot of stock is a risk here. (Alied has a background in regulatory affairs)
+How can NL’s data analytics provide insights that drive better business decisions across the organization?
+NL has a lot of operational knowledge from which this initiative can benefit a lot:
+We have a lot of big concessions, operating on a large scale compared to Germany / Sweden.
+We do a lot of AC, where other markets are more experienced in DC
+Based on your experience, how should we engage NL teams to ensure they're aligned with and supporting our business transformation goals?
+I would like an exchange: have someone from the hardware team to be a part of the NL team a day or two. And vice versa.
+What's your current degree of process automation, and which processes would create the most value if digitized?
+ALREADY ANSWERED
+What unique local requirements or opportunities do you see that could support DSH vision?
+Up-time: We are good at it because we are really on top of it. It is in the way we manage our maintenance partners, and how we take action on what we see.
+Sometimes people complain a lot about CP’s that aren’t working, but they take a pragmatic approach, focussing on what has biggest impact / value
+What is the biggest driver for these decisions?
+It is data-driven (from the system) plus experience
+What is good and should not be changed? What should be changed?
+My impression is that teams are really knowledgeable. Roles & resp should become more clear.
+Digital: Deliver on time, transparency and prove to have more understanding of how things look locally
+Hardware: Does not feel far away from me. AND it is also interesting to see the diff that specific people make. Great communicators are typically easy to work with.
+
+5. Conclusion (5”)
+Do you have anything else to add in this context? Anything we missed?
+At a later stage talk to people like Rikus, Bob, Jasper, Justin
+Data quality is an issue. To know more about this talk to Justin (NL Ops, in team of Jasper)
+What does our system landscape look like, also with our direct stakeholders (municipalities, maintenance partners, etc.)? Some cues don’t reach us, because of an elaborate network of legacy systems tied together.
+PIETER: It might need that we may need to make (strategic) choices as part of this initiative. What choices do you see that we may need to make?
+If delivery on time is not up to par, we / you may need to choose to outsource. Rather than following Accenture’s advice from 2 years ago. Our competitors seem to choose to outsource (impression). We don’t know, we think our internal system is the best → specifically when it comes to the delivery of the digital team.
+Example: MLA project I was in conversation with an expert from digital - q was how much energy does it sell. But gov does not have interest in that , as up-time is the only thing they care about. He never heard about AC and how it really works
+
diff --git a/mandates/vattenfall/113 Interview Fanny - Marketing and Commercial Operation/00 Interview Guide - Fanny Lindberg.pptx b/mandates/vattenfall/113 Interview Fanny - Marketing and Commercial Operation/00 Interview Guide - Fanny Lindberg.pptx
new file mode 100644
index 0000000..3b938fb
Binary files /dev/null and b/mandates/vattenfall/113 Interview Fanny - Marketing and Commercial Operation/00 Interview Guide - Fanny Lindberg.pptx differ
diff --git a/mandates/vattenfall/113 Interview Fanny - Marketing and Commercial Operation/01 briefing.txt b/mandates/vattenfall/113 Interview Fanny - Marketing and Commercial Operation/01 briefing.txt
new file mode 100644
index 0000000..e619b2c
--- /dev/null
+++ b/mandates/vattenfall/113 Interview Fanny - Marketing and Commercial Operation/01 briefing.txt
@@ -0,0 +1,28 @@
+0:00: Finally joined the Fa organization right out of university, , as a, as a trainee.
+ 0:10: , she's still, , I think, I think in this case she's, she's been very successful in that sense.
+ 0:17: So she's a very young director.
+ 0:20: , I imagine somewhere early 30s.
+ 0:24: Now reporting or or so reporting to Fabian and I think her department has about 30, so 30 employees.
+ 0:33: , she has a marketing.
+ 0:38: So proposition management unit, , process management unit, and a customer service or central back office I should say, , unit.
+ 0:48: , funny is, , conceptually very strong.
+ 0:54: She used to, , report to, , Peter's predecessor before she she became director of marketing and commercial operations.
+ 1:07: , yeah, I've been, ever since we first started working together, there's been a very special connection between funny and me.
+ 1:15: It just sometimes happens when you have a client where there's really an, , yeah, a deeper, , deeper bond in a way, , and, and, and you kind of make each other greater than you already are, let's say that that that's .
+ 1:32: , yeah, and we're funny that that really, , is the case.
+ 1:37: So, yeah, yeah, I apparently, at least that's what she tells me, bring out the best in her and vice versa, and then we, we've seen each other grow over the last years since the beginning of 2023, .
+ 1:53: And so, , I'm currently also supporting her, so actually running a workshop tomorrow and the day after, , supporting her team to make a step change.
+ 2:06: .
+ 2:07: Yeah, coached her team last year as well, and and the one on one coach journey last year with her as well.
+ 2:14: So there's , yeah, there's a warm, very warm relationship, her.
+ 2:21: , biggest challenge at this moment is process management.
+ 2:24: She has just replaced a, yeah, an underperforming or, yeah, underperforming, , , manager, process management, , and so it's interesting to see what happens now with the, with the, with a new, more experienced.
+ 2:41: Manager coming in, , who started work, well, just, just before the summer vacation or, or during the summer vacation in, in his new role.
+ 2:52: So it's not really getting, getting to grips with with with his new area.
+ 2:59: I am anticipating that there will be lots of opportunity in the process management area when it comes to the collaboration with with digital services and hardware.
+ 3:12: There's a they're kind of in the in in the in this current operating model, Funny's department and Peter's department really need to be like a tandem.
+ 3:27: So basically Fun's department does the prioritization of which and and the yeah the synthesizing and prior prioritization of which business requests to work on and then Peter's department executes, so there will be a lot of talk yet tomorrow on, on the collaboration between marketing commercial or sorry.
+ 3:58: , so MCO.
+ 4:00: , marketing and commercial operations and digital services and hardware.
+ 4:05: Alright, hope that was helpful.
+ 4:08: Let me know.
diff --git a/mandates/vattenfall/113 Interview Fanny - Marketing and Commercial Operation/02 transscript.txt b/mandates/vattenfall/113 Interview Fanny - Marketing and Commercial Operation/02 transscript.txt
new file mode 100644
index 0000000..581c964
--- /dev/null
+++ b/mandates/vattenfall/113 Interview Fanny - Marketing and Commercial Operation/02 transscript.txt
@@ -0,0 +1,295 @@
+00:00 Patrick Motsch: Yes, in in the moment. I'm really often travelling to Geneva and Dublin, but normally I can also take train. Normally it's also good to work. Good train connections. This is the advantage.
+
+00:11 Ommeren Pieter van (SB): Yeah.
+
+00:11 Jeroen Haverkorn van Rijsewijk: Yeah. Well then, then Germany is not. Not quite compatible with that if if your work is in the cloud. It's.
+
+00:24 Patrick Motsch: Because very nice state.
+
+00:28 Jeroen Haverkorn van Rijsewijk: Impossible mobile coverage with.
+
+00:31 Patrick Motsch: Each to each tarnall, huh?
+
+00:32 Ommeren Pieter van (SB): True, true. Every time you lose connection, you can't.
+
+00:35 Patrick Motsch: Yes, this is very bad.
+
+00:36 Jeroen Haverkorn van Rijsewijk: Yeah.
+
+00:38 Patrick Motsch: But you know, I also. I also don't relay any more on these Internets and Vlans. I have my own router here. Small small box and I just take my my wheel and I don't like.
+
+00:48 Jeroen Haverkorn van Rijsewijk: Hey, can I sit here with you? Here's our meeting. Yes, of course.
+
+00:54 Patrick Motsch: She's in physics. Cool.
+
+00:54 Jeroen Haverkorn van Rijsewijk: Which chair would you like? It's OK. Hey, nice to see you. Hey, you are very early on WhatsApp. Yeah, because I woke up at 3:55 to catch my bus. Oh, dear.
+
+01:07 Ommeren Pieter van (SB): 355.
+
+01:07 Jeroen Haverkorn van Rijsewijk: 355 but you know, after having a kid that doesn't slip, it's not so bad.
+
+01:13 Patrick Motsch: OK.
+
+01:15 Ommeren Pieter van (SB): Habits. You have an offset, so you can relax the afternoon, right?
+
+01:18 Jeroen Haverkorn van Rijsewijk: Exactly. That's very easy workshop. We will only do meditation. We will do meditation. Sleep meditation. Now you are. You are actually testing my my setup because normally I have my speaker notes here and then I I read the question from my screen but now actually you are here. So I'm not going to do that.
+
+01:37 Patrick Motsch: She can look behind the scene. This is good, but you know, for the meeting taker will be interesting. Whether he sees that is two different persons now.
+
+01:44 Jeroen Haverkorn van Rijsewijk: Yeah. Yeah, sorry.
+
+01:47 Patrick Motsch: For the meeting taker, it's interesting whether he recognizes that it's two different people on the same side.
+
+01:54 Jeroen Haverkorn van Rijsewijk: Yeah. Yeah. You want me to have another room? Uh, no, no, of course not.
+
+01:59 Patrick Motsch: What's the weather?
+
+02:00 Jeroen Haverkorn van Rijsewijk: No, no. It's always weird with hybrid Linux, right? I mean, for me this works given our relationship. If if it would be like first or second time, I'd be like maybe yeah, let's do a separate room. But for now, for me it's OK. Is it OK for pizza and Patrick for you?
+
+02:19 Ommeren Pieter van (SB): Yeah. For me, it's fine, of course.
+
+02:19 Patrick Motsch: For sure.
+
+02:20 Jeroen Haverkorn van Rijsewijk: OK. So OK, I I will figure out how to run this with Peter.
+
+02:25 Ommeren Pieter van (SB): I will start so, so welcome funny. As the third one in the row of interviews that we're having as part of the the DSH technology vision that we want to Co create with, amongst others, you. So you will not be surprised because, you know DSH quite well. But but if I would summarise it, I see great people, great things happening and also some challenges. And opportunities. So things like. Things that we see coming towards us, like AI, how do we want to deal with it? Acceleration of automation how do we? How do we see that working? What is our view on developments like plug in charge or other things? What should we build? What should we buy? Same questions for hardware, right? So how to review supplier management and how many do we actually want and what is important there? So basically a real vision that should also help. The relationship MCOD is H because of course MCO will come with business demands and process wishes. And it's super important that DSH is only leaning back and say, OK, well, we will build. We will just do what you say, but also come up with an own with no vision and in my, in my, in my belief, they should strengthen the relation and should make it should have an impact on an even better outcome.
+
+03:52 Jeroen Haverkorn van Rijsewijk: I agree.
+
+03:53 Ommeren Pieter van (SB): So so this, this technology efficient initiative is a Co creation. So it's a collaborative effort to design and to accelerate the long term Technology Strategy. H3 Company and you know already, Patrick. Maybe not, but you will meet him soon. We'll support us on this journey because it's quite it's quite some questions, right? So how do we deal with that? And we've started to to not drown ourselves into details from the start, but start basically from the top. So we will. We will have interviews with you, with SNO directors, but also with it. So yeah, and procurement to be us and from there we will start and based on all these sessions, we will design the next phase. But there's already a kick off planned with a small group and and from there we will slowly also involve experts. We can tell you a little bit at the end. So as a start, I think we hand over to yaoon for an intro of. Yeah, Yuun and Patrick.
+
+04:50 Jeroen Haverkorn van Rijsewijk: Yep. Yeah. My name is yarun. I figured out a way how to how to read questions. That third screen. Yeah, yeah, yeah. A third screen indeed. Maybe just to add one thing, so and we also will speak to Fabien in in the same stakeholder interview. And indeed we have a kick off with with Fabio and Peter. To be us and yet so. And Patrick and me to say that. Mid-september and then after that Peter will share a bit later. So this is part of that indeed. Well, you know, I've been transitioning into this H3 concept and we are building it currently. Since the beginning of this year on that journey, we met Patrick and his colleagues. As a as a with super expertise. And and also lots of relevant experience when it comes to real data setup, tech architecture, even building data centers, building teams that run data centers, et cetera. So next to that, he's also just a very warm and a nice guy. I think. Patrick. Yeah. I think with a good sense of humor. And so we we. Yeah, we invited him into this context because he brings lots of value. Patrick, over to you to sorry to already give a bit more information, but you you can describe yourself.
+
+06:31 Patrick Motsch: So I have to give less. This is good. You already said much of this. I'm born in Geneva originally. I come from the French part of Switzerland. I live now near Zurich and I have to learn the other culture and language in our country and I was about 26 years. I was in infrastructure and digitalisation. I started with infrastructure with civil engineering. It's what I what I learned first. Have a little bit an impression of this world. And then I can combine it by designing and implementing data centres at opportunity. That the hyperscalers came to Switzerland and the Dutch company wanted me to raise Switzerland because Netherlands, as usual, was 10 years upfront. Switzerland was nowhere then I had to change the support in the DUT. Ch This was a very interesting time for me, going away from technology more to people and organizations, and from there I come now to this decade I would say AI integration, because I think AI is over. Now we are in the integration part. This is the heavy part. Is it more critical and what I like in this combination is I go away more and more from direct infrastructure and direct, I would say digital things and more to people and teams and organization because there is where's the game played now? This is also my role here. I understood that to support also you and your team and the environment and also to have a view on the environment how to integrate it. And to bring in what I learned in my life.
+
+07:57 Jeroen Haverkorn van Rijsewijk: Cool. Good to meet you. And three wonderful kids. Wonderful wife.
+
+08:02 Patrick Motsch: Means I forgot this time.
+
+08:05 Jeroen Haverkorn van Rijsewijk: OK. But we know that from the last introductions, yeah.
+
+08:10 Patrick Motsch: I have a wonderful wife and three kids, and then I was asked so your kids are not wonderful.
+
+08:15 Jeroen Haverkorn van Rijsewijk: Yeah. Yeah. So, so thanks, Patrick. So that's us and. It's being recorded as you see. It's GDPR compliance. EU server run note taker. Within the confidence of of the four of us, of course you can also get the link to that because too long too, too long. Didn't view view. Yeah, OK. Yeah, it's interesting. Patrick has read AI anyway, so, but we turn this one. It's a confidential setup, obviously, and the ether, but it can extract the insights to integrate it to the kickoff. Over to you, maybe as Joseph brief interview. To meet you as well. And I'm I'm always impressed of people that have many kids and three kids is like, yeah, I think it's quite impressive knowing the work it takes. I'm the mother of two. I just left them this morning together with my husband as well in Stockholm, so he has a full week with the kids himself. We yeah, we live just outside of Stockholm. In a. Interesting new new thing for us both. Work wise, I've been at now for eight years celebrating today. Oh wow. Yeah. Thanks. Yeah, I'm not sure if you should congratulate me or not, but when I started I said maximum two years and now I'm here at 8 years later. But I I really enjoy it. It has been like a family all along and has all the possibilities in life so done many different things within the company as well. Currently I'm part of the management team of the mobility and I'm heading in International Department called Marketing and commercial Operations. We do a little bit of everything. I would say it's quite hard to explain what we're doing, but we are sort of like the international one, one part of the international backbone of the organization where we work on process management. We develop our propositions of what we sell offer to the market. Also market this. So have a marketing department and the back office operations, mainly when it comes to building and processes that do not have direct customer impact. Yeah, I I have a lot of fun with my, with my management team, really happy to. Yeah, to do this work with them. Yeah. And as I said. I'm the lucky 1 to be with your management team and later today and tomorrow morning, so looking forward. To that as well. Yeah. So thanks. And now we have a few questions, but it's it's also kind of a a Co creation. So so feel free to to Co create with us. I will ask a few questions and start to start off with and hand over to Patrick and I will take notes for which I will then be here on my laptop. Hopefully not distracting you. And then Peter again like last time, please chime in as well. Cool. So given that marketing, commercial operations and business services and hardware are kind of the the central tendon as we're of this new operating model, we'd love to also to start off with a collaboration between the two and your view on it. Just to start off with how satisfied are you currently with with services and products delivered by DSH. With with the services themselves, or with the collaboration. With people, yeah. Well, the next question will be where can, where, where and how do you feel we can elevate the collaboration? So I guess we're interested in both. Yeah, I think it's always. I mean with services and products you also need to put it into context of. What are sort of the means to achieve this? And I think when I'm looking at this itch, and especially like the digital side, which I think usually get the most criticism in that sense. Actually operating quite a low budget compared to like market standard. So I think from that perspective, I'm I think it's it's quite good. But I'm also biased because I was part of that too in the past. Yeah, so funny. Let digital team. Yeah, not in its current shape. So it was shared differently then. So for example, XLRM was not a partner. Yeah, yeah. Yeah, I think I think we have been in immobility quite like we have been seen as front runners when it comes to digitalization, because this was the big thing like 10 years ago, right? Digitalization and we're running on a very digital business. But now I think we're not there anymore. So we have not. We're not like frontrunners when it comes to the innovation side and things have become very complicated because we have a lot of legacy to to carry. So quite now I find ourselves. That we have become quite slow and not therefore also not keeping up with. Market. Yeah, with with competition. So where we are now, it's quite easily for a competitor to like start from zero and get here. OK. Yeah, but we carry a lot of legacies. So it's we are quite slow to move now. Yeah. And we say we, who is the we like digital part. Yeah, digital part. Ware I I I cannot say so much. OK. Yep, OK. Where? Where do you feel the your collaboration with DSH can be elevated to the next level? I think. Peter, we have discussed this before, so I hope there is not so many news, but I think ownership and accountability from this side. So I think we started off where we had this idea that this itch was more of a supplier into the organization in the new capacity of this of the work really work. But I think to be a supplier, it's not to just learn back and like, OK, you tell me what to do. Like you said, it's also about like. Taking ownership and being accountable and like proposing new things as you would be if you were a supplier. So supplier is not something that is like you're just. Like, yeah, subject a subject as a player also needs to be like an active active part of the organization. And I think and there's it's much, it's an opportunity and we discuss it as a lot as. Like Friday at 5 and put it that I said that. For example, we have one like innovation that we are wanting to launch now and then like one day before it was supposed to be developed. It says like it's not developed at all. So I think these types of things, then it doesn't feel like there is like an accountability and an ownership, but more as a passive. Yeah. And I think that goes. Uh. So I agree. Like all people are really, really good. But like doing it together and making this like This Is Us like putting putting on the map in that sense. Thanks. All right. Thanks. Yeah, going to the tech vision and the framework that we have in mind. I mean, as Peter shared this, this, we aim to deliver Co create and deliver and and and implement technology for the BU. How would you define that? As a concept. And we fully respect that we haven't sent these questions up front, which actually next next time we will do, but you're still. A thick vision. How I would define it. So what I would want to have like out of a technician. Is, I think. What are like the emerging technologies and how can we benefit from them? OK, so I have a background in or in and then it was a lot like cool technologies but not so like business anchored and I think that is where it gets interesting. And then understand how can you translate this technologies into business opportunities and what do we do? So how do we activate that? Mm-hmm. Yeah. OK.
+
+17:28 Ommeren Pieter van (SB): Really good. Really good. Comments are funny.
+
+17:32 Jeroen Haverkorn van Rijsewijk: Yep. Thanks. And we actually we're we're working on this. Let me see where this is. Where's my PowerPoints? There it is. OK. There's my second screen, sorry. See, this is what happens then when you. Cannot hide. Where's my PowerPoint? There. Almost. Sorry, jen's. There. No. There, there. Yeah, so sharing this.
+
+18:25 Patrick Motsch: Can I take over to share?
+
+18:27 Jeroen Haverkorn van Rijsewijk: I've got it. Thanks. Yeah. So. This is what we are now envisioning as a kind of a recall steering wheel in a way leadership at the helm. If you are to drive it. Of course, there is an important part strategy, culture and operating model which I think very much goes also into your points. Great. You have this technology, but how do you actually translate them into concrete offerings and through which channels do you go to market? How do you make them real through engagement and operations and and and the organizational aspects and all of that of course supported by, yeah, a. Compatible data and AI landscape. Very high level, Yep. But when we think about tech vision, these aspects come to mind. For us. Is there anything like obvious missing for you, or which is saying OK this this cannot land in this logic? I think one question that I had going into this meeting was because. We were. We were talking about tech vision, but we can all I mean. Maybe that was like an assumption for me that is not true, but I was also thinking like the visions should to a large extent hold how we can benefit from Li full. So yeah, yeah. And then I think Li, it's so much more than like our products. Yes, yes, our products. I think that's that's a 20% of it or something like this, but it's still much more. It's also how we draw insights and processes. And yeah, like all of this. So I think exactly. So I was just thinking. From that perspective, like how does all of that fit into yeah, to this circle. But I'm I'm sure. Well, I mean our at least on speak for Patrick, we don't have a telepathic connection yet, Patrick, but I'm sure that will grow within the next few weeks, but. Maybe I'll start and then Patrick you you you chime in. I would say that this everywhere. That's one of the reasons why data Nii is kind of the forms the. This is on the outer ring because it is all in this bath of data and AI. And when? When you think kind of freely. It is very interesting what kind of organization comes out to fully unlock the potential of what we're about to see, right? And I think. That is definitely. How to formulate it? For me that is not outside. The scope OK. It's a bit. Also, it's not not per SE within. I mean it depends for me, but Peter Patrick let me know. How we fare now, what's needed also with the with the kickoff and and and then how we define phase one. Because if we go too far, too fast, yeah, then we. We get disconnected also from what's, yeah, needed. So I think this is my like the. Yeah, it makes sense so. When I look at this picture. What comes into my mind are like two things. So one is exactly what you said. So not making it like, of course it's a vision. So it will be very big in one way, but also to make it like tangible. So what does it mean? I think sometimes, just like, oh, nice slides or like the copilot trainings like. So nice. Everything would be perfect, but then it's like it doesn't work out, yeah. And so this was one and the other one was like what you described. Now it's more about how can these technologies. Unlock new. Ways of working or organizing or engaging or go to market. So it's more like that. I would like to say this errors like pointing inwards just OK very visually. Yeah, yeah. Interesting. So instead of arrows going outwards, you said data and I arrows going inwards. Yeah. So maybe. Yeah, interesting.
+
+22:54 Patrick Motsch: Funny, raising an important point in my brain just looking at the picture and what you said we have on the top on the bottom right, we have AI combined with data. I know where it come from because without data it's not fun to use AI, but what you just said triggers me. AI is the area. It's triggering everything. It's just disruptive. It's not only data and AI.
+
+23:19 Jeroen Haverkorn van Rijsewijk: Hmm.
+
+23:19 Patrick Motsch: AI is also to structure to strategy, to culture, to operations.
+
+23:24 Jeroen Haverkorn van Rijsewijk: Return.
+
+23:24 Patrick Motsch: It's everywhere, but when I look at this picture and what you said, I fully agree and I see not not not to make it too broad. Perhaps we should think about Sharon. Is it really on the bottom right? Because we say the first step is that we have data enabled AI to work with this. Or perhaps really to rethink how to position this AI thing being disruptive. This comes to my to my brain. As you just mentioned, this funny.
+
+23:51 Jeroen Haverkorn van Rijsewijk: Mm-hmm. Mm.
+
+23:54 Patrick Motsch: Good point.
+
+23:56 Jeroen Haverkorn van Rijsewijk: Yeah, I think. The the reason why we didn't make it more prominent is because it it's attracting so much attention now that and and this is a tech vision, it's broader than AI. And so to make it more prominent maybe. Sets up the trap of thinking that actually it's it's it's all about AI which which it's not. It's also about hardware and about well, but anyway, very good conversation.
+
+24:26 Ommeren Pieter van (SB): Yeah. Maybe one more comment. Funny on for instance. So it is neat broader than AI. So it it should also give DSHS an identity. There's also the aim of the program and I think you just mentioned a very important point at the beginning, for instance around, hey, if we would act as a supplier, we can also be more active, right?
+
+24:45 Jeroen Haverkorn van Rijsewijk: OK.
+
+24:45 Ommeren Pieter van (SB): We can be proactive. We should know about the emerging technologies and also what we we believe we need to do with it. What role we want to play in it? I think it's interesting if you trigger the discussions on the business plan today with DSH. Some of the product owners just lean back and say we're waiting for MCO. It's not up to me to say something. Yeah, that's totally wrong. So if we don't change that, we will never, we can never be the proactive, the proactive partner.
+
+25:12 Jeroen Haverkorn van Rijsewijk: Yeah. And of course I also said my role in there because it's also like what do we give? And maybe we needed to make like a first, like a big switch in One Direction to then fine tune back into something more reasonable, which is also, I mean we we live and learn, but we also need to act based on this learnings. Yeah, OK, cool.
+
+25:32 Patrick Motsch: What?
+
+25:34 Jeroen Haverkorn van Rijsewijk: Think so? Very fruitful conversation. Thanks. And yeah, we're iterating this model, but very good addition. Very insightful for me at least, and I think also for the chance great. We also want to be ready on time, so I'm going to, given our lunch workshop. On the back of this and also in general going to next question. Yeah. What initiatives and? Trends and things are relevant for us to know. From within MCO in this context. Yeah, I think. I think Billy might. So from an operational point of view, we I think we did a nice work last week on like the notes that are OK from like a process point of view. So I think there's a is there is a documented. Yeah. OK, cool. OK, great. So Peter, you could share that with us. That would be good. Thanks. Cool. But I think when it comes to Li, I think it's also like. How can we solve problems that our customers have or that we have ourselves is here and then it comes down to that. This is the data that we have. So many of like the of course customer interactions that we have, but also like when stations are not working. But then I think like the main problem that we have now it's about that we don't have usage on our stations that is sufficiently high and I think we. Discussed it before you and I on like how can we get more insights and act on the insights and when we were at that point in time like? We don't even have the data structured. Yeah, but now where work during the summer, so we actually have a nice set of data. Oh, cool. And we also have track like both actions, did we do on both stations and so on, OK. And I would love to use that insight. Yeah, to to then first get. Insights from the data that we can act upon. But then yeah, that that also acts itself with pricing recommendation. And so yeah, yeah, yeah. So more like agentic setup for. For. What's it called? Forgetting the verb now for analysing and synthesizing these these data inputs and then formulating ways to or to improve the situation? So this is about boost usage, right? That we're talking about, so competitive. Yeah, it's so competitive. Yeah, yeah, yeah. And what? What do you mean with competitive? Well, we now is that. The risk of. The OR like the the the ratio charging station per vehicle. Is increasing, so less vehicles are being sold and more stations are being deployed, right? Yeah. And I think everyone is also in the new like economics. So it's it's different from 5 or 10 years ago when everything was like booming and possible and no cost of capital. And all of this. So it's also a new financial area in that sense. OK. And what we still then is that? Many flitters are doing. A large range of activities that we are doing ourselves as well to increase usage on their, on their stitches because this this is the one way to get back your investment. So like really dumping prices, OK, and having aggressive companies and also lobbying aggressively for like no regulation? Like Tesla. Like no regulation. So we can like kill all our customers to us and nowhere else and right. Right. Yeah. So the heat is on. OK. Thanks. Maybe let me see. Yeah, last question and then pass it over to Patrick. How strongly is digital transformation anchored in the MCO strategy and what's your vision on for MCO's role in the BU's digital future? Is it that we can play a role in in getting like the here and now and the close future business and market trends and we can operationalize the strategies? I think this is one of the roles that we can take in the organization that we can like operationalize. Yeah, yeah, yeah. Thanks. All right, passing it on to Patrick. Peter, is that OK for you? All right. And I'll take note. Thanks.
+
+30:14 Patrick Motsch: Thank you. So where do you see the current and then the future challenges for the BU and for MCO? So I think about things like time to market, regulatory requirements, environment changing these things.
+
+30:29 Jeroen Haverkorn van Rijsewijk: I think the usage is the main challenge and then. So. So it's like two things. So the first one is that it's also a bit distilled for our management team. I think that so the first one is that we need to expand value wise and I think that we mainly do in terms of usage. Maybe new value pool so we can target as well, but I think mainly usage like here now short term we need to come. Pretty even in two years. This one. Then Excel is what I call the other one which has more than to do with our internal operations. And there has. Yeah. On that where you think, I think we concluded that we do a lot of like manual tasks today that customers can do themselves. And for example, but also that we see that many of the problems we solve for the customers that we need to help customers to solve. Could be. Yeah. Sold at an earlier stage and not passing it around so much, or not even occur because we had the insights and we acted on them before.
+
+31:50 Patrick Motsch: When you look to the future, what could happen? You're feeling what? What of those factors will be more critical in which not?
+
+32:00 Jeroen Haverkorn van Rijsewijk: I think usage is the most critical, so we can lower our cost. Let's say we lower our cost with 50%, but if we still like 80% of our income. Then you know we we don't have a business.
+
+32:17 Patrick Motsch: What is your feeling about regulatory things worldwide about?
+
+32:23 Jeroen Haverkorn van Rijsewijk: Yes, I think.
+
+32:26 Patrick Motsch: I don't want to say more.
+
+32:27 Jeroen Haverkorn van Rijsewijk: Number regulation wise and then we're very. Dependent on the regulations around. Subsidies for electric transportation. I think there's one to one connection on that. Also, when it comes to of course like the the what they call like the tolls. With like impacting cost. Yeah, I don't know. I mean, Microsoft is of course one is our provider of infrastructure. How how will the cost there go for us and also for our hardware? I think we have a mixed sourcing strategy there like including China.
+
+33:24 Patrick Motsch: Can I just jump down on this point? Do you see some some some locks that you have in the future, just addressed Microsoft that you have like A1 vent structure piece? Are there more options? Are there other vendors or or points that you see there? We have a risk that we are dependent on one.
+
+33:48 Jeroen Haverkorn van Rijsewijk: Of course it's a risk, but I mean, they're always risk. It's more like what? What is the sort of risk you accept? And I think until now. Electric infrastructure has been sort of a nice to have. So it has been also from like a society perspective, it has not been like critical infrastructure. We have not, from a society point of view, said that you need to focus these requirements more from like a customer experience point of view. That that decides it.
+
+34:21 Patrick Motsch: What? Fine, it's enough. We we just touch the top three like this and we don't need all the details. It helps us already enough. I would like to jump to the next question how to use customer data and analytics. You said before that there's much data that could be used to improve targeting personalization to make campaigns. How you use it and what you use.
+
+34:50 Jeroen Haverkorn van Rijsewijk: Good question. So we use both our internal sort of. We have a mark, what you call like a researcher. She has access to. Yeah, a lot of data in. So she helps us when we have specific questions. We also use consultancies and that we have, of course. A large amount of data ourselves. Which will also work with capacities such as light, I think often. Agencies that helps us with collecting like data on specific cases.
+
+35:33 Patrick Motsch: What's what's your current degree of process automation? How you would you rate it and which MCO processes would create the most value? If you would digitalise them? If they are not yet digitalised?
+
+35:54 Jeroen Haverkorn van Rijsewijk: Semant. I mean, I think it's all depends on what you compare to. Do you compare to the rest of Oct file?
+
+36:01 Patrick Motsch: I would say thus we do this vision. I would say yes, this will be the benchmark, but you can give 2 answers. It can give compared to the rest of waterfowl and compared to the environment that you face.
+
+36:18 Jeroen Haverkorn van Rijsewijk: I think we're like a million. I would say, yeah, two point in general. So I think there are much like worse and much better as well. I think we're somewhere in between. I think the challenge we have is that we have had so many different processes and then we have a new customer that requires something else and then it comes like a manual process there. So I think we have like this core process. Which is some to some extent. OK, but yeah.
+
+36:47 Patrick Motsch: Forgive me one example where you think where you are better and where you think I have room for improvement. Would it work like this?
+
+36:54 Jeroen Haverkorn van Rijsewijk: Yeah. So I think when we put this charging stations in and out, we have a very solid process for the the urban concessions. And also in the billing process, I think that is also highly automated.
+
+37:07 Patrick Motsch: OK.
+
+37:07 Ommeren Pieter van (SB): Thinking funny, I think. I think our best process is probably the billing and billing sounds then like sending one invoice, but it's mainly like the whole process from all those individual charging sessions that need to be rated invoiced. I think to what's wrong that's quite good.
+
+37:26 Jeroen Haverkorn van Rijsewijk: So we have like two. I think we have two million 2 million charging sessions each month. Or something like this. And all of them needs to be filled, and that is fully automated. And then of course, we have like people that are working on quality assurance and some some steps you still need to oversee and and some. But yeah, I think it's all to worry about the funds quite good because this is what we're sort of used to like having a lot of control that we build.
+
+37:53 Patrick Motsch: Yeah.
+
+37:56 Jeroen Haverkorn van Rijsewijk: But I think where we're not so good is like also having this all distributed assets. It's not in the in sort of the butterfold having so many distributed assets like the centralized and manage because we like multiple is much better like managing parks or like big facilities. And.
+
+38:19 Ommeren Pieter van (SB): Customer interaction is also something where I think we're low. So self-service and the way we interact with customers and if they have a question, I think it's not so automated, right?
+
+38:30 Jeroen Haverkorn van Rijsewijk: Yeah, I think it's also to a lot to a large extent, it's included in our in the in the PowerPoint that you will share. So I think what we said is like self-service. And then donning process. So where we collect the money this is can be improved. To capture more. And we also have data quality issues. So this goes along with data quality issues. That we have bad data quality in. Yeah, to some extent and therefore cannot capture the money. Then we said that there are few like non standard processes like applying for an for an electricity contract in and out each charging station or cluster charging stations. We need to apply for a contract and then when we place it like low power stations in a high amount. Like very many of these electric electricity contract. So I think we said what was it like 300,000? Yours or something like this. Think Kimber. If if we automate that process. Including grid connection. But I think all of this is in that PowerPoint agreement. There were a few more. I don't have a top of mine.
+
+39:50 Patrick Motsch: You address this point of decentralized asset management. When I understood it right. So what is your impression? Is it necessary to have a centralized asset management or would it be better to have a decentralized to have flexibility?
+
+40:04 Jeroen Haverkorn van Rijsewijk: No. So I don't mean it's like organization otherwise I mean more like we are operating 70,000 charge points and they are like distributed along the whole of Sweden, NL and some regions in Germany. And it's and then it's. It's an art to be able to manage technical assets that can break down lose power. You know we lose connection whatever in this like distributed. Also, because I mean, if you go out there and and maintain it, maybe that will the whole. The whole margin that you have on that decision, but if you don't then you will have a bad customer experience. That will then affect. It will not work. Yeah, the margins are thinning. Yeah, yeah, yeah. Largely so. OK, I think to manage distributed assets, it's it's an art that that it's not in the sort of backbone of butterfull.
+
+41:08 Patrick Motsch: What?
+
+41:09 Jeroen Haverkorn van Rijsewijk: And I think all the assets. Have a challenge in this because we are also doing a few years work on building up our like automated processes and interfaces around this topic. I think we're now sort of coming to a place where we are launching. This solution in a first pilot.
+
+41:32 Patrick Motsch: OK.
+
+41:32 Jeroen Haverkorn van Rijsewijk: But it's, yeah, it's it's it's, it's, it's a challenge for us. It also showed in the in. Recent internal audit that we had.
+
+41:43 Patrick Motsch: I got the point. Great. Next question, how do you differentiate our offerings into market and what channels do you use to reach and engage customers throughout their journey SO2 topics? That challenge that we have and how we differentiate.
+
+42:05 Jeroen Haverkorn van Rijsewijk: The women use like the traditional channels like Mirtha Google. LinkedIn and then of course we have some customers that we can directly interact with as well through. Yeah. The ones that have like a subscription to us or so. Then we also interact through our partners. Sometimes it's very lowly utilized, I would say. And then what was the other question?
+
+42:33 Patrick Motsch: The other question was one was the challenge at the Channel Stadium? Sorry. And the other was the differentiation market. What we make better than others?
+
+42:45 Jeroen Haverkorn van Rijsewijk: Umm. I think we do the placement in our urban concession better than others with higher quality. So we actually do what we should do and we don't over promise in this area.
+
+43:04 Patrick Motsch: To be delivered in time.
+
+43:06 Jeroen Haverkorn van Rijsewijk: Yeah, yeah. I think we deliver largely in time on cost, on quality in the, in the tenders on urban.
+
+43:14 Patrick Motsch: Yeah.
+
+43:14 Jeroen Haverkorn van Rijsewijk: To be honest, I think on the other segments we don't do so much better, but we win a lot on that. We have a reliable brand.
+
+43:27 Patrick Motsch: And about partners, you said something. Is there some kind of obstruction partner management or is it just occasionally that there is some partners? How do I have to understand this?
+
+43:39 Jeroen Haverkorn van Rijsewijk: As a partners, So what I meant in partners is like the ones that we close like charges at their locations. So for example, in Sweden we have like Max Hamburgers, which is like I think it's even bigger than McDonald's in Sweden now. And we place charge. We have a partnership with them. So we place charging stations there and then we are now building up like a partnership with. Them so when we place charging stations that we can do like Co marketing. No, like a free hamburger. For every. You can order hamburgers in the car. Oh, OK. That's cool. That's cool. But I mean for, I mean, yeah. And then it's so like dependent on the, the, the, the location partner has to send like brand vision that you have and then of course with netco, it's not like. Perfect match. Yeah. Yeah, yeah. I think, but I think one thing that we're good are is like in general. No, no, I don't. I don't. I don't want to say it.
+
+44:44 Patrick Motsch: Now it's interesting.
+
+44:46 Jeroen Haverkorn van Rijsewijk: I wanted to sort of like call it, but I think we're. We're not there. So the quality is not a differentiator. I mean, OK and what's our differentiator in the past was that I mean when we started and especially when we when we when in cases where we let other. There are two business models, one where we invest ourselves and 1:00 when we sell. So we are reseller and in the real seller model, I think it's the same like with the urban concessions that we to a large extent actually do what we've said that we should do. So I think we're quite like good from that perspective. So if we have solved something, we make sure to like fulfill that contract.
+
+45:35 Patrick Motsch: It's good.
+
+45:36 Jeroen Haverkorn van Rijsewijk: Just from my understanding. Sorry, Patrick. What's Mirta you said Mirta? Mirta, Google, LinkedIn, mirta, mirahta. OK, sorry Mehta. Thanks. Yeah. Thanks.
+
+45:47 Patrick Motsch: As to make the concern meta meta.
+
+45:48 Jeroen Haverkorn van Rijsewijk: Thank you. Lost in translation? Yeah.
+
+45:51 Patrick Motsch: Then the last technical topic I would say how do you collect and act on customer feedback? And what the would it be possible for you to give us inputs or insights on this question from my side? Because I don't know that the company and all these organizations yet. What can you say on this?
+
+46:10 Jeroen Haverkorn van Rijsewijk: Yeah, until now very scattered. So we have like sit back there and there and there and then everyone is like running around like this is happening, but we are now. I'm seeing this picture now in front of me. People running through the building here. Yeah, I haven't yet met them, but I trust it's a bit like this in my it's what I experienced. So like, I mean just ad hoc. Yeah. And so we have now one person that is. Like has as an assignment in in one of our in one of our teams. Like structure full of this.
+
+46:40 Patrick Motsch: OK.
+
+46:42 Jeroen Haverkorn van Rijsewijk: So we have, like all feedback, at least collected in one place.
+
+46:44 Patrick Motsch: Oh, very good. So this your up to make like a project now to organise this.
+
+46:49 Jeroen Haverkorn van Rijsewijk: Yep.
+
+46:50 Patrick Motsch: Good. And the strategies for digital channels? What kind of digital channels you use? Before you said something, use this partner network. Whatever. But digital channels, what do you use? Do you spell spokos about Meta and others? This is a channel, but what is it? How you use it?
+
+47:11 Jeroen Haverkorn van Rijsewijk: So on LinkedIn, we're running campaigns. So in in different steps like a funnel and then at the end we do like direct messages for the ones that converge. On Google we do Google Maps, so we list all of our stations and we also do targeted.
+
+47:30 Patrick Motsch: So see how you do you do this, you do this.
+
+47:34 Jeroen Haverkorn van Rijsewijk: Yeah, search, search engine optimization. But we also have pill campaigns in selected areas, so.
+
+47:41 Patrick Motsch: OK. So LinkedIn and Google and and what else?
+
+47:43 Jeroen Haverkorn van Rijsewijk: So Geo targeted campaigns we have on Google and then we also said like based on who clicked there, did they actually then visit the charging station and saw on which has yeah we were seeing the 1st results. So this new from this year and we're seeing the 1st results.
+
+47:58 Patrick Motsch: Whoops, cool.
+
+48:01 Jeroen Haverkorn van Rijsewijk: I'm not sure I need to come back there.
+
+48:05 Patrick Motsch: OK. And Microsoft? Do you stare with? Nothing.
+
+48:12 Jeroen Haverkorn van Rijsewijk: No, I don't think so. So this is what we use and then the alication partners and our own website.
+
+48:23 Patrick Motsch: The website, yeah.
+
+48:24 Jeroen Haverkorn van Rijsewijk: At this point in time, we're not using our app. For this, due to technical reasons. The fact the in charge app. Yeah, which is a bummer. And then we also of course like direct communication in like newsletters and but the files newsletter and similar.
+
+48:47 Patrick Motsch: This gives me a picture, right? What soap? Two topics, non-technical what is good. Environment and the domain that you work that should not be changed. And what should we change?
+
+49:07 Jeroen Haverkorn van Rijsewijk: From a picnic or.
+
+49:11 Patrick Motsch: What about we speak now? We have many topics that we were going through. We have narrow issues. What do you say we have to change imperatively and don't touch. It's very good what we do. What would you say if I ask like this about MCU for sure, yeah.
+
+49:27 Jeroen Haverkorn van Rijsewijk: Mm-hmm. And. Yeah, I think we need to work more on like insights market and customer insights to adopt our strategy to to drive people for station. So repeating myself. A bit there business to be changed. Also, when it comes to. To. Process improvements. I put it like this. I think we need to increase. And that is to do process improvements.
+
+50:04 Patrick Motsch: Point.
+
+50:05 Jeroen Haverkorn van Rijsewijk: Technical as well. Not charge. I know I think I'm open to. To changing what is needed to be changed to get where we need. I'm not typing, yeah.
+
+50:36 Patrick Motsch: Very good. Everybody should do it like you do.
+
+50:44 Jeroen Haverkorn van Rijsewijk: Yeah, I'm just trying to get something which is also sort of. Important for this this project. I like that we're running an international business, so we approach it from an international point of view. I believe that we in the last year, I would say have also. Served folks a lot on like serving our owner with the quality that they require. And this really? Sometimes a bit boring, but it's also very clear. And then it's just about doing it. I don't know. I'm at the central setup. Or is that also the international bridge? I don't really. I don't think, but I mean just check it. I don't want to put put the central setup. Per southeast. Something to change? No, this one. That's what you mean, OK?
+
+51:59 Patrick Motsch: OK.
+
+52:00 Jeroen Haverkorn van Rijsewijk: Yeah, it's OK. Business from an international organization, yeah. And I would say also the in general the energy and the the mood and the passion in people is or. You know better. The older I get. Yeah, yeah. The more I feel that you need to have balance in that energy, OK? So having 300 people with puppy energies, it's not helpful. Yeah, 300 puppies. That's a nightmare.
+
+52:30 Patrick Motsch: This is a good point.
+
+52:32 Jeroen Haverkorn van Rijsewijk: OK.
+
+52:34 Patrick Motsch: To manage the energy that it's aligned where we need it, what point?
+
+52:38 Jeroen Haverkorn van Rijsewijk: And aligned I think.
+
+52:41 Patrick Motsch: And your verb was aligned much better. So not only the energy that you put to the charger, but the energy of the people and organization to align. Excellent point.
+
+52:51 Jeroen Haverkorn van Rijsewijk: Yeah. And also I think and then this puppy energy of course is like amazing to be around. And everyone says that everything is possible. Everything everyone loves. Puppies loves puppies. Yeah. And then. But then after six months, everyone is frustrated because you didn't go anywhere. Yeah, you were. Just and screaming and barking like. Yeah. And So what? I come to appreciate more and more. Is this a bit more senior? Homeless experience, because now we're we're not in the startup phase. Yeah, sure. We're not in the skill upfront. We're running in a consolidation phase. Yeah, and to to consolidate. There are other. Other qualities I think that are needed. OK, very good.
+
+53:32 Patrick Motsch: Or the rules of the market and all the qualities required. Yeah, very good point. Excellent. We just jumped to the last question. We are already in what was not said. Do we have anything else you want to tell us? We may can add this tech vision. We think about our own. What do we want to give us in addition that we did not ask?
+
+53:53 Jeroen Haverkorn van Rijsewijk: But I think what I said so so. I appreciate. Strategies or Rd. maps or visions that are tangible so you know like I got I once did this training and then they said like based on this insights what would be your first physical step? And I really, I really like that. So this is something that I usually take. So so now I go out from here. What will I do? Yeah. Like what would be my first physical step?
+
+54:25 Patrick Motsch: Excellent.
+
+54:27 Jeroen Haverkorn van Rijsewijk: To transform, yeah.
+
+54:29 Patrick Motsch: What? So before you go out, I hand over now to you, Peter, that you tell us all of us what to do when we leave the room. Next steps.
+
+54:38 Ommeren Pieter van (SB): Very interesting interview things. Funny also, because it's of course a lot from the hip, right? You need to react immediately and. Yeah, very, very impressed. Also, by the answers it's it's it's for me very interesting to to look into all those interviews. Everybody has a bit of a different style, which is, which is so interesting. But I also learned something, so I love it. And yeah, so so we take all those interviews. To also get a clear understanding of the current state, the challenges, and to define the next steps, and in two weeks from now, yeah, it's two weeks we have this. We have the kickoff session with the core team. And we also define the next steps, so we will for sure keep you posted on this journey on this interesting journey to to create this vision. And yeah, thanks for now for the input.
+
+55:31 Jeroen Haverkorn van Rijsewijk: Thanks. Looking forward to the next steps and let me know if.
+
+55:34 Ommeren Pieter van (SB): And I will share the the process overview with with you, you and Patrick.
+
+55:37 Jeroen Haverkorn van Rijsewijk: Wonderful. Thank you. Have any questions?
+
+55:39 Patrick Motsch: Perfect.
+
+55:40 Jeroen Haverkorn van Rijsewijk: Just reach out. I will do that. I'll do it like this. All right.
+
+55:45 Ommeren Pieter van (SB): Yes. Bye bye bye.
\ No newline at end of file
diff --git a/mandates/vattenfall/113 Interview Fanny - Marketing and Commercial Operation/03 notes.txt b/mandates/vattenfall/113 Interview Fanny - Marketing and Commercial Operation/03 notes.txt
new file mode 100644
index 0000000..3d545e7
--- /dev/null
+++ b/mandates/vattenfall/113 Interview Fanny - Marketing and Commercial Operation/03 notes.txt
@@ -0,0 +1,89 @@
+STAKEHOLDER INTERVIEW FANNY
+
+Date: 1 Sep 2025
+Attendees: Fanny, Pieter, Patrick, Jeroen
+
+Agenda (60”):
+Framing & introductions (10” max.)
+Interview
+Next staps & wrap-up (5”)
+
+Notes:
+…
+
+
+
+Collaboration with DSH
+How satisfied are you currently with services and products provided by DSH?
+Services: Digital services criticised - low budget for what it needs. (led the digital team before)
+We were front runners 10 y ago, but now not there anymore in these days. A lot of legacy to carry. We became slow and get problems to keep our role in the market
+
+
+Where and how can the collaboration between your team and DSH be elevated to a next level?
+Collaboration: Ownership & capability - supplier is not just to lay back. Also to take LEADERSHIP, to define a subject - to play an active role. Here is a big opportunity - (in discussion). E.g. late status information about a product not ready
+People are all good, but GLUEING together is the topic
+
+
+3. Tech vision & framework
+This initiative aims to develop, implement and maintain the tech vision for BU E-mobility. How would you define a tech vision?
+I want to have out of a tech vision:
+A picture of enlarging tech, and how i can contribute
+How to implement tech, and WHAT to do, so how to ACT - -> To break it down, not just high level!
+We use a framework to cover all relevant aspects. What do you feel is missing if anything? SHOW THE STEERING WHEEL – SEE SLIDE 3
+We speak about a tech vision → but also vision how to manage AI. It is so much more than our products. Products only 20% - it touches everything!
+[CHALLENGE ACCEPTED]: Not AI on the bottom of the chart…. It is “everywhere”
+Make it to touch the base
+How can this technology enable us
+What initiatives / trends / things are relevant for us to know from within MCO within this context?
+Ops: Process documentation → TASK: Pieter to share
+AI: To use how to solve problems easier
+We have no usage on our journey, data not structured; to use data and workflows
+Current issue: Less vehicles sold, more stations built… this effect is critical → dumping prices, aggressive campaigns → vicious circle
+
+
+How strongly is digital transformation anchored in MCO strategy, and what's your vision for MCO’s role in the BU’s digital future?
+Operation lifecycl.
+
+
+MCO
+Where do you see the current and future challenges for the BU and for MCO (time-to-market; limited financial or human resources; increasing risks; regulatory requirements, etc.)?
+Usage is the main challenge
+EXPAND: First we need to expand value-wise → mainly usage, and later expand value pools
+EXCEL: More to do with internal operations (Pieter has the list). We concluded that we do a lot of manual tasks to day that customers can do themselves, and we need to support customers in that, also more preventative.
+Where do you see the biggest challenges or success factors for successful tech vision implementation?
+Usage is and will continue to be most critical
+We can reduce cost, but if we don’t generate income we don’t have a business
+Regulatory: We depend on subsidies for EV driving. Also, infrastructure costs (hardware, software) seem to be increasing
+In places, we may be running the risk of being too dependent on too few suppliers. EV infrastructure is now a nice-to-have
+How do you use customer data and analytics to improve targeting, personalization, and campaign effectiveness?
+We use both internal research expertise (from Ivo’s team) and consultancy. Next to that we have a large amount of data ourselves
+What's your current degree of process automation, and which MCO processes would create the most value if digitized?
+Compared to Vattenfall and the current state industry / in general: We are “somewhere in between”. Our core process seems to be ok.
+Example: Placing CP’s in the context of concessions, billing is automated (charge sessions rated and invoiced). 2 million sessions/month are all invoiced in a fully automated way
+Where we are not so good: We have many distributed assets. How to manage all these in an efficient centralised way
+Can be improved: Degree of self-service, dunning process, bad data quality leads to not being able to capture the money, contract management for CP’s (savings opportunity of 300K)
+Is it better to have centralized asset management?
+We are operating 70K CP’s in NL, Sweden and Germany. It is an art to be able to manage tech assets in a distributed way. It is not in the DNA of Vattenfall. At the same time margins are thinning
+How do you differentiate our offerings in the market, and what channels do you use to reach and engage customers throughout their journey?
+We mainly use traditional channels: Meta, Google, LinkedIn. Sometimes through our partners (like Max Hamburgers, Netto - with Netto it is not so much a match ito branding), less so
+Differentiation:
+We do the placement in urban concessions better than others, we do what we say and don’t overpromise. We largely deliver on time and within budget
+In other segments, we don’t do so much but leverage our trusted Vattenfall brand
+Quality is not (yet/anymore) a differentiating factor
+How do you collect and act on customer feedback, and would it be possible for you to give us inputs on your strategies for digital channels?
+Until now this is very scattered. We now have 1 person who is collecting who is doing what where
+Digital channels: On LinkedIn we run campaigns. On Google we do Google maps (listing charging stations), including selected paid geo-targeted campaigns. Meta - not sure. Microsoft - nothing currently.
+Not using our InCharge app due to technical reasons
+Direct comms: InCharge newsletters, Vattenfall’s newsletter
+What is good and should not be changed? What should be changed?
+Change:
+Adopt strategies to drive people to use our stations
+Easiness with which we do process improvements. Technical as well
+Aligned energy. Not only “puppy energy”, but balanced with senior grounded energy that allows us to consolidate. We are in a diff market state now, we are not a startup anymore
+Not change:
+International approach - Central setup
+Serving our owner with the quality that they require (sometimes boring, but also very clear)
+
+5. Conclusion (5”)
+Do you have anything else to add in this context? Anything we missed?
+I appreciate strategies, visions, roadmaps that are tangible → WHAT WILL WE ACTUALLY DO
diff --git a/mandates/vattenfall/114 Interview Fabian - Head E-Mobility/1 questions.docx b/mandates/vattenfall/114 Interview Fabian - Head E-Mobility/1 questions.docx
new file mode 100644
index 0000000..4723a80
Binary files /dev/null and b/mandates/vattenfall/114 Interview Fabian - Head E-Mobility/1 questions.docx differ
diff --git a/mandates/vattenfall/115 Interview Jetske - Head IT/1 questions.docx b/mandates/vattenfall/115 Interview Jetske - Head IT/1 questions.docx
new file mode 100644
index 0000000..c5805aa
Binary files /dev/null and b/mandates/vattenfall/115 Interview Jetske - Head IT/1 questions.docx differ
diff --git a/offerten/_src/VorlageOfferte.docx b/offerten/_src/VorlageOfferte.docx
new file mode 100644
index 0000000..94146b5
Binary files /dev/null and b/offerten/_src/VorlageOfferte.docx differ
diff --git a/offerten/_src/logo.png b/offerten/_src/logo.png
new file mode 100644
index 0000000..40394e1
Binary files /dev/null and b/offerten/_src/logo.png differ
diff --git a/offerten/_src/numbering.js b/offerten/_src/numbering.js
new file mode 100644
index 0000000..a689105
--- /dev/null
+++ b/offerten/_src/numbering.js
@@ -0,0 +1,25 @@
+// Automatische Kapitel-Nummerierung
+document.addEventListener('DOMContentLoaded', function() {
+ let chapterCounter = 0;
+ let sectionCounter = 0;
+ let subsectionCounter = 0;
+
+ // Alle Überschriften finden und nummerieren
+ const headings = document.querySelectorAll('.heading-level-1, .heading-level-2, .heading-level-3');
+
+ headings.forEach(heading => {
+ if (heading.classList.contains('heading-level-1')) {
+ chapterCounter++;
+ sectionCounter = 0;
+ subsectionCounter = 0;
+ heading.innerHTML = chapterCounter + ' ' + heading.innerHTML;
+ } else if (heading.classList.contains('heading-level-2')) {
+ sectionCounter++;
+ subsectionCounter = 0;
+ heading.innerHTML = chapterCounter + '.' + sectionCounter + ' ' + heading.innerHTML;
+ } else if (heading.classList.contains('heading-level-3')) {
+ subsectionCounter++;
+ heading.innerHTML = chapterCounter + '.' + sectionCounter + '.' + subsectionCounter + ' ' + heading.innerHTML;
+ }
+ });
+});
diff --git a/offerten/_src/page-counter.js b/offerten/_src/page-counter.js
new file mode 100644
index 0000000..5c85a46
--- /dev/null
+++ b/offerten/_src/page-counter.js
@@ -0,0 +1,93 @@
+/**
+ * Page Counter for Footer Updates
+ * Sets CSS variables for accurate page counting in footers
+ */
+
+class PageCounter {
+ constructor() {
+ this.totalPages = 16; // Default fallback
+ }
+
+ /**
+ * Initialize the page counter
+ */
+ async init() {
+ // Wait for TOC generator to be ready
+ if (window.tocGenerator) {
+ // Get total pages from TOC generator
+ this.totalPages = window.tocGenerator.getTotalPages();
+ } else {
+ // Try to load from JSON file directly
+ await this.loadPageNumbers();
+ }
+
+ // Set CSS variable for footers
+ this.updateCSSVariables();
+
+ console.log(`✅ Page counter initialized: ${this.totalPages} total pages`);
+ }
+
+ /**
+ * Load page numbers from JSON file
+ */
+ async loadPageNumbers() {
+ try {
+ const response = await fetch('../page_numbers.json');
+ if (response.ok) {
+ const pageNumbers = await response.json();
+ this.totalPages = Math.max(...Object.values(pageNumbers));
+ console.log(`📄 Loaded total pages: ${this.totalPages}`);
+ }
+ } catch (error) {
+ console.warn('⚠️ Could not load page numbers, using default:', error);
+ }
+ }
+
+ /**
+ * Update CSS variables for footer page counting
+ */
+ updateCSSVariables() {
+ console.log(`🔧 Setting CSS variable --total-pages to ${this.totalPages}`);
+
+ // Set CSS custom property for total pages
+ document.documentElement.style.setProperty('--total-pages', this.totalPages);
+
+ // Also update any existing footer elements
+ const footers = document.querySelectorAll('.page-footer');
+ footers.forEach(footer => {
+ const pageNumberElement = footer.querySelector('.footer-page-number');
+ if (pageNumberElement) {
+ pageNumberElement.textContent = `${this.totalPages}`;
+ }
+ });
+
+ console.log('✅ CSS variables updated');
+ }
+
+ /**
+ * Get total page count
+ */
+ getTotalPages() {
+ return this.totalPages;
+ }
+
+ /**
+ * Refresh page count
+ */
+ async refresh() {
+ await this.loadPageNumbers();
+ this.updateCSSVariables();
+ }
+}
+
+// Initialize when DOM is loaded
+document.addEventListener('DOMContentLoaded', function() {
+ console.log('🚀 Page Counter: DOM loaded, waiting for TOC generator...');
+
+ // Wait a bit for TOC generator to initialize
+ setTimeout(async () => {
+ console.log('🔄 Page Counter: Starting initialization...');
+ window.pageCounter = new PageCounter();
+ await window.pageCounter.init();
+ }, 500);
+});
diff --git a/offerten/_src/styles.css b/offerten/_src/styles.css
new file mode 100644
index 0000000..2f650aa
--- /dev/null
+++ b/offerten/_src/styles.css
@@ -0,0 +1,890 @@
+* {
+ margin: 0;
+ padding: 0;
+ box-sizing: border-box;
+}
+
+/* Verbesserte CSS-Counter für automatische Nummerierung */
+body {
+ font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
+ background: white;
+ color: #333;
+ line-height: 1.6;
+ margin: 0;
+ padding: 0;
+ counter-reset: page-counter chapter-counter section-counter subsection-counter;
+}
+
+/* Print page layout rules */
+@page {
+ size: A4;
+ margin: 25mm 20mm 30mm 20mm; /* Top, Right, Bottom, Left margins */
+}
+
+.page {
+ width: 210mm;
+ min-height: 297mm;
+ margin: 0 auto;
+ background: white;
+ position: relative;
+ box-shadow: 0 0 10px rgba(0,0,0,0.1);
+ margin-bottom: 20px;
+ overflow: visible;
+}
+
+/* First page: No footer, force page break */
+.page:first-child {
+ page-break-after: always;
+}
+
+/* Content page: Let content flow naturally across printed pages */
+.page:not(:first-child) {
+ page-break-after: auto;
+}
+
+/* Page 1: No header, no footer - completely clean */
+.page:first-child::before {
+ display: none;
+}
+
+.page:first-child .page-footer {
+ display: none;
+}
+
+/* Ensure footer is visible on all content pages (pages 2+) */
+.page:not(:first-child) .page-footer {
+ display: block;
+}
+
+/* Logo section for first page */
+.logo-section {
+ text-align: right;
+ padding: 20px 0;
+ margin-bottom: 20px;
+}
+
+.logo {
+ max-width: 200px;
+ height: auto;
+}
+
+/* Contact information styling */
+.contact-info {
+ margin-top: 60px;
+}
+
+.contact-bars {
+ display: flex;
+ margin-bottom: 20px;
+}
+
+.grey-bar {
+ width: 80px;
+ height: 4px;
+ background-color: #808080;
+}
+
+.golden-bar {
+ flex: 1;
+ height: 4px;
+ background-color: #D4AF37;
+}
+
+.contact-grid {
+ display: flex;
+ justify-content: space-between;
+ font-size: 14px;
+ color: #808080;
+ line-height: 1.6;
+}
+
+.contact-left p,
+.contact-right p {
+ margin: 0;
+ font-family: Arial, sans-serif;
+}
+
+/* CSS footers for flowing text - appear on every printed page */
+@page {
+ @bottom-center {
+ content: "KI-Lead Management System Energie360° | Seite " counter(page);
+ border-top: 2px solid #D4AF37;
+ padding: 10px 0;
+ font-size: 9px;
+ color: #333;
+ font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
+ font-weight: 400;
+ line-height: 1.4;
+ }
+}
+
+/* First page: No footer */
+@page :first {
+ @bottom-center {
+ content: "";
+ }
+}
+
+/* Remove all fixed positioning and green styling */
+.page-header {
+ display: none;
+}
+
+/* Adjust main content to account for fixed header and footer */
+.page .main-content {
+ margin-top: 20px;
+ margin-bottom: 20px;
+}
+
+/* All old footer styles removed - now using CSS @page rules */
+
+/* Page numbering and content now handled by CSS @page rules */
+
+.main-content {
+ padding: 40px 40px 60px 40px;
+ position: relative;
+ overflow: visible;
+}
+
+.title-area {
+ text-align: center;
+ margin-bottom: 60px;
+}
+
+.main-title {
+ font-size: 32px;
+ font-weight: bold;
+ color: #172B46;
+ margin-bottom: 20px;
+}
+
+.subtitle {
+ font-size: 24px;
+ color: #172B46;
+ margin-bottom: 30px;
+}
+
+.separator {
+ width: 33%;
+ height: 2px;
+ background: #B39D14;
+ margin: 0 auto 40px auto;
+}
+
+.document-details {
+ text-align: left;
+ margin-bottom: 60px;
+}
+
+.document-details p {
+ margin-bottom: 10px;
+ font-size: 16px;
+ color: #333;
+}
+
+/* Inhaltsverzeichnis Styling */
+.toc-title {
+ font-size: 28px;
+ font-weight: bold;
+ color: #172B46;
+ margin-bottom: 40px;
+ text-align: center;
+}
+
+.toc-entry {
+ margin-bottom: 8px;
+ display: flex;
+ justify-content: space-between;
+ align-items: baseline;
+ padding: 4px 0;
+ transition: background-color 0.2s ease;
+ border-radius: 4px;
+ width: 100%;
+}
+
+.toc-entry:hover {
+ background-color: #f8f9fa;
+ padding-left: 10px;
+ padding-right: 10px;
+}
+
+.toc-entry .toc-text {
+ flex: 1;
+ color: #333;
+ text-decoration: none;
+ min-width: 0; /* Allow text to shrink if needed */
+ overflow: hidden;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+ margin-right: 10px; /* Space between text and page number */
+}
+
+.toc-entry .dots {
+ flex: 0 0 20px;
+ margin: 0 10px;
+ /* Fixed width for spacing, giving more room for text */
+}
+
+/* Alternative: Remove dotted line entirely */
+.toc-entry.no-dots .dots {
+ display: none;
+}
+
+.toc-entry .toc-page {
+ font-weight: bold;
+ color: #B39D14;
+ min-width: 30px;
+ text-align: right;
+ flex-shrink: 0; /* Prevent page number from shrinking */
+}
+
+.toc-level-1 {
+ font-weight: bold;
+ font-size: 18px;
+ color: #172B46;
+ border-left: 3px solid #B39D14;
+ padding-left: 15px;
+}
+
+.toc-level-2 {
+ margin-left: 20px;
+ font-size: 16px;
+ color: #333;
+ border-left: 2px solid #dee2e6;
+ padding-left: 15px;
+}
+
+.toc-level-3 {
+ margin-left: 40px;
+ font-size: 14px;
+ color: #666;
+ border-left: 1px solid #f1f3f4;
+ padding-left: 15px;
+}
+
+/* Content Page Styling with automatic numbering */
+.content-heading {
+ font-weight: bold;
+ color: #172B46;
+ margin-bottom: 20px;
+}
+
+/* Kapitel-Überschriften Styling */
+.heading-level-1 {
+ font-size: 20px;
+ margin-top: 40px;
+ margin-bottom: 25px;
+ page-break-after: avoid;
+}
+
+/* Abschnitts-Überschriften Styling */
+.heading-level-2 {
+ font-size: 18px;
+ margin-top: 30px;
+ margin-bottom: 20px;
+ page-break-after: avoid;
+}
+
+/* Unterabschnitts-Überschriften Styling */
+.heading-level-3 {
+ font-size: 16px;
+ margin-top: 25px;
+ margin-bottom: 15px;
+ page-break-after: avoid;
+}
+
+.content-text {
+ margin-bottom: 20px;
+ font-size: 14px;
+ line-height: 1.6;
+ text-align: justify;
+}
+
+.content-list {
+ margin: 20px 0 20px 20px;
+}
+
+.content-list li {
+ margin-bottom: 10px;
+ font-size: 14px;
+ line-height: 1.5;
+ text-align: justify;
+}
+
+/* Entferne doppelte Listenzeichen - verwende nur HTML-Listen */
+.bullet-list {
+ list-style-type: none;
+}
+
+.bullet-list li {
+ list-style: none;
+ position: relative;
+ padding-left: 1.5em;
+ margin-bottom: 8px;
+ text-align: left !important;
+}
+
+.bullet-list li::before {
+ content: "•";
+ color: #B39D14;
+ font-weight: bold;
+ position: absolute;
+ left: 0;
+ top: 0;
+ width: 1em;
+}
+
+/* Remove conflicting bullet styles from terms-list */
+.terms-list {
+ list-style-type: none;
+}
+
+.terms-list li:before {
+ content: none; /* Remove the bullet */
+}
+
+.numbered-list {
+ list-style-type: none;
+ counter-reset: list-counter;
+}
+
+.numbered-list li {
+ counter-increment: list-counter;
+ position: relative;
+ padding-left: 2em;
+ margin-bottom: 8px;
+ text-align: left;
+}
+
+.numbered-list li::before {
+ content: counter(list-counter) ".";
+ color: #B39D14;
+ font-weight: bold;
+ position: absolute;
+ left: 0;
+ top: 0;
+ width: 1.5em;
+}
+
+/* Phase Cards Styling */
+.phase-section {
+ margin-bottom: 50px;
+ page-break-inside: avoid;
+}
+
+.phase-card {
+ background: #f8f9fa;
+ border: 1px solid #dee2e6;
+ border-radius: 8px;
+ padding: 25px;
+ margin-bottom: 25px;
+ page-break-inside: avoid;
+}
+
+.phase-header {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ margin-bottom: 25px;
+}
+
+.phase-name {
+ font-size: 18px;
+ font-weight: bold;
+ color: #172B46;
+ flex: 1;
+ margin-right: 20px;
+}
+
+.phase-cost {
+ background: white;
+ padding: 15px;
+ border-radius: 6px;
+ border: 1px solid #dee2e6;
+ text-align: center;
+ min-width: 150px;
+ flex-shrink: 0;
+}
+
+.cost-amount {
+ font-size: 20px;
+ font-weight: bold;
+ color: #B39D14;
+ margin-bottom: 5px;
+}
+
+.cost-label {
+ font-size: 12px;
+ color: #666;
+}
+
+.phase-details {
+ background: #e8f5f2;
+ padding: 25px;
+ border-radius: 6px;
+ border-left: 3px solid #B39D14;
+}
+
+.phase-details h5 {
+ color: #172B46;
+ margin-bottom: 20px;
+ font-size: 16px;
+}
+
+.phase-details li {
+ margin-bottom: 10px;
+ color: #333;
+ line-height: 1.6;
+ font-size: 14px;
+ text-align: justify;
+}
+
+/* Total Overview Styling */
+.total-section {
+ margin-top: 50px;
+ margin-bottom: 50px;
+}
+
+.total-grid {
+ display: grid;
+ grid-template-columns: repeat(auto-fit, minmax(350px, 1fr));
+ gap: 25px;
+ margin: 25px 0;
+}
+
+.total-card {
+ background: #f8f9fa;
+ padding: 25px;
+ border-radius: 8px;
+ border-left: 4px solid #B39D14;
+ page-break-inside: avoid;
+}
+
+.total-card h4 {
+ color: #172B46;
+ margin-bottom: 25px;
+ font-size: 18px;
+}
+
+.cost-summary {
+ background: white;
+ padding: 25px;
+ border-radius: 6px;
+ border: 1px solid #dee2e6;
+}
+
+.cost-row {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ padding: 15px 0;
+ border-bottom: 1px solid #f1f3f4;
+}
+
+.cost-row:last-child {
+ border-bottom: none;
+}
+
+.cost-row.total-row {
+ border-top: 2px solid #B39D14;
+ border-bottom: none;
+ font-weight: bold;
+ font-size: 18px;
+ color: #172B46;
+ padding-top: 25px;
+}
+
+/* Info Boxes Styling */
+.info-box {
+ background: #e8f5f2;
+ padding: 25px;
+ border-radius: 6px;
+ border-left: 3px solid #B39D14;
+ margin: 30px 0;
+ page-break-inside: avoid;
+}
+
+.info-box h4 {
+ color: #172B46;
+ margin-bottom: 20px;
+}
+
+.info-box ul {
+ margin: 0;
+ padding-left: 20px;
+}
+
+.info-box li {
+ margin-bottom: 10px;
+ color: #333;
+ line-height: 1.6;
+ font-size: 14px;
+ text-align: justify;
+}
+
+/* Contact Information Styling */
+.contact-section {
+ margin: 40px 0;
+}
+
+.contact-grid {
+ display: grid;
+ grid-template-columns: repeat(auto-fit, minmax(350px, 1fr));
+ gap: 25px;
+ margin: 25px 0;
+}
+
+.contact-card {
+ background: #f8f9fa;
+ padding: 25px;
+ border-radius: 8px;
+ border-left: 4px solid #B39D14;
+ page-break-inside: avoid;
+}
+
+.contact-card h4 {
+ color: #172B46;
+ margin-bottom: 20px;
+ font-size: 16px;
+}
+
+.contact-details {
+ background: white;
+ padding: 20px;
+ border-radius: 6px;
+ border: 1px solid #dee2e6;
+}
+
+.contact-row {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ padding: 10px 0;
+ border-bottom: 1px solid #f1f3f4;
+}
+
+.contact-row:last-child {
+ border-bottom: none;
+}
+
+/* Terms and Conditions Styling */
+.terms-section {
+ margin: 40px 0;
+}
+
+.terms-card {
+ background: #f8f9fa;
+ padding: 25px;
+ border-radius: 8px;
+ border-left: 4px solid #B39D14;
+ margin-bottom: 25px;
+ page-break-inside: avoid;
+}
+
+.terms-card h4 {
+ color: #172B46;
+ margin-bottom: 20px;
+ font-size: 16px;
+}
+
+.terms-list {
+ background: white;
+ padding: 20px;
+ border-radius: 6px;
+ border: 1px solid #dee2e6;
+}
+
+.terms-list li {
+ margin-bottom: 12px;
+ padding-left: 25px;
+ position: relative;
+ line-height: 1.6;
+ text-align: justify;
+}
+
+/* Removed duplicate rule - bullets now handled by bullet-list class */
+
+/* Signature Section Styling */
+.signature-section {
+ margin: 50px 0;
+ page-break-inside: avoid;
+}
+
+.signature-grid {
+ display: grid;
+ grid-template-columns: 1fr 1fr;
+ gap: 50px;
+ margin: 30px 0;
+}
+
+.signature-card {
+ background: #f8f9fa;
+ padding: 30px;
+ border-radius: 8px;
+ border-left: 4px solid #B39D14;
+ min-height: 220px;
+ display: flex;
+ flex-direction: column;
+ justify-content: space-between;
+}
+
+.signature-card h4 {
+ color: #172B46;
+ margin-bottom: 25px;
+ font-size: 18px;
+ text-align: center;
+}
+
+.signature-area {
+ background: white;
+ border: 1px solid #dee2e6;
+ border-radius: 6px;
+ padding: 25px;
+ margin: 20px 0;
+ min-height: 80px;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ color: #999;
+ font-style: italic;
+}
+
+.signature-details {
+ background: white;
+ padding: 20px;
+ border-radius: 6px;
+ border: 1px solid #dee2e6;
+ margin-top: 20px;
+}
+
+.signature-row {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ padding: 10px 0;
+ border-bottom: 1px solid #f1f3f4;
+}
+
+.signature-row:last-child {
+ border-bottom: none;
+}
+
+/* Timeline Styling */
+.timeline {
+ position: relative;
+ padding: 30px 0;
+}
+
+.timeline-item {
+ display: flex;
+ margin-bottom: 40px;
+ position: relative;
+ page-break-inside: avoid;
+}
+
+.timeline-marker {
+ width: 40px;
+ height: 40px;
+ background: #B39D14;
+ color: white;
+ border-radius: 50%;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ font-weight: bold;
+ flex-shrink: 0;
+ margin-right: 25px;
+}
+
+.timeline-content {
+ flex: 1;
+ background: #f8f9fa;
+ padding: 25px;
+ border-radius: 8px;
+}
+
+.timeline-content h4 {
+ color: #172B46;
+ margin-bottom: 20px;
+ font-size: 18px;
+}
+
+/* AI-Human Split Styling */
+.ai-human-split {
+ display: grid;
+ grid-template-columns: 1fr 1fr;
+ gap: 25px;
+ margin-bottom: 25px;
+}
+
+.ai-section, .human-section {
+ background: #f8f9fa;
+ padding: 20px;
+ border-radius: 6px;
+ border-left: 3px solid;
+}
+
+.ai-section {
+ border-left-color: #B39D14;
+}
+
+.human-section {
+ border-left-color: #172B46;
+}
+
+.ai-section h5, .human-section h5 {
+ color: #172B46;
+ margin-bottom: 15px;
+ font-size: 14px;
+}
+
+.ai-section ul, .human-section ul {
+ margin: 0;
+ padding-left: 20px;
+}
+
+.ai-section li, .human-section li {
+ font-size: 13px;
+ margin-bottom: 8px;
+ color: #495057;
+ line-height: 1.5;
+ text-align: justify;
+}
+
+/* Grid Layout for Cards */
+.grid {
+ display: grid;
+ grid-template-columns: repeat(auto-fit, minmax(350px, 1fr));
+ gap: 25px;
+ margin: 25px 0;
+}
+
+.card {
+ background: #f8f9fa;
+ padding: 25px;
+ border-radius: 8px;
+ border-left: 4px solid #B39D14;
+ page-break-inside: avoid;
+}
+
+.card h4 {
+ color: #172B46;
+ margin-bottom: 20px;
+ font-size: 16px;
+}
+
+.card p, .card ul {
+ color: #495057;
+ line-height: 1.6;
+ font-size: 14px;
+}
+
+.card ul {
+ margin-left: 20px;
+ margin-top: 15px;
+}
+
+.card li {
+ margin-bottom: 10px;
+ text-align: justify;
+}
+
+/* Professional Print Styles */
+@media print {
+ .page {
+ page-break-after: always;
+ margin: 0;
+ padding: 20px;
+ }
+
+ body {
+ background: white;
+ }
+
+ .signature-section {
+ page-break-inside: avoid;
+ }
+
+ .phase-card {
+ page-break-inside: avoid;
+ }
+
+ .total-card {
+ page-break-inside: avoid;
+ }
+
+ .info-box {
+ page-break-inside: avoid;
+ }
+
+ .contact-card {
+ page-break-inside: avoid;
+ }
+
+ .terms-card {
+ page-break-inside: avoid;
+ }
+
+ .timeline-item {
+ page-break-inside: avoid;
+ }
+
+ .card {
+ page-break-inside: avoid;
+ }
+
+ /* Ensure proper page breaks */
+ .page:last-child {
+ page-break-after: avoid;
+ }
+
+ /* Better text rendering for print */
+ * {
+ -webkit-print-color-adjust: exact;
+ print-color-adjust: exact;
+ }
+
+ .logo-section {
+ margin-top: 0;
+ }
+
+ /* Ensure footer appears on every printed page */
+ .page-footer {
+ position: fixed;
+ bottom: 20px;
+ left: 20px;
+ right: 20px;
+ background: white;
+ border-top: 2px solid #D4AF37;
+ padding: 10px 0;
+ z-index: 1000;
+ }
+
+ /* First page should not show footer */
+ .page:first-child .page-footer {
+ display: none;
+ }
+}
+
+/* Responsive Design */
+@media (max-width: 768px) {
+ .ai-human-split {
+ grid-template-columns: 1fr;
+ gap: 15px;
+ }
+
+ .grid {
+ grid-template-columns: 1fr;
+ gap: 15px;
+ }
+
+ .timeline-item {
+ flex-direction: column;
+ }
+
+ .timeline-marker {
+ margin-right: 0;
+ margin-bottom: 15px;
+ align-self: flex-start;
+ }
+}
diff --git a/offerten/_src/toc-generator.js b/offerten/_src/toc-generator.js
new file mode 100644
index 0000000..c3de5e4
--- /dev/null
+++ b/offerten/_src/toc-generator.js
@@ -0,0 +1,356 @@
+/**
+ * Automated Table of Contents Generator
+ * Scans document for headings and generates TOC with REAL page numbers from PDF
+ */
+
+class TOCGenerator {
+ constructor() {
+ this.tocContainer = null;
+ this.headings = [];
+ this.pageNumbers = {};
+ this.totalPages = 0;
+ }
+
+ /**
+ * Initialize the TOC generator
+ */
+ async init() {
+ console.log('🚀 TOC Generator initializing...');
+
+ // Find the TOC container
+ this.tocContainer = document.querySelector('.toc-auto');
+ if (!this.tocContainer) {
+ console.error('❌ TOC container not found. Looking for .toc-auto class.');
+ return;
+ }
+
+ console.log('✅ TOC container found:', this.tocContainer);
+
+ // Load real page numbers from PDF analysis
+ await this.loadPageNumbers();
+
+ // Generate TOC
+ this.generateTOC();
+
+ // Add event listener for dynamic updates
+ this.setupDynamicUpdates();
+
+ console.log('✅ TOC Generator initialized successfully');
+ }
+
+ /**
+ * Load real page numbers from the JSON file generated by PDF analysis
+ */
+ async loadPageNumbers() {
+ try {
+ // Try to load page numbers from the JSON file
+ const response = await fetch('../page_numbers.json');
+ if (response.ok) {
+ this.pageNumbers = await response.json();
+ console.log('✅ Loaded real page numbers from PDF analysis');
+
+ // Calculate total pages from the highest page number
+ this.totalPages = Math.max(...Object.values(this.pageNumbers));
+ console.log(`📊 Total pages from PDF analysis: ${this.totalPages}`);
+
+ // Update CSS variable immediately
+ if (this.totalPages) {
+ document.documentElement.style.setProperty('--total-pages', this.totalPages);
+ console.log(`🎨 CSS variable --total-pages set to: ${this.totalPages}`);
+ } else {
+ console.error('❌ Cannot set CSS variable: totalPages is null');
+ }
+ } else {
+ console.error('❌ Page numbers file not found or empty');
+ this.pageNumbers = {};
+ this.totalPages = null; // No hardcoded value!
+ }
+ } catch (error) {
+ console.error('❌ ERROR: Cannot load page numbers from JSON file!');
+ console.error(' This usually means:');
+ console.error(' 1. The HTML file is opened directly (file://) instead of through a web server');
+ console.error(' 2. The page_numbers.json file is missing or corrupted');
+ console.error(' 3. CORS policy is blocking the request');
+ console.error(' Solution: Run the HTML through a local web server or fix the JSON file path');
+ console.error(' Original error:', error);
+
+ // Show error in TOC container instead of hardcoded values
+ this.tocContainer.innerHTML = `
+
+
❌ Fehler beim Laden der Seitennummern
+
Problem: Die Datei page_numbers.json kann nicht geladen werden.
+
Mögliche Ursachen:
+
+
HTML-Datei wird direkt geöffnet (file://) statt über Webserver
+
page_numbers.json fehlt oder ist beschädigt
+
CORS-Richtlinie blockiert den Zugriff
+
+
Lösung: Führen Sie main.py aus, um PDF zu generieren und zu analysieren.
+
+ `;
+
+ this.pageNumbers = {};
+ this.totalPages = null; // No hardcoded value!
+
+ // Still try to generate TOC with estimated numbers
+ console.log('🔄 Attempting to generate TOC with estimated numbers...');
+ this.generateTOC();
+ }
+ }
+
+ /**
+ * Generate the complete TOC
+ */
+ generateTOC() {
+ console.log('🔄 Generating TOC...');
+
+ // Clear existing content
+ this.tocContainer.innerHTML = '
Inhaltsverzeichnis
';
+
+ // Find all headings with specific classes
+ this.headings = [];
+
+ // Try different selectors to find headings
+ const headingSelectors = [
+ 'h1.content-heading.heading-level-1',
+ 'h2.content-heading.heading-level-2',
+ 'h3.content-heading.heading-level-3',
+ 'h1.heading-level-1',
+ 'h2.heading-level-2',
+ 'h3.heading-level-3',
+ 'h1.content-heading',
+ 'h2.content-heading',
+ 'h3.content-heading'
+ ];
+
+ console.log('🔍 Looking for headings with selectors:', headingSelectors);
+
+ let foundAny = false;
+
+ headingSelectors.forEach(selector => {
+ const elements = document.querySelectorAll(selector);
+ console.log(`📋 Found ${elements.length} elements for selector: ${selector}`);
+
+ if (elements.length > 0) {
+ foundAny = true;
+ }
+
+ elements.forEach(element => {
+ // Get the text content WITH the numbering
+ const text = element.textContent.trim();
+ const level = element.classList.contains('heading-level-1') ? 1 :
+ element.classList.contains('heading-level-2') ? 2 : 3;
+
+ console.log(`📝 Heading: "${text}" (Level ${level})`);
+
+ // Only add if we don't already have this text
+ if (!this.headings.some(h => h.text === text)) {
+ this.headings.push({
+ element: element,
+ text: text,
+ level: level,
+ page: this.estimatePageNumber(element)
+ });
+ }
+ });
+ });
+
+ if (!foundAny) {
+ console.log('⚠️ No headings found with any selector. Trying generic h1, h2, h3...');
+ const genericHeadings = document.querySelectorAll('h1, h2, h3');
+ console.log(`📋 Found ${genericHeadings.length} generic headings`);
+
+ genericHeadings.forEach((element, index) => {
+ const text = element.textContent.trim();
+ const level = element.tagName === 'H1' ? 1 : element.tagName === 'H2' ? 2 : 3;
+
+ console.log(`📝 Generic Heading: "${text}" (Level ${level})`);
+
+ this.headings.push({
+ element: element,
+ text: text,
+ level: level,
+ page: 3 + Math.floor(index / 2) // Simple page estimation
+ });
+ });
+ }
+
+ console.log(`📊 Total headings found: ${this.headings.length}`);
+
+ // Sort headings by their position in the document
+ this.headings.sort((a, b) => {
+ const posA = a.element.getBoundingClientRect().top;
+ const posB = b.element.getBoundingClientRect().top;
+ return posA - posB;
+ });
+
+ // Generate TOC entries
+ this.headings.forEach(heading => {
+ const entry = this.createTOCEntry(heading);
+ this.tocContainer.appendChild(entry);
+ });
+
+ // Update total pages based on actual content
+ if (this.headings.length > 0) {
+ const maxPage = Math.max(...this.headings.map(h => h.page));
+ this.totalPages = maxPage;
+ console.log(`📊 Total pages calculated: ${this.totalPages}`);
+
+ // Update CSS variable for footers
+ document.documentElement.style.setProperty('--total-pages', this.totalPages);
+
+ // Update footer text to show total pages
+ this.updateFooterText();
+ }
+
+ console.log('✅ TOC generation complete');
+ }
+
+ /* Removed getRealPageNumber function - using direct estimation instead */
+
+ /**
+ * Estimate page number (fallback method)
+ */
+ estimatePageNumber(element) {
+ try {
+ if (!element) return 3;
+
+ const rect = element.getBoundingClientRect();
+ const scrollTop = window.pageYOffset || document.documentElement.scrollTop;
+ const absoluteTop = rect.top + scrollTop;
+
+ // A4 page height in pixels (assuming 96 DPI)
+ // A4 = 210mm x 297mm, 1 inch = 25.4mm, 1 inch = 96 pixels
+ const pageHeightPixels = (297 * 96) / 25.4; // ~1123 pixels per page
+
+ // Account for margins and spacing - use actual content height
+ const effectivePageHeight = pageHeightPixels - 150; // More realistic margin
+
+ // Calculate page number (start from page 3 since pages 1-2 are title and TOC)
+ let pageNumber = Math.floor(absoluteTop / effectivePageHeight) + 3;
+
+ // Don't clamp - let it go to actual page count
+ console.log(`📄 Element "${element.textContent.trim()}" at position ${absoluteTop}px = page ${pageNumber}`);
+
+ return pageNumber;
+ } catch (error) {
+ console.warn('Error estimating page number:', error);
+ return 3; // Default fallback
+ }
+ }
+
+ /**
+ * Create a TOC entry element
+ */
+ createTOCEntry(heading) {
+ const entry = document.createElement('div');
+ entry.className = `toc-entry toc-level-${heading.level}`;
+
+ // Create the text content
+ const textSpan = document.createElement('span');
+ textSpan.className = 'toc-text';
+ textSpan.textContent = heading.text;
+
+ // Create the dots area (now just spacing)
+ const dotsSpan = document.createElement('span');
+ dotsSpan.className = 'dots';
+
+ // Create the page number
+ const pageSpan = document.createElement('span');
+ pageSpan.className = 'toc-page';
+ pageSpan.textContent = heading.page;
+
+ // Assemble the entry
+ entry.appendChild(textSpan);
+ entry.appendChild(dotsSpan);
+ entry.appendChild(pageSpan);
+
+ // Add click functionality to jump to heading
+ entry.addEventListener('click', () => {
+ heading.element.scrollIntoView({ behavior: 'smooth' });
+ });
+
+ return entry;
+ }
+
+ /**
+ * Setup dynamic updates
+ */
+ setupDynamicUpdates() {
+ // Refresh TOC when window is resized
+ window.addEventListener('resize', () => {
+ setTimeout(() => this.refresh(), 100);
+ });
+
+ // Refresh TOC when content changes
+ const observer = new MutationObserver(() => {
+ this.refresh();
+ });
+
+ // Observe the main content area
+ const mainContent = document.querySelector('.main-content');
+ if (mainContent) {
+ observer.observe(mainContent, {
+ childList: true,
+ subtree: true,
+ characterData: true
+ });
+ }
+ }
+
+ /**
+ * Refresh the TOC
+ */
+ async refresh() {
+ await this.loadPageNumbers();
+ this.generateTOC();
+ }
+
+ /**
+ * Estimate page number based on element position
+ */
+ estimatePageNumber(element) {
+ const pageHeightPixels = 1123; // A4 height in pixels at 96 DPI
+ const absoluteTop = element.offsetTop;
+ const estimatedPage = Math.floor(absoluteTop / pageHeightPixels) + 1;
+ console.log(`📍 Element "${element.textContent.trim()}" at position ${absoluteTop}px -> estimated page ${estimatedPage}`);
+ return estimatedPage;
+ }
+
+ /**
+ * Get total page count for footer updates
+ */
+ getTotalPages() {
+ return this.totalPages;
+ }
+}
+
+// Initialize when DOM is loaded
+document.addEventListener('DOMContentLoaded', function() {
+ console.log('🚀 TOC Generator: DOM loaded, starting...');
+
+ // Wait for numbering script to finish
+ setTimeout(() => {
+ console.log('🔄 TOC Generator: Creating instance...');
+ window.tocGenerator = new TOCGenerator();
+ window.tocGenerator.init();
+ }, 100);
+});
+
+// Also try immediate execution as fallback
+console.log('📜 TOC Generator script loaded');
+
+// Simple test - if this shows up, JavaScript is working
+document.addEventListener('DOMContentLoaded', function() {
+ console.log('🧪 SIMPLE TEST: JavaScript is working!');
+
+ // Test if we can find the TOC container
+ const tocContainer = document.querySelector('.toc-auto');
+ if (tocContainer) {
+ console.log('✅ Found TOC container:', tocContainer);
+ // Don't overwrite the TOC content - just log that we found it
+ } else {
+ console.log('❌ TOC container NOT found');
+ }
+});
+
diff --git a/offerten/energie360/KI-Lead Management System - Energie360 - 1 Uebersicht.pdf b/offerten/energie360/KI-Lead Management System - Energie360 - 1 Uebersicht.pdf
new file mode 100644
index 0000000..6687393
Binary files /dev/null and b/offerten/energie360/KI-Lead Management System - Energie360 - 1 Uebersicht.pdf differ
diff --git a/offerten/energie360/KI-Lead Management System - Energie360 - 2 Customer Journey.pdf b/offerten/energie360/KI-Lead Management System - Energie360 - 2 Customer Journey.pdf
new file mode 100644
index 0000000..e279920
Binary files /dev/null and b/offerten/energie360/KI-Lead Management System - Energie360 - 2 Customer Journey.pdf differ
diff --git a/offerten/energie360/KI-Lead Management System - Energie360 - 3 Geschaeftsprozess.pdf b/offerten/energie360/KI-Lead Management System - Energie360 - 3 Geschaeftsprozess.pdf
new file mode 100644
index 0000000..5137f32
Binary files /dev/null and b/offerten/energie360/KI-Lead Management System - Energie360 - 3 Geschaeftsprozess.pdf differ
diff --git a/energie360/aufwandtabelle.csv b/offerten/energie360/aufwandtabelle.csv
similarity index 100%
rename from energie360/aufwandtabelle.csv
rename to offerten/energie360/aufwandtabelle.csv
diff --git a/energie360/energie360-index.html b/offerten/energie360/energie360-index.html
similarity index 68%
rename from energie360/energie360-index.html
rename to offerten/energie360/energie360-index.html
index b218066..7a0aa67 100644
--- a/energie360/energie360-index.html
+++ b/offerten/energie360/energie360-index.html
@@ -407,179 +407,7 @@
}
}
- /* Offerte Tab Styles */
- .offerte-phase {
- background: #f8f9fa;
- border-radius: 8px;
- padding: 25px;
- margin: 20px 0;
- border-left: 4px solid #00a88e;
- }
-
- .phase-summary {
- margin-bottom: 20px;
- }
-
- .phase-summary h4 {
- color: #00594c;
- margin-bottom: 15px;
- font-size: 18px;
- }
-
- .cost-breakdown {
- background: white;
- padding: 20px;
- border-radius: 6px;
- border: 1px solid #dee2e6;
- }
-
- .cost-item {
- display: flex;
- justify-content: space-between;
- align-items: center;
- padding: 10px 0;
- border-bottom: 1px solid #f1f3f4;
- }
-
- .cost-item:last-child {
- border-bottom: none;
- }
-
- .cost-item.total {
- border-top: 2px solid #00a88e;
- border-bottom: none;
- font-weight: bold;
- font-size: 16px;
- color: #00594c;
- }
-
- .cost-item .label {
- color: #495057;
- }
-
- .cost-item .value {
- color: #00594c;
- font-weight: 600;
- }
-
- .phase-details {
- background: #e8f5f2;
- padding: 20px;
- border-radius: 6px;
- border-left: 3px solid #00a88e;
- }
-
- .phase-details h5 {
- color: #00594c;
- margin-bottom: 15px;
- font-size: 16px;
- }
-
- .phase-details ul {
- margin: 0;
- padding-left: 20px;
- }
-
- .phase-details li {
- margin-bottom: 8px;
- color: #495057;
- line-height: 1.5;
- }
-
- .total-overview {
- display: grid;
- grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
- gap: 25px;
- margin: 30px 0;
- }
-
- .total-costs, .payment-terms, .additional-info {
- background: #f8f9fa;
- padding: 25px;
- border-radius: 8px;
- border-left: 4px solid #00a88e;
- }
-
- .total-costs h4, .payment-terms h4, .additional-info h4 {
- color: #00594c;
- margin-bottom: 20px;
- font-size: 18px;
- }
-
- .cost-summary {
- background: white;
- padding: 20px;
- border-radius: 6px;
- border: 1px solid #dee2e6;
- }
-
- .cost-row {
- display: flex;
- justify-content: space-between;
- align-items: center;
- padding: 12px 0;
- border-bottom: 1px solid #f1f3f4;
- }
-
- .cost-row:last-child {
- border-bottom: none;
- }
-
- .cost-row.total-row {
- border-top: 2px solid #00a88e;
- border-bottom: none;
- font-weight: bold;
- font-size: 18px;
- color: #00594c;
- padding-top: 20px;
- }
-
- .payment-terms ul, .additional-info ul {
- margin: 0;
- padding-left: 20px;
- }
-
- .payment-terms li, .additional-info li {
- margin-bottom: 10px;
- color: #495057;
- line-height: 1.5;
- }
-
- @media (max-width: 768px) {
- .total-overview {
- grid-template-columns: 1fr;
- gap: 20px;
- }
-
- .cost-item, .cost-row {
- flex-direction: column;
- align-items: flex-start;
- gap: 5px;
- }
- }
-
- /* Customer Tasks Styles */
- .customer-tasks h5 {
- color: #00594c;
- margin: 15px 0 10px 0;
- font-size: 14px;
- border-bottom: 1px solid #dee2e6;
- padding-bottom: 5px;
- }
-
- .customer-tasks h5:first-child {
- margin-top: 0;
- }
-
- .customer-tasks ul {
- margin: 10px 0 15px 20px;
- }
-
- .customer-tasks li {
- margin-bottom: 6px;
- color: #495057;
- line-height: 1.4;
- }
+
@@ -595,13 +423,25 @@
-
+
Projektübersicht
+
+
Wichtigste Erkenntnisse aus der Besprechung (20. August 2025)
+
+
Pilot-Ansatz: Start mit 5 Verkäufern, Skalierung auf 30 nach Erfolg
+
Zeitrahmen: Ziel: Fertigstellung 2025, Budget 2026 bereits geplant
+
Bestehende Systeme: Company GPT, Azure ML, Postgres-Datenbank verfügbar
Modularer Aufbau: Lego-ähnliche Struktur für flexible Anpassungen
+
Integration: PowerOn Platform als Workflow-Engine mit bestehenden Systemen
+
+
+
Ausgangslage
Energie360° transformiert sich zum Anbieter ausschliesslich erneuerbarer Energie bis 2040. Der Geschäftsbereich "Lösungen" fokussiert auf integrale Energielösungen und Contracting für Neubauprojekte.
@@ -613,10 +453,11 @@
Personal & Kapazität
-
5 Verkaufspersonen bearbeiten Leads
+
5 Verkaufspersonen bearbeiten Leads (Pilot-Team)
100 Leads pro Jahr werden bearbeitet
2 Stunden pro Lead bis zur Qualifikation
Manuelle Prozesse dominieren den Workflow
+
30 Verkäufer insgesamt in der Firma
@@ -625,6 +466,7 @@
Hauptquelle: Baublatt (eher spät im Projektzyklus)
Manuelle Recherche auf SIMAP und espazium
+
LinkedIn als wichtige Quelle für Architekten-Projekte
Lead Qualification, Scoring und Anreicherung Kontaktdaten
+
Touchpoint: User Interface zur Erfassung/Anpassung/Upload Qualifikations- und Scoring Kriterien; Review Output; Dashboard
+
KI-Automation: Automatische Priorisierung durch Scoring und Ranking gegenüber definierten Kriterien; Anreicherung von Kontaktinfos der Leads mit Status «qualifiziert»
+
Häufigkeit: Aktualisierung alle 3 Stunden
4
-
Vertriebsprozess
-
Timing: Kontaktaufnahme in optimaler Projektphase
-
Ansatz: Datengestützte Ansprache mit relevanten Lösungen
-
Tracking: Lückenlose Dokumentation im CRM
+
Übergabe an Vertriebsprozess
+
Touchpoint: User Interface zum Review Leadsliste; Dashboard «KI-gestütztes Lead Management System»; Dashboard
+
KI-Automation: Ergänzung Lead um mögliche E360 Produkte oder Services; Vorschlag für nächste Aktion des Vertriebsteams; Automatische Zuweisung nach Regionen/Teams; Workload-Balancing zwischen Vertriebsmitarbeitern
+
Output: Lead-Liste updated mit Übergabedatum an CRM
+
Sales Execution & Follow-up im Vertriebsprozess
+
+
+
+
5
+
+
Sales Execution & Follow-up
+
Touchpoint: CRM System und Dashboard
+
KI-Automation: Automatisierte Status Tracking und Reminder-System, Optimierte Kommunikationsstrategien, Lead-Scoring Updates basierend auf Interaktionen, Automatische Wiedervorlage-Planung
+
Output: Aktive verwaltete Lead-Liste in CRM System
+
+
+
+
+
Nutzen für Vertriebsprozess durch KI Automatisierung
+
+
+
+
Daten Research, Anreicherung und Erstqualifikation
+
+
Von Stunden auf Minuten reduziert
+
Häufigkeit: Laufende Aktualisierung mehrmals am Tag, jeden Tag
Ansatz: Datengestützte Ansprache mit relevanten Lösungen
+
Tracking: Lückenlose Dokumentation im CRM
+
+
+
+
Mehrwert für Vertriebsteam
@@ -772,7 +660,7 @@
Der Lead Management Prozess von Energie360° ist ein strukturierter, iterativer Prozess, der durch KI-gestützte Automatisierung und menschliche Expertise optimiert wird. Jeder Prozessschritt hat definierte KPIs und klare Verantwortlichkeiten.
-
Vergleich: Heute vs. Mit KI-System
+
Vergleich: Heute vs. Unterstützung durch KI-System
@@ -781,10 +669,11 @@
🔴 Heute
-
5 Verkaufspersonen
+
5 Verkaufspersonen (Pilot-Team)
100 Leads pro Jahr
2 Stunden pro Lead bis Qualifikation
Manuelle Bearbeitung dominiert
+
Risiko von Duplikaten
@@ -794,6 +683,7 @@
500+ Leads pro Jahr (5x Steigerung)
0.5 Stunden pro Lead bis Qualifikation
KI-gestützte Automatisierung
+
Automatische Deduplizierung
@@ -860,7 +750,7 @@
🤖 KI-Unterstützung (80%)
-
Automatisierte Überwachung von SIMAP, Baublatt, espazium
+
Automatisierte Überwachung von SIMAP, Baublatt, espazium, LinkedIn
Früherkennung in SIA Phase 2-3
Automatische Filterung nach Projektgröße (>50 WE oder >50'000 m²)
Deduplizierung und Qualitätsprüfung
@@ -930,7 +820,7 @@
3
-
Lead Qualification & Scoring
+
Lead Qualification, Scoring & Kontakanreicherung
@@ -941,6 +831,7 @@
Fernwärme-Potential Bewertung
Wettbewerbsanalyse und Marktpositionierung
Automatische Kategorisierung nach Region/Team
+
Kontaktanreicherung der Leads mit Status «qualifiziert»
Kontaktdatenanreicherung: Anreicherung der Leads mit Status «qualifiziert»
Dashboard: Grundfunktionen für Sales Team
CRM: HubSpot Integration (Basis)
+
Integration: Company GPT, Azure ML, Postgres
Ziel: 50-100 qualifizierte Leads pro Monat
Deliverable: Funktionsfähiges System mit 50-100 Leads/Monat
@@ -1261,10 +1181,11 @@
Phase 2: Erweiterung (Monate 4-6)
Wochen 13-24
-
Erweiterte Quellen: LinkedIn, Baublatt Premium, SIA
+
Lead Discovery: Erweiterte Quellen wie LinkedIn, Baublatt Premium, SIA
+
Enrichment: Anreicherung um alle Projektdaten
Scoring Optimierung: Machine Learning Modelle
Dashboard: Erweiterte Analytics & Reports
-
KI-Agenten: Scout, Enricher, Scorer
+
Kontaktdatenanreicherung: Verbesserung der Anreicherung der Leads mit Status «qualifiziert»
Ziel: 100-200 Leads pro Monat
Deliverable: Vollständiges System mit erweiterten Quellen
@@ -1329,303 +1250,7 @@
-
-
ValueOn Offerte - KI-Lead Management System
-
-
-
Offerte Übersicht
-
Diese Offerte von ValueOn für Energie360° ist in 4 Phasen unterteilt, die jeweils unabhängig bestellt werden können. Jede Phase beinhaltet die entsprechenden Projektmanagement-Anteile und kann separat abgerechnet werden.
-
Wichtiger Hinweis: Dies ist eine Schätzung des Mengengerüstes, wie wir das Projekt zusammen ausführen könnten. Der konkrete Aufgabensplit zwischen Kunde (Energie360°) und ValueOn ist noch zu klären und kann je nach Verfügbarkeit und Präferenzen angepasst werden.
-
Tagessätze ValueOn (exkl. MWSt):
-
-
ValueOn Experte: CHF 2'150.- pro Tag
-
ValueOn PowerOn Development Team: CHF 950.- pro Tag
KI-Optimierung: Kontinuierliche Verbesserung der KI-Modelle
-
Dokumentation & Training: Vollständige Dokumentation und Team-Training
-
Projektmanagement: 3 Monate × 1 Tag/Monat = 3 Tage
-
-
Deliverable: Skalierbare Lösung für Expansion
-
-
-
-
Mitwirkungspflicht des Kunden (Energie360°)
-
-
Wichtiger Hinweis zur Aufgabenteilung
-
Die folgenden Kundenaufgaben basieren auf der detaillierten Aufwandsschätzung und sind von Energie360° sicherzustellen. ValueOn hat die Projektmanagement-Kosten bereits inkludiert. Energie360° kann auch Leistungen an ValueOn übertragen, falls gewünscht.
-
-
-
-
-
Phase 1: MVP (2-3 Monate)
-
-
Kundenaufgaben (30 Personentage):
-
-
Lead Discovery Setup: 5 Tage (Fachliche Inputs, Anforderungen)
-
Basis Scoring Algorithmus: 5 Tage (Geschäftsregeln, Scoring-Kriterien)
-
Dashboard Grundfunktionen: 5 Tage (UI/UX Anforderungen, Workflow-Definition)
-
HubSpot CRM Integration: 5 Tage (CRM-Konfiguration, Datenmapping)
-
Testing & Validation: 10 Tage (Endnutzer-Tests, Validierung der Leads)
-
-
Übertragbare Aufgaben (an ValueOn):
-
-
Zusätzliche Testing-Unterstützung (5-10 Tage)
-
Endnutzer-Training (5 Tage)
-
Erweiterte Dokumentation (5 Tage)
-
-
-
-
-
-
Phase 2: Erweiterung (Monate 4-6)
-
-
Kundenaufgaben (30 Personentage):
-
-
Erweiterte Datenquellen: 5 Tage (Zugangsdaten, API-Keys, Anforderungen)
-
Scoring Optimierung: 5 Tage (ML-Training, Validierung, Feedback)
-
Dashboard Analytics: 5 Tage (Reporting-Anforderungen, KPIs)
-
KI-Agenten Integration: 5 Tage (Workflow-Definition, Geschäftsregeln)
-
Performance Testing: 10 Tage (Erweiterte Tests, Skalierungstests)
-
-
Übertragbare Aufgaben (an ValueOn):
-
-
Zusätzliche Testing-Unterstützung (5-10 Tage)
-
Erweiterte Dokumentation (5 Tage)
-
Performance-Optimierung (5 Tage)
-
-
-
-
-
-
Phase 3: Vollintegration (Monate 7-9)
-
-
Kundenaufgaben (35 Personentage):
-
-
Workflow Engine: 5 Tage (Geschäftsprozesse, Automatisierungsregeln)
-
Stakeholder-Agent: 5 Tage (Stakeholder-Kriterien, Kontaktstrategien)
-
Power BI Integration: 5 Tage (Reporting-Anforderungen, Dashboard-Design)
-
Teams Integration: 5 Tage (Teams-Konfiguration, Workflow-Integration)
-
End-to-End Testing: 15 Tage (Vollständige Systemtests, Go-Live Tests)
-
-
Übertragbare Aufgaben (an ValueOn):
-
-
Zusätzliche Testing-Unterstützung (10-15 Tage)
-
Go-Live Support (10 Tage)
-
Erweiterte Dokumentation (10 Tage)
-
-
-
-
-
-
Phase 4: Skalierung (Monate 10-12)
-
-
Kundenaufgaben (40 Personentage):
-
-
Performance Optimierung: 5 Tage (Performance-Anforderungen, Skalierungskriterien)
-
Predictive Analytics: 5 Tage (Analytics-Anforderungen, Vorhersagemodelle)
-
Regionale Skalierung: 15 Tage (Regionale Expansion, Marktanalyse)
-
KI-Optimierung: 5 Tage (KI-Modell-Feedback, Optimierungskriterien)
-
Dokumentation & Training: 10 Tage (Team-Training, Dokumentations-Review)
-
-
Übertragbare Aufgaben (an ValueOn):
-
-
Zusätzliche Skalierungsplanung (10-15 Tage)
-
Erweiterte Dokumentation (10 Tage)
-
Team-Training (10 Tage)
-
-
-
-
-
-
-
Flexibilität bei der Aufgabenteilung
-
Option 1: Energie360° übernimmt alle Kundenaufgaben gemäß der Aufwandsschätzung
-
Option 2: Energie360° überträgt zusätzliche Aufgaben an ValueOn (erhöht die ValueOn-Kosten entsprechend)
-
Option 3: Gemischter Ansatz je nach Phase und Verfügbarkeit
-
Die konkrete Aufgabenteilung wird in einem separaten Workshop definiert und kann je nach Projektfortschritt angepasst werden.
-
-
-
Gesamtübersicht & Zahlungsmodalitäten
-
-
-
💰 Gesamtkosten ValueOn
-
-
- Phase 1 (MVP):
- CHF 70'350
-
-
- Phase 2 (Erweiterung):
- CHF 79'850
-
-
- Phase 3 (Vollintegration):
- CHF 84'150
-
-
- Phase 4 (Skalierung):
- CHF 88'900
-
-
- Gesamt ValueOn:
- CHF 323'250
-
-
-
-
-
-
💳 Zahlungsmodalitäten
-
-
Phase 1: 50% bei Auftrag, 50% bei Abnahme
-
Phase 2: 50% bei Auftrag, 50% bei Abnahme
-
Phase 3: 50% bei Auftrag, 50% bei Abnahme
-
Phase 4: 50% bei Auftrag, 50% bei Abnahme
-
Projektmanagement: Monatlich in Rechnung gestellt
-
-
-
-
-
ℹ️ Zusätzliche Informationen
-
-
Gültigkeit: Diese Offerte ist 3 Monate gültig
-
Start: Jede Phase kann unabhängig gestartet werden
-
Dauer: Jede Phase dauert 2-3 Monate
-
Team: Dediziertes ValueOn-Team für das gesamte Projekt
-
Support: 3 Monate Support nach Abschluss jeder Phase inklusive
-
-
-
-
+
Unterstützungsbereiche
@@ -1719,6 +1344,11 @@
Flexible Skalierung
Bedarfsgerechte Ressourcen je Projektphase. Von strategischer Beratung bis hands-on Development.
+
+
+
Integration mit bestehenden Systemen
+
Leveraging von Company GPT, Azure ML und Postgres-Datenbank. Modulare Lösung, die sich in bestehende Infrastruktur einfügt.
+
Investitionsschätzung
@@ -1740,6 +1370,16 @@
Monate ROI
+
+
+
Zeitrahmen & Budget
+
+
Ziel: Fertigstellung 2025 (Budget 2026 bereits geplant)
+
Pilot-Phase: 5 Verkäufer als Testgruppe
+
Skalierung: Auf 30 Verkäufer nach erfolgreichem Pilot
+
Modularer Ansatz: Jede Phase kann unabhängig bestellt werden
+
+
diff --git a/offerten/energie360/energie360-offerte.html b/offerten/energie360/energie360-offerte.html
new file mode 100644
index 0000000..0091eea
--- /dev/null
+++ b/offerten/energie360/energie360-offerte.html
@@ -0,0 +1,778 @@
+
+
+
+
+
+ Offerte für Implementierungskonzept Energie 360°
+
+
+
+
+
+
+
+
+
+
+
+
Offerte für Energie 360°
+
KI-Lead Management System
+
+
+
+
+
Ort, Datum: Zürich, 27.08.2025
+
+
+
+
+
+
+
+
+
+
ValueOn AG
+
Am Stadtrand 11
+
8600 Dübendorf
+
+
+
T +41 44 943 70 40
+
info@valueon.ch
+
www.valueon.ch
+
+
+
+
+
+
+
+
+
+
Offerte Übersicht
+
+
+ Diese Offerte von ValueOn für Energie360° ist in 4 Phasen unterteilt, die jeweils unabhängig bestellt werden können.
+
+
+
Struktur der Offerte
+
+
+ Die Offerte strukturiert sich in drei Bereiche:
+
+
+
+
Klärung der Anforderungen: Customer Journey, User Interface und Lösungsarchitektur
+
Realisierung der Lösung: Verwendung von Standard-Komponenten der PowerON AI Plattform (Baukasten)
+
Kundenspezifische Entwicklungen: Kundenspezifische Optimierungen, Integrationen, Dokumentation und Training
+
+
+
Detaillierte Lösungsbeschreibung
+
+
+ Implementierungskonzept für Energie360° - Geschäftsbereich Lösungen
+
+
+
Customer Journey - Vollständiger Prozess
+
+
+
+
1
+
+
Lead Discovery & Sourcing
+
+
+
KI-Unterstützung (80%)
+
+
Automatisierte Überwachung aller Datenquellen
+
Früherkennung in SIA Phase 2-3
+
Intelligente Filterung nach Projektkriterien
+
Automatische Deduplizierung
+
+
+
+
Menschliche Leistung (20%)
+
+
Überprüfung der KI-Ergebnisse
+
Manuelle Recherche bei speziellen Projekten
+
Qualitätskontrolle der automatisierten Daten
+
+
+
+
Output: Qualifizierte Lead-Liste mit erstem Scoring
+
+
+
+
+
2
+
+
Lead Enrichment & Research
+
+
+
KI-Unterstützung (70%)
+
+
Automatische Anreicherung mit Projektdetails
+
Fernwärme-Perimeter Mapping
+
Stakeholder-Identifikation aus öffentlichen Quellen
+
Technische Spezifikationen Extraktion
+
+
+
+
Menschliche Leistung (30%)
+
+
Vertiefte Recherche bei komplexen Projekten
+
Netzwerk-basierte Kontaktaufnahme
+
Qualitätsbewertung der angereicherten Daten
+
+
+
+
Output: Vollständig angereicherte Lead-Daten
+
+
+
+
+
3
+
+
Lead Qualification & Scoring
+
+
+
KI-Unterstützung (85%)
+
+
Automatisches Scoring nach definierten Kriterien
+
Priorisierung basierend auf Projektgröße und Phase
+
Fernwärme-Potential Bewertung
+
Wettbewerbsanalyse und Marktpositionierung
+
Kontaktanreicherung der Leads mit Status «qualifiziert»
+
+
+
+
Menschliche Leistung (15%)
+
+
Überprüfung der Scoring-Ergebnisse
+
Strategische Anpassung der Bewertungskriterien
+
Manuelle Priorisierung bei Grenzfällen
+
+
+
+
Output: Priorisierte Lead-Liste mit Scoring
+
+
+
+
+
4
+
+
Übergabe an Vertriebsteam
+
+
+
KI-Unterstützung (60%)
+
+
Automatische Zuweisung nach Regionen/Teams
+
Workload-Balancing zwischen Vertriebsmitarbeitern
+
Automatische Lead-Import in CRM-Systeme
+
Vorschlag für nächste Aktion des Vertriebsteams
+
+
+
+
Menschliche Leistung (40%)
+
+
Überprüfung der automatischen Zuweisungen
+
Manuelle Anpassung bei speziellen Anforderungen
+
Qualitätskontrolle vor Vertriebsübergabe
+
+
+
+
Output: Lead-Liste mit Übergabedatum an CRM
+
+
+
+
+
5
+
+
Sales Execution & Follow-up
+
+
+
KI-Unterstützung (40%)
+
+
Status-Synchronisation und Tracking
+
Automatisierte Reminder-Systeme
+
Optimierte Kommunikationsstrategien
+
Lead-Scoring Updates basierend auf Interaktionen
+
Automatische Wiedervorlage-Planung
+
+
+
+
Menschliche Leistung (60%)
+
+
Persönliche Kontaktaufnahme mit Entscheidungsträgern
+
Vertriebsgespräche und Präsentationen
+
Strategische Verhandlungen
+
Beziehungsaufbau und -pflege
+
+
+
+
Output: Aktive verwaltete Lead-Liste in CRM System
KI-Optimierung: Kontinuierliche Verbesserung der KI-Modelle
+
+
Deliverable: Skalierbare Lösung für Expansion
+
+
+
+
+
Gesamtübersicht & Zahlungsmodalitäten
+
+
+
+
+
Gesamtkosten Realisierung der Lösung
+
+
+ Phase 1 (MVP):
+ CHF 33'000
+
+
+ Phase 2 (Erweiterung):
+ CHF 28'500
+
+
+ Phase 3 (Vollintegration):
+ CHF 50'500
+
+
+ Phase 4 (Skalierung):
+ Nach Ermessen
+
+
+ Gesamt Realisierung:
+ CHF 112'000
+
+
+
+
+
+
Zahlungsmodalitäten
+
+
Phase 1: 50% bei Auftrag, 50% bei Abnahme
+
Phase 2: 50% bei Auftrag, 50% bei Abnahme
+
Phase 3: 50% bei Auftrag, 50% bei Abnahme
+
Phase 4: Nach Freigabe der Kosten
+
Projektmanagement: Ist integraler Bestandteil
+
+
+
+
+
Zusätzliche Informationen
+
+
Gültigkeit: Diese Offerte ist 10 Tage gültig
+
Start: Jede Phase kann unabhängig gestartet werden
+
Dauer: Jede Phase dauert 2-3 Monate
+
Team: Dediziertes ValueOn-Team für das gesamte Projekt
+
+
+
+
+
+
Zusammenarbeitsmodell
+
+
+ Das Projekt wird in 4-Wochen Sprints mit klaren Deliverables umgesetzt. Enge Zusammenarbeit mit dem Product Owner von Energie360° und regelmässige Investitionsschätzung sind integraler Bestandteil.
+
+
+
Investitionsschätzung
+
+
+ Zeitrahmen: 16-20 Wochen bis Go-Live, 41 Wochen bis zur vollständigen Integration. Ziel: Produktiver Einsatz bis Ende Jahr, Vollintegration bis Mai 2026.
+
Der Auftrag startet am 01.09.2025 und endet am 31.05.2026.
+
Eine eventuelle Auftragsverlängerung erfolgt durch eine schriftliche Vereinbarung zwischen den beiden Parteien mit Bezug auf dieses Dienstleistungsangebot.
+
Bei Auftragsende wird ein Interview mit dem Kunden durchgeführt und ein Referenz Statement abgeholt.
+
+
+
+
+
Rahmenbedingungen
+
+
Der Auftraggeber stellt sicher, dass der Berater von ValueOn die nötige Positionierung und die Kompetenz erhält, in der Organisation und in dessen Umfeld zu wirken.
+
Der Auftraggeber stellt den Kontakt zu Entscheidungsträger und andere Organisationseinheiten sicher.
+
Die Weitergabe einzelner Aufgaben an fachkundige Dritte bedarf der Zustimmung des Kunden.
+
ValueOn kann nicht verantwortlich gemacht werden für Verzögerungen ausgelöst durch höhere Gewalt oder Widerstände in der Organisation des Auftraggebers.
+
Die Leistungserbringung geschieht teilweise in den Räumen des Auftraggebers und teilweise ausgelagert.
+
+
+
+
+
Messung der Zielerreichung
+
+
Im Anschluss an das Mandat wird die Zielerreichung durch ein Customer Survey überprüft.
+
+
+
+
+
Verrechnung
+
+
Für die Beratungs-Leistungen wird ein Pauschalpreis verrechnet, wie oben in der Offerte beschrieben.
+
+
+
+
+
Spesen und Nebenkosten
+
+
Für die Arbeitserbringung in der Schweiz werden keine Spesen erhoben.
+
Für die Arbeitserbringung im Ausland werden die effektiven Kosten verrechnet.
+
+
+
+
+
Konditionen
+
+
Es gelten die beiliegenden Allgemeinen Geschäftsbedingungen (AGB) von ValueOn.
+
Zahlung 10 Tage nach Rechnungsstellung.
+
Die Gültigkeit der Offerte beträgt 10 Tage ab Ausstellungsdatum.
+
+
+
+
+
+
Unterschriften
+
+
+
+
Kunde
+
Unterschrift
+
+
+ Ort, Datum:
+ _________________
+
+
+ Name:
+ _________________
+
+
+ Titel:
+ _________________
+
+
+
+
+
+
ValueOn
+
Unterschrift
+
+
+ Ort, Datum:
+ _________________
+
+
+ Name:
+ _________________
+
+
+ Titel:
+ _________________
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/offerten/energie360/energie360-offerte.pdf b/offerten/energie360/energie360-offerte.pdf
new file mode 100644
index 0000000..27dc7de
Binary files /dev/null and b/offerten/energie360/energie360-offerte.pdf differ
diff --git a/offerten/generate_complete_pdf.py b/offerten/generate_complete_pdf.py
new file mode 100644
index 0000000..13c67a3
--- /dev/null
+++ b/offerten/generate_complete_pdf.py
@@ -0,0 +1,853 @@
+#!/usr/bin/env python3
+"""
+Complete PDF Generation Script
+1. Opens HTML in headless browser
+2. Waits for JavaScript to complete (TOC + footer)
+3. Extracts complete HTML with TOC and footer
+4. Generates PDF from final HTML
+
+Usage:
+ python generate_complete_pdf.py # Auto-cleanup temp files
+ python generate_complete_pdf.py --keep-temp # Keep temp files for debugging
+"""
+
+import os
+import sys
+import time
+import subprocess
+import platform
+import json
+from pathlib import Path
+from selenium import webdriver
+from selenium.webdriver.chrome.options import Options
+from selenium.webdriver.common.by import By
+from selenium.webdriver.support.ui import WebDriverWait
+from selenium.webdriver.support import expected_conditions as EC
+from selenium.common.exceptions import TimeoutException
+
+def find_chrome_executable():
+ """Find Chrome executable based on platform"""
+ if platform.system() == "Windows":
+ possible_paths = [
+ r"C:\Program Files\Google\Chrome\Application\chrome.exe",
+ r"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe",
+ r"C:\Users\{}\AppData\Local\Google\Chrome\Application\chrome.exe".format(os.getenv('USERNAME')),
+ ]
+ elif platform.system() == "Darwin": # macOS
+ possible_paths = [
+ "/Applications/Google Chrome.app/Contents/MacOS/Google Chrome",
+ ]
+ else: # Linux
+ possible_paths = [
+ "/usr/bin/google-chrome",
+ "/usr/bin/chromium-browser",
+ "/usr/bin/chromium",
+ ]
+
+ for path in possible_paths:
+ if os.path.exists(path):
+ return path
+
+ # Try to find in PATH
+ try:
+ result = subprocess.run(['which', 'google-chrome'], capture_output=True, text=True)
+ if result.returncode == 0:
+ return result.stdout.strip()
+ except:
+ pass
+
+ return None
+
+def setup_chrome_options():
+ """Setup Chrome options for headless operation"""
+ chrome_options = Options()
+ chrome_options.add_argument("--headless=new") # Use new headless mode
+ chrome_options.add_argument("--no-sandbox")
+ chrome_options.add_argument("--disable-dev-shm-usage")
+ chrome_options.add_argument("--disable-gpu")
+ chrome_options.add_argument("--disable-web-security")
+ chrome_options.add_argument("--allow-running-insecure-content")
+ chrome_options.add_argument("--disable-features=VizDisplayCompositor")
+ chrome_options.add_argument("--window-size=1920,1080")
+ chrome_options.add_argument("--user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36")
+
+ return chrome_options
+
+def wait_for_toc_completion(driver, timeout=30):
+ """Wait for TOC generation to complete"""
+ print("⏳ Waiting for TOC generation to complete...")
+
+ try:
+ # Wait for TOC title to appear (not "Lade Inhaltsverzeichnis...")
+ WebDriverWait(driver, timeout).until(
+ lambda d: d.find_element(By.CLASS_NAME, "toc-title").text == "Inhaltsverzeichnis"
+ )
+
+ # Wait for TOC entries to appear
+ WebDriverWait(driver, timeout).until(
+ lambda d: len(d.find_elements(By.CLASS_NAME, "toc-entry")) > 0
+ )
+
+ # Wait a bit more for all entries to load
+ time.sleep(2)
+
+ print("✅ TOC generation completed!")
+ return True
+
+ except TimeoutException:
+ print("❌ Timeout waiting for TOC generation")
+ return False
+ except Exception as e:
+ print(f"⚠️ Error during TOC wait: {e}")
+ return False
+
+def check_driver_health(driver):
+ """Check if Chrome driver is still healthy and responsive"""
+ try:
+ # Try to get current URL to check if driver is responsive
+ current_url = driver.current_url
+ return True
+ except Exception as e:
+ print(f"⚠️ Driver health check failed: {e}")
+ return False
+
+def wait_for_page_counter_completion(driver, timeout=30):
+ """Wait for page counter to complete and update footer"""
+ print("⏳ Waiting for page counter to complete...")
+
+ try:
+ # Wait for footer to show actual page count (not CSS variable)
+ WebDriverWait(driver, timeout).until(
+ lambda d: "var(--total-pages" not in d.page_source
+ )
+
+ # Wait a bit more for footer to stabilize
+ time.sleep(2)
+
+ print("✅ Page counter completed!")
+ return True
+
+ except TimeoutException:
+ print("❌ Timeout waiting for page counter")
+ return False
+
+def analyze_pdf_page_numbers(pdf_path):
+ """Analyze PDF to extract real page numbers for sections"""
+ print(f"📊 Analyzing PDF: {pdf_path}")
+
+ try:
+ # Use PyMuPDF to analyze the PDF
+ import fitz # PyMuPDF
+
+ doc = fitz.open(pdf_path)
+ total_pages = len(doc)
+ print(f"📄 Total pages in PDF: {total_pages}")
+
+ # Define the sections to look for (both with and without numbering)
+ sections = [
+ # Main sections (level 1)
+ "Offerte Übersicht",
+ "Gesamtübersicht & Zahlungsmodalitäten",
+ "Zusammenarbeitsmodell",
+ "Investitionsschätzung",
+ "Kontaktdaten",
+ "Rahmenbedingungen & Konditionen",
+ "Unterschriften",
+
+ # Sub-sections (level 2)
+ "Struktur der Offerte",
+ "Detaillierte Lösungsbeschreibung",
+ "Projektphasen",
+
+ # Sub-sub-sections (level 3)
+ "Kernkomponenten des KI-Systems",
+ "Customer Journey - Vollständiger Prozess",
+ "Nutzen für Vertriebsprozess durch KI-Automatisierung",
+ "User Interfaces & Touchpoints",
+ "Technische Integration & Compliance",
+ "Organisatorische Verantwortlichkeiten",
+ "Kundenseitige Mitwirkung (FTE)",
+ "Phase 1: MVP (2-3 Monate)",
+ "Phase 2: Erweiterung (Monate 4-6)",
+ "Phase 3: Vollintegration (Monate 7-9)",
+ "Phase 4: Skalierung (Monate 10-12)"
+ ]
+
+ page_numbers = {}
+
+ # Search for each section in the PDF with flexible matching
+ for section in sections:
+ found = False
+ for page_num in range(total_pages):
+ page = doc[page_num]
+ text = page.get_text()
+
+ # Try exact match first
+ if section in text:
+ page_numbers[section] = page_num + 1
+ print(f"📍 '{section}' found on page {page_num + 1}")
+ found = True
+ break
+
+ # Try partial match (for longer section names)
+ if len(section) > 10: # Only for longer sections
+ words = section.split()
+ if len(words) >= 3: # Only for sections with 3+ words
+ # Check if at least 2 key words are present
+ key_words = [word for word in words if len(word) > 3] # Skip short words
+ if len(key_words) >= 2:
+ matches = sum(1 for word in key_words if word in text)
+ if matches >= 2:
+ page_numbers[section] = page_num + 1
+ print(f"📍 '{section}' (partial match) found on page {page_num + 1}")
+ found = True
+ break
+
+ if not found:
+ print(f"⚠️ Section '{section}' not found in any page")
+ # Assign to page 1 as fallback
+ page_numbers[section] = 1
+
+ doc.close()
+
+ # Save page numbers to JSON
+ output_data = {
+ "total_pages": total_pages,
+ "page_numbers": page_numbers
+ }
+
+ json_path = Path("_tmp/page_numbers_updated.json")
+ json_path.parent.mkdir(parents=True, exist_ok=True)
+ with open(json_path, "w", encoding="utf-8") as f:
+ json.dump(output_data, f, indent=2, ensure_ascii=False)
+
+ print(f"✅ Page numbers saved to: {json_path}")
+ return output_data
+
+ except ImportError:
+ print("❌ PyMuPDF not available, using fallback method...")
+ return fallback_pdf_analysis(pdf_path)
+ except Exception as e:
+ print(f"❌ PDF analysis error: {e}")
+ return None
+
+def fallback_pdf_analysis(pdf_path):
+ """Fallback PDF analysis using Chrome headless"""
+ print("🔄 Using Chrome headless for PDF analysis...")
+
+ try:
+ # Use Chrome to extract text from PDF
+ chrome_path = find_chrome_executable()
+ if not chrome_path:
+ return None
+
+ # Convert PDF to HTML for analysis
+ html_path = pdf_path.replace(".pdf", "_text.html")
+ cmd = [
+ chrome_path,
+ "--headless",
+ "--no-sandbox",
+ "--disable-dev-shm-usage",
+ "--print-to-pdf-no-header",
+ f"file://{os.path.abspath(pdf_path)}"
+ ]
+
+ # This is a simplified fallback - in practice, you'd want more sophisticated text extraction
+ print("⚠️ Fallback analysis limited - consider installing PyMuPDF")
+ return {"total_pages": 22, "page_numbers": {}} # Default values
+
+ except Exception as e:
+ print(f"❌ Fallback analysis failed: {e}")
+ return None
+
+def wait_for_footer_update(driver, timeout=10):
+ """Wait for footer to be updated with correct page count"""
+ print("⏳ Waiting for footer update...")
+
+ try:
+ # Check if footer shows correct page count (not "var(--total-pages, 16)")
+ WebDriverWait(driver, timeout).until(
+ lambda d: "var(--total-pages" not in d.page_source
+ )
+
+ print("✅ Footer updated!")
+ return True
+
+ except TimeoutException:
+ print("⚠️ Footer update timeout - continuing anyway")
+ return True
+
+def extract_complete_html(driver, output_filename=None, tmp_dir=None):
+ """Extract the complete HTML after JavaScript processing"""
+ if output_filename is None:
+ output_filename = "energie360-offerte-complete.html"
+
+ # Ensure tmp_dir exists
+ if tmp_dir:
+ tmp_dir.mkdir(parents=True, exist_ok=True)
+ output_path = tmp_dir / output_filename
+ else:
+ output_path = Path(output_filename)
+
+ print(f"📄 Extracting complete HTML to: {output_path}")
+
+ # Get the complete HTML
+ complete_html = driver.page_source
+
+ # Save the complete HTML for inspection
+ with open(output_path, "w", encoding="utf-8") as f:
+ f.write(complete_html)
+
+ print(f"✅ Complete HTML saved to: {output_path}")
+ return complete_html
+
+def clean_and_number_headings_professionally(driver):
+ """Clean existing numbering and add professional outline numbering to headings"""
+ print("🔧 Cleaning and adding professional outline numbering to headings...")
+
+ try:
+ js_code = """
+ (function() {
+ console.log('🔧 Cleaning and adding professional outline numbering...');
+
+ // Function to clean and add professional outline numbering
+ function cleanAndNumberHeadings() {
+ let level1Count = 0;
+ let level2Count = 0;
+ let level3Count = 0;
+
+ const headings = document.querySelectorAll('h1.content-heading, h2.content-heading, h3.content-heading');
+
+ headings.forEach(heading => {
+ const level = parseInt(heading.className.match(/heading-level-(\\d+)/)?.[1] || '1');
+
+ // Get the original text and clean it completely
+ let originalText = heading.textContent.trim();
+
+ // Remove ALL existing numbering patterns (1, 1.1, 1.1.1, etc.)
+ originalText = originalText.replace(/^\\d+(\\.\\d+)*\\s*/, '');
+
+ // Store the clean original text
+ heading.setAttribute('data-original-text', originalText);
+
+ // Add appropriate professional numbering
+ let numberedText = '';
+ if (level === 1) {
+ level1Count++;
+ level2Count = 0;
+ level3Count = 0;
+ numberedText = level1Count + ' ' + originalText;
+ } else if (level === 2) {
+ level2Count++;
+ level3Count = 0;
+ numberedText = level1Count + '.' + level2Count + ' ' + originalText;
+ } else if (level === 3) {
+ level3Count++;
+ numberedText = level1Count + '.' + level2Count + '.' + level3Count + ' ' + originalText;
+ }
+
+ // Update heading text with clean numbering
+ heading.textContent = numberedText;
+ heading.setAttribute('data-numbered-text', numberedText);
+
+ console.log(`✅ Heading ${level}: "${originalText}" -> "${numberedText}"`);
+ });
+
+ console.log('✅ Professional outline numbering completed');
+ return true;
+ }
+
+ return cleanAndNumberHeadings();
+ })();
+ """
+
+ # Execute the JavaScript
+ result = driver.execute_script(js_code)
+
+ # Wait a bit for the JavaScript to complete
+ time.sleep(1)
+
+ print("✅ Professional outline numbering added successfully")
+ return True
+
+ except Exception as e:
+ print(f"❌ Error adding professional outline numbering: {e}")
+ return False
+
+def create_professional_toc_with_real_page_numbers(driver, page_numbers):
+ """Create a professional TOC with correct page numbers and proper alignment"""
+ print("🔧 Creating professional TOC with real page numbers...")
+
+ try:
+ # Create JavaScript to build a professional TOC
+ js_code = """
+ (function() {
+ console.log('🔧 Creating professional TOC with real page numbers...');
+
+ // Get the page numbers data
+ const pageNumbers = %s;
+
+ // Function to find the best matching section for a heading text
+ function findBestSectionMatch(headingText) {
+ const cleanHeading = headingText.replace(/^\\d+(\\.\\d+)*\\s*/, '').trim();
+
+ console.log(`🔍 Looking for match for: "${cleanHeading}"`);
+ console.log(`📋 Available sections:`, Object.keys(pageNumbers.page_numbers));
+
+ // Try exact match first
+ for (let [section, page] of Object.entries(pageNumbers.page_numbers)) {
+ if (cleanHeading === section) {
+ console.log(`✅ Exact match: "${section}" -> page ${page}`);
+ return { section, page };
+ }
+ }
+
+ // Try partial match (more flexible)
+ for (let [section, page] of Object.entries(pageNumbers.page_numbers)) {
+ const cleanSection = section.replace(/^\\d+(\\.\\d+)*\\s*/, '').trim();
+
+ // Check if either contains the other
+ if (cleanHeading.includes(cleanSection) || cleanSection.includes(cleanHeading)) {
+ console.log(`✅ Partial match: "${cleanSection}" -> page ${page}`);
+ return { section, page };
+ }
+ }
+
+ // Try word-based matching for longer headings
+ if (cleanHeading.length > 10) {
+ const headingWords = cleanHeading.split(' ').filter(word => word.length > 3);
+
+ for (let [section, page] of Object.entries(pageNumbers.page_numbers)) {
+ const cleanSection = section.replace(/^\\d+(\\.\\d+)*\\s*/, '').trim();
+ const sectionWords = cleanSection.split(' ').filter(word => word.length > 3);
+
+ // Count matching words
+ const matches = headingWords.filter(word =>
+ sectionWords.some(sword =>
+ word.toLowerCase() === sword.toLowerCase() ||
+ word.toLowerCase().includes(sword.toLowerCase()) ||
+ sword.toLowerCase().includes(word.toLowerCase())
+ )
+ );
+
+ if (matches.length >= 2) {
+ console.log(`✅ Word-based match: "${cleanSection}" -> page ${page} (${matches.length} words)`);
+ return { section, page };
+ }
+ }
+ }
+
+ console.warn(`⚠️ No match found for: "${cleanHeading}"`);
+ return null;
+ }
+
+ // Function to create professional TOC
+ function createProfessionalTOC() {
+ // Find the TOC container
+ const tocContainer = document.querySelector('.toc-auto');
+ if (!tocContainer) {
+ console.error('❌ TOC container not found');
+ return false;
+ }
+
+ // Clear existing TOC completely
+ tocContainer.innerHTML = '';
+
+ // Create professional TOC title
+ const title = document.createElement('h1');
+ title.className = 'toc-title';
+ title.textContent = 'Inhaltsverzeichnis';
+ title.style.textAlign = 'center';
+ title.style.marginBottom = '2rem';
+ title.style.fontSize = '1.5rem';
+ title.style.fontWeight = 'bold';
+ title.style.color = '#2c3e50';
+ tocContainer.appendChild(title);
+
+ // Get all numbered headings
+ const headings = document.querySelectorAll('h1.content-heading, h2.content-heading, h3.content-heading');
+
+ if (headings.length === 0) {
+ console.error('❌ No content headings found');
+ return false;
+ }
+
+ console.log(`📋 Found ${headings.length} headings to process`);
+
+ headings.forEach((heading, index) => {
+ const headingText = heading.textContent.trim();
+ const level = parseInt(heading.className.match(/heading-level-(\\d+)/)?.[1] || '1');
+
+ // Find page number for this heading
+ const match = findBestSectionMatch(headingText);
+ const pageNumber = match ? match.page : 1; // Default to page 1 if no match
+
+ // Create TOC entry with professional styling
+ const entry = document.createElement('div');
+ entry.className = 'toc-entry';
+ entry.classList.add(`toc-level-${level}`);
+
+ // Set professional styling
+ entry.style.display = 'flex';
+ entry.style.justifyContent = 'space-between';
+ entry.style.alignItems = 'center';
+ entry.style.marginBottom = '0.5rem';
+ entry.style.cursor = 'pointer';
+ entry.style.transition = 'background-color 0.2s';
+
+ // Add hover effect
+ entry.addEventListener('mouseenter', () => {
+ entry.style.backgroundColor = '#f8f9fa';
+ });
+ entry.addEventListener('mouseleave', () => {
+ entry.style.backgroundColor = 'transparent';
+ });
+
+ // Create text container
+ const textContainer = document.createElement('div');
+ textContainer.style.flex = '1';
+ textContainer.style.display = 'flex';
+ textContainer.style.alignItems = 'center';
+
+ // Add level-based indentation
+ const indent = (level - 1) * 1.5;
+ textContainer.style.marginLeft = indent + 'rem';
+
+ // Create text span
+ const textSpan = document.createElement('span');
+ textSpan.className = 'toc-text';
+ textSpan.textContent = headingText;
+ textSpan.style.fontSize = level === 1 ? '1.1rem' : level === 2 ? '1rem' : '0.9rem';
+ textSpan.style.fontWeight = level === 1 ? 'bold' : 'normal';
+ textSpan.style.color = level === 1 ? '#2c3e50' : level === 2 ? '#34495e' : '#7f8c8d';
+
+ textContainer.appendChild(textSpan);
+
+ // Create right-aligned page number
+ const pageSpan = document.createElement('span');
+ pageSpan.className = 'toc-page';
+ pageSpan.textContent = pageNumber;
+ pageSpan.style.fontWeight = 'bold';
+ pageSpan.style.color = '#e74c3c';
+ pageSpan.style.minWidth = '2rem';
+ pageSpan.style.textAlign = 'right';
+
+ // Create dots (leader)
+ const dotsSpan = document.createElement('span');
+ dotsSpan.className = 'toc-dots';
+ dotsSpan.textContent = '.'.repeat(20);
+ dotsSpan.style.flex = '1';
+ dotsSpan.style.margin = '0 0.5rem';
+ dotsSpan.style.color = '#bdc3c7';
+ dotsSpan.style.overflow = 'hidden';
+ dotsSpan.style.whiteSpace = 'nowrap';
+
+ // Assemble entry
+ entry.appendChild(textContainer);
+ entry.appendChild(dotsSpan);
+ entry.appendChild(pageSpan);
+
+ // Add click functionality
+ entry.addEventListener('click', () => {
+ heading.scrollIntoView({
+ behavior: 'smooth',
+ block: 'start'
+ });
+ });
+
+ // Add to TOC
+ tocContainer.appendChild(entry);
+
+ console.log(`✅ TOC entry ${index + 1}: "${headingText}" -> page ${pageNumber} (level ${level})`);
+ });
+
+ console.log('✅ Professional TOC created successfully');
+ return true;
+ }
+
+ // Execute the function
+ return createProfessionalTOC();
+ })();
+ """ % json.dumps(page_numbers)
+
+ # Execute the JavaScript
+ result = driver.execute_script(js_code)
+
+ # Wait a bit for the JavaScript to complete
+ time.sleep(2)
+
+ print("✅ Professional TOC created successfully")
+ return True
+
+ except Exception as e:
+ print(f"❌ Error creating professional TOC: {e}")
+ return False
+
+def generate_pdf_from_complete_html(html_file_path, output_filename=None):
+ """Generate PDF from the complete HTML file"""
+ if output_filename is None:
+ output_filename = "energie360-offerte-complete.pdf"
+
+ print(f"🔄 Generating PDF: {output_filename}")
+
+ chrome_path = find_chrome_executable()
+ if not chrome_path:
+ print("❌ Chrome not found!")
+ return False
+
+ try:
+ # Ensure output filename has absolute path
+ output_abs_path = os.path.abspath(output_filename)
+ html_abs_path = os.path.abspath(html_file_path)
+
+ print(f"📁 Output will be saved to: {output_abs_path}")
+ print(f"📄 HTML source: {html_abs_path}")
+
+ # Use Chrome to generate PDF from the complete HTML
+ cmd = [
+ chrome_path,
+ "--headless",
+ "--no-sandbox",
+ "--disable-dev-shm-usage",
+ f"--print-to-pdf={output_abs_path}",
+ "--print-to-pdf-no-header",
+ f"file://{html_abs_path}"
+ ]
+
+ print(f"🔧 Running command: {' '.join(cmd)}")
+
+ result = subprocess.run(cmd, capture_output=True, text=True, timeout=60)
+
+ if result.returncode == 0:
+ # Check if file was actually created
+ if os.path.exists(output_abs_path):
+ print(f"✅ PDF generated successfully: {output_filename}")
+ print(f"📁 File location: {output_abs_path}")
+ return True
+ else:
+ print(f"⚠️ PDF generation reported success but file not found: {output_filename}")
+ print(f"🔍 Current working directory: {os.getcwd()}")
+ print(f"🔍 Expected file location: {output_abs_path}")
+ print(f"📋 Chrome stdout: {result.stdout}")
+ print(f"📋 Chrome stderr: {result.stderr}")
+ return False
+ else:
+ print(f"❌ PDF generation failed with return code: {result.returncode}")
+ print(f"📋 Chrome stdout: {result.stdout}")
+ print(f"📋 Chrome stderr: {result.stderr}")
+ return False
+
+ except subprocess.TimeoutExpired:
+ print("❌ PDF generation timeout")
+ return False
+ except Exception as e:
+ print(f"❌ PDF generation error: {e}")
+ return False
+
+def cleanup_old_files(tmp_dir, final_pdf_path):
+ """Clean up old files before starting the process"""
+ print("🧹 Cleaning up old files...")
+
+ # Remove existing final PDF if it exists
+ if final_pdf_path.exists():
+ print(f"🗑️ Removing existing final PDF: {final_pdf_path}")
+ final_pdf_path.unlink()
+
+ # Clean up old temporary directory if it exists
+ if tmp_dir.exists():
+ print(f"🗑️ Cleaning up old temporary directory: {tmp_dir}")
+ import shutil
+ shutil.rmtree(tmp_dir)
+
+ print("✅ Cleanup completed")
+
+def cleanup_temp_files(tmp_dir):
+ """Clean up temporary files after successful completion"""
+ try:
+ if tmp_dir.exists():
+ import shutil
+ shutil.rmtree(tmp_dir)
+ print(f"✅ Temporary files cleaned up: {tmp_dir}")
+ else:
+ print("ℹ️ No temporary files to clean up")
+ except Exception as e:
+ print(f"⚠️ Warning: Could not clean up temporary files: {e}")
+ print(f"💡 You can manually delete the folder: {tmp_dir}")
+
+def main():
+ """Main function"""
+ # Parse command line arguments
+ keep_temp = "--keep-temp" in sys.argv
+ if keep_temp:
+ print("📝 Note: Temporary files will be kept (--keep-temp flag detected)")
+
+ print("🚀 Starting Complete PDF Generation Process...")
+
+ # Check if HTML file exists
+ html_file = Path("energie360/energie360-offerte.html")
+ if not html_file.exists():
+ print(f"❌ HTML file not found: {html_file}")
+ return False
+
+ # Create temporary directory for all intermediate files
+ tmp_dir = Path("_tmp")
+
+ # Define output paths
+ source_dir = html_file.parent
+ final_pdf_path = source_dir / "energie360-offerte-final.pdf"
+
+ # Clean up old files
+ cleanup_old_files(tmp_dir, final_pdf_path)
+
+ # Create fresh temporary directory
+ tmp_dir.mkdir(exist_ok=True)
+ print(f"📁 Temporary files will be saved to: {tmp_dir.absolute()}")
+ print(f"📁 Temporary files include: HTML extracts, intermediate PDFs, and analysis data")
+
+ print(f"📁 Final PDF will be saved to: {final_pdf_path}")
+
+ # Setup Chrome options
+ chrome_options = setup_chrome_options()
+
+ # Find Chrome executable
+ chrome_path = find_chrome_executable()
+ if not chrome_path:
+ print("❌ Chrome not found! Please install Google Chrome.")
+ return False
+
+ print(f"✅ Chrome found at: {chrome_path}")
+
+ # Start Chrome driver with retry logic
+ driver = None
+ max_retries = 3
+
+ for attempt in range(max_retries):
+ try:
+ print(f"🔄 Attempt {attempt + 1}/{max_retries} to start Chrome driver...")
+ driver = webdriver.Chrome(options=chrome_options)
+ print("✅ Chrome driver started successfully")
+ break
+ except Exception as e:
+ print(f"❌ Attempt {attempt + 1} failed: {e}")
+ if attempt < max_retries - 1:
+ print("⏳ Waiting 2 seconds before retry...")
+ time.sleep(2)
+ else:
+ print("❌ All attempts to start Chrome driver failed")
+ return False
+
+ try:
+ # ===== FIRST PASS: Generate TOC with estimated page numbers =====
+ print("\n🔄 FIRST PASS: Generating TOC with estimated page numbers...")
+
+ # Open the HTML file
+ html_url = f"file://{os.path.abspath(html_file)}"
+ print(f"🌐 Opening HTML: {html_url}")
+ driver.get(html_url)
+
+ # Wait for page to load
+ time.sleep(3)
+
+ # Wait for TOC generation with estimated numbers
+ try:
+ if not check_driver_health(driver):
+ print("❌ Driver unhealthy after page load")
+ return False
+
+ if not wait_for_toc_completion(driver):
+ print("❌ First pass TOC generation failed")
+ return False
+ except Exception as e:
+ print(f"❌ Error during first pass TOC generation: {e}")
+ return False
+
+ print("✅ First pass TOC completed with estimated page numbers")
+
+ # ===== SECOND PASS: Extract HTML with estimated TOC and generate PDF =====
+ print("\n🔄 SECOND PASS: Extracting HTML with estimated TOC and generating PDF...")
+
+ # Check driver health before extraction
+ if not check_driver_health(driver):
+ print("❌ Driver unhealthy before HTML extraction")
+ return False
+
+ # Extract HTML with estimated TOC for analysis
+ print("📄 Extracting HTML with estimated TOC...")
+ estimated_html = extract_complete_html(driver, "energie360-offerte-estimated.html", tmp_dir)
+
+ # Generate PDF from HTML with estimated TOC
+ estimated_html_path = tmp_dir / "energie360-offerte-estimated.html"
+ estimated_pdf_path = tmp_dir / "energie360-offerte-estimated.pdf"
+ if not generate_pdf_from_complete_html(str(estimated_html_path), str(estimated_pdf_path)):
+ print("❌ PDF generation for analysis failed")
+ return False
+
+ # Analyze PDF to get real page numbers
+ print("📊 Analyzing PDF for real page numbers...")
+ # Use absolute path for PDF analysis
+ pdf_path = estimated_pdf_path.absolute()
+ print(f"📄 Looking for PDF at: {pdf_path}")
+ page_numbers = analyze_pdf_page_numbers(str(pdf_path))
+
+ if not page_numbers:
+ print("❌ PDF analysis failed")
+ return False
+
+ # ===== THIRD PASS: Update TOC with real page numbers =====
+ print("\n🔄 THIRD PASS: Updating TOC with real page numbers...")
+
+ # First, clean existing numbering and add professional outline numbering
+ print("🔧 Cleaning and adding professional outline numbering to headings...")
+ if not clean_and_number_headings_professionally(driver):
+ print("❌ Failed to add professional outline numbering")
+ return False
+
+ # Now create a professional TOC with real page numbers
+ print("🔧 Creating professional TOC with real page numbers...")
+ if not create_professional_toc_with_real_page_numbers(driver, page_numbers):
+ print("❌ Failed to create professional TOC")
+ return False
+
+ # Wait for page counter to update footer
+ if not wait_for_page_counter_completion(driver):
+ print("❌ Page counter update failed")
+ return False
+
+ print("✅ Second pass TOC completed with real page numbers")
+
+ # ===== FINAL: Extract complete HTML and generate final PDF =====
+ print("\n🔄 FINAL: Generating final PDF with accurate TOC and footer...")
+
+ # Extract complete HTML with accurate TOC and footer
+ complete_html = extract_complete_html(driver, "energie360-offerte-final.html", tmp_dir)
+
+ # Generate final PDF from complete HTML
+ final_html_path = tmp_dir / "energie360-offerte-final.html"
+ if generate_pdf_from_complete_html(str(final_html_path), str(final_pdf_path)):
+ print("🎉 Final PDF generation successful!")
+ print(f"📁 Final PDF saved to: {final_pdf_path}")
+
+ # Handle temporary files based on command line flag
+ if keep_temp:
+ print(f"📁 Temporary files kept in: {tmp_dir.absolute()}")
+ print("💡 Use '--keep-temp' flag to automatically clean up temp files")
+ else:
+ print(f"📁 Temporary files are available in: {tmp_dir.absolute()}")
+ print("🧹 Cleaning up temporary files...")
+ cleanup_temp_files(tmp_dir)
+
+ return True
+ else:
+ print("❌ Final PDF generation failed")
+ return False
+
+ except Exception as e:
+ print(f"❌ Error during process: {e}")
+ return False
+ finally:
+ driver.quit()
+ print("✅ Chrome driver closed")
+
+if __name__ == "__main__":
+ success = main()
+ sys.exit(0 if success else 1)
diff --git a/offerten/main.py b/offerten/main.py
new file mode 100644
index 0000000..2ebfc59
--- /dev/null
+++ b/offerten/main.py
@@ -0,0 +1,146 @@
+#!/usr/bin/env python3
+"""
+
+Simple HTML to PDF Generation using Chrome headless
+Renders HTML file to PDF without TOC or page analysis
+"""
+
+import os
+import sys
+import subprocess
+import platform
+from pathlib import Path
+
+def find_chrome_executable():
+ """Find Chrome/Chromium executable based on platform"""
+ system = platform.system()
+
+ if system == "Windows":
+ # Common Chrome paths on Windows
+ chrome_paths = [
+ r"C:\Program Files\Google\Chrome\Application\chrome.exe",
+ r"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe",
+ r"C:\Users\{}\AppData\Local\Google\Chrome\Application\chrome.exe".format(os.getenv('USERNAME')),
+ ]
+
+ for path in chrome_paths:
+ if os.path.exists(path):
+ return path
+
+ # Try to find from registry or PATH
+ try:
+ result = subprocess.run(['where', 'chrome'], capture_output=True, text=True)
+ if result.returncode == 0:
+ return result.stdout.strip().split('\n')[0]
+ except:
+ pass
+
+ elif system == "Darwin": # macOS
+ chrome_paths = [
+ "/Applications/Google Chrome.app/Contents/MacOS/Google Chrome",
+ "/Applications/Chromium.app/Contents/MacOS/Chromium"
+ ]
+
+ for path in chrome_paths:
+ if os.path.exists(path):
+ return path
+
+ else: # Linux
+ chrome_paths = [
+ "google-chrome",
+ "chromium-browser",
+ "chromium",
+ "/usr/bin/google-chrome",
+ "/usr/bin/chromium-browser"
+ ]
+
+ for path in chrome_paths:
+ try:
+ result = subprocess.run(['which', path], capture_output=True)
+ if result.returncode == 0:
+ return path
+ except:
+ continue
+
+ return None
+
+def generate_pdf_chrome(html_path, output_path, chrome_path):
+ """Generate PDF using Chrome headless"""
+ try:
+ # Convert to absolute paths
+ html_path = Path(html_path).resolve()
+ output_path = Path(output_path).resolve()
+
+ # Chrome headless command
+ cmd = [
+ chrome_path,
+ "--headless",
+ "--disable-gpu",
+ "--no-pdf-header-footer", # Remove Chrome's default headers
+ f"--print-to-pdf={output_path}",
+ f"--print-to-pdf-no-header",
+ f"file://{html_path}"
+ ]
+
+ print(f"🔄 Running Chrome headless...")
+ print(f" Input: {html_path}")
+ print(f" Output: {output_path}")
+
+ # Run Chrome
+ result = subprocess.run(cmd, capture_output=True, text=True)
+
+ if result.returncode == 0:
+ print(f"✅ PDF generated successfully!")
+ print(f" Location: {output_path}")
+ return True
+ else:
+ print(f"❌ Chrome error: {result.stderr}")
+ return False
+
+ except Exception as e:
+ print(f"❌ Error: {e}")
+ return False
+
+def main():
+ """Main function"""
+ # Get script directory
+ script_dir = Path(__file__).parent
+ energie360_dir = script_dir / 'energie360'
+
+ # File paths
+ html_file = energie360_dir / 'energie360-offerte.html'
+ output_pdf = energie360_dir / 'energie360-offerte.pdf'
+
+ # Check if HTML file exists
+ if not html_file.exists():
+ print(f"❌ HTML file not found: {html_file}")
+ return False
+
+ print("🚀 HTML to PDF Generation")
+ print("=" * 30)
+
+ # Try to find Chrome
+ chrome_path = find_chrome_executable()
+
+ if chrome_path:
+ print(f"✅ Chrome found: {chrome_path}")
+
+ # Generate PDF
+ print("\n🔄 Generating PDF...")
+ success = generate_pdf_chrome(html_file, output_pdf, chrome_path)
+
+ if success:
+ print(f"\n🎉 PDF generated successfully!")
+ print(f"📄 Output: {output_pdf}")
+ return True
+ else:
+ print("\n❌ PDF generation failed")
+ return False
+
+ else:
+ print("⚠️ Chrome not found, cannot generate PDF")
+ return False
+
+if __name__ == "__main__":
+ success = main()
+ sys.exit(0 if success else 1)
diff --git a/offerten/requirements.txt b/offerten/requirements.txt
new file mode 100644
index 0000000..0fd0dc0
--- /dev/null
+++ b/offerten/requirements.txt
@@ -0,0 +1,9 @@
+weasyprint>=60.0
+beautifulsoup4>=4.12.0
+lxml>=4.9.0
+
+PyMuPDF==1.23.8 # For PDF analysis and text extraction
+pathlib2==2.3.7 # For cross-platform path handling (if not using Python 3.4+)
+
+selenium==4.15.2
+webdriver-manager==4.0.1
diff --git a/offerten/switzerland-com/2025-08-27 PowerOn STC.pptx b/offerten/switzerland-com/2025-08-27 PowerOn STC.pptx
new file mode 100644
index 0000000..8d97efd
Binary files /dev/null and b/offerten/switzerland-com/2025-08-27 PowerOn STC.pptx differ
diff --git a/offerten/switzerland-com/2025-08-27 PowerOn Use Cases STC.md b/offerten/switzerland-com/2025-08-27 PowerOn Use Cases STC.md
new file mode 100644
index 0000000..b6df355
--- /dev/null
+++ b/offerten/switzerland-com/2025-08-27 PowerOn Use Cases STC.md
@@ -0,0 +1,74 @@
+# PowerOn Use Cases für Schweiz Tourismus
+
+## Übersicht
+
+Dieses Dokument beschreibt spezifische Use Cases für die PowerOn AI Platform im Kontext der Schweiz Tourismus Organisation (STC). Die Use Cases zeigen, wie die verschiedenen Methoden der Plattform eingesetzt werden können, um Tourismus-Prozesse zu optimieren.
+
+## Use Cases Übersicht
+
+| Use Case | Ziel | Hauptmethoden | Nutzen |
+|----------|------|---------------|---------|
+| **Intelligente Reiseplanung** | Personalisierte Reiseempfehlungen basierend auf Benutzerpräferenzen | Web, AI, Document, Outlook | Höhere Kundenbindung, bessere Conversion-Raten |
+| **Content-Erstellung & Lokalisierung** | Mehrsprachige Tourismus-Inhalte effizient erstellen | Document, AI, Web, SharePoint | Schnellere Markteinführung, lokale Relevanz |
+| **Event-Management & Besucheranalyse** | Events durch datenbasierte Erkenntnisse optimieren | Web, AI, Document, Outlook | Bessere Besuchererfahrung, höhere Event-Erfolge |
+
+### **Detaillierte Beschreibungen**
+
+
+Use Case 1: Intelligente Reiseplanung & Personalisierung
+
+**Ziel**: Automatisierte, personalisierte Reiseempfehlungen basierend auf Benutzerpräferenzen
+
+**Methoden-Einsatz**:
+- **Web Method**: Sammeln aktueller Informationen über Sehenswürdigkeiten, Events, Wetter
+- **AI Method**: Analyse von Benutzerverhalten und Präferenzen
+- **Document Method**: Erstellung personalisierter Reiseführer und Itineraries
+- **Outlook Method**: Automatische Versendung von personalisierten Angeboten
+
+**Customer Journey**: Datensammlung → Personalisierung → Content-Generierung → Kommunikation → Optimierung
+
+
+
+Use Case 2: Automatisierte Content-Erstellung & Lokalisierung
+
+**Ziel**: Effiziente Erstellung und Lokalisierung von Tourismus-Content in mehreren Sprachen
+
+**Methoden-Einsatz**:
+- **Document Method**: Extraktion von Informationen aus bestehenden Quellen
+- **AI Method**: Übersetzung und Lokalisierung von Content
+- **Web Method**: Recherche nach lokalen Besonderheiten und kulturellen Aspekten
+- **SharePoint Method**: Verwaltung und Versionierung der mehrsprachigen Inhalte
+
+**Customer Journey**: Content-Extraktion → Lokalisierung → Qualitätssicherung → Veröffentlichung → Performance-Tracking
+
+
+
+Use Case 3: Intelligente Event-Management & Besucheranalyse
+
+**Ziel**: Optimierung von Events und Besuchererfahrungen durch datenbasierte Erkenntnisse
+
+**Methoden-Einsatz**:
+- **Web Method**: Sammeln von Feedback und Bewertungen aus verschiedenen Quellen
+- **AI Method**: Sentiment-Analyse und Trend-Erkennung
+- **Document Method**: Erstellung von Event-Berichten und Optimierungsvorschlägen
+- **Outlook Method**: Automatische Benachrichtigung von Stakeholdern über wichtige Erkenntnisse
+
+**Customer Journey**: Datensammlung → Analyse → Reporting → Optimierung → Monitoring
+
+
+## Technische Umsetzung
+
+Alle Use Cases nutzen die PowerOn Methoden-Toolbox:
+- **Web Method**: Automatisierte Datensammlung von verschiedenen Quellen
+- **Document Method**: Intelligente Extraktion und Analyse von Informationen
+- **Outlook Method**: Automatische Email-Benachrichtigungen und Teams-Integration
+- **SharePoint Method**: Strukturierte Datenspeicherung und -verwaltung
+- **GoogleDrive Method**: Integration mit Google Workspace
+- **AI Method**: Intelligente Auswertung und Generierung von Erkenntnissen
+
+## Nächste Schritte
+
+1. **Proof of Concept**: Implementierung eines Use Cases als Pilotprojekt
+2. **Schulung**: Einarbeitung der STC-Mitarbeiter in die PowerOn Plattform
+3. **Skalierung**: Schrittweise Ausweitung auf weitere Use Cases
+4. **Optimierung**: Kontinuierliche Verbesserung basierend auf Nutzer-Feedback
diff --git a/offerten/switzerland-com/2025-08-27 PowerOn_Praesentation.md b/offerten/switzerland-com/2025-08-27 PowerOn_Praesentation.md
new file mode 100644
index 0000000..511469e
--- /dev/null
+++ b/offerten/switzerland-com/2025-08-27 PowerOn_Praesentation.md
@@ -0,0 +1,166 @@
+# PowerOn AI Platform
+
+## 1. Was ist PowerOn? - Zweck und Ziel
+
+PowerOn ist eine **Multi-Methoden-KI-Plattform**, die spezialisierte Methoden und Actions intelligent orchestriert, um komplexe geschäftliche Herausforderungen zu lösen. Die Plattform kombiniert menschliche Expertise mit KI-Effizienz in einem modularen, skalierbaren System.
+
+### Kernziele:
+- **Intelligente Orchestrierung** spezialisierter Methoden und Actions
+- **Demokratisierung von KI-Fähigkeiten** für alle Mitarbeiter
+- **Beschleunigung von Entscheidungsprozessen** durch automatisierte Datenanalyse
+- **Nahtlose Integration** in bestehende Unternehmenssysteme
+
+### Architektur-Übersicht:
+
+```mermaid
+flowchart TB
+ subgraph Frontend ["Frontend"]
+ UI["Benutzeroberfläche"]
+ end
+
+ subgraph Backend ["Backend"]
+ API["API Layer"] --- CORE["Core Services"]
+ end
+
+ subgraph Methods ["Methods & Actions"]
+ M1["Web Method"] --- M2["Document Method"] --- M3["Outlook Method"] --- M4["AI Method"] --- M5["SharePoint Method"] --- M6["GoogleDrive Method"]
+ end
+
+ subgraph External ["Externe Systeme"]
+ AI["AI Provider"] --- MS["Microsoft Services"] --- WEB["Web Services"]
+ end
+
+ subgraph Data ["Daten"]
+ DB["Datenbank"]
+ end
+
+ UI --> API
+ API --> CORE
+ CORE --> Methods
+ Methods --> External
+ Methods --> DB
+ CORE --> DB
+
+ classDef frontendClass fill:#D6EAF8,stroke:#2E86C1,stroke-width:2px
+ classDef backendClass fill:#D5F5E3,stroke:#239B56,stroke-width:2px
+ classDef methodClass fill:#F5A7A7,stroke:#F07272,stroke-width:2px,color:white
+ classDef externalClass fill:#F5EEF8,stroke:#8E44AD,stroke-width:2px
+ classDef dataClass fill:#FADBD8,stroke:#C0392B,stroke-width:2px
+
+ class UI frontendClass
+ class API,CORE backendClass
+ class M1,M2,M3,M4,M5,M6 methodClass
+ class AI,MS,WEB externalClass
+ class DB dataClass
+```
+
+## 2. Warum haben wir PowerOn gebaut?
+
+### Hauptgründe:
+
+#### 1. **Kontrolle über Daten und Datenflüsse**
+- **Vollständige Transparenz**: Alle Datenverarbeitungsschritte sind nachvollziehbar
+- **Lokale Datenspeicherung**: Keine ungewollte Datenweitergabe an Dritte
+- **DSGVO-konform**: Compliance durch kontrollierte Datenverarbeitung
+
+#### 2. **Compliance erfüllen mit Neutralisierer**
+- **Automatische Datenklassifizierung**: Erkennung sensibler Informationen
+- **Intelligente Maskierung**: Automatische Anonymisierung von personenbezogenen Daten
+- **Audit-Trail**: Vollständige Protokollierung aller Datenzugriffe
+
+#### 3. **Plug-and-Play Implementierung beim Kunden**
+- **myConnectors**: Einfache Integration ohne teure ERP-Systeme
+- **Standardisierte Schnittstellen**: Schnelle Anbindung bestehender Systeme
+- **Minimaler Implementierungsaufwand**: Betriebsbereit in 1-2 Wochen
+
+#### 4. **Workflow Engine und UIs beliebig koppelbar**
+- **Modulare Architektur**: Flexibel kombinierbare Methoden und Actions
+- **Offene Schnittstellen**: Einfache Erweiterung und Anpassung
+- **Skalierbare Workflows**: Von einfachen Aufgaben bis zu komplexen Prozessen
+
+### Workflow-System mit Methoden und Actions:
+
+```mermaid
+flowchart TB
+ USER((Benutzer / Trigger))
+ AUTH[Authentifizierung]
+ WF_INIT[Workflow- Initialisierung]
+ WF_EXEC[Workflow- Ausführung]
+ RESULT_COLLECT[Ergebnis- Sammlung]
+
+ subgraph Methods ["Methoden-Toolbox"]
+ WEB_METHOD["Web Method • Search • Crawl"] --- DOC_METHOD["Document Method • Extract • Analyze"] --- OUTLOOK_METHOD["Outlook Method • Compose • Send"] --- AI_METHOD["AI Method • Analyze • Generate"] --- SHAREPOINT_METHOD["SharePoint Method • Read • Write"] --- GOOGLEDRIVE_METHOD["GoogleDrive Method • Read • Write"]
+ end
+
+ USER -->|Login| AUTH
+ AUTH -->|Workspace| WF_INIT
+ WF_INIT -->|Kontext| WF_EXEC
+ WF_EXEC -->|Methoden| Methods
+ Methods -->|Ergebnisse| RESULT_COLLECT
+ RESULT_COLLECT -->|Feedback| USER
+ USER -->|Eingriffe| WF_EXEC
+
+ classDef userClass fill:#68A7AD,stroke:#376B6D,stroke-width:2px,color:white
+ classDef processClass fill:#99C4C8,stroke:#5E8B8F,stroke-width:1px
+ classDef methodClass fill:#F5A7A7,stroke:#F07272,stroke-width:2px,color:white
+
+ class USER userClass
+ class AUTH,WF_INIT,WF_EXEC,RESULT_COLLECT processClass
+ class WEB_METHOD,DOC_METHOD,OUTLOOK_METHOD,AI_METHOD,SHAREPOINT_METHOD,GOOGLEDRIVE_METHOD methodClass
+```
+
+## 3. Einsatz-Beispiele: Customer Journey & Use Cases
+
+### **Customer Journey: Immobilienprojekte & Produktvertrieb**
+
+#### **Phase 1: Web-Research & Datensammlung**
+- **Web-Research**: Automatisierte Suche nach Immobilienprojekten oder Produktinformationen
+- **Daten-Extraktion**: Sammeln von Preisen, Verfügbarkeiten, Kontaktdaten
+- **Marktanalyse**: Identifikation von Trends und Wettbewerbern
+
+#### **Phase 2: Auswertung der Ergebnisse**
+- **Datenanalyse**: KI-basierte Auswertung der gesammelten Informationen
+- **Trend-Erkennung**: Automatische Identifikation von Mustern und Entwicklungen
+- **Qualitätsbewertung**: Bewertung der Datenqualität und Relevanz
+
+#### **Phase 3: Formatierung für interne Weiterverarbeitung**
+- **Strukturierung**: Automatische Aufbereitung in standardisierte Formate
+- **Berichtgenerierung**: Erstellung von Zusammenfassungen und Dashboards
+- **Dokumentation**: Archivierung und Kategorisierung der Ergebnisse
+
+#### **Phase 4: Automatische Zuweisung zu Verantwortlichen**
+- **Workflow-Orchestrierung**: Intelligente Weiterleitung basierend auf Inhalten
+- **Multi-Channel-Integration**: Automatische Benachrichtigung per Email, Teams, Slack, Jira
+- **Aufgabenverwaltung**: Erstellung und Zuweisung von Follow-up-Aufgaben
+
+#### **Phase 5: Dashboard & Performance-Monitoring**
+- **Prozess-Überwachung**: Echtzeit-Einblicke in Workflow-Fortschritte
+- **Conversion-Tracking**: Messung von Erfolgsraten und Durchlaufzeiten
+- **Performance-Analyse**: Identifikation von Optimierungspotenzialen
+
+### **Technische Umsetzung:**
+- **Web Method**: Automatisierte Datensammlung von verschiedenen Quellen
+- **Document Method**: Intelligente Extraktion und Analyse von Informationen
+- **Outlook Method**: Automatische Email-Benachrichtigungen und Teams-Integration
+- **SharePoint Method**: Strukturierte Datenspeicherung und -verwaltung
+- **AI Method**: Intelligente Auswertung und Generierung von Erkenntnissen
+
+
+
+---
+
+## Zusammenfassung
+
+PowerOn ist eine **flexible KI-Plattform**, die Unternehmen dabei hilft:
+
+1. **Kontrolle über ihre Daten** zu behalten
+2. **Compliance-Anforderungen** automatisch zu erfüllen
+3. **Schnell und kostengünstig** zu implementieren
+4. **Flexibel und skalierbar** zu wachsen
+
+Die Plattform kombiniert **menschliche Kreativität** mit **KI-Effizienz** und schafft ein konfigurierbares System, so wie es benötigt wird.
+
+**Nächste Schritte:**
+- Kostenlose Demo
+- Proof of Concept mit spezifischen Anwendungsfall
+- Massgeschneiderte Implementierung planen
diff --git a/poweron/2025-07_chat_process_visualization.md b/poweron/2025-07_chat_process_visualization.md
index 7b39b11..5a43c2c 100644
--- a/poweron/2025-07_chat_process_visualization.md
+++ b/poweron/2025-07_chat_process_visualization.md
@@ -1239,7 +1239,7 @@ graph TD
│ │ │ Parameter │ │ Value │ │ Description │ │
│ │ ├─────────────────┤ ├─────────────────┤ ├─────────────────┤ │
│ │ │ file_path │ │ {extracted_text}│ │ File to upload │ │
-│ │ │ file_name │ │ report_processed│ │ Custom filename │ │
+│ │ │ file_name │ │ report_processed│ │ Custom fileName │ │
│ │ │ file_extension │ │ .pdf │ │ File extension │ │
│ │ └─────────────────┘ └─────────────────┘ └─────────────────┘ │
│ │ │
diff --git a/poweron/appdoc/react_ui_specification.md b/poweron/appdoc/react_ui_specification.md
new file mode 100644
index 0000000..a3ca03b
--- /dev/null
+++ b/poweron/appdoc/react_ui_specification.md
@@ -0,0 +1,483 @@
+# React-UI Spezifikation für PowerOn Frontend
+
+## Übersicht
+
+Diese Spezifikation definiert die strukturellen und architektonischen Prinzipien für das React-UI für PowerOn und weitere UI's.
+
+## 1. Architektur-Übersicht
+
+### 1.1 Generische UI-Anforderungen
+
+Das UI soll:
+
+- **Modular und erweiterbar** sein: Neue Module können einfach hinzugefügt werden ohne bestehenden Code zu ändern
+- **Konsistent und einheitlich** sein: Alle Module folgen den gleichen Design-Patterns und Verhaltensweisen
+- **Responsive und zugänglich** sein: Funktioniert auf allen Geräten und ist barrierefrei
+- **Performance-optimiert** sein: Schnelle Ladezeiten und flüssige Interaktionen
+- **Wartbar und testbar** sein: Klare Struktur, umfassende Tests und Dokumentation
+- **Sicher und robust** sein: Fehlerbehandlung, Input-Validierung und sichere API-Kommunikation
+- **Internationalisierbar** sein: Mehrsprachige Unterstützung für alle UI-Elemente
+- **Konfigurierbar** sein: Verhalten und Aussehen können über Konfiguration angepasst werden
+
+### 1.2 React-Architektur-Spezifikation
+
+Das React-UI MUSS folgende Kernelemente implementieren:
+
+#### **1.2.1 FormGeneric-Komponente**
+- EINE zentrale CRUD-Komponente für alle Module
+- Automatische Formular-Generierung basierend auf Backend-Modell-Definitionen
+- Einheitliche Validierung und Fehlerbehandlung
+- Unterstützung für alle Standard-Feldtypen (Text, Number, Date, Select, etc.)
+
+#### **1.2.2 Modul-Management-System**
+- Zentrale Klasse für Modul-Loading, -Aktivierung und -Deaktivierung
+- Dynamisches Laden von Modulen zur Laufzeit
+- Modul-spezifische Konfiguration und State-Isolation
+- Einheitliche Modul-Lifecycle-Verwaltung
+
+#### **1.2.3 Globaler State-Management**
+- EINE zentrale State-Management-Lösung für alle Module
+- Konsistente Datenhaltung und -synchronisation
+- Modul-übergreifende Datenfreigabe
+- Optimistic Updates und Rollback-Mechanismen
+
+#### **1.2.4 Timezone-Aware Timestamp-System**
+- Alle Timestamps MÜSSEN timezone-aware sein
+- Konsistente Darstellung in allen Modulen
+- Automatische Konvertierung zwischen Zeitzonen
+- Integration mit Backend-Timestamp-Format
+
+#### **1.2.5 Zentrale API-Kommunikation**
+- Einheitliche API-Call-Verwaltung
+- Automatische Error-Handling und Retry-Mechanismen
+- Request/Response-Interceptoren
+- Caching-Strategien für Performance
+
+#### **1.2.6 Konfigurationsverwaltung**
+- Globale Konfiguration für UI-Verhalten
+- Umgebungs-spezifische Konfiguration (dev/prod)
+- Feature-Flags für modulare Aktivierung
+- Zentrale Validierungsregeln
+
+## 2. Konfigurationsverwaltung
+
+### 2.1 Konfigurationsarchitektur
+
+Das UI verwendet eine zweistufige Konfigurationsverwaltung:
+
+#### **Globale Konfiguration (config.js)**
+```typescript
+// Zentrale Konfigurationsverwaltung für globale Variablen
+interface GlobalConfig {
+ // API-Konfiguration
+ apiBaseUrl: string;
+ apiTimeout: number;
+
+ // UI-Konfiguration
+ defaultLanguage: string;
+ theme: 'light' | 'dark' | 'auto';
+ pageSize: number;
+
+ // Feature-Flags
+ features: {
+ enableAdvancedSearch: boolean;
+ enableBulkOperations: boolean;
+ enableRealTimeUpdates: boolean;
+ };
+
+ // Validierung
+ validation: {
+ maxFileSize: number;
+ allowedFileTypes: string[];
+ passwordMinLength: number;
+ };
+}
+
+// Konfigurationsservice
+class ConfigService {
+ private config: GlobalConfig;
+
+ get(key: string): any;
+ set(key: string, value: any): void;
+ getApiBaseUrl(): string;
+ getFeatureFlag(flag: string): boolean;
+}
+```
+
+#### **Umgebungs-spezifische Konfiguration (env)**
+```typescript
+// Umgebungsvariablen für spezifische Konfigurationen
+interface EnvironmentConfig {
+ // Umgebung
+ NODE_ENV: 'development' | 'production' | 'test';
+ APP_ENV: 'dev' | 'int' | 'prod';
+
+ // API-Endpunkte
+ API_BASE_URL: string;
+ API_TIMEOUT: number;
+
+ // Debugging
+ DEBUG_MODE: boolean;
+ LOG_LEVEL: 'debug' | 'info' | 'warn' | 'error';
+
+ // Externe Services
+ GOOGLE_CLIENT_ID?: string;
+ MICROSOFT_CLIENT_ID?: string;
+
+ // Build-spezifisch
+ BUILD_VERSION: string;
+ BUILD_TIMESTAMP: string;
+}
+
+// Environment Service
+class EnvironmentService {
+ get(key: keyof EnvironmentConfig): string | undefined;
+ isDevelopment(): boolean;
+ isProduction(): boolean;
+ getApiBaseUrl(): string;
+}
+```
+
+### 2.2 Konfigurationshierarchie
+
+```typescript
+// Konfigurationspriorität (höchste zu niedrigste):
+// 1. Umgebungsvariablen (env)
+// 2. Globale Konfiguration (config.js)
+// 3. Standardwerte (defaults)
+
+class ConfigurationManager {
+ private envConfig: EnvironmentConfig;
+ private globalConfig: GlobalConfig;
+ private defaults: GlobalConfig;
+
+ get(key: string): any {
+ // Prüfe Umgebungsvariablen zuerst
+ if (this.envConfig[key]) {
+ return this.envConfig[key];
+ }
+
+ // Dann globale Konfiguration
+ if (this.globalConfig[key]) {
+ return this.globalConfig[key];
+ }
+
+ // Schließlich Standardwerte
+ return this.defaults[key];
+ }
+}
+```
+
+### 2.3 React-Integration
+
+```typescript
+// React Hook für Konfiguration
+const useConfig = () => {
+ const [config, setConfig] = useState();
+
+ useEffect(() => {
+ // Lade Konfiguration beim Mount
+ const loadConfig = async () => {
+ const configData = await configService.load();
+ setConfig(configData);
+ };
+
+ loadConfig();
+ }, []);
+
+ return {
+ config,
+ get: (key: string) => config?.[key],
+ isFeatureEnabled: (feature: string) => config?.features?.[feature] || false,
+ getApiBaseUrl: () => config?.apiBaseUrl || envService.getApiBaseUrl()
+ };
+};
+
+// Verwendung in Komponenten
+const MyComponent = () => {
+ const { config, isFeatureEnabled, getApiBaseUrl } = useConfig();
+
+ return (
+
+);
+```
+
+### 6.2 Design-System
+
+```css
+/* Design-Tokens */
+:root {
+ --color-primary: #3b82f6;
+ --color-secondary: #6b7280;
+ --color-success: #10b981;
+ --color-warning: #f59e0b;
+ --color-error: #ef4444;
+
+ --spacing-xs: 0.25rem;
+ --spacing-sm: 0.5rem;
+ --spacing-md: 1rem;
+ --spacing-lg: 1.5rem;
+
+ --border-radius: 0.375rem;
+ --box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
+}
+```
+
+## 7. Performance-Optimierungen
+
+### 7.1 Lazy Loading
+
+```typescript
+// Lazy Loading für Module
+const UsersModule = React.lazy(() => import('./modules/Users'));
+const ConnectionsModule = React.lazy(() => import('./modules/Connections'));
+
+// Suspense-Wrapper
+}>
+
+
+```
+
+### 7.2 Memoization
+
+```typescript
+// Optimierte Komponenten mit React.memo
+const DataTable = React.memo(({ data, columns }) => {
+ // Komponente wird nur neu gerendert wenn sich data oder columns ändern
+});
+```
+
+## 8. Testing-Strategie
+
+### 8.1 Unit Tests
+
+```typescript
+// Jest + React Testing Library
+describe('FormGeneric', () => {
+ it('should render table with data', () => {
+ render();
+ expect(screen.getByRole('table')).toBeInTheDocument();
+ });
+});
+```
+
+### 8.2 Integration Tests
+
+```typescript
+// API-Integration Tests
+describe('UserService', () => {
+ it('should fetch users from API', async () => {
+ const users = await userService.getUsers();
+ expect(users).toHaveLength(2);
+ });
+});
+```
+
+## 9. Implementierungsrichtlinien
+
+### 9.1 Code-Qualität
+
+- **TypeScript**: Strikte Typisierung für alle Komponenten und Services
+- **ESLint**: Code-Qualitätsregeln und Konsistenz
+
+### 9.2 Dokumentation
+
+- **Storybook**: Komponenten-Dokumentation
+- **README**: Setup und Entwicklungsanweisungen
+
diff --git a/poweron/doc_statemachine_frontend.md b/poweron/doc_statemachine_frontend.md
index e60c7e0..a35f46a 100644
--- a/poweron/doc_statemachine_frontend.md
+++ b/poweron/doc_statemachine_frontend.md
@@ -68,7 +68,7 @@ Die Chat-Workflow-Frontend-Logik implementiert eine State Machine, die Benutzeri
```json
{
"id": "number|string", // numerisch oder UUID
- "name": "filename.ext",
+ "name": "fileName.ext",
"size": int,
"mimeType": "string", // MIME-Type (z.B. application/pdf)
"base64Encoded": boolean, // optional
diff --git a/test_neutralizer/apprun.py b/test_neutralizer/apprun.py
deleted file mode 100644
index 609124f..0000000
--- a/test_neutralizer/apprun.py
+++ /dev/null
@@ -1,263 +0,0 @@
-"""
-DSGVO-konformer Daten-Neutralisierer für KI-Agentensysteme
-Unterstützt TXT, JSON, CSV, Excel und Word-Dateien
-Mehrsprachig: DE, EN, FR, IT
-"""
-
-import os
-import shutil
-import logging
-import csv
-import json
-import pandas as pd
-from datetime import datetime
-from pathlib import Path
-from neutralizer import DataAnonymizer
-import traceback
-
-# Define directories
-SCRIPT_DIR = Path(__file__).parent
-INPUT_DIR = SCRIPT_DIR / 'input'
-OUTPUT_DIR = SCRIPT_DIR / 'output'
-LOG_DIR = SCRIPT_DIR / 'logs'
-LOG_MAPPING = LOG_DIR / 'log_mapping.csv'
-LOG_REPLACEMENTS = LOG_DIR / 'log_replacements.csv'
-
-# Configure logging
-logging.basicConfig(
- level=logging.DEBUG,
- format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
- handlers=[
- logging.StreamHandler()
- ]
-)
-logger = logging.getLogger(__name__)
-
-def setup_directories():
- """Setup output and log directories"""
- # Close any existing log handlers
- for handler in logger.handlers[:]:
- handler.close()
- logger.removeHandler(handler)
-
- # Clear and recreate output directory
- output_dir = Path("output")
- if output_dir.exists():
- shutil.rmtree(output_dir)
- output_dir.mkdir()
- logger.info(f"Output directory '{output_dir}' created")
-
- # Clear and recreate logs directory
- log_dir = Path("logs")
- if log_dir.exists():
- shutil.rmtree(log_dir)
- log_dir.mkdir()
- logger.info(f"Log directory '{log_dir}' created")
-
- # Create log files
- mapping_log = log_dir / "log_mapping.csv"
- replacements_log = log_dir / "log_replacements.csv"
-
- # Create headers for mapping log
- with open(mapping_log, 'w', newline='', encoding='utf-8') as f:
- writer = csv.writer(f)
- writer.writerow(['timestamp', 'success', 'file_name', 'replaced_fields', 'content_type', 'headers', 'row_count'])
-
- # Create headers for replacements log
- with open(replacements_log, 'w', newline='', encoding='utf-8') as f:
- writer = csv.writer(f)
- writer.writerow(['timestamp', 'success', 'file_name', 'original', 'replacement'])
-
- # Reconfigure logging with new log file
- for handler in logger.handlers[:]:
- handler.close()
- logger.removeHandler(handler)
-
- file_handler = logging.FileHandler(LOG_DIR / 'app.log', encoding='utf-8')
- file_handler.setFormatter(logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s'))
- logger.addHandler(file_handler)
-
- return output_dir, log_dir
-
-def log_mapping(log_dir: Path, file_name: str, success: bool, replaced_fields: list):
- """Log mapping information"""
- try:
- with open(log_dir / "log_mapping.csv", 'a', newline='', encoding='utf-8') as f:
- writer = csv.writer(f)
- writer.writerow([
- datetime.now().isoformat(),
- file_name,
- success,
- ';'.join(replaced_fields) if replaced_fields else '',
- 'unknown'
- ])
- except Exception as e:
- logger.error(f"Error logging mapping: {str(e)}")
-
-def log_replacements(log_dir: Path, file_name: str, mapping: dict):
- """Log replacement information"""
- try:
- with open(log_dir / "log_replacements.csv", 'a', newline='', encoding='utf-8') as f:
- writer = csv.writer(f)
- for original, replacement in mapping.items():
- writer.writerow([
- datetime.now().isoformat(),
- file_name,
- original,
- replacement
- ])
- except Exception as e:
- logger.error(f"Error logging replacements: {str(e)}")
-
-def save_anonymized_data(data: any, output_path: Path, file_type: str):
- """Save anonymized data to file"""
- try:
- if file_type == '.csv':
- if isinstance(data, pd.DataFrame):
- data.to_csv(output_path, index=False, encoding='utf-8')
- else:
- raise ValueError("Data must be a DataFrame for CSV output")
- elif file_type == '.json':
- if isinstance(data, pd.DataFrame):
- data.to_json(output_path, orient='records', force_ascii=False)
- else:
- with open(output_path, 'w', encoding='utf-8') as f:
- json.dump(data, f, ensure_ascii=False, indent=2)
- elif file_type == '.xml':
- if isinstance(data, str):
- with open(output_path, 'w', encoding='utf-8') as f:
- f.write(data)
- else:
- raise ValueError("Data must be a string for XML output")
- elif file_type in ['.txt', '.docx']:
- if isinstance(data, str):
- with open(output_path, 'w', encoding='utf-8') as f:
- f.write(data)
- else:
- raise ValueError("Data must be a string for text output")
- else:
- raise ValueError(f"Unsupported file type: {file_type}")
- except Exception as e:
- logger.error(f"Error saving anonymized data to {output_path}: {str(e)}")
- raise
-
-def read_file_content(file_path: Path) -> tuple[str, str]:
- """Read file content and determine content type"""
- try:
- file_type = file_path.suffix.lower()
- if file_type == '.docx':
- import docx
- doc = docx.Document(file_path)
- content = '\n'.join(para.text for para in doc.paragraphs)
- else:
- with open(file_path, 'r', encoding='utf-8') as f:
- content = f.read()
- return content, file_type
- except Exception as e:
- logger.error(f"Error reading file {file_path}: {str(e)}")
- raise
-
-def process_file(file_path: Path, anonymizer: DataAnonymizer) -> bool:
- """Process a single file and save anonymized version"""
- try:
- # Read file content
- content = file_path.read_text(encoding='utf-8')
-
- # Process content
- result = anonymizer.process_content(content, file_path.suffix[1:])
-
- if result.data is None:
- logger.error(f"Failed to process {file_path.name}")
- return False
-
- # Save anonymized content with neutralized_ prefix
- output_path = OUTPUT_DIR / f"neutralized_{file_path.name}"
- if file_path.suffix.lower() == '.csv':
- result.data.to_csv(output_path, index=False)
- elif file_path.suffix.lower() == '.json':
- with open(output_path, 'w', encoding='utf-8') as f:
- json.dump(result.data, f, indent=2)
- elif file_path.suffix.lower() == '.xml':
- with open(output_path, 'w', encoding='utf-8') as f:
- f.write(result.data)
- else:
- # For text files, preserve original whitespace
- with open(output_path, 'w', encoding='utf-8') as f:
- f.write(result.data)
-
- # Log processing details
- timestamp = datetime.now().isoformat()
- success = True
-
- # Create detailed log entry
- log_entry = {
- 'timestamp': timestamp,
- 'success': success,
- 'file_name': file_path.name,
- 'replaced_fields': ';'.join(set(result.replaced_fields)), # Use set to remove duplicates
- 'content_type': result.processed_info.get('type', 'unknown')
- }
-
- # Add type-specific details
- if result.processed_info['type'] == 'table':
- log_entry.update({
- 'headers': ';'.join(result.processed_info['headers']),
- 'row_count': result.processed_info['row_count']
- })
- elif result.processed_info['type'] == 'text':
- tables = result.processed_info.get('tables', [])
- text_sections = result.processed_info.get('text_sections', [])
- log_entry.update({
- 'headers': '', # Empty for text files
- 'row_count': sum(s['length'] for s in text_sections) # Total text length
- })
-
- # Write to log file
- with open(LOG_MAPPING, 'a', newline='', encoding='utf-8') as f:
- writer = csv.DictWriter(f, fieldnames=log_entry.keys())
- if f.tell() == 0: # Write header if file is empty
- writer.writeheader()
- writer.writerow(log_entry)
-
- # Log replacements
- for original, replacement in result.mapping.items():
- with open(LOG_REPLACEMENTS, 'a', newline='', encoding='utf-8') as f:
- writer = csv.writer(f)
- writer.writerow([timestamp, success, file_path.name, original, replacement])
-
- return True
-
- except Exception as e:
- logger.error(f"Error processing {file_path.name}: {str(e)}")
- logger.debug(traceback.format_exc())
- return False
-
-def main():
- # Setup directories
- setup_directories()
-
- # Initialize anonymizer
- anonymizer = DataAnonymizer()
-
- # Process all files
- logger.info("Starting file processing...")
- testdata_dir = Path("testdata")
-
- for file_path in testdata_dir.glob("*.*"):
- try:
- logger.info(f"Processing file: {file_path.name}")
-
- # Process file
- if process_file(file_path, anonymizer):
- logger.info(f"Anonymization completed for {file_path.name}")
- else:
- logger.error(f"Error processing {file_path.name}")
-
- except Exception as e:
- logger.error(f"Error processing {file_path.name}: {str(e)}")
- continue
-
- logger.info("Processing completed!")
-
-if __name__ == "__main__":
- main()
\ No newline at end of file
diff --git a/test_neutralizer/logs/app.log b/test_neutralizer/logs/app.log
deleted file mode 100644
index 4c56465..0000000
--- a/test_neutralizer/logs/app.log
+++ /dev/null
@@ -1,34 +0,0 @@
-2025-06-07 18:12:07,994 - __main__ - INFO - Starting file processing...
-2025-06-07 18:12:07,995 - __main__ - INFO - Processing file: Case.md
-2025-06-07 18:12:08,020 - __main__ - INFO - Anonymization completed for Case.md
-2025-06-07 18:12:08,020 - __main__ - INFO - Processing file: customers.csv
-2025-06-07 18:12:08,050 - __main__ - INFO - Anonymization completed for customers.csv
-2025-06-07 18:12:08,050 - __main__ - INFO - Processing file: cv_lara_meier.txt
-2025-06-07 18:12:08,076 - __main__ - INFO - Anonymization completed for cv_lara_meier.txt
-2025-06-07 18:12:08,076 - __main__ - INFO - Processing file: employees.csv
-2025-06-07 18:12:08,098 - __main__ - INFO - Anonymization completed for employees.csv
-2025-06-07 18:12:08,099 - __main__ - INFO - Processing file: english.txt
-2025-06-07 18:12:08,119 - __main__ - INFO - Anonymization completed for english.txt
-2025-06-07 18:12:08,119 - __main__ - INFO - Processing file: example.json
-2025-06-07 18:12:08,143 - __main__ - INFO - Anonymization completed for example.json
-2025-06-07 18:12:08,143 - __main__ - INFO - Processing file: example.xml
-2025-06-07 18:12:08,174 - __main__ - INFO - Anonymization completed for example.xml
-2025-06-07 18:12:08,176 - __main__ - INFO - Processing file: french.txt
-2025-06-07 18:12:08,198 - __main__ - INFO - Anonymization completed for french.txt
-2025-06-07 18:12:08,199 - __main__ - INFO - Processing file: german.txt
-2025-06-07 18:12:08,222 - __main__ - INFO - Anonymization completed for german.txt
-2025-06-07 18:12:08,222 - __main__ - INFO - Processing file: geschaeftsstrategie.txt
-2025-06-07 18:12:08,251 - __main__ - INFO - Anonymization completed for geschaeftsstrategie.txt
-2025-06-07 18:12:08,251 - __main__ - INFO - Processing file: geschäfte.csv
-2025-06-07 18:12:08,281 - __main__ - INFO - Anonymization completed for geschäfte.csv
-2025-06-07 18:12:08,281 - __main__ - INFO - Processing file: italian.txt
-2025-06-07 18:12:08,310 - __main__ - INFO - Anonymization completed for italian.txt
-2025-06-07 18:12:08,311 - __main__ - INFO - Processing file: kunden.csv
-2025-06-07 18:12:08,346 - __main__ - INFO - Anonymization completed for kunden.csv
-2025-06-07 18:12:08,346 - __main__ - INFO - Processing file: mitarbeiter.csv
-2025-06-07 18:12:08,387 - __main__ - INFO - Anonymization completed for mitarbeiter.csv
-2025-06-07 18:12:08,387 - __main__ - INFO - Processing file: swiss.txt
-2025-06-07 18:12:08,427 - __main__ - INFO - Anonymization completed for swiss.txt
-2025-06-07 18:12:08,427 - __main__ - INFO - Processing file: transactions.csv
-2025-06-07 18:12:08,470 - __main__ - INFO - Anonymization completed for transactions.csv
-2025-06-07 18:12:08,470 - __main__ - INFO - Processing completed!
diff --git a/test_neutralizer/logs/log_mapping.csv b/test_neutralizer/logs/log_mapping.csv
deleted file mode 100644
index 0816acc..0000000
--- a/test_neutralizer/logs/log_mapping.csv
+++ /dev/null
@@ -1,17 +0,0 @@
-timestamp,success,file_name,replaced_fields,content_type,headers,row_count
-2025-06-07T18:12:08.019661,True,Case.md,,text,,0
-2025-06-07T18:12:08.040653,True,customers.csv,ahv_number;phone;credit_card;address;name;iban;email,table,id;name;email;phone;address;iban;credit_card;ahv_number,5
-2025-06-07T18:12:08.064201,True,cv_lara_meier.txt,,text,,0
-2025-06-07T18:12:08.080961,True,employees.csv,bank_account;first_name;last_name;office_address;phone;uid_number;email,table,employee_id;first_name;last_name;email;phone;department;office_address;uid_number;bank_account,5
-2025-06-07T18:12:08.101660,True,english.txt,,text,,0
-2025-06-07T18:12:08.125634,True,example.json,,json
-2025-06-07T18:12:08.157397,True,example.xml,,xml
-2025-06-07T18:12:08.178030,True,french.txt,,text,,0
-2025-06-07T18:12:08.201071,True,german.txt,,text,,0
-2025-06-07T18:12:08.228652,True,geschaeftsstrategie.txt,,text,,0
-2025-06-07T18:12:08.255652,True,geschäfte.csv,datum;kundenname;kundenemail;zahlungsdetails;lieferadresse,table,geschäft_id;datum;kundenname;kundenemail;betrag;zahlungsmethode;zahlungsdetails;lieferadresse,5
-2025-06-07T18:12:08.284172,True,italian.txt,,text,,0
-2025-06-07T18:12:08.314527,True,kunden.csv,kreditkarte;vorname;adresse;telefon;iban;steuernummer;email;nachname,table,kunden_id;vorname;nachname;email;telefon;adresse;iban;kreditkarte;steuernummer,5
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,vorname;büroadresse;telefon;steuernummer;email;sozialversicherungsnummer;nachname,table,mitarbeiter_id;vorname;nachname;email;telefon;abteilung;büroadresse;steuernummer;sozialversicherungsnummer,5
-2025-06-07T18:12:08.389324,True,swiss.txt,,text,,0
-2025-06-07T18:12:08.431916,True,transactions.csv,date;customer_email;payment_details;customer_name;shipping_address,table,transaction_id;date;customer_name;customer_email;amount;payment_method;payment_details;shipping_address,5
diff --git a/test_neutralizer/logs/log_replacements.csv b/test_neutralizer/logs/log_replacements.csv
deleted file mode 100644
index ce5a470..0000000
--- a/test_neutralizer/logs/log_replacements.csv
+++ /dev/null
@@ -1,1947 +0,0 @@
-timestamp,success,file_name,original,replacement
-2025-06-07T18:12:08.019661,True,Case.md,000-180.000,[PHONE_1]
-2025-06-07T18:12:08.019661,True,Case.md,2027 Bewertung,[ADDRESS_2]
-2025-06-07T18:12:08.040653,True,customers.csv,000-180.000,[PHONE_1]
-2025-06-07T18:12:08.040653,True,customers.csv,2027 Bewertung,[ADDRESS_2]
-2025-06-07T18:12:08.040653,True,customers.csv,Max Mustermann,[NAME_3]
-2025-06-07T18:12:08.040653,True,customers.csv,Peter Schmid,[NAME_4]
-2025-06-07T18:12:08.040653,True,customers.csv,Marie Dupont,[NAME_5]
-2025-06-07T18:12:08.040653,True,customers.csv,Marco Rossi,[NAME_6]
-2025-06-07T18:12:08.040653,True,customers.csv,John Smith,[NAME_7]
-2025-06-07T18:12:08.040653,True,customers.csv,max.mustermann@beispiel.de,[EMAIL_8]
-2025-06-07T18:12:08.040653,True,customers.csv,peter.schmid@beispiel.ch,[EMAIL_9]
-2025-06-07T18:12:08.040653,True,customers.csv,marie.dupont@exemple.fr,[EMAIL_10]
-2025-06-07T18:12:08.040653,True,customers.csv,marco.rossi@esempio.it,[EMAIL_11]
-2025-06-07T18:12:08.040653,True,customers.csv,john.smith@example.com,[EMAIL_12]
-2025-06-07T18:12:08.040653,True,customers.csv,+49 30 12345678,[PHONE_13]
-2025-06-07T18:12:08.040653,True,customers.csv,+41 44 123 45 67,[PHONE_14]
-2025-06-07T18:12:08.040653,True,customers.csv,+33 1 23 45 67 89,[PHONE_15]
-2025-06-07T18:12:08.040653,True,customers.csv,+39 02 1234 5678,[PHONE_16]
-2025-06-07T18:12:08.040653,True,customers.csv,+44 20 1234 5678,[PHONE_17]
-2025-06-07T18:12:08.040653,True,customers.csv,Musterstraße 123 12345 Berlin,[ADDRESS_18]
-2025-06-07T18:12:08.040653,True,customers.csv,Bahnhofstrasse 1 8001 Zürich,[ADDRESS_19]
-2025-06-07T18:12:08.040653,True,customers.csv,123 Rue de Paris 75001 Paris,[ADDRESS_20]
-2025-06-07T18:12:08.040653,True,customers.csv,Via Roma 123 20100 Milano,[ADDRESS_21]
-2025-06-07T18:12:08.040653,True,customers.csv,123 High Street London SW1A 1AA,[ADDRESS_22]
-2025-06-07T18:12:08.040653,True,customers.csv,DE89 3704 0044 0532 0130 00,[IBAN_23]
-2025-06-07T18:12:08.040653,True,customers.csv,CH93 0076 7000 E529 3557 7,[IBAN_24]
-2025-06-07T18:12:08.040653,True,customers.csv,FR76 3000 6000 0112 3456 7890 189,[IBAN_25]
-2025-06-07T18:12:08.040653,True,customers.csv,IT60 X054 2811 1010 0000 0123 456,[IBAN_26]
-2025-06-07T18:12:08.040653,True,customers.csv,GB29 NWBK 6016 1331 9268 19,[IBAN_27]
-2025-06-07T18:12:08.040653,True,customers.csv,4532 1234 5678 9012,[IBAN_28]
-2025-06-07T18:12:08.040653,True,customers.csv,4532 1234 5678 9013,[IBAN_29]
-2025-06-07T18:12:08.040653,True,customers.csv,4532 1234 5678 9014,[IBAN_30]
-2025-06-07T18:12:08.040653,True,customers.csv,4532 1234 5678 9015,[IBAN_31]
-2025-06-07T18:12:08.040653,True,customers.csv,4532 1234 5678 9016,[IBAN_32]
-2025-06-07T18:12:08.040653,True,customers.csv,nan,[SSN_33]
-2025-06-07T18:12:08.040653,True,customers.csv,756.1234.5678.90,[SSN_34]
-2025-06-07T18:12:08.040653,True,customers.csv, ,[SSN_35]
-2025-06-07T18:12:08.064201,True,cv_lara_meier.txt,000-180.000,[PHONE_1]
-2025-06-07T18:12:08.064201,True,cv_lara_meier.txt,2027 Bewertung,[ADDRESS_2]
-2025-06-07T18:12:08.064201,True,cv_lara_meier.txt,Max Mustermann,[NAME_3]
-2025-06-07T18:12:08.064201,True,cv_lara_meier.txt,Peter Schmid,[NAME_4]
-2025-06-07T18:12:08.064201,True,cv_lara_meier.txt,Marie Dupont,[NAME_5]
-2025-06-07T18:12:08.064201,True,cv_lara_meier.txt,Marco Rossi,[NAME_6]
-2025-06-07T18:12:08.064201,True,cv_lara_meier.txt,John Smith,[NAME_7]
-2025-06-07T18:12:08.064201,True,cv_lara_meier.txt,max.mustermann@beispiel.de,[EMAIL_8]
-2025-06-07T18:12:08.064201,True,cv_lara_meier.txt,peter.schmid@beispiel.ch,[EMAIL_9]
-2025-06-07T18:12:08.064201,True,cv_lara_meier.txt,marie.dupont@exemple.fr,[EMAIL_10]
-2025-06-07T18:12:08.064201,True,cv_lara_meier.txt,marco.rossi@esempio.it,[EMAIL_11]
-2025-06-07T18:12:08.064201,True,cv_lara_meier.txt,john.smith@example.com,[EMAIL_12]
-2025-06-07T18:12:08.064201,True,cv_lara_meier.txt,+49 30 12345678,[PHONE_13]
-2025-06-07T18:12:08.064201,True,cv_lara_meier.txt,+41 44 123 45 67,[PHONE_14]
-2025-06-07T18:12:08.064201,True,cv_lara_meier.txt,+33 1 23 45 67 89,[PHONE_15]
-2025-06-07T18:12:08.064201,True,cv_lara_meier.txt,+39 02 1234 5678,[PHONE_16]
-2025-06-07T18:12:08.064201,True,cv_lara_meier.txt,+44 20 1234 5678,[PHONE_17]
-2025-06-07T18:12:08.064201,True,cv_lara_meier.txt,Musterstraße 123 12345 Berlin,[ADDRESS_18]
-2025-06-07T18:12:08.064201,True,cv_lara_meier.txt,Bahnhofstrasse 1 8001 Zürich,[ADDRESS_19]
-2025-06-07T18:12:08.064201,True,cv_lara_meier.txt,123 Rue de Paris 75001 Paris,[ADDRESS_20]
-2025-06-07T18:12:08.064201,True,cv_lara_meier.txt,Via Roma 123 20100 Milano,[ADDRESS_21]
-2025-06-07T18:12:08.064201,True,cv_lara_meier.txt,123 High Street London SW1A 1AA,[ADDRESS_22]
-2025-06-07T18:12:08.064201,True,cv_lara_meier.txt,DE89 3704 0044 0532 0130 00,[IBAN_23]
-2025-06-07T18:12:08.064201,True,cv_lara_meier.txt,CH93 0076 7000 E529 3557 7,[IBAN_24]
-2025-06-07T18:12:08.064201,True,cv_lara_meier.txt,FR76 3000 6000 0112 3456 7890 189,[IBAN_25]
-2025-06-07T18:12:08.064201,True,cv_lara_meier.txt,IT60 X054 2811 1010 0000 0123 456,[IBAN_26]
-2025-06-07T18:12:08.064201,True,cv_lara_meier.txt,GB29 NWBK 6016 1331 9268 19,[IBAN_27]
-2025-06-07T18:12:08.064201,True,cv_lara_meier.txt,4532 1234 5678 9012,[IBAN_28]
-2025-06-07T18:12:08.064201,True,cv_lara_meier.txt,4532 1234 5678 9013,[IBAN_29]
-2025-06-07T18:12:08.064201,True,cv_lara_meier.txt,4532 1234 5678 9014,[IBAN_30]
-2025-06-07T18:12:08.064201,True,cv_lara_meier.txt,4532 1234 5678 9015,[IBAN_31]
-2025-06-07T18:12:08.064201,True,cv_lara_meier.txt,4532 1234 5678 9016,[IBAN_32]
-2025-06-07T18:12:08.064201,True,cv_lara_meier.txt,nan,[SSN_33]
-2025-06-07T18:12:08.064201,True,cv_lara_meier.txt,756.1234.5678.90,[SSN_34]
-2025-06-07T18:12:08.064201,True,cv_lara_meier.txt, ,[SSN_35]
-2025-06-07T18:12:08.064201,True,cv_lara_meier.txt,sarah.weber@techsolutions.ch,[EMAIL_36]
-2025-06-07T18:12:08.064201,True,cv_lara_meier.txt,+41 44 987 65,[PHONE_37]
-2025-06-07T18:12:08.064201,True,cv_lara_meier.txt,"Dr. Sarah Weber
-TechSolutions",[NAME_38]
-2025-06-07T18:12:08.064201,True,cv_lara_meier.txt,hans.mueller@ethz.ch,[EMAIL_39]
-2025-06-07T18:12:08.064201,True,cv_lara_meier.txt,+41 44 123 45,[PHONE_40]
-2025-06-07T18:12:08.064201,True,cv_lara_meier.txt,l.meier@digitalsystems.ch,[EMAIL_41]
-2025-06-07T18:12:08.064201,True,cv_lara_meier.txt,+41 44 456 78,[PHONE_42]
-2025-06-07T18:12:08.064201,True,cv_lara_meier.txt,987.654.321,[SSN_43]
-2025-06-07T18:12:08.064201,True,cv_lara_meier.txt,CHE-987.654.321,[SSN_44]
-2025-06-07T18:12:08.064201,True,cv_lara_meier.txt,8002 Zürich,[ADDRESS_45]
-2025-06-07T18:12:08.064201,True,cv_lara_meier.txt,Musterstrasse 123,[ADDRESS_46]
-2025-06-07T18:12:08.064201,True,cv_lara_meier.txt,lara.meier@techsolutions.ch,[EMAIL_47]
-2025-06-07T18:12:08.064201,True,cv_lara_meier.txt,123.456.789,[SSN_48]
-2025-06-07T18:12:08.064201,True,cv_lara_meier.txt,CHE-123.456.789,[SSN_49]
-2025-06-07T18:12:08.064201,True,cv_lara_meier.txt,8004 Zürich,[ADDRESS_50]
-2025-06-07T18:12:08.064201,True,cv_lara_meier.txt,Industriestrasse 100,[ADDRESS_51]
-2025-06-07T18:12:08.064201,True,cv_lara_meier.txt,lara.meier@example.ch,[EMAIL_52]
-2025-06-07T18:12:08.064201,True,cv_lara_meier.txt,8001 Zürich,[ADDRESS_53]
-2025-06-07T18:12:08.064201,True,cv_lara_meier.txt,Bahnhofstrasse 45,[ADDRESS_54]
-2025-06-07T18:12:08.064201,True,cv_lara_meier.txt,"1990
-Adresse",[ADDRESS_55]
-2025-06-07T18:12:08.080961,True,employees.csv,000-180.000,[PHONE_1]
-2025-06-07T18:12:08.080961,True,employees.csv,2027 Bewertung,[ADDRESS_2]
-2025-06-07T18:12:08.080961,True,employees.csv,Max Mustermann,[NAME_3]
-2025-06-07T18:12:08.080961,True,employees.csv,Peter Schmid,[NAME_4]
-2025-06-07T18:12:08.080961,True,employees.csv,Marie Dupont,[NAME_5]
-2025-06-07T18:12:08.080961,True,employees.csv,Marco Rossi,[NAME_6]
-2025-06-07T18:12:08.080961,True,employees.csv,John Smith,[NAME_7]
-2025-06-07T18:12:08.080961,True,employees.csv,max.mustermann@beispiel.de,[EMAIL_8]
-2025-06-07T18:12:08.080961,True,employees.csv,peter.schmid@beispiel.ch,[EMAIL_9]
-2025-06-07T18:12:08.080961,True,employees.csv,marie.dupont@exemple.fr,[EMAIL_10]
-2025-06-07T18:12:08.080961,True,employees.csv,marco.rossi@esempio.it,[EMAIL_11]
-2025-06-07T18:12:08.080961,True,employees.csv,john.smith@example.com,[EMAIL_12]
-2025-06-07T18:12:08.080961,True,employees.csv,+49 30 12345678,[PHONE_13]
-2025-06-07T18:12:08.080961,True,employees.csv,+41 44 123 45 67,[PHONE_14]
-2025-06-07T18:12:08.080961,True,employees.csv,+33 1 23 45 67 89,[PHONE_15]
-2025-06-07T18:12:08.080961,True,employees.csv,+39 02 1234 5678,[PHONE_16]
-2025-06-07T18:12:08.080961,True,employees.csv,+44 20 1234 5678,[PHONE_17]
-2025-06-07T18:12:08.080961,True,employees.csv,Musterstraße 123 12345 Berlin,[ADDRESS_18]
-2025-06-07T18:12:08.080961,True,employees.csv,Bahnhofstrasse 1 8001 Zürich,[ADDRESS_19]
-2025-06-07T18:12:08.080961,True,employees.csv,123 Rue de Paris 75001 Paris,[ADDRESS_20]
-2025-06-07T18:12:08.080961,True,employees.csv,Via Roma 123 20100 Milano,[ADDRESS_21]
-2025-06-07T18:12:08.080961,True,employees.csv,123 High Street London SW1A 1AA,[ADDRESS_22]
-2025-06-07T18:12:08.080961,True,employees.csv,DE89 3704 0044 0532 0130 00,[IBAN_23]
-2025-06-07T18:12:08.080961,True,employees.csv,CH93 0076 7000 E529 3557 7,[IBAN_24]
-2025-06-07T18:12:08.080961,True,employees.csv,FR76 3000 6000 0112 3456 7890 189,[IBAN_25]
-2025-06-07T18:12:08.080961,True,employees.csv,IT60 X054 2811 1010 0000 0123 456,[IBAN_26]
-2025-06-07T18:12:08.080961,True,employees.csv,GB29 NWBK 6016 1331 9268 19,[IBAN_27]
-2025-06-07T18:12:08.080961,True,employees.csv,4532 1234 5678 9012,[IBAN_28]
-2025-06-07T18:12:08.080961,True,employees.csv,4532 1234 5678 9013,[IBAN_29]
-2025-06-07T18:12:08.080961,True,employees.csv,4532 1234 5678 9014,[IBAN_30]
-2025-06-07T18:12:08.080961,True,employees.csv,4532 1234 5678 9015,[IBAN_31]
-2025-06-07T18:12:08.080961,True,employees.csv,4532 1234 5678 9016,[IBAN_32]
-2025-06-07T18:12:08.080961,True,employees.csv,nan,[SSN_33]
-2025-06-07T18:12:08.080961,True,employees.csv,756.1234.5678.90,[SSN_34]
-2025-06-07T18:12:08.080961,True,employees.csv, ,[SSN_35]
-2025-06-07T18:12:08.080961,True,employees.csv,sarah.weber@techsolutions.ch,[EMAIL_36]
-2025-06-07T18:12:08.080961,True,employees.csv,+41 44 987 65,[PHONE_37]
-2025-06-07T18:12:08.080961,True,employees.csv,"Dr. Sarah Weber
-TechSolutions",[NAME_38]
-2025-06-07T18:12:08.080961,True,employees.csv,hans.mueller@ethz.ch,[EMAIL_39]
-2025-06-07T18:12:08.080961,True,employees.csv,+41 44 123 45,[PHONE_40]
-2025-06-07T18:12:08.080961,True,employees.csv,l.meier@digitalsystems.ch,[EMAIL_41]
-2025-06-07T18:12:08.080961,True,employees.csv,+41 44 456 78,[PHONE_42]
-2025-06-07T18:12:08.080961,True,employees.csv,987.654.321,[SSN_43]
-2025-06-07T18:12:08.080961,True,employees.csv,CHE-987.654.321,[SSN_44]
-2025-06-07T18:12:08.080961,True,employees.csv,8002 Zürich,[ADDRESS_45]
-2025-06-07T18:12:08.080961,True,employees.csv,Musterstrasse 123,[ADDRESS_46]
-2025-06-07T18:12:08.080961,True,employees.csv,lara.meier@techsolutions.ch,[EMAIL_47]
-2025-06-07T18:12:08.080961,True,employees.csv,123.456.789,[SSN_48]
-2025-06-07T18:12:08.080961,True,employees.csv,CHE-123.456.789,[SSN_49]
-2025-06-07T18:12:08.080961,True,employees.csv,8004 Zürich,[ADDRESS_50]
-2025-06-07T18:12:08.080961,True,employees.csv,Industriestrasse 100,[ADDRESS_51]
-2025-06-07T18:12:08.080961,True,employees.csv,lara.meier@example.ch,[EMAIL_52]
-2025-06-07T18:12:08.080961,True,employees.csv,8001 Zürich,[ADDRESS_53]
-2025-06-07T18:12:08.080961,True,employees.csv,Bahnhofstrasse 45,[ADDRESS_54]
-2025-06-07T18:12:08.080961,True,employees.csv,"1990
-Adresse",[ADDRESS_55]
-2025-06-07T18:12:08.080961,True,employees.csv,Hans,[NAME_56]
-2025-06-07T18:12:08.080961,True,employees.csv,Thomas,[NAME_57]
-2025-06-07T18:12:08.080961,True,employees.csv,Sophie,[NAME_58]
-2025-06-07T18:12:08.080961,True,employees.csv,Luca,[NAME_59]
-2025-06-07T18:12:08.080961,True,employees.csv,Emma,[NAME_60]
-2025-06-07T18:12:08.080961,True,employees.csv,Müller,[NAME_61]
-2025-06-07T18:12:08.080961,True,employees.csv,Weber,[NAME_62]
-2025-06-07T18:12:08.080961,True,employees.csv,Martin,[NAME_63]
-2025-06-07T18:12:08.080961,True,employees.csv,Ferrari,[NAME_64]
-2025-06-07T18:12:08.080961,True,employees.csv,Wilson,[NAME_65]
-2025-06-07T18:12:08.080961,True,employees.csv,hans.mueller@firma.de,[EMAIL_66]
-2025-06-07T18:12:08.080961,True,employees.csv,thomas.weber@firma.ch,[EMAIL_67]
-2025-06-07T18:12:08.080961,True,employees.csv,sophie.martin@entreprise.fr,[EMAIL_68]
-2025-06-07T18:12:08.080961,True,employees.csv,luca.ferrari@azienda.it,[EMAIL_69]
-2025-06-07T18:12:08.080961,True,employees.csv,emma.wilson@company.com,[EMAIL_70]
-2025-06-07T18:12:08.080961,True,employees.csv,+49 89 12345678,[PHONE_71]
-2025-06-07T18:12:08.080961,True,employees.csv,+41 44 234 56 78,[PHONE_72]
-2025-06-07T18:12:08.080961,True,employees.csv,+33 1 34 56 78 90,[PHONE_73]
-2025-06-07T18:12:08.080961,True,employees.csv,+39 02 2345 6789,[PHONE_74]
-2025-06-07T18:12:08.080961,True,employees.csv,+44 20 2345 6789,[PHONE_75]
-2025-06-07T18:12:08.080961,True,employees.csv,Hauptstraße 1 80331 München,[ADDRESS_76]
-2025-06-07T18:12:08.080961,True,employees.csv,Bahnhofstrasse 2 8001 Zürich,[ADDRESS_77]
-2025-06-07T18:12:08.080961,True,employees.csv,15 Avenue des Champs-Élysées 75008 Paris,[ADDRESS_78]
-2025-06-07T18:12:08.080961,True,employees.csv,Via Monte Napoleone 8 20121 Milano,[ADDRESS_79]
-2025-06-07T18:12:08.080961,True,employees.csv,25 Old Street London EC1V 9HL,[ADDRESS_80]
-2025-06-07T18:12:08.080961,True,employees.csv,01-234567-8,[IBAN_81]
-2025-06-07T18:12:08.080961,True,employees.csv,GB29 NWBK 6016 1331 9268 19 ,[IBAN_82]
-2025-06-07T18:12:08.101660,True,english.txt,000-180.000,[PHONE_1]
-2025-06-07T18:12:08.101660,True,english.txt,2027 Bewertung,[ADDRESS_2]
-2025-06-07T18:12:08.101660,True,english.txt,Max Mustermann,[NAME_3]
-2025-06-07T18:12:08.101660,True,english.txt,Peter Schmid,[NAME_4]
-2025-06-07T18:12:08.101660,True,english.txt,Marie Dupont,[NAME_5]
-2025-06-07T18:12:08.101660,True,english.txt,Marco Rossi,[NAME_6]
-2025-06-07T18:12:08.101660,True,english.txt,John Smith,[NAME_7]
-2025-06-07T18:12:08.101660,True,english.txt,max.mustermann@beispiel.de,[EMAIL_8]
-2025-06-07T18:12:08.101660,True,english.txt,peter.schmid@beispiel.ch,[EMAIL_9]
-2025-06-07T18:12:08.101660,True,english.txt,marie.dupont@exemple.fr,[EMAIL_10]
-2025-06-07T18:12:08.101660,True,english.txt,marco.rossi@esempio.it,[EMAIL_11]
-2025-06-07T18:12:08.101660,True,english.txt,john.smith@example.com,[EMAIL_12]
-2025-06-07T18:12:08.101660,True,english.txt,+49 30 12345678,[PHONE_13]
-2025-06-07T18:12:08.101660,True,english.txt,+41 44 123 45 67,[PHONE_14]
-2025-06-07T18:12:08.101660,True,english.txt,+33 1 23 45 67 89,[PHONE_15]
-2025-06-07T18:12:08.101660,True,english.txt,+39 02 1234 5678,[PHONE_16]
-2025-06-07T18:12:08.101660,True,english.txt,+44 20 1234 5678,[PHONE_17]
-2025-06-07T18:12:08.101660,True,english.txt,Musterstraße 123 12345 Berlin,[ADDRESS_18]
-2025-06-07T18:12:08.101660,True,english.txt,Bahnhofstrasse 1 8001 Zürich,[ADDRESS_19]
-2025-06-07T18:12:08.101660,True,english.txt,123 Rue de Paris 75001 Paris,[ADDRESS_20]
-2025-06-07T18:12:08.101660,True,english.txt,Via Roma 123 20100 Milano,[ADDRESS_21]
-2025-06-07T18:12:08.101660,True,english.txt,123 High Street London SW1A 1AA,[ADDRESS_22]
-2025-06-07T18:12:08.101660,True,english.txt,DE89 3704 0044 0532 0130 00,[IBAN_23]
-2025-06-07T18:12:08.101660,True,english.txt,CH93 0076 7000 E529 3557 7,[IBAN_24]
-2025-06-07T18:12:08.101660,True,english.txt,FR76 3000 6000 0112 3456 7890 189,[IBAN_25]
-2025-06-07T18:12:08.101660,True,english.txt,IT60 X054 2811 1010 0000 0123 456,[IBAN_26]
-2025-06-07T18:12:08.101660,True,english.txt,GB29 NWBK 6016 1331 9268 19,[IBAN_27]
-2025-06-07T18:12:08.101660,True,english.txt,4532 1234 5678 9012,[IBAN_28]
-2025-06-07T18:12:08.101660,True,english.txt,4532 1234 5678 9013,[IBAN_29]
-2025-06-07T18:12:08.101660,True,english.txt,4532 1234 5678 9014,[IBAN_30]
-2025-06-07T18:12:08.101660,True,english.txt,4532 1234 5678 9015,[IBAN_31]
-2025-06-07T18:12:08.101660,True,english.txt,4532 1234 5678 9016,[IBAN_32]
-2025-06-07T18:12:08.101660,True,english.txt,nan,[SSN_33]
-2025-06-07T18:12:08.101660,True,english.txt,756.1234.5678.90,[SSN_34]
-2025-06-07T18:12:08.101660,True,english.txt, ,[SSN_35]
-2025-06-07T18:12:08.101660,True,english.txt,sarah.weber@techsolutions.ch,[EMAIL_36]
-2025-06-07T18:12:08.101660,True,english.txt,+41 44 987 65,[PHONE_37]
-2025-06-07T18:12:08.101660,True,english.txt,"Dr. Sarah Weber
-TechSolutions",[NAME_38]
-2025-06-07T18:12:08.101660,True,english.txt,hans.mueller@ethz.ch,[EMAIL_39]
-2025-06-07T18:12:08.101660,True,english.txt,+41 44 123 45,[PHONE_40]
-2025-06-07T18:12:08.101660,True,english.txt,l.meier@digitalsystems.ch,[EMAIL_41]
-2025-06-07T18:12:08.101660,True,english.txt,+41 44 456 78,[PHONE_42]
-2025-06-07T18:12:08.101660,True,english.txt,987.654.321,[SSN_43]
-2025-06-07T18:12:08.101660,True,english.txt,CHE-987.654.321,[SSN_44]
-2025-06-07T18:12:08.101660,True,english.txt,8002 Zürich,[ADDRESS_45]
-2025-06-07T18:12:08.101660,True,english.txt,Musterstrasse 123,[ADDRESS_46]
-2025-06-07T18:12:08.101660,True,english.txt,lara.meier@techsolutions.ch,[EMAIL_47]
-2025-06-07T18:12:08.101660,True,english.txt,123.456.789,[SSN_48]
-2025-06-07T18:12:08.101660,True,english.txt,CHE-123.456.789,[SSN_49]
-2025-06-07T18:12:08.101660,True,english.txt,8004 Zürich,[ADDRESS_50]
-2025-06-07T18:12:08.101660,True,english.txt,Industriestrasse 100,[ADDRESS_51]
-2025-06-07T18:12:08.101660,True,english.txt,lara.meier@example.ch,[EMAIL_52]
-2025-06-07T18:12:08.101660,True,english.txt,8001 Zürich,[ADDRESS_53]
-2025-06-07T18:12:08.101660,True,english.txt,Bahnhofstrasse 45,[ADDRESS_54]
-2025-06-07T18:12:08.101660,True,english.txt,"1990
-Adresse",[ADDRESS_55]
-2025-06-07T18:12:08.101660,True,english.txt,Hans,[NAME_56]
-2025-06-07T18:12:08.101660,True,english.txt,Thomas,[NAME_57]
-2025-06-07T18:12:08.101660,True,english.txt,Sophie,[NAME_58]
-2025-06-07T18:12:08.101660,True,english.txt,Luca,[NAME_59]
-2025-06-07T18:12:08.101660,True,english.txt,Emma,[NAME_60]
-2025-06-07T18:12:08.101660,True,english.txt,Müller,[NAME_61]
-2025-06-07T18:12:08.101660,True,english.txt,Weber,[NAME_62]
-2025-06-07T18:12:08.101660,True,english.txt,Martin,[NAME_63]
-2025-06-07T18:12:08.101660,True,english.txt,Ferrari,[NAME_64]
-2025-06-07T18:12:08.101660,True,english.txt,Wilson,[NAME_65]
-2025-06-07T18:12:08.101660,True,english.txt,hans.mueller@firma.de,[EMAIL_66]
-2025-06-07T18:12:08.101660,True,english.txt,thomas.weber@firma.ch,[EMAIL_67]
-2025-06-07T18:12:08.101660,True,english.txt,sophie.martin@entreprise.fr,[EMAIL_68]
-2025-06-07T18:12:08.101660,True,english.txt,luca.ferrari@azienda.it,[EMAIL_69]
-2025-06-07T18:12:08.101660,True,english.txt,emma.wilson@company.com,[EMAIL_70]
-2025-06-07T18:12:08.101660,True,english.txt,+49 89 12345678,[PHONE_71]
-2025-06-07T18:12:08.101660,True,english.txt,+41 44 234 56 78,[PHONE_72]
-2025-06-07T18:12:08.101660,True,english.txt,+33 1 34 56 78 90,[PHONE_73]
-2025-06-07T18:12:08.101660,True,english.txt,+39 02 2345 6789,[PHONE_74]
-2025-06-07T18:12:08.101660,True,english.txt,+44 20 2345 6789,[PHONE_75]
-2025-06-07T18:12:08.101660,True,english.txt,Hauptstraße 1 80331 München,[ADDRESS_76]
-2025-06-07T18:12:08.101660,True,english.txt,Bahnhofstrasse 2 8001 Zürich,[ADDRESS_77]
-2025-06-07T18:12:08.101660,True,english.txt,15 Avenue des Champs-Élysées 75008 Paris,[ADDRESS_78]
-2025-06-07T18:12:08.101660,True,english.txt,Via Monte Napoleone 8 20121 Milano,[ADDRESS_79]
-2025-06-07T18:12:08.101660,True,english.txt,25 Old Street London EC1V 9HL,[ADDRESS_80]
-2025-06-07T18:12:08.101660,True,english.txt,01-234567-8,[IBAN_81]
-2025-06-07T18:12:08.101660,True,english.txt,GB29 NWBK 6016 1331 9268 19 ,[IBAN_82]
-2025-06-07T18:12:08.101660,True,english.txt,"9012
-
-Best",[ADDRESS_83]
-2025-06-07T18:12:08.101660,True,english.txt,"5678
-Address",[ADDRESS_84]
-2025-06-07T18:12:08.101660,True,english.txt,contact@example.com,[EMAIL_85]
-2025-06-07T18:12:08.125634,True,example.json,000-180.000,[PHONE_1]
-2025-06-07T18:12:08.125634,True,example.json,2027 Bewertung,[ADDRESS_2]
-2025-06-07T18:12:08.125634,True,example.json,Max Mustermann,[NAME_3]
-2025-06-07T18:12:08.125634,True,example.json,Peter Schmid,[NAME_4]
-2025-06-07T18:12:08.125634,True,example.json,Marie Dupont,[NAME_5]
-2025-06-07T18:12:08.125634,True,example.json,Marco Rossi,[NAME_6]
-2025-06-07T18:12:08.125634,True,example.json,John Smith,[NAME_7]
-2025-06-07T18:12:08.125634,True,example.json,max.mustermann@beispiel.de,[EMAIL_8]
-2025-06-07T18:12:08.125634,True,example.json,peter.schmid@beispiel.ch,[EMAIL_9]
-2025-06-07T18:12:08.125634,True,example.json,marie.dupont@exemple.fr,[EMAIL_10]
-2025-06-07T18:12:08.125634,True,example.json,marco.rossi@esempio.it,[EMAIL_11]
-2025-06-07T18:12:08.125634,True,example.json,john.smith@example.com,[EMAIL_12]
-2025-06-07T18:12:08.125634,True,example.json,+49 30 12345678,[PHONE_13]
-2025-06-07T18:12:08.125634,True,example.json,+41 44 123 45 67,[PHONE_14]
-2025-06-07T18:12:08.125634,True,example.json,+33 1 23 45 67 89,[PHONE_15]
-2025-06-07T18:12:08.125634,True,example.json,+39 02 1234 5678,[PHONE_16]
-2025-06-07T18:12:08.125634,True,example.json,+44 20 1234 5678,[PHONE_17]
-2025-06-07T18:12:08.125634,True,example.json,Musterstraße 123 12345 Berlin,[ADDRESS_18]
-2025-06-07T18:12:08.125634,True,example.json,Bahnhofstrasse 1 8001 Zürich,[ADDRESS_19]
-2025-06-07T18:12:08.125634,True,example.json,123 Rue de Paris 75001 Paris,[ADDRESS_20]
-2025-06-07T18:12:08.125634,True,example.json,Via Roma 123 20100 Milano,[ADDRESS_21]
-2025-06-07T18:12:08.125634,True,example.json,123 High Street London SW1A 1AA,[ADDRESS_22]
-2025-06-07T18:12:08.125634,True,example.json,DE89 3704 0044 0532 0130 00,[IBAN_23]
-2025-06-07T18:12:08.125634,True,example.json,CH93 0076 7000 E529 3557 7,[IBAN_24]
-2025-06-07T18:12:08.125634,True,example.json,FR76 3000 6000 0112 3456 7890 189,[IBAN_25]
-2025-06-07T18:12:08.125634,True,example.json,IT60 X054 2811 1010 0000 0123 456,[IBAN_26]
-2025-06-07T18:12:08.125634,True,example.json,GB29 NWBK 6016 1331 9268 19,[IBAN_27]
-2025-06-07T18:12:08.125634,True,example.json,4532 1234 5678 9012,[IBAN_28]
-2025-06-07T18:12:08.125634,True,example.json,4532 1234 5678 9013,[IBAN_29]
-2025-06-07T18:12:08.125634,True,example.json,4532 1234 5678 9014,[IBAN_30]
-2025-06-07T18:12:08.125634,True,example.json,4532 1234 5678 9015,[IBAN_31]
-2025-06-07T18:12:08.125634,True,example.json,4532 1234 5678 9016,[IBAN_32]
-2025-06-07T18:12:08.125634,True,example.json,nan,[SSN_33]
-2025-06-07T18:12:08.125634,True,example.json,756.1234.5678.90,[SSN_34]
-2025-06-07T18:12:08.125634,True,example.json, ,[SSN_35]
-2025-06-07T18:12:08.125634,True,example.json,sarah.weber@techsolutions.ch,[EMAIL_36]
-2025-06-07T18:12:08.125634,True,example.json,+41 44 987 65,[PHONE_37]
-2025-06-07T18:12:08.125634,True,example.json,"Dr. Sarah Weber
-TechSolutions",[NAME_38]
-2025-06-07T18:12:08.125634,True,example.json,hans.mueller@ethz.ch,[EMAIL_39]
-2025-06-07T18:12:08.125634,True,example.json,+41 44 123 45,[PHONE_40]
-2025-06-07T18:12:08.125634,True,example.json,l.meier@digitalsystems.ch,[EMAIL_41]
-2025-06-07T18:12:08.125634,True,example.json,+41 44 456 78,[PHONE_42]
-2025-06-07T18:12:08.125634,True,example.json,987.654.321,[SSN_43]
-2025-06-07T18:12:08.125634,True,example.json,CHE-987.654.321,[SSN_44]
-2025-06-07T18:12:08.125634,True,example.json,8002 Zürich,[ADDRESS_45]
-2025-06-07T18:12:08.125634,True,example.json,Musterstrasse 123,[ADDRESS_46]
-2025-06-07T18:12:08.125634,True,example.json,lara.meier@techsolutions.ch,[EMAIL_47]
-2025-06-07T18:12:08.125634,True,example.json,123.456.789,[SSN_48]
-2025-06-07T18:12:08.125634,True,example.json,CHE-123.456.789,[SSN_49]
-2025-06-07T18:12:08.125634,True,example.json,8004 Zürich,[ADDRESS_50]
-2025-06-07T18:12:08.125634,True,example.json,Industriestrasse 100,[ADDRESS_51]
-2025-06-07T18:12:08.125634,True,example.json,lara.meier@example.ch,[EMAIL_52]
-2025-06-07T18:12:08.125634,True,example.json,8001 Zürich,[ADDRESS_53]
-2025-06-07T18:12:08.125634,True,example.json,Bahnhofstrasse 45,[ADDRESS_54]
-2025-06-07T18:12:08.125634,True,example.json,"1990
-Adresse",[ADDRESS_55]
-2025-06-07T18:12:08.125634,True,example.json,Hans,[NAME_56]
-2025-06-07T18:12:08.125634,True,example.json,Thomas,[NAME_57]
-2025-06-07T18:12:08.125634,True,example.json,Sophie,[NAME_58]
-2025-06-07T18:12:08.125634,True,example.json,Luca,[NAME_59]
-2025-06-07T18:12:08.125634,True,example.json,Emma,[NAME_60]
-2025-06-07T18:12:08.125634,True,example.json,Müller,[NAME_61]
-2025-06-07T18:12:08.125634,True,example.json,Weber,[NAME_62]
-2025-06-07T18:12:08.125634,True,example.json,Martin,[NAME_63]
-2025-06-07T18:12:08.125634,True,example.json,Ferrari,[NAME_64]
-2025-06-07T18:12:08.125634,True,example.json,Wilson,[NAME_65]
-2025-06-07T18:12:08.125634,True,example.json,hans.mueller@firma.de,[EMAIL_66]
-2025-06-07T18:12:08.125634,True,example.json,thomas.weber@firma.ch,[EMAIL_67]
-2025-06-07T18:12:08.125634,True,example.json,sophie.martin@entreprise.fr,[EMAIL_68]
-2025-06-07T18:12:08.125634,True,example.json,luca.ferrari@azienda.it,[EMAIL_69]
-2025-06-07T18:12:08.125634,True,example.json,emma.wilson@company.com,[EMAIL_70]
-2025-06-07T18:12:08.125634,True,example.json,+49 89 12345678,[PHONE_71]
-2025-06-07T18:12:08.125634,True,example.json,+41 44 234 56 78,[PHONE_72]
-2025-06-07T18:12:08.125634,True,example.json,+33 1 34 56 78 90,[PHONE_73]
-2025-06-07T18:12:08.125634,True,example.json,+39 02 2345 6789,[PHONE_74]
-2025-06-07T18:12:08.125634,True,example.json,+44 20 2345 6789,[PHONE_75]
-2025-06-07T18:12:08.125634,True,example.json,Hauptstraße 1 80331 München,[ADDRESS_76]
-2025-06-07T18:12:08.125634,True,example.json,Bahnhofstrasse 2 8001 Zürich,[ADDRESS_77]
-2025-06-07T18:12:08.125634,True,example.json,15 Avenue des Champs-Élysées 75008 Paris,[ADDRESS_78]
-2025-06-07T18:12:08.125634,True,example.json,Via Monte Napoleone 8 20121 Milano,[ADDRESS_79]
-2025-06-07T18:12:08.125634,True,example.json,25 Old Street London EC1V 9HL,[ADDRESS_80]
-2025-06-07T18:12:08.125634,True,example.json,01-234567-8,[IBAN_81]
-2025-06-07T18:12:08.125634,True,example.json,GB29 NWBK 6016 1331 9268 19 ,[IBAN_82]
-2025-06-07T18:12:08.125634,True,example.json,"9012
-
-Best",[ADDRESS_83]
-2025-06-07T18:12:08.125634,True,example.json,"5678
-Address",[ADDRESS_84]
-2025-06-07T18:12:08.125634,True,example.json,contact@example.com,[EMAIL_85]
-2025-06-07T18:12:08.125634,True,example.json,max.mustermann@example.com,[EMAIL_86]
-2025-06-07T18:12:08.125634,True,example.json,+49 123 4567890,[PHONE_87]
-2025-06-07T18:12:08.125634,True,example.json,2024-03-15,[DATE_88]
-2025-06-07T18:12:08.125634,True,example.json,4111 1111 1111 1111,[IBAN_89]
-2025-06-07T18:12:08.125634,True,example.json,Tech Solutions GmbH,[NAME_90]
-2025-06-07T18:12:08.125634,True,example.json,Dr. Anna Schmidt,NAME_91
-2025-06-07T18:12:08.125634,True,example.json,anna.schmidt@techsolutions.de,[EMAIL_92]
-2025-06-07T18:12:08.157397,True,example.xml,000-180.000,[PHONE_1]
-2025-06-07T18:12:08.157397,True,example.xml,2027 Bewertung,[ADDRESS_2]
-2025-06-07T18:12:08.157397,True,example.xml,Max Mustermann,[NAME_3]
-2025-06-07T18:12:08.157397,True,example.xml,Peter Schmid,[NAME_4]
-2025-06-07T18:12:08.157397,True,example.xml,Marie Dupont,[NAME_5]
-2025-06-07T18:12:08.157397,True,example.xml,Marco Rossi,[NAME_6]
-2025-06-07T18:12:08.157397,True,example.xml,John Smith,[NAME_7]
-2025-06-07T18:12:08.157397,True,example.xml,max.mustermann@beispiel.de,[EMAIL_8]
-2025-06-07T18:12:08.157397,True,example.xml,peter.schmid@beispiel.ch,[EMAIL_9]
-2025-06-07T18:12:08.157397,True,example.xml,marie.dupont@exemple.fr,[EMAIL_10]
-2025-06-07T18:12:08.157397,True,example.xml,marco.rossi@esempio.it,[EMAIL_11]
-2025-06-07T18:12:08.157397,True,example.xml,john.smith@example.com,[EMAIL_12]
-2025-06-07T18:12:08.157397,True,example.xml,+49 30 12345678,[PHONE_13]
-2025-06-07T18:12:08.157397,True,example.xml,+41 44 123 45 67,[PHONE_14]
-2025-06-07T18:12:08.157397,True,example.xml,+33 1 23 45 67 89,[PHONE_15]
-2025-06-07T18:12:08.157397,True,example.xml,+39 02 1234 5678,[PHONE_16]
-2025-06-07T18:12:08.157397,True,example.xml,+44 20 1234 5678,[PHONE_17]
-2025-06-07T18:12:08.157397,True,example.xml,Musterstraße 123 12345 Berlin,[ADDRESS_18]
-2025-06-07T18:12:08.157397,True,example.xml,Bahnhofstrasse 1 8001 Zürich,[ADDRESS_19]
-2025-06-07T18:12:08.157397,True,example.xml,123 Rue de Paris 75001 Paris,[ADDRESS_20]
-2025-06-07T18:12:08.157397,True,example.xml,Via Roma 123 20100 Milano,[ADDRESS_21]
-2025-06-07T18:12:08.157397,True,example.xml,123 High Street London SW1A 1AA,[ADDRESS_22]
-2025-06-07T18:12:08.157397,True,example.xml,DE89 3704 0044 0532 0130 00,[IBAN_23]
-2025-06-07T18:12:08.157397,True,example.xml,CH93 0076 7000 E529 3557 7,[IBAN_24]
-2025-06-07T18:12:08.157397,True,example.xml,FR76 3000 6000 0112 3456 7890 189,[IBAN_25]
-2025-06-07T18:12:08.157397,True,example.xml,IT60 X054 2811 1010 0000 0123 456,[IBAN_26]
-2025-06-07T18:12:08.157397,True,example.xml,GB29 NWBK 6016 1331 9268 19,[IBAN_27]
-2025-06-07T18:12:08.157397,True,example.xml,4532 1234 5678 9012,[IBAN_28]
-2025-06-07T18:12:08.157397,True,example.xml,4532 1234 5678 9013,[IBAN_29]
-2025-06-07T18:12:08.157397,True,example.xml,4532 1234 5678 9014,[IBAN_30]
-2025-06-07T18:12:08.157397,True,example.xml,4532 1234 5678 9015,[IBAN_31]
-2025-06-07T18:12:08.157397,True,example.xml,4532 1234 5678 9016,[IBAN_32]
-2025-06-07T18:12:08.157397,True,example.xml,nan,[SSN_33]
-2025-06-07T18:12:08.157397,True,example.xml,756.1234.5678.90,[SSN_34]
-2025-06-07T18:12:08.157397,True,example.xml, ,[SSN_35]
-2025-06-07T18:12:08.157397,True,example.xml,sarah.weber@techsolutions.ch,[EMAIL_36]
-2025-06-07T18:12:08.157397,True,example.xml,+41 44 987 65,[PHONE_37]
-2025-06-07T18:12:08.157397,True,example.xml,"Dr. Sarah Weber
-TechSolutions",[NAME_38]
-2025-06-07T18:12:08.157397,True,example.xml,hans.mueller@ethz.ch,[EMAIL_39]
-2025-06-07T18:12:08.157397,True,example.xml,+41 44 123 45,[PHONE_40]
-2025-06-07T18:12:08.157397,True,example.xml,l.meier@digitalsystems.ch,[EMAIL_41]
-2025-06-07T18:12:08.157397,True,example.xml,+41 44 456 78,[PHONE_42]
-2025-06-07T18:12:08.157397,True,example.xml,987.654.321,[SSN_43]
-2025-06-07T18:12:08.157397,True,example.xml,CHE-987.654.321,[SSN_44]
-2025-06-07T18:12:08.157397,True,example.xml,8002 Zürich,[ADDRESS_45]
-2025-06-07T18:12:08.157397,True,example.xml,Musterstrasse 123,[ADDRESS_46]
-2025-06-07T18:12:08.157397,True,example.xml,lara.meier@techsolutions.ch,[EMAIL_47]
-2025-06-07T18:12:08.157397,True,example.xml,123.456.789,[SSN_48]
-2025-06-07T18:12:08.157397,True,example.xml,CHE-123.456.789,[SSN_49]
-2025-06-07T18:12:08.157397,True,example.xml,8004 Zürich,[ADDRESS_50]
-2025-06-07T18:12:08.157397,True,example.xml,Industriestrasse 100,[ADDRESS_51]
-2025-06-07T18:12:08.157397,True,example.xml,lara.meier@example.ch,[EMAIL_52]
-2025-06-07T18:12:08.157397,True,example.xml,8001 Zürich,[ADDRESS_53]
-2025-06-07T18:12:08.157397,True,example.xml,Bahnhofstrasse 45,[ADDRESS_54]
-2025-06-07T18:12:08.157397,True,example.xml,"1990
-Adresse",[ADDRESS_55]
-2025-06-07T18:12:08.157397,True,example.xml,Hans,[NAME_56]
-2025-06-07T18:12:08.157397,True,example.xml,Thomas,[NAME_57]
-2025-06-07T18:12:08.157397,True,example.xml,Sophie,[NAME_58]
-2025-06-07T18:12:08.157397,True,example.xml,Luca,[NAME_59]
-2025-06-07T18:12:08.157397,True,example.xml,Emma,[NAME_60]
-2025-06-07T18:12:08.157397,True,example.xml,Müller,[NAME_61]
-2025-06-07T18:12:08.157397,True,example.xml,Weber,[NAME_62]
-2025-06-07T18:12:08.157397,True,example.xml,Martin,[NAME_63]
-2025-06-07T18:12:08.157397,True,example.xml,Ferrari,[NAME_64]
-2025-06-07T18:12:08.157397,True,example.xml,Wilson,[NAME_65]
-2025-06-07T18:12:08.157397,True,example.xml,hans.mueller@firma.de,[EMAIL_66]
-2025-06-07T18:12:08.157397,True,example.xml,thomas.weber@firma.ch,[EMAIL_67]
-2025-06-07T18:12:08.157397,True,example.xml,sophie.martin@entreprise.fr,[EMAIL_68]
-2025-06-07T18:12:08.157397,True,example.xml,luca.ferrari@azienda.it,[EMAIL_69]
-2025-06-07T18:12:08.157397,True,example.xml,emma.wilson@company.com,[EMAIL_70]
-2025-06-07T18:12:08.157397,True,example.xml,+49 89 12345678,[PHONE_71]
-2025-06-07T18:12:08.157397,True,example.xml,+41 44 234 56 78,[PHONE_72]
-2025-06-07T18:12:08.157397,True,example.xml,+33 1 34 56 78 90,[PHONE_73]
-2025-06-07T18:12:08.157397,True,example.xml,+39 02 2345 6789,[PHONE_74]
-2025-06-07T18:12:08.157397,True,example.xml,+44 20 2345 6789,[PHONE_75]
-2025-06-07T18:12:08.157397,True,example.xml,Hauptstraße 1 80331 München,[ADDRESS_76]
-2025-06-07T18:12:08.157397,True,example.xml,Bahnhofstrasse 2 8001 Zürich,[ADDRESS_77]
-2025-06-07T18:12:08.157397,True,example.xml,15 Avenue des Champs-Élysées 75008 Paris,[ADDRESS_78]
-2025-06-07T18:12:08.157397,True,example.xml,Via Monte Napoleone 8 20121 Milano,[ADDRESS_79]
-2025-06-07T18:12:08.157397,True,example.xml,25 Old Street London EC1V 9HL,[ADDRESS_80]
-2025-06-07T18:12:08.157397,True,example.xml,01-234567-8,[IBAN_81]
-2025-06-07T18:12:08.157397,True,example.xml,GB29 NWBK 6016 1331 9268 19 ,[IBAN_82]
-2025-06-07T18:12:08.157397,True,example.xml,"9012
-
-Best",[ADDRESS_83]
-2025-06-07T18:12:08.157397,True,example.xml,"5678
-Address",[ADDRESS_84]
-2025-06-07T18:12:08.157397,True,example.xml,contact@example.com,[EMAIL_85]
-2025-06-07T18:12:08.157397,True,example.xml,max.mustermann@example.com,[EMAIL_86]
-2025-06-07T18:12:08.157397,True,example.xml,+49 123 4567890,[PHONE_87]
-2025-06-07T18:12:08.157397,True,example.xml,2024-03-15,[DATE_88]
-2025-06-07T18:12:08.157397,True,example.xml,4111 1111 1111 1111,[IBAN_89]
-2025-06-07T18:12:08.157397,True,example.xml,Tech Solutions GmbH,[NAME_90]
-2025-06-07T18:12:08.157397,True,example.xml,Dr. Anna Schmidt,NAME_91
-2025-06-07T18:12:08.157397,True,example.xml,anna.schmidt@techsolutions.de,[EMAIL_92]
-2025-06-07T18:12:08.157397,True,example.xml,Dr. Thomas Weber,[NAME_93]
-2025-06-07T18:12:08.157397,True,example.xml,thomas.weber@company.de,[EMAIL_94]
-2025-06-07T18:12:08.157397,True,example.xml,maria.schmidt@company.de,[EMAIL_95]
-2025-06-07T18:12:08.157397,True,example.xml,+49 40 98765432,[PHONE_96]
-2025-06-07T18:12:08.157397,True,example.xml,DE27 3704 0044 0532 0130 01,[PHONE_97]
-2025-06-07T18:12:08.157397,True,example.xml,info@techinnovations.de,[EMAIL_98]
-2025-06-07T18:12:08.157397,True,example.xml,+49 89 12345679,[PHONE_99]
-2025-06-07T18:12:08.157397,True,example.xml,DE89 3704 0044 0532 0130 02,[PHONE_100]
-2025-06-07T18:12:08.178030,True,french.txt,000-180.000,[PHONE_1]
-2025-06-07T18:12:08.178030,True,french.txt,2027 Bewertung,[ADDRESS_2]
-2025-06-07T18:12:08.178030,True,french.txt,Max Mustermann,[NAME_3]
-2025-06-07T18:12:08.178030,True,french.txt,Peter Schmid,[NAME_4]
-2025-06-07T18:12:08.178030,True,french.txt,Marie Dupont,[NAME_5]
-2025-06-07T18:12:08.178030,True,french.txt,Marco Rossi,[NAME_6]
-2025-06-07T18:12:08.178030,True,french.txt,John Smith,[NAME_7]
-2025-06-07T18:12:08.178030,True,french.txt,max.mustermann@beispiel.de,[EMAIL_8]
-2025-06-07T18:12:08.178030,True,french.txt,peter.schmid@beispiel.ch,[EMAIL_9]
-2025-06-07T18:12:08.178030,True,french.txt,marie.dupont@exemple.fr,[EMAIL_10]
-2025-06-07T18:12:08.178030,True,french.txt,marco.rossi@esempio.it,[EMAIL_11]
-2025-06-07T18:12:08.178030,True,french.txt,john.smith@example.com,[EMAIL_12]
-2025-06-07T18:12:08.178030,True,french.txt,+49 30 12345678,[PHONE_13]
-2025-06-07T18:12:08.178030,True,french.txt,+41 44 123 45 67,[PHONE_14]
-2025-06-07T18:12:08.178030,True,french.txt,+33 1 23 45 67 89,[PHONE_15]
-2025-06-07T18:12:08.178030,True,french.txt,+39 02 1234 5678,[PHONE_16]
-2025-06-07T18:12:08.178030,True,french.txt,+44 20 1234 5678,[PHONE_17]
-2025-06-07T18:12:08.178030,True,french.txt,Musterstraße 123 12345 Berlin,[ADDRESS_18]
-2025-06-07T18:12:08.178030,True,french.txt,Bahnhofstrasse 1 8001 Zürich,[ADDRESS_19]
-2025-06-07T18:12:08.178030,True,french.txt,123 Rue de Paris 75001 Paris,[ADDRESS_20]
-2025-06-07T18:12:08.178030,True,french.txt,Via Roma 123 20100 Milano,[ADDRESS_21]
-2025-06-07T18:12:08.178030,True,french.txt,123 High Street London SW1A 1AA,[ADDRESS_22]
-2025-06-07T18:12:08.178030,True,french.txt,DE89 3704 0044 0532 0130 00,[IBAN_23]
-2025-06-07T18:12:08.178030,True,french.txt,CH93 0076 7000 E529 3557 7,[IBAN_24]
-2025-06-07T18:12:08.178030,True,french.txt,FR76 3000 6000 0112 3456 7890 189,[IBAN_25]
-2025-06-07T18:12:08.178030,True,french.txt,IT60 X054 2811 1010 0000 0123 456,[IBAN_26]
-2025-06-07T18:12:08.178030,True,french.txt,GB29 NWBK 6016 1331 9268 19,[IBAN_27]
-2025-06-07T18:12:08.178030,True,french.txt,4532 1234 5678 9012,[IBAN_28]
-2025-06-07T18:12:08.178030,True,french.txt,4532 1234 5678 9013,[IBAN_29]
-2025-06-07T18:12:08.178030,True,french.txt,4532 1234 5678 9014,[IBAN_30]
-2025-06-07T18:12:08.178030,True,french.txt,4532 1234 5678 9015,[IBAN_31]
-2025-06-07T18:12:08.178030,True,french.txt,4532 1234 5678 9016,[IBAN_32]
-2025-06-07T18:12:08.178030,True,french.txt,nan,[SSN_33]
-2025-06-07T18:12:08.178030,True,french.txt,756.1234.5678.90,[SSN_34]
-2025-06-07T18:12:08.178030,True,french.txt, ,[SSN_35]
-2025-06-07T18:12:08.178030,True,french.txt,sarah.weber@techsolutions.ch,[EMAIL_36]
-2025-06-07T18:12:08.178030,True,french.txt,+41 44 987 65,[PHONE_37]
-2025-06-07T18:12:08.178030,True,french.txt,"Dr. Sarah Weber
-TechSolutions",[NAME_38]
-2025-06-07T18:12:08.178030,True,french.txt,hans.mueller@ethz.ch,[EMAIL_39]
-2025-06-07T18:12:08.178030,True,french.txt,+41 44 123 45,[PHONE_40]
-2025-06-07T18:12:08.178030,True,french.txt,l.meier@digitalsystems.ch,[EMAIL_41]
-2025-06-07T18:12:08.178030,True,french.txt,+41 44 456 78,[PHONE_42]
-2025-06-07T18:12:08.178030,True,french.txt,987.654.321,[SSN_43]
-2025-06-07T18:12:08.178030,True,french.txt,CHE-987.654.321,[SSN_44]
-2025-06-07T18:12:08.178030,True,french.txt,8002 Zürich,[ADDRESS_45]
-2025-06-07T18:12:08.178030,True,french.txt,Musterstrasse 123,[ADDRESS_46]
-2025-06-07T18:12:08.178030,True,french.txt,lara.meier@techsolutions.ch,[EMAIL_47]
-2025-06-07T18:12:08.178030,True,french.txt,123.456.789,[SSN_48]
-2025-06-07T18:12:08.178030,True,french.txt,CHE-123.456.789,[SSN_49]
-2025-06-07T18:12:08.178030,True,french.txt,8004 Zürich,[ADDRESS_50]
-2025-06-07T18:12:08.178030,True,french.txt,Industriestrasse 100,[ADDRESS_51]
-2025-06-07T18:12:08.178030,True,french.txt,lara.meier@example.ch,[EMAIL_52]
-2025-06-07T18:12:08.178030,True,french.txt,8001 Zürich,[ADDRESS_53]
-2025-06-07T18:12:08.178030,True,french.txt,Bahnhofstrasse 45,[ADDRESS_54]
-2025-06-07T18:12:08.178030,True,french.txt,"1990
-Adresse",[ADDRESS_55]
-2025-06-07T18:12:08.178030,True,french.txt,Hans,[NAME_56]
-2025-06-07T18:12:08.178030,True,french.txt,Thomas,[NAME_57]
-2025-06-07T18:12:08.178030,True,french.txt,Sophie,[NAME_58]
-2025-06-07T18:12:08.178030,True,french.txt,Luca,[NAME_59]
-2025-06-07T18:12:08.178030,True,french.txt,Emma,[NAME_60]
-2025-06-07T18:12:08.178030,True,french.txt,Müller,[NAME_61]
-2025-06-07T18:12:08.178030,True,french.txt,Weber,[NAME_62]
-2025-06-07T18:12:08.178030,True,french.txt,Martin,[NAME_63]
-2025-06-07T18:12:08.178030,True,french.txt,Ferrari,[NAME_64]
-2025-06-07T18:12:08.178030,True,french.txt,Wilson,[NAME_65]
-2025-06-07T18:12:08.178030,True,french.txt,hans.mueller@firma.de,[EMAIL_66]
-2025-06-07T18:12:08.178030,True,french.txt,thomas.weber@firma.ch,[EMAIL_67]
-2025-06-07T18:12:08.178030,True,french.txt,sophie.martin@entreprise.fr,[EMAIL_68]
-2025-06-07T18:12:08.178030,True,french.txt,luca.ferrari@azienda.it,[EMAIL_69]
-2025-06-07T18:12:08.178030,True,french.txt,emma.wilson@company.com,[EMAIL_70]
-2025-06-07T18:12:08.178030,True,french.txt,+49 89 12345678,[PHONE_71]
-2025-06-07T18:12:08.178030,True,french.txt,+41 44 234 56 78,[PHONE_72]
-2025-06-07T18:12:08.178030,True,french.txt,+33 1 34 56 78 90,[PHONE_73]
-2025-06-07T18:12:08.178030,True,french.txt,+39 02 2345 6789,[PHONE_74]
-2025-06-07T18:12:08.178030,True,french.txt,+44 20 2345 6789,[PHONE_75]
-2025-06-07T18:12:08.178030,True,french.txt,Hauptstraße 1 80331 München,[ADDRESS_76]
-2025-06-07T18:12:08.178030,True,french.txt,Bahnhofstrasse 2 8001 Zürich,[ADDRESS_77]
-2025-06-07T18:12:08.178030,True,french.txt,15 Avenue des Champs-Élysées 75008 Paris,[ADDRESS_78]
-2025-06-07T18:12:08.178030,True,french.txt,Via Monte Napoleone 8 20121 Milano,[ADDRESS_79]
-2025-06-07T18:12:08.178030,True,french.txt,25 Old Street London EC1V 9HL,[ADDRESS_80]
-2025-06-07T18:12:08.178030,True,french.txt,01-234567-8,[IBAN_81]
-2025-06-07T18:12:08.178030,True,french.txt,GB29 NWBK 6016 1331 9268 19 ,[IBAN_82]
-2025-06-07T18:12:08.178030,True,french.txt,"9012
-
-Best",[ADDRESS_83]
-2025-06-07T18:12:08.178030,True,french.txt,"5678
-Address",[ADDRESS_84]
-2025-06-07T18:12:08.178030,True,french.txt,contact@example.com,[EMAIL_85]
-2025-06-07T18:12:08.178030,True,french.txt,max.mustermann@example.com,[EMAIL_86]
-2025-06-07T18:12:08.178030,True,french.txt,+49 123 4567890,[PHONE_87]
-2025-06-07T18:12:08.178030,True,french.txt,2024-03-15,[DATE_88]
-2025-06-07T18:12:08.178030,True,french.txt,4111 1111 1111 1111,[IBAN_89]
-2025-06-07T18:12:08.178030,True,french.txt,Tech Solutions GmbH,[NAME_90]
-2025-06-07T18:12:08.178030,True,french.txt,Dr. Anna Schmidt,NAME_91
-2025-06-07T18:12:08.178030,True,french.txt,anna.schmidt@techsolutions.de,[EMAIL_92]
-2025-06-07T18:12:08.178030,True,french.txt,Dr. Thomas Weber,[NAME_93]
-2025-06-07T18:12:08.178030,True,french.txt,thomas.weber@company.de,[EMAIL_94]
-2025-06-07T18:12:08.178030,True,french.txt,maria.schmidt@company.de,[EMAIL_95]
-2025-06-07T18:12:08.178030,True,french.txt,+49 40 98765432,[PHONE_96]
-2025-06-07T18:12:08.178030,True,french.txt,DE27 3704 0044 0532 0130 01,[PHONE_97]
-2025-06-07T18:12:08.178030,True,french.txt,info@techinnovations.de,[EMAIL_98]
-2025-06-07T18:12:08.178030,True,french.txt,+49 89 12345679,[PHONE_99]
-2025-06-07T18:12:08.178030,True,french.txt,DE89 3704 0044 0532 0130 02,[PHONE_100]
-2025-06-07T18:12:08.178030,True,french.txt,"9012
-
-Cordialement",[ADDRESS_101]
-2025-06-07T18:12:08.178030,True,french.txt,0112 3456 7890,[PHONE_102]
-2025-06-07T18:12:08.178030,True,french.txt,+33 1 23 45,[PHONE_103]
-2025-06-07T18:12:08.178030,True,french.txt,contact@exemple.fr,[EMAIL_104]
-2025-06-07T18:12:08.201071,True,german.txt,000-180.000,[PHONE_1]
-2025-06-07T18:12:08.201071,True,german.txt,2027 Bewertung,[ADDRESS_2]
-2025-06-07T18:12:08.201071,True,german.txt,Max Mustermann,[NAME_3]
-2025-06-07T18:12:08.201071,True,german.txt,Peter Schmid,[NAME_4]
-2025-06-07T18:12:08.201071,True,german.txt,Marie Dupont,[NAME_5]
-2025-06-07T18:12:08.201071,True,german.txt,Marco Rossi,[NAME_6]
-2025-06-07T18:12:08.201071,True,german.txt,John Smith,[NAME_7]
-2025-06-07T18:12:08.201071,True,german.txt,max.mustermann@beispiel.de,[EMAIL_8]
-2025-06-07T18:12:08.201071,True,german.txt,peter.schmid@beispiel.ch,[EMAIL_9]
-2025-06-07T18:12:08.201071,True,german.txt,marie.dupont@exemple.fr,[EMAIL_10]
-2025-06-07T18:12:08.201071,True,german.txt,marco.rossi@esempio.it,[EMAIL_11]
-2025-06-07T18:12:08.201071,True,german.txt,john.smith@example.com,[EMAIL_12]
-2025-06-07T18:12:08.201071,True,german.txt,+49 30 12345678,[PHONE_13]
-2025-06-07T18:12:08.201071,True,german.txt,+41 44 123 45 67,[PHONE_14]
-2025-06-07T18:12:08.201071,True,german.txt,+33 1 23 45 67 89,[PHONE_15]
-2025-06-07T18:12:08.201071,True,german.txt,+39 02 1234 5678,[PHONE_16]
-2025-06-07T18:12:08.201071,True,german.txt,+44 20 1234 5678,[PHONE_17]
-2025-06-07T18:12:08.201071,True,german.txt,Musterstraße 123 12345 Berlin,[ADDRESS_18]
-2025-06-07T18:12:08.201071,True,german.txt,Bahnhofstrasse 1 8001 Zürich,[ADDRESS_19]
-2025-06-07T18:12:08.201071,True,german.txt,123 Rue de Paris 75001 Paris,[ADDRESS_20]
-2025-06-07T18:12:08.201071,True,german.txt,Via Roma 123 20100 Milano,[ADDRESS_21]
-2025-06-07T18:12:08.201071,True,german.txt,123 High Street London SW1A 1AA,[ADDRESS_22]
-2025-06-07T18:12:08.201071,True,german.txt,DE89 3704 0044 0532 0130 00,[IBAN_23]
-2025-06-07T18:12:08.201071,True,german.txt,CH93 0076 7000 E529 3557 7,[IBAN_24]
-2025-06-07T18:12:08.201071,True,german.txt,FR76 3000 6000 0112 3456 7890 189,[IBAN_25]
-2025-06-07T18:12:08.201071,True,german.txt,IT60 X054 2811 1010 0000 0123 456,[IBAN_26]
-2025-06-07T18:12:08.201071,True,german.txt,GB29 NWBK 6016 1331 9268 19,[IBAN_27]
-2025-06-07T18:12:08.201071,True,german.txt,4532 1234 5678 9012,[IBAN_28]
-2025-06-07T18:12:08.201071,True,german.txt,4532 1234 5678 9013,[IBAN_29]
-2025-06-07T18:12:08.201071,True,german.txt,4532 1234 5678 9014,[IBAN_30]
-2025-06-07T18:12:08.201071,True,german.txt,4532 1234 5678 9015,[IBAN_31]
-2025-06-07T18:12:08.201071,True,german.txt,4532 1234 5678 9016,[IBAN_32]
-2025-06-07T18:12:08.201071,True,german.txt,nan,[SSN_33]
-2025-06-07T18:12:08.201071,True,german.txt,756.1234.5678.90,[SSN_34]
-2025-06-07T18:12:08.201071,True,german.txt, ,[SSN_35]
-2025-06-07T18:12:08.201071,True,german.txt,sarah.weber@techsolutions.ch,[EMAIL_36]
-2025-06-07T18:12:08.201071,True,german.txt,+41 44 987 65,[PHONE_37]
-2025-06-07T18:12:08.201071,True,german.txt,"Dr. Sarah Weber
-TechSolutions",[NAME_38]
-2025-06-07T18:12:08.201071,True,german.txt,hans.mueller@ethz.ch,[EMAIL_39]
-2025-06-07T18:12:08.201071,True,german.txt,+41 44 123 45,[PHONE_40]
-2025-06-07T18:12:08.201071,True,german.txt,l.meier@digitalsystems.ch,[EMAIL_41]
-2025-06-07T18:12:08.201071,True,german.txt,+41 44 456 78,[PHONE_42]
-2025-06-07T18:12:08.201071,True,german.txt,987.654.321,[SSN_43]
-2025-06-07T18:12:08.201071,True,german.txt,CHE-987.654.321,[SSN_44]
-2025-06-07T18:12:08.201071,True,german.txt,8002 Zürich,[ADDRESS_45]
-2025-06-07T18:12:08.201071,True,german.txt,Musterstrasse 123,[ADDRESS_46]
-2025-06-07T18:12:08.201071,True,german.txt,lara.meier@techsolutions.ch,[EMAIL_47]
-2025-06-07T18:12:08.201071,True,german.txt,123.456.789,[SSN_48]
-2025-06-07T18:12:08.201071,True,german.txt,CHE-123.456.789,[SSN_49]
-2025-06-07T18:12:08.201071,True,german.txt,8004 Zürich,[ADDRESS_50]
-2025-06-07T18:12:08.201071,True,german.txt,Industriestrasse 100,[ADDRESS_51]
-2025-06-07T18:12:08.201071,True,german.txt,lara.meier@example.ch,[EMAIL_52]
-2025-06-07T18:12:08.201071,True,german.txt,8001 Zürich,[ADDRESS_53]
-2025-06-07T18:12:08.201071,True,german.txt,Bahnhofstrasse 45,[ADDRESS_54]
-2025-06-07T18:12:08.201071,True,german.txt,"1990
-Adresse",[ADDRESS_55]
-2025-06-07T18:12:08.201071,True,german.txt,Hans,[NAME_56]
-2025-06-07T18:12:08.201071,True,german.txt,Thomas,[NAME_57]
-2025-06-07T18:12:08.201071,True,german.txt,Sophie,[NAME_58]
-2025-06-07T18:12:08.201071,True,german.txt,Luca,[NAME_59]
-2025-06-07T18:12:08.201071,True,german.txt,Emma,[NAME_60]
-2025-06-07T18:12:08.201071,True,german.txt,Müller,[NAME_61]
-2025-06-07T18:12:08.201071,True,german.txt,Weber,[NAME_62]
-2025-06-07T18:12:08.201071,True,german.txt,Martin,[NAME_63]
-2025-06-07T18:12:08.201071,True,german.txt,Ferrari,[NAME_64]
-2025-06-07T18:12:08.201071,True,german.txt,Wilson,[NAME_65]
-2025-06-07T18:12:08.201071,True,german.txt,hans.mueller@firma.de,[EMAIL_66]
-2025-06-07T18:12:08.201071,True,german.txt,thomas.weber@firma.ch,[EMAIL_67]
-2025-06-07T18:12:08.201071,True,german.txt,sophie.martin@entreprise.fr,[EMAIL_68]
-2025-06-07T18:12:08.201071,True,german.txt,luca.ferrari@azienda.it,[EMAIL_69]
-2025-06-07T18:12:08.201071,True,german.txt,emma.wilson@company.com,[EMAIL_70]
-2025-06-07T18:12:08.201071,True,german.txt,+49 89 12345678,[PHONE_71]
-2025-06-07T18:12:08.201071,True,german.txt,+41 44 234 56 78,[PHONE_72]
-2025-06-07T18:12:08.201071,True,german.txt,+33 1 34 56 78 90,[PHONE_73]
-2025-06-07T18:12:08.201071,True,german.txt,+39 02 2345 6789,[PHONE_74]
-2025-06-07T18:12:08.201071,True,german.txt,+44 20 2345 6789,[PHONE_75]
-2025-06-07T18:12:08.201071,True,german.txt,Hauptstraße 1 80331 München,[ADDRESS_76]
-2025-06-07T18:12:08.201071,True,german.txt,Bahnhofstrasse 2 8001 Zürich,[ADDRESS_77]
-2025-06-07T18:12:08.201071,True,german.txt,15 Avenue des Champs-Élysées 75008 Paris,[ADDRESS_78]
-2025-06-07T18:12:08.201071,True,german.txt,Via Monte Napoleone 8 20121 Milano,[ADDRESS_79]
-2025-06-07T18:12:08.201071,True,german.txt,25 Old Street London EC1V 9HL,[ADDRESS_80]
-2025-06-07T18:12:08.201071,True,german.txt,01-234567-8,[IBAN_81]
-2025-06-07T18:12:08.201071,True,german.txt,GB29 NWBK 6016 1331 9268 19 ,[IBAN_82]
-2025-06-07T18:12:08.201071,True,german.txt,"9012
-
-Best",[ADDRESS_83]
-2025-06-07T18:12:08.201071,True,german.txt,"5678
-Address",[ADDRESS_84]
-2025-06-07T18:12:08.201071,True,german.txt,contact@example.com,[EMAIL_85]
-2025-06-07T18:12:08.201071,True,german.txt,max.mustermann@example.com,[EMAIL_86]
-2025-06-07T18:12:08.201071,True,german.txt,+49 123 4567890,[PHONE_87]
-2025-06-07T18:12:08.201071,True,german.txt,2024-03-15,[DATE_88]
-2025-06-07T18:12:08.201071,True,german.txt,4111 1111 1111 1111,[IBAN_89]
-2025-06-07T18:12:08.201071,True,german.txt,Tech Solutions GmbH,[NAME_90]
-2025-06-07T18:12:08.201071,True,german.txt,Dr. Anna Schmidt,NAME_91
-2025-06-07T18:12:08.201071,True,german.txt,anna.schmidt@techsolutions.de,[EMAIL_92]
-2025-06-07T18:12:08.201071,True,german.txt,Dr. Thomas Weber,[NAME_93]
-2025-06-07T18:12:08.201071,True,german.txt,thomas.weber@company.de,[EMAIL_94]
-2025-06-07T18:12:08.201071,True,german.txt,maria.schmidt@company.de,[EMAIL_95]
-2025-06-07T18:12:08.201071,True,german.txt,+49 40 98765432,[PHONE_96]
-2025-06-07T18:12:08.201071,True,german.txt,DE27 3704 0044 0532 0130 01,[PHONE_97]
-2025-06-07T18:12:08.201071,True,german.txt,info@techinnovations.de,[EMAIL_98]
-2025-06-07T18:12:08.201071,True,german.txt,+49 89 12345679,[PHONE_99]
-2025-06-07T18:12:08.201071,True,german.txt,DE89 3704 0044 0532 0130 02,[PHONE_100]
-2025-06-07T18:12:08.201071,True,german.txt,"9012
-
-Cordialement",[ADDRESS_101]
-2025-06-07T18:12:08.201071,True,german.txt,0112 3456 7890,[PHONE_102]
-2025-06-07T18:12:08.201071,True,german.txt,+33 1 23 45,[PHONE_103]
-2025-06-07T18:12:08.201071,True,german.txt,contact@exemple.fr,[EMAIL_104]
-2025-06-07T18:12:08.201071,True,german.txt,"9012
-
-Mit",[ADDRESS_105]
-2025-06-07T18:12:08.201071,True,german.txt,0532 0130 00,[PHONE_106]
-2025-06-07T18:12:08.201071,True,german.txt,0044 0532 0130,[PHONE_107]
-2025-06-07T18:12:08.201071,True,german.txt,030-12345678,[PHONE_108]
-2025-06-07T18:12:08.228652,True,geschaeftsstrategie.txt,000-180.000,[PHONE_1]
-2025-06-07T18:12:08.228652,True,geschaeftsstrategie.txt,2027 Bewertung,[ADDRESS_2]
-2025-06-07T18:12:08.228652,True,geschaeftsstrategie.txt,Max Mustermann,[NAME_3]
-2025-06-07T18:12:08.228652,True,geschaeftsstrategie.txt,Peter Schmid,[NAME_4]
-2025-06-07T18:12:08.228652,True,geschaeftsstrategie.txt,Marie Dupont,[NAME_5]
-2025-06-07T18:12:08.228652,True,geschaeftsstrategie.txt,Marco Rossi,[NAME_6]
-2025-06-07T18:12:08.228652,True,geschaeftsstrategie.txt,John Smith,[NAME_7]
-2025-06-07T18:12:08.228652,True,geschaeftsstrategie.txt,max.mustermann@beispiel.de,[EMAIL_8]
-2025-06-07T18:12:08.228652,True,geschaeftsstrategie.txt,peter.schmid@beispiel.ch,[EMAIL_9]
-2025-06-07T18:12:08.228652,True,geschaeftsstrategie.txt,marie.dupont@exemple.fr,[EMAIL_10]
-2025-06-07T18:12:08.228652,True,geschaeftsstrategie.txt,marco.rossi@esempio.it,[EMAIL_11]
-2025-06-07T18:12:08.228652,True,geschaeftsstrategie.txt,john.smith@example.com,[EMAIL_12]
-2025-06-07T18:12:08.228652,True,geschaeftsstrategie.txt,+49 30 12345678,[PHONE_13]
-2025-06-07T18:12:08.228652,True,geschaeftsstrategie.txt,+41 44 123 45 67,[PHONE_14]
-2025-06-07T18:12:08.228652,True,geschaeftsstrategie.txt,+33 1 23 45 67 89,[PHONE_15]
-2025-06-07T18:12:08.228652,True,geschaeftsstrategie.txt,+39 02 1234 5678,[PHONE_16]
-2025-06-07T18:12:08.228652,True,geschaeftsstrategie.txt,+44 20 1234 5678,[PHONE_17]
-2025-06-07T18:12:08.228652,True,geschaeftsstrategie.txt,Musterstraße 123 12345 Berlin,[ADDRESS_18]
-2025-06-07T18:12:08.228652,True,geschaeftsstrategie.txt,Bahnhofstrasse 1 8001 Zürich,[ADDRESS_19]
-2025-06-07T18:12:08.228652,True,geschaeftsstrategie.txt,123 Rue de Paris 75001 Paris,[ADDRESS_20]
-2025-06-07T18:12:08.228652,True,geschaeftsstrategie.txt,Via Roma 123 20100 Milano,[ADDRESS_21]
-2025-06-07T18:12:08.228652,True,geschaeftsstrategie.txt,123 High Street London SW1A 1AA,[ADDRESS_22]
-2025-06-07T18:12:08.228652,True,geschaeftsstrategie.txt,DE89 3704 0044 0532 0130 00,[IBAN_23]
-2025-06-07T18:12:08.228652,True,geschaeftsstrategie.txt,CH93 0076 7000 E529 3557 7,[IBAN_24]
-2025-06-07T18:12:08.228652,True,geschaeftsstrategie.txt,FR76 3000 6000 0112 3456 7890 189,[IBAN_25]
-2025-06-07T18:12:08.228652,True,geschaeftsstrategie.txt,IT60 X054 2811 1010 0000 0123 456,[IBAN_26]
-2025-06-07T18:12:08.228652,True,geschaeftsstrategie.txt,GB29 NWBK 6016 1331 9268 19,[IBAN_27]
-2025-06-07T18:12:08.228652,True,geschaeftsstrategie.txt,4532 1234 5678 9012,[IBAN_28]
-2025-06-07T18:12:08.228652,True,geschaeftsstrategie.txt,4532 1234 5678 9013,[IBAN_29]
-2025-06-07T18:12:08.228652,True,geschaeftsstrategie.txt,4532 1234 5678 9014,[IBAN_30]
-2025-06-07T18:12:08.228652,True,geschaeftsstrategie.txt,4532 1234 5678 9015,[IBAN_31]
-2025-06-07T18:12:08.228652,True,geschaeftsstrategie.txt,4532 1234 5678 9016,[IBAN_32]
-2025-06-07T18:12:08.228652,True,geschaeftsstrategie.txt,nan,[SSN_33]
-2025-06-07T18:12:08.228652,True,geschaeftsstrategie.txt,756.1234.5678.90,[SSN_34]
-2025-06-07T18:12:08.228652,True,geschaeftsstrategie.txt, ,[SSN_35]
-2025-06-07T18:12:08.228652,True,geschaeftsstrategie.txt,sarah.weber@techsolutions.ch,[EMAIL_36]
-2025-06-07T18:12:08.228652,True,geschaeftsstrategie.txt,+41 44 987 65,[PHONE_37]
-2025-06-07T18:12:08.228652,True,geschaeftsstrategie.txt,"Dr. Sarah Weber
-TechSolutions",[NAME_38]
-2025-06-07T18:12:08.228652,True,geschaeftsstrategie.txt,hans.mueller@ethz.ch,[EMAIL_39]
-2025-06-07T18:12:08.228652,True,geschaeftsstrategie.txt,+41 44 123 45,[PHONE_40]
-2025-06-07T18:12:08.228652,True,geschaeftsstrategie.txt,l.meier@digitalsystems.ch,[EMAIL_41]
-2025-06-07T18:12:08.228652,True,geschaeftsstrategie.txt,+41 44 456 78,[PHONE_42]
-2025-06-07T18:12:08.228652,True,geschaeftsstrategie.txt,987.654.321,[SSN_43]
-2025-06-07T18:12:08.228652,True,geschaeftsstrategie.txt,CHE-987.654.321,[SSN_44]
-2025-06-07T18:12:08.228652,True,geschaeftsstrategie.txt,8002 Zürich,[ADDRESS_45]
-2025-06-07T18:12:08.228652,True,geschaeftsstrategie.txt,Musterstrasse 123,[ADDRESS_46]
-2025-06-07T18:12:08.228652,True,geschaeftsstrategie.txt,lara.meier@techsolutions.ch,[EMAIL_47]
-2025-06-07T18:12:08.228652,True,geschaeftsstrategie.txt,123.456.789,[SSN_48]
-2025-06-07T18:12:08.228652,True,geschaeftsstrategie.txt,CHE-123.456.789,[SSN_49]
-2025-06-07T18:12:08.228652,True,geschaeftsstrategie.txt,8004 Zürich,[ADDRESS_50]
-2025-06-07T18:12:08.228652,True,geschaeftsstrategie.txt,Industriestrasse 100,[ADDRESS_51]
-2025-06-07T18:12:08.228652,True,geschaeftsstrategie.txt,lara.meier@example.ch,[EMAIL_52]
-2025-06-07T18:12:08.228652,True,geschaeftsstrategie.txt,8001 Zürich,[ADDRESS_53]
-2025-06-07T18:12:08.228652,True,geschaeftsstrategie.txt,Bahnhofstrasse 45,[ADDRESS_54]
-2025-06-07T18:12:08.228652,True,geschaeftsstrategie.txt,"1990
-Adresse",[ADDRESS_55]
-2025-06-07T18:12:08.228652,True,geschaeftsstrategie.txt,Hans,[NAME_56]
-2025-06-07T18:12:08.228652,True,geschaeftsstrategie.txt,Thomas,[NAME_57]
-2025-06-07T18:12:08.228652,True,geschaeftsstrategie.txt,Sophie,[NAME_58]
-2025-06-07T18:12:08.228652,True,geschaeftsstrategie.txt,Luca,[NAME_59]
-2025-06-07T18:12:08.228652,True,geschaeftsstrategie.txt,Emma,[NAME_60]
-2025-06-07T18:12:08.228652,True,geschaeftsstrategie.txt,Müller,[NAME_61]
-2025-06-07T18:12:08.228652,True,geschaeftsstrategie.txt,Weber,[NAME_62]
-2025-06-07T18:12:08.228652,True,geschaeftsstrategie.txt,Martin,[NAME_63]
-2025-06-07T18:12:08.228652,True,geschaeftsstrategie.txt,Ferrari,[NAME_64]
-2025-06-07T18:12:08.228652,True,geschaeftsstrategie.txt,Wilson,[NAME_65]
-2025-06-07T18:12:08.228652,True,geschaeftsstrategie.txt,hans.mueller@firma.de,[EMAIL_66]
-2025-06-07T18:12:08.228652,True,geschaeftsstrategie.txt,thomas.weber@firma.ch,[EMAIL_67]
-2025-06-07T18:12:08.228652,True,geschaeftsstrategie.txt,sophie.martin@entreprise.fr,[EMAIL_68]
-2025-06-07T18:12:08.228652,True,geschaeftsstrategie.txt,luca.ferrari@azienda.it,[EMAIL_69]
-2025-06-07T18:12:08.228652,True,geschaeftsstrategie.txt,emma.wilson@company.com,[EMAIL_70]
-2025-06-07T18:12:08.228652,True,geschaeftsstrategie.txt,+49 89 12345678,[PHONE_71]
-2025-06-07T18:12:08.228652,True,geschaeftsstrategie.txt,+41 44 234 56 78,[PHONE_72]
-2025-06-07T18:12:08.228652,True,geschaeftsstrategie.txt,+33 1 34 56 78 90,[PHONE_73]
-2025-06-07T18:12:08.228652,True,geschaeftsstrategie.txt,+39 02 2345 6789,[PHONE_74]
-2025-06-07T18:12:08.228652,True,geschaeftsstrategie.txt,+44 20 2345 6789,[PHONE_75]
-2025-06-07T18:12:08.228652,True,geschaeftsstrategie.txt,Hauptstraße 1 80331 München,[ADDRESS_76]
-2025-06-07T18:12:08.228652,True,geschaeftsstrategie.txt,Bahnhofstrasse 2 8001 Zürich,[ADDRESS_77]
-2025-06-07T18:12:08.228652,True,geschaeftsstrategie.txt,15 Avenue des Champs-Élysées 75008 Paris,[ADDRESS_78]
-2025-06-07T18:12:08.228652,True,geschaeftsstrategie.txt,Via Monte Napoleone 8 20121 Milano,[ADDRESS_79]
-2025-06-07T18:12:08.228652,True,geschaeftsstrategie.txt,25 Old Street London EC1V 9HL,[ADDRESS_80]
-2025-06-07T18:12:08.228652,True,geschaeftsstrategie.txt,01-234567-8,[IBAN_81]
-2025-06-07T18:12:08.228652,True,geschaeftsstrategie.txt,GB29 NWBK 6016 1331 9268 19 ,[IBAN_82]
-2025-06-07T18:12:08.228652,True,geschaeftsstrategie.txt,"9012
-
-Best",[ADDRESS_83]
-2025-06-07T18:12:08.228652,True,geschaeftsstrategie.txt,"5678
-Address",[ADDRESS_84]
-2025-06-07T18:12:08.228652,True,geschaeftsstrategie.txt,contact@example.com,[EMAIL_85]
-2025-06-07T18:12:08.228652,True,geschaeftsstrategie.txt,max.mustermann@example.com,[EMAIL_86]
-2025-06-07T18:12:08.228652,True,geschaeftsstrategie.txt,+49 123 4567890,[PHONE_87]
-2025-06-07T18:12:08.228652,True,geschaeftsstrategie.txt,2024-03-15,[DATE_88]
-2025-06-07T18:12:08.228652,True,geschaeftsstrategie.txt,4111 1111 1111 1111,[IBAN_89]
-2025-06-07T18:12:08.228652,True,geschaeftsstrategie.txt,Tech Solutions GmbH,[NAME_90]
-2025-06-07T18:12:08.228652,True,geschaeftsstrategie.txt,Dr. Anna Schmidt,NAME_91
-2025-06-07T18:12:08.228652,True,geschaeftsstrategie.txt,anna.schmidt@techsolutions.de,[EMAIL_92]
-2025-06-07T18:12:08.228652,True,geschaeftsstrategie.txt,Dr. Thomas Weber,[NAME_93]
-2025-06-07T18:12:08.228652,True,geschaeftsstrategie.txt,thomas.weber@company.de,[EMAIL_94]
-2025-06-07T18:12:08.228652,True,geschaeftsstrategie.txt,maria.schmidt@company.de,[EMAIL_95]
-2025-06-07T18:12:08.228652,True,geschaeftsstrategie.txt,+49 40 98765432,[PHONE_96]
-2025-06-07T18:12:08.228652,True,geschaeftsstrategie.txt,DE27 3704 0044 0532 0130 01,[PHONE_97]
-2025-06-07T18:12:08.228652,True,geschaeftsstrategie.txt,info@techinnovations.de,[EMAIL_98]
-2025-06-07T18:12:08.228652,True,geschaeftsstrategie.txt,+49 89 12345679,[PHONE_99]
-2025-06-07T18:12:08.228652,True,geschaeftsstrategie.txt,DE89 3704 0044 0532 0130 02,[PHONE_100]
-2025-06-07T18:12:08.228652,True,geschaeftsstrategie.txt,"9012
-
-Cordialement",[ADDRESS_101]
-2025-06-07T18:12:08.228652,True,geschaeftsstrategie.txt,0112 3456 7890,[PHONE_102]
-2025-06-07T18:12:08.228652,True,geschaeftsstrategie.txt,+33 1 23 45,[PHONE_103]
-2025-06-07T18:12:08.228652,True,geschaeftsstrategie.txt,contact@exemple.fr,[EMAIL_104]
-2025-06-07T18:12:08.228652,True,geschaeftsstrategie.txt,"9012
-
-Mit",[ADDRESS_105]
-2025-06-07T18:12:08.228652,True,geschaeftsstrategie.txt,0532 0130 00,[PHONE_106]
-2025-06-07T18:12:08.228652,True,geschaeftsstrategie.txt,0044 0532 0130,[PHONE_107]
-2025-06-07T18:12:08.228652,True,geschaeftsstrategie.txt,030-12345678,[PHONE_108]
-2025-06-07T18:12:08.228652,True,geschaeftsstrategie.txt,sarah.mueller@techsolutions.ch,[EMAIL_109]
-2025-06-07T18:12:08.228652,True,geschaeftsstrategie.txt,thomas.weber@techsolutions.ch,[EMAIL_110]
-2025-06-07T18:12:08.228652,True,geschaeftsstrategie.txt,info@techsolutions.ch,[EMAIL_111]
-2025-06-07T18:12:08.228652,True,geschaeftsstrategie.txt,"2026
-TechSolutions",[ADDRESS_112]
-2025-06-07T18:12:08.255652,True,geschäfte.csv,000-180.000,[PHONE_1]
-2025-06-07T18:12:08.255652,True,geschäfte.csv,2027 Bewertung,[ADDRESS_2]
-2025-06-07T18:12:08.255652,True,geschäfte.csv,Max Mustermann,[NAME_3]
-2025-06-07T18:12:08.255652,True,geschäfte.csv,Peter Schmid,[NAME_4]
-2025-06-07T18:12:08.255652,True,geschäfte.csv,Marie Dupont,[NAME_5]
-2025-06-07T18:12:08.255652,True,geschäfte.csv,Marco Rossi,[NAME_6]
-2025-06-07T18:12:08.255652,True,geschäfte.csv,John Smith,[NAME_7]
-2025-06-07T18:12:08.255652,True,geschäfte.csv,max.mustermann@beispiel.de,[EMAIL_8]
-2025-06-07T18:12:08.255652,True,geschäfte.csv,peter.schmid@beispiel.ch,[EMAIL_9]
-2025-06-07T18:12:08.255652,True,geschäfte.csv,marie.dupont@exemple.fr,[EMAIL_10]
-2025-06-07T18:12:08.255652,True,geschäfte.csv,marco.rossi@esempio.it,[EMAIL_11]
-2025-06-07T18:12:08.255652,True,geschäfte.csv,john.smith@example.com,[EMAIL_12]
-2025-06-07T18:12:08.255652,True,geschäfte.csv,+49 30 12345678,[PHONE_13]
-2025-06-07T18:12:08.255652,True,geschäfte.csv,+41 44 123 45 67,[PHONE_14]
-2025-06-07T18:12:08.255652,True,geschäfte.csv,+33 1 23 45 67 89,[PHONE_15]
-2025-06-07T18:12:08.255652,True,geschäfte.csv,+39 02 1234 5678,[PHONE_16]
-2025-06-07T18:12:08.255652,True,geschäfte.csv,+44 20 1234 5678,[PHONE_17]
-2025-06-07T18:12:08.255652,True,geschäfte.csv,Musterstraße 123 12345 Berlin,[ADDRESS_18]
-2025-06-07T18:12:08.255652,True,geschäfte.csv,Bahnhofstrasse 1 8001 Zürich,[ADDRESS_19]
-2025-06-07T18:12:08.255652,True,geschäfte.csv,123 Rue de Paris 75001 Paris,[ADDRESS_20]
-2025-06-07T18:12:08.255652,True,geschäfte.csv,Via Roma 123 20100 Milano,[ADDRESS_21]
-2025-06-07T18:12:08.255652,True,geschäfte.csv,123 High Street London SW1A 1AA,[ADDRESS_22]
-2025-06-07T18:12:08.255652,True,geschäfte.csv,DE89 3704 0044 0532 0130 00,[IBAN_23]
-2025-06-07T18:12:08.255652,True,geschäfte.csv,CH93 0076 7000 E529 3557 7,[IBAN_24]
-2025-06-07T18:12:08.255652,True,geschäfte.csv,FR76 3000 6000 0112 3456 7890 189,[IBAN_25]
-2025-06-07T18:12:08.255652,True,geschäfte.csv,IT60 X054 2811 1010 0000 0123 456,[IBAN_26]
-2025-06-07T18:12:08.255652,True,geschäfte.csv,GB29 NWBK 6016 1331 9268 19,[IBAN_27]
-2025-06-07T18:12:08.255652,True,geschäfte.csv,4532 1234 5678 9012,[IBAN_28]
-2025-06-07T18:12:08.255652,True,geschäfte.csv,4532 1234 5678 9013,[IBAN_29]
-2025-06-07T18:12:08.255652,True,geschäfte.csv,4532 1234 5678 9014,[IBAN_30]
-2025-06-07T18:12:08.255652,True,geschäfte.csv,4532 1234 5678 9015,[IBAN_31]
-2025-06-07T18:12:08.255652,True,geschäfte.csv,4532 1234 5678 9016,[IBAN_32]
-2025-06-07T18:12:08.255652,True,geschäfte.csv,nan,[SSN_33]
-2025-06-07T18:12:08.255652,True,geschäfte.csv,756.1234.5678.90,[SSN_34]
-2025-06-07T18:12:08.255652,True,geschäfte.csv, ,[SSN_35]
-2025-06-07T18:12:08.255652,True,geschäfte.csv,sarah.weber@techsolutions.ch,[EMAIL_36]
-2025-06-07T18:12:08.255652,True,geschäfte.csv,+41 44 987 65,[PHONE_37]
-2025-06-07T18:12:08.255652,True,geschäfte.csv,"Dr. Sarah Weber
-TechSolutions",[NAME_38]
-2025-06-07T18:12:08.255652,True,geschäfte.csv,hans.mueller@ethz.ch,[EMAIL_39]
-2025-06-07T18:12:08.255652,True,geschäfte.csv,+41 44 123 45,[PHONE_40]
-2025-06-07T18:12:08.255652,True,geschäfte.csv,l.meier@digitalsystems.ch,[EMAIL_41]
-2025-06-07T18:12:08.255652,True,geschäfte.csv,+41 44 456 78,[PHONE_42]
-2025-06-07T18:12:08.255652,True,geschäfte.csv,987.654.321,[SSN_43]
-2025-06-07T18:12:08.255652,True,geschäfte.csv,CHE-987.654.321,[SSN_44]
-2025-06-07T18:12:08.255652,True,geschäfte.csv,8002 Zürich,[ADDRESS_45]
-2025-06-07T18:12:08.255652,True,geschäfte.csv,Musterstrasse 123,[ADDRESS_46]
-2025-06-07T18:12:08.255652,True,geschäfte.csv,lara.meier@techsolutions.ch,[EMAIL_47]
-2025-06-07T18:12:08.255652,True,geschäfte.csv,123.456.789,[SSN_48]
-2025-06-07T18:12:08.255652,True,geschäfte.csv,CHE-123.456.789,[SSN_49]
-2025-06-07T18:12:08.255652,True,geschäfte.csv,8004 Zürich,[ADDRESS_50]
-2025-06-07T18:12:08.255652,True,geschäfte.csv,Industriestrasse 100,[ADDRESS_51]
-2025-06-07T18:12:08.255652,True,geschäfte.csv,lara.meier@example.ch,[EMAIL_52]
-2025-06-07T18:12:08.255652,True,geschäfte.csv,8001 Zürich,[ADDRESS_53]
-2025-06-07T18:12:08.255652,True,geschäfte.csv,Bahnhofstrasse 45,[ADDRESS_54]
-2025-06-07T18:12:08.255652,True,geschäfte.csv,"1990
-Adresse",[ADDRESS_55]
-2025-06-07T18:12:08.255652,True,geschäfte.csv,Hans,[NAME_56]
-2025-06-07T18:12:08.255652,True,geschäfte.csv,Thomas,[NAME_57]
-2025-06-07T18:12:08.255652,True,geschäfte.csv,Sophie,[NAME_58]
-2025-06-07T18:12:08.255652,True,geschäfte.csv,Luca,[NAME_59]
-2025-06-07T18:12:08.255652,True,geschäfte.csv,Emma,[NAME_60]
-2025-06-07T18:12:08.255652,True,geschäfte.csv,Müller,[NAME_61]
-2025-06-07T18:12:08.255652,True,geschäfte.csv,Weber,[NAME_62]
-2025-06-07T18:12:08.255652,True,geschäfte.csv,Martin,[NAME_63]
-2025-06-07T18:12:08.255652,True,geschäfte.csv,Ferrari,[NAME_64]
-2025-06-07T18:12:08.255652,True,geschäfte.csv,Wilson,[NAME_65]
-2025-06-07T18:12:08.255652,True,geschäfte.csv,hans.mueller@firma.de,[EMAIL_66]
-2025-06-07T18:12:08.255652,True,geschäfte.csv,thomas.weber@firma.ch,[EMAIL_67]
-2025-06-07T18:12:08.255652,True,geschäfte.csv,sophie.martin@entreprise.fr,[EMAIL_68]
-2025-06-07T18:12:08.255652,True,geschäfte.csv,luca.ferrari@azienda.it,[EMAIL_69]
-2025-06-07T18:12:08.255652,True,geschäfte.csv,emma.wilson@company.com,[EMAIL_70]
-2025-06-07T18:12:08.255652,True,geschäfte.csv,+49 89 12345678,[PHONE_71]
-2025-06-07T18:12:08.255652,True,geschäfte.csv,+41 44 234 56 78,[PHONE_72]
-2025-06-07T18:12:08.255652,True,geschäfte.csv,+33 1 34 56 78 90,[PHONE_73]
-2025-06-07T18:12:08.255652,True,geschäfte.csv,+39 02 2345 6789,[PHONE_74]
-2025-06-07T18:12:08.255652,True,geschäfte.csv,+44 20 2345 6789,[PHONE_75]
-2025-06-07T18:12:08.255652,True,geschäfte.csv,Hauptstraße 1 80331 München,[ADDRESS_76]
-2025-06-07T18:12:08.255652,True,geschäfte.csv,Bahnhofstrasse 2 8001 Zürich,[ADDRESS_77]
-2025-06-07T18:12:08.255652,True,geschäfte.csv,15 Avenue des Champs-Élysées 75008 Paris,[ADDRESS_78]
-2025-06-07T18:12:08.255652,True,geschäfte.csv,Via Monte Napoleone 8 20121 Milano,[ADDRESS_79]
-2025-06-07T18:12:08.255652,True,geschäfte.csv,25 Old Street London EC1V 9HL,[ADDRESS_80]
-2025-06-07T18:12:08.255652,True,geschäfte.csv,01-234567-8,[IBAN_81]
-2025-06-07T18:12:08.255652,True,geschäfte.csv,GB29 NWBK 6016 1331 9268 19 ,[IBAN_82]
-2025-06-07T18:12:08.255652,True,geschäfte.csv,"9012
-
-Best",[ADDRESS_83]
-2025-06-07T18:12:08.255652,True,geschäfte.csv,"5678
-Address",[ADDRESS_84]
-2025-06-07T18:12:08.255652,True,geschäfte.csv,contact@example.com,[EMAIL_85]
-2025-06-07T18:12:08.255652,True,geschäfte.csv,max.mustermann@example.com,[EMAIL_86]
-2025-06-07T18:12:08.255652,True,geschäfte.csv,+49 123 4567890,[PHONE_87]
-2025-06-07T18:12:08.255652,True,geschäfte.csv,2024-03-15,[DATE_88]
-2025-06-07T18:12:08.255652,True,geschäfte.csv,4111 1111 1111 1111,[IBAN_89]
-2025-06-07T18:12:08.255652,True,geschäfte.csv,Tech Solutions GmbH,[NAME_90]
-2025-06-07T18:12:08.255652,True,geschäfte.csv,Dr. Anna Schmidt,NAME_91
-2025-06-07T18:12:08.255652,True,geschäfte.csv,anna.schmidt@techsolutions.de,[EMAIL_92]
-2025-06-07T18:12:08.255652,True,geschäfte.csv,Dr. Thomas Weber,[NAME_93]
-2025-06-07T18:12:08.255652,True,geschäfte.csv,thomas.weber@company.de,[EMAIL_94]
-2025-06-07T18:12:08.255652,True,geschäfte.csv,maria.schmidt@company.de,[EMAIL_95]
-2025-06-07T18:12:08.255652,True,geschäfte.csv,+49 40 98765432,[PHONE_96]
-2025-06-07T18:12:08.255652,True,geschäfte.csv,DE27 3704 0044 0532 0130 01,[PHONE_97]
-2025-06-07T18:12:08.255652,True,geschäfte.csv,info@techinnovations.de,[EMAIL_98]
-2025-06-07T18:12:08.255652,True,geschäfte.csv,+49 89 12345679,[PHONE_99]
-2025-06-07T18:12:08.255652,True,geschäfte.csv,DE89 3704 0044 0532 0130 02,[PHONE_100]
-2025-06-07T18:12:08.255652,True,geschäfte.csv,"9012
-
-Cordialement",[ADDRESS_101]
-2025-06-07T18:12:08.255652,True,geschäfte.csv,0112 3456 7890,[PHONE_102]
-2025-06-07T18:12:08.255652,True,geschäfte.csv,+33 1 23 45,[PHONE_103]
-2025-06-07T18:12:08.255652,True,geschäfte.csv,contact@exemple.fr,[EMAIL_104]
-2025-06-07T18:12:08.255652,True,geschäfte.csv,"9012
-
-Mit",[ADDRESS_105]
-2025-06-07T18:12:08.255652,True,geschäfte.csv,0532 0130 00,[PHONE_106]
-2025-06-07T18:12:08.255652,True,geschäfte.csv,0044 0532 0130,[PHONE_107]
-2025-06-07T18:12:08.255652,True,geschäfte.csv,030-12345678,[PHONE_108]
-2025-06-07T18:12:08.255652,True,geschäfte.csv,sarah.mueller@techsolutions.ch,[EMAIL_109]
-2025-06-07T18:12:08.255652,True,geschäfte.csv,thomas.weber@techsolutions.ch,[EMAIL_110]
-2025-06-07T18:12:08.255652,True,geschäfte.csv,info@techsolutions.ch,[EMAIL_111]
-2025-06-07T18:12:08.255652,True,geschäfte.csv,"2026
-TechSolutions",[ADDRESS_112]
-2025-06-07T18:12:08.255652,True,geschäfte.csv,Anna Schmidt,[DATE_113]
-2025-06-07T18:12:08.255652,True,geschäfte.csv,Franz Huber,[DATE_114]
-2025-06-07T18:12:08.255652,True,geschäfte.csv,Pierre Dubois,[DATE_115]
-2025-06-07T18:12:08.255652,True,geschäfte.csv,Giovanni Bianchi,[DATE_116]
-2025-06-07T18:12:08.255652,True,geschäfte.csv,William Brown,[DATE_117]
-2025-06-07T18:12:08.255652,True,geschäfte.csv,anna.schmidt@kunde.de,[NAME_118]
-2025-06-07T18:12:08.255652,True,geschäfte.csv,franz.huber@kunde.de,[NAME_119]
-2025-06-07T18:12:08.255652,True,geschäfte.csv,pierre.dubois@kunde.de,[NAME_120]
-2025-06-07T18:12:08.255652,True,geschäfte.csv,giovanni.bianchi@kunde.de,[NAME_121]
-2025-06-07T18:12:08.255652,True,geschäfte.csv,william.brown@kunde.de,[NAME_122]
-2025-06-07T18:12:08.255652,True,geschäfte.csv,1250,[EMAIL_123]
-2025-06-07T18:12:08.255652,True,geschäfte.csv,890,[EMAIL_124]
-2025-06-07T18:12:08.255652,True,geschäfte.csv,2340,[EMAIL_125]
-2025-06-07T18:12:08.255652,True,geschäfte.csv,1750,[EMAIL_126]
-2025-06-07T18:12:08.255652,True,geschäfte.csv,3200,[EMAIL_127]
-2025-06-07T18:12:08.255652,True,geschäfte.csv,DE02 5001 0517 5407 3249 31,[IBAN_128]
-2025-06-07T18:12:08.255652,True,geschäfte.csv,DE27 2005 0550 1045 1862 37,[IBAN_129]
-2025-06-07T18:12:08.255652,True,geschäfte.csv,DE02 5001 0517 5407 3249 32,[IBAN_130]
-2025-06-07T18:12:08.255652,True,geschäfte.csv,DE02 5001 0517 5407 3249 33,[IBAN_131]
-2025-06-07T18:12:08.255652,True,geschäfte.csv,Kirchstraße 10 10115 Berlin,[ADDRESS_132]
-2025-06-07T18:12:08.255652,True,geschäfte.csv,Seefeldstraße 5 10117 Berlin,[ADDRESS_133]
-2025-06-07T18:12:08.255652,True,geschäfte.csv,15 Rue de la Paix 10115 Berlin,[ADDRESS_134]
-2025-06-07T18:12:08.255652,True,geschäfte.csv,Via della Spiga 20 10115 Berlin,[ADDRESS_135]
-2025-06-07T18:12:08.255652,True,geschäfte.csv,42 Oxford Street 10115 Berlin ,[ADDRESS_136]
-2025-06-07T18:12:08.284172,True,italian.txt,000-180.000,[PHONE_1]
-2025-06-07T18:12:08.284172,True,italian.txt,2027 Bewertung,[ADDRESS_2]
-2025-06-07T18:12:08.284172,True,italian.txt,Max Mustermann,[NAME_3]
-2025-06-07T18:12:08.284172,True,italian.txt,Peter Schmid,[NAME_4]
-2025-06-07T18:12:08.284172,True,italian.txt,Marie Dupont,[NAME_5]
-2025-06-07T18:12:08.284172,True,italian.txt,Marco Rossi,[NAME_6]
-2025-06-07T18:12:08.284172,True,italian.txt,John Smith,[NAME_7]
-2025-06-07T18:12:08.284172,True,italian.txt,max.mustermann@beispiel.de,[EMAIL_8]
-2025-06-07T18:12:08.284172,True,italian.txt,peter.schmid@beispiel.ch,[EMAIL_9]
-2025-06-07T18:12:08.284172,True,italian.txt,marie.dupont@exemple.fr,[EMAIL_10]
-2025-06-07T18:12:08.284172,True,italian.txt,marco.rossi@esempio.it,[EMAIL_11]
-2025-06-07T18:12:08.284172,True,italian.txt,john.smith@example.com,[EMAIL_12]
-2025-06-07T18:12:08.284172,True,italian.txt,+49 30 12345678,[PHONE_13]
-2025-06-07T18:12:08.284172,True,italian.txt,+41 44 123 45 67,[PHONE_14]
-2025-06-07T18:12:08.284172,True,italian.txt,+33 1 23 45 67 89,[PHONE_15]
-2025-06-07T18:12:08.284172,True,italian.txt,+39 02 1234 5678,[PHONE_16]
-2025-06-07T18:12:08.284172,True,italian.txt,+44 20 1234 5678,[PHONE_17]
-2025-06-07T18:12:08.284172,True,italian.txt,Musterstraße 123 12345 Berlin,[ADDRESS_18]
-2025-06-07T18:12:08.284172,True,italian.txt,Bahnhofstrasse 1 8001 Zürich,[ADDRESS_19]
-2025-06-07T18:12:08.284172,True,italian.txt,123 Rue de Paris 75001 Paris,[ADDRESS_20]
-2025-06-07T18:12:08.284172,True,italian.txt,Via Roma 123 20100 Milano,[ADDRESS_21]
-2025-06-07T18:12:08.284172,True,italian.txt,123 High Street London SW1A 1AA,[ADDRESS_22]
-2025-06-07T18:12:08.284172,True,italian.txt,DE89 3704 0044 0532 0130 00,[IBAN_23]
-2025-06-07T18:12:08.284172,True,italian.txt,CH93 0076 7000 E529 3557 7,[IBAN_24]
-2025-06-07T18:12:08.284172,True,italian.txt,FR76 3000 6000 0112 3456 7890 189,[IBAN_25]
-2025-06-07T18:12:08.284172,True,italian.txt,IT60 X054 2811 1010 0000 0123 456,[IBAN_26]
-2025-06-07T18:12:08.284172,True,italian.txt,GB29 NWBK 6016 1331 9268 19,[IBAN_27]
-2025-06-07T18:12:08.284172,True,italian.txt,4532 1234 5678 9012,[IBAN_28]
-2025-06-07T18:12:08.284172,True,italian.txt,4532 1234 5678 9013,[IBAN_29]
-2025-06-07T18:12:08.284172,True,italian.txt,4532 1234 5678 9014,[IBAN_30]
-2025-06-07T18:12:08.284172,True,italian.txt,4532 1234 5678 9015,[IBAN_31]
-2025-06-07T18:12:08.284172,True,italian.txt,4532 1234 5678 9016,[IBAN_32]
-2025-06-07T18:12:08.284172,True,italian.txt,nan,[SSN_33]
-2025-06-07T18:12:08.284172,True,italian.txt,756.1234.5678.90,[SSN_34]
-2025-06-07T18:12:08.284172,True,italian.txt, ,[SSN_35]
-2025-06-07T18:12:08.284172,True,italian.txt,sarah.weber@techsolutions.ch,[EMAIL_36]
-2025-06-07T18:12:08.284172,True,italian.txt,+41 44 987 65,[PHONE_37]
-2025-06-07T18:12:08.284172,True,italian.txt,"Dr. Sarah Weber
-TechSolutions",[NAME_38]
-2025-06-07T18:12:08.284172,True,italian.txt,hans.mueller@ethz.ch,[EMAIL_39]
-2025-06-07T18:12:08.284172,True,italian.txt,+41 44 123 45,[PHONE_40]
-2025-06-07T18:12:08.284172,True,italian.txt,l.meier@digitalsystems.ch,[EMAIL_41]
-2025-06-07T18:12:08.284172,True,italian.txt,+41 44 456 78,[PHONE_42]
-2025-06-07T18:12:08.284172,True,italian.txt,987.654.321,[SSN_43]
-2025-06-07T18:12:08.284172,True,italian.txt,CHE-987.654.321,[SSN_44]
-2025-06-07T18:12:08.284172,True,italian.txt,8002 Zürich,[ADDRESS_45]
-2025-06-07T18:12:08.284172,True,italian.txt,Musterstrasse 123,[ADDRESS_46]
-2025-06-07T18:12:08.284172,True,italian.txt,lara.meier@techsolutions.ch,[EMAIL_47]
-2025-06-07T18:12:08.284172,True,italian.txt,123.456.789,[SSN_48]
-2025-06-07T18:12:08.284172,True,italian.txt,CHE-123.456.789,[SSN_49]
-2025-06-07T18:12:08.284172,True,italian.txt,8004 Zürich,[ADDRESS_50]
-2025-06-07T18:12:08.284172,True,italian.txt,Industriestrasse 100,[ADDRESS_51]
-2025-06-07T18:12:08.284172,True,italian.txt,lara.meier@example.ch,[EMAIL_52]
-2025-06-07T18:12:08.284172,True,italian.txt,8001 Zürich,[ADDRESS_53]
-2025-06-07T18:12:08.284172,True,italian.txt,Bahnhofstrasse 45,[ADDRESS_54]
-2025-06-07T18:12:08.284172,True,italian.txt,"1990
-Adresse",[ADDRESS_55]
-2025-06-07T18:12:08.284172,True,italian.txt,Hans,[NAME_56]
-2025-06-07T18:12:08.284172,True,italian.txt,Thomas,[NAME_57]
-2025-06-07T18:12:08.284172,True,italian.txt,Sophie,[NAME_58]
-2025-06-07T18:12:08.284172,True,italian.txt,Luca,[NAME_59]
-2025-06-07T18:12:08.284172,True,italian.txt,Emma,[NAME_60]
-2025-06-07T18:12:08.284172,True,italian.txt,Müller,[NAME_61]
-2025-06-07T18:12:08.284172,True,italian.txt,Weber,[NAME_62]
-2025-06-07T18:12:08.284172,True,italian.txt,Martin,[NAME_63]
-2025-06-07T18:12:08.284172,True,italian.txt,Ferrari,[NAME_64]
-2025-06-07T18:12:08.284172,True,italian.txt,Wilson,[NAME_65]
-2025-06-07T18:12:08.284172,True,italian.txt,hans.mueller@firma.de,[EMAIL_66]
-2025-06-07T18:12:08.284172,True,italian.txt,thomas.weber@firma.ch,[EMAIL_67]
-2025-06-07T18:12:08.284172,True,italian.txt,sophie.martin@entreprise.fr,[EMAIL_68]
-2025-06-07T18:12:08.284172,True,italian.txt,luca.ferrari@azienda.it,[EMAIL_69]
-2025-06-07T18:12:08.284172,True,italian.txt,emma.wilson@company.com,[EMAIL_70]
-2025-06-07T18:12:08.284172,True,italian.txt,+49 89 12345678,[PHONE_71]
-2025-06-07T18:12:08.284172,True,italian.txt,+41 44 234 56 78,[PHONE_72]
-2025-06-07T18:12:08.284172,True,italian.txt,+33 1 34 56 78 90,[PHONE_73]
-2025-06-07T18:12:08.284172,True,italian.txt,+39 02 2345 6789,[PHONE_74]
-2025-06-07T18:12:08.284172,True,italian.txt,+44 20 2345 6789,[PHONE_75]
-2025-06-07T18:12:08.284172,True,italian.txt,Hauptstraße 1 80331 München,[ADDRESS_76]
-2025-06-07T18:12:08.284172,True,italian.txt,Bahnhofstrasse 2 8001 Zürich,[ADDRESS_77]
-2025-06-07T18:12:08.284172,True,italian.txt,15 Avenue des Champs-Élysées 75008 Paris,[ADDRESS_78]
-2025-06-07T18:12:08.284172,True,italian.txt,Via Monte Napoleone 8 20121 Milano,[ADDRESS_79]
-2025-06-07T18:12:08.284172,True,italian.txt,25 Old Street London EC1V 9HL,[ADDRESS_80]
-2025-06-07T18:12:08.284172,True,italian.txt,01-234567-8,[IBAN_81]
-2025-06-07T18:12:08.284172,True,italian.txt,GB29 NWBK 6016 1331 9268 19 ,[IBAN_82]
-2025-06-07T18:12:08.284172,True,italian.txt,"9012
-
-Best",[ADDRESS_83]
-2025-06-07T18:12:08.284172,True,italian.txt,"5678
-Address",[ADDRESS_84]
-2025-06-07T18:12:08.284172,True,italian.txt,contact@example.com,[EMAIL_85]
-2025-06-07T18:12:08.284172,True,italian.txt,max.mustermann@example.com,[EMAIL_86]
-2025-06-07T18:12:08.284172,True,italian.txt,+49 123 4567890,[PHONE_87]
-2025-06-07T18:12:08.284172,True,italian.txt,2024-03-15,[DATE_88]
-2025-06-07T18:12:08.284172,True,italian.txt,4111 1111 1111 1111,[IBAN_89]
-2025-06-07T18:12:08.284172,True,italian.txt,Tech Solutions GmbH,[NAME_90]
-2025-06-07T18:12:08.284172,True,italian.txt,Dr. Anna Schmidt,NAME_91
-2025-06-07T18:12:08.284172,True,italian.txt,anna.schmidt@techsolutions.de,[EMAIL_92]
-2025-06-07T18:12:08.284172,True,italian.txt,Dr. Thomas Weber,[NAME_93]
-2025-06-07T18:12:08.284172,True,italian.txt,thomas.weber@company.de,[EMAIL_94]
-2025-06-07T18:12:08.284172,True,italian.txt,maria.schmidt@company.de,[EMAIL_95]
-2025-06-07T18:12:08.284172,True,italian.txt,+49 40 98765432,[PHONE_96]
-2025-06-07T18:12:08.284172,True,italian.txt,DE27 3704 0044 0532 0130 01,[PHONE_97]
-2025-06-07T18:12:08.284172,True,italian.txt,info@techinnovations.de,[EMAIL_98]
-2025-06-07T18:12:08.284172,True,italian.txt,+49 89 12345679,[PHONE_99]
-2025-06-07T18:12:08.284172,True,italian.txt,DE89 3704 0044 0532 0130 02,[PHONE_100]
-2025-06-07T18:12:08.284172,True,italian.txt,"9012
-
-Cordialement",[ADDRESS_101]
-2025-06-07T18:12:08.284172,True,italian.txt,0112 3456 7890,[PHONE_102]
-2025-06-07T18:12:08.284172,True,italian.txt,+33 1 23 45,[PHONE_103]
-2025-06-07T18:12:08.284172,True,italian.txt,contact@exemple.fr,[EMAIL_104]
-2025-06-07T18:12:08.284172,True,italian.txt,"9012
-
-Mit",[ADDRESS_105]
-2025-06-07T18:12:08.284172,True,italian.txt,0532 0130 00,[PHONE_106]
-2025-06-07T18:12:08.284172,True,italian.txt,0044 0532 0130,[PHONE_107]
-2025-06-07T18:12:08.284172,True,italian.txt,030-12345678,[PHONE_108]
-2025-06-07T18:12:08.284172,True,italian.txt,sarah.mueller@techsolutions.ch,[EMAIL_109]
-2025-06-07T18:12:08.284172,True,italian.txt,thomas.weber@techsolutions.ch,[EMAIL_110]
-2025-06-07T18:12:08.284172,True,italian.txt,info@techsolutions.ch,[EMAIL_111]
-2025-06-07T18:12:08.284172,True,italian.txt,"2026
-TechSolutions",[ADDRESS_112]
-2025-06-07T18:12:08.284172,True,italian.txt,Anna Schmidt,[DATE_113]
-2025-06-07T18:12:08.284172,True,italian.txt,Franz Huber,[DATE_114]
-2025-06-07T18:12:08.284172,True,italian.txt,Pierre Dubois,[DATE_115]
-2025-06-07T18:12:08.284172,True,italian.txt,Giovanni Bianchi,[DATE_116]
-2025-06-07T18:12:08.284172,True,italian.txt,William Brown,[DATE_117]
-2025-06-07T18:12:08.284172,True,italian.txt,anna.schmidt@kunde.de,[NAME_118]
-2025-06-07T18:12:08.284172,True,italian.txt,franz.huber@kunde.de,[NAME_119]
-2025-06-07T18:12:08.284172,True,italian.txt,pierre.dubois@kunde.de,[NAME_120]
-2025-06-07T18:12:08.284172,True,italian.txt,giovanni.bianchi@kunde.de,[NAME_121]
-2025-06-07T18:12:08.284172,True,italian.txt,william.brown@kunde.de,[NAME_122]
-2025-06-07T18:12:08.284172,True,italian.txt,1250,[EMAIL_123]
-2025-06-07T18:12:08.284172,True,italian.txt,890,[EMAIL_124]
-2025-06-07T18:12:08.284172,True,italian.txt,2340,[EMAIL_125]
-2025-06-07T18:12:08.284172,True,italian.txt,1750,[EMAIL_126]
-2025-06-07T18:12:08.284172,True,italian.txt,3200,[EMAIL_127]
-2025-06-07T18:12:08.284172,True,italian.txt,DE02 5001 0517 5407 3249 31,[IBAN_128]
-2025-06-07T18:12:08.284172,True,italian.txt,DE27 2005 0550 1045 1862 37,[IBAN_129]
-2025-06-07T18:12:08.284172,True,italian.txt,DE02 5001 0517 5407 3249 32,[IBAN_130]
-2025-06-07T18:12:08.284172,True,italian.txt,DE02 5001 0517 5407 3249 33,[IBAN_131]
-2025-06-07T18:12:08.284172,True,italian.txt,Kirchstraße 10 10115 Berlin,[ADDRESS_132]
-2025-06-07T18:12:08.284172,True,italian.txt,Seefeldstraße 5 10117 Berlin,[ADDRESS_133]
-2025-06-07T18:12:08.284172,True,italian.txt,15 Rue de la Paix 10115 Berlin,[ADDRESS_134]
-2025-06-07T18:12:08.284172,True,italian.txt,Via della Spiga 20 10115 Berlin,[ADDRESS_135]
-2025-06-07T18:12:08.284172,True,italian.txt,42 Oxford Street 10115 Berlin ,[ADDRESS_136]
-2025-06-07T18:12:08.284172,True,italian.txt,"9012
-
-Cordiali",[ADDRESS_137]
-2025-06-07T18:12:08.284172,True,italian.txt,0000 0123 456,[PHONE_138]
-2025-06-07T18:12:08.284172,True,italian.txt,"5678
-Indirizzo",[ADDRESS_139]
-2025-06-07T18:12:08.284172,True,italian.txt,02 1234 5678,[PHONE_140]
-2025-06-07T18:12:08.284172,True,italian.txt,info@esempio.it,[EMAIL_141]
-2025-06-07T18:12:08.314527,True,kunden.csv,000-180.000,[PHONE_1]
-2025-06-07T18:12:08.314527,True,kunden.csv,2027 Bewertung,[ADDRESS_2]
-2025-06-07T18:12:08.314527,True,kunden.csv,Max Mustermann,[NAME_3]
-2025-06-07T18:12:08.314527,True,kunden.csv,Peter Schmid,[NAME_4]
-2025-06-07T18:12:08.314527,True,kunden.csv,Marie Dupont,[NAME_5]
-2025-06-07T18:12:08.314527,True,kunden.csv,Marco Rossi,[NAME_6]
-2025-06-07T18:12:08.314527,True,kunden.csv,John Smith,[NAME_7]
-2025-06-07T18:12:08.314527,True,kunden.csv,max.mustermann@beispiel.de,[EMAIL_8]
-2025-06-07T18:12:08.314527,True,kunden.csv,peter.schmid@beispiel.ch,[EMAIL_9]
-2025-06-07T18:12:08.314527,True,kunden.csv,marie.dupont@exemple.fr,[EMAIL_10]
-2025-06-07T18:12:08.314527,True,kunden.csv,marco.rossi@esempio.it,[EMAIL_11]
-2025-06-07T18:12:08.314527,True,kunden.csv,john.smith@example.com,[EMAIL_12]
-2025-06-07T18:12:08.314527,True,kunden.csv,+49 30 12345678,[PHONE_13]
-2025-06-07T18:12:08.314527,True,kunden.csv,+41 44 123 45 67,[PHONE_14]
-2025-06-07T18:12:08.314527,True,kunden.csv,+33 1 23 45 67 89,[PHONE_15]
-2025-06-07T18:12:08.314527,True,kunden.csv,+39 02 1234 5678,[PHONE_16]
-2025-06-07T18:12:08.314527,True,kunden.csv,+44 20 1234 5678,[PHONE_17]
-2025-06-07T18:12:08.314527,True,kunden.csv,Musterstraße 123 12345 Berlin,[ADDRESS_18]
-2025-06-07T18:12:08.314527,True,kunden.csv,Bahnhofstrasse 1 8001 Zürich,[ADDRESS_19]
-2025-06-07T18:12:08.314527,True,kunden.csv,123 Rue de Paris 75001 Paris,[ADDRESS_20]
-2025-06-07T18:12:08.314527,True,kunden.csv,Via Roma 123 20100 Milano,[ADDRESS_21]
-2025-06-07T18:12:08.314527,True,kunden.csv,123 High Street London SW1A 1AA,[ADDRESS_22]
-2025-06-07T18:12:08.314527,True,kunden.csv,DE89 3704 0044 0532 0130 00,[IBAN_23]
-2025-06-07T18:12:08.314527,True,kunden.csv,CH93 0076 7000 E529 3557 7,[IBAN_24]
-2025-06-07T18:12:08.314527,True,kunden.csv,FR76 3000 6000 0112 3456 7890 189,[IBAN_25]
-2025-06-07T18:12:08.314527,True,kunden.csv,IT60 X054 2811 1010 0000 0123 456,[IBAN_26]
-2025-06-07T18:12:08.314527,True,kunden.csv,GB29 NWBK 6016 1331 9268 19,[IBAN_27]
-2025-06-07T18:12:08.314527,True,kunden.csv,4532 1234 5678 9012,[IBAN_28]
-2025-06-07T18:12:08.314527,True,kunden.csv,4532 1234 5678 9013,[IBAN_29]
-2025-06-07T18:12:08.314527,True,kunden.csv,4532 1234 5678 9014,[IBAN_30]
-2025-06-07T18:12:08.314527,True,kunden.csv,4532 1234 5678 9015,[IBAN_31]
-2025-06-07T18:12:08.314527,True,kunden.csv,4532 1234 5678 9016,[IBAN_32]
-2025-06-07T18:12:08.314527,True,kunden.csv,nan,[SSN_33]
-2025-06-07T18:12:08.314527,True,kunden.csv,756.1234.5678.90,[SSN_34]
-2025-06-07T18:12:08.314527,True,kunden.csv, ,[SSN_35]
-2025-06-07T18:12:08.314527,True,kunden.csv,sarah.weber@techsolutions.ch,[EMAIL_36]
-2025-06-07T18:12:08.314527,True,kunden.csv,+41 44 987 65,[PHONE_37]
-2025-06-07T18:12:08.314527,True,kunden.csv,"Dr. Sarah Weber
-TechSolutions",[NAME_38]
-2025-06-07T18:12:08.314527,True,kunden.csv,hans.mueller@ethz.ch,[EMAIL_39]
-2025-06-07T18:12:08.314527,True,kunden.csv,+41 44 123 45,[PHONE_40]
-2025-06-07T18:12:08.314527,True,kunden.csv,l.meier@digitalsystems.ch,[EMAIL_41]
-2025-06-07T18:12:08.314527,True,kunden.csv,+41 44 456 78,[PHONE_42]
-2025-06-07T18:12:08.314527,True,kunden.csv,987.654.321,[SSN_43]
-2025-06-07T18:12:08.314527,True,kunden.csv,CHE-987.654.321,[SSN_44]
-2025-06-07T18:12:08.314527,True,kunden.csv,8002 Zürich,[ADDRESS_45]
-2025-06-07T18:12:08.314527,True,kunden.csv,Musterstrasse 123,[ADDRESS_46]
-2025-06-07T18:12:08.314527,True,kunden.csv,lara.meier@techsolutions.ch,[EMAIL_47]
-2025-06-07T18:12:08.314527,True,kunden.csv,123.456.789,[SSN_48]
-2025-06-07T18:12:08.314527,True,kunden.csv,CHE-123.456.789,[SSN_49]
-2025-06-07T18:12:08.314527,True,kunden.csv,8004 Zürich,[ADDRESS_50]
-2025-06-07T18:12:08.314527,True,kunden.csv,Industriestrasse 100,[ADDRESS_51]
-2025-06-07T18:12:08.314527,True,kunden.csv,lara.meier@example.ch,[EMAIL_52]
-2025-06-07T18:12:08.314527,True,kunden.csv,8001 Zürich,[ADDRESS_53]
-2025-06-07T18:12:08.314527,True,kunden.csv,Bahnhofstrasse 45,[ADDRESS_54]
-2025-06-07T18:12:08.314527,True,kunden.csv,"1990
-Adresse",[ADDRESS_55]
-2025-06-07T18:12:08.314527,True,kunden.csv,Hans,[NAME_56]
-2025-06-07T18:12:08.314527,True,kunden.csv,Thomas,[NAME_57]
-2025-06-07T18:12:08.314527,True,kunden.csv,Sophie,[NAME_58]
-2025-06-07T18:12:08.314527,True,kunden.csv,Luca,[NAME_59]
-2025-06-07T18:12:08.314527,True,kunden.csv,Emma,[NAME_60]
-2025-06-07T18:12:08.314527,True,kunden.csv,Müller,[NAME_61]
-2025-06-07T18:12:08.314527,True,kunden.csv,Weber,[NAME_62]
-2025-06-07T18:12:08.314527,True,kunden.csv,Martin,[NAME_63]
-2025-06-07T18:12:08.314527,True,kunden.csv,Ferrari,[NAME_64]
-2025-06-07T18:12:08.314527,True,kunden.csv,Wilson,[NAME_65]
-2025-06-07T18:12:08.314527,True,kunden.csv,hans.mueller@firma.de,[EMAIL_66]
-2025-06-07T18:12:08.314527,True,kunden.csv,thomas.weber@firma.ch,[EMAIL_67]
-2025-06-07T18:12:08.314527,True,kunden.csv,sophie.martin@entreprise.fr,[EMAIL_68]
-2025-06-07T18:12:08.314527,True,kunden.csv,luca.ferrari@azienda.it,[EMAIL_69]
-2025-06-07T18:12:08.314527,True,kunden.csv,emma.wilson@company.com,[EMAIL_70]
-2025-06-07T18:12:08.314527,True,kunden.csv,+49 89 12345678,[PHONE_71]
-2025-06-07T18:12:08.314527,True,kunden.csv,+41 44 234 56 78,[PHONE_72]
-2025-06-07T18:12:08.314527,True,kunden.csv,+33 1 34 56 78 90,[PHONE_73]
-2025-06-07T18:12:08.314527,True,kunden.csv,+39 02 2345 6789,[PHONE_74]
-2025-06-07T18:12:08.314527,True,kunden.csv,+44 20 2345 6789,[PHONE_75]
-2025-06-07T18:12:08.314527,True,kunden.csv,Hauptstraße 1 80331 München,[ADDRESS_76]
-2025-06-07T18:12:08.314527,True,kunden.csv,Bahnhofstrasse 2 8001 Zürich,[ADDRESS_77]
-2025-06-07T18:12:08.314527,True,kunden.csv,15 Avenue des Champs-Élysées 75008 Paris,[ADDRESS_78]
-2025-06-07T18:12:08.314527,True,kunden.csv,Via Monte Napoleone 8 20121 Milano,[ADDRESS_79]
-2025-06-07T18:12:08.314527,True,kunden.csv,25 Old Street London EC1V 9HL,[ADDRESS_80]
-2025-06-07T18:12:08.314527,True,kunden.csv,01-234567-8,[IBAN_81]
-2025-06-07T18:12:08.314527,True,kunden.csv,GB29 NWBK 6016 1331 9268 19 ,[IBAN_82]
-2025-06-07T18:12:08.314527,True,kunden.csv,"9012
-
-Best",[ADDRESS_83]
-2025-06-07T18:12:08.314527,True,kunden.csv,"5678
-Address",[ADDRESS_84]
-2025-06-07T18:12:08.314527,True,kunden.csv,contact@example.com,[EMAIL_85]
-2025-06-07T18:12:08.314527,True,kunden.csv,max.mustermann@example.com,[EMAIL_86]
-2025-06-07T18:12:08.314527,True,kunden.csv,+49 123 4567890,[PHONE_87]
-2025-06-07T18:12:08.314527,True,kunden.csv,2024-03-15,[DATE_88]
-2025-06-07T18:12:08.314527,True,kunden.csv,4111 1111 1111 1111,[IBAN_89]
-2025-06-07T18:12:08.314527,True,kunden.csv,Tech Solutions GmbH,[NAME_90]
-2025-06-07T18:12:08.314527,True,kunden.csv,Dr. Anna Schmidt,NAME_91
-2025-06-07T18:12:08.314527,True,kunden.csv,anna.schmidt@techsolutions.de,[EMAIL_92]
-2025-06-07T18:12:08.314527,True,kunden.csv,Dr. Thomas Weber,[NAME_93]
-2025-06-07T18:12:08.314527,True,kunden.csv,thomas.weber@company.de,[EMAIL_94]
-2025-06-07T18:12:08.314527,True,kunden.csv,maria.schmidt@company.de,[EMAIL_95]
-2025-06-07T18:12:08.314527,True,kunden.csv,+49 40 98765432,[PHONE_96]
-2025-06-07T18:12:08.314527,True,kunden.csv,DE27 3704 0044 0532 0130 01,[PHONE_97]
-2025-06-07T18:12:08.314527,True,kunden.csv,info@techinnovations.de,[EMAIL_98]
-2025-06-07T18:12:08.314527,True,kunden.csv,+49 89 12345679,[PHONE_99]
-2025-06-07T18:12:08.314527,True,kunden.csv,DE89 3704 0044 0532 0130 02,[PHONE_100]
-2025-06-07T18:12:08.314527,True,kunden.csv,"9012
-
-Cordialement",[ADDRESS_101]
-2025-06-07T18:12:08.314527,True,kunden.csv,0112 3456 7890,[PHONE_102]
-2025-06-07T18:12:08.314527,True,kunden.csv,+33 1 23 45,[PHONE_103]
-2025-06-07T18:12:08.314527,True,kunden.csv,contact@exemple.fr,[EMAIL_104]
-2025-06-07T18:12:08.314527,True,kunden.csv,"9012
-
-Mit",[ADDRESS_105]
-2025-06-07T18:12:08.314527,True,kunden.csv,0532 0130 00,[PHONE_106]
-2025-06-07T18:12:08.314527,True,kunden.csv,0044 0532 0130,[PHONE_107]
-2025-06-07T18:12:08.314527,True,kunden.csv,030-12345678,[PHONE_108]
-2025-06-07T18:12:08.314527,True,kunden.csv,sarah.mueller@techsolutions.ch,[EMAIL_109]
-2025-06-07T18:12:08.314527,True,kunden.csv,thomas.weber@techsolutions.ch,[EMAIL_110]
-2025-06-07T18:12:08.314527,True,kunden.csv,info@techsolutions.ch,[EMAIL_111]
-2025-06-07T18:12:08.314527,True,kunden.csv,"2026
-TechSolutions",[ADDRESS_112]
-2025-06-07T18:12:08.314527,True,kunden.csv,Anna Schmidt,[DATE_113]
-2025-06-07T18:12:08.314527,True,kunden.csv,Franz Huber,[DATE_114]
-2025-06-07T18:12:08.314527,True,kunden.csv,Pierre Dubois,[DATE_115]
-2025-06-07T18:12:08.314527,True,kunden.csv,Giovanni Bianchi,[DATE_116]
-2025-06-07T18:12:08.314527,True,kunden.csv,William Brown,[DATE_117]
-2025-06-07T18:12:08.314527,True,kunden.csv,anna.schmidt@kunde.de,[NAME_118]
-2025-06-07T18:12:08.314527,True,kunden.csv,franz.huber@kunde.de,[NAME_119]
-2025-06-07T18:12:08.314527,True,kunden.csv,pierre.dubois@kunde.de,[NAME_120]
-2025-06-07T18:12:08.314527,True,kunden.csv,giovanni.bianchi@kunde.de,[NAME_121]
-2025-06-07T18:12:08.314527,True,kunden.csv,william.brown@kunde.de,[NAME_122]
-2025-06-07T18:12:08.314527,True,kunden.csv,1250,[EMAIL_123]
-2025-06-07T18:12:08.314527,True,kunden.csv,890,[EMAIL_124]
-2025-06-07T18:12:08.314527,True,kunden.csv,2340,[EMAIL_125]
-2025-06-07T18:12:08.314527,True,kunden.csv,1750,[EMAIL_126]
-2025-06-07T18:12:08.314527,True,kunden.csv,3200,[EMAIL_127]
-2025-06-07T18:12:08.314527,True,kunden.csv,DE02 5001 0517 5407 3249 31,[IBAN_128]
-2025-06-07T18:12:08.314527,True,kunden.csv,DE27 2005 0550 1045 1862 37,[IBAN_129]
-2025-06-07T18:12:08.314527,True,kunden.csv,DE02 5001 0517 5407 3249 32,[IBAN_130]
-2025-06-07T18:12:08.314527,True,kunden.csv,DE02 5001 0517 5407 3249 33,[IBAN_131]
-2025-06-07T18:12:08.314527,True,kunden.csv,Kirchstraße 10 10115 Berlin,[ADDRESS_132]
-2025-06-07T18:12:08.314527,True,kunden.csv,Seefeldstraße 5 10117 Berlin,[ADDRESS_133]
-2025-06-07T18:12:08.314527,True,kunden.csv,15 Rue de la Paix 10115 Berlin,[ADDRESS_134]
-2025-06-07T18:12:08.314527,True,kunden.csv,Via della Spiga 20 10115 Berlin,[ADDRESS_135]
-2025-06-07T18:12:08.314527,True,kunden.csv,42 Oxford Street 10115 Berlin ,[ADDRESS_136]
-2025-06-07T18:12:08.314527,True,kunden.csv,"9012
-
-Cordiali",[ADDRESS_137]
-2025-06-07T18:12:08.314527,True,kunden.csv,0000 0123 456,[PHONE_138]
-2025-06-07T18:12:08.314527,True,kunden.csv,"5678
-Indirizzo",[ADDRESS_139]
-2025-06-07T18:12:08.314527,True,kunden.csv,02 1234 5678,[PHONE_140]
-2025-06-07T18:12:08.314527,True,kunden.csv,info@esempio.it,[EMAIL_141]
-2025-06-07T18:12:08.314527,True,kunden.csv,Michael,[NAME_142]
-2025-06-07T18:12:08.314527,True,kunden.csv,Sabine,[NAME_143]
-2025-06-07T18:12:08.314527,True,kunden.csv,Petra,[NAME_144]
-2025-06-07T18:12:08.314527,True,kunden.csv,Klaus,[NAME_145]
-2025-06-07T18:12:08.314527,True,kunden.csv,Schmidt,[NAME_146]
-2025-06-07T18:12:08.314527,True,kunden.csv,Fischer,[NAME_147]
-2025-06-07T18:12:08.314527,True,kunden.csv,Wagner,[NAME_148]
-2025-06-07T18:12:08.314527,True,kunden.csv,michael.schmidt@kunde.de,[EMAIL_149]
-2025-06-07T18:12:08.314527,True,kunden.csv,sabine.weber@kunde.de,[EMAIL_150]
-2025-06-07T18:12:08.314527,True,kunden.csv,thomas.mueller@kunde.de,[EMAIL_151]
-2025-06-07T18:12:08.314527,True,kunden.csv,petra.fischer@kunde.de,[EMAIL_152]
-2025-06-07T18:12:08.314527,True,kunden.csv,klaus.wagner@kunde.de,[EMAIL_153]
-2025-06-07T18:12:08.314527,True,kunden.csv,+49 89 23456789,[PHONE_154]
-2025-06-07T18:12:08.314527,True,kunden.csv,+49 40 34567890,[PHONE_155]
-2025-06-07T18:12:08.314527,True,kunden.csv,+49 69 45678901,[PHONE_156]
-2025-06-07T18:12:08.314527,True,kunden.csv,+49 211 56789012,[PHONE_157]
-2025-06-07T18:12:08.314527,True,kunden.csv,Hauptstraße 45 80331 München,[ADDRESS_158]
-2025-06-07T18:12:08.314527,True,kunden.csv,Neue Straße 78 20095 Hamburg,[ADDRESS_159]
-2025-06-07T18:12:08.314527,True,kunden.csv,Frankfurter Ring 12 60313 Frankfurt,[ADDRESS_160]
-2025-06-07T18:12:08.314527,True,kunden.csv,Königsallee 92 40212 Düsseldorf,[ADDRESS_161]
-2025-06-07T18:12:08.314527,True,kunden.csv,12/345/67890,[SSN_162]
-2025-06-07T18:12:08.314527,True,kunden.csv,98/765/43210,[SSN_163]
-2025-06-07T18:12:08.314527,True,kunden.csv,45/678/90123,[SSN_164]
-2025-06-07T18:12:08.314527,True,kunden.csv,34/567/89012,[SSN_165]
-2025-06-07T18:12:08.314527,True,kunden.csv,23/456/78901 ,[SSN_166]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,000-180.000,[PHONE_1]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,2027 Bewertung,[ADDRESS_2]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,Max Mustermann,[NAME_3]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,Peter Schmid,[NAME_4]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,Marie Dupont,[NAME_5]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,Marco Rossi,[NAME_6]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,John Smith,[NAME_7]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,max.mustermann@beispiel.de,[EMAIL_8]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,peter.schmid@beispiel.ch,[EMAIL_9]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,marie.dupont@exemple.fr,[EMAIL_10]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,marco.rossi@esempio.it,[EMAIL_11]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,john.smith@example.com,[EMAIL_12]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,+49 30 12345678,[PHONE_13]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,+41 44 123 45 67,[PHONE_14]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,+33 1 23 45 67 89,[PHONE_15]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,+39 02 1234 5678,[PHONE_16]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,+44 20 1234 5678,[PHONE_17]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,Musterstraße 123 12345 Berlin,[ADDRESS_18]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,Bahnhofstrasse 1 8001 Zürich,[ADDRESS_19]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,123 Rue de Paris 75001 Paris,[ADDRESS_20]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,Via Roma 123 20100 Milano,[ADDRESS_21]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,123 High Street London SW1A 1AA,[ADDRESS_22]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,DE89 3704 0044 0532 0130 00,[IBAN_23]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,CH93 0076 7000 E529 3557 7,[IBAN_24]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,FR76 3000 6000 0112 3456 7890 189,[IBAN_25]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,IT60 X054 2811 1010 0000 0123 456,[IBAN_26]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,GB29 NWBK 6016 1331 9268 19,[IBAN_27]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,4532 1234 5678 9012,[IBAN_28]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,4532 1234 5678 9013,[IBAN_29]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,4532 1234 5678 9014,[IBAN_30]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,4532 1234 5678 9015,[IBAN_31]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,4532 1234 5678 9016,[IBAN_32]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,nan,[SSN_33]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,756.1234.5678.90,[SSN_34]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv, ,[SSN_35]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,sarah.weber@techsolutions.ch,[EMAIL_36]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,+41 44 987 65,[PHONE_37]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,"Dr. Sarah Weber
-TechSolutions",[NAME_38]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,hans.mueller@ethz.ch,[EMAIL_39]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,+41 44 123 45,[PHONE_40]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,l.meier@digitalsystems.ch,[EMAIL_41]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,+41 44 456 78,[PHONE_42]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,987.654.321,[SSN_43]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,CHE-987.654.321,[SSN_44]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,8002 Zürich,[ADDRESS_45]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,Musterstrasse 123,[ADDRESS_46]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,lara.meier@techsolutions.ch,[EMAIL_47]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,123.456.789,[SSN_48]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,CHE-123.456.789,[SSN_49]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,8004 Zürich,[ADDRESS_50]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,Industriestrasse 100,[ADDRESS_51]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,lara.meier@example.ch,[EMAIL_52]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,8001 Zürich,[ADDRESS_53]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,Bahnhofstrasse 45,[ADDRESS_54]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,"1990
-Adresse",[ADDRESS_55]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,Hans,[NAME_56]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,Thomas,[NAME_57]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,Sophie,[NAME_58]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,Luca,[NAME_59]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,Emma,[NAME_60]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,Müller,[NAME_61]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,Weber,[NAME_62]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,Martin,[NAME_63]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,Ferrari,[NAME_64]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,Wilson,[NAME_65]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,hans.mueller@firma.de,[EMAIL_66]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,thomas.weber@firma.ch,[EMAIL_67]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,sophie.martin@entreprise.fr,[EMAIL_68]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,luca.ferrari@azienda.it,[EMAIL_69]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,emma.wilson@company.com,[EMAIL_70]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,+49 89 12345678,[PHONE_71]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,+41 44 234 56 78,[PHONE_72]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,+33 1 34 56 78 90,[PHONE_73]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,+39 02 2345 6789,[PHONE_74]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,+44 20 2345 6789,[PHONE_75]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,Hauptstraße 1 80331 München,[ADDRESS_76]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,Bahnhofstrasse 2 8001 Zürich,[ADDRESS_77]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,15 Avenue des Champs-Élysées 75008 Paris,[ADDRESS_78]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,Via Monte Napoleone 8 20121 Milano,[ADDRESS_79]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,25 Old Street London EC1V 9HL,[ADDRESS_80]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,01-234567-8,[IBAN_81]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,GB29 NWBK 6016 1331 9268 19 ,[IBAN_82]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,"9012
-
-Best",[ADDRESS_83]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,"5678
-Address",[ADDRESS_84]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,contact@example.com,[EMAIL_85]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,max.mustermann@example.com,[EMAIL_86]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,+49 123 4567890,[PHONE_87]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,2024-03-15,[DATE_88]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,4111 1111 1111 1111,[IBAN_89]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,Tech Solutions GmbH,[NAME_90]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,Dr. Anna Schmidt,NAME_91
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,anna.schmidt@techsolutions.de,[EMAIL_92]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,Dr. Thomas Weber,[NAME_93]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,thomas.weber@company.de,[EMAIL_94]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,maria.schmidt@company.de,[EMAIL_95]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,+49 40 98765432,[PHONE_96]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,DE27 3704 0044 0532 0130 01,[PHONE_97]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,info@techinnovations.de,[EMAIL_98]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,+49 89 12345679,[PHONE_99]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,DE89 3704 0044 0532 0130 02,[PHONE_100]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,"9012
-
-Cordialement",[ADDRESS_101]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,0112 3456 7890,[PHONE_102]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,+33 1 23 45,[PHONE_103]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,contact@exemple.fr,[EMAIL_104]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,"9012
-
-Mit",[ADDRESS_105]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,0532 0130 00,[PHONE_106]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,0044 0532 0130,[PHONE_107]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,030-12345678,[PHONE_108]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,sarah.mueller@techsolutions.ch,[EMAIL_109]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,thomas.weber@techsolutions.ch,[EMAIL_110]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,info@techsolutions.ch,[EMAIL_111]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,"2026
-TechSolutions",[ADDRESS_112]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,Anna Schmidt,[DATE_113]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,Franz Huber,[DATE_114]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,Pierre Dubois,[DATE_115]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,Giovanni Bianchi,[DATE_116]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,William Brown,[DATE_117]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,anna.schmidt@kunde.de,[NAME_118]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,franz.huber@kunde.de,[NAME_119]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,pierre.dubois@kunde.de,[NAME_120]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,giovanni.bianchi@kunde.de,[NAME_121]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,william.brown@kunde.de,[NAME_122]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,1250,[EMAIL_123]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,890,[EMAIL_124]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,2340,[EMAIL_125]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,1750,[EMAIL_126]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,3200,[EMAIL_127]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,DE02 5001 0517 5407 3249 31,[IBAN_128]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,DE27 2005 0550 1045 1862 37,[IBAN_129]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,DE02 5001 0517 5407 3249 32,[IBAN_130]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,DE02 5001 0517 5407 3249 33,[IBAN_131]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,Kirchstraße 10 10115 Berlin,[ADDRESS_132]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,Seefeldstraße 5 10117 Berlin,[ADDRESS_133]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,15 Rue de la Paix 10115 Berlin,[ADDRESS_134]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,Via della Spiga 20 10115 Berlin,[ADDRESS_135]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,42 Oxford Street 10115 Berlin ,[ADDRESS_136]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,"9012
-
-Cordiali",[ADDRESS_137]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,0000 0123 456,[PHONE_138]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,"5678
-Indirizzo",[ADDRESS_139]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,02 1234 5678,[PHONE_140]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,info@esempio.it,[EMAIL_141]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,Michael,[NAME_142]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,Sabine,[NAME_143]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,Petra,[NAME_144]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,Klaus,[NAME_145]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,Schmidt,[NAME_146]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,Fischer,[NAME_147]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,Wagner,[NAME_148]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,michael.schmidt@kunde.de,[EMAIL_149]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,sabine.weber@kunde.de,[EMAIL_150]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,thomas.mueller@kunde.de,[EMAIL_151]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,petra.fischer@kunde.de,[EMAIL_152]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,klaus.wagner@kunde.de,[EMAIL_153]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,+49 89 23456789,[PHONE_154]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,+49 40 34567890,[PHONE_155]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,+49 69 45678901,[PHONE_156]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,+49 211 56789012,[PHONE_157]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,Hauptstraße 45 80331 München,[ADDRESS_158]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,Neue Straße 78 20095 Hamburg,[ADDRESS_159]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,Frankfurter Ring 12 60313 Frankfurt,[ADDRESS_160]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,Königsallee 92 40212 Düsseldorf,[ADDRESS_161]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,12/345/67890,[SSN_162]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,98/765/43210,[SSN_163]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,45/678/90123,[SSN_164]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,34/567/89012,[SSN_165]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,23/456/78901 ,[SSN_166]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,Andreas,[NAME_167]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,Monika,[NAME_168]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,Frank,[NAME_169]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,Susanne,[NAME_170]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,Dieter,[NAME_171]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,Becker,[NAME_172]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,Hoffmann,[NAME_173]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,Schäfer,[NAME_174]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,Koch,[NAME_175]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,Richter,[NAME_176]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,andreas.becker@firma.de,[EMAIL_177]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,monika.hoffmann@firma.de,[EMAIL_178]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,frank.schaefer@firma.de,[EMAIL_179]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,susanne.koch@firma.de,[EMAIL_180]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,dieter.richter@firma.de,[EMAIL_181]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,+49 30 98765432,[PHONE_182]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,+49 89 87654321,[PHONE_183]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,+49 40 76543210,[PHONE_184]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,+49 69 65432109,[PHONE_185]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,+49 211 54321098,[PHONE_186]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,Hauptstraße 1 10115 Berlin,[ADDRESS_187]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,Leopoldstraße 45 80802 München,[ADDRESS_188]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,Neuer Wall 78 20354 Hamburg,[ADDRESS_189]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,Mainzer Landstraße 12 60329 Frankfurt,[ADDRESS_190]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,23/456/78901,[SSN_191]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,12 345678 901,[SSN_192]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,98 765432 102,[SSN_193]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,45 678901 203,[SSN_194]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,34 567890 304,[SSN_195]
-2025-06-07T18:12:08.349750,True,mitarbeiter.csv,23 456789 405 ,[SSN_196]
-2025-06-07T18:12:08.389324,True,swiss.txt,000-180.000,[PHONE_1]
-2025-06-07T18:12:08.389324,True,swiss.txt,2027 Bewertung,[ADDRESS_2]
-2025-06-07T18:12:08.389324,True,swiss.txt,Max Mustermann,[NAME_3]
-2025-06-07T18:12:08.389324,True,swiss.txt,Peter Schmid,[NAME_4]
-2025-06-07T18:12:08.389324,True,swiss.txt,Marie Dupont,[NAME_5]
-2025-06-07T18:12:08.389324,True,swiss.txt,Marco Rossi,[NAME_6]
-2025-06-07T18:12:08.389324,True,swiss.txt,John Smith,[NAME_7]
-2025-06-07T18:12:08.389324,True,swiss.txt,max.mustermann@beispiel.de,[EMAIL_8]
-2025-06-07T18:12:08.389324,True,swiss.txt,peter.schmid@beispiel.ch,[EMAIL_9]
-2025-06-07T18:12:08.389324,True,swiss.txt,marie.dupont@exemple.fr,[EMAIL_10]
-2025-06-07T18:12:08.389324,True,swiss.txt,marco.rossi@esempio.it,[EMAIL_11]
-2025-06-07T18:12:08.389324,True,swiss.txt,john.smith@example.com,[EMAIL_12]
-2025-06-07T18:12:08.389324,True,swiss.txt,+49 30 12345678,[PHONE_13]
-2025-06-07T18:12:08.389324,True,swiss.txt,+41 44 123 45 67,[PHONE_14]
-2025-06-07T18:12:08.389324,True,swiss.txt,+33 1 23 45 67 89,[PHONE_15]
-2025-06-07T18:12:08.389324,True,swiss.txt,+39 02 1234 5678,[PHONE_16]
-2025-06-07T18:12:08.389324,True,swiss.txt,+44 20 1234 5678,[PHONE_17]
-2025-06-07T18:12:08.389324,True,swiss.txt,Musterstraße 123 12345 Berlin,[ADDRESS_18]
-2025-06-07T18:12:08.389324,True,swiss.txt,Bahnhofstrasse 1 8001 Zürich,[ADDRESS_19]
-2025-06-07T18:12:08.389324,True,swiss.txt,123 Rue de Paris 75001 Paris,[ADDRESS_20]
-2025-06-07T18:12:08.389324,True,swiss.txt,Via Roma 123 20100 Milano,[ADDRESS_21]
-2025-06-07T18:12:08.389324,True,swiss.txt,123 High Street London SW1A 1AA,[ADDRESS_22]
-2025-06-07T18:12:08.389324,True,swiss.txt,DE89 3704 0044 0532 0130 00,[IBAN_23]
-2025-06-07T18:12:08.389324,True,swiss.txt,CH93 0076 7000 E529 3557 7,[IBAN_24]
-2025-06-07T18:12:08.389324,True,swiss.txt,FR76 3000 6000 0112 3456 7890 189,[IBAN_25]
-2025-06-07T18:12:08.389324,True,swiss.txt,IT60 X054 2811 1010 0000 0123 456,[IBAN_26]
-2025-06-07T18:12:08.389324,True,swiss.txt,GB29 NWBK 6016 1331 9268 19,[IBAN_27]
-2025-06-07T18:12:08.389324,True,swiss.txt,4532 1234 5678 9012,[IBAN_28]
-2025-06-07T18:12:08.389324,True,swiss.txt,4532 1234 5678 9013,[IBAN_29]
-2025-06-07T18:12:08.389324,True,swiss.txt,4532 1234 5678 9014,[IBAN_30]
-2025-06-07T18:12:08.389324,True,swiss.txt,4532 1234 5678 9015,[IBAN_31]
-2025-06-07T18:12:08.389324,True,swiss.txt,4532 1234 5678 9016,[IBAN_32]
-2025-06-07T18:12:08.389324,True,swiss.txt,nan,[SSN_33]
-2025-06-07T18:12:08.389324,True,swiss.txt,756.1234.5678.90,[SSN_34]
-2025-06-07T18:12:08.389324,True,swiss.txt, ,[SSN_35]
-2025-06-07T18:12:08.389324,True,swiss.txt,sarah.weber@techsolutions.ch,[EMAIL_36]
-2025-06-07T18:12:08.389324,True,swiss.txt,+41 44 987 65,[PHONE_37]
-2025-06-07T18:12:08.389324,True,swiss.txt,"Dr. Sarah Weber
-TechSolutions",[NAME_38]
-2025-06-07T18:12:08.389324,True,swiss.txt,hans.mueller@ethz.ch,[EMAIL_39]
-2025-06-07T18:12:08.389324,True,swiss.txt,+41 44 123 45,[PHONE_40]
-2025-06-07T18:12:08.389324,True,swiss.txt,l.meier@digitalsystems.ch,[EMAIL_41]
-2025-06-07T18:12:08.389324,True,swiss.txt,+41 44 456 78,[PHONE_42]
-2025-06-07T18:12:08.389324,True,swiss.txt,987.654.321,[SSN_43]
-2025-06-07T18:12:08.389324,True,swiss.txt,CHE-987.654.321,[SSN_44]
-2025-06-07T18:12:08.389324,True,swiss.txt,8002 Zürich,[ADDRESS_45]
-2025-06-07T18:12:08.389324,True,swiss.txt,Musterstrasse 123,[ADDRESS_46]
-2025-06-07T18:12:08.389324,True,swiss.txt,lara.meier@techsolutions.ch,[EMAIL_47]
-2025-06-07T18:12:08.389324,True,swiss.txt,123.456.789,[SSN_48]
-2025-06-07T18:12:08.389324,True,swiss.txt,CHE-123.456.789,[SSN_49]
-2025-06-07T18:12:08.389324,True,swiss.txt,8004 Zürich,[ADDRESS_50]
-2025-06-07T18:12:08.389324,True,swiss.txt,Industriestrasse 100,[ADDRESS_51]
-2025-06-07T18:12:08.389324,True,swiss.txt,lara.meier@example.ch,[EMAIL_52]
-2025-06-07T18:12:08.389324,True,swiss.txt,8001 Zürich,[ADDRESS_53]
-2025-06-07T18:12:08.389324,True,swiss.txt,Bahnhofstrasse 45,[ADDRESS_54]
-2025-06-07T18:12:08.389324,True,swiss.txt,"1990
-Adresse",[ADDRESS_55]
-2025-06-07T18:12:08.389324,True,swiss.txt,Hans,[NAME_56]
-2025-06-07T18:12:08.389324,True,swiss.txt,Thomas,[NAME_57]
-2025-06-07T18:12:08.389324,True,swiss.txt,Sophie,[NAME_58]
-2025-06-07T18:12:08.389324,True,swiss.txt,Luca,[NAME_59]
-2025-06-07T18:12:08.389324,True,swiss.txt,Emma,[NAME_60]
-2025-06-07T18:12:08.389324,True,swiss.txt,Müller,[NAME_61]
-2025-06-07T18:12:08.389324,True,swiss.txt,Weber,[NAME_62]
-2025-06-07T18:12:08.389324,True,swiss.txt,Martin,[NAME_63]
-2025-06-07T18:12:08.389324,True,swiss.txt,Ferrari,[NAME_64]
-2025-06-07T18:12:08.389324,True,swiss.txt,Wilson,[NAME_65]
-2025-06-07T18:12:08.389324,True,swiss.txt,hans.mueller@firma.de,[EMAIL_66]
-2025-06-07T18:12:08.389324,True,swiss.txt,thomas.weber@firma.ch,[EMAIL_67]
-2025-06-07T18:12:08.389324,True,swiss.txt,sophie.martin@entreprise.fr,[EMAIL_68]
-2025-06-07T18:12:08.389324,True,swiss.txt,luca.ferrari@azienda.it,[EMAIL_69]
-2025-06-07T18:12:08.389324,True,swiss.txt,emma.wilson@company.com,[EMAIL_70]
-2025-06-07T18:12:08.389324,True,swiss.txt,+49 89 12345678,[PHONE_71]
-2025-06-07T18:12:08.389324,True,swiss.txt,+41 44 234 56 78,[PHONE_72]
-2025-06-07T18:12:08.389324,True,swiss.txt,+33 1 34 56 78 90,[PHONE_73]
-2025-06-07T18:12:08.389324,True,swiss.txt,+39 02 2345 6789,[PHONE_74]
-2025-06-07T18:12:08.389324,True,swiss.txt,+44 20 2345 6789,[PHONE_75]
-2025-06-07T18:12:08.389324,True,swiss.txt,Hauptstraße 1 80331 München,[ADDRESS_76]
-2025-06-07T18:12:08.389324,True,swiss.txt,Bahnhofstrasse 2 8001 Zürich,[ADDRESS_77]
-2025-06-07T18:12:08.389324,True,swiss.txt,15 Avenue des Champs-Élysées 75008 Paris,[ADDRESS_78]
-2025-06-07T18:12:08.389324,True,swiss.txt,Via Monte Napoleone 8 20121 Milano,[ADDRESS_79]
-2025-06-07T18:12:08.389324,True,swiss.txt,25 Old Street London EC1V 9HL,[ADDRESS_80]
-2025-06-07T18:12:08.389324,True,swiss.txt,01-234567-8,[IBAN_81]
-2025-06-07T18:12:08.389324,True,swiss.txt,GB29 NWBK 6016 1331 9268 19 ,[IBAN_82]
-2025-06-07T18:12:08.389324,True,swiss.txt,"9012
-
-Best",[ADDRESS_83]
-2025-06-07T18:12:08.389324,True,swiss.txt,"5678
-Address",[ADDRESS_84]
-2025-06-07T18:12:08.389324,True,swiss.txt,contact@example.com,[EMAIL_85]
-2025-06-07T18:12:08.389324,True,swiss.txt,max.mustermann@example.com,[EMAIL_86]
-2025-06-07T18:12:08.389324,True,swiss.txt,+49 123 4567890,[PHONE_87]
-2025-06-07T18:12:08.389324,True,swiss.txt,2024-03-15,[DATE_88]
-2025-06-07T18:12:08.389324,True,swiss.txt,4111 1111 1111 1111,[IBAN_89]
-2025-06-07T18:12:08.389324,True,swiss.txt,Tech Solutions GmbH,[NAME_90]
-2025-06-07T18:12:08.389324,True,swiss.txt,Dr. Anna Schmidt,NAME_91
-2025-06-07T18:12:08.389324,True,swiss.txt,anna.schmidt@techsolutions.de,[EMAIL_92]
-2025-06-07T18:12:08.389324,True,swiss.txt,Dr. Thomas Weber,[NAME_93]
-2025-06-07T18:12:08.389324,True,swiss.txt,thomas.weber@company.de,[EMAIL_94]
-2025-06-07T18:12:08.389324,True,swiss.txt,maria.schmidt@company.de,[EMAIL_95]
-2025-06-07T18:12:08.389324,True,swiss.txt,+49 40 98765432,[PHONE_96]
-2025-06-07T18:12:08.389324,True,swiss.txt,DE27 3704 0044 0532 0130 01,[PHONE_97]
-2025-06-07T18:12:08.389324,True,swiss.txt,info@techinnovations.de,[EMAIL_98]
-2025-06-07T18:12:08.389324,True,swiss.txt,+49 89 12345679,[PHONE_99]
-2025-06-07T18:12:08.389324,True,swiss.txt,DE89 3704 0044 0532 0130 02,[PHONE_100]
-2025-06-07T18:12:08.389324,True,swiss.txt,"9012
-
-Cordialement",[ADDRESS_101]
-2025-06-07T18:12:08.389324,True,swiss.txt,0112 3456 7890,[PHONE_102]
-2025-06-07T18:12:08.389324,True,swiss.txt,+33 1 23 45,[PHONE_103]
-2025-06-07T18:12:08.389324,True,swiss.txt,contact@exemple.fr,[EMAIL_104]
-2025-06-07T18:12:08.389324,True,swiss.txt,"9012
-
-Mit",[ADDRESS_105]
-2025-06-07T18:12:08.389324,True,swiss.txt,0532 0130 00,[PHONE_106]
-2025-06-07T18:12:08.389324,True,swiss.txt,0044 0532 0130,[PHONE_107]
-2025-06-07T18:12:08.389324,True,swiss.txt,030-12345678,[PHONE_108]
-2025-06-07T18:12:08.389324,True,swiss.txt,sarah.mueller@techsolutions.ch,[EMAIL_109]
-2025-06-07T18:12:08.389324,True,swiss.txt,thomas.weber@techsolutions.ch,[EMAIL_110]
-2025-06-07T18:12:08.389324,True,swiss.txt,info@techsolutions.ch,[EMAIL_111]
-2025-06-07T18:12:08.389324,True,swiss.txt,"2026
-TechSolutions",[ADDRESS_112]
-2025-06-07T18:12:08.389324,True,swiss.txt,Anna Schmidt,[DATE_113]
-2025-06-07T18:12:08.389324,True,swiss.txt,Franz Huber,[DATE_114]
-2025-06-07T18:12:08.389324,True,swiss.txt,Pierre Dubois,[DATE_115]
-2025-06-07T18:12:08.389324,True,swiss.txt,Giovanni Bianchi,[DATE_116]
-2025-06-07T18:12:08.389324,True,swiss.txt,William Brown,[DATE_117]
-2025-06-07T18:12:08.389324,True,swiss.txt,anna.schmidt@kunde.de,[NAME_118]
-2025-06-07T18:12:08.389324,True,swiss.txt,franz.huber@kunde.de,[NAME_119]
-2025-06-07T18:12:08.389324,True,swiss.txt,pierre.dubois@kunde.de,[NAME_120]
-2025-06-07T18:12:08.389324,True,swiss.txt,giovanni.bianchi@kunde.de,[NAME_121]
-2025-06-07T18:12:08.389324,True,swiss.txt,william.brown@kunde.de,[NAME_122]
-2025-06-07T18:12:08.389324,True,swiss.txt,1250,[EMAIL_123]
-2025-06-07T18:12:08.389324,True,swiss.txt,890,[EMAIL_124]
-2025-06-07T18:12:08.389324,True,swiss.txt,2340,[EMAIL_125]
-2025-06-07T18:12:08.389324,True,swiss.txt,1750,[EMAIL_126]
-2025-06-07T18:12:08.389324,True,swiss.txt,3200,[EMAIL_127]
-2025-06-07T18:12:08.389324,True,swiss.txt,DE02 5001 0517 5407 3249 31,[IBAN_128]
-2025-06-07T18:12:08.389324,True,swiss.txt,DE27 2005 0550 1045 1862 37,[IBAN_129]
-2025-06-07T18:12:08.389324,True,swiss.txt,DE02 5001 0517 5407 3249 32,[IBAN_130]
-2025-06-07T18:12:08.389324,True,swiss.txt,DE02 5001 0517 5407 3249 33,[IBAN_131]
-2025-06-07T18:12:08.389324,True,swiss.txt,Kirchstraße 10 10115 Berlin,[ADDRESS_132]
-2025-06-07T18:12:08.389324,True,swiss.txt,Seefeldstraße 5 10117 Berlin,[ADDRESS_133]
-2025-06-07T18:12:08.389324,True,swiss.txt,15 Rue de la Paix 10115 Berlin,[ADDRESS_134]
-2025-06-07T18:12:08.389324,True,swiss.txt,Via della Spiga 20 10115 Berlin,[ADDRESS_135]
-2025-06-07T18:12:08.389324,True,swiss.txt,42 Oxford Street 10115 Berlin ,[ADDRESS_136]
-2025-06-07T18:12:08.389324,True,swiss.txt,"9012
-
-Cordiali",[ADDRESS_137]
-2025-06-07T18:12:08.389324,True,swiss.txt,0000 0123 456,[PHONE_138]
-2025-06-07T18:12:08.389324,True,swiss.txt,"5678
-Indirizzo",[ADDRESS_139]
-2025-06-07T18:12:08.389324,True,swiss.txt,02 1234 5678,[PHONE_140]
-2025-06-07T18:12:08.389324,True,swiss.txt,info@esempio.it,[EMAIL_141]
-2025-06-07T18:12:08.389324,True,swiss.txt,Michael,[NAME_142]
-2025-06-07T18:12:08.389324,True,swiss.txt,Sabine,[NAME_143]
-2025-06-07T18:12:08.389324,True,swiss.txt,Petra,[NAME_144]
-2025-06-07T18:12:08.389324,True,swiss.txt,Klaus,[NAME_145]
-2025-06-07T18:12:08.389324,True,swiss.txt,Schmidt,[NAME_146]
-2025-06-07T18:12:08.389324,True,swiss.txt,Fischer,[NAME_147]
-2025-06-07T18:12:08.389324,True,swiss.txt,Wagner,[NAME_148]
-2025-06-07T18:12:08.389324,True,swiss.txt,michael.schmidt@kunde.de,[EMAIL_149]
-2025-06-07T18:12:08.389324,True,swiss.txt,sabine.weber@kunde.de,[EMAIL_150]
-2025-06-07T18:12:08.389324,True,swiss.txt,thomas.mueller@kunde.de,[EMAIL_151]
-2025-06-07T18:12:08.389324,True,swiss.txt,petra.fischer@kunde.de,[EMAIL_152]
-2025-06-07T18:12:08.389324,True,swiss.txt,klaus.wagner@kunde.de,[EMAIL_153]
-2025-06-07T18:12:08.389324,True,swiss.txt,+49 89 23456789,[PHONE_154]
-2025-06-07T18:12:08.389324,True,swiss.txt,+49 40 34567890,[PHONE_155]
-2025-06-07T18:12:08.389324,True,swiss.txt,+49 69 45678901,[PHONE_156]
-2025-06-07T18:12:08.389324,True,swiss.txt,+49 211 56789012,[PHONE_157]
-2025-06-07T18:12:08.389324,True,swiss.txt,Hauptstraße 45 80331 München,[ADDRESS_158]
-2025-06-07T18:12:08.389324,True,swiss.txt,Neue Straße 78 20095 Hamburg,[ADDRESS_159]
-2025-06-07T18:12:08.389324,True,swiss.txt,Frankfurter Ring 12 60313 Frankfurt,[ADDRESS_160]
-2025-06-07T18:12:08.389324,True,swiss.txt,Königsallee 92 40212 Düsseldorf,[ADDRESS_161]
-2025-06-07T18:12:08.389324,True,swiss.txt,12/345/67890,[SSN_162]
-2025-06-07T18:12:08.389324,True,swiss.txt,98/765/43210,[SSN_163]
-2025-06-07T18:12:08.389324,True,swiss.txt,45/678/90123,[SSN_164]
-2025-06-07T18:12:08.389324,True,swiss.txt,34/567/89012,[SSN_165]
-2025-06-07T18:12:08.389324,True,swiss.txt,23/456/78901 ,[SSN_166]
-2025-06-07T18:12:08.389324,True,swiss.txt,Andreas,[NAME_167]
-2025-06-07T18:12:08.389324,True,swiss.txt,Monika,[NAME_168]
-2025-06-07T18:12:08.389324,True,swiss.txt,Frank,[NAME_169]
-2025-06-07T18:12:08.389324,True,swiss.txt,Susanne,[NAME_170]
-2025-06-07T18:12:08.389324,True,swiss.txt,Dieter,[NAME_171]
-2025-06-07T18:12:08.389324,True,swiss.txt,Becker,[NAME_172]
-2025-06-07T18:12:08.389324,True,swiss.txt,Hoffmann,[NAME_173]
-2025-06-07T18:12:08.389324,True,swiss.txt,Schäfer,[NAME_174]
-2025-06-07T18:12:08.389324,True,swiss.txt,Koch,[NAME_175]
-2025-06-07T18:12:08.389324,True,swiss.txt,Richter,[NAME_176]
-2025-06-07T18:12:08.389324,True,swiss.txt,andreas.becker@firma.de,[EMAIL_177]
-2025-06-07T18:12:08.389324,True,swiss.txt,monika.hoffmann@firma.de,[EMAIL_178]
-2025-06-07T18:12:08.389324,True,swiss.txt,frank.schaefer@firma.de,[EMAIL_179]
-2025-06-07T18:12:08.389324,True,swiss.txt,susanne.koch@firma.de,[EMAIL_180]
-2025-06-07T18:12:08.389324,True,swiss.txt,dieter.richter@firma.de,[EMAIL_181]
-2025-06-07T18:12:08.389324,True,swiss.txt,+49 30 98765432,[PHONE_182]
-2025-06-07T18:12:08.389324,True,swiss.txt,+49 89 87654321,[PHONE_183]
-2025-06-07T18:12:08.389324,True,swiss.txt,+49 40 76543210,[PHONE_184]
-2025-06-07T18:12:08.389324,True,swiss.txt,+49 69 65432109,[PHONE_185]
-2025-06-07T18:12:08.389324,True,swiss.txt,+49 211 54321098,[PHONE_186]
-2025-06-07T18:12:08.389324,True,swiss.txt,Hauptstraße 1 10115 Berlin,[ADDRESS_187]
-2025-06-07T18:12:08.389324,True,swiss.txt,Leopoldstraße 45 80802 München,[ADDRESS_188]
-2025-06-07T18:12:08.389324,True,swiss.txt,Neuer Wall 78 20354 Hamburg,[ADDRESS_189]
-2025-06-07T18:12:08.389324,True,swiss.txt,Mainzer Landstraße 12 60329 Frankfurt,[ADDRESS_190]
-2025-06-07T18:12:08.389324,True,swiss.txt,23/456/78901,[SSN_191]
-2025-06-07T18:12:08.389324,True,swiss.txt,12 345678 901,[SSN_192]
-2025-06-07T18:12:08.389324,True,swiss.txt,98 765432 102,[SSN_193]
-2025-06-07T18:12:08.389324,True,swiss.txt,45 678901 203,[SSN_194]
-2025-06-07T18:12:08.389324,True,swiss.txt,34 567890 304,[SSN_195]
-2025-06-07T18:12:08.389324,True,swiss.txt,23 456789 405 ,[SSN_196]
-2025-06-07T18:12:08.389324,True,swiss.txt,01-234567,[PHONE_197]
-2025-06-07T18:12:08.389324,True,swiss.txt,Bahnhofstrasse 1,[ADDRESS_198]
-2025-06-07T18:12:08.389324,True,swiss.txt,info@beispiel.ch,[EMAIL_199]
-2025-06-07T18:12:08.389324,True,swiss.txt,"Herr Schmid
-
-Vielen Dank",[NAME_200]
-2025-06-07T18:12:08.431916,True,transactions.csv,000-180.000,[PHONE_1]
-2025-06-07T18:12:08.431916,True,transactions.csv,2027 Bewertung,[ADDRESS_2]
-2025-06-07T18:12:08.431916,True,transactions.csv,Max Mustermann,[NAME_3]
-2025-06-07T18:12:08.431916,True,transactions.csv,Peter Schmid,[NAME_4]
-2025-06-07T18:12:08.431916,True,transactions.csv,Marie Dupont,[NAME_5]
-2025-06-07T18:12:08.431916,True,transactions.csv,Marco Rossi,[NAME_6]
-2025-06-07T18:12:08.431916,True,transactions.csv,John Smith,[NAME_7]
-2025-06-07T18:12:08.431916,True,transactions.csv,max.mustermann@beispiel.de,[EMAIL_8]
-2025-06-07T18:12:08.431916,True,transactions.csv,peter.schmid@beispiel.ch,[EMAIL_9]
-2025-06-07T18:12:08.431916,True,transactions.csv,marie.dupont@exemple.fr,[EMAIL_10]
-2025-06-07T18:12:08.431916,True,transactions.csv,marco.rossi@esempio.it,[EMAIL_11]
-2025-06-07T18:12:08.431916,True,transactions.csv,john.smith@example.com,[EMAIL_12]
-2025-06-07T18:12:08.431916,True,transactions.csv,+49 30 12345678,[PHONE_13]
-2025-06-07T18:12:08.431916,True,transactions.csv,+41 44 123 45 67,[PHONE_14]
-2025-06-07T18:12:08.431916,True,transactions.csv,+33 1 23 45 67 89,[PHONE_15]
-2025-06-07T18:12:08.431916,True,transactions.csv,+39 02 1234 5678,[PHONE_16]
-2025-06-07T18:12:08.431916,True,transactions.csv,+44 20 1234 5678,[PHONE_17]
-2025-06-07T18:12:08.431916,True,transactions.csv,Musterstraße 123 12345 Berlin,[ADDRESS_18]
-2025-06-07T18:12:08.431916,True,transactions.csv,Bahnhofstrasse 1 8001 Zürich,[ADDRESS_19]
-2025-06-07T18:12:08.431916,True,transactions.csv,123 Rue de Paris 75001 Paris,[ADDRESS_20]
-2025-06-07T18:12:08.431916,True,transactions.csv,Via Roma 123 20100 Milano,[ADDRESS_21]
-2025-06-07T18:12:08.431916,True,transactions.csv,123 High Street London SW1A 1AA,[ADDRESS_22]
-2025-06-07T18:12:08.431916,True,transactions.csv,DE89 3704 0044 0532 0130 00,[IBAN_23]
-2025-06-07T18:12:08.431916,True,transactions.csv,CH93 0076 7000 E529 3557 7,[IBAN_24]
-2025-06-07T18:12:08.431916,True,transactions.csv,FR76 3000 6000 0112 3456 7890 189,[IBAN_25]
-2025-06-07T18:12:08.431916,True,transactions.csv,IT60 X054 2811 1010 0000 0123 456,[IBAN_26]
-2025-06-07T18:12:08.431916,True,transactions.csv,GB29 NWBK 6016 1331 9268 19,[IBAN_27]
-2025-06-07T18:12:08.431916,True,transactions.csv,4532 1234 5678 9012,[IBAN_28]
-2025-06-07T18:12:08.431916,True,transactions.csv,4532 1234 5678 9013,[IBAN_29]
-2025-06-07T18:12:08.431916,True,transactions.csv,4532 1234 5678 9014,[IBAN_30]
-2025-06-07T18:12:08.431916,True,transactions.csv,4532 1234 5678 9015,[IBAN_31]
-2025-06-07T18:12:08.431916,True,transactions.csv,4532 1234 5678 9016,[IBAN_32]
-2025-06-07T18:12:08.431916,True,transactions.csv,nan,[SSN_33]
-2025-06-07T18:12:08.431916,True,transactions.csv,756.1234.5678.90,[SSN_34]
-2025-06-07T18:12:08.431916,True,transactions.csv, ,[SSN_35]
-2025-06-07T18:12:08.431916,True,transactions.csv,sarah.weber@techsolutions.ch,[EMAIL_36]
-2025-06-07T18:12:08.431916,True,transactions.csv,+41 44 987 65,[PHONE_37]
-2025-06-07T18:12:08.431916,True,transactions.csv,"Dr. Sarah Weber
-TechSolutions",[NAME_38]
-2025-06-07T18:12:08.431916,True,transactions.csv,hans.mueller@ethz.ch,[EMAIL_39]
-2025-06-07T18:12:08.431916,True,transactions.csv,+41 44 123 45,[PHONE_40]
-2025-06-07T18:12:08.431916,True,transactions.csv,l.meier@digitalsystems.ch,[EMAIL_41]
-2025-06-07T18:12:08.431916,True,transactions.csv,+41 44 456 78,[PHONE_42]
-2025-06-07T18:12:08.431916,True,transactions.csv,987.654.321,[SSN_43]
-2025-06-07T18:12:08.431916,True,transactions.csv,CHE-987.654.321,[SSN_44]
-2025-06-07T18:12:08.431916,True,transactions.csv,8002 Zürich,[ADDRESS_45]
-2025-06-07T18:12:08.431916,True,transactions.csv,Musterstrasse 123,[ADDRESS_46]
-2025-06-07T18:12:08.431916,True,transactions.csv,lara.meier@techsolutions.ch,[EMAIL_47]
-2025-06-07T18:12:08.431916,True,transactions.csv,123.456.789,[SSN_48]
-2025-06-07T18:12:08.431916,True,transactions.csv,CHE-123.456.789,[SSN_49]
-2025-06-07T18:12:08.431916,True,transactions.csv,8004 Zürich,[ADDRESS_50]
-2025-06-07T18:12:08.431916,True,transactions.csv,Industriestrasse 100,[ADDRESS_51]
-2025-06-07T18:12:08.431916,True,transactions.csv,lara.meier@example.ch,[EMAIL_52]
-2025-06-07T18:12:08.431916,True,transactions.csv,8001 Zürich,[ADDRESS_53]
-2025-06-07T18:12:08.431916,True,transactions.csv,Bahnhofstrasse 45,[ADDRESS_54]
-2025-06-07T18:12:08.431916,True,transactions.csv,"1990
-Adresse",[ADDRESS_55]
-2025-06-07T18:12:08.431916,True,transactions.csv,Hans,[NAME_56]
-2025-06-07T18:12:08.431916,True,transactions.csv,Thomas,[NAME_57]
-2025-06-07T18:12:08.431916,True,transactions.csv,Sophie,[NAME_58]
-2025-06-07T18:12:08.431916,True,transactions.csv,Luca,[NAME_59]
-2025-06-07T18:12:08.431916,True,transactions.csv,Emma,[NAME_60]
-2025-06-07T18:12:08.431916,True,transactions.csv,Müller,[NAME_61]
-2025-06-07T18:12:08.431916,True,transactions.csv,Weber,[NAME_62]
-2025-06-07T18:12:08.431916,True,transactions.csv,Martin,[NAME_63]
-2025-06-07T18:12:08.431916,True,transactions.csv,Ferrari,[NAME_64]
-2025-06-07T18:12:08.431916,True,transactions.csv,Wilson,[NAME_65]
-2025-06-07T18:12:08.431916,True,transactions.csv,hans.mueller@firma.de,[EMAIL_66]
-2025-06-07T18:12:08.431916,True,transactions.csv,thomas.weber@firma.ch,[EMAIL_67]
-2025-06-07T18:12:08.431916,True,transactions.csv,sophie.martin@entreprise.fr,[EMAIL_68]
-2025-06-07T18:12:08.431916,True,transactions.csv,luca.ferrari@azienda.it,[EMAIL_69]
-2025-06-07T18:12:08.431916,True,transactions.csv,emma.wilson@company.com,[EMAIL_70]
-2025-06-07T18:12:08.431916,True,transactions.csv,+49 89 12345678,[PHONE_71]
-2025-06-07T18:12:08.431916,True,transactions.csv,+41 44 234 56 78,[PHONE_72]
-2025-06-07T18:12:08.431916,True,transactions.csv,+33 1 34 56 78 90,[PHONE_73]
-2025-06-07T18:12:08.431916,True,transactions.csv,+39 02 2345 6789,[PHONE_74]
-2025-06-07T18:12:08.431916,True,transactions.csv,+44 20 2345 6789,[PHONE_75]
-2025-06-07T18:12:08.431916,True,transactions.csv,Hauptstraße 1 80331 München,[ADDRESS_76]
-2025-06-07T18:12:08.431916,True,transactions.csv,Bahnhofstrasse 2 8001 Zürich,[ADDRESS_77]
-2025-06-07T18:12:08.431916,True,transactions.csv,15 Avenue des Champs-Élysées 75008 Paris,[ADDRESS_78]
-2025-06-07T18:12:08.431916,True,transactions.csv,Via Monte Napoleone 8 20121 Milano,[ADDRESS_79]
-2025-06-07T18:12:08.431916,True,transactions.csv,25 Old Street London EC1V 9HL,[ADDRESS_80]
-2025-06-07T18:12:08.431916,True,transactions.csv,01-234567-8,[IBAN_81]
-2025-06-07T18:12:08.431916,True,transactions.csv,GB29 NWBK 6016 1331 9268 19 ,[IBAN_82]
-2025-06-07T18:12:08.431916,True,transactions.csv,"9012
-
-Best",[ADDRESS_83]
-2025-06-07T18:12:08.431916,True,transactions.csv,"5678
-Address",[ADDRESS_84]
-2025-06-07T18:12:08.431916,True,transactions.csv,contact@example.com,[EMAIL_85]
-2025-06-07T18:12:08.431916,True,transactions.csv,max.mustermann@example.com,[EMAIL_86]
-2025-06-07T18:12:08.431916,True,transactions.csv,+49 123 4567890,[PHONE_87]
-2025-06-07T18:12:08.431916,True,transactions.csv,2024-03-15,[DATE_88]
-2025-06-07T18:12:08.431916,True,transactions.csv,4111 1111 1111 1111,[IBAN_89]
-2025-06-07T18:12:08.431916,True,transactions.csv,Tech Solutions GmbH,[NAME_90]
-2025-06-07T18:12:08.431916,True,transactions.csv,Dr. Anna Schmidt,NAME_91
-2025-06-07T18:12:08.431916,True,transactions.csv,anna.schmidt@techsolutions.de,[EMAIL_92]
-2025-06-07T18:12:08.431916,True,transactions.csv,Dr. Thomas Weber,[NAME_93]
-2025-06-07T18:12:08.431916,True,transactions.csv,thomas.weber@company.de,[EMAIL_94]
-2025-06-07T18:12:08.431916,True,transactions.csv,maria.schmidt@company.de,[EMAIL_95]
-2025-06-07T18:12:08.431916,True,transactions.csv,+49 40 98765432,[PHONE_96]
-2025-06-07T18:12:08.431916,True,transactions.csv,DE27 3704 0044 0532 0130 01,[PHONE_97]
-2025-06-07T18:12:08.431916,True,transactions.csv,info@techinnovations.de,[EMAIL_98]
-2025-06-07T18:12:08.431916,True,transactions.csv,+49 89 12345679,[PHONE_99]
-2025-06-07T18:12:08.431916,True,transactions.csv,DE89 3704 0044 0532 0130 02,[PHONE_100]
-2025-06-07T18:12:08.431916,True,transactions.csv,"9012
-
-Cordialement",[ADDRESS_101]
-2025-06-07T18:12:08.431916,True,transactions.csv,0112 3456 7890,[PHONE_102]
-2025-06-07T18:12:08.431916,True,transactions.csv,+33 1 23 45,[PHONE_103]
-2025-06-07T18:12:08.431916,True,transactions.csv,contact@exemple.fr,[EMAIL_104]
-2025-06-07T18:12:08.431916,True,transactions.csv,"9012
-
-Mit",[ADDRESS_105]
-2025-06-07T18:12:08.431916,True,transactions.csv,0532 0130 00,[PHONE_106]
-2025-06-07T18:12:08.431916,True,transactions.csv,0044 0532 0130,[PHONE_107]
-2025-06-07T18:12:08.431916,True,transactions.csv,030-12345678,[PHONE_108]
-2025-06-07T18:12:08.431916,True,transactions.csv,sarah.mueller@techsolutions.ch,[EMAIL_109]
-2025-06-07T18:12:08.431916,True,transactions.csv,thomas.weber@techsolutions.ch,[EMAIL_110]
-2025-06-07T18:12:08.431916,True,transactions.csv,info@techsolutions.ch,[EMAIL_111]
-2025-06-07T18:12:08.431916,True,transactions.csv,"2026
-TechSolutions",[ADDRESS_112]
-2025-06-07T18:12:08.431916,True,transactions.csv,Anna Schmidt,[DATE_113]
-2025-06-07T18:12:08.431916,True,transactions.csv,Franz Huber,[DATE_114]
-2025-06-07T18:12:08.431916,True,transactions.csv,Pierre Dubois,[DATE_115]
-2025-06-07T18:12:08.431916,True,transactions.csv,Giovanni Bianchi,[DATE_116]
-2025-06-07T18:12:08.431916,True,transactions.csv,William Brown,[DATE_117]
-2025-06-07T18:12:08.431916,True,transactions.csv,anna.schmidt@kunde.de,[NAME_118]
-2025-06-07T18:12:08.431916,True,transactions.csv,franz.huber@kunde.de,[NAME_119]
-2025-06-07T18:12:08.431916,True,transactions.csv,pierre.dubois@kunde.de,[NAME_120]
-2025-06-07T18:12:08.431916,True,transactions.csv,giovanni.bianchi@kunde.de,[NAME_121]
-2025-06-07T18:12:08.431916,True,transactions.csv,william.brown@kunde.de,[NAME_122]
-2025-06-07T18:12:08.431916,True,transactions.csv,1250,[EMAIL_123]
-2025-06-07T18:12:08.431916,True,transactions.csv,890,[EMAIL_124]
-2025-06-07T18:12:08.431916,True,transactions.csv,2340,[EMAIL_125]
-2025-06-07T18:12:08.431916,True,transactions.csv,1750,[EMAIL_126]
-2025-06-07T18:12:08.431916,True,transactions.csv,3200,[EMAIL_127]
-2025-06-07T18:12:08.431916,True,transactions.csv,DE02 5001 0517 5407 3249 31,[IBAN_128]
-2025-06-07T18:12:08.431916,True,transactions.csv,DE27 2005 0550 1045 1862 37,[IBAN_129]
-2025-06-07T18:12:08.431916,True,transactions.csv,DE02 5001 0517 5407 3249 32,[IBAN_130]
-2025-06-07T18:12:08.431916,True,transactions.csv,DE02 5001 0517 5407 3249 33,[IBAN_131]
-2025-06-07T18:12:08.431916,True,transactions.csv,Kirchstraße 10 10115 Berlin,[ADDRESS_132]
-2025-06-07T18:12:08.431916,True,transactions.csv,Seefeldstraße 5 10117 Berlin,[ADDRESS_133]
-2025-06-07T18:12:08.431916,True,transactions.csv,15 Rue de la Paix 10115 Berlin,[ADDRESS_134]
-2025-06-07T18:12:08.431916,True,transactions.csv,Via della Spiga 20 10115 Berlin,[ADDRESS_135]
-2025-06-07T18:12:08.431916,True,transactions.csv,42 Oxford Street 10115 Berlin ,[ADDRESS_136]
-2025-06-07T18:12:08.431916,True,transactions.csv,"9012
-
-Cordiali",[ADDRESS_137]
-2025-06-07T18:12:08.431916,True,transactions.csv,0000 0123 456,[PHONE_138]
-2025-06-07T18:12:08.431916,True,transactions.csv,"5678
-Indirizzo",[ADDRESS_139]
-2025-06-07T18:12:08.431916,True,transactions.csv,02 1234 5678,[PHONE_140]
-2025-06-07T18:12:08.431916,True,transactions.csv,info@esempio.it,[EMAIL_141]
-2025-06-07T18:12:08.431916,True,transactions.csv,Michael,[NAME_142]
-2025-06-07T18:12:08.431916,True,transactions.csv,Sabine,[NAME_143]
-2025-06-07T18:12:08.431916,True,transactions.csv,Petra,[NAME_144]
-2025-06-07T18:12:08.431916,True,transactions.csv,Klaus,[NAME_145]
-2025-06-07T18:12:08.431916,True,transactions.csv,Schmidt,[NAME_146]
-2025-06-07T18:12:08.431916,True,transactions.csv,Fischer,[NAME_147]
-2025-06-07T18:12:08.431916,True,transactions.csv,Wagner,[NAME_148]
-2025-06-07T18:12:08.431916,True,transactions.csv,michael.schmidt@kunde.de,[EMAIL_149]
-2025-06-07T18:12:08.431916,True,transactions.csv,sabine.weber@kunde.de,[EMAIL_150]
-2025-06-07T18:12:08.431916,True,transactions.csv,thomas.mueller@kunde.de,[EMAIL_151]
-2025-06-07T18:12:08.431916,True,transactions.csv,petra.fischer@kunde.de,[EMAIL_152]
-2025-06-07T18:12:08.431916,True,transactions.csv,klaus.wagner@kunde.de,[EMAIL_153]
-2025-06-07T18:12:08.431916,True,transactions.csv,+49 89 23456789,[PHONE_154]
-2025-06-07T18:12:08.431916,True,transactions.csv,+49 40 34567890,[PHONE_155]
-2025-06-07T18:12:08.431916,True,transactions.csv,+49 69 45678901,[PHONE_156]
-2025-06-07T18:12:08.431916,True,transactions.csv,+49 211 56789012,[PHONE_157]
-2025-06-07T18:12:08.431916,True,transactions.csv,Hauptstraße 45 80331 München,[ADDRESS_158]
-2025-06-07T18:12:08.431916,True,transactions.csv,Neue Straße 78 20095 Hamburg,[ADDRESS_159]
-2025-06-07T18:12:08.431916,True,transactions.csv,Frankfurter Ring 12 60313 Frankfurt,[ADDRESS_160]
-2025-06-07T18:12:08.431916,True,transactions.csv,Königsallee 92 40212 Düsseldorf,[ADDRESS_161]
-2025-06-07T18:12:08.431916,True,transactions.csv,12/345/67890,[SSN_162]
-2025-06-07T18:12:08.431916,True,transactions.csv,98/765/43210,[SSN_163]
-2025-06-07T18:12:08.431916,True,transactions.csv,45/678/90123,[SSN_164]
-2025-06-07T18:12:08.431916,True,transactions.csv,34/567/89012,[SSN_165]
-2025-06-07T18:12:08.431916,True,transactions.csv,23/456/78901 ,[SSN_166]
-2025-06-07T18:12:08.431916,True,transactions.csv,Andreas,[NAME_167]
-2025-06-07T18:12:08.431916,True,transactions.csv,Monika,[NAME_168]
-2025-06-07T18:12:08.431916,True,transactions.csv,Frank,[NAME_169]
-2025-06-07T18:12:08.431916,True,transactions.csv,Susanne,[NAME_170]
-2025-06-07T18:12:08.431916,True,transactions.csv,Dieter,[NAME_171]
-2025-06-07T18:12:08.431916,True,transactions.csv,Becker,[NAME_172]
-2025-06-07T18:12:08.431916,True,transactions.csv,Hoffmann,[NAME_173]
-2025-06-07T18:12:08.431916,True,transactions.csv,Schäfer,[NAME_174]
-2025-06-07T18:12:08.431916,True,transactions.csv,Koch,[NAME_175]
-2025-06-07T18:12:08.431916,True,transactions.csv,Richter,[NAME_176]
-2025-06-07T18:12:08.431916,True,transactions.csv,andreas.becker@firma.de,[EMAIL_177]
-2025-06-07T18:12:08.431916,True,transactions.csv,monika.hoffmann@firma.de,[EMAIL_178]
-2025-06-07T18:12:08.431916,True,transactions.csv,frank.schaefer@firma.de,[EMAIL_179]
-2025-06-07T18:12:08.431916,True,transactions.csv,susanne.koch@firma.de,[EMAIL_180]
-2025-06-07T18:12:08.431916,True,transactions.csv,dieter.richter@firma.de,[EMAIL_181]
-2025-06-07T18:12:08.431916,True,transactions.csv,+49 30 98765432,[PHONE_182]
-2025-06-07T18:12:08.431916,True,transactions.csv,+49 89 87654321,[PHONE_183]
-2025-06-07T18:12:08.431916,True,transactions.csv,+49 40 76543210,[PHONE_184]
-2025-06-07T18:12:08.431916,True,transactions.csv,+49 69 65432109,[PHONE_185]
-2025-06-07T18:12:08.431916,True,transactions.csv,+49 211 54321098,[PHONE_186]
-2025-06-07T18:12:08.431916,True,transactions.csv,Hauptstraße 1 10115 Berlin,[ADDRESS_187]
-2025-06-07T18:12:08.431916,True,transactions.csv,Leopoldstraße 45 80802 München,[ADDRESS_188]
-2025-06-07T18:12:08.431916,True,transactions.csv,Neuer Wall 78 20354 Hamburg,[ADDRESS_189]
-2025-06-07T18:12:08.431916,True,transactions.csv,Mainzer Landstraße 12 60329 Frankfurt,[ADDRESS_190]
-2025-06-07T18:12:08.431916,True,transactions.csv,23/456/78901,[SSN_191]
-2025-06-07T18:12:08.431916,True,transactions.csv,12 345678 901,[SSN_192]
-2025-06-07T18:12:08.431916,True,transactions.csv,98 765432 102,[SSN_193]
-2025-06-07T18:12:08.431916,True,transactions.csv,45 678901 203,[SSN_194]
-2025-06-07T18:12:08.431916,True,transactions.csv,34 567890 304,[SSN_195]
-2025-06-07T18:12:08.431916,True,transactions.csv,23 456789 405 ,[SSN_196]
-2025-06-07T18:12:08.431916,True,transactions.csv,01-234567,[PHONE_197]
-2025-06-07T18:12:08.431916,True,transactions.csv,Bahnhofstrasse 1,[ADDRESS_198]
-2025-06-07T18:12:08.431916,True,transactions.csv,info@beispiel.ch,[EMAIL_199]
-2025-06-07T18:12:08.431916,True,transactions.csv,"Herr Schmid
-
-Vielen Dank",[NAME_200]
-2025-06-07T18:12:08.431916,True,transactions.csv,franz.huber@kunde.ch,[EMAIL_201]
-2025-06-07T18:12:08.431916,True,transactions.csv,pierre.dubois@client.fr,[EMAIL_202]
-2025-06-07T18:12:08.431916,True,transactions.csv,giovanni.bianchi@cliente.it,[EMAIL_203]
-2025-06-07T18:12:08.431916,True,transactions.csv,william.brown@customer.com,[EMAIL_204]
-2025-06-07T18:12:08.431916,True,transactions.csv,Seefeldstrasse 5 8008 Zürich,[ADDRESS_205]
-2025-06-07T18:12:08.431916,True,transactions.csv,15 Rue de la Paix 75002 Paris,[ADDRESS_206]
-2025-06-07T18:12:08.431916,True,transactions.csv,Via della Spiga 20 20121 Milano,[ADDRESS_207]
-2025-06-07T18:12:08.431916,True,transactions.csv,42 Oxford Street London W1D 2BJ ,[ADDRESS_208]
diff --git a/test_neutralizer/neutralizer.py b/test_neutralizer/neutralizer.py
deleted file mode 100644
index 9646d63..0000000
--- a/test_neutralizer/neutralizer.py
+++ /dev/null
@@ -1,338 +0,0 @@
-"""
-DSGVO-konformer Daten-Neutralisierer für KI-Agentensysteme
-Unterstützt TXT, JSON, CSV, Excel und Word-Dateien
-Mehrsprachig: DE, EN, FR, IT
-"""
-
-import re
-import json
-import pandas as pd
-from typing import Dict, List, Tuple, Any, Union, Optional
-from dataclasses import dataclass
-import logging
-import traceback
-import xml.etree.ElementTree as ET
-from io import StringIO
-from patterns import Pattern, HeaderPatterns, DataPatterns, get_pattern_for_header, find_patterns_in_text, TextTablePatterns
-
-# Configure logging
-logger = logging.getLogger(__name__)
-
-@dataclass
-class TableData:
- """Repräsentiert Tabellendaten"""
- headers: List[str]
- rows: List[List[str]]
- source_type: str # 'csv', 'json', 'xml', 'text_table'
-
-@dataclass
-class PlainText:
- """Repräsentiert normalen Text"""
- content: str
- source_type: str # 'txt', 'docx', 'text_plain'
-
-@dataclass
-class ProcessResult:
- """Result of content processing"""
- data: Any
- mapping: Dict[str, str]
- replaced_fields: List[str]
- processed_info: Dict[str, Any] # Additional processing information
-
-class DataAnonymizer:
- """Hauptklasse für die Datenanonymisierung"""
-
- def __init__(self):
- """Initialize the anonymizer with patterns"""
- self.header_patterns = HeaderPatterns.patterns
- self.data_patterns = DataPatterns.patterns
- self.replaced_fields = set()
- self.mapping = {}
- self.processing_info = []
-
- def _normalize_whitespace(self, text: str) -> str:
- """Normalize whitespace in text"""
- text = re.sub(r'\s+', ' ', text)
- text = text.replace('\r\n', '\n').replace('\r', '\n')
- return text.strip()
-
- def _is_table_line(self, line: str) -> bool:
- """Check if a line represents a table row"""
- return bool(re.match(r'^\s*[^:]+:\s*[^:]+$', line) or
- re.match(r'^\s*[^\t]+\t[^\t]+$', line))
-
- def _extract_tables_from_text(self, content: str) -> Tuple[List[TableData], List[PlainText]]:
- """
- Extract tables and plain text from content
-
- Args:
- content: Content to process
-
- Returns:
- Tuple of (list of tables, list of plain text sections)
- """
- tables = []
- plain_texts = []
-
- # Process the entire content as plain text
- plain_texts.append(PlainText(content=content, source_type='text_plain'))
-
- return tables, plain_texts
-
- def _anonymize_table(self, table: TableData) -> TableData:
- """Anonymize table data"""
- try:
- anonymized_table = TableData(
- headers=table.headers.copy(),
- rows=[row.copy() for row in table.rows],
- source_type=table.source_type
- )
-
- for i, header in enumerate(anonymized_table.headers):
- pattern = get_pattern_for_header(header, self.header_patterns)
- if pattern:
- for row in anonymized_table.rows:
- if row[i] is not None:
- original = str(row[i])
- if original not in self.mapping:
- self.mapping[original] = pattern.replacement_template.format(len(self.mapping) + 1)
- row[i] = self.mapping[original]
-
- return anonymized_table
-
- except Exception as e:
- logger.error(f"Error anonymizing table: {str(e)}")
- logger.debug(traceback.format_exc())
- raise
-
- def _anonymize_plain_text(self, text: PlainText) -> PlainText:
- """Anonymize plain text content"""
- try:
- # Process the entire text at once instead of line by line
- current_text = text.content
-
- # Find all matches in the entire text
- matches = find_patterns_in_text(current_text, self.data_patterns)
-
- # Process matches in reverse order to avoid position shifting
- for match in sorted(matches, key=lambda x: x[2], reverse=True):
- pattern_name, matched_text, start, end = match
-
- # Skip if the matched text is already a placeholder
- if re.match(r'\[[A-Z_]+\d+\]', matched_text):
- continue
-
- # Find the pattern that matched
- pattern = next((p for p in self.data_patterns if p.name == pattern_name), None)
- if pattern:
- # Use the pattern's replacement template
- if matched_text not in self.mapping:
- self.mapping[matched_text] = pattern.replacement_template.format(len(self.mapping) + 1)
- replacement = self.mapping[matched_text]
-
- if pattern_name == 'email':
- print(f"DEBUG: Replacing email '{matched_text}' with '{replacement}'")
- print(f"DEBUG: Text after replacement: {current_text[:start] + replacement + current_text[end:]}")
-
- # Replace the matched text while preserving surrounding whitespace
- current_text = current_text[:start] + replacement + current_text[end:]
-
- return PlainText(content=current_text, source_type=text.source_type)
-
- except Exception as e:
- logger.error(f"Error anonymizing plain text: {str(e)}")
- logger.debug(traceback.format_exc())
- raise
-
- def _anonymize_json_value(self, value: Any, key: str = None) -> Any:
- """
- Recursively anonymize JSON values based on their keys and content
-
- Args:
- value: Value to anonymize
- key: Key name (if part of a key-value pair)
-
- Returns:
- Anonymized value
- """
- if isinstance(value, dict):
- return {k: self._anonymize_json_value(v, k) for k, v in value.items()}
- elif isinstance(value, list):
- return [self._anonymize_json_value(item) for item in value]
- elif isinstance(value, str):
- # Check if this is a key we should process
- if key:
- pattern = get_pattern_for_header(key, self.header_patterns)
- if pattern:
- if value not in self.mapping:
- self.mapping[value] = pattern.replacement_template.format(len(self.mapping) + 1)
- return self.mapping[value]
-
- # Check if the value itself matches any patterns
- matches = find_patterns_in_text(value, self.data_patterns)
- if matches:
- # Use the first match's pattern
- pattern_name = matches[0][0]
- if value not in self.mapping:
- self.mapping[value] = f"{pattern_name.upper()}_{len(self.mapping) + 1}"
- return self.mapping[value]
-
- return value
- else:
- return value
-
- def _anonymize_xml_element(self, element: ET.Element, indent: str = '') -> str:
- """
- Recursively process XML element and return formatted string
-
- Args:
- element: XML element to process
- indent: Current indentation level
-
- Returns:
- Formatted XML string
- """
- # Process attributes
- processed_attrs = {}
- for attr_name, attr_value in element.attrib.items():
- # Check if attribute name matches any header patterns
- pattern = get_pattern_for_header(attr_name, self.header_patterns)
- if pattern:
- if attr_value not in self.mapping:
- self.mapping[attr_value] = pattern.replacement_template.format(len(self.mapping) + 1)
- processed_attrs[attr_name] = self.mapping[attr_value]
- else:
- # Check if attribute value matches any data patterns
- matches = find_patterns_in_text(attr_value, self.data_patterns)
- if matches:
- pattern_name = matches[0][0]
- pattern = next((p for p in self.data_patterns if p.name == pattern_name), None)
- if pattern:
- if attr_value not in self.mapping:
- self.mapping[attr_value] = pattern.replacement_template.format(len(self.mapping) + 1)
- processed_attrs[attr_name] = self.mapping[attr_value]
- else:
- processed_attrs[attr_name] = attr_value
- else:
- processed_attrs[attr_name] = attr_value
-
- attrs = ' '.join(f'{k}="{v}"' for k, v in processed_attrs.items())
- attrs = f' {attrs}' if attrs else ''
-
- # Process text content
- text = element.text.strip() if element.text and element.text.strip() else ''
- if text:
- # Check if text matches any patterns
- matches = find_patterns_in_text(text, self.data_patterns)
- if matches:
- pattern_name = matches[0][0]
- pattern = next((p for p in self.data_patterns if p.name == pattern_name), None)
- if pattern:
- if text not in self.mapping:
- self.mapping[text] = pattern.replacement_template.format(len(self.mapping) + 1)
- text = self.mapping[text]
-
- # Process child elements
- children = []
- for child in element:
- child_str = self._anonymize_xml_element(child, indent + ' ')
- children.append(child_str)
-
- # Build element string
- if not children and not text:
- return f"{indent}<{element.tag}{attrs}/>"
- elif not children:
- return f"{indent}<{element.tag}{attrs}>{text}{element.tag}>"
- else:
- result = [f"{indent}<{element.tag}{attrs}>"]
- if text:
- result.append(f"{indent} {text}")
- result.extend(children)
- result.append(f"{indent}{element.tag}>")
- return '\n'.join(result)
-
- def process_content(self, content: str, content_type: str) -> ProcessResult:
- """
- Process content and return anonymized data
-
- Args:
- content: Content to process
- content_type: Type of content ('csv', 'json', 'xml', 'text')
-
- Returns:
- ProcessResult: Contains anonymized data, mapping, replaced fields and processing info
- """
- try:
- replaced_fields = []
- processed_info = {}
-
- if content_type in ['csv', 'json', 'xml']:
- # Handle as table
- if content_type == 'csv':
- df = pd.read_csv(StringIO(content), encoding='utf-8')
- table = TableData(
- headers=df.columns.tolist(),
- rows=df.values.tolist(),
- source_type='csv'
- )
- processed_info['type'] = 'table'
- processed_info['headers'] = table.headers
- processed_info['row_count'] = len(table.rows)
- elif content_type == 'json':
- data = json.loads(content)
- # Process JSON recursively
- result = self._anonymize_json_value(data)
- processed_info['type'] = 'json'
- return ProcessResult(result, self.mapping, replaced_fields, processed_info)
- else: # xml
- root = ET.fromstring(content)
- # Process XML recursively with proper formatting
- result = self._anonymize_xml_element(root)
- processed_info['type'] = 'xml'
- return ProcessResult(result, self.mapping, replaced_fields, processed_info)
-
- if not table.rows:
- return ProcessResult(None, self.mapping, [], processed_info)
-
- anonymized_table = self._anonymize_table(table)
-
- # Track replaced fields
- for i, header in enumerate(anonymized_table.headers):
- for orig_row, anon_row in zip(table.rows, anonymized_table.rows):
- if anon_row[i] != orig_row[i]:
- replaced_fields.append(header)
-
- # Convert back to original format
- if content_type == 'csv':
- result = pd.DataFrame(anonymized_table.rows, columns=anonymized_table.headers)
- elif content_type == 'json':
- if len(anonymized_table.headers) == 1 and anonymized_table.headers[0] == 'value':
- result = anonymized_table.rows[0][0]
- else:
- result = dict(zip(anonymized_table.headers, anonymized_table.rows[0]))
- else: # xml
- result = ET.tostring(root, encoding='unicode')
-
- return ProcessResult(result, self.mapping, replaced_fields, processed_info)
- else:
- # Handle as text
- # First, identify what needs to be replaced using table detection
- tables, plain_texts = self._extract_tables_from_text(content)
- processed_info['type'] = 'text'
- processed_info['tables'] = [{'headers': t.headers, 'row_count': len(t.rows)} for t in tables]
-
- # Process plain text sections
- anonymized_texts = [self._anonymize_plain_text(text) for text in plain_texts]
-
- # Combine all processed content
- result = content
- for text, anonymized_text in zip(plain_texts, anonymized_texts):
- if text.content != anonymized_text.content:
- result = result.replace(text.content, anonymized_text.content)
-
- return ProcessResult(result, self.mapping, replaced_fields, processed_info)
-
- except Exception as e:
- logger.error(f"Error processing content: {str(e)}")
- logger.debug(traceback.format_exc())
- return ProcessResult(None, self.mapping, [], {'type': 'error', 'error': str(e)})
\ No newline at end of file
diff --git a/test_neutralizer/output/neutralized_Case.md b/test_neutralizer/output/neutralized_Case.md
deleted file mode 100644
index e05a856..0000000
--- a/test_neutralizer/output/neutralized_Case.md
+++ /dev/null
@@ -1,608 +0,0 @@
-
-# Bewertung der PowerOn AI Platform
-
-Basierend auf dem nachstehenden Q&A ergibt sich nachfolgende Bewertung des Softwareprodukts "PowerOn AI Platform".
-
-## Aktueller Wert per Juni 2025
-
-1. **Technischer Wert des Codes**:
- - Professionelle, modulare Codebasis (~50.000-60.000 LOC)
- - Moderne Architektur mit innovativen Komponenten
- - 5 Personenmonate Entwicklung x CHF 15.000/PM = CHF 75.000
- - Zusätzlicher Wert durch Enterprise-Ready Architektur: CHF 50.000
-
-2. **Bisherige Investitionen**:
- - Hardware/Software: CHF 20.000
- - Expertise-Premium (30+ Jahre Erfahrung): CHF 25.000
-
-3. **IP und Innovationswert**:
- - Multi-Agent Workflow-System
- - Modulare Architecture mit Alleinstellungsmerkmalen
- - Geschätzter Wert: CHF 100.000
-
-4. **Marktpotenzial-Faktor**:
- - Adressierbares Marktvolumen von CHF 500-700 Mio.
- - Wachstumsmarkt (25-30% jährlich)
- - Frühphasen-Multiplikator: 2x
-
-**Aktueller Gesamtwert (Juni 2025)**: **CHF 500.000**
-
-## Prognostizierte Wertentwicklung
-
-### Ende 2025
-- Abschluss der technischen Entwicklung
-- Erste Pilotprojekte mit 3-5 Referenzkunden
-- Validierung des Produkts am Markt
-- **Geschätzter Wert Ende 2025**: **CHF 1,2 Millionen**
- (Steigerung durch Marktvalidierung und Risikoreduktion)
-
-### Ende 2026
-- 20-30 Kunden
-- ARR: CHF 0,5-0,8 Mio.
-- Etablierung im DACH-Markt
-- **Geschätzter Wert Ende 2026**: **CHF 4-5 Millionen**
- (Bewertungsmultiplikator von 6-8x ARR für wachstumsstarke SaaS)
-
-### Ende 2027
-- 70-90 Kunden
-- ARR: CHF 2-2,5 Mio.
-- Erweiterung der Produktpalette
-- **Geschätzter Wert Ende 2027**: **CHF 12-15 Millionen**
- (Bewertungsmultiplikator von 6x ARR)
-
-### Ende 2028
-- 150+ Kunden
-- ARR: CHF 4,5 Mio.
-- Internationale Expansion
-- **Geschätzter Wert Ende 2028**: **CHF 25-30 Millionen**
- (Bewertungsmultiplikator von 5,5-6,5x ARR für etablierte SaaS)
-
-## Schlüsselfaktoren und Risikobeurteilung für die Wertentwicklung
-
-1. **Erfolgreiche Markteinführung**: Der Übergang von Entwicklung zu erfolgreicher Pilotphase ist kritisch für die Wertentwicklung 2025-2026.
-
-2. **Skalierung des Vertriebs**: Die Fähigkeit, die Kundenakquisition gemäss der Prognose zu skalieren, ist entscheidend für die 2026-[ADDRESS_2].
-
-3. **Kapitaleffizienz**: Die effiziente Nutzung des Kapitals (CHF 750.000-1.050.000) für die nächste Entwicklungsphase wird die Bewertung massgeblich beeinflussen.
-
-4. **Marktdynamik**: Die Entwicklung des KI-Marktes und regulatorische Änderungen können sowohl positive als auch negative Auswirkungen haben.
-
-Diese Bewertung basiert auf der Annahme, dass die Meilensteine wie geplant erreicht werden und keine signifikanten externen Faktoren die Marktentwicklung negativ beeinflussen.
-
-
-# Kriterienkatalog zur Softwarebewertung
-
-## Teil 1: Technische Bewertung (Code-basiert)
-
-1. Wie umfangreich ist die Codebasis (LOC, Module, Komponenten)?
-2. Welche Programmiersprachen und Frameworks wurden verwendet?
-3. Wie hoch ist die Codequalität und -konsistenz (saubere Architektur, Dokumentation, Tests)?
-4. Gibt es innovative Algorithmen oder patentierbare technische Lösungen?
-5. Wie modular und wartbar ist die Software gestaltet?
-6. Wie robust ist die Fehlerbehandlung und Sicherheitsarchitektur?
-7. Wie skalierbar ist die technische Infrastruktur?
-8. Gibt es technische Schulden, die zukünftige Entwicklungen behindern könnten?
-
-### 1. Umfang der Codebasis
-- **Frontend**: Modulare JavaScript-Struktur mit ca. 15 Hauptmodulen
-- **Backend**: Python/FastAPI mit ca. 15 Hauptmodulen
-- **Hauptkomponenten**:
- - Frontend: Workflow, UI, Koordination, Datenmanagement
- - Backend: Gateway, Agent Service, Connectors, Workflow Manager
-- **Geschätzte LOC**: ~50,000-60,000 Zeilen Code
-
-### 2. Programmiersprachen und Frameworks
-- **Frontend**:
- - JavaScript (ES6+)
- - Modulares System mit ES6-Import/Export
- - Vanilla JS ohne externe Frameworks
-- **Backend**:
- - Python 3.x
- - FastAPI für REST-API
- - Asyncio für asynchrone Verarbeitung
-
-### 3. Codequalität und -konsistenz
-- **Saubere Architektur**:
- - Klare Trennung Frontend/Backend
- - Modulare Struktur mit definierten Verantwortlichkeiten
- - State Machine Pattern für Workflow-Management
-- **Dokumentation**:
- - Ausführliche JSDoc/Python-Docstrings
- - Architekturdiagramme (Mermaid)
- - Technische Spezifikationen
-- **Tests**:
- - Automatisierte Modultests
- - Manuell Integrationstests
- - Benutzertests über Tickets in Clickup
-
-### 4. Innovative Algorithmen/patentierbare Lösungen
-- Multi-Agent Workflow-System mit spezialisierten Agenten
-- Modulares Agent-Registry-System
-- State Machine für Workflow-Koordination
-- Dynamische Agenten-Integration
-
-### 5. Modularität und Wartbarkeit
-- **Hohe Modularität**:
- - Klare Trennung der Verantwortlichkeiten
- - Plug-and-Play Agent-System
- - Erweiterbare Connector-Architektur
-- **Wartbarkeit**:
- - Konsistente Codestruktur
- - Klare Namenskonventionen
- - Dokumentierte Schnittstellen
-
-### 6. Fehlerbehandlung und Sicherheit
-- **Robuste Fehlerbehandlung**:
- - State Machine für Workflow-Status
- - Exception Handling auf allen Ebenen
- - Logging-System für Debugging
-- **Sicherheitsarchitektur**:
- - Multi-Tenant-Architektur
- - Authentifizierung/Autorisierung
- - Mandantenverwaltung
-
-### 7. Skalierbarkeit
-- **Horizontale Skalierbarkeit**:
- - Modulare Architektur
- - Asynchrone Verarbeitung
- - Connector-System für externe Dienste
-- **Vertikale Skalierbarkeit**:
- - Workflow-Parallelisierung
- - Agent-Pooling
- - Caching-Mechanismen
-
-### 8. Technische Schulden
-- **Potenzielle Verbesserungsbereiche**:
- - Test-Coverage nicht sichtbar
- - Eventuell fehlende Performance-Optimierungen
- - Dokumentation für Zielgruppen noch unvollständig
-- **Keine kritischen Blockierer identifiziert**
-
-### Fazit der technischen Bewertung
-Die Codebasis zeigt eine professionelle, gut strukturierte Enterprise-Anwendung mit klarer Architektur und modernen Best Practices. Die modulare Struktur und die saubere Implementierung der State Machine für Workflow-Management sind besonders hervorzuheben. Die Anwendung ist technisch reif und zeigt ein hohes Mass an Professionalität in der Implementierung.
-
-
-
-## Teil 2: Bewertung der bisherigen Aufwände
-
-### 1. Entwicklungsaufwände
-- **Patrick**:
- - ValueOn AG: 80 Stunden
- - Private Entwicklung: 650 Stunden
- - **Gesamt**: 730 Stunden (ca. 4.5 Personenmonate)
-- **Ida**:
- - ValueOn AG: 60 Stunden
- - **Gesamt**: 60 Stunden (ca. 0.4 Personenmonate)
-- **Gesamtaufwand**: ~5 Personenmonate
-
-### 2. Qualifikationen und Erfahrungslevel
-- **Patrick**:
- - Business Consultant
- - Software Architect
- - Full Stack Developer
- - 30+ Jahre Berufserfahrung
- - Experte für Enterprise-Architekturen
-- **Ida**:
- - Business Analyst
- - Project Manager
- - Scrum Master
- - Erfahrung in agiler Entwicklung
- - Expertise in Prozessoptimierung
-
-### 3. Spezifische Fachkenntnisse
-- **Patrick**:
- - Umfassende Markt- und Business-Erfahrung (30 Jahre)
- - Expertise in Software-Architektur
- - Full Stack Entwicklung
- - Azure Cloud-Integration
- - KI/ML Integration
- - Enterprise-Systeme
-- **Ida**:
- - Projektmanagement
- - Agile Methoden
- - Business Analysis
- - Prozessoptimierung
- - Qualitätssicherung
-
-### 4. Finanzielle Investitionen
-- **Hardware**: CHF 10,000
- - Entwicklungsserver
- - Testumgebungen
- - Entwicklungshardware
-- **Software & Lizenzen**: CHF 10,000
- - Entwicklungstools
- - Cloud-Services
- - KI-API-Zugänge
-- **Gesamt**: CHF 20,000
-
-### 5. Externe Dienstleister
-- **Aktueller Status**: Keine externen Dienstleister
-- **Vorteile**:
- - Volle Kontrolle über Entwicklung
- - Tiefes Verständnis der Architektur
- - Schnelle Entscheidungswege
- - Kosteneffizienz
-
-### 6. Schlüsselkomponenten-Entwicklung
-- **Patrick**:
- - Frontend-Architektur
- - Backend-System
- - Workflow-Engine
- - Agent-System
- - Connector-Framework
- - Datenmanagement
- - Sicherheitsarchitektur
-- **Verantwortlichkeiten**:
- - Systemarchitektur
- - Technische Leitung
- - Code-Review
- - Qualitätssicherung
-
-### 7. Nicht-monetäre Ressourcen
-- **Dominic**:
- - Umfangreiches Sales & Marketing Netzwerk
- - Marktzugang
- - Branchenkontakte
-- **ValueOn AG**:
- - Infrastruktur
- - Rechtlicher Rahmen
- - Geschäftsprozesse
-- **Netzwerke**:
- - Technologie-Partner
- - Potenzielle Kunden
- - Branchenexperten
-
-### 8. Finanzielle Risiken
-- **ValueOn AG**:
- - Bereitstellung von Infrastruktur
- - Personelle Ressourcen
- - Rechtlicher Rahmen
-- **Private Investitionen**:
- - Entwicklungszeit
- - Hardware/Software
- - Cloud-Services
-
-### Fazit bisherige Aufwände
-Die bisherigen Aufwände zeigen ein ausgewogenes Verhältnis zwischen technischer Expertise und Business-Know-how. Die private Investition von 730 Stunden durch Patrick demonstriert ein hohes Engagement und tiefes Verständnis der Technologie. Die Kombination aus technischer Expertise, Business-Erfahrung und Marktzugang bildet eine solide Grundlage für die weitere Entwicklung. Die bisherigen Investitionen sind effizient eingesetzt worden, mit Fokus auf kritische Kernkomponenten und skalierbare Architektur.
-
-## Teil 3: Markt- und Geschäftspotenzial
-
-### 1. Adressierbarer Gesamtmarkt und Wachstumspotenzial
-- **Gesamtmarktvolumen 2025**:
- - KI-Markt: $190 Mrd.
- - Business Process Automation: $19,6 Mrd.
- - Enterprise Knowledge Management: $43 Mrd.
-- **Adressierbarer Markt (SAM)**:
- - Initial: Mittlerer Markt in DACH (Professional Services, Finanzdienstleistungen, Gesundheitswesen)
- - Geschätztes SAM: CHF 500-700 Mio.
-- **Wachstumspotenzial**:
- - Jährliches Marktwachstum: 25-30%
- - Erweiterung auf internationale Märkte
- - Branchenspezifische Lösungen
-
-### 2. Alleinstellungsmerkmale
-1. **Technologische Vorteile**:
- - Proprietäre Multi-Agent-Technologie
- - Modellunabhängige KI-Integration
- - Enterprise-Ready Architektur
- - Fortschrittliche Workflow-Orchestrierung
-
-2. **Funktionale Vorteile**:
- - Nahtlose Integration verschiedener KI-Modelle
- - Robuste Fehlerbehandlung
- - Skalierbare Multi-Tenant-Architektur
- - Umfassende Enterprise-Features
-
-### 3. Kunden und Pilotprojekte
-- **Aktueller Status**:
- - In Entwicklung
- - Erste Referenzkunden in Planung
- - Fokus auf mittelständische Unternehmen
-- **Pilotphase**:
- - Geplant für Q3/Q4 2025
- - 3-5 Schlüsselreferenzkunden
- - Branchenspezifische Templates
-
-### 4. Geschäftsmodell
-- **Hauptmodell**: SaaS (Software as a Service)
-- **Preismodell**:
- - Basis: Pro-Benutzer/Monat Abonnement
- - Zusätzlich: Nutzungsbasierte Abrechnung
- - Enterprise-Lizenzen für grössere Kunden
-- **Erwartete Margen**: 75-85% nach Skalierung
-
-### 5. Preisgestaltung
-- **Wettbewerbsvergleich**:
- - Unterhalb Enterprise-Lösungen
- - Über Standard-BPA-Tools
- - Flexiblere Preisgestaltung als Konkurrenz
-- **Preisstruktur**:
- - Basis-Abonnement: CHF 50-100 pro Benutzer/Monat
- - Nutzungsbasierte Komponente: CHF 0.10-0.50 pro Verarbeitungseinheit
- - Enterprise-Pakete: Individuelle Preisgestaltung
-
-### 6. Umsatzpotenziale
-- **Jahr 1 (2026)**:
- - Ziel: 20-30 Kunden
- - Erwartetes ARR: CHF 0.5-0.8 Mio.
-- **Jahr 2 (2027)**:
- - Ziel: 70-90 Kunden
- - Erwartetes ARR: CHF 2-2.5 Mio.
-- **Jahr 3 (2028)**:
- - Ziel: 150+ Kunden
- - Erwartetes ARR: CHF 4.5 Mio.
-
-### 7. Akquisitionskosten
-- **Customer Acquisition Cost (CAC)**:
- - Erwarteter CAC: CHF 15,000-20,000
- - Payback-Zeit: 12-18 Monate
-- **Kostenstruktur**:
- - 30% Vertrieb und Marketing
- - Fokus auf effiziente Akquisition
- - Skaleneffekte ab 50+ Kunden
-
-### 8. Regulatorische Herausforderungen
-- **Datenschutz**:
- - DSGVO-Konformität
- - Datensicherheit
- - Mandantentrennung
-- **KI-Regulierung**:
- - EU AI Act
- - Transparenzpflichten
- - Qualitätssicherung
-- **Branchenspezifische Regulierung**:
- - Finanzdienstleistungen
- - Gesundheitswesen
- - Professional Services
-
-### Fazit Markt- und Geschäftspotenzial
-Die PowerOn AI Platform adressiert einen wachsenden Markt mit klaren Alleinstellungsmerkmalen. Das Geschäftsmodell ist skalierbar und die Preisgestaltung wettbewerbsfähig. Die regulatorischen Herausforderungen sind bekannt und adressierbar. Die Umsatzprognosen sind konservativ kalkuliert und basieren auf realistischen Marktannahmen.
-
-## Teil 4: Skalierungs- und Zukunftspotenzial
-
-### 1. Ressourcen für Support und Weiterentwicklung
-- **Entwicklungsteam**:
- - 2-3 Full-Stack Entwickler, KI-unterstützte Entwicklung
- - 1 DevOps Engineer
- - 1 QA Engineer
-- **Support-Team**:
- - 1-2 Support Engineers
- - 1 Technical Account Manager
-- **Infrastruktur**:
- - Cloud-basierte Skalierung (Azure)
- - Automatisierte Deployment-Pipeline
- - Monitoring und Logging-Systeme
-
-### 2. Skalierbarkeit
-- **Technische Skalierbarkeit**:
- - Horizontale Skalierung durch Multi-Tenant-Architektur
- - Vertikale Skalierung durch Agent-Pooling
- - Automatische Lastverteilung
-- **Skalierungszeitrahmen**:
- - 2x Nutzer: Sofort möglich
- - 5x Nutzer: 1-2 Monate Vorbereitung
- - 10x Nutzer: 3-4 Monate mit Infrastruktur-Erweiterung
-
-### 3. Kapitalbedarf
-- **Nächste Entwicklungsphase (12 Monate)**:
- - Entwicklung: CHF 400,000-500,000
- - Marketing & Sales: CHF 100,000-200,000
- - Infrastruktur: CHF 50,000-100,000
- - Betrieb & Support: CHF 100,000-150,000
- - **Gesamt**: CHF 750,000-1,050,000
-
-### 4. Schlüsselpersonen
-- **Technische Leitung**:
- - Patrick (Software Architect, Full Stack Developer)
- - Verantwortlich für: Architektur, Entwicklung, Technische Strategie
-- **Business & Operations**:
- - Ida (Business Analyst, Project Manager)
- - Verantwortlich für: Projektmanagement, Business Analysis
-- **Sales & Marketing**:
- - Dominic (Sales & Marketing)
- - Verantwortlich für: Marktentwicklung, Kundenakquisition
-
-### 5. Exit-Strategien
-- **Strategische Übernahme**:
- - Enterprise Software Anbieter
- - KI/ML Plattform Betreiber
- - Business Process Automation Unternehmen
-- **IPO-Potenzial**:
- - Ab CHF 50 Mio. ARR
- - Zeitrahmen: 5-7 Jahre
-- **Extraktion aus ValueOn AG**:
- - Vergütung der Aufwände
- - Anrechnung des Mehrwerts für Schlüsselpersonen
- - Beschaffung des notwendigen Kapitals
-
-### 6. Strategische Partnerschaften
-- **Technologie-Partner**:
- - KI-Provider (OpenAI, Anthropic)
- - Cloud-Provider (Azure)
- - Enterprise Software Anbieter
-- **Vertriebspartner**:
- - Systemhäuser
- - Beratungsunternehmen
- - Branchenspezialisten
-- **Forschungspartner**:
- - Universitäten
- - Forschungsinstitute
- - KI-Labore
-
-### 7. Geplante Erweiterungen
-- **Kurzfristig (12 Monate)**:
- - Erweiterte Agent-Typen
- - Branchenspezifische Templates
- - API-Erweiterungen
-- **Mittelfristig (24 Monate)**:
- - Agentenmarktplatz
- - Proprietäre KI-Modelle
- - Erweiterte Analytics
-- **Langfristig (36+ Monate)**:
- - KI-Middleware für Unternehmen
- - Branchenlösungen
- - Internationale Expansion
-
-### 8. Langfristige Vision
-- **Technologische Vision**:
- - Führende Multi-Agent KI-Plattform
- - Standard für Enterprise Workflow Automation
- - Innovationstreiber in der KI-Integration
-- **Marktvision**:
- - Globaler Marktführer in Nischenbereichen
- - Branchenstandard für bestimmte Anwendungsfälle
- - Referenz für KI-gestützte Prozessoptimierung
-- **Geschäftsvision**:
- - Nachhaltiges Wachstum
- - Profitables Geschäftsmodell
- - Führende Position in ausgewählten Märkten
-
-### Fazit Skalierungs- und Zukunftspotenzial
-Die PowerOn AI Platform verfügt über ein solides Skalierungspotenzial sowohl technisch als auch geschäftlich. Die modulare Architektur ermöglicht schnelles Wachstum, während die klare Vision und die strategischen Partnerschaften den langfristigen Erfolg unterstützen. Die Kapitalanforderungen sind realistisch kalkuliert und die Exit-Strategien bieten verschiedene Optionen für die Zukunft.
-
-
-# Exitplan: PowerOn AI Platform als eigenständige AG
-
-## Bewertung und Ausgangssituation
-
-**Aktueller Wert (Juni 2025)**: CHF 500.000
-**Angepasster Gründungswert**: CHF 800.000 (berücksichtigt den strategischen Wert der Produktvision, welche bereits als innerer Wert im Produkt enthalten ist)
-
-## Strukturierung der PowerOn AG
-
-### 1. Aktienstruktur bei Gründung
-
-**Gesamtes Aktienkapital**: 1.000.000 Aktien (Nennwert CHF 0,10)
-**Firmenvaluation bei Gründung**: CHF 800.000
-
-#### Verteilung der initialen Aktien:
-
-- **Patrick**:
- - Eingebrachte Leistung: Entwicklung, technische Expertise und essenzielles Gesamtkonzept
- - **Aktienanteil**: 35% (350.000 Aktien)
-
-- **Dominic**:
- - Eingebrachte Leistung: Netzwerk, Sales & Marketing Expertise und Vision
- - **Aktienanteil**: 15% (150.000 Aktien)
-
-- **ValueOn AG**:
- - Eingebrachte Leistung: Infrastruktur, rechtlicher Rahmen, Arbeitszeit, Übertragung von IP
- - **Aktienanteil**: 25% (250.000 Aktien)
-
-- **Reservierter Anteil für Mitarbeiter-Pool**:
- - **Aktienanteil**: 10% (100.000 Aktien)
-
-- **Reserviert für Investoren (erste Runde)**:
- - **Aktienanteil**: 15% (150.000 Aktien)
-
-### 2. Kapitalbedarfsplanung (18 Monate)
-
-| Kategorie | Betrag (CHF) |
-|-----------|--------------|
-| Entwicklung | 550.000 |
-| Marketing & Sales | 250.000 |
-| Infrastruktur | 100.000 |
-| Betrieb & Support | 200.000 |
-| **Gesamtbedarf** | **1.100.000** |
-
-**Kapitalbeschaffungsstrategie**:
-- **Erste Finanzierungsrunde**: CHF 1.000.000 (für 18 Monate)
-- **Sicherheitspuffer**: CHF 100.000 (aus Umsätzen/zukünftigen Einnahmen)
-
-### 3. Investitionskonditionen
-
-**Pre-Money Bewertung**: CHF 800.000
-**Investitionsvolumen**: CHF 1.000.000
-**Post-Money Bewertung**: CHF 1.800.000
-
-**Aktienkurs für Investoren**:
-- 150.000 bestehende Aktien + 214.285 neue Aktien = 364.285 Aktien für Investoren
-- **Aktienkurs**: CHF 2,75 pro Aktie
-
-**Aktienstruktur nach Investment**:
-- Patrick: 35% → 28,9% (350.000 Aktien)
-- Dominic: 15% → 12,4% (150.000 Aktien)
-- ValueOn AG: 25% → 20,7% (250.000 Aktien)
-- Mitarbeiter-Pool: 10% → 8,3% (100.000 Aktien)
-- Investoren: 29,7% (364.285 Aktien)
-
-## Governance und Organisation
-
-### 1. Schlüsselpositionen in der Organisation
-
-- **CEO**: Gesamtführung des Unternehmens
-- **CTO**: Verantwortlich für technische Strategie und Produktentwicklung
-- **CSO/Vertriebsleitung**: Verantwortlich für Vertrieb und Marktentwicklung
-- **COO**: Operative Leitung und Geschäftsprozesse
-
-Die Besetzung dieser Positionen wird unter Berücksichtigung der Kompetenzen von Patrick, Dominic und möglichen neuen Führungskräften festgelegt. Die Rollen von CEO und COO werden im Rahmen der Unternehmensgründung evaluiert.
-
-### 2. Vergütungsstruktur
-
-- **Führungsebene**: Marktübliche Vergütung zwischen CHF 150.[PHONE_1]ahr je nach Position
-- **Aktienoptionen**: Zusätzliche Aktienoptionen bei Erreichen definierter Unternehmensziele
-
-## Meilensteine und Finanzielle Ziele
-
-### Kritische Meilensteine (18 Monate)
-
-| Zeitpunkt | Meilenstein | KPI |
-|-----------|-------------|-----|
-| Q3 2025 | Ausgründung & Finanzierung | Abschluss der Seed-Runde |
-| Q4 2025 | Markteinführung | 3-5 Pilotprojekte |
-| Q1 2026 | Produktvalidierung | 10+ zahlende Kunden |
-| Q2 2026 | Skalierung | 15+ zahlende Kunden |
-| Q4 2026 | Vorbereitung Serie A | 25+ Kunden, ARR: CHF 0,8 Mio. |
-
-### Umsatz- und Bewertungsprognose
-
-| Jahr | Kunden | ARR (CHF) | Valuation (CHF) | Multiplikator |
-|------|--------|-----------|-----------------|---------------|
-| Ende 2025 | 5-8 | 0,2 Mio. | 1,8 Mio. | 9x ARR |
-| Ende 2026 | 25-30 | 0,8 Mio. | 5,6 Mio. | 7x ARR |
-| Ende 2027 | 80-90 | 2,5 Mio. | 15 Mio. | 6x ARR |
-| Ende 2028 | 150+ | 4,5 Mio. | 27 Mio. | 6x ARR |
-
-## Liquiditätsoptionen
-
-### Mittelfristige Optionen (2-3 Jahre)
-
-1. **Serie A Finanzierung** (Ende 2026):
- - Teilweise Liquidität für Gründer und ValueOn AG (10-15% ihrer Anteile)
- - Zu erwartender Wert: CHF 5-6 Mio.
-
-2. **Strategische Partnerschaft**:
- - Investment durch strategischen Partner mit teilweisem Aktienrückkauf
- - Potenzielle Partner: Enterprise Software-Anbieter, KI-Plattform-Betreiber
-
-### Langfristige Optionen (4-7 Jahre)
-
-1. **Komplette Übernahme**:
- - Erwarteter Exit-Wert 2028: CHF 25-30 Mio.
- - Vollständige Liquidität für alle Anteilseigner
-
-2. **IPO-Vorbereitung**:
- - Bei Erreichen von CHF 10+ Mio. ARR
- - Potenzielle Bewertung: CHF 50-70 Mio.
-
-## Nächste Schritte im Ausgründungsprozess
-
-1. **Rechtliche Strukturierung**:
- - Gründung der PowerOn AG
- - Übertragungsvereinbarungen für geistiges Eigentum
- - Aktionärsvereinbarungen
-
-2. **Finanzierung**:
- - Erstellung eines detaillierten Businessplans
- - Vorbereitung des Investor Pitch Decks
- - Ansprache potenzieller Investoren
-
-3. **Organisationsaufbau**:
- - Definition der Führungsstruktur und Schlüsselpositionen
- - Rekrutierung des Kernteams
- - Aufbau der operativen Prozesse
-
-4. **Markteinführungsstrategie**:
- - Festlegung der Go-to-Market Strategie
- - Identifikation von Pilotprojekten
- - Vorbereitung der Vertriebsunterlagen
diff --git a/test_neutralizer/output/neutralized_customers.csv b/test_neutralizer/output/neutralized_customers.csv
deleted file mode 100644
index 5a55c6e..0000000
--- a/test_neutralizer/output/neutralized_customers.csv
+++ /dev/null
@@ -1,6 +0,0 @@
-id,name,email,phone,address,iban,credit_card,ahv_number
-1,[NAME_3],[EMAIL_8],[PHONE_13],[ADDRESS_18],[IBAN_23],[IBAN_28],[SSN_33]
-2,[NAME_4],[EMAIL_9],[PHONE_14],[ADDRESS_19],[IBAN_24],[IBAN_29],[SSN_34]
-3,[NAME_5],[EMAIL_10],[PHONE_15],[ADDRESS_20],[IBAN_25],[IBAN_30],[SSN_33]
-4,[NAME_6],[EMAIL_11],[PHONE_16],[ADDRESS_21],[IBAN_26],[IBAN_31],[SSN_33]
-5,[NAME_7],[EMAIL_12],[PHONE_17],[ADDRESS_22],[IBAN_27],[IBAN_32],[SSN_35]
diff --git a/test_neutralizer/output/neutralized_cv_lara_meier.txt b/test_neutralizer/output/neutralized_cv_lara_meier.txt
deleted file mode 100644
index 2f05601..0000000
--- a/test_neutralizer/output/neutralized_cv_lara_meier.txt
+++ /dev/null
@@ -1,69 +0,0 @@
-Lebenslauf: Lara Meier
-
-Persönliche Daten:
-Name: Lara Meier
-Geboren: 15.03.[ADDRESS_55]: [ADDRESS_54], [ADDRESS_53]
-Telefon: [PHONE_40] 67
-E-Mail: [EMAIL_52]
-AHV-Nr.: [SSN_34]
-Steuernummer: [SSN_48]
-
-Berufserfahrung:
-2020-2023: Senior Projektmanagerin
-Firma: TechSolutions AG
-Adresse: [ADDRESS_51], [ADDRESS_50]
-UID: [SSN_49]lefon: [PHONE_37] 43
-E-Mail: [EMAIL_47]
-
-In dieser Position leitete ich ein Team von 15 Mitarbeitern und verantwortete die Implementierung von Cloud-Lösungen für internationale Kunden. Meine Hauptaufgaben umfassten:
-- Projektplanung und -steuerung mit einem Budget von CHF 2.5 Mio.
-- Kundenbetreuung und Stakeholder-Management
-- Teamführung und Personalentwicklung
-- Qualitätssicherung und Risikomanagement
-
-2015-2020: Projektmanagerin
-Firma: Digital Systems GmbH
-Adresse: [ADDRESS_46], [ADDRESS_45]
-UID: [SSN_44]lefon: [PHONE_42] 90
-E-Mail: [EMAIL_41]
-
-Als Projektmanagerin verantwortete ich die erfolgreiche Durchführung von Digitalisierungsprojekten. Meine Leistungen:
-- Implementierung von ERP-Systemen
-- Optimierung von Geschäftsprozessen
-- Schulung von Endbenutzern
-- Erstellung von Projektdokumentation
-
-Ausbildung:
-2010-2015: ETH Zürich
-Studiengang: Informatik
-Matrikelnummer: 12-345-678
-Abschluss: Master of Science in Computer Science
-Thesis: "Künstliche Intelligenz in der Prozessautomatisierung"
-
-2005-2010: Kantonsschule Zürich
-Abschluss: Eidgenössische Maturität
-Schwerpunkt: Mathematik und Naturwissenschaften
-
-Sprachen:
-Deutsch (Muttersprache)
-Englisch (C2)
-Französisch (B2)
-Italienisch (B1)
-
-Zertifizierungen:
-PMP (Project Management Professional)
-ITIL v4 Foundation
-AWS Certified Solutions Architect
-Scrum Master (PSM I)
-
-Referenzen:
-Prof. Dr. Hans Müller
-ETH Zürich
-Department of Computer Science
-Telefon: [PHONE_40] 68
-E-Mail: [EMAIL_39]
-
-[NAME_38] AG
-CTO
-Telefon: [PHONE_37] 44
-E-Mail: [EMAIL_36]
\ No newline at end of file
diff --git a/test_neutralizer/output/neutralized_employees.csv b/test_neutralizer/output/neutralized_employees.csv
deleted file mode 100644
index e77450c..0000000
--- a/test_neutralizer/output/neutralized_employees.csv
+++ /dev/null
@@ -1,20 +0,0 @@
-employee_id,first_name,last_name,email,phone,department,office_address,uid_number,bank_account
-E001,[NAME_56],[NAME_61],[EMAIL_66],[PHONE_71],IT,[ADDRESS_76],,[IBAN_23]
-E002,[NAME_57],[NAME_62],[EMAIL_67],[PHONE_72],HR,[ADDRESS_77],CHE-123.456.789,[IBAN_81]
-E003,[NAME_58],[NAME_63],[EMAIL_68],[PHONE_73],Finance,[ADDRESS_78],,[IBAN_25]
-E004,[NAME_59],[NAME_64],[EMAIL_69],[PHONE_74],Marketing,[ADDRESS_79],,[IBAN_26]
-E005,[NAME_60],[NAME_65],[EMAIL_70],[PHONE_75],Sales,[ADDRESS_80],,[IBAN_82]
-
-
-
-[REINTEGRATE]
-
-The employee database has 9 attributes,
-uid_number and bank_account is not defined for all records.
-
-
-
-
-
-
-
diff --git a/test_neutralizer/output/neutralized_english.txt b/test_neutralizer/output/neutralized_english.txt
deleted file mode 100644
index 1e103ba..0000000
--- a/test_neutralizer/output/neutralized_english.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-Dear Mr. Smith,
-
-Thank you for your email to [EMAIL_85].
-Your contact details have been recorded:
-Phone: [PHONE_17]RESS_84]: 123 High Street, London SW1A 1AA
-
-Your IBAN: GB29 NWBK 6016 1331 9268 19
-Credit Card: 4532 1234 5678 [ADDRESS_83] regards,
-John Doe
\ No newline at end of file
diff --git a/test_neutralizer/output/neutralized_example.json b/test_neutralizer/output/neutralized_example.json
deleted file mode 100644
index bf04ee9..0000000
--- a/test_neutralizer/output/neutralized_example.json
+++ /dev/null
@@ -1,54 +0,0 @@
-{
- "customer": {
- "personal_info": {
- "name": "[NAME_3]",
- "email": "[EMAIL_86]",
- "phone": "[PHONE_87]",
- "address": {
- "street": "Hauptstra\u00dfe 123",
- "city": "M\u00fcnchen",
- "zip": "80331",
- "country": "Deutschland"
- }
- },
- "order_history": [
- {
- "order_id": "ORD-2024-001",
- "date": "[DATE_88]",
- "items": [
- {
- "product": "Laptop",
- "price": 1299.99,
- "payment": {
- "method": "credit_card",
- "card_number": "[IBAN_89]",
- "iban": "[IBAN_23]"
- }
- }
- ]
- }
- ],
- "preferences": {
- "language": "de",
- "newsletter": true,
- "marketing_consent": {
- "email": "[EMAIL_86]",
- "phone": "[PHONE_87]"
- }
- }
- },
- "company": {
- "name": "[NAME_90]",
- "contact": {
- "manager": "NAME_91",
- "email": "[EMAIL_92]",
- "phone": "[PHONE_71]",
- "address": {
- "street": "Technologiestra\u00dfe 45",
- "city": "Berlin",
- "zip": "10115",
- "country": "Deutschland"
- }
- }
- }
-}
\ No newline at end of file
diff --git a/test_neutralizer/output/neutralized_example.xml b/test_neutralizer/output/neutralized_example.xml
deleted file mode 100644
index a1d7e9d..0000000
--- a/test_neutralizer/output/neutralized_example.xml
+++ /dev/null
@@ -1,78 +0,0 @@
-
-
-
-
- [NAME_93]
- [EMAIL_94]
- [PHONE_13]
-
- Musterstraße 42
- Hamburg
- 20095
- Deutschland
-
-
-
- IT
- Senior Developer
- 75000
-
- [IBAN_23]
- COBADEFFXXX
-
-
-
-
-
- Maria Schmidt
- [EMAIL_95]
- [PHONE_96]
-
- Bahnhofstraße 15
- Frankfurt
- 60329
- Deutschland
-
-
-
- HR
- HR Manager
- 65000
-
- [PHONE_97]
- COBADEFFXXX
-
-
-
-
-
-
- Digital Transformation
- [NAME_93]
- 150000
-
- [NAME_93]
- Maria Schmidt
-
-
-
-
- Tech Innovations GmbH
-
- Innovationsstraße 1
- München
- 80331
- Deutschland
-
-
- [EMAIL_98]
- [PHONE_71]
- [PHONE_99]
-
-
- [PHONE_100]
- COBADEFFXXX
- DE123456789
-
-
-
\ No newline at end of file
diff --git a/test_neutralizer/output/neutralized_french.txt b/test_neutralizer/output/neutralized_french.txt
deleted file mode 100644
index f2b8129..0000000
--- a/test_neutralizer/output/neutralized_french.txt
+++ /dev/null
@@ -1,10 +0,0 @@
-Bonjour Madame Dupont,
-
-Merci pour votre email à [EMAIL_104].
-Vos coordonnées ont été enregistrées:
-Téléphone: [PHONE_103] 67 89
-Adresse: 123 Rue de Paris, 75001 Paris
-
-Votre IBAN: FR76 3000 6000 [PHONE_102]9
-Carte de crédit: 4532 1234 5678 [ADDRESS_101],
-Jean Martin
\ No newline at end of file
diff --git a/test_neutralizer/output/neutralized_german.txt b/test_neutralizer/output/neutralized_german.txt
deleted file mode 100644
index 966aa0a..0000000
--- a/test_neutralizer/output/neutralized_german.txt
+++ /dev/null
@@ -1,24 +0,0 @@
-Sehr geehrte Frau [NAME_12],
-
-vielen Dank für Ihre E-Mail an [EMAIL_8].
-Ihre Telefonnummer [PHONE_108]urde in unserem System hinterlegt.
-Die Rechnung wird an folgende Adresse gesendet:
-Musterstraße 123, 12345 Berlin
-
-Ihre IBAN: DE89 3704 [PHONE_107]Kreditkarte: 4532 1234 5678 [ADDRESS_105] freundlichen Grüßen
-Max Mustermann
-
-
-
-[REINTEGRATE]
-
-Brief von Frau Müller zur
-Rechnungsnachfrage an den Helpdesk
-
-
-
-
-
-
-
-
diff --git a/test_neutralizer/output/neutralized_geschaeftsstrategie.txt b/test_neutralizer/output/neutralized_geschaeftsstrategie.txt
deleted file mode 100644
index 70d7532..0000000
--- a/test_neutralizer/output/neutralized_geschaeftsstrategie.txt
+++ /dev/null
@@ -1,54 +0,0 @@
-Geschäftsstrategie 2024-[ADDRESS_112] AG
-
-Unternehmensdaten:
-Firmenname: TechSolutions AG
-UID: [SSN_49]resse: [ADDRESS_51], [ADDRESS_50]
-Telefon: [PHONE_37] 43
-E-Mail: [EMAIL_111]
-Website: www.techsolutions.ch
-
-Geschäftsführung:
-CEO: [NAME_93]
-E-Mail: [EMAIL_110]
-Telefon: [PHONE_37] 44
-
-CTO: Dr. Sarah Müller
-E-Mail: [EMAIL_109]
-Telefon: [PHONE_37] 45
-
-Finanzdaten:
-Bank: UBS AG
-IBAN: CH93 0076 7000 E529 0767 9
-BIC: UBSWCHZH80A
-
-Strategische Ziele:
-1. Marktpositionierung
- - Marktanteil in der Schweiz auf 25% steigern
- - Expansion in DACH-Region
- - Neue Zielgruppe: KMU
-
-2. Produktentwicklung
- - Cloud-Lösung für KMU
- - KI-basierte Automatisierung
- - Mobile App für Kunden
-
-3. Personalentwicklung
- - Team auf 50 Mitarbeiter ausbauen
- - Neue Standorte: Bern und Genf
- - Fokus auf Diversity & Inclusion
-
-4. Nachhaltigkeit
- - CO2-Neutralität bis 2025
- - Green IT Zertifizierung
- - Nachhaltige Lieferkette
-
-Budgetplanung:
-2024: CHF 5.2 Mio.
-2025: CHF 6.8 Mio.
-2026: CHF 8.5 Mio.
-
-Risikoanalyse:
-- Marktrisiken
-- Technologische Risiken
-- Personelle Risiken
-- Finanzielle Risiken
\ No newline at end of file
diff --git a/test_neutralizer/output/neutralized_geschäfte.csv b/test_neutralizer/output/neutralized_geschäfte.csv
deleted file mode 100644
index ba99f08..0000000
--- a/test_neutralizer/output/neutralized_geschäfte.csv
+++ /dev/null
@@ -1,6 +0,0 @@
-geschäft_id,datum,kundenname,kundenemail,betrag,zahlungsmethode,zahlungsdetails,lieferadresse
-2024-03-15,[DATE_113],[NAME_118],[EMAIL_123],50,IBAN,[IBAN_23],[ADDRESS_132]
-2024-03-15,[DATE_114],[NAME_119],[EMAIL_124],75,IBAN,[IBAN_128],[ADDRESS_133]
-2024-03-15,[DATE_115],[NAME_120],[EMAIL_125],25,IBAN,[IBAN_129],[ADDRESS_134]
-2024-03-15,[DATE_116],[NAME_121],[EMAIL_126],0,IBAN,[IBAN_130],[ADDRESS_135]
-2024-03-15,[DATE_117],[NAME_122],[EMAIL_127],50,IBAN,[IBAN_131],[ADDRESS_136]
diff --git a/test_neutralizer/output/neutralized_italian.txt b/test_neutralizer/output/neutralized_italian.txt
deleted file mode 100644
index 1f5fd76..0000000
--- a/test_neutralizer/output/neutralized_italian.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-Buongiorno Signora Rossi,
-
-Grazie per la sua email a [EMAIL_141].
-Grazie per la sua email a [EMAIL_141] .
-I suoi dati di contatto sono stati registrati:
-Telefono: [PHONE_16]S_139]: Via Roma 123, 20100 Milano
-
-Il suo IBAN: IT60 X054 2811 1010 [PHONE_138]arta di credito: 4532 1234 5678 [ADDRESS_137] saluti,
-Marco Bianchi
\ No newline at end of file
diff --git a/test_neutralizer/output/neutralized_kunden.csv b/test_neutralizer/output/neutralized_kunden.csv
deleted file mode 100644
index d3d8962..0000000
--- a/test_neutralizer/output/neutralized_kunden.csv
+++ /dev/null
@@ -1,6 +0,0 @@
-kunden_id,vorname,nachname,email,telefon,adresse,iban,kreditkarte,steuernummer
-K001,[NAME_142],[NAME_146],[EMAIL_149],[PHONE_13],[ADDRESS_18],[IBAN_23],[IBAN_28],[SSN_162]
-K002,[NAME_143],[NAME_62],[EMAIL_150],[PHONE_154],[ADDRESS_158],[IBAN_128],[IBAN_29],[SSN_163]
-K003,[NAME_57],[NAME_61],[EMAIL_151],[PHONE_155],[ADDRESS_159],[IBAN_129],[IBAN_30],[SSN_164]
-K004,[NAME_144],[NAME_147],[EMAIL_152],[PHONE_156],[ADDRESS_160],[IBAN_130],[IBAN_31],[SSN_165]
-K005,[NAME_145],[NAME_148],[EMAIL_153],[PHONE_157],[ADDRESS_161],[IBAN_131],[IBAN_32],[SSN_166]
diff --git a/test_neutralizer/output/neutralized_mitarbeiter.csv b/test_neutralizer/output/neutralized_mitarbeiter.csv
deleted file mode 100644
index 0778d1b..0000000
--- a/test_neutralizer/output/neutralized_mitarbeiter.csv
+++ /dev/null
@@ -1,6 +0,0 @@
-mitarbeiter_id,vorname,nachname,email,telefon,abteilung,büroadresse,steuernummer,sozialversicherungsnummer
-M001,[NAME_167],[NAME_172],[EMAIL_177],[PHONE_182],IT,[ADDRESS_187],[SSN_162],[SSN_192]
-M002,[NAME_168],[NAME_173],[EMAIL_178],[PHONE_183],HR,[ADDRESS_188],[SSN_163],[SSN_193]
-M003,[NAME_169],[NAME_174],[EMAIL_179],[PHONE_184],Finanzen,[ADDRESS_189],[SSN_164],[SSN_194]
-M004,[NAME_170],[NAME_175],[EMAIL_180],[PHONE_185],Marketing,[ADDRESS_190],[SSN_165],[SSN_195]
-M005,[NAME_171],[NAME_176],[EMAIL_181],[PHONE_186],Vertrieb,[ADDRESS_161],[SSN_191],[SSN_196]
diff --git a/test_neutralizer/output/neutralized_swiss.txt b/test_neutralizer/output/neutralized_swiss.txt
deleted file mode 100644
index 40f93f2..0000000
--- a/test_neutralizer/output/neutralized_swiss.txt
+++ /dev/null
@@ -1,10 +0,0 @@
-Guten Tag [NAME_200] für Ihre Anfrage an [EMAIL_199].
-Ihre Kontaktdaten wurden wie folgt erfasst:
-Telefon: [PHONE_40] 67
-Adresse: [ADDRESS_198], [ADDRESS_53]
-
-Ihre AHV-Nummer: [SSN_34]
-UID-Nummer: [SSN_49]nkkonto: [PHONE_197]7]-8
-
-Mit freundlichen Grüßen
-Peter Muster
\ No newline at end of file
diff --git a/test_neutralizer/output/neutralized_transactions.csv b/test_neutralizer/output/neutralized_transactions.csv
deleted file mode 100644
index 2561556..0000000
--- a/test_neutralizer/output/neutralized_transactions.csv
+++ /dev/null
@@ -1,6 +0,0 @@
-transaction_id,date,customer_name,customer_email,amount,payment_method,payment_details,shipping_address
-T001,[DATE_88],[DATE_113],[NAME_118],1250.5,IBAN,[IBAN_23],[ADDRESS_132]
-T002,[DATE_88],[DATE_114],[EMAIL_201],890.75,AHV,[SSN_34],[ADDRESS_205]
-T003,[DATE_88],[DATE_115],[EMAIL_202],2340.25,IBAN,[IBAN_25],[ADDRESS_206]
-T004,[DATE_88],[DATE_116],[EMAIL_203],1750.0,IBAN,[IBAN_26],[ADDRESS_207]
-T005,[DATE_88],[DATE_117],[EMAIL_204],3200.5,IBAN,[IBAN_27],[ADDRESS_208]
diff --git a/test_neutralizer/patterns.py b/test_neutralizer/patterns.py
deleted file mode 100644
index 4cfbed9..0000000
--- a/test_neutralizer/patterns.py
+++ /dev/null
@@ -1,402 +0,0 @@
-"""
-Pattern definitions for data anonymization
-Separates header patterns from data patterns
-"""
-
-from dataclasses import dataclass
-from typing import List, Optional, Tuple
-import re
-
-@dataclass
-class Pattern:
- """Base class for patterns"""
- name: str
- patterns: List[str]
- replacement_template: str
-
-class HeaderPatterns:
- """Patterns for identifying sensitive data in headers"""
- patterns = [
- # Name patterns
- Pattern(
- name="name",
- patterns=[
- # Simple variations
- r'\b(?:name|first[-_\s]*name|last[-_\s]*name|full[-_\s]*name)\b',
- r'\b(?:customer[-_\s]*name|client[-_\s]*name|user[-_\s]*name)\b',
- r'\b(?:given[-_\s]*name|family[-_\s]*name|surname)\b',
- # German variations
- r'\b(?:vorname|nachname|vollständiger[-_\s]*name|name)\b',
- r'\b(?:kunden[-_\s]*name|kunde[-_\s]*name|benutzer[-_\s]*name)\b',
- # French variations
- r'\b(?:prénom|nom|nom[-_\s]*complet)\b',
- r'\b(?:nom[-_\s]*du[-_\s]*client|nom[-_\s]*d\'utilisateur)\b',
- # Italian variations
- r'\b(?:nome|cognome|nome[-_\s]*completo)\b',
- r'\b(?:nome[-_\s]*cliente|nome[-_\s]*utente)\b',
- # Common variations
- r'\b(?:nom|name|nome|naam)\b'
- ],
- replacement_template="[NAME_{}]"
- ),
-
- # Email patterns
- Pattern(
- name="email",
- patterns=[
- # Simple variations - only labels
- r'\b(?:email|e[-_\s]*mail|mail)\s*:?\b',
- r'\b(?:contact[-_\s]*email|user[-_\s]*email|client[-_\s]*email)\s*:?\b',
- r'\b(?:customer[-_\s]*email|customer[-_\s]*mail|customer[-_\s]*e[-_\s]*mail)\s*:?\b',
- # German variations - only labels
- r'\b(?:e[-_\s]*mail|e[-_\s]*post|mail[-_\s]*adresse)\s*:?\b',
- r'\b(?:kontakt[-_\s]*email|benutzer[-_\s]*email|kunden[-_\s]*email)\s*:?\b',
- r'\b(?:kunden[-_\s]*mail|kunden[-_\s]*e[-_\s]*mail|kunden[-_\s]*e[-_\s]*post)\s*:?\b',
- # French variations - only labels
- r'\b(?:courriel|e[-_\s]*mail|adresse[-_\s]*e[-_\s]*mail)\s*:?\b',
- r'\b(?:courriel[-_\s]*de[-_\s]*contact|e[-_\s]*mail[-_\s]*client)\s*:?\b',
- r'\b(?:courriel[-_\s]*client|courriel[-_\s]*utilisateur|mail[-_\s]*client)\s*:?\b',
- # Italian variations - only labels
- r'\b(?:posta[-_\s]*elettronica|e[-_\s]*mail|indirizzo[-_\s]*e[-_\s]*mail)\s*:?\b',
- r'\b(?:email[-_\s]*cliente|email[-_\s]*utente)\s*:?\b',
- r'\b(?:mail[-_\s]*cliente|mail[-_\s]*utente|posta[-_\s]*cliente)\s*:?\b'
- ],
- replacement_template="[EMAIL_{}]"
- ),
-
- # Phone patterns
- Pattern(
- name="phone",
- patterns=[
- # Simple variations
- r'\b(?:phone|tel|telephone|mobile)\b',
- r'\b(?:contact[-_\s]*number|phone[-_\s]*number|tel[-_\s]*number)\b',
- # German variations
- r'\b(?:telefon|mobil|handy|telefon[-_\s]*nummer)\b',
- r'\b(?:kontakt[-_\s]*nummer|telefon[-_\s]*nummer|tel[-_\s]*nummer)\b',
- # French variations
- r'\b(?:téléphone|portable|mobile|numéro[-_\s]*de[-_\s]*téléphone)\b',
- r'\b(?:numéro[-_\s]*de[-_\s]*contact|tél[-_\s]*fixe|tél[-_\s]*mobile)\b',
- # Italian variations
- r'\b(?:telefono|cellulare|mobile|numero[-_\s]*di[-_\s]*telefono)\b',
- r'\b(?:numero[-_\s]*di[-_\s]*contatto|tel[-_\s]*fisso|tel[-_\s]*mobile)\b'
- ],
- replacement_template="[PHONE_{}]"
- ),
-
- # IBAN patterns
- Pattern(
- name="iban",
- patterns=[
- # Simple variations
- r'\b(?:iban|bank[-_\s]*account|account[-_\s]*number)\b',
- r'\b(?:bank[-_\s]*details|account[-_\s]*details|banking[-_\s]*info)\b',
- # German variations
- r'\b(?:iban|bank[-_\s]*konto|konto[-_\s]*nummer)\b',
- r'\b(?:bank[-_\s]*verbindung|konto[-_\s]*verbindung|bank[-_\s]*daten)\b',
- # French variations
- r'\b(?:iban|compte[-_\s]*bancaire|numéro[-_\s]*de[-_\s]*compte)\b',
- r'\b(?:coordonnées[-_\s]*bancaires|détails[-_\s]*bancaires)\b',
- # Credit card variations in French
- r'\b(?:carte[-_\s]*de[-_\s]*credit|carte[-_\s]*credit|numero[-_\s]*carte[-_\s]*credit)\b',
- r'\b(?:carte[-_\s]*bancaire|carte[-_\s]*de[-_\s]*paiement)\b',
- r'\b(?:carte[-_\s]*de[-_\s]*crédit|carte[-_\s]*crédit|numéro[-_\s]*carte[-_\s]*crédit)\b',
- r'\b(?:carte[-_\s]*de[-_\s]*débit|carte[-_\s]*débit|numéro[-_\s]*carte[-_\s]*débit)\b',
- # Italian variations
- r'\b(?:iban|conto[-_\s]*bancario|numero[-_\s]*di[-_\s]*conto)\b',
- r'\b(?:coordinate[-_\s]*bancarie|dettagli[-_\s]*bancari)\b',
- # Common variations
- r'\b(?:bankkonto|bank[-_\s]*konto|conto[-_\s]*di[-_\s]*banca)\b',
- # Credit card variations
- r'\b(?:credit[-_\s]*card|credit[-_\s]*card[-_\s]*number|credit[-_\s]*card[-_\s]*no)\b',
- r'\b(?:credit[-_\s]*card[-_\s]*nr|credit[-_\s]*card[-_\s]*num)\b',
- r'\b(?:credit[-_\s]*card[-_\s]*id|credit[-_\s]*card[-_\s]*code)\b',
- r'\b(?:credit[-_\s]*card[-_\s]*reference|credit[-_\s]*card[-_\s]*ref)\b',
- r'\b(?:credit[-_\s]*card[-_\s]*details|credit[-_\s]*card[-_\s]*info)\b',
- r'\b(?:credit[-_\s]*card[-_\s]*data|credit[-_\s]*card[-_\s]*account)\b',
- # Credit card variations in other languages
- r'\b(?:kredit[-_\s]*karte|kreditkarte|kredit[-_\s]*karten[-_\s]*nummer)\b',
- r'\b(?:carta[-_\s]*di[-_\s]*credito|carta[-_\s]*credito|numero[-_\s]*carta[-_\s]*credito)\b',
- # Payment variations
- r'\b(?:payment[-_\s]*details|payment[-_\s]*info|payment[-_\s]*data)\b',
- r'\b(?:zahlungs[-_\s]*details|zahlungs[-_\s]*informationen|zahlungs[-_\s]*daten)\b',
- r'\b(?:détails[-_\s]*de[-_\s]*paiement|informations[-_\s]*de[-_\s]*paiement)\b',
- r'\b(?:dettagli[-_\s]*di[-_\s]*pagamento|informazioni[-_\s]*di[-_\s]*pagamento)\b',
- # Common credit card abbreviations
- r'\b(?:cc[-_\s]*number|cc[-_\s]*no|cc[-_\s]*nr)\b',
- r'\b(?:cc[-_\s]*num|cc[-_\s]*id|cc[-_\s]*code)\b',
- r'\b(?:cc[-_\s]*ref|cc[-_\s]*details|cc[-_\s]*info)\b',
- r'\b(?:cc[-_\s]*data|cc[-_\s]*account)\b',
- # Simple credit card
- r'\b(?:credit[-_\s]*card|credit[-_\s]*card[-_\s]*number)\b',
- # Additional credit card variations
- r'\b(?:card[-_\s]*number|card[-_\s]*no|card[-_\s]*nr)\b',
- r'\b(?:card[-_\s]*num|card[-_\s]*id|card[-_\s]*code)\b',
- r'\b(?:card[-_\s]*ref|card[-_\s]*details|card[-_\s]*info)\b',
- r'\b(?:card[-_\s]*data|card[-_\s]*account)\b'
- ],
- replacement_template="[IBAN_{}]"
- ),
-
- # Address patterns
- Pattern(
- name="address",
- patterns=[
- # English variations
- r'\b(?:address|street[-_\s]*address|mailing[-_\s]*address)\b',
- r'\b(?:home[-_\s]*address|work[-_\s]*address|billing[-_\s]*address)\b',
- r'\b(?:.*address.*)\b', # Match any text containing "address"
- # German variations
- r'\b(?:adresse|strassen[-_\s]*adresse|post[-_\s]*adresse)\b',
- r'\b(?:wohn[-_\s]*adresse|geschäfts[-_\s]*adresse|rechnungs[-_\s]*adresse)\b',
- r'\b(?:.*adresse.*)\b', # Match any text containing "adresse"
- # French variations
- r'\b(?:adresse|adresse[-_\s]*postale|adresse[-_\s]*de[-_\s]*livraison)\b',
- r'\b(?:adresse[-_\s]*personnelle|adresse[-_\s]*professionnelle)\b',
- r'\b(?:.*adresse.*)\b', # Match any text containing "adresse"
- # Italian variations
- r'\b(?:indirizzo|indirizzo[-_\s]*postale|indirizzo[-_\s]*di[-_\s]*consegna)\b',
- r'\b(?:indirizzo[-_\s]*personale|indirizzo[-_\s]*professionale)\b',
- r'\b(?:.*indirizzo.*)\b', # Match any text containing "indirizzo"
- # Common variations
- r'\b(?:location|place|residence|domicile)\b',
- r'\b(?:standort|ort|wohnort|domizil)\b',
- r'\b(?:lieu|emplacement|résidence|domicile)\b',
- r'\b(?:luogo|posizione|residenza|domicilio)\b'
- ],
- replacement_template="[ADDRESS_{}]"
- ),
-
- # Date patterns
- Pattern(
- name="date",
- patterns=[
- # English variations
- r'\b(?:date|birth[-_\s]*date|date[-_\s]*of[-_\s]*birth)\b',
- r'\b(?:dob|birthday|anniversary)\b',
- # German variations
- r'\b(?:datum|geburt[-_\s]*datum|geboren[-_\s]*am)\b',
- r'\b(?:geburtstag|jubiläum|feier[-_\s]*tag)\b',
- r'\b(?:geboren|geb\.|geboren[-_\s]*am)\b',
- # French variations
- r'\b(?:date|date[-_\s]*de[-_\s]*naissance|né[-_\s]*le)\b',
- r'\b(?:anniversaire|date[-_\s]*anniversaire)\b',
- r'\b(?:né|née|né[-_\s]*le)\b',
- # Italian variations
- r'\b(?:data|data[-_\s]*di[-_\s]*nascita|nato[-_\s]*il)\b',
- r'\b(?:compleanno|anniversario)\b',
- r'\b(?:nato|nata|nato[-_\s]*il)\b',
- # Common variations
- r'\b(?:birth|born|geboren|né|nato)\b'
- ],
- replacement_template="[DATE_{}]"
- ),
-
- # SSN patterns
- Pattern(
- name="ssn",
- patterns=[
- # English variations
- r'\b(?:ssn|social[-_\s]*security[-_\s]*number|tax[-_\s]*id)\b',
- r'\b(?:tax[-_\s]*identification|national[-_\s]*id)\b',
- # German variations
- r'\b(?:ahv[-_\s]*nummer|sozial[-_\s]*versicherungs[-_\s]*nummer)\b',
- r'\b(?:steuer[-_\s]*nummer|steuer[-_\s]*id|svn)\b',
- r'\b(?:ahv[-_\s]*nr|ahv[-_\s]*no|ahv[-_\s]*num)\b',
- # French variations
- r'\b(?:numéro[-_\s]*avs|numéro[-_\s]*de[-_\s]*sécurité[-_\s]*sociale)\b',
- r'\b(?:numéro[-_\s]*fiscal|numéro[-_\s]*d\'identification)\b',
- # Italian variations
- r'\b(?:numero[-_\s]*avs|numero[-_\s]*di[-_\s]*sicurezza[-_\s]*sociale)\b',
- r'\b(?:numero[-_\s]*fiscale|codice[-_\s]*fiscale)\b',
- # Common variations
- r'\b(?:ahv|svn|nss|avs)\b',
- # Additional AHV variations
- r'\b(?:ahv_nummer|ahvnummer|ahv-nummer|ahv_number)\b',
- r'\b(?:ahv[-_\s]*nr|ahv[-_\s]*no|ahv[-_\s]*num)\b',
- r'\b(?:ahv[-_\s]*number|ahv[-_\s]*number)\b',
- r'\b(?:ahv[-_\s]*id|ahv[-_\s]*id)\b',
- r'\b(?:ahv[-_\s]*code|ahv[-_\s]*code)\b',
- r'\b(?:ahv[-_\s]*reference|ahv[-_\s]*reference)\b',
- r'\b(?:ahv[-_\s]*reference[-_\s]*number|ahv[-_\s]*reference[-_\s]*number)\b',
- r'\b(?:ahv[-_\s]*reference[-_\s]*no|ahv[-_\s]*reference[-_\s]*no)\b',
- r'\b(?:ahv[-_\s]*reference[-_\s]*nr|ahv[-_\s]*reference[-_\s]*nr)\b',
- r'\b(?:ahv[-_\s]*reference[-_\s]*num|ahv[-_\s]*reference[-_\s]*num)\b',
- r'\b(?:ahv[-_\s]*reference[-_\s]*id|ahv[-_\s]*reference[-_\s]*id)\b',
- r'\b(?:ahv[-_\s]*reference[-_\s]*code|ahv[-_\s]*reference[-_\s]*code)\b'
- ],
- replacement_template="[SSN_{}]"
- )
- ]
-
-class DataPatterns:
- """Patterns for identifying sensitive data in content"""
- patterns = [
- # Name patterns
- Pattern(
- name="name",
- patterns=[
- # Person names with titles and academic degrees
- r'\b(?:Dr\.|Prof\.|PhD\.?|MD\.?|Herr|Frau|Mr\.|Mrs\.|Ms\.|Monsieur|Madame|Signore|Signora)\s+[A-Z][a-z]{2,}(?:\s+[A-Za-z]{2,}){1,2}\b'
- ],
- replacement_template="[NAME_{}]"
- ),
-
- # Email pattern for plain text
- Pattern(
- name="email",
- patterns=[
- # Basic email pattern
- r'[A-Za-z0-9._%+-]+@[A-Za-z0-9-]+(?:\.[A-Za-z0-9-]+)*'
- ],
- replacement_template="[EMAIL_{}]"
- ),
-
- # Phone patterns
- Pattern(
- name="phone",
- patterns=[
- # International format
- r'\+\d{1,3}[-.\s]?\d{1,4}[-.\s]?\d{1,4}[-.\s]?\d{1,9}\b',
- # Swiss format
- r'\b(?:0\d{1,2}|0041\d{1,2})[-.\s]?\d{3}[-.\s]?\d{2}[-.\s]?\d{2}\b',
- # German format
- r'\b(?:0\d{1,4}|0049\d{1,4})[-.\s]?\d{3,}[-.\s]?\d{3,}\b',
- # French format
- r'\b(?:0\d{1,2}|0033\d{1,2})[-.\s]?\d{1,2}[-.\s]?\d{2}[-.\s]?\d{2}[-.\s]?\d{2}\b',
- # Italian format
- r'\b(?:0\d{1,3}|0039\d{1,3})[-.\s]?\d{3,}[-.\s]?\d{3,}\b',
- # Mobile numbers
- r'\b(?:07|00417|004917|00337|00397)\d{8,9}\b',
- # Emergency numbers
- r'\b(?:112|911|118|117|144|1414)\b'
- ],
- replacement_template="[PHONE_{}]"
- ),
-
- # IBAN patterns
- Pattern(
- name="iban",
- patterns=[
- r'\b(?:CH|DE|FR|IT)\d{2}\s?(?:\d{4}\s?){5}\d{2}\b',
- r'\b(?:CH|DE|FR|IT)\d{2}(?:\d{4}){5}\d{2}\b'
- ],
- replacement_template="[IBAN_{}]"
- ),
-
- # Address patterns
- Pattern(
- name="address",
- patterns=[
- r'\b(?:[A-Za-zäöüßÄÖÜ]+(?:strasse|str\.|gasse|weg|platz|allee|boulevard|avenue|via|strada|rue|chemin|route))\s+\d{1,4}(?:[a-z])?\b',
- r'\b\d{4}\s+[A-Za-zäöüßÄÖÜ]+\b'
- ],
- replacement_template="[ADDRESS_{}]"
- ),
-
- # Date patterns
- Pattern(
- name="date",
- patterns=[
- # Specific date formats with context
- r'\b(?:geboren|birth|né|nato)\s+am\s+[0-9]{2}[./-][0-9]{2}[./-][0-9]{4}\b', # Birth dates
- r'\b(?:geboren|birth|né|nato)\s+am\s+[0-9]{4}[./-][0-9]{2}[./-][0-9]{2}\b', # Birth dates
- r'\b(?:vertrag|contract|contrat|contratto)\s+vom\s+[0-9]{2}[./-][0-9]{2}[./-][0-9]{4}\b', # Contract dates
- r'\b(?:vertrag|contract|contrat|contratto)\s+vom\s+[0-9]{4}[./-][0-9]{2}[./-][0-9]{2}\b', # Contract dates
- # Specific date formats with month names
- r'\b(?:geboren|birth|né|nato)\s+am\s+(?:jan|feb|mar|apr|mai|jun|jul|aug|sep|okt|nov|dez|januar|februar|märz|april|mai|juni|juli|august|september|oktober|november|dezember)[a-z]*\s+\d{4}\b', # Birth dates with month
- r'\b(?:vertrag|contract|contrat|contratto)\s+vom\s+(?:jan|feb|mar|apr|mai|jun|jul|aug|sep|okt|nov|dez|januar|februar|märz|april|mai|juni|juli|august|september|oktober|november|dezember)[a-z]*\s+\d{4}\b' # Contract dates with month
- ],
- replacement_template="[DATE_{}]"
- ),
-
- # SSN patterns
- Pattern(
- name="ssn",
- patterns=[
- r'\b(?:756|757|758|759)\.\d{4}\.\d{4}\.\d{2}\b', # Swiss AHV
- r'\b(?:CHE|DE|FR|IT)-\d{3}\.\d{3}\.\d{3}\b', # Company IDs
- r'\b\d{3}\.\d{3}\.\d{3}\b' # Generic SSN format
- ],
- replacement_template="[SSN_{}]"
- )
- ]
-
-class TextTablePatterns:
- """Patterns for identifying table-like structures in text"""
-
- @staticmethod
- def get_patterns() -> List[Tuple[str, str]]:
- return [
- # key: value pattern (with optional whitespace)
- (r'^([^:]+):\s*(.+)$', ':'),
- # key = value pattern (with optional whitespace)
- (r'^([^=]+)=\s*(.+)$', '='),
- # key = value pattern (with required whitespace)
- (r'^([^=]+)\s+=\s+(.+)$', '='),
- # key: value pattern (with required whitespace)
- (r'^([^:]+)\s+:\s+(.+)$', ':'),
- ]
-
- @staticmethod
- def is_table_line(line: str) -> bool:
- """Check if a line matches any table pattern"""
- patterns = TextTablePatterns.get_patterns()
- return any(re.match(pattern[0], line.strip()) for pattern in patterns)
-
- @staticmethod
- def extract_key_value(line: str) -> Optional[Tuple[str, str]]:
- """Extract key and value from a table line"""
- patterns = TextTablePatterns.get_patterns()
- for pattern, separator in patterns:
- match = re.match(pattern, line.strip())
- if match:
- key = match.group(1).strip()
- value = match.group(2).strip()
- return key, value
- return None
-
-def get_pattern_for_header(header: str, patterns: List[Pattern]) -> Optional[Pattern]:
- """
- Find matching pattern for a header
-
- Args:
- header: The header to check
- patterns: List of patterns to check against
-
- Returns:
- Optional[Pattern]: Matching pattern or None
- """
- if not header:
- return None
-
- header = header.lower().strip()
-
- for pattern in patterns:
- for p in pattern.patterns:
- if re.search(p, header, re.IGNORECASE):
- return pattern
- return None
-
-def find_patterns_in_text(text: str, patterns: List[Pattern]) -> List[tuple]:
- """
- Find all pattern matches in text
-
- Args:
- text: Text to search
- patterns: List of patterns to check
-
- Returns:
- List[tuple]: List of (pattern_name, match, start, end)
- """
- matches = []
- for pattern in patterns:
- for p in pattern.patterns:
- if pattern.name == 'email':
- print(f"\nDEBUG: Checking email pattern '{p}'")
- for match in re.finditer(p, text, re.IGNORECASE):
- if pattern.name == 'email':
- print(f"DEBUG: Found email match: '{match.group(0)}' at position {match.start()}-{match.end()}")
- print(f"DEBUG: Context: '{text[max(0, match.start()-20):match.end()+20]}'")
- matches.append((pattern.name, match.group(0), match.start(), match.end()))
- return sorted(matches, key=lambda x: x[2]) # Sort by start position
\ No newline at end of file
diff --git a/test_neutralizer/testdata/Case.md b/test_neutralizer/testdata/Case.md
deleted file mode 100644
index 3c58100..0000000
--- a/test_neutralizer/testdata/Case.md
+++ /dev/null
@@ -1,608 +0,0 @@
-
-# Bewertung der PowerOn AI Platform
-
-Basierend auf dem nachstehenden Q&A ergibt sich nachfolgende Bewertung des Softwareprodukts "PowerOn AI Platform".
-
-## Aktueller Wert per Juni 2025
-
-1. **Technischer Wert des Codes**:
- - Professionelle, modulare Codebasis (~50.000-60.000 LOC)
- - Moderne Architektur mit innovativen Komponenten
- - 5 Personenmonate Entwicklung x CHF 15.000/PM = CHF 75.000
- - Zusätzlicher Wert durch Enterprise-Ready Architektur: CHF 50.000
-
-2. **Bisherige Investitionen**:
- - Hardware/Software: CHF 20.000
- - Expertise-Premium (30+ Jahre Erfahrung): CHF 25.000
-
-3. **IP und Innovationswert**:
- - Multi-Agent Workflow-System
- - Modulare Architecture mit Alleinstellungsmerkmalen
- - Geschätzter Wert: CHF 100.000
-
-4. **Marktpotenzial-Faktor**:
- - Adressierbares Marktvolumen von CHF 500-700 Mio.
- - Wachstumsmarkt (25-30% jährlich)
- - Frühphasen-Multiplikator: 2x
-
-**Aktueller Gesamtwert (Juni 2025)**: **CHF 500.000**
-
-## Prognostizierte Wertentwicklung
-
-### Ende 2025
-- Abschluss der technischen Entwicklung
-- Erste Pilotprojekte mit 3-5 Referenzkunden
-- Validierung des Produkts am Markt
-- **Geschätzter Wert Ende 2025**: **CHF 1,2 Millionen**
- (Steigerung durch Marktvalidierung und Risikoreduktion)
-
-### Ende 2026
-- 20-30 Kunden
-- ARR: CHF 0,5-0,8 Mio.
-- Etablierung im DACH-Markt
-- **Geschätzter Wert Ende 2026**: **CHF 4-5 Millionen**
- (Bewertungsmultiplikator von 6-8x ARR für wachstumsstarke SaaS)
-
-### Ende 2027
-- 70-90 Kunden
-- ARR: CHF 2-2,5 Mio.
-- Erweiterung der Produktpalette
-- **Geschätzter Wert Ende 2027**: **CHF 12-15 Millionen**
- (Bewertungsmultiplikator von 6x ARR)
-
-### Ende 2028
-- 150+ Kunden
-- ARR: CHF 4,5 Mio.
-- Internationale Expansion
-- **Geschätzter Wert Ende 2028**: **CHF 25-30 Millionen**
- (Bewertungsmultiplikator von 5,5-6,5x ARR für etablierte SaaS)
-
-## Schlüsselfaktoren und Risikobeurteilung für die Wertentwicklung
-
-1. **Erfolgreiche Markteinführung**: Der Übergang von Entwicklung zu erfolgreicher Pilotphase ist kritisch für die Wertentwicklung 2025-2026.
-
-2. **Skalierung des Vertriebs**: Die Fähigkeit, die Kundenakquisition gemäss der Prognose zu skalieren, ist entscheidend für die 2026-2027 Bewertung.
-
-3. **Kapitaleffizienz**: Die effiziente Nutzung des Kapitals (CHF 750.000-1.050.000) für die nächste Entwicklungsphase wird die Bewertung massgeblich beeinflussen.
-
-4. **Marktdynamik**: Die Entwicklung des KI-Marktes und regulatorische Änderungen können sowohl positive als auch negative Auswirkungen haben.
-
-Diese Bewertung basiert auf der Annahme, dass die Meilensteine wie geplant erreicht werden und keine signifikanten externen Faktoren die Marktentwicklung negativ beeinflussen.
-
-
-# Kriterienkatalog zur Softwarebewertung
-
-## Teil 1: Technische Bewertung (Code-basiert)
-
-1. Wie umfangreich ist die Codebasis (LOC, Module, Komponenten)?
-2. Welche Programmiersprachen und Frameworks wurden verwendet?
-3. Wie hoch ist die Codequalität und -konsistenz (saubere Architektur, Dokumentation, Tests)?
-4. Gibt es innovative Algorithmen oder patentierbare technische Lösungen?
-5. Wie modular und wartbar ist die Software gestaltet?
-6. Wie robust ist die Fehlerbehandlung und Sicherheitsarchitektur?
-7. Wie skalierbar ist die technische Infrastruktur?
-8. Gibt es technische Schulden, die zukünftige Entwicklungen behindern könnten?
-
-### 1. Umfang der Codebasis
-- **Frontend**: Modulare JavaScript-Struktur mit ca. 15 Hauptmodulen
-- **Backend**: Python/FastAPI mit ca. 15 Hauptmodulen
-- **Hauptkomponenten**:
- - Frontend: Workflow, UI, Koordination, Datenmanagement
- - Backend: Gateway, Agent Service, Connectors, Workflow Manager
-- **Geschätzte LOC**: ~50,000-60,000 Zeilen Code
-
-### 2. Programmiersprachen und Frameworks
-- **Frontend**:
- - JavaScript (ES6+)
- - Modulares System mit ES6-Import/Export
- - Vanilla JS ohne externe Frameworks
-- **Backend**:
- - Python 3.x
- - FastAPI für REST-API
- - Asyncio für asynchrone Verarbeitung
-
-### 3. Codequalität und -konsistenz
-- **Saubere Architektur**:
- - Klare Trennung Frontend/Backend
- - Modulare Struktur mit definierten Verantwortlichkeiten
- - State Machine Pattern für Workflow-Management
-- **Dokumentation**:
- - Ausführliche JSDoc/Python-Docstrings
- - Architekturdiagramme (Mermaid)
- - Technische Spezifikationen
-- **Tests**:
- - Automatisierte Modultests
- - Manuell Integrationstests
- - Benutzertests über Tickets in Clickup
-
-### 4. Innovative Algorithmen/patentierbare Lösungen
-- Multi-Agent Workflow-System mit spezialisierten Agenten
-- Modulares Agent-Registry-System
-- State Machine für Workflow-Koordination
-- Dynamische Agenten-Integration
-
-### 5. Modularität und Wartbarkeit
-- **Hohe Modularität**:
- - Klare Trennung der Verantwortlichkeiten
- - Plug-and-Play Agent-System
- - Erweiterbare Connector-Architektur
-- **Wartbarkeit**:
- - Konsistente Codestruktur
- - Klare Namenskonventionen
- - Dokumentierte Schnittstellen
-
-### 6. Fehlerbehandlung und Sicherheit
-- **Robuste Fehlerbehandlung**:
- - State Machine für Workflow-Status
- - Exception Handling auf allen Ebenen
- - Logging-System für Debugging
-- **Sicherheitsarchitektur**:
- - Multi-Tenant-Architektur
- - Authentifizierung/Autorisierung
- - Mandantenverwaltung
-
-### 7. Skalierbarkeit
-- **Horizontale Skalierbarkeit**:
- - Modulare Architektur
- - Asynchrone Verarbeitung
- - Connector-System für externe Dienste
-- **Vertikale Skalierbarkeit**:
- - Workflow-Parallelisierung
- - Agent-Pooling
- - Caching-Mechanismen
-
-### 8. Technische Schulden
-- **Potenzielle Verbesserungsbereiche**:
- - Test-Coverage nicht sichtbar
- - Eventuell fehlende Performance-Optimierungen
- - Dokumentation für Zielgruppen noch unvollständig
-- **Keine kritischen Blockierer identifiziert**
-
-### Fazit der technischen Bewertung
-Die Codebasis zeigt eine professionelle, gut strukturierte Enterprise-Anwendung mit klarer Architektur und modernen Best Practices. Die modulare Struktur und die saubere Implementierung der State Machine für Workflow-Management sind besonders hervorzuheben. Die Anwendung ist technisch reif und zeigt ein hohes Mass an Professionalität in der Implementierung.
-
-
-
-## Teil 2: Bewertung der bisherigen Aufwände
-
-### 1. Entwicklungsaufwände
-- **Patrick**:
- - ValueOn AG: 80 Stunden
- - Private Entwicklung: 650 Stunden
- - **Gesamt**: 730 Stunden (ca. 4.5 Personenmonate)
-- **Ida**:
- - ValueOn AG: 60 Stunden
- - **Gesamt**: 60 Stunden (ca. 0.4 Personenmonate)
-- **Gesamtaufwand**: ~5 Personenmonate
-
-### 2. Qualifikationen und Erfahrungslevel
-- **Patrick**:
- - Business Consultant
- - Software Architect
- - Full Stack Developer
- - 30+ Jahre Berufserfahrung
- - Experte für Enterprise-Architekturen
-- **Ida**:
- - Business Analyst
- - Project Manager
- - Scrum Master
- - Erfahrung in agiler Entwicklung
- - Expertise in Prozessoptimierung
-
-### 3. Spezifische Fachkenntnisse
-- **Patrick**:
- - Umfassende Markt- und Business-Erfahrung (30 Jahre)
- - Expertise in Software-Architektur
- - Full Stack Entwicklung
- - Azure Cloud-Integration
- - KI/ML Integration
- - Enterprise-Systeme
-- **Ida**:
- - Projektmanagement
- - Agile Methoden
- - Business Analysis
- - Prozessoptimierung
- - Qualitätssicherung
-
-### 4. Finanzielle Investitionen
-- **Hardware**: CHF 10,000
- - Entwicklungsserver
- - Testumgebungen
- - Entwicklungshardware
-- **Software & Lizenzen**: CHF 10,000
- - Entwicklungstools
- - Cloud-Services
- - KI-API-Zugänge
-- **Gesamt**: CHF 20,000
-
-### 5. Externe Dienstleister
-- **Aktueller Status**: Keine externen Dienstleister
-- **Vorteile**:
- - Volle Kontrolle über Entwicklung
- - Tiefes Verständnis der Architektur
- - Schnelle Entscheidungswege
- - Kosteneffizienz
-
-### 6. Schlüsselkomponenten-Entwicklung
-- **Patrick**:
- - Frontend-Architektur
- - Backend-System
- - Workflow-Engine
- - Agent-System
- - Connector-Framework
- - Datenmanagement
- - Sicherheitsarchitektur
-- **Verantwortlichkeiten**:
- - Systemarchitektur
- - Technische Leitung
- - Code-Review
- - Qualitätssicherung
-
-### 7. Nicht-monetäre Ressourcen
-- **Dominic**:
- - Umfangreiches Sales & Marketing Netzwerk
- - Marktzugang
- - Branchenkontakte
-- **ValueOn AG**:
- - Infrastruktur
- - Rechtlicher Rahmen
- - Geschäftsprozesse
-- **Netzwerke**:
- - Technologie-Partner
- - Potenzielle Kunden
- - Branchenexperten
-
-### 8. Finanzielle Risiken
-- **ValueOn AG**:
- - Bereitstellung von Infrastruktur
- - Personelle Ressourcen
- - Rechtlicher Rahmen
-- **Private Investitionen**:
- - Entwicklungszeit
- - Hardware/Software
- - Cloud-Services
-
-### Fazit bisherige Aufwände
-Die bisherigen Aufwände zeigen ein ausgewogenes Verhältnis zwischen technischer Expertise und Business-Know-how. Die private Investition von 730 Stunden durch Patrick demonstriert ein hohes Engagement und tiefes Verständnis der Technologie. Die Kombination aus technischer Expertise, Business-Erfahrung und Marktzugang bildet eine solide Grundlage für die weitere Entwicklung. Die bisherigen Investitionen sind effizient eingesetzt worden, mit Fokus auf kritische Kernkomponenten und skalierbare Architektur.
-
-## Teil 3: Markt- und Geschäftspotenzial
-
-### 1. Adressierbarer Gesamtmarkt und Wachstumspotenzial
-- **Gesamtmarktvolumen 2025**:
- - KI-Markt: $190 Mrd.
- - Business Process Automation: $19,6 Mrd.
- - Enterprise Knowledge Management: $43 Mrd.
-- **Adressierbarer Markt (SAM)**:
- - Initial: Mittlerer Markt in DACH (Professional Services, Finanzdienstleistungen, Gesundheitswesen)
- - Geschätztes SAM: CHF 500-700 Mio.
-- **Wachstumspotenzial**:
- - Jährliches Marktwachstum: 25-30%
- - Erweiterung auf internationale Märkte
- - Branchenspezifische Lösungen
-
-### 2. Alleinstellungsmerkmale
-1. **Technologische Vorteile**:
- - Proprietäre Multi-Agent-Technologie
- - Modellunabhängige KI-Integration
- - Enterprise-Ready Architektur
- - Fortschrittliche Workflow-Orchestrierung
-
-2. **Funktionale Vorteile**:
- - Nahtlose Integration verschiedener KI-Modelle
- - Robuste Fehlerbehandlung
- - Skalierbare Multi-Tenant-Architektur
- - Umfassende Enterprise-Features
-
-### 3. Kunden und Pilotprojekte
-- **Aktueller Status**:
- - In Entwicklung
- - Erste Referenzkunden in Planung
- - Fokus auf mittelständische Unternehmen
-- **Pilotphase**:
- - Geplant für Q3/Q4 2025
- - 3-5 Schlüsselreferenzkunden
- - Branchenspezifische Templates
-
-### 4. Geschäftsmodell
-- **Hauptmodell**: SaaS (Software as a Service)
-- **Preismodell**:
- - Basis: Pro-Benutzer/Monat Abonnement
- - Zusätzlich: Nutzungsbasierte Abrechnung
- - Enterprise-Lizenzen für grössere Kunden
-- **Erwartete Margen**: 75-85% nach Skalierung
-
-### 5. Preisgestaltung
-- **Wettbewerbsvergleich**:
- - Unterhalb Enterprise-Lösungen
- - Über Standard-BPA-Tools
- - Flexiblere Preisgestaltung als Konkurrenz
-- **Preisstruktur**:
- - Basis-Abonnement: CHF 50-100 pro Benutzer/Monat
- - Nutzungsbasierte Komponente: CHF 0.10-0.50 pro Verarbeitungseinheit
- - Enterprise-Pakete: Individuelle Preisgestaltung
-
-### 6. Umsatzpotenziale
-- **Jahr 1 (2026)**:
- - Ziel: 20-30 Kunden
- - Erwartetes ARR: CHF 0.5-0.8 Mio.
-- **Jahr 2 (2027)**:
- - Ziel: 70-90 Kunden
- - Erwartetes ARR: CHF 2-2.5 Mio.
-- **Jahr 3 (2028)**:
- - Ziel: 150+ Kunden
- - Erwartetes ARR: CHF 4.5 Mio.
-
-### 7. Akquisitionskosten
-- **Customer Acquisition Cost (CAC)**:
- - Erwarteter CAC: CHF 15,000-20,000
- - Payback-Zeit: 12-18 Monate
-- **Kostenstruktur**:
- - 30% Vertrieb und Marketing
- - Fokus auf effiziente Akquisition
- - Skaleneffekte ab 50+ Kunden
-
-### 8. Regulatorische Herausforderungen
-- **Datenschutz**:
- - DSGVO-Konformität
- - Datensicherheit
- - Mandantentrennung
-- **KI-Regulierung**:
- - EU AI Act
- - Transparenzpflichten
- - Qualitätssicherung
-- **Branchenspezifische Regulierung**:
- - Finanzdienstleistungen
- - Gesundheitswesen
- - Professional Services
-
-### Fazit Markt- und Geschäftspotenzial
-Die PowerOn AI Platform adressiert einen wachsenden Markt mit klaren Alleinstellungsmerkmalen. Das Geschäftsmodell ist skalierbar und die Preisgestaltung wettbewerbsfähig. Die regulatorischen Herausforderungen sind bekannt und adressierbar. Die Umsatzprognosen sind konservativ kalkuliert und basieren auf realistischen Marktannahmen.
-
-## Teil 4: Skalierungs- und Zukunftspotenzial
-
-### 1. Ressourcen für Support und Weiterentwicklung
-- **Entwicklungsteam**:
- - 2-3 Full-Stack Entwickler, KI-unterstützte Entwicklung
- - 1 DevOps Engineer
- - 1 QA Engineer
-- **Support-Team**:
- - 1-2 Support Engineers
- - 1 Technical Account Manager
-- **Infrastruktur**:
- - Cloud-basierte Skalierung (Azure)
- - Automatisierte Deployment-Pipeline
- - Monitoring und Logging-Systeme
-
-### 2. Skalierbarkeit
-- **Technische Skalierbarkeit**:
- - Horizontale Skalierung durch Multi-Tenant-Architektur
- - Vertikale Skalierung durch Agent-Pooling
- - Automatische Lastverteilung
-- **Skalierungszeitrahmen**:
- - 2x Nutzer: Sofort möglich
- - 5x Nutzer: 1-2 Monate Vorbereitung
- - 10x Nutzer: 3-4 Monate mit Infrastruktur-Erweiterung
-
-### 3. Kapitalbedarf
-- **Nächste Entwicklungsphase (12 Monate)**:
- - Entwicklung: CHF 400,000-500,000
- - Marketing & Sales: CHF 100,000-200,000
- - Infrastruktur: CHF 50,000-100,000
- - Betrieb & Support: CHF 100,000-150,000
- - **Gesamt**: CHF 750,000-1,050,000
-
-### 4. Schlüsselpersonen
-- **Technische Leitung**:
- - Patrick (Software Architect, Full Stack Developer)
- - Verantwortlich für: Architektur, Entwicklung, Technische Strategie
-- **Business & Operations**:
- - Ida (Business Analyst, Project Manager)
- - Verantwortlich für: Projektmanagement, Business Analysis
-- **Sales & Marketing**:
- - Dominic (Sales & Marketing)
- - Verantwortlich für: Marktentwicklung, Kundenakquisition
-
-### 5. Exit-Strategien
-- **Strategische Übernahme**:
- - Enterprise Software Anbieter
- - KI/ML Plattform Betreiber
- - Business Process Automation Unternehmen
-- **IPO-Potenzial**:
- - Ab CHF 50 Mio. ARR
- - Zeitrahmen: 5-7 Jahre
-- **Extraktion aus ValueOn AG**:
- - Vergütung der Aufwände
- - Anrechnung des Mehrwerts für Schlüsselpersonen
- - Beschaffung des notwendigen Kapitals
-
-### 6. Strategische Partnerschaften
-- **Technologie-Partner**:
- - KI-Provider (OpenAI, Anthropic)
- - Cloud-Provider (Azure)
- - Enterprise Software Anbieter
-- **Vertriebspartner**:
- - Systemhäuser
- - Beratungsunternehmen
- - Branchenspezialisten
-- **Forschungspartner**:
- - Universitäten
- - Forschungsinstitute
- - KI-Labore
-
-### 7. Geplante Erweiterungen
-- **Kurzfristig (12 Monate)**:
- - Erweiterte Agent-Typen
- - Branchenspezifische Templates
- - API-Erweiterungen
-- **Mittelfristig (24 Monate)**:
- - Agentenmarktplatz
- - Proprietäre KI-Modelle
- - Erweiterte Analytics
-- **Langfristig (36+ Monate)**:
- - KI-Middleware für Unternehmen
- - Branchenlösungen
- - Internationale Expansion
-
-### 8. Langfristige Vision
-- **Technologische Vision**:
- - Führende Multi-Agent KI-Plattform
- - Standard für Enterprise Workflow Automation
- - Innovationstreiber in der KI-Integration
-- **Marktvision**:
- - Globaler Marktführer in Nischenbereichen
- - Branchenstandard für bestimmte Anwendungsfälle
- - Referenz für KI-gestützte Prozessoptimierung
-- **Geschäftsvision**:
- - Nachhaltiges Wachstum
- - Profitables Geschäftsmodell
- - Führende Position in ausgewählten Märkten
-
-### Fazit Skalierungs- und Zukunftspotenzial
-Die PowerOn AI Platform verfügt über ein solides Skalierungspotenzial sowohl technisch als auch geschäftlich. Die modulare Architektur ermöglicht schnelles Wachstum, während die klare Vision und die strategischen Partnerschaften den langfristigen Erfolg unterstützen. Die Kapitalanforderungen sind realistisch kalkuliert und die Exit-Strategien bieten verschiedene Optionen für die Zukunft.
-
-
-# Exitplan: PowerOn AI Platform als eigenständige AG
-
-## Bewertung und Ausgangssituation
-
-**Aktueller Wert (Juni 2025)**: CHF 500.000
-**Angepasster Gründungswert**: CHF 800.000 (berücksichtigt den strategischen Wert der Produktvision, welche bereits als innerer Wert im Produkt enthalten ist)
-
-## Strukturierung der PowerOn AG
-
-### 1. Aktienstruktur bei Gründung
-
-**Gesamtes Aktienkapital**: 1.000.000 Aktien (Nennwert CHF 0,10)
-**Firmenvaluation bei Gründung**: CHF 800.000
-
-#### Verteilung der initialen Aktien:
-
-- **Patrick**:
- - Eingebrachte Leistung: Entwicklung, technische Expertise und essenzielles Gesamtkonzept
- - **Aktienanteil**: 35% (350.000 Aktien)
-
-- **Dominic**:
- - Eingebrachte Leistung: Netzwerk, Sales & Marketing Expertise und Vision
- - **Aktienanteil**: 15% (150.000 Aktien)
-
-- **ValueOn AG**:
- - Eingebrachte Leistung: Infrastruktur, rechtlicher Rahmen, Arbeitszeit, Übertragung von IP
- - **Aktienanteil**: 25% (250.000 Aktien)
-
-- **Reservierter Anteil für Mitarbeiter-Pool**:
- - **Aktienanteil**: 10% (100.000 Aktien)
-
-- **Reserviert für Investoren (erste Runde)**:
- - **Aktienanteil**: 15% (150.000 Aktien)
-
-### 2. Kapitalbedarfsplanung (18 Monate)
-
-| Kategorie | Betrag (CHF) |
-|-----------|--------------|
-| Entwicklung | 550.000 |
-| Marketing & Sales | 250.000 |
-| Infrastruktur | 100.000 |
-| Betrieb & Support | 200.000 |
-| **Gesamtbedarf** | **1.100.000** |
-
-**Kapitalbeschaffungsstrategie**:
-- **Erste Finanzierungsrunde**: CHF 1.000.000 (für 18 Monate)
-- **Sicherheitspuffer**: CHF 100.000 (aus Umsätzen/zukünftigen Einnahmen)
-
-### 3. Investitionskonditionen
-
-**Pre-Money Bewertung**: CHF 800.000
-**Investitionsvolumen**: CHF 1.000.000
-**Post-Money Bewertung**: CHF 1.800.000
-
-**Aktienkurs für Investoren**:
-- 150.000 bestehende Aktien + 214.285 neue Aktien = 364.285 Aktien für Investoren
-- **Aktienkurs**: CHF 2,75 pro Aktie
-
-**Aktienstruktur nach Investment**:
-- Patrick: 35% → 28,9% (350.000 Aktien)
-- Dominic: 15% → 12,4% (150.000 Aktien)
-- ValueOn AG: 25% → 20,7% (250.000 Aktien)
-- Mitarbeiter-Pool: 10% → 8,3% (100.000 Aktien)
-- Investoren: 29,7% (364.285 Aktien)
-
-## Governance und Organisation
-
-### 1. Schlüsselpositionen in der Organisation
-
-- **CEO**: Gesamtführung des Unternehmens
-- **CTO**: Verantwortlich für technische Strategie und Produktentwicklung
-- **CSO/Vertriebsleitung**: Verantwortlich für Vertrieb und Marktentwicklung
-- **COO**: Operative Leitung und Geschäftsprozesse
-
-Die Besetzung dieser Positionen wird unter Berücksichtigung der Kompetenzen von Patrick, Dominic und möglichen neuen Führungskräften festgelegt. Die Rollen von CEO und COO werden im Rahmen der Unternehmensgründung evaluiert.
-
-### 2. Vergütungsstruktur
-
-- **Führungsebene**: Marktübliche Vergütung zwischen CHF 150.000-180.000/Jahr je nach Position
-- **Aktienoptionen**: Zusätzliche Aktienoptionen bei Erreichen definierter Unternehmensziele
-
-## Meilensteine und Finanzielle Ziele
-
-### Kritische Meilensteine (18 Monate)
-
-| Zeitpunkt | Meilenstein | KPI |
-|-----------|-------------|-----|
-| Q3 2025 | Ausgründung & Finanzierung | Abschluss der Seed-Runde |
-| Q4 2025 | Markteinführung | 3-5 Pilotprojekte |
-| Q1 2026 | Produktvalidierung | 10+ zahlende Kunden |
-| Q2 2026 | Skalierung | 15+ zahlende Kunden |
-| Q4 2026 | Vorbereitung Serie A | 25+ Kunden, ARR: CHF 0,8 Mio. |
-
-### Umsatz- und Bewertungsprognose
-
-| Jahr | Kunden | ARR (CHF) | Valuation (CHF) | Multiplikator |
-|------|--------|-----------|-----------------|---------------|
-| Ende 2025 | 5-8 | 0,2 Mio. | 1,8 Mio. | 9x ARR |
-| Ende 2026 | 25-30 | 0,8 Mio. | 5,6 Mio. | 7x ARR |
-| Ende 2027 | 80-90 | 2,5 Mio. | 15 Mio. | 6x ARR |
-| Ende 2028 | 150+ | 4,5 Mio. | 27 Mio. | 6x ARR |
-
-## Liquiditätsoptionen
-
-### Mittelfristige Optionen (2-3 Jahre)
-
-1. **Serie A Finanzierung** (Ende 2026):
- - Teilweise Liquidität für Gründer und ValueOn AG (10-15% ihrer Anteile)
- - Zu erwartender Wert: CHF 5-6 Mio.
-
-2. **Strategische Partnerschaft**:
- - Investment durch strategischen Partner mit teilweisem Aktienrückkauf
- - Potenzielle Partner: Enterprise Software-Anbieter, KI-Plattform-Betreiber
-
-### Langfristige Optionen (4-7 Jahre)
-
-1. **Komplette Übernahme**:
- - Erwarteter Exit-Wert 2028: CHF 25-30 Mio.
- - Vollständige Liquidität für alle Anteilseigner
-
-2. **IPO-Vorbereitung**:
- - Bei Erreichen von CHF 10+ Mio. ARR
- - Potenzielle Bewertung: CHF 50-70 Mio.
-
-## Nächste Schritte im Ausgründungsprozess
-
-1. **Rechtliche Strukturierung**:
- - Gründung der PowerOn AG
- - Übertragungsvereinbarungen für geistiges Eigentum
- - Aktionärsvereinbarungen
-
-2. **Finanzierung**:
- - Erstellung eines detaillierten Businessplans
- - Vorbereitung des Investor Pitch Decks
- - Ansprache potenzieller Investoren
-
-3. **Organisationsaufbau**:
- - Definition der Führungsstruktur und Schlüsselpositionen
- - Rekrutierung des Kernteams
- - Aufbau der operativen Prozesse
-
-4. **Markteinführungsstrategie**:
- - Festlegung der Go-to-Market Strategie
- - Identifikation von Pilotprojekten
- - Vorbereitung der Vertriebsunterlagen
diff --git a/test_neutralizer/testdata/customers.csv b/test_neutralizer/testdata/customers.csv
deleted file mode 100644
index bebbfa1..0000000
--- a/test_neutralizer/testdata/customers.csv
+++ /dev/null
@@ -1,6 +0,0 @@
-id,name,email,phone,address,iban,credit_card,ahv_number
-1,Max Mustermann,max.mustermann@beispiel.de,+49 30 12345678,Musterstraße 123 12345 Berlin,DE89 3704 0044 0532 0130 00,4532 1234 5678 9012,
-2,Peter Schmid,peter.schmid@beispiel.ch,+41 44 123 45 67,Bahnhofstrasse 1 8001 Zürich,CH93 0076 7000 E529 3557 7,4532 1234 5678 9013,756.1234.5678.90
-3,Marie Dupont,marie.dupont@exemple.fr,+33 1 23 45 67 89,123 Rue de Paris 75001 Paris,FR76 3000 6000 0112 3456 7890 189,4532 1234 5678 9014,
-4,Marco Rossi,marco.rossi@esempio.it,+39 02 1234 5678,Via Roma 123 20100 Milano,IT60 X054 2811 1010 0000 0123 456,4532 1234 5678 9015,
-5,John Smith,john.smith@example.com,+44 20 1234 5678,123 High Street London SW1A 1AA,GB29 NWBK 6016 1331 9268 19,4532 1234 5678 9016,
\ No newline at end of file
diff --git a/test_neutralizer/testdata/cv_lara_meier.txt b/test_neutralizer/testdata/cv_lara_meier.txt
deleted file mode 100644
index 8aec5d3..0000000
--- a/test_neutralizer/testdata/cv_lara_meier.txt
+++ /dev/null
@@ -1,73 +0,0 @@
-Lebenslauf: Lara Meier
-
-Persönliche Daten:
-Name: Lara Meier
-Geboren: 15.03.1990
-Adresse: Bahnhofstrasse 45, 8001 Zürich
-Telefon: +41 44 123 45 67
-E-Mail: lara.meier@example.ch
-AHV-Nr.: 756.1234.5678.90
-Steuernummer: 123.456.789
-
-Berufserfahrung:
-2020-2023: Senior Projektmanagerin
-Firma: TechSolutions AG
-Adresse: Industriestrasse 100, 8004 Zürich
-UID: CHE-123.456.789
-Telefon: +41 44 987 65 43
-E-Mail: lara.meier@techsolutions.ch
-
-In dieser Position leitete ich ein Team von 15 Mitarbeitern und verantwortete die Implementierung von Cloud-Lösungen für internationale Kunden. Meine Hauptaufgaben umfassten:
-- Projektplanung und -steuerung mit einem Budget von CHF 2.5 Mio.
-- Kundenbetreuung und Stakeholder-Management
-- Teamführung und Personalentwicklung
-- Qualitätssicherung und Risikomanagement
-
-2015-2020: Projektmanagerin
-Firma: Digital Systems GmbH
-Adresse: Musterstrasse 123, 8002 Zürich
-UID: CHE-987.654.321
-Telefon: +41 44 456 78 90
-E-Mail: l.meier@digitalsystems.ch
-
-Als Projektmanagerin verantwortete ich die erfolgreiche Durchführung von Digitalisierungsprojekten. Meine Leistungen:
-- Implementierung von ERP-Systemen
-- Optimierung von Geschäftsprozessen
-- Schulung von Endbenutzern
-- Erstellung von Projektdokumentation
-
-Ausbildung:
-2010-2015: ETH Zürich
-Studiengang: Informatik
-Matrikelnummer: 12-345-678
-Abschluss: Master of Science in Computer Science
-Thesis: "Künstliche Intelligenz in der Prozessautomatisierung"
-
-2005-2010: Kantonsschule Zürich
-Abschluss: Eidgenössische Maturität
-Schwerpunkt: Mathematik und Naturwissenschaften
-
-Sprachen:
-Deutsch (Muttersprache)
-Englisch (C2)
-Französisch (B2)
-Italienisch (B1)
-
-Zertifizierungen:
-PMP (Project Management Professional)
-ITIL v4 Foundation
-AWS Certified Solutions Architect
-Scrum Master (PSM I)
-
-Referenzen:
-Prof. Dr. Hans Müller
-ETH Zürich
-Department of Computer Science
-Telefon: +41 44 123 45 68
-E-Mail: hans.mueller@ethz.ch
-
-Dr. Sarah Weber
-TechSolutions AG
-CTO
-Telefon: +41 44 987 65 44
-E-Mail: sarah.weber@techsolutions.ch
\ No newline at end of file
diff --git a/test_neutralizer/testdata/employees.csv b/test_neutralizer/testdata/employees.csv
deleted file mode 100644
index 080ccdb..0000000
--- a/test_neutralizer/testdata/employees.csv
+++ /dev/null
@@ -1,6 +0,0 @@
-employee_id,first_name,last_name,email,phone,department,office_address,uid_number,bank_account
-E001,Hans,Müller,hans.mueller@firma.de,+49 89 12345678,IT,Hauptstraße 1 80331 München,,DE89 3704 0044 0532 0130 00
-E002,Thomas,Weber,thomas.weber@firma.ch,+41 44 234 56 78,HR,Bahnhofstrasse 2 8001 Zürich,CHE-123.456.789,01-234567-8
-E003,Sophie,Martin,sophie.martin@entreprise.fr,+33 1 34 56 78 90,Finance,15 Avenue des Champs-Élysées 75008 Paris,,FR76 3000 6000 0112 3456 7890 189
-E004,Luca,Ferrari,luca.ferrari@azienda.it,+39 02 2345 6789,Marketing,Via Monte Napoleone 8 20121 Milano,,IT60 X054 2811 1010 0000 0123 456
-E005,Emma,Wilson,emma.wilson@company.com,+44 20 2345 6789,Sales,25 Old Street London EC1V 9HL,,GB29 NWBK 6016 1331 9268 19
\ No newline at end of file
diff --git a/test_neutralizer/testdata/english.txt b/test_neutralizer/testdata/english.txt
deleted file mode 100644
index d813b5e..0000000
--- a/test_neutralizer/testdata/english.txt
+++ /dev/null
@@ -1,12 +0,0 @@
-Dear Mr. Smith,
-
-Thank you for your email to contact@example.com.
-Your contact details have been recorded:
-Phone: +44 20 1234 5678
-Address: 123 High Street, London SW1A 1AA
-
-Your IBAN: GB29 NWBK 6016 1331 9268 19
-Credit Card: 4532 1234 5678 9012
-
-Best regards,
-John Doe
\ No newline at end of file
diff --git a/test_neutralizer/testdata/example.json b/test_neutralizer/testdata/example.json
deleted file mode 100644
index e268aa8..0000000
--- a/test_neutralizer/testdata/example.json
+++ /dev/null
@@ -1,54 +0,0 @@
-{
- "customer": {
- "personal_info": {
- "name": "Max Mustermann",
- "email": "max.mustermann@example.com",
- "phone": "+49 123 4567890",
- "address": {
- "street": "Hauptstraße 123",
- "city": "München",
- "zip": "80331",
- "country": "Deutschland"
- }
- },
- "order_history": [
- {
- "order_id": "ORD-2024-001",
- "date": "2024-03-15",
- "items": [
- {
- "product": "Laptop",
- "price": 1299.99,
- "payment": {
- "method": "credit_card",
- "card_number": "4111 1111 1111 1111",
- "iban": "DE89 3704 0044 0532 0130 00"
- }
- }
- ]
- }
- ],
- "preferences": {
- "language": "de",
- "newsletter": true,
- "marketing_consent": {
- "email": "max.mustermann@example.com",
- "phone": "+49 123 4567890"
- }
- }
- },
- "company": {
- "name": "Tech Solutions GmbH",
- "contact": {
- "manager": "Dr. Anna Schmidt",
- "email": "anna.schmidt@techsolutions.de",
- "phone": "+49 89 12345678",
- "address": {
- "street": "Technologiestraße 45",
- "city": "Berlin",
- "zip": "10115",
- "country": "Deutschland"
- }
- }
- }
-}
\ No newline at end of file
diff --git a/test_neutralizer/testdata/example.xml b/test_neutralizer/testdata/example.xml
deleted file mode 100644
index 37837e5..0000000
--- a/test_neutralizer/testdata/example.xml
+++ /dev/null
@@ -1,79 +0,0 @@
-
-
-
-
-
- Dr. Thomas Weber
- thomas.weber@company.de
- +49 30 12345678
-
- Musterstraße 42
- Hamburg
- 20095
- Deutschland
-
-
-
- IT
- Senior Developer
- 75000
-
- DE89 3704 0044 0532 0130 00
- COBADEFFXXX
-
-
-
-
-
- Maria Schmidt
- maria.schmidt@company.de
- +49 40 98765432
-
- Bahnhofstraße 15
- Frankfurt
- 60329
- Deutschland
-
-
-
- HR
- HR Manager
- 65000
-
- DE27 3704 0044 0532 0130 01
- COBADEFFXXX
-
-
-
-
-
-
- Digital Transformation
- Dr. Thomas Weber
- 150000
-
- Dr. Thomas Weber
- Maria Schmidt
-
-
-
-
- Tech Innovations GmbH
-
- Innovationsstraße 1
- München
- 80331
- Deutschland
-
-
- info@techinnovations.de
- +49 89 12345678
- +49 89 12345679
-
-
- DE89 3704 0044 0532 0130 02
- COBADEFFXXX
- DE123456789
-
-
-
\ No newline at end of file
diff --git a/test_neutralizer/testdata/french.txt b/test_neutralizer/testdata/french.txt
deleted file mode 100644
index 4ff7ab6..0000000
--- a/test_neutralizer/testdata/french.txt
+++ /dev/null
@@ -1,12 +0,0 @@
-Bonjour Madame Dupont,
-
-Merci pour votre email à contact@exemple.fr.
-Vos coordonnées ont été enregistrées:
-Téléphone: +33 1 23 45 67 89
-Adresse: 123 Rue de Paris, 75001 Paris
-
-Votre IBAN: FR76 3000 6000 0112 3456 7890 189
-Carte de crédit: 4532 1234 5678 9012
-
-Cordialement,
-Jean Martin
\ No newline at end of file
diff --git a/test_neutralizer/testdata/german.txt b/test_neutralizer/testdata/german.txt
deleted file mode 100644
index eb9f4ed..0000000
--- a/test_neutralizer/testdata/german.txt
+++ /dev/null
@@ -1,12 +0,0 @@
-Sehr geehrte Frau Müller,
-
-vielen Dank für Ihre E-Mail an max.mustermann@beispiel.de.
-Ihre Telefonnummer 030-12345678 wurde in unserem System hinterlegt.
-Die Rechnung wird an folgende Adresse gesendet:
-Musterstraße 123, 12345 Berlin
-
-Ihre IBAN: DE89 3704 0044 0532 0130 00
-Kreditkarte: 4532 1234 5678 9012
-
-Mit freundlichen Grüßen
-Max Mustermann
\ No newline at end of file
diff --git a/test_neutralizer/testdata/geschaeftsstrategie.txt b/test_neutralizer/testdata/geschaeftsstrategie.txt
deleted file mode 100644
index 4c8215b..0000000
--- a/test_neutralizer/testdata/geschaeftsstrategie.txt
+++ /dev/null
@@ -1,56 +0,0 @@
-Geschäftsstrategie 2024-2026
-TechSolutions AG
-
-Unternehmensdaten:
-Firmenname: TechSolutions AG
-UID: CHE-123.456.789
-Adresse: Industriestrasse 100, 8004 Zürich
-Telefon: +41 44 987 65 43
-E-Mail: info@techsolutions.ch
-Website: www.techsolutions.ch
-
-Geschäftsführung:
-CEO: Dr. Thomas Weber
-E-Mail: thomas.weber@techsolutions.ch
-Telefon: +41 44 987 65 44
-
-CTO: Dr. Sarah Müller
-E-Mail: sarah.mueller@techsolutions.ch
-Telefon: +41 44 987 65 45
-
-Finanzdaten:
-Bank: UBS AG
-IBAN: CH93 0076 7000 E529 0767 9
-BIC: UBSWCHZH80A
-
-Strategische Ziele:
-1. Marktpositionierung
- - Marktanteil in der Schweiz auf 25% steigern
- - Expansion in DACH-Region
- - Neue Zielgruppe: KMU
-
-2. Produktentwicklung
- - Cloud-Lösung für KMU
- - KI-basierte Automatisierung
- - Mobile App für Kunden
-
-3. Personalentwicklung
- - Team auf 50 Mitarbeiter ausbauen
- - Neue Standorte: Bern und Genf
- - Fokus auf Diversity & Inclusion
-
-4. Nachhaltigkeit
- - CO2-Neutralität bis 2025
- - Green IT Zertifizierung
- - Nachhaltige Lieferkette
-
-Budgetplanung:
-2024: CHF 5.2 Mio.
-2025: CHF 6.8 Mio.
-2026: CHF 8.5 Mio.
-
-Risikoanalyse:
-- Marktrisiken
-- Technologische Risiken
-- Personelle Risiken
-- Finanzielle Risiken
\ No newline at end of file
diff --git a/test_neutralizer/testdata/geschäfte.csv b/test_neutralizer/testdata/geschäfte.csv
deleted file mode 100644
index 4a1377e..0000000
--- a/test_neutralizer/testdata/geschäfte.csv
+++ /dev/null
@@ -1,6 +0,0 @@
-geschäft_id,datum,kundenname,kundenemail,betrag,zahlungsmethode,zahlungsdetails,lieferadresse
-G001,2024-03-15,Anna Schmidt,anna.schmidt@kunde.de,1250,50,IBAN,DE89 3704 0044 0532 0130 00,Kirchstraße 10 10115 Berlin
-G002,2024-03-15,Franz Huber,franz.huber@kunde.de,890,75,IBAN,DE02 5001 0517 5407 3249 31,Seefeldstraße 5 10117 Berlin
-G003,2024-03-15,Pierre Dubois,pierre.dubois@kunde.de,2340,25,IBAN,DE27 2005 0550 1045 1862 37,15 Rue de la Paix 10115 Berlin
-G004,2024-03-15,Giovanni Bianchi,giovanni.bianchi@kunde.de,1750,00,IBAN,DE02 5001 0517 5407 3249 32,Via della Spiga 20 10115 Berlin
-G005,2024-03-15,William Brown,william.brown@kunde.de,3200,50,IBAN,DE02 5001 0517 5407 3249 33,42 Oxford Street 10115 Berlin
\ No newline at end of file
diff --git a/test_neutralizer/testdata/italian.txt b/test_neutralizer/testdata/italian.txt
deleted file mode 100644
index 20cd6e9..0000000
--- a/test_neutralizer/testdata/italian.txt
+++ /dev/null
@@ -1,13 +0,0 @@
-Buongiorno Signora Rossi,
-
-Grazie per la sua email a info@esempio.it.
-Grazie per la sua email a info@esempio.it .
-I suoi dati di contatto sono stati registrati:
-Telefono: +39 02 1234 5678
-Indirizzo: Via Roma 123, 20100 Milano
-
-Il suo IBAN: IT60 X054 2811 1010 0000 0123 456
-Carta di credito: 4532 1234 5678 9012
-
-Cordiali saluti,
-Marco Bianchi
\ No newline at end of file
diff --git a/test_neutralizer/testdata/kunden.csv b/test_neutralizer/testdata/kunden.csv
deleted file mode 100644
index 3393ac1..0000000
--- a/test_neutralizer/testdata/kunden.csv
+++ /dev/null
@@ -1,6 +0,0 @@
-kunden_id,vorname,nachname,email,telefon,adresse,iban,kreditkarte,steuernummer
-K001,Michael,Schmidt,michael.schmidt@kunde.de,+49 30 12345678,Musterstraße 123 12345 Berlin,DE89 3704 0044 0532 0130 00,4532 1234 5678 9012,12/345/67890
-K002,Sabine,Weber,sabine.weber@kunde.de,+49 89 23456789,Hauptstraße 45 80331 München,DE02 5001 0517 5407 3249 31,4532 1234 5678 9013,98/765/43210
-K003,Thomas,Müller,thomas.mueller@kunde.de,+49 40 34567890,Neue Straße 78 20095 Hamburg,DE27 2005 0550 1045 1862 37,4532 1234 5678 9014,45/678/90123
-K004,Petra,Fischer,petra.fischer@kunde.de,+49 69 45678901,Frankfurter Ring 12 60313 Frankfurt,DE02 5001 0517 5407 3249 32,4532 1234 5678 9015,34/567/89012
-K005,Klaus,Wagner,klaus.wagner@kunde.de,+49 211 56789012,Königsallee 92 40212 Düsseldorf,DE02 5001 0517 5407 3249 33,4532 1234 5678 9016,23/456/78901
\ No newline at end of file
diff --git a/test_neutralizer/testdata/mitarbeiter.csv b/test_neutralizer/testdata/mitarbeiter.csv
deleted file mode 100644
index 4e15441..0000000
--- a/test_neutralizer/testdata/mitarbeiter.csv
+++ /dev/null
@@ -1,6 +0,0 @@
-mitarbeiter_id,vorname,nachname,email,telefon,abteilung,büroadresse,steuernummer,sozialversicherungsnummer
-M001,Andreas,Becker,andreas.becker@firma.de,+49 30 98765432,IT,Hauptstraße 1 10115 Berlin,12/345/67890,12 345678 901
-M002,Monika,Hoffmann,monika.hoffmann@firma.de,+49 89 87654321,HR,Leopoldstraße 45 80802 München,98/765/43210,98 765432 102
-M003,Frank,Schäfer,frank.schaefer@firma.de,+49 40 76543210,Finanzen,Neuer Wall 78 20354 Hamburg,45/678/90123,45 678901 203
-M004,Susanne,Koch,susanne.koch@firma.de,+49 69 65432109,Marketing,Mainzer Landstraße 12 60329 Frankfurt,34/567/89012,34 567890 304
-M005,Dieter,Richter,dieter.richter@firma.de,+49 211 54321098,Vertrieb,Königsallee 92 40212 Düsseldorf,23/456/78901,23 456789 405
\ No newline at end of file
diff --git a/test_neutralizer/testdata/swiss.txt b/test_neutralizer/testdata/swiss.txt
deleted file mode 100644
index 9455e4a..0000000
--- a/test_neutralizer/testdata/swiss.txt
+++ /dev/null
@@ -1,13 +0,0 @@
-Guten Tag Herr Schmid
-
-Vielen Dank für Ihre Anfrage an info@beispiel.ch.
-Ihre Kontaktdaten wurden wie folgt erfasst:
-Telefon: +41 44 123 45 67
-Adresse: Bahnhofstrasse 1, 8001 Zürich
-
-Ihre AHV-Nummer: 756.1234.5678.90
-UID-Nummer: CHE-123.456.789
-Bankkonto: 01-234567-8
-
-Mit freundlichen Grüßen
-Peter Muster
\ No newline at end of file
diff --git a/test_neutralizer/testdata/transactions.csv b/test_neutralizer/testdata/transactions.csv
deleted file mode 100644
index e362f34..0000000
--- a/test_neutralizer/testdata/transactions.csv
+++ /dev/null
@@ -1,6 +0,0 @@
-transaction_id,date,customer_name,customer_email,amount,payment_method,payment_details,shipping_address
-T001,2024-03-15,Anna Schmidt,anna.schmidt@kunde.de,1250.50,IBAN,DE89 3704 0044 0532 0130 00,Kirchstraße 10 10115 Berlin
-T002,2024-03-15,Franz Huber,franz.huber@kunde.ch,890.75,AHV,756.1234.5678.90,Seefeldstrasse 5 8008 Zürich
-T003,2024-03-15,Pierre Dubois,pierre.dubois@client.fr,2340.25,IBAN,FR76 3000 6000 0112 3456 7890 189,15 Rue de la Paix 75002 Paris
-T004,2024-03-15,Giovanni Bianchi,giovanni.bianchi@cliente.it,1750.00,IBAN,IT60 X054 2811 1010 0000 0123 456,Via della Spiga 20 20121 Milano
-T005,2024-03-15,William Brown,william.brown@customer.com,3200.50,IBAN,GB29 NWBK 6016 1331 9268 19,42 Oxford Street London W1D 2BJ
\ No newline at end of file
diff --git a/test_neutralizer/zdocu.html b/test_neutralizer/zdocu.html
deleted file mode 100644
index 7194d23..0000000
--- a/test_neutralizer/zdocu.html
+++ /dev/null
@@ -1,157 +0,0 @@
-
-
-
-
- Daten-Neutralisierer Logik
-
-
-
-
Daten-Neutralisierer Logik
-
Der Daten-Neutralisierer unterstützt die Anonymisierung von sensiblen Daten in verschiedenen Dateiformaten (TXT, JSON, CSV, XML, DOCX) und Sprachen (DE, EN, FR, IT).
-
-
1. Unterstützte Dateiformate
-
-
CSV-Dateien
-
JSON-Dateien
-
XML-Dateien
-
Text-Dateien (TXT)
-
Word-Dokumente (DOCX)
-
-
-
2. Neutralisierungsmuster
-
-
-
Personenbezogene Daten
-
-
-
Vornamen
-
Deutsch: vorname, vornamen, rufname, taufname
-
Englisch: first name, given name, forename, personal name