Loading appointmentsβ¦
π₯ Contacts
βΆ
πββοΈ Ara β Customer Service & Sales Assistant
Master Switch (all channels)
β
When OFF, Ara skips every poll cycle on every channel. Hard kill switch.
Dry Run (all channels)
β
When ON, intended outbound is logged but NOT sent. Flip OFF only after watching the activity feed.
Channels
iMessage LIVE βΎ
Model:
βAPI base:
βOwner phone:
βPoll interval: β
xAI key: β
Last poll: β
Last inbound: β
Recent (would-be) sends: β
Reads
~/Library/Messages/chat.db every 30s Β· sends via Messages.app AppleScript (SMS-first, iMessage fallback).ManyChat (IG Β· FB Messenger) LIVE βΎ
Inbound:
POST /webhook/manychatPublic URL:
stones-macbook-pro.tail41be58.ts.netTunnel: Tailscale Funnel (--bg)
Reply path: sync β response body
ManyChat's External Request action POSTs to the webhook above; Ara composes the reply in <9s and returns it in the JSON response (
{reply}). ManyChat's Response Mapping extracts reply and ships it via internal Send Message (bypasses Meta's IG 24h-window REST restriction). Tailscale Funnel runs as a background service β stable URL, no expiry.
LinkedIn DM (Playwright bot, dedicated profile) LIVE βΎ
Bot:
linkedin_dm_bot.pyRunner: FieldApp companion thread
Cadence: every 5 min, MonβSat 8 AMβ7 PM
Inbound:
POST /webhook/linkedinChrome profile: dedicated
LinkedInChromeMode:
dry_run=false (LIVE)
Playwright bot polls
Status: LIVE β Ara's replies are being sent. If LinkedIn shows a Captcha on the profile, the bot pauses on that cycle and logs
linkedin.com/messaging/?filter=unread every 5 min using a dedicated persistent Chrome profile (CDP-attach to main Chrome is dead on Chrome v136+ β DECISIONS.md). For each unread thread, scrapes context + a stand-down signal (last sender is Stone), POSTs to /webhook/linkedin, types Ara's reply via the LinkedIn composer. Runs as a subprocess child of FieldApp (NOT a LaunchAgent β macOS TCC blocks launchd from ~/Desktop).Status: LIVE β Ara's replies are being sent. If LinkedIn shows a Captcha on the profile, the bot pauses on that cycle and logs
checkpoint_detected_on_unread_view; double-click LinkedIn DM Bot - Clear Captcha.command to clear it.
Telegram (Ara β Stone β private owner channel) LIVE βΎ
Bot:
@StoneAraBotInbound:
getUpdates long-poll (pull)Transport: FieldApp pulls β no public URL needed
Outbound: Telegram Bot API
sendMessageOwner chat: captured (see
logs/telegram_state.json)Config:
scheduling_config.py β TELEGRAM_*
Ara's private back-and-forth channel with Stone β completely separate from every customer thread. She pushes escalations, leads needing follow-up, and new bookings here, and Stone can talk back: ask about a lead, or tell her what to say to a customer and she drafts it with Send / Edit / Cancel buttons (nothing reaches a customer until Stone taps Send). Outbound is a plain Bot API call β no AppleScript, no Messages.app.
Status: LIVE β bot token set, owner chat captured, long-polling thread running (transport switched from push-webhook 2026-05-24 after the dropped close-deal tap, see DECISIONS.md #28). System tab health check tracks transport state.
Status: LIVE β bot token set, owner chat captured, long-polling thread running (transport switched from push-webhook 2026-05-24 after the dropped close-deal tap, see DECISIONS.md #28). System tab health check tracks transport state.
Voice (xAI Voice Β· phone calls) FUTURE βΎ
Stone runs a separate AI voice receptionist today. When wired here, voice-Ara replaces it β same brain + training corpus across text and voice eliminates the FAQ-drift problem. Uses xAI's Grok Voice "Think Fast 1.0".
Email (blasts + reply handling) FUTURE βΎ
Outbound email blasts (Apollo or HubSpot Marketing) plus inbound reply handling. Replies route to Ara's brain just like iMessage / IG DMs. Tooling TBD.
Audit log path:
β
π° Sales β Aging & Follow-up
π΄ Same-Day
β
π‘ Aging
β
π’ Watch
β
Open Total
β
π SF Comment Field Generator
Use the house format: ACTIVE / SOLD / LOST. Output is copy-ready for the Salesforce Comment field.
ACTIVE -
π Sales Pipeline System Playbook
Reference docs live in
~/Documents/Claude/Projects/Scheduling Assistant/Sales Pipeline System/. Use the workflow names below when chatting with Claude.β’ Post-meeting debrief β runbooks/post-meeting-debrief.md
β’ Daily aging sweep β runbooks/daily-aging-sweep.md
β’ Inbound capture β runbooks/inbound-capture.md
β’ Aging rules β reference/aging-rules.md
β’ Customer index β reference/customer-index.md
β’ Comment / Chatter formats β formats/
Loading sequencesβ¦
π Operations Dashboard
Appointments This Week
β
MonβSun, from Calendar
# Sales
β
Stage=Sold count (window)
# Customers (distinct): β
Sales (window)
β
Sum Amount Stage=Sold (window)
REFERRAL Deals
β
All-time direct-sale count
π° Self-Gen Revenue (window)
β
Gross contract $ you self-generated (Stage=Sold & Self-Gen?)
π΅ Self-Gen Commission Earned (window)
β
Your commission $ on self-gen deals (Amount Γ rate)
Window:
π« Pipeline Funnel
Loadingβ¦
Loadingβ¦
Deal-to-Sale Conversion (All Time)
Loadingβ¦
IG Outbound Activity
Comments (as of now / today)
β
Comments All-Time
β
DMs (as of now / today)
β
DMs All-Time
β
Marketing Attribution β Phase 2
Per-flow bookings (ManyChat Fix / Welcome / Auto DM / Cold IG DM) will activate here once UTM tags are added to your Calendly links inside each ManyChat flow. Requires desktop login to ManyChat first β see MARKETING_DASHBOARD_SPEC.md for the 3-minute setup.
ManyChat Top-of-Funnel β Phase 2
Sends / clicks / CTR per flow will populate here once the ManyChat API token is added to
scheduling_config.py. You have Pro tier so the API is available β generate a token in ManyChat Settings β API on your phone when convenient.
π
Automation Schedule
π€ Central Bot Schedule
Change time / days / on-off for any bot, then Save All. π’ sessions are fired by FieldApp now; βͺ sessions still run via LaunchAgents until retired (saving still records their schedule).
Loadingβ¦
FieldApp β Always On
Claude β Scheduled Tasks (data jobs)
π€ Bots
checkingβ¦
β
Comments Today
β
Comments All-Time
β
DMs Today
β
DMs All-Time
β
Realtor Contacts
Facebook Bots βΎ
Loadingβ¦
Loadingβ¦
Loadingβ¦
Instagram Bots βΎ
LinkedIn Bots βΎ
Loading LinkedIn botsβ¦
Wellness Bot βΎ
Protects 2 wellness blocks per week after appointments load:
β’ βοΈ Contrast Therapy β 90 min at NordicOnNine (2899 Rt 9W, Ste 100, New Windsor NY). Thursday evening preferred, Wednesday evening fallback. Walk-ins, no booking required. nordiconnine.com.
β’ πͺ Wellness Block (PF) β up to 2 per week from {Wed, Fri, Sat} excluding the Contrast day. Picks the PF closest to that day's last appointment so your route is last appt β gym β home.
Re-runs every 15 min, reassesses when appointments change, sends a Telegram reminder the day-of each block.
β’ βοΈ Contrast Therapy β 90 min at NordicOnNine (2899 Rt 9W, Ste 100, New Windsor NY). Thursday evening preferred, Wednesday evening fallback. Walk-ins, no booking required. nordiconnine.com.
β’ πͺ Wellness Block (PF) β up to 2 per week from {Wed, Fri, Sat} excluding the Contrast day. Picks the PF closest to that day's last appointment so your route is last appt β gym β home.
Re-runs every 15 min, reassesses when appointments change, sends a Telegram reminder the day-of each block.
Pick your Gmail / personal calendar (NOT Exchange "Calendar")
Start time + duration (min)
This Week's Plan
Loading this week's planβ¦
Bot replans every 15 min from your calendar. Contrast prefers Thu eve (Wed fallback). PF blocks pick the closest gym between today's last appointment and the next day's first.
βοΈ System Health
π©Ί API & Capability Health
Probingβ¦
Live probe of every service the app touches. Each row shows real-time status + how to fix.
Loadingβ¦
Loadingβ¦