Switch to English?
Yes
Переключитись на українську?
Так
Переключиться на русскую?
Да
Przełączyć się na polską?
Tak

37 000 rekordów przeniesionych na 3 platformy w 2 tygodnie — zero danych

Pełna migracja danych CRM dla biura ubezpieczeń Medicare: RadiusBob → GoHighLevel + HealthSherpa
---
Sytuacja
Biuro ubezpieczeń Medicare z ~1,600 klientami prowadziło działalność w trzech odłączonych systemach: RadiusBob (stare CRM), GoHighLevel (nowe CRM) i HealthSherpa Medicare (platforma rejestracyjna). Agenci codziennie ręcznie porównywali wszystkie trzy systemy — brak jednego źródła prawdy, brak możliwości automatyzacji.

Problem
Lata historii klientów znajdowały się w RadiusBob: 1,593 kontakty, 1,222 polisy ubezpieczeniowe, 32,507 notatek interakcji i 793 relacje między kontaktami. To nie był eksport CSV — to była pełna rekonstrukcja przez trzy API z różnymi autoryzacjami, limitami prędkości i formatami danych.

Każdy utracony rekord oznaczał ryzyko zgodności. Ręczna migracja zajęłaby miesiące i wprowadziłaby błędy na każdym etapie.

Rozwiązanie
Zbudowałem wznowialny pipeline migracyjny w Pythonie (Docker + Supabase jako śledzenie stanu synchronizacji). Status każdego rekordu był śledzony indywidualnie — jeśli proces zatrzymał się na rekordzie 500, wznowił się na 501 bez duplikacji.
Usuwanie duplikatów kontaktów: GoHighLevel wymusza unikalne numery telefonów/adresy e-mail, ale RadiusBob pozwalał na współdzielone numery (małżeństwa). Pipeline wychwytywał duplikaty z odpowiedzi błędów API, aktualizował istniejące rekordy i generował raport (163 grupy duplikatów) do przeglądu przez klienta.
Dopasowanie HealthSherpa: Strategia trzech przejść — najpierw według ID beneficjenta Medicare (najwyższa pewność), następnie według imienia + daty urodzenia/adresu e-mail/telefonu, a następnie tworzenie nowych rekordów dla niedopasowanych kontaktów. Każde dopasowanie zapisywało bezpośredni URL rejestracji do jednego kliknięcia z GHL.
Rekordy polis: Schemat obiektu niestandardowego w GHL z 15 polami. Odkryto i obsłużono nieudokumentowane dziwactwa API poprzez systematyczne testowanie.

32,507 notatek: Równoległe przetwarzanie z 8 równoczesnymi żądaniami API skróciło czas importu z ponad 9 godzin do około 1 godziny, pozostając w ramach limitów prędkości.
793 relacje: Zmapowano 10 typów relacji obsługujących zarówno relacje dwukierunkowe (małżonek), jak i jednokierunkowe (rodzic-dziecko). 260 niezmapowanych typów udokumentowano do przeglądu przez klienta.
Stos technologiczny: Python 3.11, Docker, Supabase (PostgreSQL), API GoHighLevel, API HealthSherpa Medicare, asyncio

Wyniki
- ~37,000 łącznych rekordów przeniesionych na 3 platformy
- 100% kontaktów zaimportowanych (1,593/1,593)
- 100% notatek zachowanych (32,507/32,507)
- 99.3% polis zaimportowanych (1,214/1,222)
- 8x szybszy import notatek dzięki równoległemu przetwarzaniu
- Zero utraty danych — każdy importowalny rekord przeniesiony z pełną historią
- 2-tygodniowa dostawa od rozpoczęcia do zakończenia
- Linki do rejestracji Medicare w jednym kliknięciu na każdym rekordzie klienta

Jak to działa
1. Ekstrakcja — Pobierz wszystkie dane z API RadiusBob
2. Transformacja — Normalizuj formaty, oczyść dane, zweryfikuj pola, usuń duplikaty
3. Ładowanie — Prześlij kontakty do GHL, dopasuj do HealthSherpa za pomocą strategii 3-przejść
4. Łączenie — Utwórz rekordy polis, dołącz notatki, zbuduj powiązania relacyjne
5. Weryfikacja — Zgody na liczenie, raport duplikatów, audyt ścieżki walidacji

Każdy krok jest idempotentny i wznowialny. Pipeline może być uruchamiany ponownie bez duplikatów lub utraty postępu.
Szczegóły pracy
Dodana 19 marca
86 wyświetleń
Freelancer
Andrey Boyko
Ukraina Charków
Brak opinii

Gotowy do podjęcia pracy Gotowy do podjęcia pracy
W serwisie 9 lat