KG System Map

Live from the VPS · updated Mon Oct 19, 10:38 AM · refreshes every 15 min
42 running2 shadow / dry3 off0 failing

Needs you

  • Nothing is failing right now.

Rebuild progress

  • S1Account configDone
  • S2System MapDone
  • S3Compliance guardTo do
  • A1Inbox engineIn shadow
  • A3Qualify & reviewTo do
  • A4Hand-off to dispoTo do
  • A5Seller listsTo do
  • A6Seller contracts (last)To do
  • D1Deal bookTo do
  • D2BoweTo do
  • D3Buyer marketingTo do
  • D4Walks (7 jobs -> 1)To do
  • D5OffersTo do
  • D6Buyer contracts & closing (last)To do
RunningShadow or dry run: works out what it would do, writes nothingOffFailing

Seller lists & blasts

Sellers are pulled and texted by each account's main blast.

Seller auto-enroll: OFF
  • blast-monitorRunning

    Reports how many fresh sellers are left in each SMS account's blast

    ran 1h ago · next in 1m
    “every market has people left to text.”
  • blast-replenishOff

    has not run
    “Nothing needs refilling. No credits spent.”

Seller replies

Every reply is read: fields filled, opt-outs handled, callbacks dated. Part 2 (inbox engine) is replacing these in shadow.

  • acq-inboxShadow

    Part 2 inbox engine: reads each new seller reply once and decides everything (SHADOW: logs, writes nothing)

    ran 6m ago · next in 8m
    “SHADOW - nothing written to GHL. actions: {'suppress': 8, 'mark_read': 1, 'note_recommendation': 9, 'suggest_reply': 7, 'flag_va': 2}”
  • acq-extractRunning

    Reads seller texts and fills asking price, condition, timeline fields

    ran 7m ago
    “updated: 3 contact(s)”
  • acq-clear-unreadRunning

    Marks negative seller replies read so Unread only shows people owed a reply

    ran 2m ago
    “TOTAL: cleared 2, keeping 110 unread”
  • acq-callback-dateRunning

    Turns a seller's "call me tomorrow at 9" into a real callback date

    ran 4m ago
    “filled 4, could not read 12”
  • acq-lead-cardsRunning

    Creates the seller's card in the right acq stage when they engage

    ran 7m ago
    “cards created: 0”
  • city-autotagRunning

    Tags each new opp's contact with its city

    ran 3m ago
    “[2026-10-19T10:35:09] === done ===”
  • acq-callback-notifyRunning

    Tells the VA and rep when a seller booked a callback, and chases it

    ran 4m ago
    “sent 0 alert(s)”
  • seller-callback-watchRunning

    When a VA books a Seller Callback slot, moves the card/tasks to match

    ran 2m ago
    “appointments seen 0 | recorded 0 | already handled 0”

New Lead / No Answer

51 open cards

VAs work the replies. When a VA qualifies on the phone, the VA moves the card to Underwriting.

  • New Lead / No Answer / No Reply51
Automation moving acq cards: OFF
  • acq-triageOff

    Ranks the huge reply queue into a worklist for the VAs

    has not run
    “worklist -> /root/ghl-kpi/acq_triage_worklist.json (0 to work)”
  • stalled-triageRunning

    6:30 AM ranks acq leads nobody is working (read/sort only)

    ran 4h ago · next in 20h
    “tagged 0 contact(s)”
  • alexis-auditRunning

    Reviews what the AI VA (Alexis) said and flags rule breaks

    ran 8m ago
    “TypeError: 'NoneType' object is not subscriptable”
  • disqualified-sweepRunning

    When a VA tags a lead disqualified, closes its card and removes its Property

    ran 1m ago · next in 28m
    “0 card(s) closed · 0 property record(s) removed”

Follow-Up ladder

306 open cards

AI texts a check-in when a follow-up is due, then moves the card down the ladder.

  • Today8
  • 7 Day2
  • 14 Day21
  • 1 Month94
  • 3 Month119
  • 6 Month43
  • 1 Year19
Follow-up AI moves cards down the ladder: ONAI follow-up texts: ON
  • acq-followupRunning

    AI writes and sends long-term follow-up texts to sellers

    ran 31m ago · next in 28m
    “SKIP 206 E Prestige Dr, Muncie, IN 47303 suppressed/DND”
  • followup-watchRunning

    Alerts if the follow-up engine silently stops

    ran 1h ago
    “The follow-up engine is running.”

