Practical instructions for connecting data, operating the dashboard, using pricing tools, working with the API and SDK, and understanding the p90 vocabulary.
p90 monitors the cost of serving an AI product across a seven-layer cost model, detects economic anomalies, simulates margin trajectories, and generates ranked pricing recommendations. A human approval gate sits at the end of every agent cycle. Nothing changes pricing until a person selects and approves an option.
The name is the thesis. AI systems fail at the p90 and p95 of the cost distribution, not at the average. The gap between your median user's cost and your most expensive user's cost is what determines whether pricing survives contact with real usage.
Two users paying the same price can cost very differently to serve. Averages hide this. p90 tracks the p90 cost-per-request alongside the average, and the ratio between them, because the tail is what turns a healthy margin underwater.
Tokens are the visible fraction of AI cost. Retrieval, context construction, orchestration, retries, concurrency, and evaluation affect different parts of the serving path. A change in one layer can add direct work or amplify request size, repeated execution, capacity pressure, or downstream validation.
If pricing only works when users behave nicely, it does not work. p90 simulates adverse scenarios by default and evaluates the tail rather than only the median, so a floor can hold when usage spikes.
The demo runs entirely on simulated data, marked ‘Simulated’ in the header. Nothing you see in demo mode reflects real spend until you connect a source.
p90.tech is the public frontend. It hosts the landing page, dashboard, authentication screens, documentation, reports, and public SEO pages. It is not the API host.
Use the dedicated service URLs above. The frontend domain is not an API proxy, so replacing backend, SDK, MCP, OTLP, or OAuth URLs with p90.tech will fail until a separate proxy is deployed. For the complete product workflow, use the step-by-step usage tutorial linked below.
p90 monitors your actual metrics, not a simulation, once a source is connected. You only need one observability source to start; add more any time from Settings.
Credentials are verified live and stored in a Fernet-encrypted keystore. Only a last-4 hint is kept in the database; the full key is never exposed back to the client.
Product documentation ends at workspace use. Developers and operators can find deployment, environment, health, CORS, Supabase, and incident guidance in the operator documentation.
Save product context on Connect to tell p90 what you are building, where pricing stands, and what you need to learn first. This does not replace telemetry or the seven-layer cost model. It helps p90 choose relevant comparisons and explain the next action in business terms.
You can revise product context at any time from Connect. Regenerating a pricing plan uses the latest saved context together with the current cost model and observed data.
Your cost model is the workspace COGS configuration. Every field is optional. Fill in what you know and p90 derives cost per request and baseline margin from the available inputs. The seven layers are:
Once saved, p90 recomputes your COGS-per-request, baseline gross margin, and variance headroom, and uses them to set monitoring thresholds tuned to your economics.
A workspace admin can create a workspace-scoped service API key with the api:write scope from Connect. Use it from a server, CI job, or secret manager, never from browser or mobile code. POST the same cost-model fields used by Setup to /api/modules/cogs. The key selects its workspace automatically, so do not send an X-Workspace-ID header.
curl -X POST https://p90-backend-6k66.onrender.com/api/modules/cogs \
-H "Authorization: Bearer $P90_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"layer4_primary_model": "gpt-4.1-mini",
"layer4_cost_per_1k_input_tokens": 0.0004,
"layer4_cost_per_1k_output_tokens": 0.0016,
"layer4_avg_output_tokens": 320,
"current_price_per_request_cents": 4.0
}'There is no dedicated cost-model CLI command yet. MCP supports cost-model configuration when the workspace administrator grants the separate mcp:configure scope. The set_cost_model tool requires explicit confirmation and uses the same seven-layer fields as Setup and the API.
The agent runs continuously as a four-node graph, with a human pricing authority boundary after recommendation generation. It decides when to surface evidence and options.
Every node execution is written to an append-only agent log, and every approved decision is versioned with the economic trigger that caused it.
The lowest price that preserves your target margin under three behaviors: median, p90, and worst reasonable day. The recommended floor is the p90 scenario, because that is where real products break.
How much cost variance your current price absorbs before margin turns negative, expressed in cents and a status band (comfortable / tight / negative). Recomputed each cycle and on every cost-model save.
Open Overview > Plan > Pricing Page Draft and choose Generate pricing page. p90 first reads the configured seven-layer cost model, target margin, cost per request, and deterministic Starter, Growth, and Scale boundaries. It then creates a customer-facing plan with monthly price or Custom pricing, included usage, overage guidance, customer description, features, and a call to action.
A 0–100 assessment across four dimensions (reliability, outcome-measurement infrastructure, cost predictability, and margin stability) telling you whether you can credibly price on outcomes yet.
Enter an enterprise prospect's expected volume, concurrency, and SLA needs. p90 generates Conservative, Target, and Aggressive capacity-based structures with cost to serve, projected margin, annual contract value, key terms, and a recommended pick. This is available to Scale and Enterprise tiers at /dashboard/enterprise/deals.
Brand your playbook and stakeholder exports with your logo, primary color, company name, and a terminology map (e.g. ‘gross margin’ → ‘contribution margin’) for board and investor decks.
Run multiple product lines under one organization with role-based access (owner, admin, analyst, viewer). The org overview at /dashboard/org shows every product's status, margin, and pending recommendations, with team invites.
Every pricing decision in p90 records the economic anomaly that triggered it, the three options considered, structured Decision Evidence, and the approval record. Records are timestamped and attributed.
Workspaces can opt in to an anonymized benchmark network. Each contributor is stored only as a one-way SHA-256 hash of its workspace id plus a secret salt, so a contributor cannot be reverse-identified. Only aggregated period averages are shared, never per-request data.
Benchmarks are surfaced only once a category has at least ten contributors, so no benchmark ever leaks a small sample.
The fastest way to send real telemetry. Wrap your LLM client once; token counts, context size, retries, and per-user cost stream to p90 asynchronously, never blocking or adding latency.
The SDK sends events to the FastAPI service at https://p90-backend-6k66.onrender.com/api/sdk by default. Override the endpoint when using a private network or a future API proxy. The public frontend domain is not an ingestion endpoint.
import { p90 } from "p90-sdk";
const client = p90.wrap(new Anthropic(), {
workspaceId: process.env.P90_WORKSPACE_ID,
apiKey: process.env.P90_API_KEY,
});
// use client exactly as before; telemetry is recorded after each callP90 has two programmatic access paths. The SDK sends product telemetry. MCP gives an AI assistant read access to monitoring context and, when explicitly scoped, the ability to trigger a monitoring cycle, approve a named recommendation, or configure the workspace cost model. Each capability has a separate service-key scope.
{
"mcpServers": {
"p90": {
"command": "python",
"args": ["-m", "mcp.server"],
"env": {
"P90_API_BASE_URL": "https://p90-backend-6k66.onrender.com",
"P90_MCP_API_KEY": "p90_your_workspace_scoped_key"
}
}
}
}A service key represents one workspace, not an organization owner. It cannot manage organization membership or ownership. Revoke a key when its owner, environment, or integration changes. MCP liveness only proves that the HTTP service is running; protected readiness and tools/list checks prove that the service can authenticate and reach the P90 API.
Browser requests use the active workspace plus a Supabase session. Server, CI, and MCP requests can use a workspace-scoped service API key in the Authorization bearer header, removing the need for an interactive login or X-Workspace-ID header.
GET /api/metrics/latest # recent snapshots + thresholds
GET /api/metrics/summary # status, margin trend, pending count
GET /api/agent/logs?limit=50 # append-only agent log
POST /api/agent/approve # { recommendation_id, action, selected_option }POST /api/modules/cogs # upsert the seven-layer cost model GET /api/modules/maturity-score # 0-100 pricing maturity GET /api/modules/pricing-floor # target-margin floor scenarios GET /api/modules/variance-headroom # headroom in cents + status band GET /api/modules/tier-boundaries # Starter / Growth / Scale POST /api/modules/pricing-page # customer-facing pricing copy and plan tiers POST /api/modules/pricing-plan # generate and persist a plan draft GET /api/modules/pricing-plan # retrieve the saved plan for projections PUT /api/modules/pricing-plan # save edited plan copy POST /api/modules/pl-overlay # project a change onto the P&L POST /api/modules/deal-structure # three enterprise deal structures
The pricing-plan endpoints are the shared source for a saved draft. They store the generated copy beside deterministic usage limits, suggested prices, overage rates, margin checks, and guardrails. The P&L overlay, saved pricing-plan report, and enterprise deal calculations can then identify the plan version they used. Projections use observed request volume and cost attribution; they do not infer volume from active users.
GET /api/modules/arch-log # architecture decision log
GET /api/modules/defensibility # decision-defensibility score
GET /api/modules/compliance-export # decision audit export
GET /api/workspace/me # workspace + integration status
POST /api/sdk/telemetry # SDK event ingestion (rate-limited)
POST /api/service-keys # issue a workspace service key (admin)
GET /api/service-keys # list workspace service keys (admin)
POST /api/service-keys/{key_id}/revoke # revoke a service keyThe economics terms p90 uses throughout the product and these docs.