惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

AWS News Blog
AWS News Blog
Jina AI
Jina AI
量子位
V
V2EX
The GitHub Blog
The GitHub Blog
阮一峰的网络日志
阮一峰的网络日志
The Cloudflare Blog
博客园 - 【当耐特】
博客园 - 叶小钗
T
The Blog of Author Tim Ferriss
L
LangChain Blog
博客园_首页
aimingoo的专栏
aimingoo的专栏
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
C
Check Point Blog
T
Tailwind CSS Blog
M
MIT News - Artificial intelligence
Engineering at Meta
Engineering at Meta
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
宝玉的分享
宝玉的分享
博客园 - 聂微东
G
Google Developers Blog
C
CERT Recently Published Vulnerability Notes
K
Kaspersky official blog
NISL@THU
NISL@THU
Hacker News: Ask HN
Hacker News: Ask HN
腾讯CDC
Security Archives - TechRepublic
Security Archives - TechRepublic
H
Hackread – Cybersecurity News, Data Breaches, AI and More
酷 壳 – CoolShell
酷 壳 – CoolShell
Google DeepMind News
Google DeepMind News
The Register - Security
The Register - Security
H
Hacker News: Front Page
Webroot Blog
Webroot Blog
有赞技术团队
有赞技术团队
W
WeLiveSecurity
Martin Fowler
Martin Fowler
S
Security @ Cisco Blogs
L
LINUX DO - 最新话题
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
WordPress大学
WordPress大学
雷峰网
雷峰网
PCI Perspectives
PCI Perspectives
月光博客
月光博客
SecWiki News
SecWiki News
Hacker News - Newest:
Hacker News - Newest: "LLM"
N
News | PayPal Newsroom
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
C
Cyber Attacks, Cyber Crime and Cyber Security

DEV Community

