Operator pipeline · Handoff doc

Wiring up Kit
and the lockout backend.

This is what you need to do tomorrow to take the operators flyer from console-only logging to real submissions arriving in your queue. Three endpoints to configure, all in operators.html, all near the top of the script block.

The three constants you'll edit live around line 1175 of operators.html:

const ENDPOINT = '';
const LOCKOUT_CHECK_ENDPOINT = '';
const LOCKOUT_RECORD_ENDPOINT = '';

Replace the empty strings with the URLs from your form provider. The flyer keeps working with all three blank — submissions just log to the browser console — so you can wire them in piecemeal.

1The submission endpoint

This is the URL the form posts to when a candidate completes all 5 gates and submits. Sets ENDPOINT.

If using Kit (formerly ConvertKit)

  1. Log in to Kit. Go to Grow → Landing Pages & Forms and click + Create new.
  2. Choose Form → Inline. Pick any template (you'll override the look).
  3. Add custom fields under Subscribers → Custom Fields: platform, channel_raw, channel_handle, channel_url, audience_tier, channel_age, scenarios_correct, fit, other, direct_access.
  4. Click Embed. Choose the JavaScript or HTML snippet. Look for a URL like https://app.kit.com/forms/{FORM_ID}/subscriptions.
  5. Paste that URL between the quotes for ENDPOINT.

If using Tally

Tally gives you a webhook URL after creating a form. Paste it as ENDPOINT. Their structure auto-creates a Google Sheet.

If using Formspark

Endpoint format: https://submit-form.com/{FORM_ID}. Paste as ENDPOINT.

2The cross-device lockout endpoints

These are optional but recommended. Without them, the lockout works per-browser — a determined chancer can clear cookies and retry. With them, the lockout works cross-device, cross-browser.

You need two URLs:

LOCKOUT_CHECK_ENDPOINT

The form POSTs an email + channel pair before showing step 3. Should return JSON:

POST → { email, channel }
Response → { locked: true|false, expires: ISO8601, reason: string }

If locked: true, the candidate sees the blocked screen.

LOCKOUT_RECORD_ENDPOINT

The form POSTs when a candidate fails any automated gate. Records the rejection.

POST → { email, channel, reason, expires: ISO8601 }
Response → { ok: true }

Easiest implementation: Tally + Apps Script

  1. Create a Google Sheet titled Operator Lockouts with columns: email | channel | reason | expires.
  2. In the Sheet, go to Extensions → Apps Script and paste a small script that exposes doPost handlers for the two endpoints above (I can write this for you when you're ready — ask).
  3. Deploy as a Web App. The deployment URL is your LOCKOUT_RECORD_ENDPOINT (and the same URL with a different action param is your LOCKOUT_CHECK_ENDPOINT).

Alternative: skip server-side, accept per-browser lockout

Leave both endpoints blank. The localStorage lockout still works on the device the candidate first applied from. Cleared if they clear cookies, but raises friction enough to filter casual retry attempts. Acceptable for a recruitment cycle that runs for a finite period.

3Flowing submissions into the Lead Operator's review queue

The review queue page (review.html) reads submissions from a JSON or CSV file you import manually. Two ways to populate it:

Manual export (today)

  1. From Kit / Tally / wherever submissions land, export the form responses as CSV or JSON.
  2. Open review.html. Click Import submissions.
  3. Pick the file. New submissions appear in the queue with status pending.

Live API integration (later)

When you're ready, the queue can be upgraded to fetch submissions directly from your form provider's API. That requires an authenticated API call, which we'd add to the script block. Defer until you've used the manual export flow for a couple of weeks and confirm what's actually useful.

4Quick test plan

  1. Wire ENDPOINT only. Open operators.html in a browser. Complete a full submission. Confirm it lands in your form provider.
  2. Export that submission as JSON. Import into review.html. Confirm it renders correctly with all gates, scenarios, fit text.
  3. Click Approve on the test submission. Confirm the email composer opens with the templated message. Click Open in mail app to check the mailto handoff.
  4. Append ?demo=1 to review.html URL to load three demo candidates and click through the full decision flow.
  5. If wiring lockout endpoints: from a fresh browser, fail step 4 (compliance scenarios) deliberately. Open the same form in a different browser. Confirm the lockout triggers across both.

Order of priority:

1. Wire ENDPOINT. This alone makes the form functional.
2. Use the review queue with manual exports. Get a feel for the flow.
3. Add the lockout endpoints if cold inbound becomes a problem.
4. Add live API integration only if manual export becomes a bottleneck.

Bitcoin Storm · thebitcoinstorm.io · Operator pipeline handoff