# What is GHOP 20?

GHOP 20 is planned for some time in the future :-)

Features slated for GHOP 20 are ones which are assumed to have a smaller return on investment on the work done than some of the 'nice to have' features which remain in the main GHOP plan.  If it actually turns out that as Melange becomes more flexible these features become easy to do, and if the discussion needed to refine the details is also found to be short, then they can be reintroduced into the main plan as NTH's.

## Automatic Prizes

Automatic prizes may be part of the GHOP program admin dashboard.  That means that you can setup in the program settings what kind of prizes students will get for what amount of tasks.

For example:

  * < 3 tasks - t-shirt
  * every 3 tasks up to 15 tasks - 100 USD so maximum of 500 USD per student
  * and then in your report you can fetch information about all the participating
  * students and have a PRIZE and TASKS column which says

|TASKS | PRIZE|
|:-----|:-----|
|2     | t-shirt|
|1     | t-shirt|
|4     | 100 USD|
|32    | 500 USD|
|7     | 200 USD|

etc

  * so it's helpful for reports basically and saves GOSPO Team work.

### Discussion of Automatic Prizes

A distinction needs to be made between the determination of automatic prizes and the listing and reporting of student stats.  The listing and reporting of student number of tasks-fixed and difficulty stats _is_ important for GOSPO staff.  _(To Be Confirmed)_