MCP (ChatGPT / Claude) · Cosmetics contract manufacturer

Cosmetics contract manufacturer → indie beauty brands in France: what one real Prosp run returned

Run date
Job duration
14 min 13 s
Results came from
Live web search
Delivered
8 of 8 requested
Rejected candidates
60

TL;DR

  • Delivered 8 of 8 in 14 min 13 s, from a live web search that screened 115 candidates.
  • Registry-verified: 2 of 8. Both SIREN numbers matched the French company register on name, seat and active status, each lookup under a second.
  • Went wrong: Nuxe is a large, established brand, not an indie one, and Avril came back as medium-sized (100 employees, estimated) under a micro/small request.
  • The most frequent rejection reason was icp_intent_mismatch, with 15 candidates.

The scenario

A cosmetics contract manufacturer wants small, independent French beauty and skincare brands that could outsource production to it. The buyer is a profile we set up to test this market, not a customer. The run is real, and every company on this page came back from it.

Buyer
A manufacturer that formulates and fills skincare and cosmetics for other brands. An illustrative profile, not a named customer.
Target
Micro and small independent beauty and skincare brands in France.

The exact request

Sent by an AI agent through the MCP server as the tool call find_prospects with these arguments:

{
  "criteria": {
    "query": "Find French independent beauty and skincare brands that could outsource product manufacturing to a cosmetics contract manufacturer",
    "industries": [
      "cosmetics_beauty"
    ],
    "locations": [
      "France"
    ],
    "company_sizes": [
      "micro",
      "small"
    ],
    "keywords": [
      "indie brand",
      "skincare",
      "clean beauty",
      "marque"
    ],
    "maxResults": 8
  }
}

How this run was actually started: through Prosp's internal job endpoint, with exactly these criteria and a target of 8 companies, under an internal exploration account whose results never reach a CRM. That path does not charge credits. Through MCP, an agent sends these arguments to find_prospects, then calls get_discovery_status and get_discovery_results with the job id it gets back.

What came back

The 8 delivered companies, company-level fields as stored for the run. A dash means the field was empty.
namedomaincitycountryindustrybusiness_modelcompany_sizeemployee_countemployee_count_sourceregistry_source
Avrilavril-beaute.frBonduesFrancecosmetics_beautyretailerMEDIUM100unverified_estimate—
Patykapatyka.comParisFrancecosmetics_beautymanufacturerSMALL35unverified_estimate—
VELAVI COSMETICSvelavi.frSaint Pal de MonsFrancecosmetics_beautymanufacturerMICRO2unverified_estimate—
Nuxenuxe.comParisFrancecosmetics_beautymanufacturer————
Oolutionoolution.comBordeauxFrancecosmetics_beautymanufacturerSMALL15unverified_estimate—
Les Huilettesleshuilettes.comSuresnesFrancecosmetics_beautymanufacturerSMALL15unverified_estimate—
MATIERE BRUTE LABmatierebrutelab.comPARISFrancecosmetics_beautyretailerMICRO3official_registryrecherche-entreprises.api.gouv.fr
BIVOUAK OPERATIONSbivouak-paris.comAnnecyFrancecosmetics_beautymanufacturerMICRO10unverified_estimaterecherche-entreprises.api.gouv.fr

Checking the registry ids

Delivered rows checked against the public register on 2026-10-03
domainregisterid deliveredresultwhat we compared
matierebrutelab.com recherche-entreprises.api.gouv.fr (SIRENE) 821004504 verified Register name 'MATIERE BRUTE LAB', seat Paris, active, activity code 20.42Z (perfumes and toiletries manufacturing). Lookup under 1 s.
bivouak-paris.com recherche-entreprises.api.gouv.fr (SIRENE) 103515011 verified Register name 'BIVOUAK OPERATIONS', seat Annecy, active, activity code 47.91B (mail-order and online retail). Lookup under 1 s.

Why candidates were rejected

Rejection histogram, 60 candidates in total
ReasonCountShare
icp_intent_mismatch15 15
content_thin8 8
industry_not_in_target_precrawl5 5
parked_domain4 4
phantom_company4 4
country_not_in_target3 3
country_not_in_target_precrawl3 3
content_article2 2
content_unknown2 2
industry_hard_floor:off_taxonomy2 2
classifier_verdict_unconfirmed1 1
competitor_match1 1
crawl_unreachable_host1 1
directory_aggregator1 1
dns_nxdomain1 1
enterprise_too_large1 1
foreign_origin1 1
hallucination_detected1 1
industry_mismatch1 1
page_archetype_listing1 1
quality_penalty:company_name_repeated1 1
tld_conflict_rejected1 1

What went wrong

How to read this run

This was the slowest of the six runs in this series. icp_intent_mismatch (15) leads the rejection histogram, ahead of content_thin (8). No candidates were discarded after the target was reached.

Six of the eight are the kind of company the request described: small French skincare brands selling under their own name (Patyka, VELAVI COSMETICS, Oolution, Les Huilettes, MATIERE BRUTE LAB, BIVOUAK). MATIERE BRUTE LAB is registered under a perfume and toiletries manufacturing code, and its employee count (3) comes from the register. Nuxe and Avril are the exceptions, covered under "What went wrong".

What this market can and can't verify

Cost and time

How to reproduce this run

A repeat will not return exactly these eight. The web changes, and each run adds to Prosp's knowledge base, so a later run may be served partly from companies found by earlier ones.

Run your own

Describe the companies you want to reach and get the same output: the companies, the rejection histogram and the registry ids to check them against.

Start in Telegram Get API credentials Read the API reference

A discovery costs 100 credits, bought in the Telegram bot with Telegram Stars. Pricing, payment and API keys walks you from the first message to your first run, step by step.