Fixed scope
Fixed price
against a written scope
- Written scope and acceptance criteria up front
- Fixed price against that scope
- Staged delivery with review points
- Change requests priced separately, never absorbed silently
We are a Shopify Plus Agency specializing in custom development, B2B, checkout extensibility, ERP/CRM integrations, and retained support for scaling brands.
Book a Free Consultation →Semantic search, product data enrichment, support deflection and merchandising assistance — built on real evaluation rather than a demo. Roughly half of what gets proposed as an AI feature is better served by a database query, and we will tell you which half you are looking at.
A language model is expensive, non-deterministic and occasionally wrong. For anything with a correct answer that a query can produce, that is a bad trade. The features that survive are the ones where the input is genuinely unstructured and being approximately right is genuinely useful.
Before an AI feature ships we build a test set from your real data and measure it. Search relevance, enrichment accuracy, support deflection — each gets a number and a threshold agreed in advance.
Without that you cannot tell an improvement from a regression, and you certainly cannot tell whether a model or prompt change made things worse.
What we build
Per-request inference cost, latency and rate limits are architectural concerns, not billing surprises. So is what the feature does when the provider is down, slow, or returns something malformed.
Every AI feature we ship has a defined non-AI fallback. A search box that fails closed because an API timed out is worse than the keyword search it replaced.
When AI is the wrong tool
Practical engineering, applied to a probabilistic component.
Grounding answers in your actual catalogue and policies rather than asking a model to recall them. Most hallucination problems are retrieval problems.
A test set built from your real queries and products, with agreed thresholds, so a model or prompt change can be measured rather than eyeballed. This is the difference between an AI feature you can maintain and one nobody dares touch.
Every feature degrades to a defined non-AI path when the provider is slow, down or returns something malformed. A search box that fails closed is worse than the keyword search it replaced.
Caching, batching and request budgets, so per-request inference cost is a design decision rather than an invoice surprise.
Anything customer-facing and generated at scale — product copy, translations — gets a review workflow before it publishes.
What leaves your store, where it goes, what is retained and what a merchant’s legal team will be told. Decided up front.
This is a short list on purpose. These are the ones we have seen justify their cost.
Handling the queries keyword search fails: descriptive phrasing, misspellings, and intent that does not match your product titles.
Attributes, tags and structured specs extracted from messy supplier data — with a review step before anything publishes.
Answers grounded in your actual shipping, returns and product data, with a measured deflection rate and an obvious path to a human. The metric that matters is resolved-without-escalation, not conversations held — a bot that deflects by exhausting people is worse than no bot.
Three questions before anything is built. If a database query produces the answer, we build that instead and charge you less. Roughly half of what is proposed as an AI feature does not survive this, which is the most valuable part of the engagement.
Draft copy, alt text and metadata at catalogue scale, generated into a review queue rather than straight to the storefront.
First-pass translations for Markets, reviewed by a human before publishing.
The most useful thing we do on these projects is talk clients out of half of them.
| Better without AI | Better with AI | |
|---|---|---|
| Input is structured | A query | — |
| There is one correct answer | A query | — |
| Being wrong is expensive | Rules | — |
| Input is free text | Poor results | Semantic understanding |
| Approximately right is useful | — | Yes |
| Volume makes manual work impossible | — | With review |
| Result needs to be reproducible | Rules | Hard to guarantee |
| Latency budget is tight | Query | Needs caching, sometimes impossible |
7 stages. Open any one of them.
The stage where we often say no.
We test the proposed feature against the boring alternative. If a query, a rule or better data does the job, we say so before you have spent anything on inference.
Retrieval before generation.
Catalogue, policies and content prepared for retrieval, with boundaries agreed on what leaves your store and what is retained.
Before building the feature.
A test set from your real queries and data, with agreed thresholds. Without this you cannot tell improvement from regression later.
Including the fallback.
The feature, its non-AI degradation path, caching, request budgets and monitoring — all first-class scope, not follow-ups.
Numbers, not impressions.
Evaluated against the agreed thresholds and against the non-AI baseline. If it does not beat the baseline, it does not ship.
For anything published at scale.
Review workflows for generated copy, translations and metadata, so nothing customer-facing publishes unreviewed.
Models change underneath you.
Monitoring for quality drift, cost and latency, plus re-evaluation when a provider ships a new model version.
Three shapes, depending on how well defined the work is. Every one starts with a scoped written proposal — no work begins on a verbal estimate.
Fixed scope
Fixed price
against a written scope
Retainer
Monthly
block of hours
Time & materials
Tracked time
billed as used
Rates are quoted against a written scope rather than published as a tier, because the same service costs very different amounts on a five-template store and a five-hundred-template one.
Semantic search pays off fastest where product language and customer language diverge — which is most categories, but not all.
Semantic search, product data enrichment, support deflection and merchandising assistance — built on retrieval over your own Shopify catalogue and policies, and measured against a test set built from your real data. Every AI feature ships with a defined non-AI fallback and an evaluation threshold agreed in advance.
Often not, and that is the first thing we test. If the input is structured, there is one correct answer, and a database query can produce it, then a query is cheaper, faster, reproducible and never wrong in a novel way. Roughly half of proposed AI features do not survive that question.
By grounding answers in your actual Shopify catalogue and policies through retrieval rather than relying on the model to recall them, constraining what it is allowed to answer, evaluating against a test set built from your real data, and keeping a human review step for anything published at scale. That does not make errors impossible — it makes them measurable and bounded.
It depends on request volume, model choice and how much you can cache — and it is treated as a design constraint rather than a number discovered on the first invoice. Request budgets, caching and batching are set during the build.
The feature degrades to a defined non-AI path. Every AI feature we ship has one, because a search box that fails closed when an API times out is worse than the keyword search it replaced.
Decided and documented before anything is built: what leaves your Shopify store, which provider receives it, what is retained and for how long. If that answer will not satisfy your legal team, we would rather find out in week one.
Frequently, yes, and we will say so. There are good semantic search and support apps on the Shopify App Store. Custom work is worth it when your data or workflow is genuinely unusual, not by default.
Against a test set built from your real data with thresholds agreed in advance, and against the non-AI baseline. If it does not beat the baseline, it does not ship.
Indirectly at best. Generated content published at scale without review is a risk rather than a strategy. Enrichment that produces accurate structured product data does help, because that is what search and answer engines read.
Tell us what it should do. We will tell you honestly whether it needs AI, and what it would take to know if it worked.
Tell us what you are building and we will come back with a straight read on scope — including when the answer is that you do not need us.