WikiDeal Funding MVP — Technical Specifications
DRAFT v0.2 · 2026-08-18 · Status: working draft, awaits human validation ·
Reference mockups: WikiDeal Funding hub ·
Currency: Swiss francs (CHF) only
Purpose. This document translates the WikiDeal funding mockups
(
aidev.wikideal.net/mockups/funding/) into implementable IT requirements,
as the basis for a small call for proposals. The expected result of the development is the behaviour
presented in the mockups. Budget envelope for the MVP:
CHF 3'000 – 5'000.
Respondents are asked to quote a fixed price and a delivery timeline (see
§8).
1. Context & scope overview
WikiDeal (a project of the Ynternet.org Foundation)
raises donations to fund its Prototype 1. Donors and Early Supporters receive Rewards,
which are progressively compensated in cash by the income of WikiDeal subscriptions.
The MVP is the minimal working system that supports this loop:
- Donation payments by credit card (Stripe) or bank transfer, in CHF.
- Reward activation — automatic at card payment time, manual (operator registry) for bank transfers and Early Supporters.
- Subscriptions — CHF 1/month or CHF 10/year (annual recommended).
- Subscription income distribution to holders of already-activated Rewards, visible on each user's dashboard.
- Accounts with single sign-on shared with the MediaWiki at wikideal.net.
Outgoing payouts to users' bank accounts are not part of the MVP (Phase 2, see §4).
2. Core concepts & terminology
| Term | Definition |
| Reward | The single unit of recognition attributed to supporters. There is one type of Reward only (no sub-categories). Rewards are not guaranteed financial instruments; they are compensated over time by subscription income. Total attributed in Prototype 1: 100'000'000 Rewards. |
| Attributed (promised) Rewards | Rewards assigned to a person (by donation or as Early Supporter) but not yet compensated in cash. Shown in the left column of the dashboard mockup. |
| Activated Rewards | Attributed Rewards whose holder has completed the activation step (automatic at card payment; manual by the Foundation secretariat otherwise). Only activated Rewards participate in subscription income distribution. |
| Cash-out balance (obtained) | CHF amount already earned by a holder through distributions. Accumulates on the dashboard; transferable to a bank account only from CHF 100, and only in Phase 2. |
| Early Supporter | Person who received a Reward attribution manually (registered by the secretariat after a webinar), without a card payment. |
| Subscriber | Person paying CHF 1/month or CHF 10/year. Subscribers get access to WikiDeal member benefits (list maintained separately); they do not receive Rewards. |
Terminology rule for implementers: use the single word Reward(s) everywhere.
Do not introduce “Community Rewards”, “Personal Rewards”, “miles”, “cashback”, “investment”, “tokens” or similar terms in UI, code identifiers, or documentation.
3. Functional requirements (MVP)
F1 — Donation payment by card (Stripe) MVP
- Donation form (mockup: funding-donation-form.html) with amount input in CHF.
- Minimum CHF 250, maximum CHF 5'000 per card payment. Above the card ceiling, the UI directs the donor to bank transfer (F3).
- From CHF 2'000, bank transfer is offered as a recommended option (not mandatory — card remains possible up to the ceiling), to avoid card processing costs.
- At donation time, the donor chooses which share of the resulting Rewards they keep and which share they leave to the project as pure support (donation form step 3). The share left to the project carries no special name and generates no Rewards for the donor.
- Payment processed by Stripe (Checkout or Payment Element), currency CHF.
- Stripe processing fees are added on top and paid by the donor (the Foundation receives the full donation amount). The fee amount is displayed before confirmation.
- On successful payment: e-mail receipt / donation certificate (mockup: funding-certificate.html) and immediate Reward activation (F2).
F2 — Automatic Reward activation at card payment MVP
- Fixed multiplier ×100: a donation of CHF 1'000 attributes and activates 100'000 Rewards. No bonding curve in the MVP (the multiplier is a configuration variable, to prepare Phase 2).
- Activation happens synchronously in the payment confirmation flow (webhook-driven:
checkout.session.completed or equivalent).
- The new balance is immediately visible on the donor's dashboard (F7).
F3 — Bank-transfer donations, manual activation MVP
- For amounts above the card ceiling (and as an option for any donor), the donation is made by bank transfer to the Ynternet.org Foundation account. The system displays the bank details and a payment reference.
- No bank-API integration in the MVP: the Foundation secretariat checks the account, then activates the Rewards manually within 7 days using the operator registry (F5).
- The donor sees a “pending activation” state on their dashboard until activation.
F4 — Subscriptions MVP
- Two plans, CHF only: CHF 1/month or CHF 10/year. The UI clearly recommends the annual plan (mockup: funding-signup.html).
- Recurring billing via Stripe Billing (subscriptions), card payment.
- Subscribers receive access to WikiDeal member benefits (see the wiki page Subscriptions); subscriptions do not create Rewards. As marketplace services open, an active subscription will be required to access them with low commissions (example: a taxi driver pays CHF 10/year and gets far lower per-ride commissions than on incumbent platforms, in exchange for light participation in the community, e.g. the annual general assembly).
- Standard lifecycle: subscribe, renew, cancel, failed-payment dunning (Stripe defaults acceptable).
F5 — Online Reward registry & operator interface MVP
- Web interface for the Foundation secretariat (mockup: funding-validation.html).
- An online table associating an e-mail address → attributed Reward amount, with an Activate action per row. Used for:
- Early Supporters: Rewards attributed manually, activated by the secretariat after the onboarding webinar;
- Bank-transfer donors: activation within 7 days after the transfer arrives on the Foundation account.
- Every attribution/activation is logged (who, what, when — simple action log as shown in the mockup).
- Access restricted to authenticated operator accounts.
F6 — Distribution of subscription income to Reward holders MVP
- Each subscription payment received is distributed according to the 25/25/50 rule published on the wiki (Revenue Structure):
- 25% to donors (holders whose Rewards come from a donation);
- 25% to Early Supporters;
- 50% retained by the Foundation for project operations.
- Allocation key within each group: equal share per activated Reward. Each group's share of every subscription franc is divided by the number of Rewards activated in that group at distribution time. Only activated Rewards participate (see the published Rewards FAQ).
- Worked example: CHF 500'000 raised out of the expected 1M; donors hold 37'000'000 activated Rewards. A subscriber pays CHF 1: the donors' share (CHF 0.25) is divided by 37 million — each activated donor Reward is credited CHF 0.25 / 37'000'000. Small per-event, but it accumulates with every subscriber.
- Nominal unit: 1 Reward = CHF 1 when cashed out (published: Rewards portal). As cash is credited, attributed Rewards are consumed 1:1 (CHF 1 credited = 1 Reward moved from the promised column to the cash-out balance).
- Distribution may run as a periodic batch job (e.g. daily) rather than per-transaction, provided dashboard figures stay consistent.
- Full auditability: every distribution event is stored (source payment, date, per-holder credit).
F7 — User dashboard MVP
- Authenticated dashboard per the mockup funding-dashboard-proposal-c.html (public view: funding-dashboard-unauth.html).
- Displays at minimum: attributed (promised) Rewards not yet compensated · activated status · cash-out balance in CHF (obtained) · history of distributions received.
- The cash-out balance accumulates freely; the UI states that no transfer is possible below CHF 100 and that bank payout will open in a later phase (mockup: funding-how-to-cash.html). No outgoing payment is implemented in the MVP.
F8 — Accounts & single sign-on with MediaWiki MVP
- An account is required to hold Rewards, subscribe, and edit the wiki. Editing wikideal.net is never anonymous, but pseudonymous accounts are allowed: first name, last name and e-mail address are not exposed publicly.
- SSO approach: the existing MediaWiki (wikideal.net) acts as the identity provider — e.g. via the MediaWiki
OAuth extension (or OpenID Connect equivalent) — and the funding dashboard authenticates against it. One account gives access to both wiki editing and the funding dashboard. This is the lowest-cost option and the preferred one; respondents may propose an equivalent-cost alternative with justification.
- Account creation flow per mockup funding-signup.html.
4. Phase 2 — explicitly out of MVP scope PHASE 2
The following will be developed after the MVP, in a second stage. The MVP architecture should not block them, but no Phase-2 work is expected or paid within this envelope:
- Bonding curve: the fixed ×100 multiplier evolves along a defined curve (×100 → ×30, fixed algorithm).
- Funding Stabilizer: automatic mechanism adjusting distribution according to Foundation needs.
- Cash-out transfers: automatic or manual payout of the cash-out balance (≥ CHF 100) to the user's bank account, with user options.
5. Indicative data model
Indicative only — respondents may propose their own schema, provided the auditability requirements hold.
| Entity | Key fields |
users | id, pseudonym, e-mail (private), MediaWiki identity link, role (user / operator) |
reward_grants | holder, amount, origin (card_donation / bank_donation / early_supporter), status (attributed / activated), activation timestamp & actor |
payments | type (donation_card / donation_bank / subscription), gross amount CHF, Stripe references, status |
subscriptions | plan (monthly / yearly), Stripe subscription id, status |
distributions | source payment, date, per-holder credits (CHF), Rewards consumed |
audit_log | append-only: operator actions, activations, distributions |
An append-only ledger style for Reward and cash movements is strongly recommended (no destructive updates of balances).
6. Non-functional requirements
- Currency: CHF everywhere. No EUR, no other currency, no crypto.
- Hosting: deployable on Ynternet.org Foundation infrastructure (Linux/nginx environment, same family as aidev.wikideal.net).
- Licensing: all delivered code under a free license (Free Licensing policy of the project).
- Privacy: pseudonymity supported; personal data (e-mail, name if given) never exposed publicly; data minimization; EU/Swiss data-protection compliance.
- Auditability: every money and Reward movement traceable and exportable (CSV at minimum).
- Transactional integrity: Stripe webhooks idempotent; no double activation or double credit.
- Languages: UI in English for the MVP; architecture must not block later French localization.
- E-mail: transactional e-mails for receipt/certificate, activation confirmation, subscription events.
7. Technology stack
Suggested option (not mandatory): Laravel + VueJS, matching the team's existing base
(investment-dashboard repository serving aidev.wikideal.net) and the current developer's proposal.
Respondents may propose another stack, with justification, provided it satisfies §6 (hostable on Foundation
infrastructure, free license, maintainable).
8. What proposals must contain
- Fixed price in CHF for the full MVP scope (§3), within the CHF 3'000 – 5'000 envelope. If the envelope cannot be met, state which requirements you propose to defer and the resulting price.
- Delivery timeline (calendar weeks from kick-off).
- Stack & architecture summary (1 page max), including the SSO approach for F8.
- Included / excluded items, assumptions, and Stripe account prerequisites.
- Maintenance: proposed conditions after delivery (optional).
9. Reference mockups (user journey)
The mockups below define the expected result. Latest versions, maintained at the
Funding hub:
10. Settled points & change log
v0.2 (2026-08-18) — all v0.1 open points settled with the project owner and cross-checked against the published wiki rules:
- Card / bank-transfer threshold: bank transfer is optional and recommended from CHF 2'000; card remains possible up to the CHF 5'000 ceiling; above CHF 5'000, bank transfer only. (F1, F3)
- Subscription income split: 25% donors / 25% Early Supporters / 50% Foundation operations — the published 25/25/50 rule. (F6)
- Allocation key: equal share per activated Reward within each group. (F6)
- Consumption: nominal unit 1 Reward = CHF 1 when cashed out; 1:1 consumption as cash is credited. (F6)
- Subscriber benefits: referenced from the wiki Subscriptions page; marketplace low-commission access will require an active subscription. (F4)
These rules go in this tendency and are proposed as the working basis; final details are settled with the selected respondent before contract signature.