← blog

CRM w Obsidianie dla freelancera zamiast abonamentu za 200 zł

CRM w Obsidianie dla freelancera: karty klientów w plikach, zamknięta lista statusów i pulpit w Bases. Część second brain, bez abonamentu i logowania.

@Obsidian #productivity #tutorial #workflow
CRM w Obsidianie dla freelancera zamiast abonamentu za 200 zł
▸ // spis treści

Za CRM w chmurze freelancer płaci około 200 zł miesięcznie, a przy kilkunastu klientach używa z niego trzech funkcji. Te trzy funkcje zbudowałem w Obsidianie: karta klienta to plik, status to pole, a pulpit to widok Bases.

CRM leży w tym samym vaultcie co moje notatki. Stał się częścią second brain, a nie kolejną aplikacją do otwierania rano.

Z tego artykułu dowiesz się:


Problem: klient ginie między aplikacjami

Zapytanie ofertowe przeleżało u mnie 15 dni bez odpowiedzi. Nie zginęło, miałem je w skrzynce. Nie było go tylko w żadnym miejscu, na które patrzę rano.

Typowy zestaw freelancera to kontakty w telefonie, ustalenia w mailach, notatki ze spotkań w jednej aplikacji, zadania w drugiej i CRM w trzeciej. Żadne z tych miejsc nie odpowiada na pytanie, u kogo leży piłka.

Płatny CRM dokłada do tej listy kolejne okno. Ja zrobiłem odwrotnie i przeniosłem klientów tam, gdzie leżała już cała reszta.

Rozwiązanie krok po kroku

Krok 1. Dwa katalogi: projekty i osoby

W vaultcie zakładasz katalog CRM z dwoma podkatalogami:

Zasada, która oszczędziła mi najwięcej sprzątania: jeden fakt mieszka w jednym miejscu. Telefon jest tylko w pliku osoby, status tylko w pliku projektu. Klient zmienia numer, a ty poprawiasz jedną linijkę zamiast trzech.

Krok 2. Pola we frontmatterze

Karta klienta to zwykła notatka. Dane, po których chcesz filtrować, wpisujesz we właściwości na górze pliku:

---
code: PRZK
type: client
company: "Firma Przykładowa"
contact: "[[osoba-kontaktowa|Kontakt]]"
website: "https://przyklad.pl"
status: waiting
last_contact: 2026-09-10
due_date: 2026-09-20
outstanding: 0
---
PolePo co
codekrótki kod do zadań i nazw plików
typelead, client albo closed, czyli sprzedaż oddzielona od realizacji
statuskto ma teraz ruch
last_contactile dni klient milczy
due_datetermin najbliższej rzeczy do dowiezienia
outstandingkwota, której jeszcze nie rozliczyłeś

Pod frontmatterem piszesz normalną notatkę: zakres, zadania, ustalenia ze spotkań, dostępy. Tego arkusz nie udźwignie.

Krok 3. Zamknięta lista statusów

Tu wykłada się większość domowych systemów. Po miesiącu masz statusy „czeka", „czekam", „oczekuje na klienta" i „w toku?". Filtr łapie jeden z nich, reszta znika z pulpitu.

Dlatego trzymam osobny plik schematu z listą dozwolonych wartości. Wartość spoza listy nie wchodzi do karty. Mój zestaw:

Rozjazd danych w CRM nie bierze się z lenistwa, tylko z wolnego słownika. Zamknięta lista statusów załatwia sprawę raz, zamiast wymagać dyscypliny każdego dnia.

Krok 4. Pulpit w Bases

Bases to wtyczka wbudowana w Obsidiana. Robi z notatek tabelę albo karty na podstawie ich właściwości. Dane zostają w plikach markdown, widok tylko je czyta.

Tworzysz plik CRM.base z filtrem na katalog projektów i jednym widokiem na każde pytanie, które zadajesz rano:

filters:
  and:
    - file.inFolder("CRM/projects")
formulas:
  silence: if(last_contact, (today() - date(last_contact)).days.round(0), "")
views:
  - type: table
    name: Mój ruch
    filters:
      or:
        - status == "new"
        - status == "action-needed"
    order:
      - file.name
      - company
      - due_date
      - formula.silence
  - type: table
    name: Czekam na klienta
    filters:
      or:
        - status == "waiting"
    order:
      - file.name
      - formula.silence

Formuła silence liczy dni od ostatniego kontaktu. Sortujesz po niej widok „Czekam na klienta" i od razu widzisz, komu wysłać przypomnienie. Tak łapię zapytania, które kiedyś leżały dwa tygodnie.

U siebie mam cztery widoki na projektach: mój ruch, czekam na klienta, pipeline z leadami i tablicę kart. Na katalogu osób stoi jeszcze książka telefoniczna.

Krok 5. Szablon zamiast pustej kartki

Nowego klienta zakładam z szablonu w Templaterze. Szablon pyta o nazwę firmy i kod, sam nadaje nazwę pliku i przenosi go do właściwego katalogu. Każda karta ma te same pola, więc żadna nie wypada z widoków.

CRM jako część second brain

Tej przewagi nie kupisz w abonamencie. CRM nie stoi obok moich notatek, tylko jest w nich.

Notatka ze spotkania linkuje do karty klienta. Karta linkuje do katalogu projektu z ofertami, audytami i plikami od klienta. Otwierasz jeden plik i masz całą historię współpracy, bez skakania po kartach przeglądarki.

Wolniś przy biurku, karty klientów połączone liniami z notatkami w grafie vaulta

Mój vault jest poukładany według Osobistego Systemu Operacyjnego, opartego na metodzie PARA. CRM wszedł do niego jako jeden numerowany katalog obok projektów i wiki. Nie musiałem niczego przebudowywać.

Drugi zysk to agent AI. Claude Code czyta ten sam vault, więc polecenie „co mi leży u klientów" daje briefing z kart, terminów i dni milczenia. W chmurowym CRM-ie agent widzi tylko to, co wystawi mu API.

Typowe pułapki

Dla kogo to ma sens, a dla kogo nie

SytuacjaPliki w ObsidianiePłatny CRM
freelancer, kilkunastu aktywnych klientówwystarcząprzerost formy
kilka osób pracuje na tych samych klientachkłopot z uprawnieniamilepszy wybór
setki leadów i kampanie mailoweprzegrywająlepszy wybór
historia maili przy karcie klientaręcznie albo przez agentawbudowana

Poradniki CRM dla freelancerów stawiają próg na 10-20 aktywnych klientach. Poniżej wystarcza arkusz, powyżej zaczynają uciekać follow-upy. Obsidian z Bases przesuwa ten próg, bo do tabeli dokłada notatki, linki i szablony. Zespołu handlowców nie obsłuży.

Podsumowanie

P.S. Katalogi, frontmatter, szablony i Bases, czyli wszystko, z czego składa się ten CRM, rozkładam na lekcje w kursie Obsidiana.

Częste pytania o Obsidiana: Jak tworzyć szablony, Co to jest Obsidian Bases, Jak używać Dataview.


Damian Ślimak. Twój Nawigator w chaosie AI.