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
| Attribute | Type | Description |
|---|---|---|
id | integer | Unique template identifier |
name | string | Template name |
prompt | string | AI instruction prompt |
is_default | boolean | Whether this is the default template |
created_at | string (ISO 8601) | Creation timestamp |
updated_at | string (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."]
}
}