CareerVine

A field guide to the product

Every feature in CareerVine.

A personal networking CRM built on one insight — a conversation, not a contact, is the atomic unit of a relationship. Everything below grows from that.

This guide catalogs the complete surface area across five specimens: the web app, the intelligence & automation engine that powers it, the Chrome extension, the AI-operator MCP server, and the platform & data layer underneath.

5
Product surfaces
14
App pages
27
MCP tools
5
Scheduled automations
BYO
AI key model

Surface I — The Web App the CRM you live in

A workspace where relationships stay warm

Fourteen pages built around logging conversations, working an outreach queue, and never dropping a follow-up. Material Design 3, deeply wired into Gmail and Google Calendar.

Guided first run

ends with a real email sent, no AI key required
1

Start with a network, not an empty page

New accounts are offered a curated recruiting database — real PMs, recruiters, and BYU alumni at companies that hire new grads — instead of a blank CRM.

2

Import while you connect

Prospects and companies stream in on a live progress bar while you connect Gmail and Calendar in a side tab that lands on a confirmation page.

3

Pick a target company

Companies are ranked by how many alumni you'd know there, with alumni and product-role sub-counts, so the first target is the warmest one.

4

Send a personalized intro

A pre-written, editable intro email — with an automatic alumni-to-alumni variant — sends with follow-ups already scheduled that cancel themselves on a reply.

5

Confetti finale

"Your first networking email is on its way," plus a recap of what's next: the extension, personalized suggestions, one-click availability. Every step is skippable and resumable across sessions.

Home / Dashboard

a three-band relationship hub

"Up Next" unified action list

One prioritized feed blending four item types — your action items, contacts overdue for a reach-out, AI/rule suggestions, and recently added people — each with a colored badge, filter chips with counts, and pagination.

AI

Inline item actions

Per row: Done, Snooze (1 day to next follow-up), Profile, Log interaction, Email/Intro, Save or Dismiss a suggestion, and a quick-note popover — with animated hover labels.

Getting-started checklist

The new-user empty state: add the target database, pick a company, connect Gmail/Calendar, install the extension, log your first conversation.

Today's schedule

A time-grid of today's Google Calendar events with a live "now" line, event popovers (Meet link, attendees with RSVP flags, resolved contact context), and drag-to-create.

Google Calendar

Discovery digest

"New PMs at your target companies" — one line per company ("3 new PMs just joined Qualtrics"), hidden when the weekly search found nobody.

Weekly

Networking stats & streak

Meetings, relationships-on-track %, and contacts-added counters with 7-day trend and a day-streak flame.

Activity heatmap

A GitHub-style calendar of daily activity — conversations, actions taken, contacts added — with hover detail and a Less→More legend.

Network health donut

Healthy / Due soon / Overdue / Never contacted / No cadence, with interactive segment tooltips, beside a "Needs attention" photo grid of neglected contacts.

Contacts

Tiered network

Contacts live in three tiers — My network, Prospects, Archive — as independent toggle chips with counts, so 70 scraped profiles never bury the five you plan to contact.

Smart search

Search across name, email, company, title, school, industry, and tags, with a live dropdown that separates people-matches from by-tag matches.

Rich contact creation

Multiple work experiences, education with degree autocomplete, several emails and phones (with a preferred flag), tags, LinkedIn URL, and custom follow-up cadence.

Contact profile

Two-column layout: photo upload, inline-editable email and cadence, LinkedIn re-link prompts, freshness stamp, and quick actions to log or compose.

Timeline tab

A merged reverse-chronological feed of meetings, interactions, inbound/outbound emails, and completed actions for that person.

Actions tab

Pending items split into your commitments vs. "Waiting on {them}" with days-waiting, inline editing, priority dots, and undo on complete/delete.

Emails tab

Threaded Gmail history per contact — read sanitized bodies, reply, schedule a follow-up sequence, and see queued sends with cancel.

Gmail

Attachments tab

Upload, download, and delete files attached to a contact.

