Outbound lead platform

Outbound that does its homework

NOVI builds the list from hiring signals, a contact search or your CSV. It reads each company's site against criteria you write, drops the misfits, and writes each contact a sequence from what it found.

Your provider keys · your domain · data private per account

app.novigtm.com/files/enterprise-ops-q4
Projects Cloud infra Platform leads Enterprise ops Q4
Upload

412 rows imported

Verify

379 kept · 33 removed

Normalize

341 titles restyled

Research Stop

Reading hkr-cloud.example - 243 of 379

Export

Unlocks when Generate completes

Company Job title Email Business model Infra stack Hiring for
Hakura Cloud vp of engineering p.almeida@hkr-cloud.example Managed hosting Bare metal, Kubernetes Platform Engineer
Fjord Analytics head of data platform l.berg@fjord-an.example B2B SaaS AWS, Snowflake Senior Data Engineer
Larkfield Systems director of operations c.oyelaran@larkfield.example Systems integrator On-prem VMware Solutions Architect
Tessolve Retail cto - Reading site… - Site Reliability Engineer
379 working rows · 33 removed Showing 4 of 379
Hakura Cloud · generated sequence 4 of 4
email 1 Bare metal and a platform hire

Hi Pedro,

You're hiring a Platform Engineer while running bare metal next to Kubernetes and Ceph.

That usually means someone is hand-rolling what a managed control plane would give you. Is that the job the new hire walks into?

3 ways in
CSV, contact search or 32 job boards
6 stages
Upload to Export, each one undoable
1 prompt
Researches and qualifies in one pass
Nothing unapproved
Automation results wait for you

Why this exists

The list, the research and the writing live in different tools. So the research never happens.

Outbound breaks at the joins. By the time anyone writes, "personalised" means a first name in a template.

Contacts with no angle

A title and a headcount don't tell you why today is the day to write.

Signals watched by hand

Hiring is the clearest sign of a problem, spread across dozens of boards.

An export between every step

Each hop is another CSV and a list nobody trusts.

Personalisation that isn't

Nothing read the website. The merge field changes; the sentence doesn't.

One pass, one order - sourcing through sequence
Source

CSV, contact search or job boards

Verify & clean

Undeliverables out, titles in one style

Research

Reads the site · fills columns · qualifies the row

Generate

A sequence per contact, from the row

Export

CSV for the tool you already send with

Three ways in

Bring a list, build one, or let hiring activity build it for you.

All three land in the same list and run the same pipeline.

Source 01

Your own CSV

Headers map to fields automatically. Anything else stays as a custom field a prompt can read by name.

  • No website column? NOVI takes the domain from the email and skips free mailboxes.
  • Colliding headers are refused at upload, never silently overwritten.
Map columns - eu-infra-contacts.csv

412 rows · 11 columns

9 matched automatically · 2 to decide

Ready to import
First Name
First Name
Company for Emails
Company Name
Company Website
Website / Domain
Person Linkedin Url
LinkedIn URL
Trigger Event
Keep as custom field
Readable in a prompt as triggerEvent
Owner
Don't import
28 rows can use the email domain; 3 are free mailboxes and will be left alone.
Cancel Import 412 rows

Source 02

Contact search

Filter by title, seniority, size, industry, HQ and email status. The count updates as you filter, so you learn a segment is 40 people before you spend anything.

  • Emails are revealed only when you ask, with the credit cost shown first.
  • A suppression list hides everyone already exported, so nobody is bought twice.
app.novigtm.com/contact-search
Job titles
VP of Engineering Head of Platform add a title…
Seniority
VP, Director
Employees
1-10 11-50 51-200 201-500 501-1000 1001-5000 5001-10000 10000+
Industry
IT Services
Company HQ
Netherlands, Germany
Email status
Verified only
1,284 people match, counted free. 21,073 already-exported contacts are hidden.
NameTitleCompanyEmail
P. AlmeidaVP of EngineeringHakura CloudReveal
L. BergHead of PlatformFjord AnalyticsReveal
M. OkonjoDirector of InfrastructureLarkfield SystemsReveal
25 of 1,284 loaded Download CSVSend to a list

Source 03

32 job boards

Boards name their filters differently. NOVI reads each board's real options, so every control offers exactly what that board accepts.

  • Posting age is re-checked on the way back, because some boards ignore their own date filter.
  • Multi-word roles are searched as phrases, so "account executive" stops returning account managers.
Job board - step 1 of 5
Boards
Indeed Glassdoor Jooble + 29 more
Date posted - Indeed
Last 7 days
Indeed's own words: last 24 hours · last 3 days · last 7 days · last 14 days
Date posted - Glassdoor
Any
Glassdoor ignores this filter. NOVI enforces the window on the way back.
Platform Engineer (Kubernetes) Hakura CloudAmsterdam2 days agoindeed Kept
Senior Data Engineer Fjord AnalyticsRotterdam5 days agoglassdoor Kept
Warehouse Operative Tessolve RetailUtrecht188 days agoglassdoor Too old
62 postings · 21 too old · 2 with no employer

