FR
Copied
Concepts

AI assistant (talk to outsend)

Describe what you want in plain language; the assistant composes a validated, ready-to-launch pipeline. Free daily allowance to start, then your own key (BYOK), with automatic model fallback on Anthropic.

The AI assistant turns a plain-language request ("scrape the email of 1000 plumbers in Brittany") into a validated pipeline, ready to launch. It never launches anything itself: it fills the pipeline editor and you click Launch (which re-checks the EF cost gate).

It lives behind the AI button in the pipeline editor and is exposed as POST /api/ai/agent.

How it works (multi-layer)

   you (plain language)
        │
        ▼
   ┌─────────────────────┐
   │  LLM planner        │  picks ONE tool (see below), using a system prompt
   │  (free or your key) │  + tool catalog generated from the module registry
   └─────────┬───────────┘
             │ propose_pipeline
             ▼
   ┌─────────────────────┐
   │ deterministic        │  normalize → capability gate → pipeline validity
   │ validator (server)   │  → zone resolution → EF estimate
   └─────────┬───────────┘
             │ valid?
        ┌────┴─────┐
       yes         no ──► error fed back to the LLM, model escalates a rung, retry
        │
        ▼
   pipeline loaded in the editor → you click Launch (EF re-gated)

The LLM only ever acts through four tools — it never returns free-form JSON:

Tool When
propose_pipeline it can build the pipeline (the server validates it)
ask_clarification one question, only when a required piece is genuinely missing (no business, or no zone)
cannot_fulfill the request targets a module that is coming_soon / alpha / on_demand, or is truly impossible
report_issue a real bug or missing/contradictory doc → lands in the admin AI reports tab

The validator is the safety net: whatever the model proposes, the server re-checks structure, module compatibility, zone resolution (in the selected country), capability status, and EF cost. An invalid proposal is never launchable.

What the assistant does (and doesn't)

Models & automatic fallback

Anthropic (Claude) — automatic escalation ladder. The default starts on the cheapest capable model and climbs one rung automatically on each validation failure:

Haiku 4.5  →  Sonnet 4.6  →  Opus 4.8
(default)     (1st fallback)  (2nd fallback)

Other providers (OpenAI-compatible BYOK). The assistant uses the model you selected, with no cross-provider escalation (a single rung). The provider's own routing/fallback, if any, applies — outsend does not switch you to another vendor.

This means the "model fallback is automatic for Claude", while for other providers you stay on your chosen model.

Free trial, then BYOK

You can use the assistant straight away, without any API key. New accounts get a free daily allowance of AI messages (chat and assistant combined) running on outsend's own key — enough to build your first searches on day one. The remaining count is shown above the input.

Once the allowance is used up for the day, the assistant asks you to add your own API key (Bring Your Own Key) — then there is no message limit at all: you pay your provider directly, and only your own AI spending caps apply. See BYOK.

Free allowance Your own key (BYOK)
Who pays outsend you, your provider directly
Limit N messages/day, resets at midnight UTC none (only your own spending caps)
Model fixed (a fast, cheap one) any model your key can reach

Your key is stored encrypted, and every LLM call — free allowance or BYOK — is metered and bounded server-side. Because the cheapest model is tried first and the loop is bounded (it abandons gracefully after exhausting the ladder), cost per request stays low.

Your first search, already written

On a brand-new account, the assistant pre-fills the input with a search drafted from your access request — the trades you said you wanted to reach, in the area you mentioned. Read it, adjust anything, and press Send.

It is only a suggestion in a text box: nothing runs until you send it, and nothing is collected on your behalf. You remain in control of what gets searched, and when.

Capability-aware (honest refusals)

The tool catalog only contains active, pipelinable modules, generated live from the module registry. If you ask for something a module covers but that is not yet shipped, the assistant returns cannot_fulfill with the exact status — e.g. LinkedIn or SEO data → coming_soon, sending campaigns → on_demand, frozen financial module → alpha. If no module can do it by any means (opening hours, follower counts, non–Google-Maps sources, individuals), it returns impossible and suggests the closest available alternative.

Import requests

When you reference an existing list ("import my list", "here are some URLs", "my previous scrape"), the assistant proposes an import node with the right source (paste / url / from_job) — a skeleton. You drop your actual data into the import block in the editor, then launch. The skeleton is accepted at proposal time; the launch step requires the real data.

Future-proof

The assistant is driven by the module registry: its tools, capabilities, and refusals are generated from PIPELINE_NODES. Adding a new pipelinable module makes it automatically available to the assistant — no AI code changes. (See the product checklist: a clear config_schema label and an optional ai_hint line per module are all that's needed.)

Privacy

The assistant only sees your request text and the module catalog — never your scraped data or contacts.