Systeme, die arbeiten, wenn ich es nicht tue
I design and run automation end to end: from the idea and the rules to a system that works every day. Background: 11+ years in marketing and communications, now building with Python and LLM APIs. The code is written with the help of AI; decisions, rules, quality control and results are mine.
Ich entwerfe und betreibe Automatisierungen von Anfang bis Ende: von der Idee und den Regeln bis zu einem System, das täglich funktioniert. Hintergrund: über 11 Jahre Marketing und Kommunikation, heute mit Python und LLM-APIs. Der Code entsteht mit Unterstützung von KI; Entscheidungen, Regeln, Qualitätskontrolle und Resultate stammen von mir.
Autonomous job application systemAutonomes Bewerbungssystem
A system that takes a job search from vacancy to submitted application without manual steps and reports every day on what happened. Built and put into production in eight weeks; it runs unattended on my own server and asks me only when a decision genuinely needs a human.
Ein System, das die Stellensuche von der Ausschreibung bis zur versendeten Bewerbung ohne manuelle Schritte führt und täglich berichtet, was passiert ist. In acht Wochen gebaut und in Betrieb genommen; es läuft unbeaufsichtigt auf meinem eigenen Server und fragt mich nur, wenn eine Entscheidung wirklich einen Menschen braucht.
Step 1. The system finds a vacancy and reads what the employer actually asks for – then writes down the “ideal candidate”.
Schritt 1. Das System findet eine Stelle, liest, was der Arbeitgeber tatsächlich verlangt – und hält den «Idealkandidaten» fest.
Marketing Specialist
Your tasksIhre Aufgaben
- Plan and run campaigns across several channelsKampagnen planen und umsetzen über mehrere Kanäle
- Coordinate agencies and external partnersAgenturen koordinieren und externe Partner steuern
- Report results in KPIsResultate in KPIs berichten
Your profileIhr Profil
- Several years of marketing experience, fluent English and GermanMehrjährige Marketingerfahrung, sehr gute Deutsch- und Englischkenntnisse
Someone who plans and runs campaigns end to end, works with several agencies, reports in numbers and brings the team along. Fluent in German and English.
Eine Person, die Kampagnen von der Planung bis zur Auswertung führt, mit mehreren Agenturen arbeitet, in Zahlen berichtet und das Team mitnimmt. Sehr gute Deutsch- und Englischkenntnisse.
Step 2. A CV is written for exactly this vacancy – the same person gets a different CV for a different vacancy. Then the system checks how an applicant tracking system (ATS) would read it.
Schritt 2. Für genau diese Stelle wird ein Lebenslauf geschrieben – dieselbe Person bekommt für eine andere Stelle einen anderen. Danach prüft das System, wie ein Bewerbermanagement-System (ATS) ihn lesen würde.
How an ATS reads this CVWie ein ATS diesen Lebenslauf liest
Everything on this tab is invented: person, employers, figures and vacancies. Real CVs are written in the language of the vacancy and fit on exactly one page.
Alles auf diesem Tab ist erfunden: Person, Arbeitgeber, Zahlen und Stellen. Echte Lebensläufe entstehen in der Sprache der Stelle und passen auf genau eine Seite.
Step 3. The application is submitted – and the employer's confirmation is recorded.
Schritt 3. Die Bewerbung wird abgeschickt – und die Bestätigung des Arbeitgebers wird festgehalten.
Thank you for your applicationVielen Dank für Ihre Bewerbung
We have received your documents and will get back to you shortly.Wir haben Ihre Unterlagen erhalten und melden uns in Kürze.
Step 4. Replies arrive in the mailbox. The system reads them, sorts them and logs the outcome – an invitation, for example.
Schritt 4. Antworten treffen im Postfach ein. Das System liest und sortiert sie und protokolliert das Ergebnis – zum Beispiel eine Einladung.
Hello Alex,Guten Tag Alex,
thank you for your application. We would like to get to know you better – would next Tuesday at 10:00 suit you for a first conversation?vielen Dank für Ihre Bewerbung. Wir würden Sie gern kennenlernen – passt Ihnen nächsten Dienstag um 10:00 Uhr für ein erstes Gespräch?
Kind regards,
Recruiter Example, Example Industries AGFreundliche Grüsse
Recruiter Example, Example Industries AG
Step 5. The goal of the whole chain.
Schritt 5. Das Ziel der ganzen Kette.
Hello Alex,Guten Tag Alex,
we enjoyed our conversations and are happy to offer you the position of Marketing Specialist. We look forward to welcoming you to the team – please find the offer attached.wir haben die Gespräche sehr geschätzt und freuen uns, Ihnen die Stelle als Marketing Specialist anzubieten. Wir freuen uns, Sie im Team willkommen zu heissen – das Angebot finden Sie im Anhang.
Kind regards,
Recruiter Example, Example Industries AGFreundliche Grüsse
Recruiter Example, Example Industries AG
From suitable vacancies to responsesVon passenden Stellen bis zur Rückmeldung
Share of suitable vacancies, since launch (suitable = passed the automatic fit check). Replies are still arriving, so these shares keep growing. Exact counts are not shown.
Anteil der passenden Stellen, seit dem Start (passend = automatische Eignungsprüfung bestanden). Antworten treffen weiter ein, die Anteile steigen noch. Genaue Zahlen werden nicht gezeigt.
Design principlesDesignprinzipien
Everything is trackedAlles wird protokolliert
Every vacancy and every application is logged automatically in a table: fit score, date, status and response time. The table feeds the funnel above and shows where the rules need to change. Anonymised extract (company, role and links removed):
Jede Stelle und jede Bewerbung wird automatisch in einer Tabelle erfasst: Eignung, Datum, Status und Reaktionszeit. Die Tabelle speist den Funnel oben und zeigt, wo Regeln angepasst werden müssen. Anonymisierter Auszug (Firma, Rolle und Links entfernt):
| ID | SentGesendet | FitEignung | Status | Receipt confirmedEingang bestätigt |
|---|
| #01 | 16.10. | 71% | Sent | ✓ same dayam selben Tag |
| #02 | 16.10. | 70% | Sent | ⏳ waitingoffen |
| #03 | 18.10. | 85% | Sent | ✓ 1 day1 Tag |
| #04 | 18.10. | 78% | Sent | ✓ same dayam selben Tag |
| #05 | 19.10. | 66% | Sent | ✓ same dayam selben Tag |
| #06 | 22.10. | 72% | Sent | ✓ 1 day1 Tag |
| #07 | 22.10. | 72% | Sent | ✓ 1 day1 Tag |
| #08 | 23.10. | 78% | Sent | ✓ same dayam selben Tag |
| #09 | 23.10. | 78% | Sent | ✓ same dayam selben Tag |
| #10 | 23.10. | 68% | Sent | ✓ same dayam selben Tag |
| #11 | 23.10. | 76% | Sent | ✓ same dayam selben Tag |
| #12 | 23.10. | 74% | Sent | ✓ same dayam selben Tag |
| #13 | 23.10. | 74% | Sent | ✓ same dayam selben Tag |
| #14 | 24.10. | 64% | Sent | ⏳ waitingoffen |
| #15 | 24.10. | 68% | Sent | ✓ same dayam selben Tag |
| #16 | 24.10. | 71% | Sent | ✓ same dayam selben Tag |
| #17 | 24.10. | 67% | Sent | ✓ same dayam selben Tag |
| #18 | 24.10. | 65% | Sent | ✓ same dayam selben Tag |
| #19 | 25.10. | 75% | Sent | ✓ same dayam selben Tag |
| #20 | 25.10. | 72% | Sent | ⏳ waitingoffen |
| #21 | 25.10. | 63% | Sent | ✓ same dayam selben Tag |
| #22 | 25.10. | 68% | Sent | ✓ same dayam selben Tag |
| #23 | 25.10. | 62% | Sent | ✓ same dayam selben Tag |
| #24 | 25.10. | 80% | Sent | ✓ same dayam selben Tag |
| #25 | 25.10. | 69% | Sent | ✓ same dayam selben Tag |
| #26 | 25.10. | 78% | Sent | ✓ same dayam selben Tag |
| #01 | 16.10. | 71% | Sent | ✓ same dayam selben Tag |
| #02 | 16.10. | 70% | Sent | ⏳ waitingoffen |
| #03 | 18.10. | 85% | Sent | ✓ 1 day1 Tag |
| #04 | 18.10. | 78% | Sent | ✓ same dayam selben Tag |
| #05 | 19.10. | 66% | Sent | ✓ same dayam selben Tag |
| #06 | 22.10. | 72% | Sent | ✓ 1 day1 Tag |
| #07 | 22.10. | 72% | Sent | ✓ 1 day1 Tag |
| #08 | 23.10. | 78% | Sent | ✓ same dayam selben Tag |
| #09 | 23.10. | 78% | Sent | ✓ same dayam selben Tag |
| #10 | 23.10. | 68% | Sent | ✓ same dayam selben Tag |
| #11 | 23.10. | 76% | Sent | ✓ same dayam selben Tag |
| #12 | 23.10. | 74% | Sent | ✓ same dayam selben Tag |
| #13 | 23.10. | 74% | Sent | ✓ same dayam selben Tag |
| #14 | 24.10. | 64% | Sent | ⏳ waitingoffen |
| #15 | 24.10. | 68% | Sent | ✓ same dayam selben Tag |
| #16 | 24.10. | 71% | Sent | ✓ same dayam selben Tag |
| #17 | 24.10. | 67% | Sent | ✓ same dayam selben Tag |
| #18 | 24.10. | 65% | Sent | ✓ same dayam selben Tag |
| #19 | 25.10. | 75% | Sent | ✓ same dayam selben Tag |
| #20 | 25.10. | 72% | Sent | ⏳ waitingoffen |
| #21 | 25.10. | 63% | Sent | ✓ same dayam selben Tag |
| #22 | 25.10. | 68% | Sent | ✓ same dayam selben Tag |
| #23 | 25.10. | 62% | Sent | ✓ same dayam selben Tag |
| #24 | 25.10. | 80% | Sent | ✓ same dayam selben Tag |
| #25 | 25.10. | 69% | Sent | ✓ same dayam selben Tag |
| #26 | 25.10. | 78% | Sent | ✓ same dayam selben Tag |
Tools
- Python
- LLM APIs
- Telegram API
- PHPUnit
- Two-factor authentication
Campaign sign-up botKampagnen-Anmelde-Bot
As a partner I receive advertising campaigns to carry out. New campaigns appear without notice and the places are gone within minutes. The bot watches the partner platform, registers me the moment a campaign appears, falls back to a waitlist, avoids overlapping campaigns and reports to Telegram.
Als Partner erhalte ich Werbekampagnen zur Umsetzung. Neue Kampagnen erscheinen ohne Ankündigung, die Plätze sind in Minuten vergeben. Der Bot beobachtet die Partnerplattform, registriert mich im Moment des Erscheinens, weicht auf eine Warteliste aus, vermeidet Überschneidungen und meldet per Telegram.
Registrations and campaign periodsRegistrierungen und Kampagnenzeiträume
Dot = day the registration was confirmed; bar = campaign period. Besides these five, the bot skipped overlapping campaigns to protect existing registrations.
Punkt = Tag der Registrierungsbestätigung; Balken = Kampagnenzeitraum. Zusätzlich übersprang der Bot sich überschneidende Kampagnen, um bestehende Registrierungen zu schützen.
• Campaign A
Period: 15.08 – 28.08.2026
Skipped because of overlapping dates:
• Campaign B – conflicts with Campaign A Registrierung erfolgreich:
• Kampagne A
Zeitraum: 15.08. – 28.08.2026
Wegen Terminüberschneidung übersprungen:
• Kampagne B – Konflikt mit Kampagne A08:44
Active days: 2 / 3 ❌
Sat 17.10 – 1.738 km
Sun 18.10 – 1.764 km
Until campaign end: 11 days Distanz: 3,502 / 10 km ❌
Aktive Tage: 2 / 3 ❌
Sa 17.10. – 1,738 km
So 18.10. – 1,764 km
Bis Kampagnenende: 11 Tage13:01
Active days: 4 / 3 ✅
Weekly target reached. Distanz: 10,413 / 10 km ✅
Aktive Tage: 4 / 3 ✅
Wochenziel erreicht.14:05
Telegram notifications, translated from the original language and anonymised.
Telegram-Benachrichtigungen, aus der Originalsprache übersetzt und anonymisiert.
Tools
- Python
- API integration
Daily status monitorTäglicher Status-Monitor
A bot that checks the status of a pending case on an official website every morning and sends me a Telegram message with the result. The site uses bot protection, which is handled by a dedicated container; the bot was developed and tested locally in Docker and then run as a scheduled service. Credentials are kept outside the code.
Ein Bot, der jeden Morgen den Status eines laufenden Verfahrens auf einer offiziellen Website prüft und mir das Ergebnis per Telegram schickt. Die Seite ist durch einen Bot-Schutz gesichert, den ein eigener Container übernimmt; der Bot wurde lokal in Docker entwickelt und getestet und läuft als geplanter Dienst. Zugangsdaten liegen ausserhalb des Codes.
Site and case intentionally not named.
Seite und Fall bewusst nicht genannt.
The file is in a mandatory-coordination procedure.Ein Vorgang wurde angelegt, Nr.
Der Vorgang befindet sich im Verfahren der zwingenden Abstimmung.07:01
The file is in a mandatory-coordination procedure.Ein Vorgang wurde angelegt, Nr.
Der Vorgang befindet sich im Verfahren der zwingenden Abstimmung.07:01
The file is in a mandatory-coordination procedure.Ein Vorgang wurde angelegt, Nr.
Der Vorgang befindet sich im Verfahren der zwingenden Abstimmung.07:01
Daily Telegram message, translated from the original language; identifiers redacted.
Tägliche Telegram-Nachricht, aus der Originalsprache übersetzt; Kennungen geschwärzt.
Tools
- Python
- API integration
Club website with CMS and SEO settingsVereinswebsite mit CMS und SEO-Einstellungen
I built a complete website with a PHP/MariaDB database and its own admin area (CMS). Pages are made of blocks, events are entered once and appear everywhere, forms land in one inbox. Two-factor authentication, user roles and security are built in from the start.
Entwickelt habe ich eine komplette Website mit PHP/MariaDB-Datenbank und eigenem Verwaltungsbereich (CMS). Seiten bestehen aus Blöcken, Termine werden einmal erfasst und erscheinen überall, Formulare landen in einem Eingang. Zwei-Faktor-Anmeldung, Benutzerrollen und Sicherheit sind von Anfang an eingebaut.
The new websiteDie neue Website


The new website was developed and completed on a test database; the screenshots show test data.
Die neue Website wurde auf einer Testdatenbank entwickelt und fertiggestellt; die Screenshots zeigen Testdaten.
Custom admin area (CMS) with SEO settingsEigener Verwaltungsbereich (CMS) mit SEO-Einstellungen
For every page, title, description, canonical URL, robots directives, Open Graph, Twitter Card and schema.org are set right in the CMS, with no code and no technical knowledge.
Titel, Beschreibung, Canonical-URL, Robots-Direktiven, Open Graph, Twitter Card und Schema.org lassen sich pro Seite direkt im CMS einstellen, ohne Code und ohne technisches Wissen.
Try it: click the menu on the left. SEO is framed in yellow.
Zum Ausprobieren: Klicken Sie links im Menü. SEO ist gelb umrahmt.


Test environment with fictitious data; some fields are blurred.
Testumgebung mit fiktiven Daten; einzelne Felder sind unkenntlich gemacht.
Tools
- PHP 8
- MariaDB / SQL
- Docker
- Two-factor notification