Use case · Exactly once

Orders, payments, applications.Sent once, or not at all.

Some forms change the world when they are sent: an order is placed, money moves, an application is filed. Kaabist records those steps just before and just after they run (a fence), so a crash, a retry or a redeploy can never send them twice.

use case · exactly onceloop

The problem

A script that times out right after clicking Submit cannot know whether the click went through. Retrying may order twice; not retrying may order nothing. Most automation tools simply retry.

How it works

  1. 01

    Fence the submit

    Mark the step as a side effect and follow it with a checkpoint. Kaabist records the fence before the click and closes it once the step's expectation holds.

    example
    { "click": { "role": "button", "name": "Place order" },
      "side_effect": true,
      "expect": { "url": "**/orders/*" } },
    { "checkpoint": "order-placed" }
  2. 02

    A crash pauses, it does not retry

    When a server finds a fence still open, it does not click again. The job pauses as side_effect_ambiguous with a snapshot and a screenshot, and you check the site and decide.

  3. 03

    One job per order

    Create each job with an Idempotency-Key. Repeating the call, after a timeout or a deploy, returns the job you already started instead of a second one.

    example
    curl https://api.kaab.ist/v1/jobs \
      -H "Authorization: Bearer $KAAB_API_KEY" \
      -H "Idempotency-Key: order-10482" \
      -d '{"program": "place-order", "inputs": {"sku": "HP-1037", "qty": 2}}'
  4. 04

    Rehearse without buying

    Dry runs stop right before the first side effect. Test the whole checkout, with real pages and real validation, without placing an order.

Questions

Askedbefore you ask.

Yes, from any checkpoint after the last side effect that ran. A retry cannot go back past a placed order.

More use cases

  • Scrape a website that requires login

    Portals, dashboards, supplier sites: the data you need sits behind a sign-in form. Kaabist runs the login as part of a program, keeps the session between jobs, and reads the pages as typed, validated fields.

  • Automate logins with 2FA

    One-time codes by e-mail or SMS, authenticator prompts, approval screens: a second factor is a step only the account owner can finish. Kaabist pauses the job there, emails a link to you (or the teammate or customer who owns the account), and resumes the program the moment the code is typed.

  • Turn a website into an API

    Describe the flow once as a program with inputs. From then on it is one HTTP call: inputs in, typed JSON out, with versions, aliases and webhooks, as if the site had shipped the API itself.

Stop fixing selectors.Ship the automation.

Opening soon

Kaabist is getting ready for launch. The panel, the docs and the status page open on launch day.