The Problem
At Awaaz.AI, our voice agents are powered by carefully crafted prompts โ system instructions that define how an agent behaves on a call. Today, these prompts live in Google Docs and Drive folders. This creates real problems:- No version history you can actually use โ Google Docs tracks character-level edits, not meaningful prompt versions. Rolling back to โthe version that worked well last Tuesdayโ is a nightmare.
- No structure โ Prompts have variables like
{{user_name}},{{language}},{{loan_amount}}but thereโs no way to test them with real values without copy-pasting into a playground.
Your Mission
Build a Prompt Library โ a full-stack web app where the team can:- Create and organize prompt templates with metadata
- Fill in variables and preview the rendered prompt
- Test prompts against an LLM and see the response instantly
- Track versions so we know what changed and when
Time Budget
You have 4 hours.Technical Requirements
Database Layer (PostgreSQL)
Design a schema that stores:Backend Layer
Build the following API endpoints: CRUDGET /promptsโ List all prompts (with filters: category, language, search by name)GET /prompts/:idโ Get a single prompt with its version historyPOST /promptsโ Create a new promptPUT /prompts/:idโ Update a prompt (auto-creates a new version)DELETE /prompts/:idโ Soft delete (setis_active = false)
POST /prompts/:id/renderโ Accept variable values, return the rendered prompt with all{{variables}}filled inPOST /prompts/:id/testโ Render the prompt, send it to an LLM API, return the modelโs response
GET /prompts/:id/versionsโ List all versions of a promptGET /prompts/:id/versions/:versionโ Get a specific versionPOST /prompts/:id/rollback/:versionโ Rollback to a previous version (creates a new version with the old body)
Frontend Layer (React or HTML + JS)
Build a single-page app with these views: Prompt List Page- Searchable, filterable table/grid of all prompts
- Show name, category, language, version number, last updated
- Filter by category and language
- Text editor for the prompt template body
- Auto-detect
{{variables}}from the template and show input fields for each - Live preview panel showing the rendered prompt as you type variable values
- โSaveโ button that creates a new version with an optional change note
- Fill in variables โ click โTest with LLMโ โ see the modelโs response
- Show latency and token count of the LLM response
- List of past versions with timestamps and change notes
- Click to view any version
- โRollback to this versionโ button
Example Prompt Template
Hereโs what a prompt in the library might look like: Name: Loan Reminder โ Hindi Category: Collections Language: hi Template:Constraints & Ground Rules
Evaluation Criteria
Bonus Challenges ๐
- Diff View: Show a side-by-side diff between two prompt versions (use a library like
diff-match-patchorjsdiff) - Prompt Duplication: โClone this promptโ button to quickly create a variant (e.g., same prompt but for a different language)
- Tag System: Add freeform tags to prompts for more flexible organization
- Response Rating: After testing with an LLM, let the user rate the response (๐/๐) and store it โ helps track which prompt versions perform best
- Export: Export a prompt as JSON or Markdown for sharing
๐ Hackathon Prize
The winner receives a USD $20 one-time credit towards a course or book of their choice.