LinkedIn automation (sending invites, scraping search URLs, reply detection) cannot run from a browser — LinkedIn blocks CORS + requires session cookie auth server-side. This panel stores campaigns, messages, and contacts in localStorage so the UI is fully usable now. When you're ready to automate, wire these data shapes to a worker (see "Settings → Integration").
Active Campaigns
Contact Pipeline
Unified Inbox
AllRepliedConnectedHotFollow Up
Message Templates
◆ Merge Tag Reference
Tags pulled from each contact record at send time.
Basic:{FirstName}{Company}{Title}{Mutual}{ContactID} Fallback:{Company|your company} — if no Company, uses "your company" Spintax:{{Hi|Hello|Hey}} — random variant per contact Conditional:{if:Tag}text{else}fallback{/if} — branches on a tag
Automation Settings
LinkedIn Session
Paste your li_at cookie value. Never leaves your browser. Used by the automation worker when you deploy one. (how to find it)
Rate Limits
LinkedIn flags accounts that exceed ~200 connection requests/week. These settings get enforced by your automation worker.
Integration
Two deployment paths to wire this UI to real LinkedIn actions:
Build an automation worker — Cloudflare Worker or Node service. Reads campaigns from this CRM's exported JSON, takes the li_at above, runs on a cron schedule, logs back replies via webhook.
Webhook in from GuardianCEO — keep using GuardianCEO for execution, push their reply/status webhooks into this CRM via an endpoint like /webhook/linkedin. Your CRM becomes the unified inbox.
New Campaign
Email Sequences
No sequences yet
Ask OraAssistant: "Build me a 3-email drip for Utah PD chiefs about OraPlex"
Email Blasts
One-off campaigns — send a single email to a segment. Great for product announcements, events, deck drops.
Contact Segments
Utah PD Chiefs
industry=government AND state=UT AND title contains "chief"
— contacts
Rehab Centers · West
industry=treatment AND region=west
— contacts
Unanswered After 14d
last_activity > 14 days AND status=connected
— contacts
Email Templates
Save reusable snippets reps can drop into any sequence or manual email.
Campaign Analytics
Sent · MTD
0
—
Open Rate
0%
—
Click Rate
0%
—
Reply Rate
0%
—
Charts ship once backend is live — opens and clicks pulled from email_sends + email_events tables.
Team KPIs
Team Pipeline
$0
—
Won MTD
$0
0 deals closed
Active Deals
0
across all reps
Quota Pace
0%
—
Rep
Revenue
Quota Progress
Deals Won
Outreach
Calls
No team members yet. Invite reps from .
◆ Team Activity · Live
Activity feed loads from /manager/team/:id/activity once backend is live.
◆ Lead Assignments
Reassign unclaimed leads or rebalance across the team.
Click any contact → "Reassign to…" now that contacts are org-scoped.
Settings
Customization, lead types, dedup tools, and account preferences. Connection setup (Gmail, LinkedIn, AI provider, API endpoint) lives in the Connections view.
Lead Types
Manage the categories your team uses to classify leads — police, clinics, workplaces, etc. Add custom types, edit colors, change icons.
Theme Studio
Customize accent colors and gradients. Per-user — your changes don't affect anyone else on the team.
Duplicate Scanner
Find leads that look like the same person — by email, phone, or LinkedIn URL. Resolve dupes manually or in bulk.
View as Role
Admin testing tool — override the role used for nav visibility. Only changes what you see; permissions are still enforced server-side.
OraTek Portal
Back to the team portal home page. The CRM is one tool among several — training, maps, tools all live there too.
Each rep brings their own accounts. Everything below is tied to your personal access — your keys stay in your browser or encrypted per-user in the CRM. Nothing is shared across the team.
AI Provider
—
OraAssistant works with any major LLM. Pick one, paste the key, done. Each rep brings their own — keys stay in your browser.
◆ Browser-key warning
◆ Help · Where to get a key for the selected provider. Charges go on your personal account.
CRM API Endpoint
—
Where the CRM sends data — your contacts, pipeline, campaigns, sequences. Without this set, the CRM works in browser-only mode (data lives in localStorage). Switch this on once your backend is deployed.
◆ Production · https://api.oratekdx.info — ping /health to confirm before flipping the switch.
Gmail
—
Send 1:1 sales emails from your own address. OraAssistant drafts in your voice and uses your signature. Reply detection pauses drip sequences when a prospect writes back.
Puts your real schedule into the dashboard Calendar widget, powers "next meeting" context, lets OraAssistant book demos and send Calendly-style invites on your behalf.
Scope: calendar.events
LinkedIn (drip automation)
—
Paste your LinkedIn li_at session cookie. Used only by the automation worker — never returned to your browser. Encrypted at rest. Rotate quarterly or whenever LinkedIn logs you out.
◆ How to find it · DevTools (F12) → Application → Cookies → linkedin.com → copy the value of li_at. Looks like AQED... (long string).
First-time setup notes
Google OAuth verification — OraTek's Google OAuth app is pending verification. Until it passes, you'll see an "unverified app" warning on first connect. Click Advanced → Go to OraTek CRM (unsafe) — it's safe; it's ours.
LinkedIn cookies — LinkedIn invalidates sessions whenever they detect unusual activity. If your automation worker errors, it's usually time to paste a fresh cookie.
Anthropic billing — heavy OraAssistant use (Focus Mode daily, long chats) runs $30–80/month on Sonnet 4.5. Set spend limits in console.anthropic.com.
Events & Conferences
Ask OraAssistant: "Find me upcoming oral fluid / drug testing conferences in Texas for 2026" and it will research + fill in all the event details (dates, location, price, industry fit).
New Event
Sales Recruiting
Candidate
Target Role
Stage
Source
Exp. Comp
Last Activity
No candidates yet. Click + Add Candidate or ask OraAssistant to research sales reps in Utah.
Interview calendar loads from Google Calendar when connected (via Connections panel).
▸ Unassigned Leads 0
0 selected
Name ↕
Primary Contact ↕
Type ↕
Status ↕
Stage ↕
Value ↕
Priority ↕
Follow-up ↕
Last Contacted ↕
Health
Website ↕
No leads found
Add leads here or search for them on the Sales Map
📂
Drop files here
PDF, Word, Excel, PowerPoint, images
🎯
Decision Maker Finder
Search for a business, police department, clinic, or staffing agency. We'll show you who to call and what to say based on their industry.
Select an industry to get customized call scripts, discovery questions, objection handlers, and closing techniques. Click Edit Scripts to author your own.
📋 Call Queue
00:00
0
Calls Today
0
Connects
0
Voicemails
0%
Connect Rate
0/ 50 goal
Ready to dial
Hit "Start Session" to load your first lead, or click any lead in the queue.
📝 Log & Disposition
Connected
No Contact
Other
Quick Notes
⚡ Workflow Automations
Automate actions when deal stages change, follow-ups are due, or contacts are updated.
💡 Example Automations
📋 Proposal → Create Task
When deal moves to Proposal, auto-create "Send proposal" task
🎉 Closed Won → Celebrate
When deal is won, log a celebration note and show notification
⏰ Overdue → Priority Bump
When follow-up becomes overdue, set priority to High
📅 Qualified → Schedule Follow-up
When deal moves to Qualified, auto-set 3-day follow-up
Leaderboard
#
Rep
Streak
Calls
Trend
Achievements
💰 Add Deal Value?
You're moving this deal forward — want to add an estimated value?
📋 Status & Pipeline
📝 Custom Fields + Add Field
👤 Contacts + Add
🌐 Company Info
📅 Dates
🏷️ Tags
✅ Tasks + Add
📋 Stage Playbook
📎 Attachments + Add
📝 Notes
📧 Email History
🕐 Activity Timeline
Add Lead
Import Contacts
📁 Drop a CSV or Excel file here, or click to browse
Supports .csv, .xlsx, .xls
+ New Category Type
Create a new industry or company type. It'll be available everywhere — CRM filters, map, imports, and contact records.
⚙️ Manage Lead Types
Customize categories for your contacts. Default types can't be removed. Custom types sync to the Sales Map.
Add New Type
Click Use to open composer · tokens auto-fill from a lead