Hiring signals

A company hiring a VP of Sales is shopping for sales tooling.

A job post says: here's a problem, and here's the budget to fix it. NOVI turns the posting into a company, the company into the right people, and keeps the role attached to every contact it produced.

  1. Step 01

    Search the boards

    Several boards and roles, plus keywords that search the whole posting.

  2. Step 02

    Filter the titles

    A model judges each title before anything is charged per company.

  3. Step 03

    Collapse to companies

    Two openings at one employer become one row.

  4. Step 04

    Find the people

    Each size band gets its own titles.

  5. Step 05

    Approve, then push

    The run stops and waits. Filter it first, so you buy contacts only at the survivors.

Title match - what it does
Judging 24 distinct titles against Head of Infrastructure and Platform Engineer. A title it cannot judge is kept.
Infrastructure Lead4 postings keep
Senior Platform Engineer (K8s)7 postings keep
Customer Success Manager3 postings drop
Barista - city centre1 posting drop
Security Architect Leadfound by the keyword AWS, not the title kept, unjudged
48 passed · 14 filtered out · 9 found by keyword, so not judged on title
Run 02d88f6f · 43 companies kept of 109 Awaiting approval
Find contacts at 34 companies. 9 of the 43 kept companies have no website and can't be reached by a domain search.
112 contacts gathered · 83 of 112 carry the hiring signal. Nothing has been added to a list yet.
Download CSV Approve and send to a list

Build the chain once. Run it every morning.

Keywords search the whole posting

"AWS" also finds the Security Architect Lead whose title never says it.

The role follows the contact

Into the list and the email prompt. A contact from a company you didn't search gets an empty cell, never another company's role.

Runs explain themselves

Each run records what it searched, matched and skipped. A schedule never stacks, so the same companies are never bought twice.

app.novigtm.com/automations/infra-hiring-nl Weekdays 07:00 Europe/Amsterdam
01Job board

Indeed, Glassdoor · 2 roles, 1 keyword

02Title match

48 passed · 14 filtered out

03Companies & websites

109 companies · 100 websites · 91 sized

04Find contacts

3 size rules · 112 contacts

05Export

To a list · waits for approval

Step 1 of 5 - Job board

Position - searched as a phrase
Head of Infrastructure Platform Engineer + add another role
Multi-word roles are quoted, so "platform engineer" stops returning platform managers.
Keyword - searched across the whole posting
AWS + add another keyword
Each keyword is its own search. A posting found only by a keyword skips the title filter.
How many postings
25
Per board, per search term - 2 boards × 3 terms.
Location - Indeed
Netherlands
Job type - Glassdoor
full_time
Indeed spells the same thing fulltime. Filters are stored per board.
Also look each company up on the board that posted it - 5¢ each, off by default; resolving by name is a tenth of the price
Editing is locked while a run is going. Stop it, change the chain, and resume.

The pipeline

Six stages, in order, each one undoable.

Every stage reports what it did, in the words of the thing it did it to.

Projects / Cloud infra / Platform leads / Enterprise ops Q4 5 of 5 stages
Upload

412 rows from a CSV

Columns mapped9
Kept as custom2
Website from email28
Verify

379 will deliver

Catch-all kept44
Removed33
Checked in one request412
Normalize

One house style

Titles restyled341
Invented values refused6
Originals kept412
Research

Sites read and classified

Analysed316
Read by a browser29
Filtered out118
Generate

4 emails per prospect

Prospects written261
Slots filled1,044
Held back for review3
Ready to export
Rows out261
Removed, still downloadable151
Download CSV
01 Upload & map
Columns matched to fields; the rest kept as custom fields.
02 Verify
Undeliverables removed. Catch-alls are kept, since a server that accepts everything can't answer per mailbox. A LinkedIn mode keeps every contact.
03 Normalize
Names and titles in one house style, originals kept. Invented values are rejected.
04 Research
Reads each site against your prompt. JavaScript sites go to a real browser. A bot-check page is never sent to the model as the website.
05 Generate
Runs your prompt file once per prospect, one column per email.
06 Export
A CSV your sending tool already maps. Removed rows export separately.
Test on 10 leads runs the whole chain until ten prospects succeed.

Company intelligence

One prompt decides what you learn and who survives.

You write what to find out. Every field the prompt declares becomes a column and a filter, so research and qualification are one pass.

