Documentation
How Cerqular works, in enough detail to check us
Cerqular reads a business through its payment data, finds revenue in it the operator cannot see, and drafts the work to go and get it. This page describes the mechanism, the grade attached to every figure, and the things it will not do. Where a figure, a permission or a price appears below, it is read live from the running system at page load rather than typed here, because a product that changes daily will outrun any documentation written by hand.
What it does, and what it does not
It reads the transactions in a connected payment account, computes where additional revenue exists in that specific book, and drafts the work to pursue it. Every draft waits for you.
We read. We do not write, and we do not keep anything.
What it can do with a connected payment account
- Read your charges, so we can compute the figure from your real sales
- Read your customers, products and subscriptions, so the figure names real things
- Read your existing checkout links, so a tracked reference can be added to a link you already made
What it cannot do
- Move, refund, capture or touch any money
- Create, change or delete anything on your Stripe account
- See your bank details, your balance or your payouts
- Keep your data: on the anonymous audit nothing is stored, and our access is revoked as soon as the figure is computed
Both lists are rendered exactly as /api/public/stripe-scope returns them. This page does not restate them in its own words, so it cannot drift from them. One clause above refers to an audit you can run without an account. That connection flow is built but not released, so it is not something you can use today. It is left in place because this page mirrors the contract exactly rather than editing it.
Three limits worth naming plainly
- It does not post for you. Cerqular holds no publish permission on any social platform, so every post is written for you and published by you.
- It does not send without approval. Drafts sit in a queue. Nothing leaves until you approve that specific piece.
- It does not write to your payment account. The scope contract above shows an empty write list, and that is the whole list.
How connecting works
Two ways to connect a Stripe account exist today. Step counts below include the steps that happen inside Stripe, because those are the ones that actually cost you time.
| Path | Steps here | Steps in Stripe | What you end up granting |
|---|---|---|---|
| Stripe App install | 1 | 1 consent screen | The permission set shown in the scope contract above. |
| Restricted key | 2 (paste, submit) | 6 or so: Developers, API keys, create restricted key, grant read access, create, reveal and copy | Exactly the read access you tick when creating the key. You control it and can revoke it in Stripe at any time. |
Both paths live in your dashboard once you are signed in. Go to your dashboard to start either one.
What happens after you connect, and what a first week honestly looks like
The computation below runs against your own transactions as soon as the connection is live. What appears first depends entirely on what your book contains: mechanics whose floor your data clears produce a figure, and mechanics whose floor it does not produce a stated refusal instead.
- Straight away. The mechanics run and you see which ones your book supports. Several declining is normal and is not a loading failure.
- The first drafts. Work is drafted for the mechanics that fired, and waits in the approval queue for you.
- Nothing has appeared. The most common cause is a book too thin for any floor. The refusal catalogue below tells you exactly which floor was missed and by how much, so you can see what would change it rather than guess.
We do not promise a day on which money arrives, because we cannot observe one. What we can tell you on day one is which mechanics your own data supports, and that is on your dashboard the moment you connect.
The grading system
Every figure carries a grade describing how much of it was observed and how much was assumed. This is the part of the product worth understanding, because it is what lets you decide how much weight to put on any given number.
Measured we observed the transaction
Money that moved, in a system we are connected to and read directly. A charge in your Stripe account is Measured. So is a zero when every mechanic in a family declined to fire: the engine returns a measured zero with the reason attached, because “nothing here” is itself an observation.
Estimated real pool, real values, stated rate
A count taken from your real rows, multiplied by real transaction values, multiplied by a conversion rate that has not been observed. The pool and the values are yours; the rate is an assumption and is labeled as one wherever it appears, with the reasoning attached so you can move it.
Modeled the weakest input governs
A projection whose inputs include something neither observed nor counted, such as a figure you told us about your own business. A calculation carries the grade of its weakest input, never its strongest, so one assumed number makes the whole result Modeled.
How a figure moves between grades
Grades are not permanent. A figure improves when evidence arrives, and the direction is always the same: assumption is replaced by observation, never blended with it. A projection built on a stated rate stops using that rate once enough real outcomes exist to compute the rate from your own results. Blending the two would produce a number that is neither, and could be defended as neither.
A live example, currently the largest figure the engine produces across the Sample books (Consultants):
$44,600Estimated
sum of 3 separately adjustable components above; every rate is stated, Unobserved, and conservative; nothing is Measured until a transaction closes
What it computes, and how
Each segment figure is produced by the SAME pipeline the authenticated product uses (customer-truth profiles into the generation-magnitude assembler). Every rate is stated, labeled Unobserved, and independently adjustable; every dollar is Estimated and nothing is Measured until a transaction closes.
Every figure here is computed live from seeded Sample business books. They demonstrate the instruments on realistic books; they are NOT customer outcomes, and Cerqular has no customer results to report. Computed 2026-08-13 22:33 UTC.
Every mechanic that fired on one real book (Consultants)
Each row is checkable against the book it came from: a pool counted from real rows, a stated rate, and a real per-unit value. Multiply them and you get the figure.
| Mechanic | Pool | Rate | Per unit | Per year |
|---|---|---|---|---|
| entry divergence dollar real new accounts in the trailing 365 days (first purchase inside the window) | 15 | 0.1 | $24,500 | $36,750Estimated |
| service line attach real account-line gaps: lines held by at least 4 of 16 peer accounts, missing from accounts active in the trailing 365 days | 18 | 0.05 | $8,000 | $7,200Estimated |
| account expansion accounts with MEASURED expansion in their own rows: at least 2 purchases in each trailing half-year and second-half spend at least 125 percent of the first | 1 | 0.1 | $6,500 | $650Estimated |
Rates shown are stated planning assumptions, labeled unobserved wherever they appear, and adjustable. A figure that survives someone lowering the assumption is worth more than a larger one that does not.
For contrast, the same book holds $4,000 of failed charges. recovery (failed charges) is the supporting line, never the headline; it restores revenue that existed, while every line above creates revenue that would not exist
What it refuses to estimate, and why
Every mechanic has a floor. Below it the mechanic declines and says what was missing, rather than producing a small number to fill the space. This is the behaviour worth checking us on: the catalogue below is read from the same engine that serves the product, so these are the actual refusals, in the engine’s own words.
| Mechanic | Why it declined | Books |
|---|---|---|
| unbuilt bundle volume family | no product pair clears the floors (A buyers >= 10, B buyers >= 5, co-buyers >= 3, lift >= 2x); no bundle is proven by this book | 4 |
| price ladder gap volume family | no gap of >= 3x exists between price rungs that each hold >= 8 real buyers; the ladder is honestly continuous | 4 |
| service line attach account family | account-family mechanic: its unit is per-account depth, and this book is not account-shaped (171 buyer(s) at $44 median; account shape needs 100 or fewer buyers and a $500+ median; routed by the growth engine's shape derivation) | 1 |
| engagement ladder account family | account-family mechanic: its unit is per-account depth, and this book is not account-shaped (171 buyer(s) at $44 median; account shape needs 100 or fewer buyers and a $500+ median; routed by the growth engine's shape derivation) | 1 |
| contract cadence account family | account-family mechanic: its unit is per-account depth, and this book is not account-shaped (171 buyer(s) at $44 median; account shape needs 100 or fewer buyers and a $500+ median; routed by the growth engine's shape derivation) | 1 |
| entry divergence dollar account family | account-family mechanic: its unit is per-account depth, and this book is not account-shaped (171 buyer(s) at $44 median; account shape needs 100 or fewer buyers and a $500+ median; routed by the growth engine's shape derivation) | 1 |
| account expansion account family | account-family mechanic: its unit is per-account depth, and this book is not account-shaped (171 buyer(s) at $44 median; account shape needs 100 or fewer buyers and a $500+ median; routed by the growth engine's shape derivation) | 1 |
| entry product steering volume family | volume-family mechanic: its unit is the cross-buyer cohort, and this book is not volume-shaped (31 buyer(s), volume floor 50; routed by the growth engine's shape derivation) | 1 |
| timing correction volume family | volume-family mechanic: its unit is the cross-buyer cohort, and this book is not volume-shaped (31 buyer(s), volume floor 50; routed by the growth engine's shape derivation) | 1 |
| replenishment conversion volume family | volume-family mechanic: its unit is the cross-buyer cohort, and this book is not volume-shaped (31 buyer(s), volume floor 50; routed by the growth engine's shape derivation) | 1 |
| unbuilt bundle volume family | volume-family mechanic: its unit is the cross-buyer cohort, and this book is not volume-shaped (31 buyer(s), volume floor 50; routed by the growth engine's shape derivation) | 1 |
| price ladder gap volume family | volume-family mechanic: its unit is the cross-buyer cohort, and this book is not volume-shaped (31 buyer(s), volume floor 50; routed by the growth engine's shape derivation) | 1 |
| unserved upgrade cohort volume family | volume-family mechanic: its unit is the cross-buyer cohort, and this book is not volume-shaped (31 buyer(s), volume floor 50; routed by the growth engine's shape derivation) | 1 |
| engagement ladder account family | only 2 account(s) have climbed their own timeline (entered on one line, later bought a higher-value line), below the floor of 5 (max of 3 and 15 percent of 31 accounts); no climb path or latency can honestly be learned | 1 |
| entry divergence dollar account family | no entry line clears the account divergence floor (cohort of at least 5 accounts, MEDIAN lifetime lift of at least 1.5x, cohort holding at least 20 percent of book dollars); medians and dollar mass replace the volume rail's mean-over-8 so one whale cannot mint a pattern | 1 |
| entry product steering volume family | volume-family mechanic: its unit is the cross-buyer cohort, and this book is not volume-shaped (16 buyer(s), volume floor 50; routed by the growth engine's shape derivation) | 1 |
| timing correction volume family | volume-family mechanic: its unit is the cross-buyer cohort, and this book is not volume-shaped (16 buyer(s), volume floor 50; routed by the growth engine's shape derivation) | 1 |
| replenishment conversion volume family | volume-family mechanic: its unit is the cross-buyer cohort, and this book is not volume-shaped (16 buyer(s), volume floor 50; routed by the growth engine's shape derivation) | 1 |
| unbuilt bundle volume family | volume-family mechanic: its unit is the cross-buyer cohort, and this book is not volume-shaped (16 buyer(s), volume floor 50; routed by the growth engine's shape derivation) | 1 |
| price ladder gap volume family | volume-family mechanic: its unit is the cross-buyer cohort, and this book is not volume-shaped (16 buyer(s), volume floor 50; routed by the growth engine's shape derivation) | 1 |
| unserved upgrade cohort volume family | volume-family mechanic: its unit is the cross-buyer cohort, and this book is not volume-shaped (16 buyer(s), volume floor 50; routed by the growth engine's shape derivation) | 1 |
| engagement ladder account family | only 1 account(s) have climbed their own timeline (entered on one line, later bought a higher-value line), below the floor of 3 (max of 3 and 15 percent of 16 accounts); no climb path or latency can honestly be learned | 1 |
| contract cadence account family | no rhythm account currently sits inside its own renewal window (its own median gap to twice it); the pool is honestly zero right now | 1 |
| entry product steering volume family | volume-family mechanic: its unit is the cross-buyer cohort, and this book is not volume-shaped (23 buyer(s), volume floor 50; routed by the growth engine's shape derivation) | 1 |
| timing correction volume family | volume-family mechanic: its unit is the cross-buyer cohort, and this book is not volume-shaped (23 buyer(s), volume floor 50; routed by the growth engine's shape derivation) | 1 |
| replenishment conversion volume family | volume-family mechanic: its unit is the cross-buyer cohort, and this book is not volume-shaped (23 buyer(s), volume floor 50; routed by the growth engine's shape derivation) | 1 |
| unbuilt bundle volume family | volume-family mechanic: its unit is the cross-buyer cohort, and this book is not volume-shaped (23 buyer(s), volume floor 50; routed by the growth engine's shape derivation) | 1 |
| price ladder gap volume family | volume-family mechanic: its unit is the cross-buyer cohort, and this book is not volume-shaped (23 buyer(s), volume floor 50; routed by the growth engine's shape derivation) | 1 |
| unserved upgrade cohort volume family | volume-family mechanic: its unit is the cross-buyer cohort, and this book is not volume-shaped (23 buyer(s), volume floor 50; routed by the growth engine's shape derivation) | 1 |
| service line attach account family | account-family mechanic: its unit is per-account depth, and this book is not account-shaped (23 buyer(s) at $450 median; account shape needs 100 or fewer buyers and a $500+ median; routed by the growth engine's shape derivation) | 1 |
| engagement ladder account family | account-family mechanic: its unit is per-account depth, and this book is not account-shaped (23 buyer(s) at $450 median; account shape needs 100 or fewer buyers and a $500+ median; routed by the growth engine's shape derivation) | 1 |
| contract cadence account family | account-family mechanic: its unit is per-account depth, and this book is not account-shaped (23 buyer(s) at $450 median; account shape needs 100 or fewer buyers and a $500+ median; routed by the growth engine's shape derivation) | 1 |
| entry divergence dollar account family | account-family mechanic: its unit is per-account depth, and this book is not account-shaped (23 buyer(s) at $450 median; account shape needs 100 or fewer buyers and a $500+ median; routed by the growth engine's shape derivation) | 1 |
| account expansion account family | account-family mechanic: its unit is per-account depth, and this book is not account-shaped (23 buyer(s) at $450 median; account shape needs 100 or fewer buyers and a $500+ median; routed by the growth engine's shape derivation) | 1 |
| entry product steering volume family | volume-family mechanic: its unit is the cross-buyer cohort, and this book is not volume-shaped (13 buyer(s), volume floor 50; routed by the growth engine's shape derivation) | 1 |
| timing correction volume family | volume-family mechanic: its unit is the cross-buyer cohort, and this book is not volume-shaped (13 buyer(s), volume floor 50; routed by the growth engine's shape derivation) | 1 |
| replenishment conversion volume family | volume-family mechanic: its unit is the cross-buyer cohort, and this book is not volume-shaped (13 buyer(s), volume floor 50; routed by the growth engine's shape derivation) | 1 |
| unbuilt bundle volume family | volume-family mechanic: its unit is the cross-buyer cohort, and this book is not volume-shaped (13 buyer(s), volume floor 50; routed by the growth engine's shape derivation) | 1 |
| price ladder gap volume family | volume-family mechanic: its unit is the cross-buyer cohort, and this book is not volume-shaped (13 buyer(s), volume floor 50; routed by the growth engine's shape derivation) | 1 |
| unserved upgrade cohort volume family | volume-family mechanic: its unit is the cross-buyer cohort, and this book is not volume-shaped (13 buyer(s), volume floor 50; routed by the growth engine's shape derivation) | 1 |
| engagement ladder account family | only 1 account(s) have climbed their own timeline (entered on one line, later bought a higher-value line), below the floor of 3 (max of 3 and 15 percent of 13 accounts); no climb path or latency can honestly be learned | 1 |
| account expansion account family | no account shows measured expansion (at least 2 purchases in each trailing half-year with 25 percent growth or more); proposing formalized expansion without observed appetite would be padding | 1 |
| service line attach account family | account-family mechanic: its unit is per-account depth, and this book is not account-shaped (455 buyer(s) at $56 median; account shape needs 100 or fewer buyers and a $500+ median; routed by the growth engine's shape derivation) | 1 |
| engagement ladder account family | account-family mechanic: its unit is per-account depth, and this book is not account-shaped (455 buyer(s) at $56 median; account shape needs 100 or fewer buyers and a $500+ median; routed by the growth engine's shape derivation) | 1 |
| contract cadence account family | account-family mechanic: its unit is per-account depth, and this book is not account-shaped (455 buyer(s) at $56 median; account shape needs 100 or fewer buyers and a $500+ median; routed by the growth engine's shape derivation) | 1 |
| entry divergence dollar account family | account-family mechanic: its unit is per-account depth, and this book is not account-shaped (455 buyer(s) at $56 median; account shape needs 100 or fewer buyers and a $500+ median; routed by the growth engine's shape derivation) | 1 |
| account expansion account family | account-family mechanic: its unit is per-account depth, and this book is not account-shaped (455 buyer(s) at $56 median; account shape needs 100 or fewer buyers and a $500+ median; routed by the growth engine's shape derivation) | 1 |
| service line attach account family | account-family mechanic: its unit is per-account depth, and this book is not account-shaped (350 buyer(s) at $46 median; account shape needs 100 or fewer buyers and a $500+ median; routed by the growth engine's shape derivation) | 1 |
| engagement ladder account family | account-family mechanic: its unit is per-account depth, and this book is not account-shaped (350 buyer(s) at $46 median; account shape needs 100 or fewer buyers and a $500+ median; routed by the growth engine's shape derivation) | 1 |
| contract cadence account family | account-family mechanic: its unit is per-account depth, and this book is not account-shaped (350 buyer(s) at $46 median; account shape needs 100 or fewer buyers and a $500+ median; routed by the growth engine's shape derivation) | 1 |
| entry divergence dollar account family | account-family mechanic: its unit is per-account depth, and this book is not account-shaped (350 buyer(s) at $46 median; account shape needs 100 or fewer buyers and a $500+ median; routed by the growth engine's shape derivation) | 1 |
| account expansion account family | account-family mechanic: its unit is per-account depth, and this book is not account-shaped (350 buyer(s) at $46 median; account shape needs 100 or fewer buyers and a $500+ median; routed by the growth engine's shape derivation) | 1 |
| replenishment conversion volume family | no product has >= 5 real repeat buyers AND a one-time-buyer pool; replenishability is not proven by this book's rows | 1 |
| service line attach account family | account-family mechanic: its unit is per-account depth, and this book is not account-shaped (201 buyer(s) at $149 median; account shape needs 100 or fewer buyers and a $500+ median; routed by the growth engine's shape derivation) | 1 |
| engagement ladder account family | account-family mechanic: its unit is per-account depth, and this book is not account-shaped (201 buyer(s) at $149 median; account shape needs 100 or fewer buyers and a $500+ median; routed by the growth engine's shape derivation) | 1 |
| contract cadence account family | account-family mechanic: its unit is per-account depth, and this book is not account-shaped (201 buyer(s) at $149 median; account shape needs 100 or fewer buyers and a $500+ median; routed by the growth engine's shape derivation) | 1 |
| entry divergence dollar account family | account-family mechanic: its unit is per-account depth, and this book is not account-shaped (201 buyer(s) at $149 median; account shape needs 100 or fewer buyers and a $500+ median; routed by the growth engine's shape derivation) | 1 |
| account expansion account family | account-family mechanic: its unit is per-account depth, and this book is not account-shaped (201 buyer(s) at $149 median; account shape needs 100 or fewer buyers and a $500+ median; routed by the growth engine's shape derivation) | 1 |
Approval and control
- One tap approves one thing. Approval is per item. Approving a draft does not authorise the next one.
- Declining removes it. A declined draft is not sent, and is not quietly re-queued as something similar.
- Nothing is autonomous. Autonomous execution is switched off. Every mechanic that produces work states, in its own output, that acting on it requires you.
Read live from the engine: 100 percent of this requires the user to act: every mechanic produces drafts for the approval queue, nothing is autonomous (AUTONOMY_ENABLED is false), and nothing sends itself
Your data
Transactions are read from your connected account to compute the figures above. What we can see is bounded by the permission list in the scope contract, and that list is read access only.
- We never receive your bank details, your balance or your payouts. That is a permission we do not hold, not a policy we promise.
- We hold no permission to create, change or delete anything in your payment account.
- Disconnecting stops the reads. You can also revoke access from inside Stripe without involving us, which is the stronger control because it does not depend on us honouring anything.
The full retention and deletion terms, including how to request an export or erasure, live on the privacy page and the trust page. This page does not restate them, so the two cannot disagree.
Where it does not apply
Some businesses get less from this than others, and it is cheaper for both of us to say so here than for you to find out after paying.
Books where a whole family of mechanics declines
On 5 of the 8 Sample books, every account-depth mechanic declined because the book is not that shape. The engine states the reason itself:
- Creators. account-family mechanic: its unit is per-account depth, and this book is not account-shaped (171 buyer(s) at $44 median; account shape needs 100 or fewer buyers and a $500+ median; routed by the growth engine's shape derivation)
- Influencers. account-family mechanic: its unit is per-account depth, and this book is not account-shaped (23 buyer(s) at $450 median; account shape needs 100 or fewer buyers and a $500+ median; routed by the growth engine's shape derivation)
- Brands. account-family mechanic: its unit is per-account depth, and this book is not account-shaped (455 buyer(s) at $56 median; account shape needs 100 or fewer buyers and a $500+ median; routed by the growth engine's shape derivation)
Books where the figure is real but small
The two lowest figures across the Sample books are below. They are honest outputs, not failures, and we would rather show you a small true number than lead with someone else’s large one.
| Book | Annual generation | Mechanics that fired | Declined |
|---|---|---|---|
| Creators | $3,590.30Estimated | 4 | 7 |
| Influencers | 0 | 11 |
If your business runs on a small number of large considered purchases rather than many small ones, the per-account mechanics are the ones that will carry you, and the audience-scale ones will decline. That is the correct behaviour rather than a gap.
For a technical reviewer
Everything in this section is served by a public endpoint you can call yourself, without an account, and compare against what this page rendered.
Permissions requested, and why each one
| Permission | Why it is needed |
|---|---|
| charge_read | read paid and failed charges: the entire generation and recovery computation |
| customer_read | attach a name to a charge so outreach names a real person |
| subscription_read | read real prices and tenure from active subscriptions |
| product_read | resolve the real product and price behind a charge |
| checkout_session_read | read client_reference_id back off a completed session: the Measured flip |
| payment_links_read | DISCOVER the user's OWN existing checkout link so a tracked reference can be appended to it; we never create one |
Write permissions requested: none. Cerqular reads your Stripe sales data and creates nothing on your account. The trackable link is your own checkout link with a reference added to the end of it, which needs no permission to write anything.
Deliberately not requested
- payment_links_write: it permits CREATE and UPDATE of payment links on the user's account. Nothing in the product uses it: the tracked link is the user's OWN link with client_reference_id appended by string manipulation, which needs no API write at all. Its only consumer was a diagnostic probe that existed to discover whether write was available, and the rail was subsequently built without it. Asking a stranger for write access to their payments in exchange for a free audit is not defensible, and asking a paying user for a capability we never exercise is not either.
Manifest verification state, read live: the installed permission set has been verified against this contract.
Check the figures yourself
- /api/public/stripe-scope returns the permission contract this page renders.
- /api/public/generation returns every figure, mechanic, rate and refusal shown above.
- /api/pricing/:segment returns prices resolved from Stripe. No amount is hardcoded in either repository.