MVP 2.0 ยท Production-ready ยท Private beta ยท June 2026

Equity Engine, ready for the people health research usually misses.

Equity Engine is a UK health-equity research platform run by Unwritten Health Ltd. It turns community-reported health experiences into evidence health organisations can act on. MVP 2.0 is production-ready and in private beta , verified email delivery, full anti-fraud stack, automated voucher fulfilment, plain-English everywhere.

3,500+
Users on the platform
130+
Features shipped
4
Personas served
10
Verification layers
14
UI languages

What's new in MVP 2.0 10 major additions

Between version 1 and 2.0, Equity Engine moved from a working prototype to a live production platform with bank-grade verification, automated rewards, and inclusive language , built for the communities health research usually misses.

๐Ÿš€ Live & growing Production-ready, in private beta, with over 3,500 users already on board. UK-grounded, EU-resident hosting, custom domains, full TLS , built for scale from day one.
๐Ÿ›ก๏ธ Multi-layer verification stack Industry-grade fraud defence across every signup , bot defence, fraud-risk intelligence, email deliverability checks, device-level uniqueness, optional phone verification, academic credential checks. Designed to protect participants and partners alike.
๐ŸŽ Automated reward fulfilment Participants who earn points can redeem for e-gift vouchers and receive them in seconds. End-to-end automated, with encrypted inventory and built-in safeguards against reward farming.
๐Ÿ“ž Smart step-up verification Selectively asks for extra checks only when signals warrant it , protects the platform without making honest participants jump hoops.
๐Ÿ“ˆ Source-aware participant journeys Every account's provenance is tracked from signup through every interaction. Lets us apply the right trust gates and report cohort quality back to partners.
๐ŸŽ“ Academic partnership tier Free credited access for researchers in exchange for citing Equity Engine in published work. Verified academic identity at signup. Built-in citation tools.
๐Ÿ’ฌ Plain-English everywhere Privacy Policy, Terms, every email, every page written to reading age 12–13. UK GDPR concepts explained in plain words. Critical for the underserved communities we exist to serve.
๐Ÿ“ฑ Fully mobile-responsive Every surface , participant, partner, admin , works on a phone. Admin can triage approvals and fulfil rewards from anywhere.
๐Ÿ“ง Production-grade email infrastructure Authenticated sender domain, DMARC active, ten brand-styled templates. The deliverability setup that keeps confirmation emails out of spam folders.
โš–๏ธ ICO-registered & legally ready Registered with the UK Information Commissioner's Office (ZC109542). Plain-English Privacy Policy and Terms reflect the real platform and real company.

0Who the platform serves

Four user types, each with their own surface, permissions and data slice.