research prompt · hosting-fit.mdyours to write
# Hosting and infrastructure fit Read the company's website. In plain prose, describe what they actually sell, who buys it, and how they run their infrastructure. Then end with the block below and nothing after it. ## Classification - Business Model: [Managed hosting or B2B SaaS or Systems integrator or Agency] - Infra Stack: [short list of what they say they run] - Runs Own Hardware: [yes or no or unclear] - Fit Signal: [Positive or Weak or Disqualify]
Nothing in NOVI knows the words "Infra Stack". Declare Herd Size and Barn Type and you get those columns instead.

Read once, not once per list

Overlapping lists don't pay to read a site again.

A research tab of its own

Drop in domains, write a prompt, get a table back.

Working file - columns the prompt created
A row the filter can't judge is kept, never removed. A blank answer or a site that refused isn't evidence of a bad fit.
Research · what came back from 347 sites
316
analysed
29
read by a real browser
18
site not available
13
reused from an earlier list
Bot checks and dead hosts are recorded as Blocked by the site or Site not found, never as an analysis.

Personalised outreach

The sequence is written from the row, not from a first name.

Your prompt runs once per prospect and reads every column: research fields, the posted role, any custom CSV column. So the specific sentence has something specific to be about.

email prompt · infra-sequence.mdMarkdown or JavaScript
--- name = Infra hiring sequence emails = 1, 2, 3, 4 prospect = Recipient = {{firstName}} Hiring for = {{hiringFor}} Infra stack = {{classifyInfraStack}} --- ## email 1 Open on the specific thing in Infra stack and the opening in Hiring for. Name both. Then one question. Four sentences maximum. Never use a word from {{spamWords}}.
Prospect values go last, so the long instructions are billed as a cache read.
A draft with a bracketed placeholder, or a model refusal, never reaches the file. It stays retryable, with the reason on the row.
Hakura Cloud · P. Almeida · row 14 of 261 4 of 4 slots
email 1Bare metal and a platform hire

Hi Pedro,

You're hiring a Platform Engineer while running bare metal next to Kubernetes and Ceph.

That usually means someone is hand-rolling what a managed control plane would give you. Is that the job the new hire walks into?

email 2The Ceph part, specifically

Teams running Ceph on their own hardware usually spend a new Platform Engineer on storage, not on the product.

Messaging review · 6 slots · 10 prospects each 2 findings

Email 3 paraphrases the research

7 of 10

"Name the Infra Stack exactly as written."

"your current infrastructure setup"

"Quote the Infra Stack verbatim; if it is empty, open on Hiring for instead."

A finding only appears when it repeats. One odd email is an off day. The same miss across ten is the prompt.

Control

Automation that asks before it acts.

Nothing an automation finds reaches a list unseen, and every stage can be stepped back.

Approval gate
Runs stop at awaiting approval. You filter, check the signal count, then decide.
Undo, per stage
Restores the table to before that stage and re-locks everything after it.
Snapshots
Download the table as any stage left it.
Stop and resume
Change a prompt or model mid-run. Finished rows aren't redone or re-charged.
Problems-first log
Failures per row, successes in summary.
Activity log - problems first 3 warnings
research · tessolve-retail.example blocked, queued for the browserrow 212
research · nordhaven-frt.example - bot check returned instead of the siterow 207
generate · draft held back, placeholder survived a rewriterow 61
research finished · 316 analysed · 29 by browser · 118 filtered outfile
verify finished · 379 kept · 44 catch-all kept · 33 removedfile
automation infra-hiring-nl started on its schedulerun
Keys and session tokens are scrubbed before anything is logged.

Project → Audience → List

Prompts live on the audience, so every list under it is written the same way.

An editable working table

Faceted column filters with live counts, a frozen header, row-level edit and delete. Filtering is hiding - the rows come back in one click.

Your account, your domain

Private per account, your own domain and provider keys.

Who it's for

Built for people who run outbound as a process.

Outbound agencies

A project per client, each client's criteria in its own research prompt.

B2B sales teams

Let research decide which accounts deserve a rep's week.

Founders in a niche

Write down what makes a fit once, and every list is judged by it.

Hiring-signal teams

Get people to write to every morning, not a feed to read.

Questions

What people ask before they start.

Does NOVI send the emails?

No. It exports a CSV your sending tool already maps. Sending, warm-up and replies stay where they are.

Can I define my own research fields?

Yes. Each field in your classification block becomes a column and a filter. Edit the prompt and the next run reads the sites again.

What does verification promise?

That clear undeliverables are removed. It doesn't promise inbox placement; nothing can.

Can I edit the copy or the prompt?

Both. The messaging review tells you which instruction to change, and Regenerate re-runs only those prospects.

How is my data kept?

Private per account. Provider keys never reach the browser. The only shared thing is the suppression list.

What do I need to start?

Your own keys for verification, a model, contact data and job boards. Each is tested on screen before a run.

Get started

Stop exporting between tools. Start reading the companies.

Request access and we'll set up your account. Bring a CSV, or see what this morning's hiring turned up.