Quacksmith Quacksmith Quacksmith Quacksmith

Say what you want done with your data.
Read back every step, with real rows.

Ask in a sentence and Quacksmith drafts the flow. You read it on a canvas where every step shows its rows and every wire carries its count, accept it or correct it, then run it. Every run tells you what happened.

One mail from a person when there is something to see. Nothing else.

Coming 2027
1 · Say it

A sentence becomes a proposal

Chat reads the schemas you already have and drafts the flow. It is a proposal, never a saved flow, until you accept it.

2 · Read it back

The canvas is the readback

Every step drawn, with its real rows. Correct the picture where it is wrong — drag a wire, change a filter — and what runs follows.

3 · Run it

Every run says what happened

What it wrote and where, or which step stopped and why — in a sentence, not an error code.

revenue_by_segment.sql22 lines · 1 statement
-- revenue_by_segment
SELECT
    cs.segment,
    cs.country,
    date_trunc('month', t.booked_at)                    AS month,
    sum(t.amount)                                    AS net_revenue,
    count(*)                                         AS txns,
    rank() OVER (PARTITION BY date_trunc('month', t.booked_at)
                 ORDER BY sum(t.amount) DESC)          AS rnk,
    sum(t.amount) - lag(sum(t.amount)) OVER (
        PARTITION BY cs.segment, cs.country
        ORDER BY date_trunc('month', t.booked_at))    AS mom_delta
FROM read_parquet('s3://warehouse/transactions/*') t
JOIN (
      SELECT c.customer_id, c.country, p.segment
      FROM public.customers c
      LEFT JOIN read_csv_auto('plans.csv') p USING (plan_code)
     ) cs USING (customer_id)
WHERE t.status = 'settled'
  AND t.booked_at >= DATE '2026-01-01'
GROUP BY 1, 2, 3
ORDER BY month, rnk;

Today, checking it means reading this.

Twenty-two lines, written the way a person actually writes them — not one step per line, but everything folded into one statement. Every join and every filter in it is correct. Not one of them will tell you what it threw away.

15,889 transactions fell out of that join. Nothing above says so. You would have to run it yourself, and know to go looking.

The same flow, drawn

Try it yourself

This is the studio’s own canvas, not a picture of one. Every wire carries the number of rows that crossed it. Drag a node, press one to read its rows, or switch to Ports to see every step’s columns on the block itself.

YouNet revenue by segment and country, month over month, settled transactions from 2026 only. Rank the segments.
Quacksmith · proposalTen steps: three sources, a filter, a join, a lookup, an aggregate and a window. Read it back below before you accept it.
flow canvas · revenue_by_segment drag a node · click one to inspect it · scroll sideways for the rest
SOURCE transactions/* SOURCE public.customers SOURCE plans.csv FILTER settled · 2026 SELECT 3 columns JOIN on customer_id LOOKUP segment from plans AGGREGATE sum by segment · month WINDOW rank · MoM delta OUTPUT revenue_by_segment 48,213,904 812,455 812,455 14 43,908,177 812,455 43,892,288 −15,889 1,284 1,284
You describe it, in your own words. The canvas draws it — three sources, a filter applied early, a join, a lookup. It runs left to right, and every wire carries its own count. 15,889 transactions had no matching customer. The join says so, on the wire — now drag a node, or press one to read its rows.
Read it as a run — the record the product keeps
okrevenue_by_segment 10 nodes8,849 msbase snapshot 3

Where the time went, and where the rows went

Started 30 Aug 2026 09:14· ran for 8.85s· every track below is that window

The durations and the start time here are illustrative — drawn for this page, not measured from a run. The shape, the grain and the order are the record’s own.

  1. transactions/*source_transactions 612ms · at +12ms 0→48,213,904 read 48,213,904 rowsParquet in S3, this year’s transactions
  2. public.customerssource_customers 88ms · at +628ms 0→812,455 read 812,455 rowsThe customers table, already in the project
  3. plans.csvsource_plans 6ms · at +720ms 0→14 read 14 rowsA fourteen-row plan-code to segment reference
  4. settled · 2026filter_settled 38ms · at +730ms 48,213,904→43,908,177 dropped 4,305,727 rows — 9% of what came in most of any stepstatus = 'settled', booked this year
  5. 3 columnsselect_customer 21ms · at +772ms 812,455→812,455 kept all 812,455 rowscustomer_id, country, plan_code
  6. segment from planslookup_tier 190ms · at +797ms 812,469→812,455 kept all 812,455 rows — the other 14 came in as the reference it readsTurns each plan code into the segment it belongs to — on the customers, before the transactions arrive
  7. on customer_idjoin_customers 4.18s · at +991ms 44,720,632→43,892,288 joined to 43,892,288 rows 15,889 unmatchedInner join, transactions to customers
  8. sum by segment · monthaggregate_revenue 2.94s · at +5.17s 43,892,288→1,284 grouped 43,892,288 rows into 1,284Net revenue and transaction count per segment, country and month
  9. rank · MoM deltawindow_rank 71ms · at +8.12s 1,284→1,284 kept all 1,284 rowsRank within the month, and the change on the month before
  10. revenue_by_segmentoutput_revenue 15ms · at +8.19s 1,284→1,284 wrote 1,284 rowsWrites the result out
  11. after the last step 640ms · at +8.21s time inside the run that no step accounts for

Each bar sits where that step ran, and is as long as it took.

The steps do not open on this page — press a node on the canvas above instead.

What you get

A flow you can read, before and after it runs.

What you just dragged is one flow, on one canvas. It comes with a draft you accept before anything is saved, a picture somebody else can check, and runs that say what happened.

Nothing is saved until you accept it

Chat drafts; you accept the proposal on the canvas, or correct it first. The AI never edits a flow behind your back.

A colleague can check it

Every step shows its rows and every wire its count, so the person who did not build it can review it without reading SQL.

Runs you read in seconds

Open a run and the answer comes first: did it finish, what it wrote, and if it stopped, which step and why. Every run in the project, in one list.

What it is

press a card to open it · scroll or use the arrows

COMING 2027

Interested? We are building it now, and we would rather hear from you early than late.

One mail from a person when there is something to see. Your address is kept for that and nothing else, and one line to us takes it off. Or just say hello: hello@quacksmith.io