FR
Copied
Modules

Extra phones

Extra phones

The phones_extra module digs past the single switchboard line returned by a typical map listing and surfaces the additional voice channels a business exposes on its own site: direct lines, mobile numbers, sales desks, support hotlines, and lingering fax numbers.

Purpose

Discovery sources publish one canonical phone per location. Real organisations publish several across homepage, landing pages, team bios, and legal notices. phones_extra reads the public-facing pages of each website attached to a POI, extracts every phone-shaped token, validates them through Google's phonenumbers library, normalises to E.164, and deduplicates against the primary number already on file.

Inputs

The module operates on an enriched POI list — typically the result of a prior discovery run.

Field Required Notes
site_web yes POIs without a website are filtered out at submit.
name no Used for output labelling and audit trail.
phone no When present, used as the dedupe reference.
address no Used to bias country detection for ambiguous formats.

Items missing site_web are silently dropped; if the filtered list is empty the request is rejected with a validation error.

Outputs

Each input POI is returned with up to three additional phone fields. Empty strings indicate the module ran but found nothing of that kind.

Column Type Description
phone_secondary string Additional landline distinct from the primary number, E.164.
mobile string Mobile line detected via national numbering plan, E.164.
fax string Fax number when explicitly labelled on the page, E.164.

All numbers are validated and normalised. Anything that fails validation is discarded rather than surfaced as a best-effort guess.

Lifecycle

Standard job lifecycle — see Jobs lifecycle. Progress is reported in sites and final volume in numéros.

Pipeline

phones_extra is an enrichment module: it augments an existing POI list rather than generating one.

needs:    poi_list
produces: enriched_list

Typical chain:

discovery → phones_extra → verify_emails → filter → campaign

Endpoints

POST /api/jobs/phones-extra

Create a new extra-phones job from a list of POIs.

Body

Field Type Required Description
items array yes POIs to enrich, each with at least site_web.
source_job_id string (uuid) no Parent job ID when chaining from a prior run.

Response

Returns the standard JobPublic envelope (id, status, job_type, output_filename, quota cost, timestamps).

Example

POST /api/jobs/phones-extra
Content-Type: application/json

{
  "source_job_id": "f3c2…",
  "items": [
    { "name": "Acme SAS", "site_web": "https://acme.example", "phone": "+33123456789" },
    { "name": "Beta Co",  "site_web": "https://beta.example" }
  ]
}
{
  "id": "9a7b…",
  "status": "pending",
  "job_type": "phones_extra",
  "output_filename": "telephones-extra-2-sites.xlsx"
}

Global quotas and per-job ceilings: see Limits.

Errors

Condition Response
No item carries a site_web 400Aucun établissement avec site web.
Estimated cost above the per-job quota 400 — quota exceeded, with the numeric overage.
Account quota exhausted 400 — quota check failure before insert.
Malformed body (missing items, wrong types) 422 — request validation error.

Runtime errors on individual sites do not abort the job: the affected POI is recorded with empty extra-phone fields and the worker moves on.

What's next