Inline editing everywhere

Email and follow-up cadence edit directly on the card — hover to reveal, click to edit, blur to save. No edit mode for the two most common actions.

Add to network

A one-click button on the list and profile promotes a prospect into the active network; the first real touch graduates anyone automatically.

Relationship health as a ratio

Color reflects days-since-contact ÷ your cadence, not a raw date — a 30-day cadence at 10 days reads green; a 7-day cadence at 10 days reads red.

Extension preview page

A landing page for a LinkedIn profile captured by the extension: full experience/education, suggested tags, and Save-to-Contacts with duplicate detection.

Companies — the recruiting command center

Targets & all-companies views

Toggle between tracked employers and every company in your network history, sorted by priority, next-app date, traction, or name.

URL-synced filter bar

Stackable status chips (Researching → Closed), traction, tier, and contacts filters — all shareable/bookmarkable via the URL with a live result count.

Add a company early

Chase a company before you know anyone there: add name, LinkedIn URL, and office in seconds, deduped against every company already in your network.

Per-office pipelines

A location scope selector makes each office ("Google San Diego") its own targetable pipeline with its own status and notes.

Contact roster by persona

Current and former employees grouped into your network vs. prospects, with persona badges (Alum·Product, Recruiter), BYU-alum flags, outreach stage, and email status.

Stage stepper

Researching → Active outreach → Applied → Interviewing → Closed, each stage an expandable editor with a collapsed summary and autosave.

Applications & documents

Track multiple applications per company with role, location, date, and resume + cover-letter PDF uploads.

Interview rounds & cycles

Log interview rounds (date, interviewer, questions); "prepare for next cycle" starts a fresh application cycle that keeps each season separate.

Recruiting-intel log

A timestamped notes log for application windows, referral programs, and team info — everything you learn on a call lands somewhere you'll find it again.

New-hires discovery card

Weekly-discovered PMs at this company, each with add-as-prospect (auto-enriched) or dismiss.

Weekly

Outreach flow

work one company at a time

Company-at-a-time queue

Prev/next (with ←/→ keys) through target companies ordered by application deadline then priority, showing "Company X of N".

Context strip

Logo, priority, program, next-app window, latest intel note, and links to the full company page and bench.

People cards

Current and (collapsible) former employees with persona, alum, and stage badges, an adjacency score, and a "why they were kept" review note.

Person modal

The full picture of a contact — roles here and elsewhere, education, email provenance — with Write email, Open profile, and Mark contacted for off-platform outreach.

Bench-aware skipping

Companies with only bench or no contactable people are skipped, with a count and a link so nothing hides silently.

Activity, meetings & transcripts

One modal for everything

The unified conversation modal logs a past meeting (notes, transcript, AI action items) or schedules a future one (private reminders, Calendar invite, Meet link) — eight types, multi-contact, reachable from anywhere.

Unified activity timeline

Meetings and interactions in one newest-first feed, searchable across titles, notes, private notes, attendee names, and summaries.

Meeting cards

Attendee chips with RSVP status, an "On calendar" badge, private reminders, notes, a transcript viewer, and file attachments.

Transcript upload

Paste VTT/SRT/plain text (auto-detected) or upload audio (MP3/WAV/M4A) for speaker-diarized transcription.

Deepgram

AI speaker matching

Maps anonymous "Speaker 0" labels to your known contacts using names, roles, and content, with confidence scores and one-click confirmation.

AI

Action items from transcript

Pulls concrete commitments, splitting your tasks from what the other person owes you, each with an evidence quote and resolved due date.

AI

Action items

Grouped task list

Overdue, Due this week, Due later, and No due date, each card showing priority dot, contact, linked meeting, and due status.

"Suggested for you"

An AI/rule suggestion banner with "I already did this", "Save for later", and "Not interested".

AI

Waiting-on-others tracking

The AI captures what the other person committed to; after 7 days the app nudges a gentle follow-up so you never forget to cash in on an offer.

