Case Study
Minto
Minto is a deterministic, browser-local prompt enhancement workspace that turns rough instructions into structured Markdown prompts without a backend.
- Role
- Product design + frontend development
- Outcome
- Deterministic prompt enhancement that works offline.
- Stack
- TypeScript · Next.js · Dexie
Project Overview
Problem and Solution
Role & Responsibilities
- Inspected the completed engine implementation across parsing, classification, templating, rule selection, and Markdown generation.
- Traced the engine's integration with the workspace, state management, preferences, and local persistence.
- Verified the absence of backend, API, database, and external service usage for the core deterministic flow.
- Distinguished confirmed implementation facts from reasonable product interpretations.
- Authored a portfolio-ready narrative that follows the required structure and avoids unsupported claims.
Design Process
Key Features
Tech Stack
Challenges & Solutions
Ambiguity in natural language
Free-form prompts vary widely in phrasing and punctuation. The solution normalizes whitespace and casing, uses allow-lists for verbs, technologies, and constraint phrases, and applies simple word-boundary matching rather than attempting full language understanding.
Overconfident misclassification
Thin evidence or near ties could lead to the wrong specialization. The engine computes both the margin between the top two scores and the absolute evidence strength, rounds to a confidence value, maps it to high, medium, or low bands, falls back to the general template on low confidence, and surfaces guidance to choose manually.
Stemming trade-offs
To match variations like failing and fails without a full natural-language library, the classifier strips a small set of suffixes iteratively. This is intentionally limited and documented, so some irregular forms remain unmatched rather than guessed.
Avoiding empty headings
Generating a heading with no content confuses users. The rule layer drops list-based sections when their extracted slot is empty while keeping narrative sections that receive default content downstream.
Keeping templates consistent
With 13 templates each defining three levels, ordering mistakes would be hard to spot. Invariants are enforced: every level opens with Objective, contains no duplicates, and lighter levels are order-preserving subsets of stronger levels, checked by a validation routine across the registry.
Reproducibility vs. creativity
Users expect the same prompt to give the same result locally, but may also want AI creativity. The architecture separates the two: the deterministic path is synchronous and pure, while the AI path goes through a single validated HTTPS endpoint with timeout, abort, and schema checks.
Final Product
- 01
The user opens the home page and lands on the Enhance tab, which shows a greeting and a rounded input card.
The workspace is ready immediately with no authentication required.
- 02
They paste a rough instruction, see the live character count toward the 15,000 limit, and optionally choose a task type, an enhancement level of light, standard, or detailed, and which sections to include.
A preset can apply these choices in one click, and changing controls after enhancement marks the result as stale.
- 03
Selecting Enhance runs the deterministic engine immediately or, when configured, calls the enhancement service with the chosen options.
A progress indicator appears and the request can be canceled, with validation rejecting empty or oversized prompts before work begins.
- 04
On success the view switches to the Result tab.
The generated Markdown appears in three interchangeable views: raw result, rendered preview, and editable Markdown; a badge indicates whether the result came from local rules or AI, and classification notes appear when confidence was low or multiple types matched.
- 05
From the result the user can copy to clipboard, export as a Markdown file, re-enhance with updated input, or save to the local library.
Saving and history pruning respect the history-size preference, edits are tracked as dirty state and confirmed before being replaced, and all history and library data stays on device.
