[Preferred implementation language: Java or Clojure]
- User dials a USSD string and a series of questions are sent to the user and responses obtained (one question per USSD transaction). Questions and responses are then forwarded to an external system via a REST invocation.
- Questions--loaded from a MySQL database.
- Question attributes: a. ID (globally unique) b. Serial no. c. Question text d. Validation function name.
- Pluggable validation functions.
- If validation fails, user should be re-prompted to re-enter until validation succeeds.