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.