JetThoughts has been building software since 2008. Book a call, or write to sales@jetthoughts.com. You'll leave the call with a written one-page scope within 2 working days.

A 30-minute call; pick a time.
Scope and price agreed before we start, a plain-English report every Friday, the code in your repository.
Book a callYour board or your biggest customer wants an AI feature, and your team already has a full roadmap. We add one LLM feature to the app you have, live for your users in two weeks once it passes the questions agreed in the scope, on Sprint terms. The model is an API call from the app you already run, in the language it is written in.
A straight answer first: we haven’t shipped an LLM feature for a client yet. We have shipped them in our own product: elital reads a pasted job description, finds candidates with vector search and has an LLM score and explain each match. What we know is in public write-ups (below), and the pass rule for this Sprint is written into the scope, not left to our judgement.
A model reads text your app already holds and hands back something useful:
We won’t train or fine-tune a model. Each feature calls one from a provider such as OpenAI or Anthropic, through code that lives in your app.
Scoping is free: one 30-minute call and a read-only look at your repo, with a written scope within 2 working days. The scope names the feature, the data it reads, and a list of real questions your users ask, each with the answer you’d accept.
Those questions become a test that runs on every change, so you see the answers get better or worse instead of taking our word for it. The scope also sets how many of those questions must pass on production; the second half of the price is due only when they do, with the extra days from the slip terms if they don’t by day ten.
A staging link in week one, a plain-English note every Friday and one mid-sprint call. See a sample Friday report.
$3,200 per Sprint. The scope is agreed in writing before we start. Anything new becomes a second Sprint at the same $3,200. The model provider bills its usage to your own account.
Does our customer data leave the app? The scope lists which fields each request sends to the provider, and you approve that list before we start.
What does each request cost? It depends on the model and how much text each request sends. Providers bill by tokens; we measure them on your test questions during the Sprint, so you see an estimate from your own test questions before you decide to launch.
What if the model gets it wrong? It will, sometimes. That is why the test questions run on every change, and why an agent step that sends or changes data waits for a person to approve it. For timeouts and outages, see what RubyLLM retries, and for how long.
Who owns the prompts and the code? You do. Prompts are plain files in your repository, next to the code that calls them. Yours from the first commit, IP included.

Our LLM write-ups are public, so you can judge them first:
Book a call and bring the feature you’ve been asked for.
JetThoughts has been building software since 2008. Book a call, or write to sales@jetthoughts.com. You'll leave the call with a written one-page scope within 2 working days.

A 30-minute call; pick a time.