Skip to content
Commitshark

AI Features Built Into Your Product, Not Bolted On Beside It

We build AI features into products properly: a model-agnostic integration layer, prompts generated from your data schema, and output validated before a user ever sees it.

Most AI features fail for reasons that have nothing to do with the model. A prompt is written by hand, never versioned, and quietly drifts away from the data it is meant to produce. Responses arrive as free text with nothing checking them, so one malformed answer reaches a customer or corrupts a record. A single provider is wired through the codebase, so changing model means a rewrite. And the interface gives nobody a chance to look at the result before it is committed. The model is usually fine. It is the integration around it that breaks.

We treat that integration as the actual engineering work. The provider sits behind one interface, so you can move between models, or run more than one, without touching product code. Prompts are generated from the same schema that defines your data, so what the model is asked for and what your system will accept cannot diverge. Every response is validated against that schema before it is stored, and returned for a person to review and undo rather than applied silently. Where a feature needs your own content we build the retrieval layer on PostgreSQL and OpenSearch, and we keep the evaluation cases so you can tell whether a prompt change improved anything or just changed it. In our own product, BlogForge, we built this drafting layer end to end, including the provider registry, the skill that constrains output to the block types the editor actually understands, and the review step before anything is applied. We also publish those skills as downloadable files that customers hand to whichever AI assistant they already use, so the same schema discipline applies whether the model call happens inside our product or inside yours.

What you actually receive

  • An AI integration layer behind a single provider interface, so adding or changing a model does not mean rewriting product code
  • Prompts generated from your data schema and versioned in your repository alongside the code they serve
  • A downloadable skill file generated from your schemas, so your team can hand it to whichever AI assistant they already use and get output your system will actually accept
  • Schema validation on every model response, so malformed or unexpected output is rejected rather than stored
  • A review step in the interface so a person approves output before it is committed, with undo
  • Retrieval over your own content where the feature needs it, built on PostgreSQL and OpenSearch
  • Cost controls, timeouts and capped retries, so a runaway prompt cannot produce an unbounded bill
  • Evaluation notes listing the cases we tested and the places the feature is known to be weak
  • A written handover so your team can change models and prompts without coming back to us

This is the right service if

  • You want an AI feature inside a product your customers already use, not a separate chatbot bolted on beside it
  • You need to switch model providers, or run several at once, without a rewrite
  • Drafting, summarising or classification work where a person should review results before they are committed
  • Retrieval over your own documents, where answers must be grounded in your data rather than invented
  • You need to know what a feature will cost to run before you commit to shipping it

How this project runs

  1. 1

    Discover

    We work out which part of the job a model is genuinely good at and which part should stay deterministic code, because most of a reliable AI feature should not be a model call at all.

  2. 2

    Design

    We define the exact shape of output your system will accept first, then generate the prompt from that schema so the two cannot drift apart later.

  3. 3

    Develop

    The provider sits behind one interface, responses are validated on the way in, and the interface gives a person the chance to review and undo before anything is committed.

  4. 4

    Deploy

    We ship with cost limits, timeouts and logged failures, then hand over the prompts and evaluation notes so your team can keep tuning without us.

Questions people ask first

Have you actually built this, or would we be your first?

We have built it in our own product. In BlogForge we built the AI drafting layer end to end: a provider registry that resolves a model per request, prompts generated from the data schema so output stays in step with the block types the editor understands, drafts validated as structured blocks rather than free text, and a review step before anything is applied. We also ship downloadable skill files that customers hand to their own AI assistant. You can read the code at github.com/CommitShark/blogforge and judge it yourself. We will be equally direct about what we have not done: if your project needs something outside our experience, we will say so before you commit rather than learn on your budget.

Can our own AI assistant work with the system you build?

Usually that is the better outcome, and it is how we work in our own product. We can generate a skill file from your schemas: a plain markdown document with the field definitions and validation rules, that you hand to whichever AI assistant your team already uses. It is produced by a generator rather than written by hand, and carries a fingerprint of the schema it was built from, so it cannot quietly drift out of step with the system the way a hand-edited prompt does. BlogForge ships two of them. One teaches an assistant to produce content the CMS will actually accept. The other lets an agent drive the product over its API, adding contacts and queueing email sends using a scoped key. The practical benefit is that your team gets AI help without you building a chat interface or paying for inference you do not need.

Which model do you use?

Whichever fits the job, and the choice stays yours to change. The provider sits behind one interface, so the model is a configuration decision rather than an architectural one. We will recommend a starting point based on cost, latency and how much of your data is allowed to leave your infrastructure. We will not lock you to a vendor because it happens to be convenient for us.

How do you stop it making things up?

You cannot fully, and anyone who tells you otherwise is selling something. What you can do is limit the damage. We ask for structured output instead of prose, validate it against your schema, ground retrieval in your own documents, and never commit a result without a person able to review and undo it. For anything consequential we build the feature so the model proposes and your own system decides.

What will it cost to run?

Model calls are metered and scale with traffic, so we treat running cost as a design constraint rather than an afterthought. We set timeouts, cap retries, cache where the same input recurs, and log what each feature actually spends. You get real numbers before you commit to shipping. A smaller model is often good enough once the prompt and the schema are tight.

Do we have to send our data to a third party?

Not necessarily. The architecture can keep everything inside your own infrastructure if your data rules require it, including self-hosted models where the drop in quality is an acceptable trade. We will tell you plainly what each option costs you in capability, because that is a decision you should make with the real numbers in front of you rather than ours.

Why is there no starting price on this page?

Because the honest range is too wide for one number. A single summarisation call and a retrieval pipeline over ten years of documents are not the same project, and quoting one floor for both would mislead you. After a scoping call you get a written scope and a fixed figure before any work starts, exactly like every other service here. We will also tell you if a model is simply the wrong tool for what you are asking for.