Auto-Apply mit Claude Code und dem Upwork MCP
Ein Claude-Code-Agent prüft jeden Job anhand festgelegter Kriterien, korrigiert, was sich korrigieren lässt, kalkuliert das Angebot und reicht es ein – danach liest er es zurück und protokolliert einen Beleg.

806 Bewerbungen eingereicht, jede mit eigener Demo, eigenem Video und Anschreiben; läuft alle zwei Stunden.
Kurz gesagt
- 806 Bewerbungen eingereicht, jede mit eigener Demo, eigenem Video und eigenem Anschreiben.
- Der Agent folgt schriftlichen Bewerbungskriterien: wann überspringen, wie kalkulieren, wie viel Boost.
- Jede Einreichung wird aus Upwork zurückgelesen, mit Beleg protokolliert und nach Notion geschrieben.
Das Problem
Nachdem Demo, Video und Anschreiben automatisiert waren, musste trotzdem noch jemand jeden Job öffnen, prüfen, ob er noch offen ist und ob schon jemand eingestellt wurde, einen Stundensatz wählen, über den Boost entscheiden, Antworten einfügen und auf „Senden“ klicken. Bei Tausenden fertigen Anschreiben in der Warteschlange waren das Stunden an Klicks – und manche Jobs waren schon geschlossen, bis wir dran waren.
Was wir gebaut haben
Einen zeitgesteuerten Agenten, kein Skript: Claude Code läuft ohne Oberfläche auf unserem Server, mit dem Upwork MCP verbunden und einem Prompt, der die Regeln unten festlegt. Er arbeitet die Warteschlange Job für Job ab – wie eine sorgfältige Assistenz.
Die Bewerbungskriterien
1. Zuerst prüfen: nur aus echten Gründen überspringen
- Die Kundin hat schon jemanden eingestellt.
- Der Job ist geschlossen oder nur auf Einladung.
- Das Video funktioniert nicht oder wurde für einen anderen Job gemacht.
Upwork selbst blockiert außerdem Jobs, auf die wir uns schon beworben haben, Festpreis-Jobs ohne Budget und alles über unserem Tageslimit.
2. Korrigieren statt überspringen
Ziel ist die Bewerbung. Behebbare Probleme werden vor dem Senden behoben: unvollständige Sätze, fehlende oder unpassende Screening-Antworten, die falsche Domain, übrig gebliebene Platzhalter oder ein toter Demo-Link (dieser Satz wird entfernt). Korrekturen dürfen nur Fakten aus unserem Profil verwenden – nie erfundene Zahlen, Jahre oder Zertifikate. Der korrigierte Text geht zurück nach Notion, die Änderung steht im Beleg.
3. Das Angebot kalkulieren
| Situation | Regel | Beispiel |
|---|---|---|
| Stundensatz mit Spanne | Knapp unter der Mitte: Mitte − 10 % der Spannbreite | 20–40 $ → 28 $ |
| Stundensatz ohne Spanne | Standard | 45 $ |
| Festpreis | Das volle ausgeschriebene Budget, eine Zahlung, keine Meilensteine | — |
| Unser Text nennt einen anderen Satz | Überspringen. Das Angebot darf unseren eigenen Worten nie widersprechen | — |
4. Boost
Höchster aktueller Boost +1 Connect, aber nur wenn das 49 oder weniger ergibt – sonst kein Boost. Hat noch niemand geboostet, bieten wir das Upwork-Minimum. Tageslimit: 300 Connects (Wiener Zeit).
5. Das Format des Anschreibens
- 1Begrüßung: Firmenname, sonst Vorname, sonst Stadt, sonst Land („Hallo nach Irland!“).
- 2Der Demo-Link, in 2–4 Wörtern benannt.
- 3Der Video-Link.
- 4Zwei bis drei Sätze zur Passung, die den genauen Tech-Stack spiegeln, ein echtes Kundenergebnis nennen und unsere Upwork-Glaubwürdigkeit zeigen (Top Rated Plus, 100 % Job Success).
Verbotene Wörter: excited, leveraging, I would love, passionate, thrilled, delighted, synergy. Steht im Post „Beginnen Sie Ihr Angebot mit X“, kommt X in die erste Zeile.
Unter der Haube
- Immer nur eine Vorschau. Auf Upwork macht eine neue Angebotsvorschau die vorige ungültig. Der Agent geht daher so vor: anlegen → Boost-Gebote lesen → mit Boost neu anlegen → bestätigen → nächster Job. Zwei Agenten gleichzeitig würden beide scheitern, deshalb ist die alte Desktop-Aufgabe dauerhaft deaktiviert.
- Belege. Nach jedem Senden liest der Agent das Angebot aus Upwork zurück, speichert einen Beleg mit Angebots-ID, Satz, Connects und Boost und setzt
Time AppliedundConnects Spentin Notion. - Tagesprotokoll. Eine Zusammenfassung (eingereicht, übersprungen und warum, Text geändert) geht in eine Notion-Datenbank und an Telegram.
- Sichere Modi.
--dry-rundurchläuft alle Entscheidungen, ohne einzureichen.--backfillrepariert die Einträge der letzten 7 Tage, ohne etwas zu senden. - Eine Falle, die wir teilen wollen. Die Sicherheitsprüfung der Shell blockierte Befehle mit JSON. Frühe Durchläufe reichten Bewerbungen ein, konnten sie aber nicht verbuchen – spätere Läufe sahen „bereits beworben“ und übersprangen. Wir haben das Verbuchen umgestellt und die Lücke nachgetragen.
Ergebnisse
| Kennzahl | Wert |
|---|---|
| Eingereichte Bewerbungen (mit Zeitstempel) | 806 |
| Geschriebene Anschreiben | 2.945 |
| Entworfene Screening-Antworten | 644 Jobs mit mindestens einer Antwort (bis zu 5 pro Job) |
| Takt | Alle 2 Stunden, rund um die Uhr |
| Menschliche Klicks pro Bewerbung | 0 (Freigabe nur, wenn sich Regeln ändern) |
Was wir gelernt haben
- Regeln aufschreiben wie für eine neue Mitarbeiterin. Der Prompt ist im Grunde ein Onboarding-Dokument. Ging etwas schief, war die Lösung fast immer ein präziserer Satz in den Regeln.
- „Korrigieren statt überspringen“ schlägt Perfektionismus. Die erste Version übersprang alles Unvollkommene. Die meisten Probleme waren trivial zu beheben – also beheben wir sie und senden.
- Immer zurücklesen. Sich ohne Zurücklesen auf „eingereicht“ zu verlassen, verursachte unseren einzigen echten Datenverlust.
Verwandte Projekte
- Davor → Upwork-Demo-Fabrik → Pitch-Videos
- Danach: Jede Kundin, die antwortet, wird eine Pre-Call-Karte in → Artikuno OS mit
Lead from = Upwork.
Bilder.

Bereit für Ihr KI-Projekt?
Kostenloses 30-Minuten-Erstgespräch. Kein Verkaufsgespräch — einfach ein Austausch darüber, was KI für Sie tun könnte.
- Kostenlos · 30 Min.
- Ein konkreter erster Schritt zum Umsetzen
- Auf Deutsch oder Englisch, online