Skip to content
Quentin Barroin

Case study

Novera Signal

The AI agent that detects, qualifies and scores my LinkedIn prospecting opportunities — and always leaves the decision to a human.

An AI agent for detecting commercial opportunities on LinkedIn, built for IT recruitment: it collects, normalises, analyses with Claude, scores out of 100, categorises and drafts a personalised LinkedIn message — but never triggers a send. Semi-automatic by design: the agent prepares, the human validates.

Role
Design · Product · Development
End to end, solo
Year
2026
Type
AI opportunity-detection agent · IT recruitment
Opportunityto_review
Score
/100
AnalysisClaude
Messageready to copy
Awaiting human validation — no automatic sending.

The challenge

I found my LinkedIn prospecting opportunities 100% by hand: manual search, reading posts one by one, gut-feel analysis, writing each message manually, artisanal follow-up. Time-consuming, and above all fragile — signals slipped through: hiring, growth or sourcing-difficulty posts lost in the feed.

No prioritisation, generic messages, and no structured history of follow-up. The goal: an agent that detects and qualifies these signals the way a recruiter would, prioritises with an objective score, and drafts a ready-to-send message — without ever taking the final decision away from the human.

The solution: a semi-automatic pipeline

From the prospecting query to status tracking, a pipeline in clear steps. Guiding principle: the agent detects, analyses and prepares; the human validates before any outbound action. No automatic LinkedIn sending (ADR-0001 decision), a deliberate choice for compliance and account protection.

LinkedIn collection

From a prospecting query, collection via a provider, then normalisation and deduplication.

Claude analysis

Probable need, urgency, potential and angle of approach — a qualified read of each signal.

Score /100 & categorisation

Every opportunity is scored out of 100 and categorised to prioritise prospecting.

Personalised message

A short, personalised LinkedIn message ready to copy — never sent automatically.

Human validation

Copy or approve: the human keeps control before any outbound action.

Status tracking

Tracked lifecycle: new → to_review → approved → contacted → responded → …

Under the hood

A fully typed Next.js monolith with real production-AI discipline: strict JSON output validated, versioned prompts, and the LinkedIn provider behind an abstraction. The tech is complete; what remains to settle is commercial and legal, not technical.

Next.jsReactTypeScriptSupabaseDrizzleAnthropicZodVercelVitestPlaywright

Architecture

Next.js 15 monolith (App Router, RSC, Server Actions) + React 19, strict TypeScript. A 5-table data model — opportunities, search_queries, opportunity_analysis, messages, runs — on Supabase Postgres with Drizzle ORM and versioned migrations.

AI analysis & scoring

Anthropic SDK (Claude) for analysis, /100 scoring and message drafting, with strict JSON output validated by Zod and versioned prompts. Pluggable analysis engine: Claude or Ollama.

Abstracted LinkedIn provider

A LinkedInProvider abstraction (mock | Unipile): built first against a mock, then Unipile wired in for real. The pipeline never depends on a concrete provider.

Shipped extensions

Sales profile and ESN / end-client targeting, multi-profile scout (sales + builder), on-demand enrichment gateway, and extraction of a post’s “engagers”.

Guardrails & security

API keys never exposed client-side (only Route Handlers, Server Actions and cron); sensitive routes and cron protected by a secret; generic client-side errors, never a secret nor a raw provider message; Zod on every untrusted input.

Orchestration & tests

Deployed on Vercel with Vercel Cron (a secret-protected cron route) for scheduled runs. Vitest (unit) + Playwright (e2e) coverage.

My role: everything, solo

From vision to production, I built Novera Signal alone: design, product and development. The 50 user stories (US-001 → US-050, 12 lots, 4 sprints) are coded, tested and merged on main — a complete, working pipeline. What remains is the go-to-market call: an internal maturity verdict puts the product at 47/100, the blocker being commercial and legal (LinkedIn compliance), not technical.

Product & scoping (PO)

Positioning, ADRs, breakdown into user stories, lots and sprints.

Design & experience

Qualification flow, clean UI, semi-automatic principle with human validation.

Full-stack development

Pipeline, data model, AI orchestration, provider abstraction, tests, cron.

Go-to-market & compliance

LinkedIn compliance trade-offs and go-to-market strategy — the open work.

Novera Signal is an AI agent that qualifies and scores like a recruiter, but always leaves the decision to a human — the same standard I apply when I assess profiles. Framing the need, designing the experience, orchestrating the AI and shipping it: that complete perspective is what I bring, right down to compliance and go-to-market trade-offs.