AI

Detail modal

Full description, dates, and the linked meeting with its notes and transcript in context.

Optimistic complete with undo

Completing or deleting is instant, with an undo countdown and an offered "Log conversation" follow-up.

Completed archive

A collapsible completed section with restore, edit, and delete.

Calendar & Inbox

Week & list calendar views

A week grid with hour lines, all-day row, current-time line, private-as-"Busy" events, and recurrence/video markers — plus a date-stamped list view.

Google Calendar

Drag-to-create meetings

Drag on the grid to open a pre-filled meeting form that writes to Google Calendar with a Meet toggle and invite selection.

Contact-filtered calendar

Filter events by All / With contacts / No contacts, with silent background auto-sync.

Full Gmail inbox

Inbox, Sent, Scheduled, Follow-ups, Drafts, Trash, and Hidden tabs scoped to your networking, with a live unread badge in the nav.

Gmail

Thread triage

Reply, move to a Gmail label, hide (keep in Gmail, hide from app), or trash/restore — with follow-up-count and linked-calendar badges.

Inbox filter panel

Filter by contact, direction, recency, thread type, and follow-up presence.

Follow-up sequence builder

Build or edit a multi-step sequence — per-step delay, send time, subject, rich body, AI-generate — that auto-cancels when the recipient replies.

AIAuto-cancel

Compose & global surfaces

Compose email modal

To/Cc/Bcc, rich-text body, contact autocomplete, provenance warnings, schedule-send, and auto-saved drafts — used from every surface.

Write with AI

Pick a built-in preset (Introduction, Follow-up, Thank you), a custom template, or your own prompt, optionally feeding prior meeting notes for personalization.

AI

Guided intro flow

For first-touch emails: a "how you met / your goal" form → AI intro → editable draft → an AI follow-up plan that auto-schedules reply-aware follow-ups.

AI

Availability insertion

Insert real open calendar slots (standard/priority/custom profiles) straight into the email body.

Adaptive top navigation

Home, Activity, Contacts, Companies, Actions, plus an unread-aware Inbox icon, Calendar, admin shield, and a back-trail that knows where to return you.

Setup banner

An app-wide prompt to connect Gmail and Calendar, with an expandable "why does Google show a warning?" explainer, dismissible per session.

Surface II — Intelligence & Automation the engine under the app

The systems that keep the network alive

Beneath the UI: AI drafting and extraction, reply-aware send automation, budget-capped LinkedIn enrichment, career-change detection, and a weekly discovery engine — every one guarded by rate limits, spend caps, and graceful failure.

AI drafting & suggestions

Draft intro email

Subject + HTML body for a first outreach, tone-adjusted for cold vs. warm and grounded in how you met, your goal, and past interactions.

AI

Draft follow-up sequence

Exactly three reply-in-thread follow-ups, progressively shorter and spaced ~7/14/21 days: check-in → add-value → gentle final bump.

AI

General AI composer

Free-form "write me an email about X" pulling in contact context and selected meeting notes, with an auto-generated subject line.

AI

"Up Next" suggestion engine

Blends rule-based generators (graduation proximity, cadence miss, relationship decay, waiting-on reminders) with an LLM pass that mines history for a specific, timely reason to reach out.

AI

Article-share pipeline

An agentic chain: extract a contact's interests → search the web (Serper) → loop an LLM evaluator ("would a real person forward this?") → write a warm reconnection email referencing the find.

AI

Grounded, human-sounding drafts

A 32KB context budget keeps quality high; the prompt blocks generic phrases like "I stumbled upon" so emails sound like you wrote them.

Send automation & deliverability

Follow-up cron

Every 15 minutes: sends due follow-up steps, checks each thread for a reply and cancels the whole sequence if found, sends at most one step per tick, and respects the daily cap.

15 min

Scheduled-email cron

Every 15 minutes: sends due scheduled emails across all users, isolating per-user failures and reporting throughput/delay telemetry.

15 min

