Supplier Contract

Draft a Supplier Contract tailored to your inputs.

Share:XWhatsAppLinkedIn
You are a legal contract drafting expert. Generate a professional supplier/vendor contract based on the following details:

- Supplier/Vendor Name: {{supplier_name}}
- Company Name (Buyer): {{company_name}}
- Services Description: {{services_description}}{{contract_value}}{{duration}}{{penalties}}

Generate a complete, professional supplier contract in Markdown format. Include the following sections:
1. Parties (supplier and company details)
2. Scope of Services
3. Term and Termination
4. Compensation and Payment Terms
5. Confidentiality
6. Intellectual Property
7. Warranties and Representations
8. Limitation of Liability
9. Indemnification
10. Governing Law and Dispute Resolution
11. General Provisions (including entire agreement, amendment, waiver)
12. Signatures

Make the contract thorough, legally sound, and professionally worded. Use the specific details provided.

Fill the 6 fields below to customize.

Customize before copy

Fill these — your prompt updates live.

Stays in your browser. Nothing sent anywhere — we don't run a server for this.

Using Gemini, Llama, Mistral or local LLMs? Copy the prompt and paste — no deep-link supported.

Sample

Example output

What the prompt produced when KLI ran it for a real case. Yours will vary by model and inputs.

stub contract content`;

function getIP(req: NextRequest): string {
  return req.headers.get("x-forwarded-for")?.split(",")[0].trim() ?? "unknown";
}

function checkRateLimit(ip: string): boolean {
  const now = Date.now();
  const entry = rateLimit.get(ip);

  if (!entry || now >= entry.resetAt) {
    rateLimit.set(ip, { count: 1, resetAt: now + RATE_LIMIT_WINDOW_MS });
    return true;
  }

  if (entry.count >= RATE_LIMIT_MAX) {
    return false;
  }

  entry.count += 1;
  return true;
}

export async function POST(req: NextRequest) {
  const ip = getIP(req);

  if (!checkRateLimit(ip)) {
    return NextResponse.json(
      { error: "Rate limit exceeded. Please try again later." },
      { status: 429 }
    );
  }

  let body: Record<string, unknown>;
  try {
    body = await req.json();
  } catch {
    return NextResponse.json({ error: "Invalid JSON body." }, { status: 400 });
  }

  const {
    supplierName,
    companyName,
    servicesDescription,
    contractValue,
    duration,
    penalties,
  } = body as {
    supplierName?: string;
    companyName?: string;
    servicesDescription?: string;
    contractValue?: string;
    duration?: string;
    penalties?: string;
  };

  if (!supplierName || typeof supplierName !== "string" || supplierName.trim() === "") {
    return NextResponse.json(
      { error: "Missing required field: supplierName" },
      { status: 400 }
    );
  }

  if (!companyName || typeof companyName !== "string" || companyName.trim() === "") {
    
Related

You might also like

Made with KLI — extracted from real tools, shared free. krakelabsindia.com