Prompt engineering is real engineering — it deserves real tooling. MakePrompt is a studio for crafting, refining, and versioning AI prompts, with one-click improvements powered by a meta-prompt layer built on top of GPT-4.
Why Prompts Need Version Control
When you iterate on a prompt — tweaking wording, adjusting tone, adding constraints — you lose the previous version. If the new version performs worse, you are back to guessing what changed and why. This is the same problem software had before version control, and the solution is the same: track every change, make diffs visible, allow rollback.
MakePrompt stores every edit as a versioned snapshot. Diffs are computed at the word level so you can see exactly what changed between v1 and v4 of a prompt without reading both in full.
The One-Click Improvement Engine
The most interesting technical piece is the improvement system. A user pastes a prompt, clicks "Improve", and gets a better version back. Under the hood, a meta-prompt instructs GPT-4 to act as a prompt engineering expert:
You are an expert prompt engineer. Analyse the following prompt and
rewrite it to be clearer, more specific, and more likely to produce
high-quality output from a language model. Preserve the original intent.
Explain what you changed and why.
Original prompt:
{userPrompt}The response is parsed to extract the improved prompt and the explanation separately. The explanation is shown alongside the diff so the user understands the reasoning, not just the result.
Architecture
The stack is Next.js on the frontend with a NestJS API backend. Prompts, versions, and collections are stored in PostgreSQL. Stripe manages subscriptions — free tier gets a limited number of improvements per month, paid tiers get unlimited.
PostgreSQL schema (simplified):
prompts
id, user_id, title, created_at
prompt_versions
id, prompt_id, content, version_number,
improvement_explanation, created_at
collections
id, user_id, name
collection_prompts
collection_id, prompt_idThe Template Library
A growing library of battle-tested prompts ships with the product — organised by use case (coding, writing, analysis, roleplay). These are not locked away; any template can be forked into a user's workspace and edited. The fork relationship is stored so the original template can receive updates that users can optionally pull in.
Diff Algorithm
Computing a readable word-level diff between two prompt versions without a heavy library was an interesting constraint. The implementation uses a Myers diff algorithm adapted for token arrays. Words are tokenised preserving whitespace, diffed, and rendered with green highlights for additions and red strikethroughs for removals.
function diffPrompts(a: string, b: string): DiffToken[] {
const tokensA = tokenise(a);
const tokensB = tokenise(b);
return myersDiff(tokensA, tokensB);
}
type DiffToken =
| { type: 'equal'; value: string }
| { type: 'added'; value: string }
| { type: 'removed'; value: string };What I Learned
Meta-prompting — using one LLM call to improve another prompt — produces surprisingly good results, but only when the meta-prompt itself is carefully engineered. Early versions of the improvement engine produced generic, watered-down rewrites. The breakthrough was instructing the model to explain its reasoning in the same response, which also improved the quality of the rewrite itself.
The versioning system felt over-engineered at first. In practice, users who iterate on prompts seriously use version history constantly — it turned out to be the feature with the highest session engagement.
Status
MakePrompt is live at makeprompt.io. Stripe billing is active. The template library currently has prompts across eight categories with more being added based on user requests.