Daily send cap

A 100/day Gmail send limit protects deliverability; the guard is re-checked on every send path, app and MCP alike.

Guardrail

Bounce detection & refusal

Gmail delivery failures (NDRs) are parsed to flag bounced addresses, cancel their pending sequences, and refuse them everywhere — draft, send, schedule, sequence.

Guardrail

Reply-aware graduation

When a prospect or archived contact replies, they graduate into the active network and their follow-up clock resets.

Contact-email sync

A resumable, time-budgeted pass pulls 90 days of Gmail history per contact and thread-matches inbound replies to fire the reply-received signal.

Gmail

LinkedIn enrichment & change detection

On-demand enrichment

Re-scrape one contact's LinkedIn profile or find their email via Apify — idempotent, debounced, and monthly-cap-gated, completing async via webhook.

Apify

Daily cadence refresh

Each day, per user, the ~80 stalest contacts are batch-scraped within spend caps so profile data stays current on its own.

Daily

Monthly spend caps & kill switches

A hard monthly USD cap, a softer cadence cap, and per-account enrichment/diff/discovery switches keep paid scraping bounded and controllable.

Guardrail

Change-event diff engine

Compares before/after snapshots into tiered events: promotion, company change, boomerang, open-to-work and hiring flips, location change, new certification — with false-positive guards.

Work-anniversary events

Detects whole-year anniversaries this month and surfaces a "congratulate them" touchpoint, throttled and bench-excluded.

Change-event feed & dismiss

Surfaceable events flow into "Up Next" (Tier 1 outranks Tier 2); dismissals are permanent via stable dedupe keys.

Discovery & analytics

Weekly discovery engine

For opted-in users, searches the stalest high-priority target companies for PMs who joined in the last 90 days — the warmest cold outreach there is.

Weekly

Candidate dedupe & ingest

New profiles are deduped against existing contacts, tombstones, and known candidates before surfacing; people you already know never appear.

Add or dismiss candidates

One click adds a candidate as an auto-enriched prospect at the right company; one click dismisses them forever.

Cross-surface event registry

One typed vocabulary shared by web, server, MCP, and extension, keyed to a north-star metric: replies received.

Outcome analytics with first-party mirror

Every AI draft records whether it was sent as-is, edited (and how much), or discarded; sends, replies, and meetings mirror into CareerVine's own database so data outlives any vendor.

Activation milestones

Fires once per user at contacts-5 and companies-emailed-5, with internal-user activity filtered out of product metrics.

Cross-cutting guardrails. Every route is wrapped with auth, schema validation, per-route hourly rate limits, and awaited analytics. AI features route through a "bring-your-own-key or shared-key" runner with a 24-hour trial and graceful degradation — when a key is out of quota, rejected, or missing, the feature says exactly what's wrong with a one-click path to fix it, never a spinner that never resolves.

Surface III — Chrome Extension LinkedIn → CRM in one click

Import anyone without copy-paste

A Manifest V3 extension that scrapes a LinkedIn profile, has AI structure it into clean fields, lets you review and edit in a side panel, and saves it as a CareerVine contact — all inside a closed Shadow DOM that can't fight the host page.

Floating action button

A CareerVine vine icon appears only on LinkedIn profile pages; one click toggles the side panel open.

Shadow-DOM side panel

The full React panel app renders in a closed Shadow DOM with all: initial isolation, so LinkedIn's CSS can't leak in and the extension can't break LinkedIn.

Profile scraping & cleaning

Waits for lazy-loaded sections, then aggressively strips pronouns, follower counts, activity, and UI junk down to Header, About, Experience, Education — so the AI parse is accurate and cheap.

Profile photo capture

Grabs a real 400×400 photo with a three-tier fallback (rewrite from 100×100, graceful null for ghost avatars) so the saved contact is recognizable.

AI-structured parsing

Cleaned text returns as structured fields — name, location, industry, dated experience, education, status, suggested tags, and generated notes.

AI

