176 tests · last run 2 October 2026 · all green

Every test we claim, named one by one.

We say the four skeletons carry 176 automated tests. Here they all are, in the words they are written in. Nobody can check a number — you can check a list.

See How It Works

Free 1-minute fit check · no equity · no retainer

Why this page exists

A number is a claim. A list is evidence.

We do not show you a founder’s face or a client’s logo, so we cannot ask you to take anybody’s word for it. What we can do is put the work where you can look at it before you spend anything.

These are not written from the code

They come from running the four suites and reading what the test runner prints. Reading the files counts tests that might be skipped; running them counts the ones that actually execute and pass.

The first run was not green

One suite came back 51 passed and 7 skipped, because the database emulator had not finished starting. Counting from the source would have published 58 without anybody noticing. It is green now, three runs in a row.

You can check it yourself

The repository is yours on day 4 or 5. The command is below, the test files are in it, and the names are the same ones on this page — translated, since we write them in Spanish and this site is in English.

Run them yourself

firebase emulators:exec --only firestore --project shiftmind-<product> \
  "node backend/node_modules/vitest/vitest.mjs run \
   --config backend/vitest.config.ts --reporter=verbose"

What stops a bad deploy

The isolation tests are blocking, not advisory.

They run on the pre-push hook. If one fails, the push stops before anything can reach a deploy. That is the only reason a test suite is worth having: a test nobody is forced to pass is a comment.

What they actually do

Sign in as one customer, then try to read and write another customer’s row. Once per data collection, once per role. If it succeeds, the build fails. It is the most expensive mistake in a fast MVP and the one that gives no warning until somebody finds it.

Also on every build

  • Secret scanning, so no key ever reaches the repository
  • Static analysis for known vulnerable patterns
  • A dependency audit against published advisories
  • Load tests at 50, 100 and 1,000 concurrent users before delivery

58 tests · 9 suites

Members Circle

A place where members post, reply and find each other — with somebody keeping order.

Moderation — when in doubt, publish

12

Holding back a legitimate post kills the conversation, and a community without conversation is dead. Only what cannot be taken back gets held.

  • Clean and confident goes out instantly and bothers nobody
  • An ugly tone still publishes, but a moderator sees it
  • Off-topic does not hold: it is not damage you cannot undo
  • Somebody else's personal data DOES hold, even when the model is unsure
  • A threat holds
  • Illegal content holds
  • Spam holds
  • Something serious at minimum confidence publishes and gets reviewed, rather than being held blind
  • A low-confidence "clean" is not fully believed
  • An account created today posting non-stop is held on the pattern, not on the text
  • An account created today with a single post is left alone
  • A repeat offender still publishes, but is always reviewed

The moderation queue

3

What a moderator sees first decides how long a real person waits.

  • Held items come first: they are the only ones with somebody waiting
  • Within the same kind, oldest first
  • The queue has a ceiling, and the overflow can be counted

The weekly digest

8

An email to somebody with nothing to read is the fastest way to be marked as spam.

  • Nothing is sent when nothing happened
  • What they already saw is not counted again
  • Nothing is sent to somebody whose membership lapsed
  • A space they cannot access never appears
  • Held and hidden content never enters a digest
  • Ordered by conversation, not by date
  • Cuts at five and says how many are left
  • In the weekly batch, only members with something to read get one

Isolation — posts

7

Signed in as one customer, try to read and write another customer's row. Every collection, every role.

  • The owner reads their own row
  • With no session, nothing is readable
  • A row that is not published is invisible to another user
  • An admin DOES read the row, exactly as the blueprint declares
  • A member DOES read the row, exactly as the blueprint declares
  • A moderator DOES read the row, exactly as the blueprint declares
  • A third party cannot modify or delete somebody else's row

Isolation — comments

7

Signed in as one customer, try to read and write another customer's row. Every collection, every role.

  • The owner reads their own row
  • With no session, nothing is readable
  • A row that is not published is invisible to another user
  • An admin DOES read the row, exactly as the blueprint declares
  • A member DOES read the row, exactly as the blueprint declares
  • A moderator DOES read the row, exactly as the blueprint declares
  • A third party cannot modify or delete somebody else's row

Isolation — memberships

6

Signed in as one customer, try to read and write another customer's row. Every collection, every role.

  • The owner reads their own row
  • With no session, nothing is readable
  • An admin DOES read the row, exactly as the blueprint declares
  • A moderator DOES read the row, exactly as the blueprint declares
  • A member does NOT read somebody else's row
  • A third party cannot modify or delete somebody else's row

Isolation — moderation queue

5

Signed in as one customer, try to read and write another customer's row. Every collection, every role.

  • With no session, nothing is readable
  • An admin DOES read the row, exactly as the blueprint declares
  • A moderator DOES read the row, exactly as the blueprint declares
  • A member does NOT read somebody else's row
  • A third party cannot modify or delete somebody else's row

