Design a Small Domain-Specific Language for Invoice Rules
Overview
What this challenge is about.
Design a DSL grammar (BNF) covering: boolean conditions (and / or / not), comparison operators, customer-attribute references, line-attribute references, and action expressions (add fee, apply tax, override line price). Implement an interpreter in Python or TypeScript using recursion over the AST + higher-order functions to register condition operators and actions. Build a minimal web UI (HTML form + JSON output) for rule entry — the UI generates valid DSL. Recruit 3 non-technical users (intros facilitated) to create 5 rules each. Deliver grammar (BNF), interpreter source, UI source, user-test results, and a 5-page design write-up covering grammar choices and where the DSL is intentionally less powerful than a general-purpose language.
The Brief
What you'll do, and what you'll demonstrate.
Design a small DSL for invoice rules and prove non-technical users can create 5 valid rules each without engineer help.
Earning criteria — what you'll demonstrate
- Design a small DSL with grammar discipline
- Apply recursion and higher-order functions to build an interpreter
- Constrain a language to be safer + simpler than a general-purpose one
- Validate the DSL with real non-technical users
Program Fit
Where this fits in your program.
Sharpens the same skills your degree expects you to demonstrate.
Skills
Skills you'll demonstrate.
Each one shows up on your verified credential.
Careers
Roles this prepares you for.
Real titles. Real skill bridges. Pick the one closest to your trajectory.
Career mappings coming soon.