Change the model. Keep the record.
The model is a choice per task. What you decided should not depend on it.
The Problem
When you call a model API directly, nothing remembers the project. Every request carries whatever you put in it.
Teams solve that by pasting rules into system prompts. The prompts differ by provider, and when you switch models, the rules do not move with you.
How Stompy Helps
Keep the rules in Stompy and read them before the call. The call can go to any provider: Vercel AI SDK, the Anthropic or OpenAI APIs, Groq, Together AI, Replicate. The record does not know or care.
Switching a model for cost or fit becomes a configuration change rather than a migration, because nothing was stored inside the old one.
A small model is often short of context rather than capability. In our own benchmarks, Haiku 4.5 completed 0 of 40 tasks without the record and 39 of 40 with it. That is one benchmark on one kind of work; the details are on the deep dive page.
Integration Walkthrough
Read the record before the call
The same two functions work whichever provider you call. A project API key is minted by the project's owner while signed in, and works for that one project only. Read the project's own contexts and search with it; managing the project still needs a signed-in user.
import osimport httpxBASE = "https://api.stompy.ai/api/v1/projects/my-project"HEADERS = {"Authorization": f"Bearer {os.environ['STOMPY_PROJECT_KEY']}"}def lock(topic: str, content: str) -> dict:"""Keep a decision. Only called when the person asked for it."""r = httpx.post(f"{BASE}/contexts", headers=HEADERS,json={"topic": topic, "content": content})r.raise_for_status()return r.json()def search(query: str) -> dict:"""Find what the project already holds, by meaning."""r = httpx.get(f"{BASE}/search", headers=HEADERS, params={"query": query})r.raise_for_status()return r.json()decisions = search("how we handle refunds")prompt = f"Project decisions:\n{decisions}\n\nTask: ..."reply = call_model(prompt) # any provider's client
Keep a result when you choose to
Lock only what you want to keep, with its reason.
lock("refund_exception_rule", "Rule: ... Why: ... Decided: ...")
What You Get
- Rules live in one record, not in a different prompt per provider
- Switching models is a configuration change, not a migration
- A smaller model can work from the same decisions as a larger one
- Only what you lock is kept
Start your own record
Join the waitlist and we will tell you when your place is ready.