"Already in CareerVine" check

Every profile is checked by LinkedIn URL before scraping; a match shows the existing contact and offers "Refresh from LinkedIn" instead of a blind re-import.

Review & edit before saving

Every field is editable — status toggle, follow-up cadence, add/remove experience and education rows with month/year pickers — and edits persist in the per-profile cache.

Save to CareerVine

One click creates or updates the contact with photo; the header switches to a deep link into the web app.

Auto-analyze mode

An opt-in toggle that scrapes and parses each profile automatically as you browse, for power users batching profiles.

Two-hour per-profile cache

Parsed profiles, photos, and edits cache per LinkedIn slug so revisits load instantly with no redundant AI cost or cross-tab collisions.

SPA navigation tracking

Detects LinkedIn's client-side route changes and re-checks the DB, cache, and auto-analyze state as you click around without full reloads.

Progress UI & cooldown

Staged progress ("Reading profile…", "Enriching…") with a 30-second scrape cooldown that protects LinkedIn and the backend.

Toolbar popup

A home base with sign-in, an Import tab (live "is this a profile?" indicator + quick-start), and a Recent tab listing your last imports with relative timestamps.

Secure session handling

Auth tokens live only in the background service worker, auto-refresh with a single-flight guard, and never touch the content script or page — XSS-resistant.

Security

Graceful failure states

Specific, friendly panels for no/invalid/quota-exhausted AI key and hourly import limits, mirroring the web app's copy with a one-click fix path.

Surface IV — MCP Server 27 tools · an AI operator for your network

Hand your whole network to Claude

An OAuth-protected Model Context Protocol server lets an AI assistant research contacts, write and send grounded Gmail, work the outreach queue, and manage meetings — under the exact same guardrails as the app. The same tools run locally over stdio for development. By design it exposes data and actions only; Claude is the generator, so there are no AI-generation tools.

Contacts & research

search_contacts

Search the network by name, email, company, title, school, industry, or tag; filter by tier, returns compact rows with stage and last-touch.

get_contact_dossier

Everything known about one person in one document — the grounding Claude reads before writing an email, including email provenance and history.

add_contact

Create a contact with emails, phones, company, title, school, and location, find-or-creating entities to avoid duplicates.

add_contact_note

Append a timestamped note straight from conversation.

tag_contact

Apply one or more tags, creating any that are missing.

set_network_status

Manually move a contact between active, prospect, and bench tiers.

Email

drafts by default · sends are confirm-gated

create_email_draft

The default path — a real Gmail draft (markdown→HTML, thread-aware) for human review; refuses bounced addresses.

send_email

Sends immediately, but requires confirm: true, enforces the daily cap and bounce refusal, and logs an interaction.

Confirm-gated

schedule_email

Queue an email for a future ISO timestamp, delivered by the app's cron.

create_follow_up_sequence

Attach timed follow-ups to a sent thread that auto-cancel the moment the contact replies.

list_scheduled

List pending scheduled emails and active sequences with next send times.

cancel_scheduled

Cancel a pending scheduled email or an entire follow-up sequence.

search_email_history

Full-text search over cached Gmail, optionally scoped to one contact.

get_email_thread

Live-fetch full message bodies for a thread for reply context.

Outreach engine

list_outreach_queue

The company-by-company queue, ordered by deadline then priority, with a "why" reason per entry.

list_companies

Companies in the network with people counts, target status, priority, and traction.

get_company

The full company picture — roster, offices, target status, and the recruiting-intel log.

add_company_intel

Append a timestamped recruiting note, auto-promoting the company to a target.

set_stage_override

Manually set a contact's outreach stage for off-platform activity like a LinkedIn DM.

Relationship upkeep

log_interaction

Record a touchpoint that graduates prospects and resets the follow-up clock.

create_action_item

Create a to-do or a "waiting-on" item linked to one or more contacts.

list_action_items

Open items filtered by due window, direction, or contact, with age for waiting-on items.

update_action_item

