GigUp Docs

API

AI Proposal Templates

Create and manage reusable AI prompt templates that generate tailored cover letters and proposals for jobs.

AI Proposal Templates are reusable prompt instructions that guide GigUp's AI to generate tailored cover letters and proposals for jobs. Create templates for different client types, project categories, or communication styles.

The Template Object

{
  "id": 15,
  "name": "Technical SaaS Proposal",
  "prompt": "Write a concise, technical proposal that directly addresses the client's problem...",
  "is_default": true,
  "created_at": "2024-01-10T14:00:00Z",
  "updated_at": "2024-01-15T09:30:00Z"
}

Attributes

AttributeTypeDescription
idintegerUnique template identifier
namestringTemplate name
promptstringAI instruction prompt
is_defaultbooleanWhether this is the default template
created_atstring (ISO 8601)Creation timestamp
updated_atstring (ISO 8601)Last update timestamp

List Templates

GET /api/v1/ai-proposal-templates
curl -X GET "https://giguphq.com/api/v1/ai-proposal-templates" \
  -H "Authorization: Bearer YOUR_API_TOKEN"

Create a Template

POST /api/v1/ai-proposal-templates
curl -X POST "https://giguphq.com/api/v1/ai-proposal-templates" \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Direct Problem-Solver",
    "prompt": "Write a direct, no-fluff proposal that immediately identifies the client\u0027s core problem and presents a clear solution...",
    "is_default": false
  }'

Update a Template

PATCH /api/v1/ai-proposal-templates/{aiProposalTemplate}
curl -X PATCH "https://giguphq.com/api/v1/ai-proposal-templates/17" \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Direct Problem-Solver (Updated)",
    "prompt": "Write a direct, no-fluff proposal...",
    "is_default": true
  }'

Delete a Template

DELETE /api/v1/ai-proposal-templates/{aiProposalTemplate}
curl -X DELETE "https://giguphq.com/api/v1/ai-proposal-templates/17" \
  -H "Authorization: Bearer YOUR_API_TOKEN"

Writing Effective Prompts

1. Define the Tone

Write a [professional/casual/technical/friendly] proposal that...

2. Specify Structure

Structure: 1) Hook with relevant experience, 2) Address specific requirements, 3) Propose next steps, 4) Ask a question.

3. Set Constraints

Keep it under 150 words. Avoid generic phrases like "I am excited" or "perfect fit". Focus on specific outcomes.

4. Include Context

Reference the job title and at least one specific requirement from the description. Mention similar past projects briefly.

Template Examples

Technical SaaS

{
  "name": "Technical SaaS",
  "prompt": "Write a concise technical proposal for a SaaS project. Lead with specific relevant experience. Outline a clear implementation approach with milestones. Include a realistic timeline. Keep it professional and data-focused. Avoid generic buzzwords."
}

Creative Agency

{
  "name": "Creative Agency",
  "prompt": "Write a warm, creative proposal that builds rapport. Show enthusiasm for the project vision. Include a brief portfolio reference. Propose a collaborative process. End with an engaging question."
}

Direct Response

{
  "name": "Direct Response",
  "prompt": "Write a direct, results-focused proposal. Open with a specific metric or outcome. Present 3 clear deliverables. Include social proof (past results). Close with a strong call to action."
}

Consultative

{
  "name": "Consultative",
  "prompt": "Write a consultative proposal that positions you as an advisor. Ask one insightful question about the project. Suggest an improvement or alternative approach. Focus on long-term value over immediate scope."
}

Best Practices

Do

  • Be specific — Include word counts, structures, and constraints
  • Test iteratively — Start simple, refine based on results
  • Use job context — Reference job title and requirements
  • Set clear goals — Define what a successful proposal looks like

Don't

  • Be too vague — "Write a good proposal" produces generic results
  • Over-constrain — Too many rules limit creativity
  • Ignore the client — Always reference the specific job
  • Use one template for everything — Create specialized templates

Use Cases

Smart Template Switcher: Automatically switch to the most effective template based on the job category:

async function getOptimalTemplate(job, token) {
  const headers = { 'Authorization': `Bearer ${token}` };
  
  const templatesResponse = await fetch('https://giguphq.com/api/v1/ai-proposal-templates', { headers });
  const templates = (await templatesResponse.json()).data;
  
  const categoryMapping = {
    'SaaS': templates.find(t => t.name.includes('Technical SaaS')),
    'Mobile App': templates.find(t => t.name.includes('Mobile')),
    'E-commerce': templates.find(t => t.name.includes('E-commerce')),
  };
  
  return categoryMapping[job.category] || templates.find(t => t.is_default);
}

Error Responses

422 Validation Error:

{
  "message": "The prompt field is required.",
  "errors": {
    "prompt": ["The prompt field is required."]
  }
}