Isolation — spaces

5

Signed in as one customer, try to read and write another customer's row. Every collection, every role.

  • With no session, nothing is readable
  • An admin DOES read the row, exactly as the blueprint declares
  • A member DOES read the row, exactly as the blueprint declares
  • A moderator DOES read the row, exactly as the blueprint declares
  • A third party cannot modify or delete somebody else's row

Isolation — digests

5

Signed in as one customer, try to read and write another customer's row. Every collection, every role.

  • With no session, nothing is readable
  • An admin DOES read the row, exactly as the blueprint declares
  • A member does NOT read somebody else's row
  • A moderator does NOT read somebody else's row
  • A third party cannot modify or delete somebody else's row

35 tests · 6 suites

Renewal Engine

A business where people pay you every month, and losing them to a bad card is the real risk.

The retry ladder

8

A failed card is the main way a subscription business loses people who still want to pay. Cutting access on the first failure loses the customer; never cutting it loses the money.

  • Schedules three attempts, on day 1, 3 and 7
  • Does not duplicate the ladder when the webhook arrives twice
  • Does NOT charge if the payment already came in another way in the meantime
  • A successful charge cancels the attempts that were left
  • Access is not cut on the first failure, only once the ladder runs out
  • Access comes back the moment a charge succeeds, with the reason recorded
  • An already-cancelled subscription is not retried
  • An attempt does not run before its turn

Isolation — subscriptions

6

Signed in as one customer, try to read and write another customer's row. Every collection, every role.

  • The owner reads their own row
  • With no session, nothing is readable
  • An owner DOES read the row, exactly as the blueprint declares
  • Staff DO read the row, exactly as the blueprint declares
  • A member does NOT read somebody else's row
  • A third party cannot modify or delete somebody else's row

Isolation — access grants

6

Signed in as one customer, try to read and write another customer's row. Every collection, every role.

  • The owner reads their own row
  • With no session, nothing is readable
  • An owner DOES read the row, exactly as the blueprint declares
  • Staff DO read the row, exactly as the blueprint declares
  • A member does NOT read somebody else's row
  • A third party cannot modify or delete somebody else's row

Isolation — dunning attempts

5

Signed in as one customer, try to read and write another customer's row. Every collection, every role.

  • With no session, nothing is readable
  • An owner DOES read the row, exactly as the blueprint declares
  • Staff DO read the row, exactly as the blueprint declares
  • A member does NOT read somebody else's row
  • A third party cannot modify or delete somebody else's row

Isolation — payments

5

Signed in as one customer, try to read and write another customer's row. Every collection, every role.

  • With no session, nothing is readable
  • An owner DOES read the row, exactly as the blueprint declares
  • Staff DO read the row, exactly as the blueprint declares
  • A member does NOT read somebody else's row
  • A third party cannot modify or delete somebody else's row

Isolation — plans

5

Signed in as one customer, try to read and write another customer's row. Every collection, every role.

  • With no session, nothing is readable
  • A member DOES read the row, exactly as the blueprint declares
  • An owner DOES read the row, exactly as the blueprint declares
  • Staff DO read the row, exactly as the blueprint declares
  • A third party cannot modify or delete somebody else's row

39 tests · 6 suites

Doc Intake

Paper or PDFs arriving all day, most of them fine, a few needing a human.

Document triage

13

The whole product is one decision: which documents settle on their own and which ones a person has to look at. Get it wrong in one direction and you pay a wrong invoice; in the other, nobody saves any time.

  • What adds up and arrives with high confidence bothers nobody
  • A total that does not match the order always goes to a person
  • High confidence does NOT override a blocking rule
  • A perfect document with low confidence also goes to a person
  • Right on the threshold it passes; a hair below, it does not
  • A single warning does not stop a document
  • Two warnings at once are no longer a quirk
  • The same document arriving twice is detected
  • A one-cent difference is rounding, one euro is not
  • If the total could not be read, it goes to a person even when the model is sure
  • With no order to compare against, no failure is invented
  • Every rule that ran is written down, whether it passed or not
  • A customer can add rules of their own

Isolation — documents

6

Signed in as one customer, try to read and write another customer's row. Every collection, every role.

  • The owner reads their own row
  • With no session, nothing is readable
  • An admin DOES read the row, exactly as the blueprint declares
  • An approver DOES read the row, exactly as the blueprint declares
  • A submitter does NOT read somebody else's row
  • A third party cannot modify or delete somebody else's row

Isolation — extractions

5

Signed in as one customer, try to read and write another customer's row. Every collection, every role.

  • With no session, nothing is readable
  • An admin DOES read the row, exactly as the blueprint declares
  • An approver DOES read the row, exactly as the blueprint declares
  • A submitter does NOT read somebody else's row
  • A third party cannot modify or delete somebody else's row