Underwriting & offers

19 open cards

Acq reps comp, make offers. Friday review grades the VAs' leads.

  • Underwriting14
  • Offer Made / Follow-up5
  • lead-reviewRunning

    Friday: grades the VAs' leads (asking <= 70% of ARV + motivation)

    ran 2d ago · next in 4d

Seller contract

1 open cards

Offer Accepted -> PSA sent and signed. Auto-send is built but OFF (last step of the rebuild).

  • Offer Accepted0
  • Contract Sent1
  • Contract Signed0
Contract auto-send: OFF
  • contracts-morningDry run

    Daily dry report of seller PSAs and buyer Assignments ready or blocked

    ran 1h ago · next in 22h
  • post-contract-auditRunning

    After a contract is signed, checks the deal has every field dispo needs; alerts gaps

    ran 1h ago
    “COULD NOT TEXT: HTTP Error 400: Bad Request”
  • closing-datesRunning

    Copies each deal's closing date from the PandaDoc PSA into GHL

    ran 1h ago
    “set=0 this run. still no PSA match for: []”
  • welcome-packetsRunning

    On newly signed deals, builds a welcome packet for review and texts Alexis

    ran 8m ago
    “2026-10-19 10:30 mode=live queued=0 alerted=0 sent=0 | Spencer Sms 1:pipe HTTP Error 401: Unauthorized ; Spencer SMS 2:pipe HTTP Error 401: Unauthorized ; send ”
  • pandadoc-pollerRunning

    Checks PandaDoc every 30 min for signed Sourced liability forms, archives PDF, alerts

    ran 9m ago
    “[2026-10-19T10:28:12] Patricio Lastra (xcXojvL6W3adEsVNXH5dzS): API error HTTP 403”

Hand-off to dispo

0 open cards

A signed deal crosses into KG Dispo with its Property record.

  • Send to Dispo0
  • acq-property-ensureRunning

    Gives every acq card its Property record (matched by house number + street)

    ran 3m ago · next in 6m
    “created 0 Property record(s)”
  • acq-to-dispoRunning

    Hands a signed deal from acq accounts into KG Dispo

    ran 6m ago
    “handed off: 0”
  • tc-syncRunning

    Copies 'Contract Signed' deals into the TC account

    ran 7m ago
    “Done. New: 0 Errors: 0 Total synced ever: 69”
  • dispo-syncRunning

    Old cross-account push of Contract Signed deals into Dispo Acc (Spencer accounts)

    ran 7m ago
    “Done. New: 0 Errors: 0 Total synced ever: 159”
  • dispo-tc-reconcileRunning

    Double-checks every trigger-stage opp actually landed in Dispo/TC

    ran 1h ago
    “(run with --heal to auto-fix)”

KG Dispo - marketing

3 open cards

Bowe works buyers on ACTIVE deals only; buyer blasts and walkthroughs.

  • New Contract Signed0
  • Dispo Started1
  • Buyer Walkthrough0
  • Buyer Offer Made2
Bowe (dispo rep): ONDaily deal texts to buyers: OFF
  • boweRunning

    Bowe, the dispo rep: texts buyers on active deals

    ran just now
    “done. 0 handled {} | 0 left for a human”
  • deal-followupRunning

    Asks interested buyers on active deals if they are still interested

    ran 3h ago · next in 1h
    “asked 0 · skipped 137”
  • dispo-push-liveOff

    has not run
  • dispo-ladderRunning

    Escalation ladder: how hard each deal is marketed and what comes next

    ran 2h ago · next in 21h
    “DRY RUN — nothing sent, nothing enrolled, no credits spent.”
  • blast-coverageRunning

    Alerts when an active deal is not actually being marketed

    ran 36m ago · next in 22m
    “alerted on 24 change(s)”
  • dispo-offersRunning

    Turns buyer offers in texts into records and alerts

    ran 3m ago
    “No offers in that window.”
  • walk-remindersRunning

    Texts buyers 2h before and 2h after a walk

    ran 8m ago · next in 6m
    “24 booked walk(s) · 0 reminder(s) due now”
  • walk-lifecycleRunning

    Moves walks through scheduled/confirmed/completed/no-show; day-before/after texts

    ran 17m ago
    “0 walkthrough(s) needed something”
  • dispo-props-syncRunning

    Builds Bowe's deal list from the GHL property records

    ran 1m ago
    “wrote 64 deals -> /root/ghl-kpi/dispo_deals.json (backup dispo_deals.json.bak.20261019-103611)”

