Qualify inbound leads
Every new lead is matched to its legal entity, scored on real headcount and filed accounts, and written back before a rep opens it.
- TriggerTriggeredSalesforce
Webhook on new lead
- CompletedSalesforce
Pull new leads
- Completed
INSEE SireneResolve the legal entity
- Completed
INPI
BODACCPull the evidence
- CompletedClaudeChatGPT
Score against your own rules
- CompletedSalesforce
Write it back
Inbound leads arrive as a name, an email and a guess. Someone then spends ten minutes per lead confirming the company is real, big enough and still solvent — or, more often, nobody does and the pipeline fills with noise.
Both halves of this already exist. Salesforce holds the lead; the French registries hold the truth about the company. The work is the join, and the join is mechanical.
What you get
A rep opens a lead that already carries its SIREN, real headcount, latest filed revenue and any recent legal event.
What makes it hold up
Matching on a name alone is what makes enrichment untrustworthy: two companies share a trading name, one is dormant. Filtering on activity code and location alongside the name resolves the entity rather than guessing it.
Writing back by upsert on the SIREN means the process can run every hour without ever creating a second copy of anything. And the note on the record matters more than it sounds: a rep who can see why a lead scored 82 will trust the score. One who cannot, will not.
The prompt
The real prompt behind the steps above — detailed enough that an agent with a people-search tool, email/phone enrichment, and CRM access can run it as written.
# Qualify inbound leads against official company data
You have read/write access to Salesforce and tools that query INSEE's
SIRENE company registry, INPI's company-filing registry, and BODACC's
legal-announcements registry. Run this for new leads.
## 0. Set up (skip if you're already connected)
If you don't already have live tool access for this, connect it first
— this prompt is only as real as the tools behind it:
1. Create a free account at app.tulina.ai.
2. Add Tulina's MCP server to your assistant: https://mcp.tulina.ai/mcp
3. In Tulina, connect your own API keys for the tools this prompt
uses — Salesforce, SIRENE, INPI, and BODACC.
Once connected, your assistant has real tool access and the rest of
this prompt runs as written.
## 0b. Already on Tulina? Three things around the run
An account and the MCP server are not the whole setup. Two of these come
before the run below and one after it, and together they turn this from a
one-off answer into a process your workspace keeps:
1. **Activate this process's connectors first.** Call
`oto_connector(op="list")`, match it against the tools named in step 3
above, and `oto_connector(op="select", name="...")` every one that
isn't active yet. Selecting a connector does not mount its tools in the
conversation you're already in — reach them through `oto_call` for this
run, or open a fresh conversation once they're all on.
2. **Attach the work to an existing project.** `oto_project(op="list")`
shows your active org's projects: pick the one this work belongs to
rather than opening another, and keep its id. The project is where this
process, the tables it writes to and the connectors it uses hang
together.
3. **When the run is done, save it as a process — with its graph.** Write
the body with `oto_procedure(op="set", ...)`, then attach it with
`oto_project(op="link", project_id=..., target_type="procedure",
target_ref="<your slug>")`. The body has to carry a drawing: read
`oto_guide(op="read", slug="procedure-flowchart")` and follow it
exactly — ONE untagged fenced block in that grammar, opening with the
trigger and a quoted example of what you'd type to start a run. Tulina
parses that drawing back into the graph it renders as the process's
default view, which is what makes it come out in the same style as
every other process in the app; a drawing the grammar can't read falls
back to raw characters instead. Saving a process needs org-admin
rights — without them, hand the finished body to someone who has them.
## 1. Pull new leads
- Query Salesforce for leads created since the last run. Read your own
lead schema first so custom fields come along in the same pass,
rather than a second query per lead.
- Batch this — one query for the whole window, not one per lead.
## 2. Resolve the legal entity
- For each lead, match company name and location to a SIREN using a
search that filters on activity code, department, and headcount
alongside the name — never name alone. Two companies sharing a
trading name is common enough that a name-only match produces wrong
matches often enough to matter, especially when one candidate is
dormant.
- If nothing matches confidently, leave the lead unresolved rather than
guessing — a wrong SIREN is worse than no SIREN.
## 3. Pull the evidence
- For each resolved SIREN, fetch identity, current directors, and the
latest filed accounts (headcount, revenue) from the company registry.
- Separately, check the legal-announcements registry for any event
published since the company was last checked — ownership change,
insolvency, officer change.
- These are two different lookups against two different registries;
batch each by SIREN list where the tool supports it.
## 4. Score against your own rules
- Apply your team's existing qualification thresholds — company size,
revenue, sector, solvency signals from the legal-events check.
- Keep the score's inputs, not just the number, so you can explain it
in step 5.
## 5. Write it back
- Upsert the enriched fields onto the lead, keyed on SIREN — so a
re-run of this same lead updates the existing fields rather than
creating a duplicate lead or a duplicate note.
- Leave the score's reasoning as a note on the record — a rep who can
see *why* a lead scored 82 trusts the score; a bare number doesn't
earn that.
- Only write fields you've actually resolved this run; never blank an
existing field because this pass didn't find a value.
## Output
Report: how many leads processed, how many resolved to a SIREN, how
many scored above your qualification threshold, and any lead that
failed to resolve and why.
Questions about this process
Related processes
- Keep CRM accounts updated
Companies already in your CRM are watched for legal events, flagged before a rep ever walks into a call blind.
- Source and qualify leads
A target company gets searched across LinkedIn, ranked against your ICP, and the qualified shortlist lands in your CRM with email and mobile filled in.
- Find doctors and clinics
A places census of doctors and clinics gets cross-referenced against France's practitioner registry and facility directory so nothing is missing from a city's real coverage.