Skip to main content

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.
You’re going to fix this.

Your Mission

Build a Prompt Library — a full-stack web app where the team can:
  1. Create and organize prompt templates with metadata
  2. Fill in variables and preview the rendered prompt
  3. Test prompts against an LLM and see the response instantly
  4. 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: CRUD
  • GET /prompts — List all prompts (with filters: category, language, search by name)
  • GET /prompts/:id — Get a single prompt with its version history
  • POST /prompts — Create a new prompt
  • PUT /prompts/:id — Update a prompt (auto-creates a new version)
  • DELETE /prompts/:id — Soft delete (set is_active = false)
Render & Test
  • POST /prompts/:id/render — Accept variable values, return the rendered prompt with all {{variables}} filled in
  • POST /prompts/:id/test — Render the prompt, send it to an LLM API, return the model’s response
Versions
  • GET /prompts/:id/versions — List all versions of a prompt
  • GET /prompts/:id/versions/:version — Get a specific version
  • POST /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
Prompt Editor Page
  • 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
Test Panel
  • Fill in variables → click “Test with LLM” → see the model’s response
  • Show latency and token count of the LLM response
Version History
  • 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:
Variables:

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-patch or jsdiff)
  • 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.