Answered in full rather than hidden behind a click, because the answers are
the argument. One rule applied throughout: where the honest answer is no,
the answer begins with the word no.
An AI is writing to my records. What stops it writing something wrong?
Three things, in order of how much they matter. You approve every
write. All nineteen write tools declare themselves as writing, so
Claude shows you a prompt naming exactly what it is about to record, every
time. Nothing lands silently; only the eleven reads run without a prompt.
Writes validate before they write.
log_meeting runs in two phases — phase one resolves and
checks everything you supplied, every task title, every workstream id,
every attendee name, the deal's contact and initiative, and writes nothing
at all. Only if the whole thing checks out does phase two run. A refused
capture costs you one rejected call and zero rows, instead of half a
meeting plus a duplicate contact. Ambiguity is refused, never
guessed. If "Sarah" could be two people you already have, it stops
and names both. If a decision title fragment matches three decisions, it
names all three. What none of that prevents is you approving a sentence
that was wrong. It is a record of what you said, and it is exactly as
accurate as what you said. It does not fact-check you: tell it the call
was Tuesday when it was Wednesday, and it records Tuesday.
Isn't this just a Notion database with a chat box on it?
The storage is not the difference. Two things are. First, the shape of the
write surface: nineteen write tools, each named for the past-tense verb in
your sentence, so one sentence costs one permission prompt and writes four
linked rows. The alternative design — one tool per table — was actually
built and measured against this one: 63 tools, six prompts for that same
sentence, and a non-atomic sequence that strands a meeting and a deal when
you decline the fifth prompt. That is what a chat box over a database gets
you. Second, nothing derived is stored. Health, momentum, throughput,
time-in-stage and stalled work have no columns; they are recomputed from an
append-only trail every time you ask. In a hand-kept database those numbers
are fields somebody maintains, which means they are stale, which means
nobody trusts them, which is why the database gets abandoned. And the
concession: if you would genuinely keep a Notion database current by hand,
keep it. It has a dashboard, it has team access, it costs a known amount of
money, and this has none of those.
Where does my data actually live, and who can read it?
In a Cloudflare D1 database behind a Cloudflare Worker. D1 is SQL, so
whoever holds that Cloudflare account can query the rows directly with
wrangler without going through StratOps at all. There is no middle tier
holding a copy, no third-party service in the path, and no analytics on
your record — the whole thing has zero runtime dependencies. Two things
that are usually skipped. First: today there is one deployment, in the
Cloudflare account of the person who built it, and there is no self-serve
way for you to spin up your own. I would rather say that than let "the
database is yours" do work it cannot currently do. Second: you reach it by
talking to Claude, so the conversation goes to Anthropic exactly as the
rest of your Claude usage does, under whatever terms your plan carries.
StratOps does not change that and cannot. And I make no claim about
encryption: whatever Cloudflare does by default is Cloudflare's, not
something implemented here, and describing it as a security feature of mine
would be borrowing somebody else's work.
What if it records the wrong thing — can I undo it?
The most recent capture, yes. retract_capture removes exactly
the rows that call created — provenance is a creation stamp, not a link —
and keeps anything you have edited since or that another record now points
at, telling you which and why. A contact the meeting already knew about is
kept, not deleted. That distinction is not academic: treating a link as
membership is what once shipped here as real data loss. Anything older,
no. There is no general undo, no version history and no trash. Older
mistakes are corrected the way you would correct a colleague — you say the
correction and the correction is recorded. One specific gap worth knowing:
a contact update has no undo at all. It writes only the fields you supply,
so a partial update does not erase what is already known, but every field
you do supply replaces what was there. That is why an ambiguous name is
refused outright rather than guessed at.
Can my team use it?
No. One account, one credential, one person, and it is not a setting. The
account row is the identity — there is no user, session, member or role
table in any migration, and the bearer token hashes to exactly one account.
This is not "multi-user is coming soon": there is currently no mechanism by
which a second person obtains a credential short of an operator running SQL
by hand, and the credential logic deliberately resolves to nothing rather
than guess once a second account exists. A second user needs OAuth, and
OAuth is designed and not built. There is a real multi-tenancy layer
underneath and it is tested hard — see the probe above — but that machinery
exists so the ground is solid when a second person becomes possible. It does
not make it possible today.
How do I know my data is isolated from someone else's?
Today the literal answer is that there is nobody else — one account exists.
The mechanism is real regardless, and you can measure it rather than trust
it. Every parent record carries a tenancy key and every child references the
pair, so a row cannot claim one account while pointing at another account's
workspace: the database rejects it. A probe makes 55 deliberate
cross-account attempts across all 27 tables and 47 are refused by the
database itself. The remaining 8 are six columns that can point at any kind
of record, where SQLite cannot express such a key; those are guarded in code
before every write and re-scoped on every read, and the residual risk there
is record pollution rather than disclosure. There is no unscoped path in the
code either — no helper anywhere takes an account id as an argument. Now the
weakness, because you would find it anyway: 22 of those 27 tables rest on
Cloudflare continuing to enforce foreign keys, and nothing in the running
system verifies that it still does. Turn enforcement off in the probe and
those 22 protections disappear, while the trigger-guarded references
survive untouched. The layer most people assume is the stronger one is
the layer resting on somebody else's promise. A
production canary for it is the first item on the fix list and it is not
built.
What does it cost, and what happens when I stop paying?
Nothing, and nothing — there is no price. No plan, no tier, no trial, no
card, nothing to cancel, and no free tier being withheld from this page as a
tactic. It runs for one person. If it ever becomes purchasable that will be
a different conversation and a visibly different page. The real question
underneath — will my record be held hostage — has a structural answer rather
than a promise: the rows are in a D1 database, which is SQL, readable
directly by whoever holds the Cloudflare account, with no proprietary format
in the way. There is no export button, which is a real gap. There is also no
lock-in.
Is it secure? Do you have SOC 2?
No SOC 2. No compliance certification of any kind, no penetration test, no
GDPR position, no data processing agreement, no uptime commitment, and
nothing in progress on any of them. If your procurement requires one, stop
here — that is not modesty, it is the answer. It would be easy to write a
reassuring paragraph about taking security seriously; that paragraph would
be worth nothing, and a previous version of this page contained something
very like it, which is how it got caught. What does exist is specific and
checkable: the token is stored only as a SHA-256, no tool returns a
credential, and reads report whether one is set rather than what it is;
there is not a single log statement anywhere in the source, so no record
body and no token has ever reached a log line; deleting an account cascades
all 26 data tables to zero with the other account untouched, verified by a
probe; and the data endpoint refuses any request carrying a browser origin
outright. What is missing is equally specific: no audit log, so nobody can
answer who read what; no rate limiting; and no token expiry, no scopes and
no revocation short of an operator clearing the column by hand.
Is my data used to train a model?
StratOps stores your records in its own database and does nothing with them
except answer your questions. There is no analytics, no telemetry, no
outbound call and no logging. But you reach it by talking to Claude, and
what happens to a Claude conversation is governed by Anthropic's terms and
the plan you are on — not by anything StratOps controls or can promise. Read
Anthropic's policy for your plan. I am not going to make a commitment on
another company's behalf, and you should be suspicious of any tool in this
category that does.
What happens on day one? I have years of history somewhere else.
Day one is honest and unimpressive, and it is better to know that now than
on your first afternoon. Health, momentum, velocity and stalled-work are all
computed from a trail of state changes that has to accumulate. There is no
stored score — which is what stops them going stale, and equally what stops
them existing early. A brand-new account says so outright: health comes back
empty with a reason rather than a number. Importing history does not
shortcut it, and that is arithmetic rather than opinion: half of momentum is
what completed in the last seven days, so a load of finished work scores
zero on the largest component. Cold start is the unsolved product risk here
and I would rather name it than let you find it. Import is still worth doing
for one reason that has nothing to do with the scores — imported timestamps
are real, where remembered ones are not. Capture and recall work from the
very first sentence; the derived numbers need a few weeks of actually
talking to it.
Can I read the source?
Not yet, publicly. The repository is not on GitHub — that is a real open
item on the project's list, not a policy — so "open source" is not a claim
being made here, and any line on this page implying you could go and run the
probe yourself would be false. What I will do is send you the probe file and
its output, and walk you through any specific claim on this page against the
file it comes from. There is also a written API reference covering all
thirty tools, every error a caller can receive, and a numbered list of the
gaps an integrator will hit — including the ones that make the product look
worse. One of them, for flavour: a north-star metric that improves by going
down is scored backwards, because the direction column is stored and never
read.
What if you stop working on this?
Then it stops. There is no SLA, no support commitment, no escrow, no roadmap
you can hold me to, and no company behind it other than one LLC with one
person in it. Anyone telling you otherwise about a product with zero
customers is selling you something. The only thing that meaningfully de-risks
it: the record is rows in a D1 database. SQL, standard shapes, readable
directly by whoever holds the Cloudflare account, with no proprietary format
in the way. If this went dark tomorrow the data would still be sitting there
in a form any competent person could query.
Why should I believe any of this?
Mostly because of what is missing from it. No customer logos, no
testimonials, no rating, no uptime number, no percentage of time saved and no
compliance badge — not held back for a later page, but because none of them
exist and inventing them is a one-way door. The useful test is not whether
you trust me. It is that two of the load-bearing claims — that it is deployed,
and that it refuses browsers — take you ten seconds and a terminal to
falsify, and the rest come with a file I will send you. And for the avoidance
of doubt about how much faith to put in a page like this one: an earlier
version of it made four claims the code did not support, including a
paragraph about honesty that was itself false. A reader caught them. This one
was written against the source — the probe re-run, both suites re-run, the
live endpoints checked, and the "two years of history" I was handed cut to
six after reading the dates in the export.