<!-- Source: https://docs.snoutdata.com/flows/destinations -->

# Destinations

Where the data lands. The same flow can be pointed at any of these.

## A SQL table

Created for you, or matched to a table you already have, in any relational connection.

You see the exact `CREATE TABLE` and `INSERT` statements before anything runs. Writing modes
are **append** (add the rows) and **replace** (empty the table first).

## A MongoDB collection

Nesting is kept rather than flattened. This is the inverse of what the SQL destination does
with a nested record, and it is usually the right answer when the source was already
document-shaped.

## A file

CSV, JSON, JSONL, or a Markdown report you can hand to somebody. Useful when the point of the
flow is to produce an artifact rather than to load a database.

## A fine-tuning set

Validated JSONL, in the shape a fine-tuning job expects. Together with
[generation as a source](https://docs.snoutdata.com/flows/sources), this makes "produce a dataset and train something smaller on
it" one path in one app, rather than two tools and a script in between.

## A vector index

Embedded and upserted into Pinecone, so you can retrieve over what you just brought in.

## Production destinations are guarded

If the destination connection is flagged as production, the same guardrails that protect a
query you type by hand apply here: destructive operations are held until you confirm them, and
the run is recorded.
