# Ductile AI - the full text of www.ductileai.com > AnnE is an AI worker that completes business automation jobs: describe the job or paste a > job post, she builds it with your apps, tries it on sample data, and runs it once you say yes. The one-page summary is https://www.ductileai.com/llms.txt. Longer lists, not repeated here: - [every app and its actions](https://www.ductileai.com/product/apps/) - [the process library](https://www.ductileai.com/developers/processes/) - [formula reference](https://www.ductileai.com/developers/formulas/) - [formulas as dbt macros](https://www.ductileai.com/developers/dbt/macros/) - [dbt projects](https://www.ductileai.com/developers/dbt/projects/) - [developer documentation: MCP, REST API, SDK](https://www.ductileai.com/docs/) --- Page: AnnE completes your automation jobs - Ductile AI URL: https://www.ductileai.com/ Works with the apps you already run [1,100+ apps →](https://www.ductileai.com/product/apps/) - Shopify - QuickBooks - Salesforce - HubSpot - Slack - Gmail - Mailchimp - Snowflake - NetSuite - Stripe - Google Sheets - Xero - Zendesk - Dropbox - Asana - DocuSign - Airtable - Workday - ServiceNow AnnE works for you # Give AnnE the job. She completes it. Paste a job post, or describe the job in plain words, in chat or in the console. AnnE builds it with your apps, tries it on sample data, and keeps doing it once you say yes. Already automating? Bring the jobs you run today. [Start free](https://console.ductileai.com/) See the jobs - Plain words, typed or spoken - Tried on sample data first - Nothing runs without your yes - Every run on record Slack · Teams · Google Chat · WhatsApp Olivia Hart Every Monday at 8am, send me last week's unpaid Shopify orders as an Excel file AnnE Got it: unpaid Shopify orders from the last 7 days, in an Excel file, sent to you here every Monday at 8:00. Shopify is already connected for you. Build it? Olivia Hart yes AnnE Built and tried on sample orders: 6 rows, 2 over 30 days. Say yes to turn it on. Overview Fetch all new Shopify orders, verify the payment status in Stripe, look up or create the corresponding account and contact in Salesforce to log an closed-won opportunity, conditionally add the customer to a Mailchimp re-engagement campaign if they spent under $150 or a VIP list if they spent more, and instantly alert the accounts team in Slack with the Salesforce record links and invoice details 14 steps6 apps1 approval [Watch AnnE build it →](https://www.ductileai.com/demo/) - Read from Shopify Shopify - Copy each row to the look-up Copy - Look up in Salesforce Salesforce - Add the Salesforce details Enrich - Order is paid Filter - Find the customer and the item in QuickBooks Enrich - Approve before: write to QuickBooks Approval - Every row, whatever was decided Copy - Write to Snowflake Snowflake - What the approver decided Route - Write to QuickBooks QuickBooks - Post to Slack Slack - Write to QuickBooks 2 QuickBooks - Write to Mailchimp Mailchimp - A plan in plain words - A run on sample data - Your yes - The same run, every time Ask AnnE where you already work: - Slack - Microsoft Teams - Google Chat - WhatsApp Who it is for ## One way to get automation jobs done ### Teams and small businesses Give AnnE the job you would otherwise post for a freelancer. She completes it with the apps you already use, and keeps doing it without anyone looking after it. [Start free →](https://console.ductileai.com/) ### Consultants and freelancers Complete more client jobs. Paste the client's job post, AnnE builds it in hours, and the client approves it before anything runs. [For consultants →](https://www.ductileai.com/solutions/consultants/) ### Enterprise Approvals, development, test and production, single sign-on, audit and runners inside your own network. [Talk to us →](mailto:sales@ductileai.com?subject=Ductile%20AI%20for%20Enterprise) Jobs ## Jobs AnnE runs today Each one is a sentence to AnnE. Every app she works with is in the [directory](https://www.ductileai.com/product/apps/). ### Paid orders become invoices “When a customer pays for a Shopify order over $50, find their contact in Salesforce, create the QuickBooks invoice with sales tax added, and post the order number and total in Slack.” The books keep up with the shop. Watch AnnE build this one in the demo. [See the demo →](https://www.ductileai.com/demo/) ### New buyers in your CRM “When someone places their first Shopify order, add them to HubSpot as a contact with what they bought.” Sales and support see every new customer without copying a thing. ### Opted-in buyers on your list “Every evening, add today's Shopify customers who agreed to marketing to our Mailchimp audience.” Your list grows with the shop, and only with people who said yes. ### Won deals, invoiced “When a Salesforce opportunity is closed won, create the invoice in QuickBooks for that account.” No deal waits for someone to raise the invoice. ### Yesterday's sales, ready for reports “Every night, load yesterday's Shopify orders into Snowflake, without duplicates.” Morning reports run on yesterday's numbers. ### The weekly orders file, filed “Every Monday, save last week's Shopify orders as an Excel file in our Dropbox Finance folder.” A tidy weekly file, in the folder finance already uses. ### Overdue invoices, chased “Every Monday, find QuickBooks invoices more than 30 days overdue and post the list, with customer and amount, to our accounts team in Slack.” Late payers get followed up every week, and no one has to keep a list. ### Every lead to the right team “When someone answers our Typeform, check company size and budget, send large leads to Salesforce with a priority alert in Slack, and put smaller ones on our Mailchimp campaign.” The biggest leads get attention first, and the rest still hear from you. ### New leads, completed and scored “When a new row lands in our Google Sheet, add company details from Lusha, score the lead, and update the HubSpot contact or add a new deal.” Sales works from complete records, without duplicates. ### Unhappy customers escalated “Have AI read each new Zendesk ticket, turn urgent or unhappy ones into high-priority Jira issues, and reply to the customer with a suggested fix.” The tickets that matter most reach engineering first. ### Failed payments, followed up “When a Stripe payment fails, check the customer in PostgreSQL, email a billing link with SendGrid after a first or second failure, and after a third suspend the account and open a Jira issue.” Customers get a chance to pay, and the team sees the ones who don't. ### Your best customers rewarded “With each WooCommerce order, add up what the buyer has spent, and when they pass $1,000, tag them VIP in ActiveCampaign and send a thank-you offer through Mailgun.” Loyal customers hear from you at the moment they earn it. ### Brand mentions sorted “Find Reddit posts that mention us, have AI judge the tone, add the positive ones to a Google Sheet, and send the negative ones to support in Mattermost.” Support sees the complaints first, and marketing keeps the praise. ### Every new video promoted “When we publish a YouTube video, have AI summarize it, share a LinkedIn post, create a WordPress draft, and tell marketing in Teams.” One upload reaches every channel, and you still review the blog draft. ### Supplier orders, confirmed “When an order arrives from Odoo, send each supplier its purchase order through their API, wait for their confirmation, update the order in Odoo, and tell purchasing in Slack if a supplier has not answered in two days.” Every order is sent, followed and closed without anyone chasing suppliers by hand. ### Models rebuilt after every load “When the nightly Snowflake load finishes, start our dbt Cloud job and tell the data team in Slack if the run fails.” Models refresh after the data arrives, and a failure doesn't wait until morning. ### Sales data checked before reports “Every night, load Salesforce opportunities into Snowflake without duplicates, check the data quality, and open a ServiceNow incident if a check fails.” Bad data is caught and owned before anyone reports on it. ### Events and files into the lakehouse “Land the hourly Parquet files from Azure Blob and the order events from Kafka in Databricks, checked against the schema.” Files and streams land together, and bad rows are set aside, not dropped. ### Service desk numbers in Power BI “Every morning, sync changed ServiceNow incidents into Microsoft Fabric and refresh the Power BI dataset for the service desk.” Service managers open today's numbers without asking for an export. ### Ad spend beside revenue “Every night, load Google Ads spend and Salesforce closed-won revenue into BigQuery so marketing can compare them.” Cost and revenue sit in one table, updated every day. ### New starters set up from Workday “When a new worker appears in Workday, order their laptop and accounts in ServiceNow, and add them to Salesforce if they join the sales team.” IT gets the request as soon as a new person is added. ### Major incidents reach engineering “When a priority 1 incident opens in ServiceNow, create a Jira issue for engineering and post the incident link in Slack.” Engineering hears about an outage without anyone forwarding a ticket. ### Closed deals into the ERP “When a Salesforce opportunity is closed won, ask finance to approve it, then create the sales order in NetSuite.” Orders reach NetSuite the same way every time, and finance still signs off. ### Company knowledge kept current “Every day, gather new pages from Notion, Confluence and Google Drive, store them in Pinecone with OpenAI for AI search, and post a summary to Discord.” AI search answers from this morning's documents, not last quarter's. How AnnE works ## AI plans the job. A fixed program runs it. Once you approve it, the job runs the same way every time. The AI never runs it, so a model update changes nothing you rely on. - 1 ### Say it AnnE lays out the plan in plain words and asks only what she cannot know, like which channel or which rep. - 2 ### Try it The job runs on realistic sample records before you connect anything. You see the result first. - 3 ### Approve it It runs on a schedule, when something happens in an app, or from a form. Anything that sends, pays or deletes waits for a person until you say otherwise. The plan, before anything runs Why it holds up ## Built for jobs that have to be right ### The same result, every time An approved job does exactly what you approved, run after run. ### Nothing real until you say so Sample data first. Sends, payments and deletes wait for a person. ### Passwords stay locked away Each job keeps its own app sign-ins. Neither AnnE nor the AI ever sees them. ### Runs where your data is In our cloud, or inside your own network for systems behind the firewall. Single sign-on from Pro Team. Development, Test and Production, directory sync, audit export, your own encryption keys and data residency on Enterprise. Pricing ## Every standard app free, on every plan Shopify, QuickBooks, Slack, Gmail, HubSpot and your own data cost nothing to run. Credits are only for Premium apps - ERP, enterprise CRM and HR, warehouses and databases. [Free$0500 credits / month](https://www.ductileai.com/pricing/)[Starter$19/mo5,000 credits / month](https://www.ductileai.com/pricing/)[Team$59/mo20,000 credits / month](https://www.ductileai.com/pricing/)[Business$199/mo75,000 credits / month](https://www.ductileai.com/pricing/)[EnterpriseCustomAnnual contract, credit pool](https://www.ductileai.com/pricing/) [Compare plans](https://www.ductileai.com/pricing/) ## Hand over your first job this week Start free, or tell us the job and we will build it with you on your sample data. [Start free](https://console.ductileai.com/) [Watch demo](https://www.ductileai.com/demo/) [sales@ductileai.com](mailto:sales@ductileai.com?subject=Ductile%20AI) --- Page: Ductile AI platform: AI worker for automation jobs URL: https://www.ductileai.com/product/platform/ Describe your first job. Start free: AnnE builds it, you approve it, it runs. The Ductile AI platform # An AI worker that builds your business automation jobs, and a platform that runs them Describe a job in plain words. AnnE builds it as a business process from 1,100+ apps and Excel-style formulas, proves it on sample data, and once you approve it, it runs the same way every time, with every run on record. [Start free](https://console.ductileai.com/) [Watch a job being built](https://www.ductileai.com/demo/) How it worksCapabilitiesGovernance Run it your wayArchitectureYour own runners Your own modelAt a glanceQuestions How it works ## From a sentence to a job that runs - 1 ### Describe the job Type or say it in plain words, in the console or in Slack, Microsoft Teams, Google Chat or WhatsApp. Paste a job post or an email as it is. - 2 ### AnnE builds it and tests it AnnE, Ductile AI's AI worker, plans the job, builds it as a business process from tested app actions and Excel-style formulas, and runs it on realistic sample data before anything real happens. - 3 ### You approve it You see the plan in plain words and the result on sample data. Nothing runs, sends, pays or deletes until you say yes. - 4 ### It runs, and every run is on record On a schedule, a webhook, a form or an app event, the same way every time. Each run records what it read, what it wrote and when. What is in the platform ## Everything a business automation job needs The pieces AnnE builds with, and that run your jobs. More for developers on the [developers](https://www.ductileai.com/developers/) page. ### AnnE, the AI worker Reads a request or a job post, plans it, builds the process, writes the formulas and proves it on sample data. Change a job by telling her what to change. ### Business processes A job is a process: steps that read, decide, transform, write and wait for a person. Versioned, explained in plain words, identical on every run. ### Excel-style formulas IF, SUM, LOOKUP, TEXT, FILTER and over 120 functions for every mapping, filter and route, across JSON, XML, CSV, Parquet and fixed-width data. ### 1,100+ apps, 5,700+ actions Ready-made actions for the apps businesses use, each tested against the vendor's API: from Shopify, QuickBooks and Slack to Salesforce, SAP and Snowflake. ### Ways to start a job Schedules, a secure webhook for every process, hosted forms, app events such as a new order or a changed ticket, and a request in chat. ### Data, built in Tables with validation and a history of every change; files in CSV, Excel, JSON, XML, Parquet and PDF; warehouses and lakes; SOAP, EDI and mainframe records. ### People in the loop Approvals for anything that sends, pays or deletes, and worklists where exceptions go to a role, not one person's inbox. ### Run history and audit Every run kept with what it read and wrote. Search it, replay it, export it; every change to a job is kept with who made it. Governance and security ## Built for jobs that have to be right ### The same result, every time An approved job runs exactly as approved. The AI builds it but never runs it, so a model update changes nothing you rely on. ### Sign-ins sealed per job Each job keeps its own app sign-ins in the vault, handed to a step only while it runs. Neither AnnE nor any model ever sees them. ### Access you control Single sign-on, roles, access by space and job, SCIM and audit export, as your plan allows. ### Development to Production Build in Development and promote to Production, with Test on Enterprise, and source control in GitHub. Run it your way ## Our cloud or your network, our models or yours See [Bring your own model and pod](https://www.ductileai.com/product/byom/) and [AnnE in chat](https://www.ductileai.com/product/chat/). ### Ductile AI cloud Nothing to install. Jobs run on Ductile AI's runners, kept apart for each customer. ### Your own runners On-premise runners inside your network, next to databases, file shares and plant systems behind the firewall. ### Your own AI model AnnE and your AI steps on the model you already pay for. Its work uses none of your plan's AnnE builds. ### AnnE in chat Ask for a job, approve it and hear back in Slack, Microsoft Teams, Google Chat or WhatsApp. Platform architecture ## A hosted console, and runners where your jobs run The console plans, keeps and governs; runners do the work. AnnE builds a job once; from then on the approved job runs on a runner without the AI. ### The console The control plane: jobs, processes, schedules, webhooks, forms, approvals, the vault, the AI gateway and run history. Hosted by Ductile AI, the same on every plan. ### AnnE Runs in the console and builds jobs through the AI gateway, on the model chosen for each part of her work. She reads names, settings and the shape of data, never records' values or sign-ins. ### Runners Where a job's steps run, on the JVM or in Python, from the app actions in the catalogue. Each app's code is checked before a runner loads it. ### The vault Sign-ins sealed per job and handed to a step only while it runs. A sign-in made for one job is never offered to another. ### The AI gateway Every model call, AnnE's and your jobs' AI steps', goes through it: the model per organisation and per job, budgets and daily caps, vendors allowed, identifiers taken out. ### The app catalogue 1,100+ apps and 5,700+ actions, each tested against the vendor's API and released to runners as a checked bundle. ### Run history Every run's record - what it read, what it wrote, what it declined and why - kept in the console, searchable and exportable. ### Doors in and out The console, Slack, Microsoft Teams, Google Chat and WhatsApp for people; a REST API, an MCP server and GitHub for code. Your own runners ## Run jobs inside your own network For systems behind the firewall and data that must stay where it is. ### Inside your network Runners next to your databases, file shares, ERP and plant systems, for the data that must not leave the building. ### They call out, nothing calls in An on-premise runner connects out to the console over an encrypted connection; nothing has to reach into your network. ### The same jobs, the same results A job runs the same steps on your runner as in our cloud. Move it between them without rebuilding it. ### By plan An add-on on Team, one on-premise cluster included on Business, included on Enterprise. Steps of Premium apps use credits as anywhere; standard apps are free. Bring your own model ## AnnE on the AI model you already pay for Set it up in Settings > AI gateway. Step by step on [Bring your own model and pod](https://www.ductileai.com/product/byom/). ### Any vendor Anthropic, Google Vertex AI, Amazon Bedrock, Microsoft Azure AI Foundry or any OpenAI-compatible service, on every plan, Free included. ### A model per part of the work Your strongest model for planning, a faster one for filling in steps, the fastest for talking - to bring the cost down. ### Your key, sealed The key you paste is sealed in the console and never shown again; a Check button proves the model answers. ### No limit from us AnnE's work on your model uses none of your plan's AnnE builds or AI allowance; your vendor bills you directly. At a glance ## The Ductile AI platform, line by line | What it is | An AI worker, AnnE, that builds business automation jobs from plain words, and a platform that runs them the same way every time. | | Apps | 1,100+ apps and 5,700+ ready-made actions, each tested against the vendor's API. | | How a job starts | Schedules (down to every minute, by plan), webhooks, hosted forms, app events, chat. | | Formulas | Excel-style, over 120 functions. | | Architecture | A hosted console (the control plane: jobs, vault, AI gateway, run history) and runners where steps run, on the JVM or in Python. | | Where jobs run | Ductile AI cloud - pooled with each run isolated, or not shared with other customers, by plan - or on-premise runners that connect out to the console. | | AI models | Ours, included in every plan, or your own: Anthropic, Google Vertex AI, Amazon Bedrock, Microsoft Azure AI Foundry or any OpenAI-compatible service. | | Where you work | The console, Slack, Microsoft Teams, Google Chat, WhatsApp, a REST API and an MCP server. | | Environments | Development and Production; Test on Enterprise; GitHub source control. | | Security | Sign-ins sealed per job; single sign-on, roles, SCIM and audit export; your records never used to train models. | | Plans | Free to start; paid plans by seats and credits; Enterprise by contract. See [pricing](https://www.ductileai.com/pricing/). | ## Questions about the platform What is the Ductile AI platform? A platform for business automation jobs. You describe a job in plain words; AnnE, its AI worker, builds it as a business process from tested app actions and formulas, proves it on sample data, and once you approve it the platform runs it the same way every time, with every run on record. Who is AnnE? AnnE is Ductile AI's AI worker. She reads what you ask for, plans it, builds it, writes the formulas and tests the result before anything real runs. You change a job by telling her what to change. Is it an AI agent that acts on my systems? No. AnnE builds the job; the job runs as an approved business process without the AI. That is why it gives the same result every time and a model update changes nothing you rely on. Do I need to write code? No. Describe the job and AnnE builds it. Formulas read like Excel, and Python is there for the rare step that needs real code. Which apps does it work with? 1,100+ apps, from Shopify, QuickBooks, Slack and HubSpot to Salesforce, SAP, Snowflake and Databricks. Browse them all on the [apps](https://www.ductileai.com/product/apps/) page. Where do jobs run? In Ductile AI's cloud, or on on-premise runners inside your own network for systems behind the firewall. Can I use my own AI model? Yes, on every plan. Connect Anthropic, Google Vertex AI, Amazon Bedrock, Microsoft Azure AI Foundry or any OpenAI-compatible service; AnnE's work on it uses none of your plan's AnnE builds. See [Bring your own model and pod](https://www.ductileai.com/product/byom/). Is my data used to train AI models? No. Your records are never used to train anything, and your records' values and sign-ins never reach any model. --- Page: Automation jobs for consultants and freelancers - Ductile AI URL: https://www.ductileai.com/solutions/consultants/ Complete your next client job with AnnE. Start free, or tell us about the job and we will build it with you. For consultants and freelancers # Complete client jobs in hours, not weeks. When a client posts an automation job, paste it into AnnE. She builds it with the client's apps, shows it working on sample data, and the client approves it before anything runs. [Start free](https://console.ductileai.com/) [Watch a job being built](https://www.ductileai.com/demo/) How a client job goes ## From the job post to a job that runs - 1 ### Paste the job post The client's job post or email, as written. AnnE turns it into a plan in plain words and asks only what she cannot know. - 2 ### Show it working AnnE completes the job on realistic sample data, so the client sees the result before sharing a single password. - 3 ### The client connects their apps Each sign-in belongs to that client's job alone. You never handle their passwords, and neither does AnnE. - 4 ### The client says yes Then it runs, on a schedule or when something happens in an app, with every run on record. Why consultants use AnnE ## More client jobs, fewer late nights ### Each client kept apart Every client's jobs, sign-ins and history stay in their own job. ### Approvals built in Anything that sends, pays or deletes can wait for the client's yes. ### Changes in a sentence When the client asks for a tweak, tell AnnE what to change. ### The same result every time An approved job runs exactly as approved, so a fixed price stays fixed. Jobs clients ask for ## Each one is a sentence to AnnE More on the [jobs](https://www.ductileai.com/#jobs) page, and every app in the [directory](https://www.ductileai.com/product/apps/). ### Paid orders become invoices “When a customer pays for a Shopify order over $50, find their contact in Salesforce, create the QuickBooks invoice with sales tax added, and post the order number and total in Slack.” ### New buyers in your CRM “When someone places their first Shopify order, add them to HubSpot as a contact with what they bought.” ### Opted-in buyers on your list “Every evening, add today's Shopify customers who agreed to marketing to our Mailchimp audience.” ## Questions consultants ask Do I need to write code? No. Describe the job in plain words and AnnE builds it. If you want to adjust a value, the formulas read like Excel. Can I bring jobs I already run in another automation tool? Yes. Describe what the job does today and AnnE rebuilds it with the same apps. Who holds the client's passwords? The client connects their own apps. Each sign-in belongs to that one job and is never shown to you or to AnnE. Can the client approve before anything runs? Yes. Nothing runs without a yes, and anything that sends, pays or deletes can wait for a person every time. What does it cost? Start free. When a job goes live, choose the plan that fits it; mapping, filtering and cleanup never use credits. --- Page: AnnE in your chat - Ductile AI URL: https://www.ductileai.com/product/chat/ Give AnnE your first job this week. Start free, connect your apps once, and ask her from the chat you already use. AnnE in your chat # Give AnnE jobs from the chat you already use Tell AnnE what you need in Slack, Microsoft Teams, Google Chat or WhatsApp. She builds it with the apps you have already connected, runs it when you say yes, and tells you how it went, all in the same conversation. - Slack - Microsoft Teams - Google Chat - WhatsApp [Start free](https://console.ductileai.com/) [Book a demo](mailto:sales@ductileai.com?subject=AnnE%20in%20chat) How it works ## Four steps, in any of the four apps - 1 ### Connect once The first time you message AnnE, she sends you a private link. Sign in to Ductile AI once, and from then on she knows it is you. - 2 ### Ask Say what you need in plain words, typed or as a voice note: start a new job, change one, run one, or ask why something stopped. - 3 ### Say yes AnnE tells you what she will build and tries it on sample data first. Nothing is saved, turned on or run until you say yes. - 4 ### Hear back Results come to you in the same chat. When a step needs a person, an approval or a task, you are told there, with a link to decide in the console. What you can say ## Plain words, the way you would ask a colleague Build ### “Every Friday at 5pm, email me the week's new HubSpot deals” She says what she will build, tries it on sample data and asks for your yes. Change ### “Add each customer's phone number to the report” She changes the job and asks before saving. Run ### “Run unpaid invoices” She names the job and runs it when you say yes, then tells you how it went. List ### “What can I run?” Your jobs, by name. Why ### “Why did it stop?” What went wrong, in plain words, and what to do next. Only what you have connected ## AnnE builds from chat with the apps you already use in Ductile AI From chat, AnnE uses only the apps you, or your team, have already connected in Ductile AI. If a step needs an app you have not connected, she tells you which one and sends you to the console to add it. Passwords and keys never go through chat. Works with ## Slack, Microsoft Teams, Google Chat and WhatsApp ### Slack Message AnnE in a channel or one to one. Voice clips are understood. ### Microsoft Teams Chat with AnnE one to one or in a team channel. ### Google Chat Add AnnE to a space, or message her directly. ### WhatsApp Message your company's AnnE number. Voice notes are understood. Safe by design ## A chat message never does more than you could ### Your rights, nothing more AnnE does only what you could do yourself in the console: the jobs you can see, the apps you can use. ### A yes before anything real Saving, turning on and running each wait for your yes, from you, in the same conversation. ### Keys stay in the vault Connections are added in the console and sealed there. Neither the chat app nor AnnE ever sees a password. ### Every request on record What was asked, agreed and run is kept with your name, as it is for anything done in the console. --- Page: Demo: a real-world job across five apps - Ductile AI URL: https://www.ductileai.com/demo/ Watch it, then try it on your own job. AnnE builds yours from your words, tried on sample data before anything real. Demo # One request. A working job across five apps. Every new Shopify order is checked against its Stripe payment, logged as a closed-won deal in Salesforce, added to the right Mailchimp list, and announced to the accounts team in Slack. Watch AnnE build it from one paragraph: she lays out the 12 steps, sets how the job starts, asks only what she can't know, and tries it on the store's orders before anything is written. The jobExactly as it was typed. Fetch all new Shopify orders, verify the payment status in Stripe, look up or create the corresponding account and contact in Salesforce to log an closed-won opportunity, conditionally add the customer to a Mailchimp re-engagement campaign if they spent under $150 or a VIP list if they spent more, and instantly alert the accounts team in Slack with the Salesforce record links and invoice details - Shopify - Stripe - Salesforce - Mailchimp - Slack With AnnEThe old way - One paragraph from you, and AnnE builds the jobA consultant from a marketplace builds it, by the hour - You watch her build it, step by step, as you askYou wait for a first version, then pay for each fix - You connect your own apps with your own sign-inSomeone outside your company holds your app logins - She lays out all 12 steps and maps the fieldsEvery step placed and every field mapped by hand - Orders and payments are joined in a single stepA separate look-up for each order, then three more steps - Preview reads real orders, write steps sit it outA test order turns into a real Salesforce record - A change is one sentence to her, not a new projectEach change goes back to the builder as new work - Every run on record: received, done and failedFailures often show up only when someone complains - Every step stays readable on the canvas for youThe know-how leaves when the consultant leaves - About a cent an order: 3 credits, Salesforce onlyMany plans count every action on every order ## What AnnE builds from it The 12 steps, in 8 stages. - ### Checks for new orders every 5 minutes The job starts on a schedule and reads the Shopify orders that are new since the last run. - ### Matches each order to its payment Orders from Shopify and payments from Stripe are joined, so every order carries its payment status. - ### Keeps only the paid orders A Keep only step lets through the orders whose payment Stripe confirms; the rest go no further. - ### Prepares the fields Each order is shaped for the systems it goes to: the customer, the amount and the invoice details. - ### Hands every order to each target One Copy step sends every order to all the writes at once, so no system waits for another. - ### Logs the sale in Salesforce The account and the contact are looked up or created, and a closed-won opportunity is logged. - ### Puts the buyer on the right list Under $150, the customer joins the Mailchimp re-engagement campaign; $150 or more, the VIP list. - ### Tells the accounts team Each order is posted to Slack with its Salesforce record links and invoice details. ## Preview: the real data, before anything runs Preview is a trial run of the whole job. Each step reads the real records of the system it is connected to, or its sample data where it is set to use samples, and keeps what it made for you to look over. Steps that write or send sit it out unless you turn them on. ### Only what is ready runs A step still missing a setting is marked Not run, and the note above the canvas says which one and why; the steps after it wait. Here the Shopify read, the Stripe read and the join ran. ### Every step shows its count Rows in, rows out and the time each step took sit above it: 49 orders from Shopify in 820 ms, 6 charges from Stripe in 453 ms. ### Open any step's rows The panel under the canvas has a tab for each step that ran. Its rows read like a spreadsheet: search them, switch to the raw records, download them, or open the full page. ### Every run is kept Previews and live runs alike are in Runs: the time, the rows sent across all steps, the failures, the slowest step and each step's numbers, with View logs, Rerun and Open in editor. Read from Shopify: the 49 orders the preview read, column by column. Read from Stripe: the 6 charges, with what was captured and refunded. The preview in Runs: 4.8 seconds, 155 rows sent, nothing failed, and each step's numbers. ## More of what a process can hold Shown in the job from the recording and in a larger one AnnE built: a month-end reconciliation across Shopify, Stripe, Square, Mailchimp, Google Sheets, Snowflake, QuickBooks, Slack and Gmail. Every part is a step you can open, read and change on the canvas. Build steps ### One request, one process on the canvas Each part of the request becomes a step: a read from a system, a join, a filter, an AI step, a total, a write, an approval. The steps are wired in the order the work happens, and every one opens on its own settings. The wholesale-order job from the recording, with AnnE's plan beside it. Formulas ### Rules and totals you can read Rules, totals and calculated fields are Excel-style formulas over the columns that reach the step. AnnE writes them from your request, and the platform checks each one against the real columns before the process runs. Totals by channel and by day: each column is a formula. Mapping ### Columns matched across systems Shopify, Stripe and Square name the same thing differently. The join matches each source on its own order column, and a Map step shapes each row for the system it is written to. Each source matched on its own order column. Filtering ### Only the rows that belong A Keep only step lets through the rows its formula allows, here the transactions created last month. The rest go no further, and the run reports how many. Keep only the rows created last month. Routing ### Every row where it should go A Route step sends each row down the path whose condition it meets: orders over $500 to the finance approval, everything else straight on. A Copy step sends the same rows to several targets at once. Orders over $500 wait for finance; the rest go straight through. Human approval ### Finance decides before anything is posted The approval step pauses the run before QuickBooks and notifies the approvers by email or Slack. They decide signed in, in the Worklist; the decision is kept with the rows, and only an approval is posted. The approval before QuickBooks: who decides, the outcomes, and when it escalates. Preview ### Both outcomes, before the first live run Preview plays the whole process on sample or connected data and shows the rows each step produced. You choose how the approval goes; steps that would write to QuickBooks, Slack or email sit the preview out unless you turn them on. Choose how the approval goes before a preview runs. Schedules and webhooks ### Started on time, or on an event The order process starts on each paid Shopify order, and the reconciliation on the first of every month. A process can also start when its webhook is called, when a form is submitted or when someone starts it by hand. Every month on the 1st at 09:00. Tables ### Your own data, without a database Keep reference data, results or a running ledger in tables inside Ductile AI, read and written by any process. A table with its rows, columns, views and API. Forms ### A form that starts a process Build a form and share its link; every submission starts a process with the answers as its first row. An expense claim form that starts a process. ## How AnnE works with you ### Lays out the job first From one paragraph she puts every step on the canvas, wired in the order the work happens, before she fills in any of them. ### Sets how it starts Asked for new orders, she sets the job to check every 5 minutes for anything new, and says so beside the step. ### Asks only what she cannot know Which Salesforce connection to write with, and which orders go to Salesforce and to Slack when “every order” names no rule. She offers to read a few Stripe records, read-only, to fill in the column names. ### Previews before anything runs A preview reads the connected records, skips the steps that write or send, and shows the rows each step produced, like a small spreadsheet. ## Describe your own process Say it or type it in plain language. AnnE builds it, previews it with you, and runs it the same way every time. [Get started](https://console.ductileai.com/) --- Page: Bring your own AI model and pod - Ductile AI URL: https://www.ductileai.com/product/byom/ Bring your model, keep working. Start free, connect your model in Settings, and AnnE builds on it. Bring your own model and pod # Your AI model, your runners. You pay for the platform. AnnE thinks with the AI model your company already pays for, and your jobs run on your own servers. Work on your own model uses none of your plan's AnnE builds. [Start free](https://console.ductileai.com/) [Watch a job being built](https://www.ductileai.com/demo/) Four ways to run ## Ours, yours, or both ### Our models, included Every plan comes with AnnE thinking on our models, within the plan's AnnE builds. ### Your own model, no limit from us Connect the AI model your company already pays for. AnnE's work on it uses none of your plan's AnnE builds or AI allowance: your model vendor bills you for it directly. ### Your own pod, on your servers A pod is the runner that does your jobs' work. Run it inside your own network or cloud account, next to your data, with on-premise runners. ### Both: you pay for the platform With your own model and your own pod, the AI and the computing are yours. Ductile AI charges only for the platform: your plan and its credits. A model for each part of the work ## Spend the strong model where it matters Choose one model for everything, or a different one for each part of AnnE's work, to bring the cost down. ### Planning Reads what you asked for and plans the job. Give it your strongest model. ### Filling in steps Settings, formulas and field mapping for each step. A faster, cheaper model does this well. ### Talking with you The quick back-and-forth while AnnE works. The fastest model you have. ### Your jobs' AI steps Classify, extract and summarise inside your jobs, on your model unless a step names another. Models you can bring ## From the vendor you already use ### Anthropic Claude, with an API key ### Google Vertex AI Claude or Gemini, with a service account ### Amazon Bedrock Claude and more, in your AWS account ### Microsoft Azure AI Foundry Claude and the models you deploy ### Any OpenAI-compatible service With its address and key Example: Google Vertex AI ## Set it up in a few minutes Other vendors work the same way: choose the vendor and paste the key it gives you. ### First, in your Google Cloud account - 1 ### A project with billing In Google Cloud, a project with billing on and the Vertex AI API turned on. - 2 ### The models you want In Vertex AI's Model Garden, enable Claude (accepting Anthropic's terms there) in a region that offers it. Gemini needs nothing extra. - 3 ### A key for Ductile AI A service account with the Vertex AI User role, and a JSON key for it. ### Then, in the Ductile AI console - 4 ### Add your model In the console, Settings > AI gateway > Add model. Give it a short name, choose Claude on Google Vertex AI (or Google Vertex AI for Gemini), the model, your project and region, and paste the JSON key. It is sealed and never shown again. - 5 ### Check it Press Check on the new row: the console makes one call to your model and says whether it answered. - 6 ### Choose what AnnE uses Under What AnnE uses, pick your model, and if you like a different one for planning, filling in steps and talking. Your jobs' AI steps use it too unless a step names another. - 7 ### Set your own limits Optional: under Limits and policy, a monthly budget or a daily cap of your own. ## Questions about your own model and pod Which plans can use their own model? Every plan, Free included. An admin of your organisation sets it up. Does using my own model cost credits? No. AnnE's work on your model uses none of your plan's AnnE builds or AI allowance, and AI steps in your jobs already run on your own provider account. Steps of Premium apps use credits as usual, wherever they run; standard apps are free. What reaches the model? Names, settings and the shape of your data. Your records' values and your sign-ins never reach any model, ours or yours. What if my model does not answer? Check on the model's row shows straight away whether it answers. Your jobs' AI steps can turn to another of your models, named under If it does not answer, use, and you can put AnnE back on our models at any time. Can I go back to your models? Yes. Choose This console's own model and AnnE thinks on ours again, within your plan. Which plans include on-premise runners? Business includes one on-premise cluster and Enterprise includes them; on Team they are an add-on. See [pricing](https://www.ductileai.com/pricing/). --- Page: Pricing: Free, Pro and Enterprise plans - Ductile AI URL: https://www.ductileai.com/pricing/ Every standard app free, on every plan. Start on Free - no card, no expiry - and move up when a job needs a Premium app. Pricing # Standard apps free. Pay when you connect SAP. On every plan, Free included: Shopify, QuickBooks, Slack, Gmail, HubSpot and the rest of the apps a business runs on cost nothing to run, and so does shaping your data. Credits are only for Premium apps - ERP, enterprise CRM and HR, warehouses and databases - and for work run elsewhere. How credits are counted. Enterprise? [sales@ductileai.com](mailto:sales@ductileai.com) Yearly save ~20% Monthly ## Plans ### Free Try it on one real job. $0$0forever 500 credits / month [Start free](https://console.ductileai.com/) - Every standard app, unmetered - Premium apps on the credits - 5 business processes - 500 runs a month - 10 AnnE builds a month - 15-minute schedules ### Starter One person, their own automations. $19$24/ month 5,000 credits / month [Choose Starter](https://console.ductileai.com/) - Every app (1,100+): standard free - Production environment - 50 AnnE builds a month - 2-minute schedules Most popular ### Team A team sharing work, safely. $59$72/ month 20,000 credits / month [Choose Team](https://console.ductileai.com/) - 5 seats, then $12 a seat - Every app (1,100+): standard free - Single sign-on, roles, access by space and job - Development + Production - 200 AnnE builds a month - GitHub source control ### Business A department, cloud and on-premise. $199$239/ month 75,000 credits / month [Choose Business](https://console.ductileai.com/) - 15 seats, then $12 a seat - Every app (1,100+): standard free - Single sign-on, roles, access by space and job - Development + Production - 1,000 AnnE builds a month - 1 on-premise cluster included ### Enterprise Governance, residency, your infrastructure. CustomCustom Annual contract, credit pool [Contact sales](mailto:sales@ductileai.com?subject=Ductile%20AI%20Enterprise) - Unlimited seats; Development, Test and Production - SCIM, audit export, BYOK - Choose region, run on-premise - Dedicated clusters, private connectors - Service levels by agreement, named contact - sales@ductileai.com ## What a credit is A credit is one record going into a step of a Premium app. Standard apps and your own data are free; work run elsewhere counts five. 0credits a record ### Your own data and every standard app Mapping, formulas, filtering, routing, sorting, joining, removing duplicates and totals; files, tables, approvals and waits; and reading or writing a standard app - Shopify, QuickBooks, Slack, Gmail, HubSpot, Mailchimp and the rest of the apps a business runs on. Free however many records pass, on every plan, Free included. 1credit a record ### A Premium app One credit for each record that goes into a step of a Premium app: ERP, enterprise CRM and HR, data warehouses and databases, such as Salesforce, NetSuite, SAP, Workday, ServiceNow and Snowflake. A bulk step - a loader, a bulk export - counts 1 for each 1,000 records. A search counts what goes in, not what comes back. 5credits a record ### Work run elsewhere Running a warehouse query or stored procedure, starting a pipeline or report run, your own Python or PySpark, a command on your own server, or running another business process for each record. ### How credits are counted - Starting a run is free. Schedules, webhooks, forms and app events cost nothing; the credits are in the steps. - Which apps are Premium is set by us, by family (listed below), so the same job costs the same every time, whatever you name its steps. - AI steps inside your jobs (classify, extract, summarise, transcribe) run on your own AI provider account. They cost no credits; your provider bills its tokens to you. - Building and changing jobs with AnnE uses your plan's AnnE builds and minutes of speech, not credits. On your own AI model (Bring your own model) it uses none of your AnnE builds. - Credits reset on the 1st of every month (UTC) on every plan, whichever day you pay. Unused credits do not roll over. - You get a notice in your Worklist at 80% and at 100% of the month's credits. On a paid plan nothing stops: buy 10,000 more credits for $10 in Settings > Billing & plan, lasting a month. Past 3 times your credits with none bought, Premium steps slow down; they are never refused. - On Free, the steps that use credits wait at 100% until the 1st, or until you upgrade. Jobs of standard apps keep running. - Settings > Billing & plan shows the month's credits as they are used: Premium records, work run elsewhere, and the standard-app records that cost nothing. ## Two jobs, counted Every night: find the day's Shopify orders, keep the ones over $500, turn each into a QuickBooks invoice, and post a summary to Slack. On a typical night 200 orders come back and 40 are over $500. | Step | What goes in | Kind of work | Credits | | Every night at 6 pm | Starts the run | - | 0 | | Find today's orders in Shopify | 1 search (200 orders come back) | Standard app | 0 | | Keep orders over $500 | 200 orders, 40 kept | Your own data | 0 | | Map each order to an invoice | 40 orders | Your own data | 0 | | Create the invoice in QuickBooks | 40 invoices | Standard app | 0 | | Collect a one-line summary | 40 invoices | Your own data | 0 | | Post the summary to Slack | 1 message | Standard app | 0 | 0 credits a night. Every app in it is standard, so it runs on Free, every night, for nothing. The same orders, for a wholesale business on Salesforce and Snowflake: look each paid order's buyer up in Salesforce, invoice it in QuickBooks, and load every order into Snowflake. 1,000 orders a month. | Step | What goes in | Kind of work | Credits | | When an order is paid in Shopify | Starts the run | - | 0 | | Look the buyer up in Salesforce | 1 order | Premium app | 1 | | Create the invoice in QuickBooks | 1 invoice | Standard app | 0 | | Update the account in Salesforce | 1 record | Premium app | 1 | | Load the order into Snowflake | 1 row | Premium app | 1 | 3 credits an order, about 3,000 a month. Starter's 5,000 covers it. ## The Premium apps The 115 apps a step pays a credit a record for: enterprise systems, and any web API or scraping. Every other app is standard and free. ### ERP and finance NetSuite, S/4HANA, SAP Business ByDesign, Ariba, Sales Cloud, SAP Analytics Cloud, Oracle Fusion, Dynamics 365 Finance and Operations, Epicor, IFS, Acumatica, Intacct Object, Coupa Resource, Anaplan, Adaptive Planning, concur, Workiva, Tradeshift, Priority Entity ### Enterprise CRM, marketing and sales Salesforce, Pardot, Marketo, Eloqua, Adobe Campaign, Adobe Analytics, B2C Service, Gainsight Company, Clari Forecast, Xactly Object, ZoomInfo Contact, Seismic, Highspot, Veeva Vault, Creatio, DealCloud ### Enterprise HR and payroll Workday, ADP Worker, UKG Pro Employee, Dimensions, UKG Ready, Dayforce Employee, Paylocity, Paychex, Cornerstone, Taleo ### IT service management ServiceNow Record, Ivanti, Moveworks ### Databases and warehouses Snowflake, Databricks, Databricks, BigQuery, Redshift, Oracle, SQL Server, PostgreSQL, MySQL, MongoDB, MongoDB Atlas, teradata, Netezza Record, Vertica, ClickHouse Cloud, Couchbase Capella, Cassandra, DynamoDB, Elasticsearch, SingleStore Workspace, Confluent Kafka, Kafka REST, Treasure Data, CockroachDB ### Analytics and integration platforms Tableau, Power BI, Looker, Splunk, Celonis Data, Qlik Cloud, ThoughtSpot, Analytics, Informatica, Anypoint, Fivetran, Matillion, dbt Cloud, Collibra, Reltio Entity, UiPath, Automation Anywhere, Ataccama, Immuta ### Regulated and industry systems Epic, Cerner, Benchling, Manhattan, EDI, Orderful Transaction ### Any web API and web scraping rest, apihelper, Web ### Enterprise security SailPoint, Saviynt, CyberArk, CyberArk Identity, CrowdStrike, SentinelOne, Zscaler, Netskope, Proofpoint, Mimecast, Qualys, Rapid7, Tenable, Wiz, Sentinel ## Compare plans | | Free | Starter | Team | Business | Enterprise | | Monthly price (billed yearly) | $0 | $19 | $59 | $199 | Custom | | Credits a month | 500 | 5,000 | 20,000 | 75,000 | Pool | | Standard apps | All, free | All, free | All, free | All, free | All, free | | Premium apps | On credits | On credits | On credits | On credits | On the pool | | Extra credits | Upgrade | 10,000 for $10 | 10,000 for $10 | 10,000 for $10 | Pool | | Seats included | 1 | 1 | 5 | 15 | Unlimited | | Business processes | 5 | Unlimited | Unlimited | Unlimited | Unlimited | | Fastest schedule | 15 min | 2 min | 1 min | 1 min | 1 min | | Reserved processes | - | - | Yes | Yes | Yes | | AnnE builds a month | 10 | 50 | 200 | 1,000 | Contract | | Speech with AnnE | 30 min | 60 min | 300 min | 1,500 min | Contract | | Environments | Prod | Prod | Dev, Prod | Dev, Prod | Dev, Test, Prod | | Single sign-on | - | - | Yes | Yes | Yes | | Roles and access by space and job | - | - | Yes | Yes | Yes | | GitHub source control | - | - | Yes | Yes | Yes | | On-premise runners | - | - | $99/mo add-on | 1 included | Included | | SCIM, audit export, BYOK | - | - | - | - | Yes | | Run history | 30 days | 30 days | 180 days | 1 year | 2 years+ | | Support | Community | Email | Email, 1 day | Priority, 4 h | SLA | ## Questions Plans and contracts: [sales@ductileai.com](mailto:sales@ductileai.com) Anything else: [hello@ductileai.com](mailto:hello@ductileai.com) [Cancellation and refund policy](https://www.ductileai.com/legal/refunds/) What counts as a credit? One record going into a step of a Premium app - ERP, enterprise CRM and HR, warehouses and databases. Every standard app, like Shopify, QuickBooks, Slack or HubSpot, is free on every plan, and so is shaping your own data; work run elsewhere costs 5 a record. How credits are counted Which apps are Premium? Enterprise systems: ERP and finance (NetSuite, SAP, Oracle Fusion, Dynamics 365), enterprise CRM and HR (Salesforce, Marketo, Workday, ADP, UKG), IT service management (ServiceNow), databases and warehouses (Snowflake, Databricks, BigQuery, SQL Server, PostgreSQL), analytics and integration platforms, regulated systems and enterprise security. The full list is below and on the apps page. The Premium apps What happens if I go over? On a paid plan nothing stops. You get a notice at 80% and at 100%, and can buy 10,000 more credits for $10 in Settings > Billing & plan. On Free, the steps that use credits wait until the 1st, or until you upgrade; jobs of standard apps keep running. Do AI steps use my credits? No. AI steps inside a job run on your own AI provider account, which bills you for its tokens. Building and changing a job with AnnE uses your plan's AnnE builds, not credits. When do credits reset? On the 1st of every month (UTC), on every plan, whichever day you pay. Unused credits do not roll over. Can I change plans later? Yes, any time from Settings > Billing & plan, and you see the cost before you confirm. Moving up or adding seats is charged straight away for the rest of the period; moving down applies straight away and the unused part is credited against your next payments. Can I cancel any time? Yes, from Settings > Billing & plan. You keep your plan to the end of the period you paid for, you are not charged again, and you can change your mind until then. Afterwards the organization moves to Free; nothing is deleted. [Cancellation and refund policy](https://www.ductileai.com/legal/refunds/) Can I get a refund? Yes: ask within 30 days of your first payment for a plan, or within 14 days of a renewal, and we refund it in full. Billing mistakes are always refunded. [Cancellation and refund policy](https://www.ductileai.com/legal/refunds/) Who takes the payment? Paddle.com is our Merchant of Record. It processes the payment, adds the right sales tax or VAT for where you are, and sends your invoices. Do you offer annual billing? Yes. Paying yearly saves 17% to 21%, depending on the Pro tier. Enterprise is an annual contract. Is my data used to train models? No. Your records are never used to train anything, and credentials never reach the model. --- Page: Developers: processes, formulas, API and MCP - Ductile AI URL: https://www.ductileai.com/developers/ Build with AnnE, or from your own code. The MCP server, the REST API and GitHub - every job is also files you can review. Developers # Everything the platform does, and how You describe the work; AnnE builds it and validates it on sample data. Pick an area to see what she builds with and how to reach it from your own code. BuildStart a processDataPeople in the loopRun and governIntegrate ### AnnE Say the job in a sentence; she plans, builds and tests it. [How AnnE works →](https://www.ductileai.com/#how) ### Business processes Steps on a canvas: read, decide, transform, write, wait for a person. [Process library →](https://www.ductileai.com/developers/processes/) ### Formulas Excel-style formulas for every mapping, filter and route. [Formula reference →](https://www.ductileai.com/developers/formulas/) ### Apps and actions 1,100+ apps and 5,700+ actions, each tested against the vendor's API. [Browse apps →](https://www.ductileai.com/product/apps/) ### Python steps Real code where a step needs it, checked before you save. ### Schedules From every 15 minutes to the last working day of the month. ### Webhooks Every process can have its own secure HTTPS endpoint. ### Forms Hosted forms AnnE builds for you, also as a phone app. ### App events A new order, a changed ticket, a file in a folder, a message. ### Chat Run, change or explain a process from Slack or Teams. [AnnE in chat →](https://www.ductileai.com/product/chat/) ### Tables Built-in tables with validation and a history of every change. ### Files CSV, Excel, JSON, XML, Parquet and PDF, wherever they are kept. ### Warehouses and lakes Snowflake, BigQuery, Databricks and more, loaded incrementally. ### Enterprise formats SOAP, EDI and mainframe records, read and written as records. ### Approvals Anything that sends, pays or deletes can wait for a yes. ### Worklists Exceptions go to a role's worklist, every fix on record. ### Process Runner One tested process over up to 1,000 records, one report. ### Environments Development and Production, Test on Enterprise, with GitHub. [GitHub →](https://www.ductileai.com/developers/github/) ### Your own runners Run steps inside your network, behind the firewall. [Bring your own pod →](https://www.ductileai.com/product/byom/) ### Run history What every run read and wrote: search it, replay it. ### Vault and access Sealed credentials, single sign-on, roles and audit. ### MCP server Build and search processes from Claude Code or any MCP client. [MCP guide →](https://www.ductileai.com/docs/mcp/) ### REST API Processes, runs, deployments and members, with a personal token. [API reference →](https://www.ductileai.com/docs/api/) ### SDK JavaScript and Python today, and what is planned. [SDK page →](https://www.ductileai.com/docs/sdk/) ### Your own AI model AnnE and your AI steps on the model you already pay for. [Bring your own model →](https://www.ductileai.com/product/byom/) Examples and guides ## See it built [Business processesFrom a shop's Monday report to warehouse and dbt pipelines](https://www.ductileai.com/developers/processes/) [Formula referenceExcel-style, every result from the real engine](https://www.ductileai.com/developers/formulas/) [Formulas as dbt macrosOne rule in flight and in every warehouse](https://www.ductileai.com/developers/dbt/macros/) [dbt projectsModels to dbt, on your warehouse](https://www.ductileai.com/developers/dbt/projects/) [GitHub integrationEvery environment a branch, every change a pull request](https://www.ductileai.com/developers/github/) --- Page: GitHub source control - Ductile AI URL: https://www.ductileai.com/developers/github/ Build with AnnE, or from your own code. The MCP server, the REST API and GitHub - every job is also files you can review. Developers · GitHub # GitHub source control [Ductile AI on GitHub](https://github.com/ductileai) Every environment is a branch, every change a commit, every promotion a pull request. Business processes, formulas, warehouse models and environment settings live in your repository as text you can review - and warehouse models as a real dbt project. 2branches: Development and Production (Test too on Enterprise) 1commit for each Commit Development, and for each model saved 0secrets in the repository - credentials travel by name ## How it works - Connect GitHub. Settings › Source control. Install the Ductile GitHub App on your account or organisation, pick one repository, and name a branch for each environment - Development and Production, and Test on Enterprise - and a folder, if the repository holds other things too. The console checks you can see that installation before it trusts it. - Commit Development. One commit on the Development branch with every business process, formula, model and environment setting. A save that changes nothing makes no commit. - Promote by pull request. Promote (pull request) opens a pull request from Development’s branch to Production’s - on Enterprise, to Test’s first, then from Test to Production. Review, required reviewers and branch protection are GitHub’s. The environments above Development change only by pull request: the console never commits to them. - Merge, and it is promoted. With Promote on merge on, a merged pull request promotes the business processes it carries, through the same checks and approvals as promoting by hand - a Production that requires approval gets a pending approval, not a deploy. Every outcome is recorded with the merge commit. ## What the repository holds One job - Order revenue in the Harbor Lane space, with its [models](https://www.ductileai.com/developers/dbt/projects/#order-revenue) and a Run dbt process on Snowflake - exactly as the console commits it: - dbt/ - harbor-lane/ - order-revenue/ - macros/ - dai_formulas.sql - models/ - intermediate/ - orders_enriched.sql - marts/ - daily_revenue.sql - staging/ - stg_customers.sql - stg_orders.sql - sources.yml - dbt_project.yml - environments/ - dev.json - prod.json - formulas/ - harbor-lane/ - order-revenue/ - centstodollars.json - fullname.json - ispaid.json - isweborder.json - normalizeemail.json - ordersize.json - phonedigits.json - roundmoney.json - salesregion.json - salestax.json - statecode.json - models/ - harbor-lane/ - order-revenue/ - daily-revenue.json - orders-enriched.json - stg-customers.json - stg-orders.json - processes/ - harbor-lane/ - order-revenue/ - run-dbt.json - credentials.json - dai-source.json dai-source.json { "environments": [ "environments/dev.json", "environments/prod.json" ], "format": "dai.source/v1", "formulas": [ "formulas/harbor-lane/order-revenue/centstodollars.json", "formulas/harbor-lane/order-revenue/fullname.json", "formulas/harbor-lane/order-revenue/ispaid.json", "formulas/harbor-lane/order-revenue/isweborder.json", "formulas/harbor-lane/order-revenue/normalizeemail.json", "formulas/harbor-lane/order-revenue/ordersize.json", "formulas/harbor-lane/order-revenue/phonedigits.json", "formulas/harbor-lane/order-revenue/roundmoney.json", "formulas/harbor-lane/order-revenue/salesregion.json", "formulas/harbor-lane/order-revenue/salestax.json", "formulas/harbor-lane/order-revenue/statecode.json" ], "models": [ "models/harbor-lane/order-revenue/daily-revenue.json", "models/harbor-lane/order-revenue/orders-enriched.json", "models/harbor-lane/order-revenue/stg-customers.json", "models/harbor-lane/order-revenue/stg-orders.json" ], "processes": [ "processes/harbor-lane/order-revenue/run-dbt.json" ] } credentials.json [ { "kind": "dql.credential.snowflakes3database", "name": "Snowflake analytics", "settings": [ "authType", "databaseName", "hostname", "privateKey", "role", "username", "warehouse" ] } ] models/harbor-lane/order-revenue/stg-orders.json { "definition": { "columns": [ { "formula": "=orders.id", "name": "order_id" }, { "formula": "=orders.customer_id", "name": "customer_id" }, { "formula": "=orders.order_day", "name": "order_day" }, { "formula": "=RoundMoney(CentsToDollars(orders.total_cents))", "name": "total" }, { "formula": "=StateCode(orders.ship_state)", "name": "state" }, { "formula": "=orders.channel", "name": "channel" }, { "formula": "=orders.financial_status", "name": "status" } ], "from": { "kind": "source", "name": "shop.orders" }, "joins": [], "keptAs": "view", "layer": "raw" }, "description": "Shopify orders as they arrive, money in dollars.", "format": "dai.source/v1", "job": "Order revenue", "name": "stg_orders", "space": "Harbor Lane" } formulas/harbor-lane/order-revenue/salesregion.json { "body": "=IF(UPPER(TRIM(state)) in [\"CA\", \"OR\", \"WA\", \"NV\", \"AZ\"], \"West\", IF(UPPER(TRIM(state)) in [\"NY\", \"NJ\", \"MA\", \"PA\", \"CT\"], \"Northeast\", IF(UPPER(TRIM(state)) in [\"TX\", \"OK\", \"LA\", \"AR\"], \"South Central\", \"Central\")))", "description": "", "examples": [], "format": "dai.source/v1", "inputs": [ "state" ], "job": "Order revenue", "name": "SalesRegion", "space": "Harbor Lane" } dbt/harbor-lane/order-revenue/models/marts/daily_revenue.sql -- Revenue by day and region. {{ config(materialized='table') }} select orders_enriched.order_day as order_day, orders_enriched.region as region, COUNT(orders_enriched.order_id) as orders, COUNT(DISTINCT orders_enriched.customer_email) as customers, SUM(orders_enriched.total) as revenue, SUM(orders_enriched.sales_tax) as sales_tax from {{ ref('orders_enriched') }} as orders_enriched group by orders_enriched.order_day, orders_enriched.region ## The rules it keeps - No secrets in the repository A credential travels as its name, its kind and the names of its settings. A step refers to it as credential:, and the same repository imports into another console whose credentials hold other secrets under the same names. - Diffs you can read Keys are sorted and nothing time-dependent is written, so committing unchanged settings is byte-identical and a pull request shows only what changed. - Each model, a commit With a repository connected, saving or deleting a model commits that dbt project - only its own folder, never another process’s draft - and a deleted model’s files leave the repository in the same commit. - dbt files are written, not read The dbt/ folder is derived from the models: an import reads the models and formulas beside it, never the SQL, so the two cannot drift. ## A dbt project you keep in Git Run dbt also runs a dbt project straight from a repository - GitHub, GitLab, Bitbucket or your own Git server: the https address, a branch or tag, and a folder. A private repository is read with a read-only token taken from your vault when the step runs. See the [dbt projects](https://www.ductileai.com/developers/dbt/projects/). ## Plans GitHub source control comes with Pro Team, Pro Business and Enterprise. [Compare plans](https://www.ductileai.com/pricing/) --- Page: Cancellation and refund policy - Ductile AI URL: https://www.ductileai.com/legal/refunds/ Plain terms, and a person answers. Questions about how we work, bill or keep your data: write to us. Legal - [Terms of Service](https://www.ductileai.com/legal/terms/) - [Privacy Policy](https://www.ductileai.com/legal/privacy/) - [Cancellation and refunds](https://www.ductileai.com/legal/refunds/) Questions [hello@ductileai.com](mailto:hello@ductileai.com) Ductile AI Inc. Legal # Cancellation and refund policy Last updated October 24, 2026 This policy covers the Pro plans (Starter, Team and Business), extra seats, and anything else bought in the console from Ductile AI Inc. ("Ductile AI", "we", "us"). An Enterprise agreement signed with us follows that agreement. It is part of our [Terms of Service](https://www.ductileai.com/legal/terms/). ## Who you buy from Our order process is conducted by our online reseller Paddle.com. Paddle.com is the Merchant of Record for all our orders. Paddle provides all customer service inquiries and handles returns. Paddle takes the payment, adds the sales tax or VAT that applies where you are, and sends your receipts and invoices. ## Cancelling your subscription - Cancel any time from Settings > Billing & plan > Cancel subscription. An organization admin can do it; no call or email is needed. - The cancellation takes effect at the end of the period you have already paid for, monthly or yearly. You keep your plan, its seats and its credits until then, and you are not charged again. - Changed your mind? Choose Keep subscription on the same page any time before the period ends, and nothing changes. - When the period ends, the organization moves to the Free plan. Nothing is deleted: your business processes, jobs, connections and data stay where they are. The Free plan's limits apply from then on, including 30 days of run history, so older run history ages out. ## Changing your plan - You can move between Starter, Team and Business, switch between monthly and yearly billing, or change your seats at any time, and you see the cost before you confirm. - Moving up or adding seats takes effect straight away and is charged for the rest of the current period. - Moving down or removing seats also takes effect straight away; the unused part of what you paid is credited against your next payments. ## Refunds - 30-day money-back guarantee. If Ductile AI is not right for you, ask within 30 days of your first payment for a plan and we refund that payment in full, for any reason. - Renewals. Ask within 14 days of a renewal payment, monthly or yearly, and we refund that renewal in full. - Plan changes and seats. Ask within 14 days of a charge for moving up or adding seats, and we refund that charge. - Billing mistakes. A duplicate charge, a charge after your cancellation took effect, or a wrong amount is always refunded in full, whenever you or we find it. - When we refund a plan payment in full, we end that subscription at the same time and the organization moves to the Free plan, with nothing deleted. A partial refund leaves your plan as it is. - Outside these windows we do not refund the unused part of a period, but cancelling stops any further charge and you keep the plan until the period you paid for ends. - Refunds go back to the card or account you paid with, including the tax you paid. Paddle sends them as soon as they are approved; your bank usually shows them within 5 to 10 business days. Nothing in this policy takes away rights you have under the law where you live, such as the right some consumers have to withdraw from a purchase within 14 days. ## How to ask for a refund Email [hello@ductileai.com](mailto:hello@ductileai.com?subject=Refund%20request) from the address you sign in with, and tell us the organization and the payment (its date and amount, or the number on your receipt), and we will get back to you as soon as we can. You can also ask Paddle directly through the link in your receipt email or at [paddle.net](https://paddle.net). ## If a payment fails Paddle tries the payment again over the following days, and Settings > Billing & plan asks you to update your card. Your plan carries on to the end of the period you have paid for. If the payment still cannot be taken, the subscription ends and the organization moves to the Free plan, with nothing deleted. ## Disputes If something on your statement looks wrong, please talk to us first at [hello@ductileai.com](mailto:hello@ductileai.com): a billing problem is usually fixed faster that way than through a bank dispute, which Paddle then has to answer. ## Changes to this policy If we change this policy we update this page and the date at the top. A change never applies to a payment made before it. On this page - Who you buy from - Cancelling your subscription - Changing your plan - Refunds - How to ask for a refund - If a payment fails - Disputes - Changes to this policy --- Page: Terms of Service - Ductile AI URL: https://www.ductileai.com/legal/terms/ Plain terms, and a person answers. Questions about how we work, bill or keep your data: write to us. Legal - [Terms of Service](https://www.ductileai.com/legal/terms/) - [Privacy Policy](https://www.ductileai.com/legal/privacy/) - [Cancellation and refunds](https://www.ductileai.com/legal/refunds/) Questions [hello@ductileai.com](mailto:hello@ductileai.com) Ductile AI Inc. Legal # Terms of Service Last updated October 24, 2026 We have kept these terms short and plain. They are the agreement between you and Ductile AI Inc., a Delaware corporation ("Ductile AI", "we", "us"), for using www.ductileai.com, the console at console.ductileai.com, AnnE, and the runtimes that run your business processes (together, "the service"). By creating an account or using the service you agree to them, along with our [Privacy Policy](https://www.ductileai.com/legal/privacy/) and [Cancellation and refund policy](https://www.ductileai.com/legal/refunds/). If you sign up for a company, you agree for that company. ## 1. Your account Use your real details and keep your sign-in to yourself. If you think someone else is using your account, tell us at [hello@ductileai.com](mailto:hello@ductileai.com) and we will help. Organization admins decide who joins the organization and what each person can do. ## 2. Plans and payment - Plans, prices and what each includes are on our [Pricing](https://www.ductileai.com/pricing/) page. Start free; a paid plan renews each month or year until you cancel, which you can do any time. - Our order process is conducted by our online reseller Paddle.com. Paddle.com is the Merchant of Record for all our orders. Paddle provides all customer service inquiries and handles returns. It takes the payment and adds the sales tax or VAT where you are. - Credits and allowances are counted by the calendar month and start fresh on the 1st. - If we raise a price, we tell you at least 30 days ahead and it starts at your next renewal, so you always have time to decide. - Cancelling and refunds, including our 30-day money-back guarantee, are in the [Cancellation and refund policy](https://www.ductileai.com/legal/refunds/). If anything on a bill looks wrong, write to us and we will put it right. ## 3. You are in charge of your processes AnnE drafts a process and shows you the plan and a sample run; nothing runs until you approve it. Once approved, a process acts in your connected apps with the access you gave it, so what it does there is your call. Take a look at the plan and the sample run before you approve, and use approvals for anything that sends, pays or deletes. ## 4. AI AnnE uses AI to understand what you ask for. It is good, but it can still get things wrong, which is why you see the plan before anything runs. An AI step you add to a process runs on your own AI provider account, under that provider's terms. ## 5. Apps you connect You connect your own accounts at other services, and their terms apply to how you use them. We work to keep our connectors up to date, but we do not control those services; if one changes how it works, a step may pause until we update it, and we will tell you. ## 6. Fair use Use the service the way you would expect any business to. Please do not use it to break the law, send spam, harm or deceive people, spread malware or attack systems, reach other customers' data, or get around your plan's limits. If something is unclear, ask us. ## 7. Your data stays yours You own what you put into the service and the records your processes handle. You let us store and process it only to run the service for you and keep it safe. We never use your records to train AI models. The [Privacy Policy](https://www.ductileai.com/legal/privacy/) explains the rest. ## 8. Our part The service, AnnE, the app catalogue and our brand are ours; while your account is open you are welcome to use them as the service intends. Ideas and feedback you send us are always welcome, and we may use them to make the service better. ## 9. Keeping things running We work hard to keep the service up and your processes running, but no online service can promise to be uninterrupted or free of errors, and neither do we. We keep improving the service, which means features change over time; if a change takes away something important from a paid plan, we tell you in advance. Enterprise customers have their service levels in their agreement. ## 10. If something goes wrong - You can stop at any time: cancel in the console, or ask us to close your account at [hello@ductileai.com](mailto:hello@ductileai.com). - If an account breaks these terms, does not pay, or puts the service or other people at risk, we may pause it. We will talk to you first and give you a fair chance to sort it out, unless it is urgent for security or legal reasons. - When an account is closed, its data is deleted as the Privacy Policy describes. ## 11. Limits on liability We provide the service as it is, and we stand behind what these terms promise. As far as the law allows, neither of us is responsible to the other for indirect losses, such as lost profits or data, and each side's total liability is limited to what you paid us in the 12 months before the claim. None of this limits anything the law does not let us limit, or your rights as a consumer. ## 12. If we disagree Tell us first: most things are sorted out by talking, and we would much rather do that. These terms are governed by the laws of the State of Delaware, USA, without regard to its conflict-of-laws rules, and either of us may take a dispute we cannot settle to the state or federal courts in Delaware. If you are a consumer, you keep the protections, and the right to go to your local courts, that the law where you live gives you. ## 13. Changes If we change these terms in a way that matters, we tell you by email or in the console at least 30 days before the change applies, and you can cancel if you do not agree. If you have an Enterprise agreement with us, it comes first where the two differ. ## 14. Talk to us Ductile AI Inc., [hello@ductileai.com](mailto:hello@ductileai.com). Questions, problems or ideas: we read every message. On this page - Your account - Plans and payment - You are in charge of your processes - AI - Apps you connect - Fair use - Your data stays yours - Our part - Keeping things running - If something goes wrong - Limits on liability - If we disagree - Changes - Talk to us --- Page: Privacy Policy - Ductile AI URL: https://www.ductileai.com/legal/privacy/ Plain terms, and a person answers. Questions about how we work, bill or keep your data: write to us. Legal - [Terms of Service](https://www.ductileai.com/legal/terms/) - [Privacy Policy](https://www.ductileai.com/legal/privacy/) - [Cancellation and refunds](https://www.ductileai.com/legal/refunds/) Questions [hello@ductileai.com](mailto:hello@ductileai.com) Ductile AI Inc. Legal # Privacy Policy Last updated October 24, 2026 This policy explains how Ductile AI Inc. ("Ductile AI", "we", "us") handles personal information when you visit www.ductileai.com, use the console at console.ductileai.com, or talk to AnnE. We keep it short and say what we actually do. ## Two roles - For your account, your use of the service and our website, we decide how the information is used: we are the "controller". - For the records your business processes handle (your customers, orders, invoices and so on), you decide: we process them only to run your processes, on your instructions, as your "processor". If you need a data processing agreement, ask us. ## What we collect - Account details: your name, work email, password (stored only as a one-way hash), your organization and your role in it, and sign-in records such as the time and device, which we use to tell you about new sign-ins. - What you build: your business processes, settings, forms and the conversations you have with AnnE, typed or spoken. - Connections: the credentials for apps you connect, kept encrypted in a vault. AnnE and the AI model never see them. - Run records: what each run read, wrote and refused, and why, so you can check and trace your processes. - Usage: credits, runs and other counts we need to meter your plan and keep the service healthy. - Billing: Paddle, our Merchant of Record, collects your payment details. We receive your customer and subscription references, what you bought and when, and never your card number. - Our website: our page analytics use no cookies and store nothing in your browser. They record the page, the site you came from, any campaign tags in the address, your time zone, how long the page was open, and whether you went on to the console. We do not keep your IP address. ## How we use it - To provide the service: sign you in, build and run your processes, meter your plan, and support you. - To keep it secure: detect misuse, protect accounts, and meet our legal duties. - To improve it, using counts and other information that do not identify you or your records. - To tell you what matters: sign-in notices, billing, changes to the service or these terms. We send marketing email only if you agreed to it, and every such email lets you stop. Where the law asks for a legal basis, ours are: running our contract with you, our legitimate interest in a secure and working service, our legal obligations, and your consent where we ask for it. ## AI and your records AnnE uses an AI model (Anthropic's Claude) to understand your request and draft a process. It works from the names and kinds of your columns and steps; the values in your records are not sent to the model. We never use your records to train AI models. An AI step you add to a process runs on your own AI provider account, under that provider's terms. ## Who we share it with We do not sell or share personal information for advertising. We use a small number of service providers, each bound to use it only for us: - Amazon Web Services: hosting, storage, email, and speech for talking to AnnE. - Anthropic: the AI model behind AnnE, as described above. - Paddle: payments, tax and invoices, as Merchant of Record. - Apps you connect, such as Slack, receive what your processes send them, under their own terms. We may also disclose information if the law requires it, to protect people's safety or our rights, or as part of a merger or sale of the business, in which case this policy continues to apply. ## Where it is kept The service is hosted on Amazon Web Services in the United States. Enterprise customers can choose the region, or run their processes in their own data centre or cloud. Where personal information moves across borders, we protect it as the law requires. ## How long we keep it - Run records: for your plan's run history (30 days on Free and Starter, 180 days on Team, 1 year on Business, 2 years or as agreed on Enterprise). - Your account and what you build: while your account is open. When it is closed, we delete the organization and its data within 30 days, and copies in our backups age out within a further 14 days. - Billing and tax records: as long as the law requires. ## Cookies and storage Our website sets no cookies. The console uses one cookie to keep you signed in, and stores a few preferences in your browser, such as light or dark mode. We use no advertising or cross-site tracking. ## Security Information travels encrypted, is encrypted where it is stored, and each organization's data is kept apart from every other's. App credentials are sealed in a vault; staff access is limited, protected by two-step sign-in, and recorded. ## Your choices and rights Depending on where you live (for example under the GDPR in the EU and UK, or state laws such as California's), you can ask to see, correct, delete or export your personal information, object to or restrict how we use it, or withdraw consent. Write to [hello@ductileai.com](mailto:hello@ductileai.com); we answer as quickly as we can, always within the time the law sets, and will not treat you differently for asking. You can also complain to your local data protection authority. If your information is in a customer's processes, we will pass your request to that customer. ## Children The service is for businesses and is not meant for anyone under 18. ## Changes to this policy If we change this policy in a way that matters, we tell you by email or in the console before it applies, and update the date at the top. ## Contact Ductile AI Inc., [hello@ductileai.com](mailto:hello@ductileai.com). On this page - Two roles - What we collect - How we use it - AI and your records - Who we share it with - Where it is kept - How long we keep it - Cookies and storage - Security - Your choices and rights - Children - Changes to this policy - Contact