Skip to content

amy2213/MaskCoreCost

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Mask / Core / Cost

A pattern-based adult self-reflection tool exploring autism-leaning, ADHD-leaning, and mixed presentations — including masked, internalized, and emotionally-regulated patterns that conventional screeners tend to miss.

https://amy2213.github.io/MaskCoreCost/

Not a validated screening instrument. Not a diagnosis. Structured reflection only.


What's in v2.0

Content

  • 89 questions across 6 modules: Core Pattern Scan, Mask / Core / Cost, Emotional Regulation, Development and Context, Bias-Aware Presentation, Rule-Out Tension.
  • Full ADHD coverage — inattentive, hyperactive/impulsive, emotional dysregulation, rejection sensitivity, time perception, and working memory.
  • Expanded autism coverage — special interests, stimming, pragmatics/literal interpretation, social reciprocity.
  • 12 result profiles ranked by independent match score, with near-matches surfaced as secondary.

Technical

  • Signed-weight scoring with correct negative-weight normalization.
  • Computed uncertainty ceiling (no magic constants).
  • Profile matching by weighted criteria, not order-dependent if/else.
  • Local session persistence with schema versioning.
  • Keyboard-first navigation (1–5 to answer, 0 for "not sure", ← → to navigate).
  • Pre-submit answer review with jump-to-edit.
  • JSON export, print-to-PDF, shareable anonymized result URLs.
  • Interactive SVG radar chart with per-dimension tooltips.

Visual

  • Dark void palette with neon triad accent (cyan / violet / magenta).
  • Glass panels with gradient borders, backdrop blur, ambient glow.
  • Canvas particle field, mouse-reactive, pauses when tab is hidden.
  • Cinematic "synthesizing" transition before results reveal.
  • Fully motion-reduced variant when prefers-reduced-motion: reduce.
  • Print stylesheet for clean PDF exports.

Running locally

Because app.js uses ES modules, you can't just double-click index.html. You need a local server.

Easiest — VS Code + Live Server

  1. Open the folder in VS Code
  2. Install the Live Server extension
  3. Right-click index.htmlOpen with Live Server

Alternative — any static server

# Python
python3 -m http.server 8000

# Node.js
npx serve .

Then open http://localhost:8000.


Deploying to GitHub Pages

  1. Create a new GitHub repo (public) and push this folder.
  2. Go to Settings → Pages.
  3. Under Source, select Deploy from a branch, pick your default branch, and root (/).
  4. Save. GitHub will publish the site at https://<user>.github.io/<repo>/ within a minute.

No build step required — everything is pure static HTML/CSS/JS.

If you rename the repo or change hosting, the app still works because all imports are relative.


File architecture

File What it holds
index.html Markup + asset wiring. No logic.
styles.css Design tokens, dark neon aesthetic, responsive layout, print styles.
questions.js QUESTIONS, MODULES, RESPONSE_OPTIONS, SPECIFICITY_WEIGHT, SCHEMA_VERSION. Pure data.
app.js Scoring pipeline, UI rendering, persistence, keyboard, radar, particles, exports.

The separation is strict: questions.js is the single source of truth for content and can be edited without touching logic.


Scoring pipeline

answers
   │
   ▼
accumulateRawScores()   ─── handles positive + negative weights symmetrically
   │
   ▼
normalizeScores()       ─── 0 = no signal, 100 = full signal
   │
   ├── computeOverlap()
   ├── computeContradiction()
   ├── computeConsistency()
   └── computeUncertaintyScore()
         │
         ▼
computeConfidence()     ─── weighted combination, with burnout/recency penalties
   │
   ▼
buildProfile()          ─── ranked match against PROFILE_LIBRARY
   │
   ▼
renderResults()         ─── cards, radar, notes, crisis block (conditional)

Extending the tool

Add a new question

Append to the QUESTIONS array in questions.js:

{
  id: "Q090",                    // unique, sequential
  module: "core_pattern_scan",   // must exist in MODULES
  order: 90,                     // used within module for ordering
  text: "...",
  type: "surface",               // surface|internal|cost|context|developmental|ruleout
  domains: ["..."],              // freeform tags, informational only
  reverse: false,                // true = "high answer = low signal"
  specificity: "high",           // high|medium|broad
  signals: { autism: 2, ... },   // signed weight per signal
  followup_trigger: null         // reserved for future branching
}

New questions appear in the right module automatically — traversal order is (module position in MODULES, order field).

Add a new module

  1. Add { id: "...", title: "..." } to MODULES in questions.js.
  2. Add the module to MODULE_UNCERTAINTY_WEIGHT in app.js (1 for typical, 2 for high-uncertainty domains like developmental history).
  3. Assign questions to the new module id.

Add a new profile

Append to PROFILE_LIBRARY in app.js:

{
  id: "my_profile",
  label: "My Profile Label",
  criteria: [
    { score: "autism",  op: ">=", value: 55, weight: 1.0 },
    { score: "masking", op: "<",  value: 40, weight: 0.8 }
  ]
}

A profile fires when its weighted criteria cross 50%, and the highest-matching profile wins.

Add a new result card

Append to VISIBLE_RESULT_CARDS in app.js:

["Label Shown", "signal_key_in_scores"]

Add a new radar dimension

Append to RADAR_DIMENSIONS in app.js with a label and a plain-language desc. Keep to 6–9 total; too many spokes become unreadable.


Keyboard shortcuts

During the assessment:

  • 15 — choose an answer
  • 0 — "Hard to tell / Not sure"
  • — previous question
  • or Enter — next question

Privacy

Everything stays on your device. Answers are persisted to localStorage under the key mcc.session.v2 and never leave the browser. The "Copy share link" feature encodes only the final normalized score vector in the URL hash — not your individual answers.


Roadmap (not implemented)

  • Optional follow-up branches when specific signals spike (machinery exists in followup_trigger, currently unused).
  • Per-module retake without redoing the whole assessment.
  • Rendered PDF export (currently uses browser print).

Changelog

See CHANGELOG.md.

About

A pattern-based adult self-reflection tool exploring autism-leaning, ADHD-leaning, and mixed presentations—including masked and internalized patterns.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors