Trust & Privacy
We Never See Your Prompts
What We Collect
Each SDK call sends a single metadata event to our ingest API. The event contains only numbers, enums, and short labels — never text content.
| Field | Example value | Why it’s needed |
|---|---|---|
provider | "openai" | Match the right pricing table |
model | "gpt-4o-mini" | Calculate cost per token |
inputTokens / outputTokens | 1240 / 88 | Cost calculation |
latencyMs | 430 | Latency tracking |
occurredAt | "2026-03-06T10:22:00Z" | Time-series grouping |
feature tag | "summarize" | Feature-level attribution |
route tag | "/api/report" | Route-level attribution |
task_type tag | "classify" | Waste detection (wrong model tier) |
customer_plan tag | "free" | Free-tier subsidy detection |
Tags are short labels you define. They describe the context of an AI call, not its content. A tag is "feature=summarize", not the text being summarised.
What We Never Collect
- Prompt text — the instructions or questions you send to the model
- Completions — the text the model returns
- System prompts — your proprietary instructions or personas
- User content — anything your end users write or upload
- Model outputs — generated code, summaries, answers, images
- Conversation history — multi-turn context or memory
- Embeddings — vector representations of your content
These fields are rejected at the ingest boundary if they appear in a payload. The SDK never reads or forwards prompt or completion text.
How It Works
- Your code calls the AI provider directly. The SDK wraps your existing OpenAI / Anthropic / Gemini call — it does not act as a proxy. Your API request goes from your server to the AI provider.
- After the call completes, the SDK reads only token counts, latency, model name, and the tags you provided. It does not read the prompt or completion text.
- A single metadata event is sent to
https://aispendguard.com/api/ingestwith only those fields. - The event is stored in your workspace in an EU-hosted database (Neon, Frankfurt). Only your workspace members can see it.
- The dashboard aggregates metadata to show cost attribution, waste findings, and spend trends. No content is ever displayed because no content is ever stored.
Enforced at the API Boundary
The ingest API actively rejects payloads that include content fields. If a request contains any of the following field names, the entire batch is rejected with a 422 error:
prompt • completion • system_prompt • messages • content • input • output • text • response • user_message • assistant_message • context • document
This is a hard server-side guard — it applies regardless of SDK version or how the API is called.
Data Residency
- Database: Neon PostgreSQL,
eu-central-1(Frankfurt, Germany) - Application: Vercel Edge Network,
fra1(Frankfurt, Germany) - Authentication: Clerk, EU-region instance
- Payments: Stripe (PCI-DSS compliant, no card data stored by us)
All metadata stays in the EU. No data is replicated to US regions.
Verify It Yourself
The SDK is open source. You can read the source code and confirm that it only reads token counts and tags — never prompt or completion text.
Legal Documents
- Privacy Policy — GDPR-compliant, full data controller details
- Data Protection Agreement — for enterprise and regulated industries
- Terms of Service
Questions? privacy@aispendguard.com