# Prediction challenges

Everyone can enter public challenges for free. Regular predictions remain unlimited. Challenge results do not change regular prediction credibility or issue prediction certificates.

| Monthly plan | Price | Published challenges per billing period | Organizer features |
| --- | --- | --- | --- |
| Free | ₦0 | 0 | Participation |
| Creator | ₦1,000 | 5 | Creation and result analysis |
| Pro | ₦5,000 | 20 | Branding and detailed CSV reports |
| Organization | ₦12,000 | 100 shared | Teams and consolidated CSV reports |

Admins and super admins create without a quota. Staff cannot enter challenges. Organizers, organization owners and team members cannot enter their own topics; removing a member does not remove that restriction. Team invitations require acceptance.

Drafts do not consume quota. Publishing locks the question, options, dates, rules and resolution method with a fingerprint. Published topics cannot be deleted or edited. Archiving does not refund quota. Expiry blocks new creation while existing public challenges continue accepting entries and resolving.

Users choose one of 2–6 options before the closing time, with an optional explanation. Submission is immutable. Other participants' answers and explanations stay sealed until the reveal time. All validation and access checks run on the server.

## Resolution

Known-answer challenges use a private answer sealed when published. This is a quiz-style result, not independent proof of a future forecast.

Future-event creation requires only the question, options, rules and deadlines. After entries close and the event finishes, the organizer opens the topic and submits the actual answer, an HTTP/HTTPS supporting evidence link, and an explanation of 20–1000 characters. Results are labelled Organizer-confirmed. Topics remain Awaiting result until the reveal time and the submitted outcome are both available. No provider or event identifier is needed.

Run `php cron/score_challenges.php` every minute. Public challenge requests also process due topics. Scoring is idempotent and preserves resolution history. Organizers cannot replace their submitted result. They and participants can request review using the challenge report form. Staff can submit a correction with evidence and a reason; every version retains its submitter, evidence and timestamp, and entries are rescored with notifications. A reviewer who participated in the challenge cannot submit a result. Reports and disputes reach administrators, and feedback is emailed to reporters.

## Existing connected-source challenges

Previously published challenges connected to a source retain their locked resolution method. Their existing integration continues to work; organizers cannot override those results through the manual form. Admins manage sources on the challenge list. Copy the one-time secret into the provider integration and store it securely. Only its hash is retained in the database. POST JSON to `/actions/challenge_outcome.php` with `Authorization: Bearer <secret>`:

```json
{"event_key":"event-123","answer_key":"A","version":1,"resolved_at":"2026-10-13 20:00:00","reason":"Official published result from the approved source."}
```

Use the application's configured timezone for `resolved_at`. Versions must increase for corrections. Configure the server to forward the Authorization header. Match the provider's option mapping to each topic's published options. Provider tokens authenticate the sender; operators must separately assess the provider's reliability.

## Installation

Existing installations: `php database/migrate_challenges.php` adds tables, reporting links and plan prices to the development and fresh production databases. Fresh installations use `database/timeproof.sql` or the empty `database/timeproof_production.sql` export. The migration does not remove users or their data. Existing Pro subscriptions gain the challenge allowance.