Isolation — approvals

5

Signed in as one customer, try to read and write another customer's row. Every collection, every role.

  • With no session, nothing is readable
  • An admin DOES read the row, exactly as the blueprint declares
  • An approver DOES read the row, exactly as the blueprint declares
  • A submitter does NOT read somebody else's row
  • A third party cannot modify or delete somebody else's row

Isolation — validations

5

Signed in as one customer, try to read and write another customer's row. Every collection, every role.

  • With no session, nothing is readable
  • An admin DOES read the row, exactly as the blueprint declares
  • An approver DOES read the row, exactly as the blueprint declares
  • A submitter does NOT read somebody else's row
  • A third party cannot modify or delete somebody else's row

Isolation — exports

5

Signed in as one customer, try to read and write another customer's row. Every collection, every role.

  • With no session, nothing is readable
  • An admin DOES read the row, exactly as the blueprint declares
  • An approver does NOT read somebody else's row
  • A submitter does NOT read somebody else's row
  • A third party cannot modify or delete somebody else's row

44 tests · 8 suites

Fieldline

People doing work away from a desk, where the phone will be offline for hours.

Syncing what was captured with no signal

11

A phone in a basement keeps working and sends everything later. Everything hard about this product is in what happens when that batch finally arrives.

  • A normal batch goes in whole
  • Resending the same batch duplicates nothing
  • Processed in capture order, not arrival order
  • A fact from a reassigned shift is NOT lost
  • But an action on a reassigned shift IS rejected, with a reason
  • A cancelled shift rejects everything, and says so
  • A phone running an old version cannot push the shift backwards
  • A shift that does not exist is rejected instead of blowing up
  • A check-in outside the radius is stored and flagged, NOT rejected
  • Inside the radius it is marked as inside
  • The whole bad day, in one go

The uncovered-shift alert

4

Alerting too early trains people to ignore alerts. Alerting too late is the same as not alerting.

  • No alert inside the grace period
  • Alerts past the grace period if nobody checked in
  • No alert if they already checked in
  • No alert for a cancelled shift, nor for one already under way

Distance

2

The arithmetic that decides whether somebody was on site.

  • The same point is zero metres
  • One degree of latitude is about 111 km

Isolation — shifts

6

Signed in as one customer, try to read and write another customer's row. Every collection, every role.

  • The owner reads their own row
  • With no session, nothing is readable
  • A dispatcher DOES read the row, exactly as the blueprint declares
  • A client does NOT read somebody else's row
  • Crew do NOT read somebody else's row
  • A third party cannot modify or delete somebody else's row

Isolation — sites

6

Signed in as one customer, try to read and write another customer's row. Every collection, every role.

  • The owner reads their own row
  • With no session, nothing is readable
  • A dispatcher DOES read the row, exactly as the blueprint declares
  • A client does NOT read somebody else's row
  • Crew do NOT read somebody else's row
  • A third party cannot modify or delete somebody else's row

Isolation — reports

5

Signed in as one customer, try to read and write another customer's row. Every collection, every role.

  • With no session, nothing is readable
  • A dispatcher DOES read the row, exactly as the blueprint declares
  • A client does NOT read somebody else's row
  • Crew do NOT read somebody else's row
  • A third party cannot modify or delete somebody else's row

Isolation — check-ins

5

Signed in as one customer, try to read and write another customer's row. Every collection, every role.

  • With no session, nothing is readable
  • A dispatcher DOES read the row, exactly as the blueprint declares
  • A client does NOT read somebody else's row
  • Crew do NOT read somebody else's row
  • A third party cannot modify or delete somebody else's row

Isolation — alerts

5

Signed in as one customer, try to read and write another customer's row. Every collection, every role.

  • With no session, nothing is readable
  • A dispatcher DOES read the row, exactly as the blueprint declares
  • A client does NOT read somebody else's row
  • Crew do NOT read somebody else's row
  • A third party cannot modify or delete somebody else's row

Questions

About the tests.

Can I run these tests myself?
Yes, once the code is yours — which is on day 4 or 5, before you have paid anything beyond the purchase. The command is on this page, the test files ship in the repository, and nothing is hidden behind our accounts.
Why are so many of them about one user reading another user's data?
Because that is the failure that costs the most and shows no symptom until somebody finds it. We run it once per data collection and once per role, with no exceptions, which is why those tests are many and look alike.
What happens if a test fails?
Nothing ships. The isolation tests run on the pre-push hook, so a failure stops the push before it reaches a deploy. That is the point of having them.
Are these tests kept when my product is built on a skeleton?
Yes, and they are rewritten to your names and your roles as part of the five days, so they keep testing your product rather than the demo. New tests are added for anything new we build for you.

Next step

Find out if your idea fits in 10 working days.

Tell us what you want to build. We reply the same day with a straight yes, no, or here is what we would cut.

NDA available on request