PersonaWhat they doWhere they live
Participant Members of the public who share their health experiences via surveys, earn points, redeem rewards, and see how their community compares. /, /community, /community/:slug, /profile
Client / Provider Health charities, NHS bodies, public-interest organisations. Get a scoped dashboard filtered to the disease areas they care about, with PDF export. / (provider variant), drill-down modals
Academic partner Free credited access in exchange for citing Equity Engine. Same provider dashboard plus citation card with BibTeX. /academic-access apply, then /
Admin (Unwritten Health) Approves signups, configures organisations and surveys, edits the demographic schema, runs analytics, fulfils reward redemptions. /admin/*

1Sign-up, onboarding & anti-spam

From a public visitor to an approved, profiled participant, with multiple defensive layers against fake signups.

Self-registration live

Public /register page in brand standard. Invitation-request flow: no password chosen at signup, set after admin approval.

/registerPublic

Cloudflare Turnstile live

Invisible CAPTCHA token verified server-side on every registration submit. Blocks scripted abuse without user friction.

Spam defence

Honeypot + timing + rate-limit live

Hidden field, minimum-time-on-form check, per-IP rate limit. Catches the bulk of low-effort bots before Turnstile even matters.

Spam defence

Disposable email blocklist live

Server checks the email domain against a maintained blocklist of throwaway providers. Blocked with a friendly message.

Spam defence

Email confirmation step live

Confirmation link emailed before the admin queue. Idempotent, refresh the page or click the link twice, same result.

/confirm-registration

Hybrid auto-approval live

Clean signups auto-approved at confirm-time and emailed an invitation immediately. Flagged signups (IP cluster, country mismatch, fast confirm) drop into the admin review queue.

Approval flow

Risk-signal flagging live

Soft signals on the admin pending row: IP cluster count, country mismatch with declared, fast-confirm time, disposable domain, registration source.

Spam defence

IP-based fraud scoring new in 2.0

Every signup is checked against a real-time IP intelligence service. Suspicious networks (VPNs, anonymisers, known abuse sources) are flagged for review. Declared region is cross-checked for honesty.

Verification engine

Email deliverability validation new in 2.0

Two-stage check ensures the address really exists and accepts mail. Catches typo'd addresses, made-up domains, and dead mailboxes before any email is sent.

Verification engine

Device-level uniqueness new in 2.0

Privacy-respecting device fingerprint catches "fifty accounts from one laptop" patterns. First-party; not used for tracking; never sold.

Device fingerprint

Step-up phone verification new in 2.0

Higher-trust actions trigger an optional one-time SMS code. Phone numbers stored only as one-way hashes after verification , we never keep the raw number.

Verification engine

Bulk-submission pattern detection new in 2.0

Spots scripted form submissions: repetitive patterns, low-effort field completion, velocity clusters. Surfaces them for human review without auto-rejecting.

Pattern detection

Real-time public-form ingest new in 2.0

The signup form on equityengine.health is scored live the moment it's submitted , no email-forward queue, no batch processing.

Public form ingest

Source-aware account journeys new in 2.0

Every account remembers how it arrived (organic web, ad campaign, marketing form, academic application, bulk invite). Lets us apply the right trust gates to the right cohorts.

Source tracking

"On the waitlist" email live

Auto-sent after email confirmation when a signup hits the admin queue. Keeps the human in the loop while admin reviews.

Email template

Invitation email + set-password flow live

Approved users get an email with a one-click link to set their password. Token-gated /invitation page styled to brand standard.

/invitation

24-field demographic form live

Three-step stepper for age, condition areas, region, ethnicity, etc. Form is fully data-driven from the DemographicField collection.

/onboarding

Snooze-instead-of-skip onboarding live

Three soft snoozes allowed before the form becomes mandatory. Keeps low-friction without abandoning data quality.

UX polish

Profile-completeness banner live

Persistent sitewide banner on participant pages while profile is <90% complete. One-click deep-link into the right step.

Sitewide

Sitewide language switcher live

14 languages available in a dropdown in the header. Preserved across pages via local storage.

All surfaces

2Participant experience

Mission-first, low-friction. Designed to feel like meaningful contribution, not paid microtasks.

Personalised home dashboard live

Smart copy adapts to state: first visit gets a 3-card welcome (profile ยท how it works ยท icebreaker), returning users see live surveys + earnings.

/

Icebreaker survey on day one live

3-question, 10-point starter survey auto-assigned at approval so every new participant has something to do immediately.

Auto-assigned

Survey-matching engine live

Published surveys automatically assigned to matching participants based on declared disease areas / regions / age groups / ethnicities. Backfills on approval.

Survey matching

Survey participation flow live

Question-by-question survey UI with progress bar, skip-back, autosave per response. Read-only view post-completion.

/survey-response/:id

Points + rewards live

Each survey carries a point value. Running total visible on home. Four redemption tiers: ยฃ5, ยฃ10, ยฃ25, ยฃ50.

Rewards widget

Reward redemption flow live

Inline confirmation, server creates pending Redemption, admin queue fulfils with a voucher code. Participant history disclosure.

Rewards

Automated voucher fulfilment new in 2.0

Encrypted gift-card inventory with industry-standard at-rest security. Redemptions auto-fulfil within seconds. Low-stock alerts so the team never runs out.

Voucher fulfilment

Step-up gate on ad-imported redemptions new in 2.0

Users who arrived via ad campaigns must verify a phone before their first reward redemption. Kills reward-farming spam without friction for organic users.

Redemption flow

"Your community" page live

Per-participant view of the community formed by people with the same condition. Tier ladder visualisation across thresholds 50/250/1000 unlocks more insight as community grows.

/community

Per-disease-area community pages live

Explore any condition's community at /community/:slug. Same tier-gated insight unlock model regardless of whether you're a member.

Community

Profile editing live

Edit demographic answers any time. Polished page with clear sections, sign-out, language switcher.

/profile

Accessible navigation live

WCAG 2.1 AA: skip links, visible focus rings, aria-required / aria-invalid / aria-describedby, role='alert' on errors, role='status' on confirmations.

A11y

Mobile-responsive across all surfaces new in 2.0

Participant, provider AND admin surfaces all verified at 375px iPhone SE width: no horizontal page overflow, tap targets โ‰ฅ44px, text readable, tables horizontal-scroll inside cards. Admin can triage approvals from a phone.

Mobile polish

Skeleton loading states live

Replaced full-screen blocking loaders with content-shaped skeletons. App feels instant even on cold cache.

UX polish

3Provider / client experience

A premium dashboard a client can confidently share with their executive team. Designed to look like an award-winning research product.

Premium dashboard layout live

Bento grid with refined gradient hero (multi-stop radial on #03332B + SVG dot pattern), glass-morphism stat card, orange accent line under eyebrow.

Hero design

KPI strip with micro-viz live

Top-line metrics with embedded sparklines, RadialBarChart gauges, coverage rings, ThemeStack bars.

Recharts

Sentiment trend chart live

AreaChart showing community sentiment over time on a -1 to +1 scale, gradient fill, hover tooltip with date + score.

Sentiment over time

Sentiment by disease area live

Bipolar bar chart per condition, your provider's area highlighted in brand orange. Instant relative comparison.

By disease area

NHS trust radial live

RadialBarChart showing average trust scores (1โ€“5 scale) by organisation type, GP, hospital, charity, etc.

Trust gauge

Ethnicity donut live

Conic-gradient donut (hand-built, not Recharts) for fine design control. Legend + percentages alongside.

Ethnicity chart

Themes list live

Top themes ranked by mention count. Each row clickable, opens drill-down modal.

Themes ranked

Theme drill-down: Quotes live

Modal "Quotes" tab shows real anonymised participant quotes that contributed to the theme.

Drill-down modal

Theme drill-down: Who is saying this? live

Three ranked breakdowns, region, ethnicity, condition. Quick read on which segments are over-represented in the theme.

Drill-down

"People like me" comparison live

National vs local sentiment for the provider's disease area. Calls out where the area diverges from the UK average.

Provider overview

Methodology card live

Plain-English explanation of how scores are calculated. Includes SentimentScaleLegend and TrustScaleLegend visualising the scales.

Methodology

Metric tooltips live

Every metric gets an (i) icon โ†’ Popover with explanation. Library covers sentiment, matching, comparison, trust, themes, regions, ethnicity, sentiment-by-disease.

Tooltips

PDF export live

One-click download of dashboard as branded PDF. Backend renders via puppeteer-core with the org's auth token, returns a blob, frontend triggers the download.

ExportExport bar

Citation card (academic partners) live

Appears only when org.isAcademic. Includes formatted citation + BibTeX with copy-to-clipboard buttons.

Academic tier

Per-organisation data scoping live

Each client only sees participants matching the disease areas configured on their organisation record. Filter applied server-side at every endpoint.

Security boundary

4Admin & operations

The Unwritten Health team's surface for running the platform end-to-end.

User management live

Searchable table of all users with role, approval status, organisation, last activity. CRUD via /admin/user/:id.

/admin

Pending approval queue live

Confirmed-but-not-yet-approved signups with soft risk signals visible per row. Approve / reject with one click, triggers invitation email.

Trust signals

Bulk invite live

Paste a CSV/TSV list of emails; preview parses + dedupes; one click sends invitations in batch.

Bulk invite

Organisation management live

Create/edit client orgs. Configure disease areas (drives data scoping), description, master-data-steward flag, academic partner toggle.

/admin/organisation

Demographic schema editor live

Editable list of demographic fields stored in MongoDB. Drives the participant onboarding form dynamically, change a field, the form updates everywhere.

/admin/demographics

Survey management live

Create, edit, publish, archive surveys. Draft/published gate enforced on backend. Targeting fields (disease areas, regions, age groups, ethnicities) drive auto-assignment.

/admin/survey

Manual re-match survey live

Admin endpoint to re-run targeting for a specific survey if criteria changed after publication.

Manual re-match

Admin analytics page live

Premium-grade dashboard mirroring provider aesthetic: hero, KPI strip, region cards, top themes grid, embedded Metabase iframe with friendly empty / loading / error states.

/admin/analytics

UK regional heatmap live

Interactive UK map. Toggle between 5 metrics: response volume, "research designed for me", avg NHS trust, avg sentiment, % with long-term condition.

Regional analysis

Region highlight cards live

Most-positive and most-negative regions surfaced as gradient cards (green/red), with delta vs national average.

Highlight cards

Top themes grid (clickable) live

Cross-platform themes with mention count, sample quote, and click-to-drill-down into full breakdown modal.

Themes grid

Redemptions queue live

Pending reward redemptions listed for fulfilment. Admin enters voucher code or cancels with reason; participant is notified.

Redemption fulfilment

Academic application review live

Academic-tier applications submitted via /academic-access appear as pending Organisations marked isAcademic. Admin approves the org + the contact in one flow.

Academic tier

5Data & analytics

What's actually in the database, and how it surfaces.

Founder cohort dataset live

1,204 anonymised UK community survey responses imported under HRA-style consent practice as the founder cohort to validate the dashboards. No raw PII stored, source files destroyed post-import.

Seed dataset

AI sentiment + theme extraction live

Free-text answers run through our AI sentiment engine for sentiment scoring and theme mining. Idempotent re-runs supported. PII stripped before any analysis call.

Batch processing

5-metric UK regional heatmap live

Response volume, "research designed for me" agreement, avg NHS trust, avg sentiment, long-term condition prevalence, all by region.

Regional analysis

Theme aggregation live

Themes mined from free-text answers, mention count rolled up across all responses. Drives ThemesList and TopThemesGrid.

Theme drill-down

Per-segment breakdowns live

Sentiment, trust, and themes broken down by region, ethnicity, disease area, organisation type. Drives the "who is saying this?" view.

Internal helper

Real participant quotes live

Sampled per theme, anonymised, surfaced in drill-down modal. Includes the contributing question and demographic tags (e.g. "Female, 35โ€“44, North West").

Theme drill-down

Embedded Metabase live

Local Metabase on port 3000 connected to Managed database (EU/UK region). Embed-token endpoint signs dashboards into provider/admin iframes. Starter native queries documented.

/admin/analytics

Deterministic question IDs live

Question IDs are stable across re-imports so saved Metabase queries and charts don't break when the dataset refreshes.

Data import

Aggregation endpoints live

Backend exposes platform-overview, provider-overview, community-overview, disease-area-overview, region-stats, theme-detail, all PII-free.

Server-side

6AI & sentiment

A best-in-class AI engine reads what participants write and finds the patterns , so partners get real qualitative insight, not just numbers.

Free-text sentiment analysis live

Every long-form answer is analysed for emotional sentiment, then surfaced alongside the structured data so partners can read mood at a glance.

AI sentiment

Theme extraction live

Themes mined from open-ended answers, normalised across the dataset so "long GP wait times" said five different ways still cluster together.

AI themes

Strict PII boundary at AI step live

Names, emails, and any identifying details are stripped from text before it ever reaches the AI engine. Special-category data never flows out of our own infrastructure unless explicitly necessary.

Privacy by design

Resumable analysis live

Long-running analysis jobs are safe to interrupt and resume. Already-scored responses are skipped on re-runs, so we never double-bill the AI provider or re-process unchanged data.

Batch processing

7Email & communications

Mailjet for transactional delivery. All templates restyled to brand standard.

Registration confirmation live

Sent immediately after public signup. Single-click confirm link with token.

Mailjet

Waitlist email live

"You're on the waitlist" sent after email confirmation for signups that hit admin review.

Conversion

Admin approval request live

Internal email to admin team when a confirmed signup needs human review.

Internal

Invitation (set password) live

Sent on approval. Token-gated link to /invitation for password setup.

Brand standard

Password reset live

Standard request-reset flow with anti-enumeration (same success response whether email exists or not).

/request-reset

Survey invite live

Optional email to participant when a new survey targets their profile. Currently triggered by survey-matching engine.

Matching

Community digest live

Monthly per-condition digest email summarising new responses, top themes, sentiment shifts. Manual sender via scripts/send-community-digest.mjs with --to and --dry flags.

Digest

Notification email live

Generic transactional template (e.g. reward fulfilled, profile change required). Same brand container.

Reusable

8Security & privacy

Designed so participants stay anonymous and clients only see aggregates that can't be reverse-engineered.

Industry-standard authentication live

Short-lived access tokens with secure refresh rotation. Industry best-practice for session security.

Authentication

One-way password hashing live

Passwords stored as per-user salted one-way hashes. No plaintext or reversible storage anywhere , we couldn't tell you your password if we wanted to.

User record

Per-partner data scoping live

Each partner organisation only sees responses relevant to their configured disease areas. Filters enforced at the data layer, not just the UI , can't be bypassed.

Server-side

Anti-enumeration on reset live

Password-reset returns the same response whether the email exists or not. No leak of who's on the platform.

Password reset

Anonymised imports live

Any imported data strips identifying details. Source files destroyed post-import. Email kept only as a hash where uniqueness matters.

GDPR posture

Aggregates only on partner surfaces live

Partner dashboards return aggregations (counts, means, sampled quotes) , never individual identifiable records. PII boundary enforced at the data-serving layer.

API contract

Routine secret rotation live

All sensitive credentials rotated post-launch, on a recurring schedule going forward. Secrets never live in source control.

Security hygiene

Resilient error handling live

Every page wrapped in defensive error boundaries so a transient failure never strands a user with a blank screen.

A11y + reliability

Get in touch

Interested in Equity Engine?

Whether you're an NHS body, charity, academic researcher or potential partner , we'd love to talk about how Equity Engine can help your work hear the voices that get missed.

โœ‰ chat@equityengine.health โ˜Ž +44 (0) 161 524 8800 ๐ŸŒ equityengine.health

Swan Buildings, 20 Swan Street, Manchester, M4 5JW, United Kingdom