TODO — Ralfing · Ralf Eggenberger
Per-project status doc for everything a script can't derive: facts from the client, human
approvals, and owner-executed actions. Pipeline progress itself is computed from artifacts —
run node <skill-dir>/scripts/project-status.mjs --project <this project> for the full picture.
Conventions:🔲open ·✅done · owner in brackets · every item keeps a stable[Tn]ID (new items take the next free number, IDs are never reused) — the dossier shows them so anyone can reply "T4 done, T2: …" from a phone. Keep items one-line and checkable.
Client items are questions a non-technical person can answer from their phone: plain words, a concrete example, no trade terms.
Fragen an Ralf — [client]
*(German, because these go to him directly. He can answer by voice message or WhatsApp.)*
- ☐T1Öffnungszeiten Oerlikon bestätigen: Google *und* search.ch/local.ch sagen beide Donnerstag 08:00–18:30 und Samstag 07:30–17:30 — nur deine eigene Website nennt noch Dienstag. Wir haben mit Donnerstag + Samstag gebaut. Stimmt das so? (Baden mit Freitag 07:30–18:00 ist überall gleich.)
- ☐T2Preise: Auf der Website steht nur "60 Min = 138 Fr.". Was kostet die erste Behandlung (ca. 90 Min.) und was eine Folgebehandlung (75 Min.)? Gibt es einen Preis für die ganze Zehnerserie?
- ☐T3EMR-/ZSR-Nummer: Sollen wir sie auf die Website nehmen? Klient:innen brauchen sie für die Rückerstattung der Krankenkasse.
- ☐T4UID/CHE-Nummer: Ist die Einzelfirma im Handelsregister eingetragen? Falls ja, wie lautet die Nummer (Format CHE-123.456.789)? Und bist du MWST-pflichtig? (Wird fürs Impressum gebraucht.)
- ☐T5Fotos: Wir nutzen aktuell die drei Bilder von deinem Google-Profil. Hast du die Originaldateien? Und liegt für die Klientin auf dem Behandlungsbild eine schriftliche Einwilligung vor?
- ☐T6Wie heisst das Gebäude in Oerlikon? Deine Website schreibt "im Oderlin in Zürich-Oerlikon" — Oederlin ist aber das Areal in Rieden bei Baden. (Schreibweise ist "Oederlin", nicht "Oderlin".)
- ☐T17Google Analytics / Tag Manager: Sollen die auf der neuen Website weiterlaufen? (Bisher: GTM-KQVVKPP6.)
- ☐T18Buchung: Bleibt OneDoc? Auf der bisherigen Seite bleibt die Buchungsseite leer, bis man Cookies akzeptiert — das verliert Buchungen.
- ☐T19Domain: Wer verwaltet heute die DNS von ralfing.ch? Beim Go-live zeigen wir sie auf die neue Seite.
Bereits geklärt
- ☑[T6a] Sprachen: Deutsch (primär) + Englisch — Website ist zweisprachig gebaut
- ☑T20Kontaktdaten verifiziert: 076 583 37 19 · info@ralfing.ch · WhatsApp · OneDoc · EMR-Profil
Visibility actions — [client executes, kits prepared]
- ☑T7Google Business Profile: existiert bereits, zwei Einträge (Oerlikon + Rieden), beide 5,0 ★ mit je 4 Bewertungen. place_ids erfasst, Dossiers exportiert.
- ☐[T7b] Öffnungszeiten im Google-Profil Oerlikon korrigieren, sobald T1 beantwortet ist — [client]
- ☑T8Verzeichnisse geprüft →
deploy/listings-kit.md. localsearch-Eintrag (local.ch + search.ch) existiert und ist gut gepflegt. - ☐[T8a] Studio Baden bei localsearch nachtragen — der Eintrag deckt bisher nur Oerlikon ab; Rieden bei Baden fehlt auf local.ch/search.ch komplett — [client]
- ☐[T8b] Apple Business Connect + Bing Places prüfen/anlegen (Bing kann das Google-Profil importieren) — [client]
- ☐[T8c] Namen vereinheitlichen: Verzeichnisse sagen "Ralfing.ch", Google sagt "Rolfing | Strukturelle Integration – Komplementärtherapeut Ralf Eggenberger". Einen Namen wählen und überall verwenden — [client + operator]
Decisions — [operator]
- ☐T9Styleguide approval (review at the preview
/_styleguide/) - ☐T10Final domain + email tier (
references/domain-email.md) - ☑T11Category-spec deviations confirmed (
build/category-mapping.md→physiotherapy-osteopathy-chiropractic) - ☑T21Palette direction: Instagram-Petrol
#398489als dunkler Anker übernommen - ☑T22Fotografie: Google-Places-Uploads verwenden, Originale nachfordern
Phase 2 — [agent]
- ☑T12Copy deck DE + EN (9 Seiten je Sprache, inkl. Impressum + Datenschutz)
- ☑T13Site build (tokens-driven) — 17 Seiten, token discipline clean, distinctiveness reviewed
- ☐T14Publish: GitHub · Cloudflare · custom domain ·
deploy/go-live.md· registry entry
Vor dem Go-live (Produktion) — [agent]
- ☐T23
DRAFT = falseinsite/src/config.mjssetzen → entfernt Ribbon, noindex und Dossier-Surface - ☐T24Alle
[TBD:]-Platzhalter füllen (blockiert von T1–T4) — preflight erzwingt das - ☐T25
astro.config.mjssite:auf die Produktionsdomain umstellen - ☐T26Datum in der Datenschutzerklärung einsetzen + Hosting-Anbieter benennen
Later
- ☐T15Testimonials (real, consented, never invented) + reviews kickoff
- ☐T16Maintenance agreement decision →
deploy/maintenance.md+ registry flag