Available for new work

Simplicity in a Moment of Creation

Embedding a copilot inside the DigitalOcean database create flow, where users were already going

A DigitalOcean Create Database screen with two-column layout. A 'Step 1: Describe your intent' prompt input invites the user to describe what they're trying to make in plain language. Below the prompt are sample suggestions: 'Staging Redis cache for a Node backend.' 'Production MySQL with daily backups.' 'Low-cost dev MongoDB instance.' 'I'm trying to store sensitive health data.'

The business wanted fewer clicks. What people actually needed was fewer decisions. Setting up a managed database on DigitalOcean means picking an engine, version, region, plan, storage size, availability tier, name, and project. Every choice costs money and affects performance. Cutting clicks without cutting decisions would solve nothing.

So we said: just tell us what you need, and we'll set it up for you.

Making that real without losing the legitimate complexity underneath was the work.

The flow that shipped lets you type one sentence and get a working database minutes later, with every choice editable and every choice explained. It was one of the first non-chat copilots DigitalOcean shipped, and Kubernetes and Droplet create are being redesigned on the same three steps.

Where to put it

We put it inside the create flow.

The first decision was where the copilot should live. The default in 2025 is to drop AI into a chat panel. We put it inside the create flow instead. Click Create Database and you see a prompt box on the left, manual configuration on the right, side by side. Type what you need or set it up by hand. Both work like the rest of the product. Neither feels like a side door.

Don't change what someone came to do just because a chat box is easier to build. People come to create a database, so that's where we met them. The copilot is a new way to drive the existing flow, sitting next to the manual way, one click between them.

Most teams borrowed the chat-box pattern from ChatGPT and put it everywhere. For production software it's usually wrong. A create flow has a shape: decisions, a result to check before committing, real consequences for errors. A form is where that lives, so the copilot fills the form and waits.

The starting point

What manual setup actually looked like.

Before redesigning, I had the team walk through the manual flow. It asks for an engine picker, plan tiers running to thousands per month, storage values that only make sense if you already know cloud infrastructure, standby node options, datacenter region, VPC network, project, and name: twelve fields total, requiring cloud vocabulary most newer customers don't have. Every field is necessary, and every field is also where someone closes the tab.

The DigitalOcean Create a Managed Database screen. A radio-button list of engines runs down the page: MongoDB, PostgreSQL, MySQL, Valkey, OpenSearch. The right rail shows a Summary card with primary node engine, compute tier, storage, and a total cost line.
A continuation of the manual create flow showing storage tiers (Basic, General Purpose, Storage-Optimized) and a list of plan prices stacked vertically: $152/mo, $302/mo, $1,218/mo. Each plan card lists vCPU, GB RAM, connection limit, and storage minimum.

The redesign

Three steps, in plain language.

The new flow is three steps and reads like a sentence. Describe what you want. Review what we configured. Confirm and create.

Step one is a single text box that asks you to describe what you need. We pre-load four sample prompts so the empty box isn't intimidating: a staging Redis cache, a production MySQL with backups, a low-cost dev MongoDB, a sensitive-health-data scenario. The samples are a little ambitious on purpose, to show the copilot understands a description and isn't matching keywords.

Step two is six summary cards in a grid, one per decision: engine, plan, storage, region, name, and project. Each card shows the choice the copilot made and a “Why this choice” link that explains it in plain terms, tied back to what you typed. It picks PostgreSQL because the prompt mentioned analytics, a two-node HA cluster because production was implied, and the Frankfurt region because your IP suggested EU traffic. You can accept any card or change it right there, no reload.

Step three is confirmation and creation. The provisioning screen shows a progress bar with a realistic estimate, a final summary the user can screenshot to share, and a next-steps card with the four things they're most likely to want right away: whitelist IPs, connect the app, test, copy the connection string.

For someone who knows what they want, the whole thing takes about thirty seconds. For someone less sure, the “Why this choice” explanations turn it into a small tutorial.

The DigitalOcean Create Database step 2: Config Preview screen. Two columns of decision cards each show a choice (PostgreSQL 15, 2-node HA cluster, 20 GiB SSD, FRA region, startup-db-0825 name, My First Project) with a 'Why this choice?' affordance and a short rationale. The right rail repeats the choices as a clean cost summary.
Step 3: Confirm and Celebrate. A progress bar reads PROVISIONING with an estimated time of two minutes. Below, a Final Summary card shows the engine, plan, region, storage, project, and name. The right rail lists Common Next Steps: Whitelist IPs, Connect your app, Test your database, Copy connection string, Add trusted sources.

The hard parts

Tone and control.

The two hardest parts were tone and control. Tone is how the AI sounds when it explains itself. We chose confident and brief, honest about what it inferred, with no hedging, no apologizing, and no "based on your input it seems like." You typed a sentence, and the system either got it or it didn't. Either way, it shows its work.

Control is harder. The user has to feel like they can intervene at any point, even when the copilot got it right. Three patterns solve this: inline editing on every card, a one-click rerun at the top of step two, and a one-click manual override at any time.

Inline edit was the biggest win. Each card is a real input with the copilot's choice pre-filled. Click engine, change it to MySQL, and the configuration recalculates because the copilot knows what that change means. The user gets a working draft they can change on the spot.

Rerun is for when the prompt was wrong. The user types "low-cost dev MongoDB," sees the config, realizes they need backups, and types again with that constraint. Past prompts stay visible to compare.

Manual override is the safety valve. At any step you can drop down to the twelve-field flow and configure by hand, with the copilot's choices carried over as starting values.

What it proved

AI doesn't have to take over the screen.

The copilot sits inside the create flow, visible when the user wants it and quiet when they don't. Each new flow built on the pattern takes less time because the control patterns, the explanations, and the manual fallback already exist.

What I'm proudest of is how it changed the way the team thinks. The default question stopped being "should we add AI" and became "where would AI help without getting in the way." The second question leads to better products.

The copilot does real work. The user is still the one who clicked Create.

The business asked for fewer clicks. We gave them a flow where you type one sentence and get a working database minutes later, with every choice editable and every choice explained.

Why

Credits
Client
  • DigitalOcean
Sector
  • Cloud and Developer Tools
  • AI
Role
  • Design Leadership
  • Product Strategy
  • Interaction Design
Discipline
  • Product Design
  • UX Design
  • Wireframing
  • AI Experience Design
Collaborators
  • AJ Zichella (Design)
  • Soyun Park (Design)
  • Kevin Carrillo (Engineering)