Authentication Security Deep Dive: From Brute Force to Salted Hashing (With Java Examples) Why AI Systems Don’t Fail — They Drift Spilling beans for how i learn for exam😁"Reinforcement Learning Cheat Sheet" I Replaced Chrome with Safari for AI Browser Automation. Here's What Broke (and What Finally Worked) How Python Borrows Other People's Work The $40 Architecture: Processing 1 Billion API Requests with 99.99% Uptime Vibe Coding: A Workflow Guide (From Zero to SaaS) Most webhook security guides protect the wrong side. The scary part is delivery. Headless CMS for TanStack Start: Build a Blog with Cosmic EU Age Verification App "Hacked in 2 Minutes" — What Actually Happened Comfy Cloud’s delete function does not actually remove files Running AI Models on GPU Cloud Servers: A Beginner Guide Event-driven media intelligence with AWS Step Functions and Bedrock I scored 500 AI prompts across 8 quality dimensions — here's what broke How to Call Google Gemini API from Next.js (Free Tier, No Backend Needed) The Portal Protocol: Reclaiming Human Connection in the Age of AI How to Fix Your Team's Scattered Knowledge Problem With a Self-Hosted Forum Intro to tc Cloud Functors: A Graph-First Mental Model for the Modern Cloud Designing Multi-Tenant Backends With Both Ownership and Team Access I Built a Neumorphic CSS Library with 77+ Components — Here's What I Learned PostgreSQL Performance Optimization: Why Connection Pooling Is Critical at Scale Cómo construí un SaaS multi-rubro para gestionar expensas en Argentina con FastAPI + Vue 3 🚀 I Built an Ethical Hacking Scanner Tool – Open Source Project I Replaced /usage and /context in Claude Code With a Single Statusline A Pythonic Way to Handle Emails (IMAP/SMTP) with Auto-Discovery and AI-Ready Design I Collected 8.9 Million Polymarket Price Points — Here's What I Found About How Markets Really Move EcoTrack AI — Carbon Footprint Tracker & Dashboard Everyone's Using AI. No One Agrees How. 5 self-hosted ebook managers worth trying in 2026 Building Your First AI Agent with LangChain: From Chatbot to Autonomous Assistant Common SOC 2 Failures (Real World) Stop Vibe-Checking Your AI App: A Practical Guide to Evals How to Use SonarQube and SonarScanner Locally to Level Up Your Code Quality Your Next To-Do App Is Dead — I Replaced Mine with an OpenClaw AI Sign a Nostr event in 60 lines of Python using coincurve — no nostr-sdk, no nbxplorer, no rust toolchain ITGC Audit Explained Like You’re in Big 4 Patch Tuesday abril 2026: Microsoft parcha 163 vulnerabilidades y un zero-day en SharePoint Stop scraping everything: a better way to track competitor price changes Listing on MCPize + the Official MCP Registry while routing payments OUTSIDE the marketplace — how I kept 100% of my x402 revenue Building an AI-Powered Risk Intelligence System Using Serverless Architecture Why We Ripped Function Overloading Out of Our AI Toolchain Testing AI-Generated Code: How to Actually Know If It Works SaaS Churn Is Killing Your Business. Here Is What to Do About It (Without a Support Team) The Speed of AI Is No Longer Linear - And Self-Improving Models Are Why How to Implement RBAC for MCP Tools: A Practical Guide for Engineering Teams From Standard Quote to Persuasive Proposal: AI Automation for Arborists I built a CLI that scaffolds complete multi-tenant SaaS apps Axios CVE-2025–62718: The Silent SSRF Bug That Could Be Hiding in Your Node.js App Right Now The dashboard that ended our friendship Data Pipelines Explained Simply (and How to Build Them with Python) The Hidden Cost of AI Systems Nobody Talks About. undefined vs undeclared, and how typeof behaves Switching from file-based jobs to NATS/Kafka in Rust without changing code io_uring Adventures: Rust Servers That Love Syscalls Why Agentic AI is Killing the Traditional Database The POUR principles of web accessibility for developers and designers Quantum Neural Network 3D — A Deep Dive into Interactive WebGL Visualization How To Install Caveman In Codex On macOS And Windows Automation Pipeline Reliability: Why Your Workflow Breaks When Nobody Is Watching I Built an 'Open World' AI Coding Agent — It Works From ANY Folder From Freelancing to Product: A Tech Service Company's SaaS Transformation China's AI Giants: Adding Tencent Hunyuan & ByteDance Doubao to AI University (74 Providers) On the Vibe Coders and Their Lies clerk: Auto-Summarize Your Claude Code Sessions AI Weekly — 2026/04/10–04/17 | The Model Lockdown Is Here, but the Toolchain Is the Real Battleground AI 週報 — 2026/04/10–2026/04/17 模型封鎖潮來了,但工具鏈才是真戰場 Maybe this is how Open-Source apps are born... 🚀 Fine-Tune LLMs with LoRA and QLoRA: 2026 Guide tRPC v11 + Next.js App Router: End-to-End Type Safety Without the Boilerplate ShadCN UI in 2026: Why I Stopped Installing Component Libraries and Started Owning My Components SaaS Billing in React Server Components: Stripe + Supabase Without a Single `useEffect` Join our DEV Weekend Challenge — $1,000 in Prizes Across TEN winners! Submissions Due April 20 at 6:59 AM UTC. Implementing FSRS Spaced Repetition in Flutter + Supabase — Adding Memory Science to an AI Learning App "I Texted My Localhost From the Train — Claude Code Fixed the Bug Before I Got Home" I Built a Sales Prep AI and It Went Deeper Than Expected Design to Code #2: One JSON, Eleven Outputs Solving the 100M-Row Problem: A Summary Table Pattern for High-Volume Push Notification Logs Flutter Web With Wasm: What Actually Changes For Developers I Built 50 Royalty-Free Soundtracks for My Side Project in a Weekend Using AI Music Generation The Vibe Coding Security Checklist: 7 Things to Check Before You Ship Stop Letting Googlebot Guess Fix Your React App's SEO Right Desconstruindo o Streaming do LinkedIn: Como Criar um Engine de Extração de Vídeo de Alta Performance com HLS e FFmpeg (EDA Part-1) EDA (Exploratory Data Analysis) Explained With Real Life — Why Looking at Your Data Is the Most Important Step in Machine Learning Brand Relationship Management at Scale: Our 4-Touch Outreach System for 200+ Brands Why String.fromEnvironment() Might Return an Empty String in Dart JGuardrails 1.0.0 — Hardening Java LLM Apps Against Jailbreaks, Toxicity, and Prompt Injection Plan and Schedule a Full Week of Threads Content From One Claude Conversation Coding Cat Oran Ep3, Five Tables Changed Everything Updated: BFF Pattern I'm done watching freelancers get buried by 200 proposals. So I'm building the alternative. This is my first post BFS Algorithm in Java Step by Step Tutorial with Examples Tracking LLM Pricing Monthly: An Open Dataset for 22 AI Models How We Measure Content ROI on a Comparison Site: Revenue Attribution Without Perfect Data Introducing Nova AI Ops: The AI-Native Operating System for SRE Teams I built a free desktop video downloader for Windows — Grabbit How Talkie OCR Helps Vision-Impaired & Dyslexic Users Read the World Around Them VRCFaceTracking安装和iPhone面捕配置教程,有bug Even CrowdStrike Can't See Your Agents The Automation Gold Rush: What n8n Workflows and Claude Are Opening Up for Developers Right Now
Most AI features should not be chatbots
Victor · 2026-04-30 · via DEV Community

