Inspiration
Small teams often test an API with one happy-path request and discover missing-field or boundary failures later. Writing focused requests by hand is repetitive, and real customer records should not be needed for early validation.
What it does
ScenarioSeed takes an editable JSON Schema subset and builds a reviewable set of synthetic request payloads. It starts with a valid baseline, then changes one payload path to target a declared rule: missing required fields, wrong primitive types, string lengths, numeric bounds, enum choices, and array sizes. The included local validator checks each generated payload against the same declared contract; it is not an independent standards oracle. A mutation can trigger more than one supported validation rule. Selecting a case shows its full JSON request, expected Pass/Fail outcome, and the reason. The suite can be exported as JSON or CSV.
The built-in Order API and Inventory API presets let judges try the workflow immediately. No account, external API, or private dataset is needed for the app to run.
How we built it
The app is a static HTML, CSS, and JavaScript module. The generation and validation engine is dependency-free and deterministic; the interface runs fully in the browser. The supported subset has individual limits: schema nesting up to four levels, declared string-length bounds up to 200, declared array-size bounds up to 25, and enum JSON-value traversal up to eight levels. These do not impose a total case-count, property-width, memory, or output-byte limit. Node's built-in test runner covers 11 regression cases, including nested required fields, zero-length arrays, finite numeric bounds, structural enum equality, and Unicode code-point length.
What was built during LovHack
The product concept, presets, generator, validator, interface, documentation, test cases, and demo were created during the September 26–October 4, 2026 LovHack build period. No completed project or previous contest submission was reused. Standard browser and JavaScript platform APIs are used. A generated interface concept image guided the layout.
OpenAI Codex assisted with product planning, code, interface styling, tests, documentation, and demo production. The submission describes that assistance rather than presenting the work as unaided. No AI model is called by the app at runtime.
Challenges and lessons
The main challenge was making generated failures explainable. A case is useful only if the expected outcome can be checked and the violated rule is visible. We therefore run every generated payload through the local validator and show its exact error, while documenting which JSON Schema keywords are supported.
Limitations and next steps
This is a prototype of a JSON Schema subset, not a complete OpenAPI or JSON Schema implementation. It does not check pattern constraints, formats, references, oneOf, or additionalProperties; it also does not send requests to an API. Cases use synthetic sample values and cover selected mutations around one valid baseline rather than exhaustive contract coverage. Enum-exclusion cases and numeric out-of-bound cases are omitted when no supported, same-type or finite representable candidate can be generated. Cases should be reviewed before adoption in production test suites. Future work could add contract import, richer constraints, reproducible seed choices, and a runner that compares actual API responses with the expected result.
Technologies
HTML5, CSS3, JavaScript ES modules, JSON Schema subset, Node.js test runner, Playwright for browser QA and demo capture, OpenAI Codex for development assistance.
Local validation and publication status
The October 2 source delta passed an independent review of the six reproduced defects, the 11 engine regressions, and 10 in-memory JSON/CSV export checks. Actual browser UI checks confirmed overflow rejection and a fractional integer-bound/enum case. The in-app browser download event remains inconclusive, including one October 4 check on the public site; it is not reported as a successful browser file download. Public-site checks showed the Order preset with 21 cases, the missing-customerId payload and rationale, and the Inventory preset with 14 cases. Independent public delivery review found the root page and all seven source files accessible without authentication and identical to the reviewed package. The earlier 2:56 demo shows the standard preset workflow; it does not demonstrate the newly fixed edge cases.
Judge access
Working app: https://estona815.github.io/scenarioseed/
Source and testing instructions: https://github.com/estona815/scenarioseed
Silent 2:56 demo video: https://www.youtube.com/watch?v=kU9DVaOl8Ug
Built With
- css3
- html5
- javascript
- json-schema
- node.js
- openai-codex
Log in or sign up for Devpost to join the conversation.