Legal contract intake desk your teams use instead of email

By General Input

One place for sales and ops to request an NDA or vendor agreement, watch its status, and let legal launch the contract in a single click.

Integrations

  • Ironclad
  • Slack Bot
  • General Input Database

Type

App

Categories

  • Operations

Build me a legal contract intake desk that my business teams open instead of emailing legal. Sales, procurement, and ops submit contract requests through it, legal works the resulting queue, and approved requests get launched as real contract workflows in Ironclad. Store the request rows in the General Input Database so the app has its own record of every submission alongside the live state in Ironclad.

The main screen is a request form. The requester picks what they need from a short list of request types (NDA, vendor agreement, order form), names the counterparty, and fills in the deal terms: contract value, term length, start date, whether it auto renews, governing law, payment terms, and a free text box for anything non standard. They can attach a draft document, add a business justification, and set a needed by date. On submit, save a request row in the General Input Database capturing the submitter's identity and email, every field above, the uploaded draft, a status, a triage flag, and empty slots for the Ironclad workflow id and link that get filled in later.

Apply a triage rule at submit time and show the result on the row. Mark a request low touch when it is a standard request type, every required field is filled in, and the terms sit inside the thresholds I configure, for example contract value under a ceiling, a standard term length, no custom indemnity or liability language, and governing law left at the default. Anything with non standard terms or a missing field goes to a needs legal input column instead, and the Review and launch button stays disabled on those rows until a member of the legal team clears the flag or fills in the gap. Make the thresholds easy to edit in one place.

Give the app two main views besides the form. A queue view for legal shows every request as a column board: New, Low touch, Needs legal input, In Ironclad, and Completed, with the counterparty, request type, value, requester, and age on each card. A my requests view shows a requester the live status of their own submissions only. Enforce this as a real permission rule: a viewer sees only the rows they submitted unless their email is on a configurable legal team list, in which case they see everything and get the queue view. Deal terms should not leak between business teams.

Opening a request shows the full detail: the submitted terms, the attached draft, the triage flag and why it was set, and once the contract exists, the live Ironclad state. Pull that state with Retrieve a Workflow for the linked workflow, and show where it currently sits along with the audit trail of step transitions from Get Workflow Turn History so a requester can see it moved from review into approval without asking anyone. Use List Workflows to refresh status across the whole queue in one pass, and page through results rather than assuming a single page covers everything.

Every request has a Review and launch button that kicks off a background agent. The agent reads the request row and the attached draft, then calls List Workflow Schemas to see the contract templates configured in Ironclad and picks the one that matches the request type and the terms it just read. It then calls Get Workflow Launch Schema for that template to resolve the required fields. This part matters: Ironclad launch forms are dynamic, so the agent must read the launch schema and resolve the actual field ids before it builds the launch body, never guessing at field names. It maps the request's counterparty and deal terms onto those resolved fields, and if a required field cannot be filled from the request, it stops rather than inventing a value, moves the row to needs legal input, and notes exactly which field is missing.

When the fields resolve cleanly, the agent starts the contract with Launch a Workflow, attaches the submitted draft to it with Upload Workflow Document, and posts a kickoff summary to the contract's activity feed with Create Workflow Comment. That comment should be genuinely useful to the lawyer who picks this up: who requested it, the counterparty, the key deal terms, whether triage called it low touch or flagged something non standard, and anything in the draft worth a closer look.

When the agent finishes, it writes the new workflow id and a link to it back into the app row, moves the row to In Ironclad, and posts a message to the legal channel in Slack with Send a Message so the assigned lawyer knows what landed. The Slack message should name the counterparty and request type, say whether it is low touch or needs a closer read, name the requester, and link straight to the contract in Ironclad. Post it as the bot rather than as whoever connected the account, so notifications are not misattributed to one person. If the launch fails at any step, leave the row in place with the error visible in the app instead of silently failing, so legal can retry.

Related prompts

Explore more prompts
A brand asset library your marketing team actually searchesTurn Mailjet email clicks into ranked HubSpot follow-upsClean out the Looker dashboards and Looks nobody opensLiveKit live operations console for room moderationWake up dormant Keap leads with a researched reasonChat quality review board for LiveChat support leadsCompetitor LinkedIn ad watchlist with a permanent archiveLiveChat coverage board for planning next week's shiftsPhone routing control panel for LiveKit voice agentsA searchable RFP answer library your bid team drafts from