I keep watching teams ship AI features inside a chat interface for tasks that already had perfectly good forms, then spend the next quarter trying to figure out why nobody used the AI feature. For any feature where the input shape or the output shape is known in advance, chat is the wrong choice, and the cost shows up as low usage three weeks after launch.

Why chat became the default

Chat became the default because it's the path of least resistance for any team wrapping a language model, and I get why. The model takes text in and gives text out. A chat window is the thinnest UI you can build on top of that primitive, and it doesn't fight the shape of the underlying API. Most chatbot UI design starts there: a window, a text input, a thread of message bubbles. Every starter template ships with one. Every demo your CEO saw uses chat. Of course chat is what shipped.

Chat genuinely helps when the user does not yet know what they want, or when refining unstructured work where the freedom to wander matters more than precision. Stanford researchers recently ran a head-to-head comparison of generative interfaces against conversational ones, and chat actually held its own in casual how-to queries and basic prompts. There are real tasks chat fits well.

Designers have been making this case for years. Amelia Wattenberger's 2023 essay is the canonical version, and the argument has hardened into consensus among practitioners. Chat is the right interface for some AI features. The problem is treating it as the default for all of them. What I want to add is the developer-side rule.

Three scenarios where chat is the wrong choice

Scenario A: A complex form filled by AI

The first time I saw this fail in production was on an insurance application. The team had built a chatbot that asked for each field by name, interpreted the user's reply, and confirmed turn by turn. The flow looked clean in the demo. Once it shipped, completion rates dropped against the old web form. Geoffrey Litt has been arguing for years that LLMs should generate the UI a task actually needs, not force the user to describe their task in prose. We had done the opposite: taken a form that already worked, replaced it with chat, and asked the model to extract from sentences what it could have prefilled into fields.

We swapped it out for a generative form. The AI prefilled fields from the user's prior submissions and uploaded documents, the user edited inline. No conversation. Completion rates recovered. The output shape was known the entire time. It was a form. The fields had names. The conversation existed only because someone decided "AI feature" had to mean "talks to you."

// Wrong shape: chat
Bot:  "Let's start your application. What's your full legal name?"
User: "Jane Smith"
Bot:  "Got it. And your date of birth?"
User: "March 14, 1985"
Bot:  "Thanks. Now your current address..."

// Right shape: generative form
Name:     Jane Smith            from account
DOB:      March 14, 1985        from account
Address:  221B Baker St         from last claim, edit?
[Continue]

