Anti-Ghosting Recruitment CRM
A recruitment CRM add-on that scores client engagement and fires psychology-timed nudges before hiring managers ghost mid-process, saving $10K-$30K placements.
An independent recruiter spends three weeks sourcing, screening, and presenting a shortlist to a hiring manager who seemed genuinely excited on the intro call. Then the emails stop. No rejection, no "we went another direction," no signal at all — just silence through the exact window where the deal was supposed to close. The recruiter has already sunk 15-20 hours of unbilled sourcing work into the search, and the commission that would have paid for it (typically 15-25% of a placed candidate's first-year salary, often landing between $10,000 and $30,000 per placement) evaporates with it. Do that twice a quarter and it is the difference between a stable desk and a feast-or-famine year.
Built for Freelancers, Solo Founders.
Suggested stack: Next.js 14 (App Router) + Vercel, Postgres (Supabase or Neon), BullMQ + Redis, OpenAI or Claude (via Vercel AI SDK), Twilio + Resend, Stripe Billing. Weekend scope: about 10 hours.
The Problem
An independent recruiter spends three weeks sourcing, screening, and presenting a shortlist to a hiring manager who seemed genuinely excited on the intro call. Then the emails…
The Solution
A recruitment CRM add-on layer, sitting alongside (not replacing) whatever ATS a recruiter already runs, that watches client engagement signals — email open and reply latency…
Market Research
The global recruitment CRM market is projected to grow from $2.71B in 2026 to $5.38B by 2035, a 7.9% CAGR (Business Research Insights). The broader recruitment software market…
Competitive Landscape
Bullhorn — The dominant recruitment ATS/CRM, serving 10,000+ staffing firms globally with deep integrations and a broad partner ecosystem. Pricing is entirely custom-quoted (no…
Business Model
Starter ($79/mo) — Up to 2 connected pipelines, engagement scoring for up to 50 active clients, email + one nudge sequence template, weekly risk digest
Recommended Tech Stack
Next.js 14 (App Router) + Vercel — Dashboard, onboarding flow, and API routes in one repo; Vercel Cron handles the nightly risk-recalculation sweep and weekly digest emails.
AI Prompts to Build This
Copy these build prompts into Claude, Cursor, or your AI coding tool. Create a free account to unlock the full research behind them.
1. Project Setup
Build the weekend MVP of "Persist": an add-on for a recruiter's pipeline that scores how fast a client is cooling and sends the right follow-up before they go dark. Stack: Next.js (App Router), TypeScript, Tailwind, Supabase (Postgres, Row Level Security, Auth with email magic link), the OpenAI API for reply sentiment, Resend for the follow-up emails. A Vercel cron route runs the scoring. Pipeline data comes in by CSV this weekend. Deploy on Vercel. Tables (Row Level Security on, scoped to the account that owns the rows): - accounts(id, user_id, name) - connected_pipelines(id, account_id, provider, last_synced_at) where provider is csv - contacts(id, account_id, pipeline_id, name, email, phone, deal_stage, last_contact_at) - engagement_events(id, contact_id, type, occurred_at, metadata jsonb) where type is one of email_open, email_reply, call_answered, call_missed, portal_login - risk_scores(id, contact_id, score, computed_at) - sequences(id, account_id, name, trigger_score_threshold, steps jsonb) - sequence_runs(id, contact_id, sequence_id, current_step, status) Screens: /login, /contacts (risk badges), /sequences. Env vars (names only): NEXT_PUBLIC_SUPABASE_URL, NEXT_PUBLIC_SUPABASE_ANON_KEY, SUPABASE_SERVICE_ROLE_KEY (server only), OPENAI_API_KEY, RESEND_API_KEY, CRON_SECRET. Do not build: billing, plans or seats, Bullhorn, Recruit CRM or Crelate connections, SMS, a job queue or Redis, multiple users per account. Done when: npm run dev starts, you can sign in, and the seven tables exist with Row Level Security on.
2. Core Feature
Build the one feature that proves Persist: a cooling-risk score that fires a follow-up at the right moment. 1. Import contacts and engagement events from a CSV. 2. A cron route (every 15 minutes, protected by CRON_SECRET) computes a cooling-risk score from 0 to 100 for each contact from four signals: reply latency against that contact's own average, the ratio of missed to answered calls over 14 days, days since the last portal login, and the sentiment of the latest reply. Get the sentiment from OpenAI as JSON { sentiment: "positive" | "neutral" | "cooling" | "unknown", confidence }. Save the result to risk_scores. 3. When a score crosses a sequence's trigger_score_threshold and no run is active for that contact, create a sequence_run at step 0. Each step has an email template with merge fields (contact name, recent deal context, days since last contact) and a wait before the next step. Skip the rest if the contact replied in the meantime. 4. Send each email through Resend and log every send and reply back into engagement_events. 5. /contacts shows risk badges that also carry the number, so color is not the only signal. Rules: never send to a contact who has unsubscribed or replied since the last step. Empty state: with no contacts, show the CSV upload and the expected columns. Done when: an imported test pipeline scores every contact, a contact over the threshold starts a sequence and receives step 0, and a reply stops the rest.3. Landing Page
Build a one-page landing site for Persist, an anti-ghosting add-on for recruiters. Hero: "Stop losing placements to client ghosting." Sub: "Persist watches your pipeline for the warning signs of a cooling client and fires the right follow-up before they go dark." One button: Run your free Follow-Up Effectiveness Assessment, which joins the waitlist. Sections: a live risk-score demo widget with a mock contact list and risk badges, the problem (a lost placement can forfeit $10,000 to $30,000 in commission), how it works in four steps (connect, score, trigger, learn), a placeholder for beta results to be replaced with real ones, and an FAQ on pipeline security, data privacy and how nudges avoid feeling spammy. Waitlist: store the email in a waitlist table in Supabase. No other service. Style: Geist, a near-black background, one warm amber accent for risk indicators, generous whitespace. Done when: the page renders on a phone and a submitted email appears in the waitlist table.
4. Branding Package
Use a design or image tool for this one. A coding agent cannot draw a logo. Brand for Persist: a wordmark and an icon that suggest a pulse line that does not flatten. Colors: near-black, off-white and one warm amber for risk. Type: Geist for the interface and tabular numbers for scores. Deliverables: wordmark, icon, three risk badges (low, rising, high) that differ by shape and number as well as color, and one launch graphic. Done when: each deliverable is saved in one folder and the badges are distinguishable without color.