exam-prep is an AI-powered exam and board preparation product for high-stakes, regulated careers — NCLEX nursing boards, CPA, real estate licenses, and bar exams. The product's intent is narrow and deliberate: a candidate preparing for a pass/fail licensing exam uses AI to generate realistic practice questions, to have their exact knowledge gaps diagnosed, and to receive on-demand explanations of the mistakes they make.
The audience is a working adult betting a $20–$50/month subscription — or a fixed test-pass pass — and months of their life on a single outcome. They are nurses on night shift, accountants studying after hours, and candidates who cannot afford to fail twice. They want a cockpit, not a classroom: exact numbers, exact gaps, no cheerleading.
This document specifies the current committed product: the exam-prep experience for the Exam Candidate. The broader market-opportunity brief that motivated the project also lists candidate concepts in other verticals (document and contract analysis, niche diet coaching, elder-care coordination, subscription-leakage tracking, creator revenue dashboards, and hyperlocal home-maintenance marketplaces). Those concepts are recorded here as future candidates only; they are not current product scope, and no page, persona, or requirement in this document implements them.
exam-prep is delivered as a mobile-first application experience with a public entry surface and a protected candidate workspace. The current committed capability set is:
Actors:
Delivery ownership. The candidate-facing experience is first-party custom UI. The AI capabilities (question generation, gap diagnosis, mistake explanation) are first-party product behavior backed by an AI service; the candidate interacts with them through the product's own surfaces, never through a raw model interface.
Access ownership. The public entry surface is anonymous: a visitor can read what the product is, see the readiness instrument, and understand gap analysis before any identity exists. The candidate workspace — where a candidate's exam selection, drill history, per-domain readiness, and explanations accumulate — is durable, candidate-specific state that must remain bound to the correct candidate across sessions and devices. That continuity is indispensable to the accepted outcomes (a readiness percentage and a gap diagnosis are meaningless if they are not this candidate's), so application-owned identity is required: first-use identity establishment and returning verification, self-service. The anonymous entry surface cannot own the interaction that establishes access to the protected workspace; that interaction is an anonymous entry boundary, and protected state remains unavailable until identity is established.
Monetization boundary. The accepted models are a $20–$50/month subscription or a fixed test-pass pass. Payment instrument handling and recurring billing are provider-owned; the product surfaces plan selection and entitlement state but does not implement card handling.
Current vs. future boundary. Current: the exam-prep capability set above, for the Exam Candidate. Future candidates (not current scope, not current pages): the vertical document and contract analyzer; the hyper-niche diet and nutrition coach; the elderly care and family coordinator; the subscription and expense leakage tracker; the creator business and sponsorship dashboard; the hyperlocal home maintenance and diagnosis marketplace. The brief's execution guidance — pick one niche and one audience, prioritize mobile iOS first, and use native device features (camera, push notifications, offline syncing, location) rather than functioning as a wrapped website — is carried as a constraint on how the current product is built, not as a mandate to build the other concepts.
Explicit exclusions. No blue/indigo primary or accent anywhere, including focus rings and links. No white or near-white page ground. No Inter, Roboto, Arial, Helvetica, Poppins, Lato, Open Sans, or system-ui for headings or body. No gradient-blob heroes, floating glass cards, or grids of identical hover-lift feature cards. No cheerleading gamification: confetti, streak flames, cartoon mascots, or "You got this!" copy. No pill-shaped buttons or radii above 6px. No stock photography of smiling students or doctors. No purple-to-pink gradient washes. The generic indigo/blue-on-white SaaS template is forbidden for this project.
Information and state. The anonymous entry surface. It explains what exam-prep is, which regulated exams it covers, and how gap analysis works, and it presents the readiness instrument as the product's central promise. It carries no candidate-specific state; the readiness gauge shown here is the illustrative instrument described in the creative direction, not a candidate's real score.
Primary actions.
Supporting actions.
Domain entities. Exam (NCLEX, CPA, BAR, REALTOR); exam domain (e.g., Pharmacology, Med-Surg, Ethics); readiness percentage; days-to-exam countdown; plan (monthly subscription, fixed test-pass pass).
Component responsibilities.
clamp(56px, 9vw, 128px), line one in #EDE9E3, line two indented 8% and set in amber #C8752E; beneath it one ~60-word paragraph in Barlow #8A857C; then the amber squared button and the text link. Right 5 columns: the 320px circular readiness gauge on a #1A1E22 panel that bleeds off the right viewport edge at desktop.#2C3238 (1px outer stroke plus 1px inner stroke so it reads as milled), tick marks every 5%, an amber needle at 68%, the number "68%" in 56px tabular Barlow Semi Condensed, and the label "NCLEX-RN READINESS" tracked 0.08em beneath. The needle sweeps 0→68% over 900ms with ease-out cubic while the tabular counter counts up in lockstep.States.
#8A857C label and the CTAs remain available against the default exam; the visitor can retry by reloading.Information and state. The candidate's protected home surface. It shows the candidate's current overall readiness percentage, the per-domain readiness complication list for their selected exam, the days-to-exam countdown, and the entry point to drilling. It is the authoritative record of the candidate's diagnosed gaps.
Primary actions.
Supporting actions.
Domain entities. Candidate; exam; exam date; exam domain; domain readiness percentage; overall readiness percentage; practice question; answer attempt (correct/incorrect); missed-question record; explanation.
Component responsibilities.
#3FA8A0 "mastered" check appears only when a domain crosses 85%.#1A1E22 panel with a hairline rule above it; also persists at the right end of the sticky bar on scroll, ticking once per second with no easing theatrics.States.
#1A1E22 surfaces with hairline dividers; the gauge needle and counters animate to final value.#8A857C "stale" label and a retry control; the drill entry remains available.Information and state. The active question-answering surface. It presents one AI-generated realistic practice question at a time in the candidate's exam context, records the candidate's answer, and reveals the outcome. It shows question progress (e.g., question 7 of 20) in tabular figures.
Primary actions.
Supporting actions.
Domain entities. Practice question (stem, options, correct answer, domain); answer attempt; correctness; domain attribution; drill session; progress count.
Component responsibilities.
#3FA8A0. Amber and teal never appear in the same component.States.
#1A1E22 panel with a hairline rule and a muted #8A857C "generating question" label; the progress readout holds its last value.Information and state. The candidate's diagnosed knowledge gaps, expressed as the full per-domain breakdown for the selected exam: each domain's readiness percentage, the volume of missed questions attributed to it, and which domains are mastered (≥85%, teal check) versus weak (amber). This is the surface where "diagnoses exact knowledge gaps" becomes an inspectable record rather than a single number.
Primary actions.
Supporting actions.
Domain entities. Exam domain; domain readiness percentage; missed-question record; mastery threshold (85%); weak-domain designation.
Component responsibilities.
#3FA8A0 check at ≥85%; amber otherwise.States.
Information and state. The on-demand explanation of a specific mistake. It shows the question as it was presented, the candidate's selected answer, the correct answer, and the AI-produced rationale for why the correct answer is correct and why the candidate's choice was wrong. It names the domain the question belongs to.
Primary actions.
Supporting actions.
Domain entities. Practice question; candidate's selected answer; correct answer; rationale; domain attribution.
Component responsibilities.
#3FA8A0.States.
Information and state. The anonymous entry boundary that establishes and verifies the candidate's application-owned identity so that exam selection, drill history, per-domain readiness, and explanations remain bound to the correct candidate across sessions and devices. It is reachable without identity; the protected workspace is not.
Primary actions.
Supporting actions.
Domain entities. Candidate identity; session.
Component responsibilities.
#8A857C messaging with a 2px amber left rule on failure.States.
Information and state. The candidate's plan and entitlement state: the $20–$50/month subscription or the fixed test-pass pass, which plan is active, and when it renews or expires. Payment instrument handling and recurring billing are provider-owned; this surface presents plan selection and entitlement state and hands payment to the provider.
Primary actions.
Supporting actions.
Domain entities. Plan (monthly subscription, fixed test-pass pass); price ($20–$50/month range); entitlement; renewal/expiry date; provider payment reference.
Component responsibilities.
States.
Each requirement is a distinct story point with provenance, lifecycle facts, and observable acceptance. Provenance is explicit (stated in the authoritative requirement thread), basic_default (accepted default), or required_inference (indispensable inferred mechanics).
FR-1 — Exam selection. As an Exam Candidate, I should select which regulated exam I am preparing for — NCLEX nursing boards, CPA, real estate license, or bar exam — so that every question, diagnosis, and explanation is scoped to my exam.
#8A857C and the candidate can retry by reloading.FR-2 — AI-generated realistic practice questions. As an Exam Candidate, I should be given realistic practice questions generated by AI in my selected exam's context so that my practice resembles the real exam rather than generic quiz content.
FR-3 — Answer commitment and correctness feedback. As an Exam Candidate, I should commit an answer to each question and immediately learn whether it was correct so that I know where I stand on that item.
#3FA8A0, a wrong answer opens the rationale panel with a 2px amber left rule. Amber and teal never appear in the same component.FR-4 — Exact knowledge-gap diagnosis. As an Exam Candidate, I should have my exact knowledge gaps diagnosed across my exam's domains so that I know precisely which domains are weak rather than receiving a vague overall impression.
#3FA8A0 check; the overall readiness percentage is shown on the milled gauge.FR-5 — On-demand explanation of mistakes. As an Exam Candidate, I should be able to open an explanation of any mistake I made, on demand, so that I understand why my answer was wrong and why the correct answer is correct.
FR-6 — Readiness instrument. As an Exam Candidate, I should see my readiness as a live instrument — an overall percentage on a milled gauge, a per-domain complication list, and a days-to-exam countdown — so that I can read my position precisely at a glance.
FR-7 — Exam date and countdown. As an Exam Candidate, I should set my exam date and see a persistent days-to-exam countdown so that the pressure of the real deadline is always visible.
#1A1E22 panel with a hairline rule above it, and persists at the right end of the sticky bar on scroll.FR-8 — Domain-scoped drilling. As an Exam Candidate, I should be able to start a practice set scoped to a specific weak domain so that I can attack the gap the diagnosis identified.
FR-9 — Candidate identity and state continuity. As an Exam Candidate, I should establish my identity on first use and verify it on return so that my exam selection, drill history, per-domain readiness, and explanations remain mine across sessions and devices.
FR-10 — Plan selection and entitlement. As an Exam Candidate, I should choose between a $20–$50/month subscription and a fixed test-pass pass, and see my entitlement state, so that I know what I have paid for and what it covers.
FR-11 — Native device capability use. As an Exam Candidate, I should be able to use the app's native device capabilities — push notifications for study and exam-date reminders, and offline syncing of drill progress — so that the product works as a real mobile app rather than a wrapped website.
Product context. A working adult preparing for a high-stakes, regulated licensing exam — NCLEX nursing boards, CPA, real estate license, or bar exam. They are studying around a job: night shifts, after-hours sessions, stolen hours. They have committed real money ($20–$50/month or a fixed test-pass pass) and months of their life to a single pass/fail outcome, and many of them cannot afford to fail twice. They are not looking for a fun learning app; they are looking for an instrument that tells them the truth about whether they are ready.
Primary goal. To pass their licensing exam on the next attempt, by knowing exactly which domains they are weak in and closing those gaps before the exam date.
Distinct accepted responsibilities.
Relevant inputs and decisions. Which exam and which exam date; which answer to commit on each question; whether to open an explanation or move on; which weak domain to drill next; which plan to buy. Their decisions are driven by the instrument's numbers, not by encouragement.
Interactions with other accepted participants. The Exam Candidate is the only accepted active human persona in the current product. They interact with the AI question-and-diagnosis service (a system actor that generates questions, produces the gap diagnosis, and produces mistake explanations) and, for payment, with the subscription/payment provider (an external actor that owns payment instrument handling and recurring billing). Neither is a persona, and neither has a page of its own.
Observable success. The candidate's overall readiness percentage rises, weak domains cross the 85% mastery threshold and show the teal check, the days-to-exam countdown stays visible, and they enter the exam knowing their exact position rather than a vague sense of preparedness.
What makes this role's work different. The candidate's work is diagnostic and adversarial rather than exploratory: every session is measured against a pass/fail outcome and a fixed date, and the product's value is the precision of the gap it exposes. This is why the interface is an instrument — a cockpit, not a classroom — and why the product never cheers, never gamifies, and never softens a number.
#3FA8A0; a wrong answer opens the rationale panel with a 2px amber left rule and flashes that question's domain row in the complication list.#1A1E22 panel with a hairline rule above it. As they scroll, the countdown persists at the right end of the sticky 56px instrument bar, ticking once per second.Muse and headline. MARQ by Garmin — luxury instrument aesthetic. The register is precision under pressure, worn on the body: titanium, sapphire, dial instrumentation, expedition endurance. A candidate tracking readiness percentage, weak-domain needles, and a countdown is the same gesture as a tool watch tracking altitude and heart rate. The headline for this product is "PASS THE BOARD. NOT EVENTUALLY."
Mode. Dark mode only.
Colour tokens by role.
| Role | Hex | Use |
|---|---|---|
| Background | #0E1113 | Graphite-titanium dark ground; the page ground everywhere |
| Surface | #1A1E22 | Brushed-steel panel surfaces |
| Hairline | #2C3238 | 1px dividers; bezel outer and inner strokes |
| Text | #EDE9E3 | Warm champagne-ink text for all reading |
| Primary | #C8752E | Instrument amber — live/urgent signals ONLY: countdown numbers, the readiness needle, the active exam-mode button, one underlined link per screen |
| Accent | #3FA8A0 | Cold teal — "mastered" states and correct-answer confirmation ONLY |
| Muted | #8A857C | Titanium grey — labels, secondary data, disabled states |
Colour rules. Amber and teal never appear in the same component; they are the two needles of the instrument. Proportion: 80% dark ground, 14% surface panels, 5% amber, 1% teal. No blue/indigo primary or accent anywhere — no #2563EB, #4F46E5, #7C3AED or neighbours, including focus rings and links. No white or near-white page ground. No purple-to-pink gradient washes.
Typography.
clamp(56px, 9vw, 128px)); h1 40/56/72; h2 28/34/40; h3 20/22/24; body 17/18/18; label 12px uppercase tracked 0.08em; data numeral 32/44/56 tabular.Shape language. Instrument geometry: circular gauges and bezel rings as the primary motif, ruled data rows with hairline dividers, chamfered corners (6px radius max, never pill), squared-off buttons with a 2px inset top highlight that reads as a machined edge. Bezel rings get a 1px outer stroke plus a 1px inner stroke in #2C3238 so they look milled, not flat. Needle sweeps and tick marks are drawn as real SVG, not decoration.
Spacing rhythm. Strict 12-column grid with a 24px gutter (16px at 375px). Edge-to-edge dark panels. Sticky top nav is a thin 56px instrument bar.
Imagery style. Macro photography only: brushed titanium and sapphire glass surfaces, a knurled bezel edge, a topographic contour line, a leather strap grain — all on flat dark grounds, lit from one side like a product studio. No stock people, no clip art, no illustrated characters. One expedition-adjacent photograph (a ridgeline at dawn, desaturated to graphite with a single amber highlight) may be used full-bleed once as a section divider. Product screenshots are shown inside a machined bezel frame, tilted 3° in CSS perspective, never floating in a gradient blob.
Layout. Hero is a full-bleed instrument panel, not a centred marketing stack. Below it, a "domain readiness" band of ruled rows — each exam domain as a horizontal row with a label, a thin amber bar, and a tabular percentage, like a watch's complication list. Feature sections alternate: left column a macro material photograph bleeding off the right edge, right column a three-item ruled spec list. Pricing is a ruled comparison table with an amber underline on the recommended column, never three floating cards.
Readable text and controls. Headlines, wordmarks, labels, numbers, cards' text and controls stay entirely inside the viewport and their container at 375px, 768px, and 1280px, wrapping or scaling (for example font-size: clamp(...) with its mobile size) to fit, and no other element covers any part of them. Imagery, decoration, and motion may be cropped, bled off an edge, rotated, overlapped, or cut exactly as the direction asks, as long as they cover no readable text or control. Where the direction asks readable text or a control to be cropped, clipped, covered, or run off an edge, keep it whole and carry the gesture with imagery or decoration instead.
The readiness gauge as the hero's dominant element — the number is the product promise, not a screenshot.
The public entry is a full-bleed graphite instrument panel, not a centred SaaS stack. On the left 7 columns: a stacked Saira Condensed uppercase headline — "PASS THE BOARD" on line one in #EDE9E3, "NOT EVENTUALLY" on line two indented 8% and set in amber #C8752E — at clamp(56px, 9vw, 128px) with 0.95 leading. Beneath it, one ~60-word paragraph in Barlow #8A857C, then a single squared amber button "Start a 20-question diagnostic" and one underlined text link "See how gap analysis works".
On the right 5 columns sits a 320px circular readiness gauge on a #1A1E22 panel that bleeds off the right viewport edge at desktop. The gauge is built from concentric hairline bezel rings in #2C3238 — a 1px outer stroke plus a 1px inner stroke so it reads as milled rather than flat — with tick marks every 5% drawn as real SVG. An amber needle rests at 68%; the number "68%" is set in 56px tabular Barlow Semi Condensed so it never jitters; the label "NCLEX-RN READINESS" is tracked 0.08em beneath it.
On load, the needle sweeps from 0 to 68% over 900ms with an ease-out cubic while the tabular counter counts up in lockstep. This is the whole concept in one gesture: the product's promise is a precise number about your readiness, delivered by an instrument, not a marketing claim.
Below the hero, the "domain readiness" band carries the same language at full width: twelve hairline-separated ruled rows, each with an uppercase tracked domain label, a 2px amber progress rule, and a right-aligned tabular percentage — the whole exam broken down like a watch's complications, no cards, no shadows. The sticky 56px instrument nav bar above it reads as a device bezel: wordmark left, exam selector as a segmented control (NCLEX / CPA / BAR / REALTOR) with the active segment filled amber, and one squared "Start drill" button.
At 375px the gauge stacks below the headline, shrinks to 220px, and the headline wraps to four lines, all fully inside the viewport.
Interaction Model: Animated Motion Tempo: cinematic Hero Dimensionality: dimensional_css
Landing Hero Motion Brief.
#1A1E22 panel that bleeds off the right viewport edge.#0E1113 with the hero panel in place, the headline fully set, the gauge bezel rings and tick marks already drawn, the needle at rest at 0%, and the counter reading 0% — a composed instrument at rest, not a blank or a spinner.Landing Hero 3D Scene Brief — DIRECTION-DERIVED. The direction's hero dimensionality is dimensional_css, so the hero is a crafted layered CSS object rather than a WebGL scene: the gauge is composed of real stacked layers — the #1A1E22 panel, the outer bezel ring stroke, the inner bezel ring stroke, the SVG tick-mark layer, the SVG needle layer, and the tabular numeral layer — each with its own depth and its own animation timing, so the needle sweep reads as a physical instrument moving inside a milled case rather than a flat stat card. No Canvas, R3F, or Drei is required.
NFR-1 — Mobile-first, iOS-first delivery. The product is delivered mobile-first, prioritizing iOS, per the brief's execution guidance ("Prioritize Mobile iOS First: Apple's App Store consistently generates significantly higher revenue per user than Google Play for non-gaming consumer apps"). Provenance: explicit. Rationale: the accepted audience and monetization model depend on iOS-first distribution.
NFR-2 — Native device capabilities, not a wrapped website. The product must use core mobile capabilities — push notifications for study and exam-date reminders, and offline syncing of drill progress — rather than functioning as a wrapped website. Provenance: explicit ("Focus on Native Device Features: Ensure the app utilizes core mobile capabilities (camera, push notifications, offline syncing, or location) rather than functioning as a wrapped website"). Rationale: the accepted offline and reminder behavior (FR-11) is only achievable with native capability.
NFR-3 — Durable candidate state. Candidate identity, exam selection, exam date, drill history, answer attempts, per-domain readiness, and explanations must persist durably and remain bound to the correct candidate across sessions and devices. Provenance: required_inference. Rationale: a readiness percentage and a gap diagnosis are only meaningful as the candidate's own durable state; without continuity the accepted outcomes are unachievable.
NFR-4 — AI service dependency. Question generation, gap diagnosis, and mistake explanation depend on an AI service. Provenance: explicit ("AI generates realistic practice questions, diagnoses exact knowledge gaps, and explains mistakes on demand"). Rationale: these are the product's defining capabilities; the AI service is a system actor, not a persona, and has no page of its own.
NFR-5 — Provider-owned payment. Payment instrument handling and recurring billing are owned by the subscription/payment provider; the product surfaces plan selection and entitlement state and does not handle card details. Provenance: required_inference (the accepted monetization models require a payment owner, and the product's own surfaces do not accept card data). Rationale: keeps payment handling with its accepted owner and out of first-party scope.
NFR-6 — Accessibility and reduced motion. With prefers-reduced-motion, the needle and counters render at their final value instantly, reveals become static, and the countdown still updates its number without any transition. Readable text and controls stay whole at 375px, 768px, and 1280px. Provenance: explicit (creative direction). Rationale: the instrument must remain readable and usable without motion.
NFR-7 — Performance of the instrument. The readiness needle sweep completes in 900ms with ease-out cubic, panel reveals in 240ms, and the countdown ticks once per second; numerals use tabular figures so counters never jitter. Provenance: explicit (creative direction). Rationale: the instrument's credibility depends on precise, non-jittering motion.
NFR-8 — Monetization range. The accepted price points are $20–$50/month for the subscription and a fixed test-pass pass. Provenance: explicit. Rationale: the accepted monetization model for this product.
Assumptions.
Constraints.
#C8752E is used only for live/urgent signals — countdown numbers, the readiness needle, the active exam-mode button, one underlined link per screen. Teal #3FA8A0 is used only for "mastered" states and correct-answer confirmation. Amber and teal never appear in the same component. Provenance: explicit (creative direction).#3FA8A0 "mastered" check.No completed page designs yet.
Completed design pages will appear here when they are ready to preview.
No completed page designs yet.
Completed design pages will appear here when they are ready to preview.
No comments yet. Be the first!