Skip to content

bpnace/Sales-ID

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SalesID for macOS

CI Version Swift macOS Xcode Status Security License Privacy Local Services

SalesID copilot flow

SalesID is an AI sales copilot case for macOS. It explores how a consent-first desktop overlay can assist live calls by combining screen context, OCR, speech transcription, local retrieval, and short German response suggestions.

Case study

Problem

Sales teams need fast context during calls, but a live assistant becomes risky if it captures screen or microphone data without explicit consent and clear local boundaries.

Solution

I framed SalesID as a native macOS copilot case with a consent-first overlay, ScreenCaptureKit context capture, Vision OCR, STT scaffolding, local RAG/LLM service boundaries, and compact German response suggestions.

Engineering decisions

  • Require consent before screen or microphone capture starts
  • Keep overlay UI compact enough for live-call pressure
  • Split OCR, STT, RAG, and LLM responsibilities into explicit service boundaries
  • Prefer local localhost services for the case-study architecture
  • Treat privacy and permission UX as a product signal, not an afterthought

Outcome

SalesID reads as a focused AI sales copilot case: native UI, real-time context, privacy-aware capture, and practical AI assistance rather than a generic chat wrapper.

What this shows

  • Native macOS overlay UX for real-time sales assistance
  • Consent-gated capture flow before screen or microphone access starts
  • ScreenCaptureKit plus Vision OCR for contextual screen understanding
  • Local service boundaries for STT, RAG, and LLM routing
  • Compact German suggestion UI designed for live-call pressure

Status

  • Overlay UI implemented with frosted background, compact default size (220x84), and German localization
  • Consent dialog shown on first launch; capture starts only after acceptance
  • Screen capture (ScreenCaptureKit) wired to OCR (Vision) with throttling
  • IPC to local services: RAG and LLM router (HTTP); STT pipeline scaffolded (WebSocket)
  • Configured entitlements and microphone usage description
  • Debug build is green in Xcode 16 on macOS 15

Quick start

  1. Start local services (in separate terminals):
cd services/stt && uvicorn server:app --host 127.0.0.1 --port 8765
cd services/rag && uvicorn server:app --host 127.0.0.1 --port 8770
cd services/llm && uvicorn server:app --host 127.0.0.1 --port 8780
  1. Build and run the macOS app (Debug):
xcodebuild -scheme SalesID -configuration Debug build

Toggle overlay visibility with Cmd+Option+Space.

Project structure

  • SalesID/ macOS app
    • SalesIDApp.swift, RootView.swift, OverlayView.swift (UI)
    • ScreenCapture.swift (ScreenCaptureKit)
    • OCR.swift (Vision)
    • AudioEngine.swift (mic capture, WebSocket streaming scaffold)
    • IPC.swift (HTTP calls to RAG and LLM)
    • ConsentManager.swift, ConsentView.swift (consent gating)
    • Resources/de.lproj/Localizable.strings (German localization)
    • SalesID.entitlements, Info.plist
  • services/ (see build_instructions.md for reference services; not yet committed here)

Configuration

Create .env at repo root for service settings (see build_instructions.md for suggested values). Fixed localhost ports:

  • STT: 8765 (WebSocket ws://127.0.0.1:8765/ws)
  • RAG: 8770 (HTTP)
  • LLM: 8780 (HTTP)

Roadmap

  • Implement consent event persistence in Supabase (non-sensitive ops data)
  • Finish STT service integration and switch to metal device when available
  • RAG ingest UI and export/delete operations
  • Performance profiling to p95 ≤ 700 ms end-to-end

License

Proprietary. All rights reserved.

About

AI sales copilot case for macOS with consent-gated capture, OCR, local STT/RAG/LLM services, and compact live-call suggestions.

Topics

Resources

License

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages