Create, edit, and manage AI prompts used throughout the proposal workflow
The Admin Prompt Manager provides a centralized system for managing AI prompts that power the Alliance IGAD Innovation Hub’s proposal generation workflow.
The system prompt sets the AI’s role, expertise, and behavior:
You are an expert proposal writer specializing in international development projects.You have deep knowledge of RFP requirements, evaluation criteria, and donor expectations.Your task is to analyze the provided RFP document and extract key informationthat will guide proposal development.
The user prompt template contains the specific instructions and context, with placeholders for dynamic data:
Analyze the following RFP document:{{RFP_TEXT}}Extract the following information:1. **Requirements**: Technical, organizational, and eligibility requirements2. **Evaluation Criteria**: Scoring framework and weighting3. **Deliverables**: Expected outputs and milestones4. **Submission Guidelines**: Format, page limits, and deadlinesProvide your analysis in JSON format.
When the system needs a prompt, it queries DynamoDB:
# From source code: backend/app/tools/proposal_writer/rfp_analysis/service.pyfilter_expr = ( Attr("is_active").eq(True) & Attr("section").eq("proposal_writer") & Attr("sub_section").eq("step-1") & Attr("categories").contains("RFP Analysis"))response = table.scan(FilterExpression=filter_expr)prompt = response["Items"][0] # Returns the active prompt
Only ONE prompt per section/sub-section/category combination can be active at a time. Publishing a new prompt automatically deactivates the previous one.
Returns the compiled prompt with placeholders replaced:
{ "system_prompt": "You are an expert proposal writer...", "user_prompt": "Analyze the following RFP:\n\nSample RFP content for testing...\n\nExtract..."}
✅ Be specific: Clearly define the task and expected output format
✅ Use examples: Include sample outputs in the prompt
✅ Set constraints: Specify word limits, formatting requirements
✅ Request JSON: For structured data, always request JSON output
✅ Include context: Provide relevant background and objectives
✅ Test before publishing: Always test in a non-production environment
✅ Document changes: Use the comments field to explain modifications
✅ Incremental updates: Make small, focused changes to isolate issues
✅ Monitor impact: Track proposal quality metrics after prompt changes