The question usually arrives in one of two forms. The optimistic version: "Can we add AI to our product?" The anxious version: "Do we have to rebuild everything to add AI?"
The answer to the first is almost always yes. The answer to the second is almost always no — and when someone tells you otherwise, it's worth asking whether they're scoping your product or their invoice.
We build AI features for clients, and we also operate our own AI product — createawity.art, an image editing and generation app that runs on the web and Android. That second part matters for this article: everything below comes from paying the inference bills, watching real users, and carrying the pager. Not from a whitepaper.
First, decide what the AI is for
The most expensive AI mistake isn't technical. It's building an AI feature because AI exists, rather than because a specific job in your product is slow, manual, or impossible without it.
Before choosing any model or vendor, answer three questions:
- What job does this feature do for the user? "Summarize this thread" is a job. "Add AI" is not.
- What does a wrong answer cost? Autocompleting a product description that a human reviews is low-stakes. Answering a customer's billing question unsupervised is not. The stakes decide how much checking, grounding, and fallback you need — which is most of the real engineering.
- Would a boring feature do the same job? Sometimes the honest answer to "can we use AI for this?" is a well-designed filter, a template, or a rule. If AI is the wrong tool, a good partner says so.
Features that tend to justify the effort: turning unstructured input into structured output, drafting things humans then edit, search that understands meaning rather than keywords, and automation of judgment-lite steps in a workflow. Features that usually don't: anything where the model's output goes straight to an irreversible action.
The three integration patterns
Nearly every AI feature we've shipped — ours or a client's — lands in one of three patterns.
API-first: call a hosted model from your existing backend
Your backend sends a request to a hosted model (OpenAI, Anthropic, Google, or an open-weight model behind an inference provider), gets a response, and shapes it for the user. Your database, your auth, your frontend — all unchanged. The AI is just another downstream service, like your payment provider.
This is where most products should start. It's the fastest to ship, the cheapest to build, and — crucially — the easiest to remove if the feature doesn't earn its keep.
Retrieval: ground the model in your own data
Hosted models know the internet; they don't know your customer's account history or your internal knowledge base. Retrieval-augmented generation (RAG) fixes that: before asking the model, you fetch the relevant slice of your own data and hand it over as context.
This is the pattern for "answer questions about our stuff" features. It's more work than API-first — the retrieval quality, not the model, usually decides whether the feature feels smart — and the timeline is dominated by data preparation and evaluation, not integration.
Custom models: when they're actually warranted
Fine-tuning or training your own model is a late optimization. It makes sense when you have a narrow, high-volume task with clear evaluation criteria and the unit economics to justify it — or hard constraints (latency, privacy, offline) that hosted models can't meet. Starting here is how teams spend two quarters building infrastructure for a feature that an API call would have validated in two weeks.
| Pattern | Best for | Build effort | Typical timeline |
|---|---|---|---|
| API-first | Drafting, transformation, extraction | Low | Weeks |
| Retrieval (RAG) | Questions over your own data | Medium | Longer — data prep dominates |
| Custom / fine-tuned | Narrow, high-volume, hard constraints | High | A quarter or more, honestly |
Where AI sits in an existing architecture
The architectural move that makes all of this safe is boring: put the AI behind a service boundary.
One module owns every conversation with the model — prompt construction, retries, timeouts, cost accounting, and output validation. The rest of your product calls that module the way it calls any internal service, and has no idea which model is behind it.
// The rest of the product only ever sees this shape.
interface DescriptionDrafter {
draft(input: ProductFacts): Promise<Draft>;
}
// Which model, which prompt, what fallback — the adapter's business.
That boundary buys you three things. You can swap models without touching product code — and you will want to, because pricing and quality shift every quarter. You can test the product with the AI mocked. And you have one place to enforce the unglamorous rules: what happens on timeout, what happens when the output fails validation, what gets logged.
Design for the model to misbehave, because it will. Slow responses need streaming or honest progress states, not spinners that hang. Wrong-shaped output needs validation and a retry, then a graceful fallback. The feature being down should degrade the experience, not the product.
And settle data handling in writing before integration starts: which provider tier you're on, whether your users' data can be used for training (most business tiers offer no-training guarantees), what gets logged where, and how long it's retained. These are contract questions, not code questions, and they're much cheaper to answer early.
What it costs — two budgets, not one
Teams budget for the build and get surprised by the run. AI features have both.
The build budget covers design, integration, evaluation, and the failure-path engineering above. It scales with the pattern: API-first is the cheapest; retrieval adds data pipeline work; custom models add training and infrastructure.
The run budget is the inference bill — you pay something every time a user invokes the feature. This is the one that surprises teams, because it scales with success: the better the feature does, the bigger the bill. The drivers are how often users invoke it, how much context you send, and which model you route to.
The run budget is controllable, but only if you design the controls in from day one: meter usage (credits or quotas), cache what repeats, route simple requests to cheaper models, and set hard caps so a runaway loop can't spend your month's budget overnight.
How long does it take?
Honest ranges, with the usual caveat that scope decides: an API-first feature is typically a few weeks from decision to production — most of it in evaluation and failure paths, not the happy path. Retrieval-grounded systems run longer, and the data preparation dominates; if your knowledge base is messy, that's the real project. Custom model work is a quarter or more, and should be treated as its own product decision.
If a proposal quotes days, it's quoting the demo, not the feature. The demo is the easy fifth of the work.
What running our own AI product taught us
createawity.art is where our opinions became operating experience. A few lessons that transfer directly to client work:
Metering isn't a pricing choice; it's an engineering control. We run the product on credits — every generation and edit costs a known amount. That started as a business model and turned out to be the single most important cost-control mechanism: usage is visible, capped, and attributable by design. When we design AI features for clients now, metering goes in the data model on day one.
Design for the model's bad day. Models time out, return odd results, and occasionally fail in ways you didn't imagine. Users forgive a clear "that didn't work — try again, no credit spent" far more readily than a silent failure or a spinner that never resolves. The refund-the-credit path was some of the highest-ROI engineering in the product.
Friction you remove is trust you gain. Free credits with no card required, and credits that never expire, shaped user trust more than any feature we shipped. The transferable version: in AI features, generosity in the trial and honesty in the failure states beat impressive demos.
Watch what users actually do. We built capabilities we were proud of that users ignored, and watched them hammer things we considered secondary. AI features need the same analytics discipline as any product surface — invocation isn't adoption, and adoption isn't satisfaction.
The short version
Add AI as a service layer over the product you already have. Start API-first unless your data is the feature. Put it behind a boundary, budget for the run as well as the build, meter it from day one, and design the failure paths like they're the feature — because to your users, they are.
And if the feature doesn't need AI? Build the boring version. It ships faster and never hallucinates.
Createawity builds AI features for existing products and operates its own AI app, createawity.art. If you're weighing an AI integration, tell us what you're building — we'll tell you what it honestly takes, including when the answer is "you don't need AI for this."