Test customer 2 of 4
Labelled tester · Homeware store
- Inbox
- shopper2@test.useobsession.com
- Phone
- +44 7700 900 214
- Browser
- Phone browser · London
- Card
- Test card · capped at £0
- Schedule
- Watched 48 hours
- Record
- Signing on
Early access
Your agent can reason, but it can’t receive a code, answer a call or keep a receipt. The Obsession API gives it declared AI agents with real inboxes, phone numbers, browsers and cards in 1 call, at any company you pass in. Each signed step lands on your webhook, and you skip weeks of plumbing.
Your own task
On every deploy, sign up as a new user on a UK and a US number, enter the login code and open every email link. Fail the check if a step breaks.
Run log
Finding
The deploy stopped login codes reaching UK numbers. US codes still arrived.
CI held the release. The fix passed a fresh UK sign up at 14:40.
Example run. Every text, screenshot and verdict signed.
Prospect intelligence
For every account our users add, start a free trial with no card as a declared AI agent. Never reply, close it if a rep writes or calls, and add the gap to the account’s record.
Run log
Finding
52 of 208 trials sent nothing after the welcome email.
Each gap lands on its account with the proof. Your users write the opener themselves.
Example run. It never replied, and every email is kept raw and signed.
Competitor tracking
Sign up to every rival our customers name, read their public pricing pages daily, and post every change to our app.
Run log
Finding
Rival A raised Pro from $49 to $59 in the US. The UK price held.
Your customers see the change in their feed, with the signed before and after.
Example run. Every page, email and text signed and dated.
Mystery shopper
Every Monday, shop each merchant who opted in, as an AI agent working for our app. Leave a basket, stop before payment, and check our basket email arrives.
Run log
Finding
37 of 1,200 stores sent no basket email in 48 hours.
Each of the 37 merchants sees the proof in your app, with the step to fix it.
Example run. Every basket and inbox check signed.
A recipe comes with its agents, inboxes and numbers already set up. Type a task and Obsession sets them up for you, or build your own from the same parts.
Get quotes from 40 packaging suppliersfor 10,000 mailer boxes and compare
↵Budget per box?
Under £0.40Under £0.60No capDeadline?
By 13 OctBy 20 OctNo rush10,000 boxes · under £0.60 · by 20 Oct
Example
Mystery shopper4 test customers shop a store
6 missionsProspect intelligenceJoins prospects as a customer
5 missionsAd trackingFollows rivals’ public ads daily
4 missionsWebsite auditTests every form and booking link
3 missionsSupport bot checkAsks your bot what customers ask
2 missionsEmail and SMS trackingLogs every email and text
2 missionsPrice watchFlags rivals’ price changes
1 missionCompetitor trackingLogs every rival email, text and ad
1 missionExample
Labelled tester · Homeware store
Stops before payment
Example
Day 6Login code by text
Enter your code
+44 ···· 142
Enter your code
481902+1 ···· 307
Example
The same call takes a recipe name, a task in plain words, or your own steps.
Get quotes from 40 packaging suppliersfor 10,000 mailer boxes and compare
↵Budget per box?
Under £0.40Under £0.60No capDeadline?
By 13 OctBy 20 OctNo rush10,000 boxes · under £0.60 · by 20 Oct
Example
An array in the call, a CSV, a Clay table or a pasted list. Every company gets its own agent.
Mystery shopper4 test customers shop a store
6 missionsProspect intelligenceJoins prospects as a customer
5 missionsAd trackingFollows rivals’ public ads daily
4 missionsWebsite auditTests every form and booking link
3 missionsSupport bot checkAsks your bot what customers ask
2 missionsEmail and SMS trackingLogs every email and text
2 missionsPrice watchFlags rivals’ price changes
1 missionCompetitor trackingLogs every rival email, text and ad
1 missionExample
Each gets its own ID, inbox, phone number and browser, says it’s AI, and waits as long as the journey takes.
Labelled tester · Homeware store
Stops before payment
Example
Each step comes back signed, with its screenshot and raw message, and the fix drafted for your tracker. By webhook, email, PDF, Slack, a sheet, Clay or your CRM.
Day 6Login code by text
Enter your code
+44 ···· 142
Enter your code
481902+1 ···· 307
Example
We keep every inbox, number and browser working. Your code reads the verdict and its proof.
import { Obsession } from '@useobsession/sdk'const obs = new Obsession({ apiKey: process.env.OBSESSION_KEY })// Run a recipe at every company on your listawait obs.missions.create({ recipe: 'competitor_tracking', targets: ['rival-a.example', 'rival-b.example', 'rival-c.example'], schedule: 'daily', webhook: 'https://your-app.example/hooks/obsession',})// Or type the task, and run it after every deployawait obs.missions.create({ task: 'Sign up as a new user and tell me if a login code or email stops arriving', targets: ['your-app.example'], schedule: 'every_deploy', webhook: 'https://your-app.example/hooks/obsession',})// Example: POST https://your-app.example/hooks/obsession{ "event": "mission.verdict", "mission": "msn_4c1e", "target": "your-app.example", "step": "login_code_sms", "verdict": "silent", "finding": "No login code in 10 minutes on a UK number", "at": "2026-10-01T14:12:31+01:00", "agent": { "id": "agt_21c9", "declared": true }, "evidence": { "screenshot": "https://api.useobsession.com/v1/evidence/img_77d0", "sms_log": "https://api.useobsession.com/v1/evidence/sms_41a9" }, "receipt": { "signature": "ed25519:7f3a…c91e", "verify": "https://useobsession.com/r/7f3a" }}{mission.verdict
"target": "Rival B",
"finding": "Candle £5 cheaper, free shipping",
"receipt_url": "https://useobsession.com/r/7f3a"
}
Example
Signing up once is easy. Doing it at every company on your list, waiting for every reply and proving what arrived is the part nobody wants to build.
Today: A headless browser, an inbox API and a rented number, wired together by hand
With Obsession: Each agent gets its own declared ID, inbox, phone number and browser from 1 API call
Today: Scrapers read what a company publishes
With Obsession: Agents go through it as a customer and keep everything that arrives
Today: A script holds a browser open while it waits days for a reply
With Obsession: Agents keep their place as long as the journey takes, with no browser held open
Today: Screenshots in a bucket that nobody else can check
With Obsession: Every step signed, with the raw message and its headers, so your users can verify it
Today: Consent rules and spend limits coded into every script
With Obsession: Built into the engine: agents say they’re AI, never message staff at a rival or prospect, spend only inside the budget you set, and never pay on anyone else’s store
Today: 1 company at a time, in a loop you babysit
With Obsession: Every company you pass in at once, and again after every fix
Thursday 06:02. Release 2.15 is green. The launch email goes at 08:00.
Your deploy calls 1 endpoint. A fresh test user signs up, enters the login code from a real text, opens every email and tries the launch code, then stops before payment. The verdict reaches your webhook before the 08:00 send.
A fresh inbox and a real number every run, so your app sees a stranger, not your team’s test account.
Website auditCode not valid
Your 08:00 email promises this code.
Fixes go live after your OK
Example
Monday 09:00. Your users import 50 accounts, and every one looks the same.
For each account your users add, an agent joins the newsletter or starts a free trial with no card, logs what arrives, never replies and closes the trial if a rep writes or calls. The gap lands on the account record.
Contact data says who to email. Agents show what each company actually sends its customers, with signed proof your users can check.
Prospect intelligenceOpener· drafted
Hi Dana, our test sign up at your store
got no welcome email in 48 hours.
Dated proof below. Worth 15 min?
Public sign ups only · you send every opener
Example
Friday 15:00. A customer asks why your app missed a rival’s price rise.
Agents sign up to every rival your customers name, read their public pricing pages daily and keep every email and text. Each change posts to your app as JSON.
Signed up to every rival at once, continuously, as a declared AI agent that never replies.
Competitor trackingAI Notes launch
20% off Pro
Pro $49 → $59
Team plan, $99
Webinar invite
No change
Free plan ended
30% off Pro
Annual 25% off
No change
Ttallyhop.example
US only. UK still £39.
Your Pro is now $12 less
Ttallyhop
ProUSD
$49/monthStart free trialTtallyhop
ProUSD
$59/monthStart free trialWaiting for your OK
Comparison page, 1 editSent to #rivals · 07:05
Public pages only · edits live after your OK
Example
Sunday 22:00. A merchant says your basket emails stopped. Your logs say sent.
Each merchant who opts in gets shopped every Monday by a declared AI agent working for your app. It leaves a basket, stops before payment and watches its inbox for 48 hours.
What a real customer gets at every store at once, not what your logs say, with the proof attached.
Mystery shopperEach owner’s OK · nothing bought
3 journeys walkedPosted in
OpenExample
Tuesday 13:00. A customer’s demo form has sent leads to nobody since Friday.
With each customer’s OK, a labelled test lead fills in their form, opens their chat and calls their sales line daily, then times every reply and who owned it in the CRM.
Its own inbox and number on every channel, so it times the reply a real lead gets.
Lead leaksRouting fixForm and phone leads ·
UnassignedNext free rep within 1 min
Live after your OK
17:00 retestForm 3m 40s
ViewExample
Monday 08:30. A supplier wants 18% more from 1 Nov, and finance wants 3 quotes on file.
When an order passes the limit your users set, a declared agent asks other suppliers to quote, chases until each price is in writing and returns them to your app. It never pays.
Its own buying inbox and number, and every quote dated and signed, so an auditor can check it.
Supplier quotesMailer boxes
Current supplier
from 1 Nov
+18% from 1 Nov
16 quotesin 5 days
Nothing bought
Supplier repliedRise cut to 6%
OpenExample
Up to 12 weeks
of build skipped: identities, inboxes, numbers, browsers, waits and signed receipts, at 2 weeks each
0
inboxes, numbers or browsers for your team to keep alive
Every deploy
tested by a fresh sign up on a real inbox and number
Every customer
in your product gets its own agents, with nothing more to build
SaaS products
Every deploy tested as a new user, and the first 14 days of emails and texts timed.
Sales and CRM tools
Each account your users add, checked as a customer, with the gap on its record.
Competitive intelligence
Every rival your users name, signed up to, priced and logged as JSON.
Ecommerce apps and platforms
Each merchant who opts in, shopped weekly to prove your app works.
Procurement and finance tools
3 signed quotes on every order over the limit, and every overdue invoice chased.
Marketplaces
Both sides of your own marketplace tested as a buyer and a seller after every release.
Booking and local platforms
Every venue’s hours, listings and booking link checked, with each venue’s OK.
Agencies with a developer
Your own recipes for every client, with their OK, and the results in your own dashboard.
Anything else
If a customer can do it in a browser, an inbox or by text, your code can send an agent to do it.
In September, 4 test customers shopped a UK skincare store, name hidden: a £40 gift set left in the basket at 02:57, £21 of deodorant at checkout at 03:11. Open the run as the report, or as the webhook your code would get.
Open the real run
The Obsession API starts declared AI agents from 1 call, each with its own inbox, phone number and browser. They sign up, shop and ask the chat bot at every company your code passes in, and post each signed step to your webhook.
The Obsession API is the infrastructure behind every recipe, from your own code. 1 API call starts declared AI agents, each with its own ID, inbox, phone number and browser. They sign up, shop, ask the chat bot, chase, check and wait at every company you pass in, continuously, and post each signed step to your webhook.
Call the Obsession API. Each agent it starts comes with its own inbox, phone number and browser, kept working by Obsession, so it can sign up, receive login codes and wait for replies at any company your code passes in.
Codes by email and text arrive in the Obsession agent’s own inbox and number, so sign ups that need them go through. At a CAPTCHA or a block it stops and reports it, and it never goes past one.
Yes. Every step an Obsession agent takes is kept with its agent ID, its time and the screenshot or raw message, then signed, and anyone can verify the signature against our public key.
Obsession has a TypeScript SDK, @useobsession/sdk, on a plain HTTP API, so any language can call it.
Obsession goes through each company as a customer, where most tools read what it publishes. A browser agent acts as you, from your own accounts. Obsession’s agents have their own declared ID, inbox and number, go through every company you pass in at once, and keep every message raw, with its headers, a screenshot and a signature.
Yes. Type it as a task and Obsession sets up the agents it needs, or set every step yourself. A recipe is a job with its infrastructure already set up.
Every step an Obsession agent takes comes with a receipt: the screenshot, the raw message, the time and a signature anyone can verify against our public key.
Yes. Every Obsession agent says it’s AI. On your own journeys, or a customer’s with their OK, it says who it works for. At rivals and prospects it says it’s from Obsession, links to useobsession.com/agents, uses only public sign ups, pages and the site’s chat bot, and never names you or your customer.
Obsession’s rules are in the engine, not a setting. An agent never pretends to be a person, sends cold spam or asks staff at a prospect or rival anything: if a person picks up the chat, the step ends. It starts only trials that need no card, never replies in them, and closes them the moment a rep writes or calls. It spends only on a card capped at the budget you set, never pays on anyone else’s store, never signs or accepts terms for you, and never goes behind a login it wasn’t given or gets round a CAPTCHA.
Yes. Give each customer its own Obsession agents and show every result in your own product. Agents touch a customer’s own store, forms or logins only with that customer’s OK.
Ask for Obsession API access and tell us what you’ll build. We set up your keys and your first mission with you.
Tell us what you’d build, and we’ll set up your API access with you. Every agent declared, every step signed.