Healthcare
A participant diary for a clinical study
Study participants answer a short daily questionnaire on their phone and record symptoms. Researchers see completion rates and flag participants who have stopped. Responses cannot be changed after submission and every access to a record is logged.
Automatically generated draft
Written by machine against our own engineering playbook. The company is invented; the decisions are the ones we would make on a real build. A reviewed blueprint goes further — nine sections, agreed line by line, and it is what the build is tested against.
Section 01 · What has to work
Study participants submit immutable daily symptom questionnaires on mobile devices while researchers monitor compliance and drop-off rates.
Section 03 · Screens
Every screen, and what it is for.
- ›Today's Questionnaire — Participant answers daily prompts, instant submission.
- ›Dashboard — Researcher views study completion rates, instant aggregation.
- ›Participant List — Researcher identifies flagged drop-offs, instant filtering.
- ›Audit Log — Admin inspects read/write events, instant search.
Anything not on this list is not in version one. That is what keeps a fixed price fixed.
Section 04 · The data model
What it stores, and who can read a row.
participant
id uuid, user_id uuid, study_id uuid, status enum(active, dropped, completed), enrolled_at timestamptz
Access · Researchers assigned to the study can read and update.
questionnaire_response
id uuid, participant_id uuid, submitted_at timestamptz, responses jsonb, immutable boolean
Access · Only the owning participant can insert; assigned researchers can read.
audit_log
id uuid, actor_id uuid, action text, target_id uuid, timestamp timestamptz
Access · System writes; only system administrators can read.
Those access rules belong in the database, not in the screens. Someone who edits the address bar still cannot read a row that is not theirs — and the test that proves it blocks delivery if it fails.
Section 05 · States
pending_submission → submitted → locked
Most scope arguments three weeks into a build are really arguments about a state nobody named at the start.
Section 06 · Where this breaks
What bites products like this one.
Participants complete offline questionnaires without local sync queues.
Store responses in local SQLite on the device and sync with idempotent timestamps when connectivity returns.
Timezone shifts corrupt the definition of a 'daily' questionnaire window.
Evaluate questionnaire availability windows using participant local time converted to UTC intervals.
Section 08 · Deliberately left out
What version one does not do.
- ×Push notification reminders — complex scheduling per timezone, build when compliance drops below target thresholds.
- ×Participant messaging — out of scope for data collection, add when qualitative follow-ups become mandatory.
This is the section that protects the date, and the only place in the document where somebody says no. It is also why clients trust the rest of it.
Still open
What we would ask before quoting.
- What is the exact logic for flagging a participant as stopped?
- How are participant accounts provisioned into studies?
Your product, not this one
Get this written for what you are actually building.
Describe it in a sentence and the generator returns the same sections for your own product. Free, no email, nothing saved to a list.
Next step
Find out if your idea fits in 10 working days.
Tell us what you want to build. We reply the same day with a straight yes, no, or here is what we would cut.