Complete, snooze, reschedule, or edit an item.

list_due_followups

The "who should I reach out to today" list, most-overdue first.

get_network_health

The "how am I doing?" dashboard — streak, on-track ratio, most-neglected contacts, per-tier counts, 30-day activity.

Calendar

list_meetings

Upcoming events from the synced calendar with attendees matched to contacts and Meet/Zoom links.

create_meeting

Create a Google Calendar event with an invite and optional Meet link; linking it graduates a prospect.

Two shells, one implementation. The hosted server at /api/mcp is an OAuth 2.0 protected resource verifying Supabase-issued JWTs, scoped per request and rate-limited to 100 calls/hour/user. The local careervine-mcp/ package runs the identical 27 tools over stdio for development. A dedicated OAuth consent screen shows the requesting client and exact scopes before any access is granted — and there are no delete tools anywhere.

Surface V — Platform & Data accounts, keys, bundles, admin

The layer that makes it a product

Authentication, a bring-your-own-key cost model, living data subscriptions, an admin control plane, and the content pipeline that seeds new users with a real network instead of an empty page.

Data subscriptions

free, living bundles — never a paywall

Subscribe to curated lists

Import admin-published bundles — say, every IB analyst at the NYC boutiques plus the banks and their offices — straight into contacts as ready-to-work prospects.

Living updates

When a bundle is re-published with new people or corrected emails, subscribers receive the changes automatically within minutes.

Auto-sync

Fill-empty merge

The merge only ever fills in blanks — nothing you've edited, tagged, or annotated is overwritten.

Respectful unsubscribe

Keep everything, or remove only the contacts you never touched; anyone you've emailed or edited always stays.

Resilient apply loop

A chunked, cursor-driven copy with a live progress bar, backed by a QStash worker and daily cron sweep in case the tab closes mid-import.

Daily safety net

Accounts, keys & settings

Bring your own AI keys

Add an OpenAI key for text features and/or a Deepgram key for transcription so usage bills to you — each encrypted at rest, never returned to the browser, and live-validated before saving.

Encrypted

First-day free AI trial

New accounts get shared-key AI "on us" for a day, then are guided to add their own key or request continued access.

Supabase auth flows

Email/password sign-up, sign-in, forgot-password, resend-confirmation with cooldown, and a confirm link that signs you in immediately even on a fresh device.

Availability profiles

Standard and Priority working-hour presets per weekday with buffers, plus a "count as busy" calendar selection and timezone detection.

AI templates

Create, edit, and delete custom "Write with AI" prompt templates that appear alongside built-in presets.

Connect-an-AI-client card

Copy the hosted MCP URL with per-client setup steps for Claude, Claude Code CLI, ChatGPT, Codex, and Cursor.

Data & scraping dashboard

A read-only view of month-to-date Apify spend vs. cap, run health, last refresh time, and discovery spend.

Privacy policy & Limited Use

A full policy page documenting data handling, Google Limited-Use disclosure, RLS security, and the extension's on-LinkedIn-only scope.

Admin control plane & content pipeline

operator-only

User management

Search users; set role, status (suspend/reactivate freezes queued work), and password; manage a user's contacts and inject bundles.

Per-account toggles

Inline reversible switches for shared-AI fallback, Apify enrichment, change detection, discovery feed, and per-bundle visibility.

Tenant-wide bulk controls

Flip enrichment, change detection, and discovery for every account at once, with an audit log.

Bundle publishing

A token-authenticated publish flow (begin → chunk → finalize → resolve) that fans changes out to subscribers, with a zero-change no-op.

IB recruiting pipeline

A staged Apify + agent-reviewed data pipeline that produces a curated dataset of BYU-family alumni and per-office bankers across 30 banks and 228 offices to seed a bundle — spend hard-capped per run.

Apify

Durable photo mirroring

Bundle publishing mirrors LinkedIn photo URLs to Cloudflare R2 so avatars stay durable after LinkedIn's temporary URLs expire.