When the steps must be exact, write them.

LogicScript is a governed Python dialect for AI. Every script is a valid Python file, but Netridium compiles and runs it; the AI is not the runtime.

The rules that make it safe.

  • Logic wraps language

    Arithmetic, totals, routing and updates run as code, never inside a model.

  • AI only where marked

    ask is one call; agent is a bounded loop over read-only tools.

  • Typed answers

    Each AI step returns the record shape you declared, or the step fails.

  • Untrusted by default

    AI output cannot reach an update until validated or approved by a person.

  • Checked before it runs

    A script with an error cannot be saved; connector calls are checked against the live system.

  • Bounded runs

    Every run has a ceiling on cost, time and number of updates.

Pause for a person, then carry on.

A run can stop and ask someone a yes/no, one choice, several choices or a short form. It can also hold a value until someone approves, edits or rejects it; an approved value is cleared to be written. The question waits in that person's Inbox, or their role's, for up to 30 days. While it waits, nothing runs and nothing is spent. When the answer arrives, the run continues from the same step.

The Inbox: a paused run waiting for someone to choose which invoices get a reminder

Read-only until you open three gates.

A write needs Allow updates on the App, Allow updates on the connector and, for Xero, QuickBooks Online and Salesforce, a read-write connection. All three start off. Even with all three open, AI output cannot be written until it is validated or approved. Each write is recorded before it is sent, so it is never sent twice. Dry run reads for real, lists every change the script would have made, and makes none of them.

Describe it, and Generate writes the script.

Describe the process in plain English, pick the App's connectors and click Generate. Netridium writes the script against those connectors' real tools, then checks that it compiles and that every call names a real tool with real arguments. Ask for a change and the script is edited, not rewritten. With live read-only data on, it runs once against your systems, changes nothing, and shows you what it produced.

Editing a LogicScript App: its details, the script, and tabs for connectors, inputs and run limits
class Urgency(Shape):
    priority: Enum["low", "medium", "high"]
    reason: str = field(max_len=200, required=False)

def run(as_of: Date):
    invoices = query(QBO.Invoice, select=["Id", "DocNumber", "Balance", "DueDate"],
                     where=[QBO.Invoice.Balance > 0])
    overdue = [i for i in invoices if i.DueDate < as_of]          # code, exact
    u = ask(Urgency, "How urgent is this overdue balance?",       # one typed AI call
            data={"invoices": overdue}, model="fast")
    go = request_confirm(f"Flag {len(overdue)} invoices as {u.priority}?")  # a person decides
    return {"priority": u.priority, "total": sum(i.Balance for i in overdue)}
Code runs the same way every time. The AI is one typed call. A person confirms before anything is flagged.

Read the LogicScript guide →

See LogicScript Apps run in the live demo.