Scroll to assemble the prompt. The response streams the way the product does.
overview
The name combines "prompt" with the suffix "-inia" — the one that turns up in Lithuanian or Latvian place names to mean "land of" — so Promptinia reads as "the land of prompts," a name that also happens to echo my own surname, Faramarznia.
Promptinia is a prompt engineering engine I designed, built and shipped alone: a Next.js app, a NestJS API and a Chrome extension, live at promptinia.com in Persian and English.
It does not hand your sentence to a model and hope. It parses the intent, picks a template, applies the target model’s own grammar, and composes a prompt you can read in parts. Below is what I chose, what I cut, and the rebrand I should not have done twice.
The problem
The market is full of tools that are a text box bolted onto an API. They demo well and get abandoned in a week, because nothing about them tells you whether the output is any good — and when the answer disappoints, you cannot see which part failed.
Underneath that sat a smaller, harder problem I could not ignore. I was building for Persian speakers, and every serious prompt tool is English-first. A Persian user does not need a translated interface. They need templates for the things Persian is actually used for.
What I found
Watching people use early builds, the failure was never the model. It was the blank page: nobody knows what to type first. The moment someone was handed a partial prompt to react to instead of an empty field, they started editing immediately. Reacting is easier than creating.
The second finding came from the Persian side. Asking people what they actually used AI for produced a list an English template set has no answer to — a Persian SEO blog post, an Instagram caption, a reply to a comment, a CV, a legal translation, a medical translation. Those six became templates written from scratch rather than translated, and they are the clearest reason the product has a right to exist here.
The third finding was about trust. People did not want a better prompt so much as a prompt they could argue with. Output they could not inspect got pasted once and never again.
What I designed
I made the engine assemble rather than generate. A request passes through four named services — intent parser, template selector, model adapter, composer — and every one of them is inspectable. The result page is the proof: system message, user message, constraints, two alternate takes, and a plain-language explanation of why this shape, for this model.
I made the product take the first move. Before generating, it can ask up to three short questions it derived from your own sentence, each skippable in one click. The composer opens with examples rather than a blinking cursor. You are always editing something.
And I stopped asking people to come to the product. A Chrome extension injects the same engine into Claude, ChatGPT, Gemini, Midjourney and Figma, so the prompt gets shaped where it is actually typed.
Four services, and none of them is a black box
apps/api/src/prompt- 01Intent parserintent-parser.service.tsReads the raw sentence. Returns task type, tone, constraints, keywords and language — fa, en or mixed.
- 02Template selectortemplate-selector.service.tsPicks one of 42 hand-written templates. Six of them exist only because Persian needed them.
- 03Model adaptermodel-adapter.service.tsApplies the target model’s own grammar. Claude wants labelled sections, GPT prioritises brevity, Gemini wants a reasoning chain and JSON output, Midjourney wants descriptors and flags, Figma Make wants a component spec.
- 04Composerprompt-composer.service.tsEmits system, user, constraints, two alternate takes, and the explanation of why this shape.
Outcome
Promptinia is live at promptinia.com, in Persian and English, built and run by one person — from the design system down to the Caddy config in front of it. Payment followed the same logic: the original Stripe integration was fully replaced with ZarinPal, to match the reality of how Iranian users actually pay. It is the only product in my portfolio where I owned every decision — from the backend architecture to the colour of a button.
- four services, not one callthe core architectural decisionintent → template → model adapter → composer, each one readable on the result page
- 6 of 42 templateswritten only for PersianSEO blog, Instagram caption, Instagram reply, CV, legal and medical translation — formats an English-first tool has no reason to ship
- first-session edit ratethe metric I trackwhether a new user modifies and runs a prompt in their first session — the honest test of “no blank page”
I rebranded twice before the product was right: coral, then emerald, then the indigo that is live now. Only the third one was answering a product question — the interface needed exactly one colour to mean “act”, and nothing else competing. The first two were me redesigning, because redesigning is the part I am fastest at. Working alone there was nobody to say that out loud, so I said it to myself late. I now write down what a visual change is meant to fix before I start it.
Three identities in one year
Only the last one was answering a product question.




