Powered by Mozilla Otari

How Leak works

Six stages, three open-weight models, and every model request routed through Mozilla's Otari gateway. The numbers below are from the sample statement.

StatementStripGuardrailQwenDeepSeek + webSandboxMinistralPlugged
  1. 1

    Strip identifiers

    Otari: Privacy

    In the app, before any request

    Regular expressions replace account, card, routing and IBAN numbers, email addresses and phone numbers with tags like [card]. The stripped text is what every later step sees, and the page shows it to you.

    4 identifiers removed from the sample · under 1 mssrc/lib/redact.ts
  2. 2

    Guardrail at the gateway

    Otari: Guardrails

    Otari, on every model request · Lakera Guard PII check

    A PII guardrail is mandated on the Otari workspace in block mode. If a statement still carries personal data, Otari refuses it with guardrail_violation before any provider sees it. Tick "send it unstripped" in the app to watch it happen.

    Verdict shown on each request in the glass boxsrc/lib/otari.ts (otariError, Otari-Guardrails header)
  3. 3

    Find the charges

    Otari: Routing and fallback

    Otari → open-weight model 1 · Qwen 3.5 35B (fallback: GPT-OSS 20B)

    The stripped statement goes to Qwen with reasoning off and JSON output on. It returns each recurring service and bank fee, grouped, with the amounts it was charged. The request names a failover policy, so Otari moves to the backup model if Qwen's provider fails.

    15 charges found on the sample · about 15 s · $0.002src/lib/pipeline.ts (extract step)
  4. 4

    Check prices on the web

    Otari: Web search and fetch

    Otari → open-weight model 2, with Otari's web tools · DeepSeek V4 Flash

    Subscriptions go out in batches of three, in parallel. DeepSeek uses Otari's web search (and fetch when a page is needed) to find each service's price today and the official cancel page, treating every page as data, never as instructions.

    12 of 12 services checked, 12 cancel links · 20 to 30 s per batch · about $0.09 a batchsrc/lib/pipeline.ts (researchBatch)
  5. 5

    Add it up in the sandbox

    Otari: Code execution

    Otari code execution, no model · Python in Otari's sandbox

    The app writes the arithmetic as a Python program (monthly and yearly totals, overlapping services in the same category, price rises, fees on a yearly footing) and runs it in Otari's sandbox. The headline number is computed, not generated.

    $2,938 a year · $516 in overlaps · $297 in fees · about 1 s · $0.01src/lib/pipeline.ts (totalsProgram) · src/lib/otari.ts (runCode)
  6. 6

    Write the fix

    Otari: Models in distinct roles

    Otari → open-weight model 3, when you plug a leak · Ministral 8B

    Flip a subscription to plug and Ministral writes the cancellation message, adding the cancel link when one was found. For a bank fee it writes a polite refund request.

    About 2 s · $0.00003 a draftsrc/app/api/draft/route.ts
About a minute
for a three-month statement, end to end
30 to 40 cents
of Otari credit a check, mostly web searches
Every call streamed
so long web research never hits a timeout
Watch it run on the sampleHow Leak uses OtariRead the code