Enter fullscreen mode Exit fullscreen mode

Scenario B: Querying a database

Within a sprint of launch, the chat interface we had built sat untouched. The eleven analysts on the team had defaulted back to the dashboard they already knew, and the non-technical operators we had hoped would use chat to query the billing dataset never showed up at all. Chat forced the analysts to type natural-language sentences to do what their existing dashboard filters did in two clicks. The right interface was a natural-language search bar above the existing dashboard, with results appearing as charts directly below it, not paragraphs in a chat thread.

The same Stanford team I cited earlier put a hard number on this. In data analysis tasks specifically, 93.8% of users preferred a generative interface that produced charts and tables over a chat interface that produced text. Most chatbot UI design hides this problem in the demo because demos are linear and clean. Real analyst work jumps between tabs and lives inside charts.

// Wrong shape: chat
Analyst: "Show me revenue by region last quarter"
Bot:     "Q3 revenue by region: NA $2.3M, EMEA $1.8M, APAC $1.1M.
          Want me to break this down further?"
Analyst: "Yes, by product line"
Bot:     "Sure, here is the breakdown..."

// Right shape: NL search above the dashboard
[Search bar above existing dashboard]
"Revenue by region last quarter, by product"
  charts render below, filters update, columns persist

Enter fullscreen mode Exit fullscreen mode

Scenario C: Kicking off a workflow

A platform team I consulted with built a chatbot that let users start a multi-step approval process. Type the trigger. Confirm the parameters. Watch the bot narrate progress. The whole interaction was the bot reading back what the user had just said and then asking for confirmation in different words. The right interface was an action panel: one button to start, prefilled fields the user could edit, and a status timeline that showed progress without anyone having to "send a message" to find out.

The input shape was known, the output shape was known, and the trigger was already a button. Wrapping all of that in a conversation added latency, ambiguity, and a UX surface where the user could send free text the bot then had to parse and reject.

// Wrong shape: chat
User: "Start the Q3 budget review for marketing"
Bot:  "Got it. Who's the approver?"
User: "Sarah Chen"
Bot:  "Amount?"
User: "$45,000"
Bot:  "Confirming Q3 budget review, $45,000, Sarah Chen. Submit?"

// Right shape: action panel
[Start budget review]
  Period:    Q3 2026          (auto)
  Amount:    $45,000           (last quarter)
  Approver:  Sarah Chen        (team config)
  [Submit]   [Edit fields]
[Status timeline: Submitted -> In review -> Approved]

Enter fullscreen mode Exit fullscreen mode

The decision rule

Every AI feature spec I write starts with two questions: does the input have a known shape? Does the output? If either answer is yes, the chat window is friction the user did not ask for.

When the input has a shape, use a command palette, a structured form, or a generative form the AI prefills. When the output has a shape, use the component that fits the shape: charts for data, action panels for workflows, code editors for code, calendars for scheduling. Chat earns its place when neither the input nor the output has a known shape, which is a real category. It is just a smaller one than the field acts like. The test takes ten seconds: sketch the feature on paper, then ask whether you could draw the input fields and the output components without the model in the picture. If you could, build that interface and put the model behind it. Most AI features have at least one known shape. Most AI features should not be chatbots.

The obvious counter is Cursor, which uses chat and works. But Cursor is not pure chat. Its chat handles intent expression while the file tree, diff view, and Apply button handle consumption. Chat as a thin intent layer on top of a structured surface works. Pure chat for both is the failure mode the three scenarios above describe.

Chatbot UI design is the most expensive interface to build well, because the model has to handle every edge case the UI would otherwise constrain. It is also the cheapest to ship badly. If a structured input would have worked, ship the structured input and let the AI fill it.

What's the worst chatbot you've used recently for something that should have been a button? Drop it in the comments. I'm always looking for new examples.


I'm a designer at Fuselab Creative, working on dashboards and AI interfaces for healthcare and enterprise clients. More writing at fuselabcreative.com.