Buyer contract & closing

1 open cards

Buyer Offer Accepted -> Assignment -> Closing pipeline -> paid.

  • Buyer Offer Accepted0
  • Buyer Contract Sent0
  • Buyer Contract Signed0
  • Closing Contract Signed0
  • Escrow1
  • Closing Scheduled0
  • closing-watchRunning

    Flags deals past their closing date

    ran 5h ago · next in 18h
    “COULD NOT TEXT: HTTP Error 400: Bad Request”
  • jv-pollerRunning

    Picks up new JV Deal Board submissions, creates the dispo card, alerts Korbin/Spencer

    ran 44m ago
    “✓ processed 3746 Chapel Hill Rd, Douglasville, GA 30135 (contact EGUMQvsI7wJAlxN1nER7, opp None)”

Compliance guard

  • auto-pauseRunning

    Pauses an account's senders 20 min after an opt-out warning if nobody acts

    ran 1m ago
    “no pending alerts”
  • optout-watchRunning

    Warns Korbin + Spencer when an account's opt-out rate nears carrier suspension

    ran 44m ago
    “no accounts over opt-out warning threshold”
  • sms-restrictionRunning

    Instant alert when an account-level carrier/A2P restriction hits SMS 1/2/3 or KG Dispo

    ran just now
    “[10:37] restriction alerts: 0”
  • ghl-email-watchRunning

    Alerts Korbin + Joad on GHL compliance emails (opt-out/suspension/A2P)

    ran 1m ago
    “ghl_email_watch: 3 accounts, scanned 267, fired 0”
  • suppress-sweepRunning

    Every 12h tags people who said no/stop as opted-out/not-interested

    ran 4m ago
    “2 never again · 26 not now”
  • optout-backfillRunning

    Every 4h re-scans old threads for people who said stop and were texted anyway

    ran 1h ago
    “133 exposed · 80 suppressed”

Health & checks

  • health-checkRunning

    Morning health text

    ran 2h ago · next in 21h
    “🟠 KG Systems Mon Oct 19 | dispo-rep OK · missed X · syncs OK · resends X · discord OK · awake OK · dispo-live OK · mail OK · PPC leads today: 0”
  • accounts-checkRunning

    Daily: the account config still matches GHL

    ran 1h ago
    “accounts-check.service: Unit configuration has fatal error, unit will not be started.”
  • heartbeatRunning

    Checks the wholesale system works right now and alerts on breakage

    ran 39m ago
    “(nothing changed — staying quiet)”

Switches: what is on or off

  • OFF Seller auto-enrollKorbin: 'lets stop the auto enroll for acq accounts' (blast-replenish disabled) | Korbin 2026-10-19: set up auto enroll for sellers AND buye
  • OFF Auto-resendKorbin: resends only when he asks, for the accounts he names
  • OFF Contract auto-sendKorbin: auto-send contracts LAST, once the system is consolidated. Pipelines run dry.
  • OFF Daily deal texts to buyersdispo-push-live disabled; volume to be decided (was up to 6,750 texts/day)
  • ON Bowe (dispo rep)works only active deals (property deal_status=active)
  • ON AI follow-up textsacq-followup sends AI follow-ups to sellers; inventory flagged it for Korbin to confirm
  • OFF iMessageDiscord only
  • OFF Buyer auto-enrollKorbin: buyer auto enroll comes later, with seller auto enroll, after consolidation
  • OFF Automation moving acq cardsKorbin: 'i want you to not move any oppurtunites on acq side thats VA and Acq jobs'. No automation moves an acq card's stage; VAs and acq re
  • ON Follow-up AI moves cards down the ladderKorbin: 'foillow up ai can move' - the ONE exception to acq_card_moves: after the AI sends a follow-up it moves the card down the Follow-Up

Card counts are open cards across Korbin SMS 1-4 (acq stages) and KG Dispo (dispo and closing stages). Jobs on the Mac are not shown yet.