Drop a file, point at a web page, read another database, or generate records from a brief. SnoutData works out what it is, proposes the shape, and moves it where you need it.
One flow, start to finish. Every row in it is real, and the table at the end really exists.
SnoutData AcademyWatch the narrated walkthroughDrop anything, in any mix, in as many goes as you like. Nothing is read until you say so.
CSV, TSV, JSON, NDJSON, logs and PDFs, dropped in any number and any mix. Each one is identified by its content rather than its file extension, and anything the app cannot recognise it declines by name instead of guessing.
Give it a URL and it fetches, renders and crawls. A page that builds itself in the browser is rendered first, so a client-side site is read as what a person sees rather than an empty container.
A table or a query from any connection you already have, read by keyset paging, so re-running an incremental flow moves only the rows that are new.
Name the subject, the columns and how many, and a model writes the records. It runs on your own Ollama server, local or remote, or your own vendor key, and every record names the seed it was written from.
Four options, in escalation order. Each one tells you where your data goes before you pick it, because that is a fact about the route, not a promise on a page.
The default. Structured files are read locally by code, and nothing leaves your machine. Fastest, free, and the only option that involves no model at all.
For documents the parsers refuse. A local model reads them on your own hardware, so the data still never leaves the machine. It is downloaded on demand the first time you choose it.
The managed gateway, metered against your plan. Use it when the local model is not enough and you would rather not run one yourself. Your content reaches a model in order to be read.
Your own key, your own provider. Requests go straight from your machine to them, so nothing passes through our servers and the billing relationship is yours.
A table is never handed over whole. Its header and a sample of its rows are used to work out how to read it, then the parser reads every row that way, so a large export costs one call and a few dozen rows of exposure. A document, which has no such regularity, is read in windows for as long as it takes, and there is no length at which a file is refused.
Typed columns proposed for you, and every decision shown before it runs.
The structure advisor reads a sample and proposes the columns and their types, with a reason for each one. Repeating groups become child tables with a foreign key back, when the parent has a key.
Rename, retype, split and combine, and derive new columns from the ones you already have.
Keep the rows that matter and drop the duplicates, on the columns you choose.
Personal data redaction is a stage of its own, so the sensitive columns never reach the destination.
Five destinations, and the same flow can run to any of them.
Created for you or matched to one you already have, in any relational database you are connected to.
Nesting kept rather than flattened, which is the inverse of the answer a table gives.
CSV, JSON, JSONL, or a Markdown report you can hand to somebody.
Validated JSONL, so generating a dataset and training something smaller on it is one path rather than two tools.
Embedded and upserted into Pinecone, for retrieval over what you just brought in.
A flow is saved, repeatable and inspectable, not a script that ran once on somebody's laptop.
Run a flow on a schedule, and it catches up on what it missed rather than skipping it. Part of Plus and Pro.
Every run records what it read, what it wrote and what changed, so you can account for the numbers afterwards.
Cursors and content hashing mean a second run moves what is new, not everything again.
Before anything runs you see the proposed columns, the exact statements, and where the data goes. Nothing happens because the app assumed.
Free to start, on Windows, macOS and Linux.