Ootle Surveys — September 26 update
We have completed a v0.2.0 update to our original contest entry, making Ootle Surveys more useful for running a complete survey: prepare a questionnaire, invite participants, review encrypted responses and send private participation rewards.
- Try the latest source and setup: v0.2.0 branch
- Implementation and verification details: draft PR #1
- License: MIT
The new features are implemented and verified locally. Use the linked branch to try them; the draft PR is open for review.
What has improved
- Prepare surveys without losing work: save and resume encrypted drafts, preview the participant questionnaire and reorder questions before publishing.
- Manage invitations: track used and unused links, download invitations, and generate links from the configured public origin. Each invitation still accepts one response.
- Work with responses: filter by survey and reward status, search decrypted answers locally, and export a CSV after confirmation. Exports exclude reward addresses and protect against spreadsheet formula injection.
- See funding clearly: view available and reserved rewards, paid rewards and the pool deadline. Publishing, new participation and payout are gated on verified funding and expiry.
- Recover safely: review stored responses and save encrypted drafts during testnet outages. A separate payment-check action reconciles an existing receipt or transaction without broadcasting another reward.
- Operate the installation: validated organizer sign-in, sign-out, encrypted vault backup import, a 15-minute inactivity lock, complete SQLite backups, a health endpoint and an operator guide.
What we verified
The complete browser workflow passed on desktop and mobile: draft recovery after reload, questionnaire preview and reordering, invitation downloads, encrypted submission, organizer decryption, response search/export, approval and a real Esmeralda private payout.
The recipient independently decrypted exactly 1 tTARI. A different wallet could not decrypt that output, and repeating approval returned the existing transaction without issuing another payment.
Verified testnet transaction: 94ba6550cf58b27672ded4f05631b271f987c896ded1661cac89a95816c86b62.
The TypeScript/Vite build and seven automated tests pass locally and in GitHub CI. The HTTP lifecycle suite uses a simulated indexer to test authorization, encrypted storage, concurrent funding reservations, single-use invitations, closure/expiry, outage handling, payment reconciliation and backups. The private payout described above was verified separately on the real testnet.
Additional browser checks passed for switching invitations in the same tab, closing a survey, rejecting a backup from a different vault, clearing decrypted content and an open preview on inactivity lock, and signing out.
Privacy and current status
The reward template is unchanged: budget, distributor authorization, one-use receipts, stealth-only payouts and the closing epoch are enforced on Ootle. Questions and answers remain off-chain. The organizer can read responses and reward addresses; funding, fixed reward amounts, receipt use and timing remain public. Participation approval is trusted to the organizer.
This is a self-hosted, single-organizer Esmeralda testnet application. Public HTTPS hosting, mainnet support, deployment-scale testing and an independent security audit remain future work. Readable CSV exports and complete installation backups must be kept private.
The original submission still contains our prize-payment address and public social announcement.