|
| 1 | +# QuantPath — Product Vision & Architecture |
| 2 | + |
| 3 | +## What QuantPath Is |
| 4 | + |
| 5 | +A data-driven graduate program application decision engine. Applicants input their profile, the system outputs competitiveness percentile per program, most-similar admitted applicant profiles, and gap diagnosis. Replaces traditional consultants (¥25,000–¥500,000+) with structured data and matching algorithms. |
| 6 | + |
| 7 | +**Core insight**: consultants sell pattern recognition. QuantPath replaces personal experience with full-population data. |
| 8 | + |
| 9 | +## Phased Roadmap |
| 10 | + |
| 11 | +| Phase | Scope | Status | |
| 12 | +|-------|-------|--------| |
| 13 | +| **Phase 1 (MVP)** | MFE / MQF / MSFM programs | **In progress — core engine complete** | |
| 14 | +| Phase 2 | Data Science / Statistics / OR masters | Planned | |
| 15 | +| Phase 3 | CS masters (200+ programs, largest TAM) | Planned | |
| 16 | + |
| 17 | +## Founder |
| 18 | + |
| 19 | +Ethan Yang (杨毅诚) — UIUC undergraduate (CS + Economics + Statistics triple major, GPA 4.0, Class of 2027). Quantitative Researcher at Square Kettle LLC. Solo-authored prediction market pricing paper (Wang Transform, submitted to FMA 2026). Applying Fall 2027 MFE (targeting Princeton ORFE, CMU MSCF, Baruch MFE, Columbia MSFE). |
| 20 | + |
| 21 | +Ethan's own application process is the first use case and best content marketing asset. |
| 22 | + |
| 23 | +Open-source track record: oracle3 (126+ stars), clawdfolio (PyPI), Coinjure (12,000+ lines contributed). |
| 24 | + |
| 25 | +--- |
| 26 | + |
| 27 | +## Current State (as of March 2026) |
| 28 | + |
| 29 | +### What's Built |
| 30 | + |
| 31 | +**Core Engine** (15,000+ lines Python, 465 tests, all passing): |
| 32 | +- `profile_evaluator` — 5-dimension scoring across 37 sub-factors (Math 30%, Stats 20%, CS 20%, Finance 15%, GPA 15%) |
| 33 | +- `school_ranker` — Reach/target/safety classification using P(admit) thresholds |
| 34 | +- `lr_predictor` — Per-program logistic regression with bias correction (21 trained models) |
| 35 | +- `list_builder` — Portfolio optimization with geographic diversity enforcement |
| 36 | +- `gap_advisor` — Gap analysis with priority-ranked action recommendations |
| 37 | +- `course_optimizer` — Course impact optimization (37 categories including reinforcement learning) |
| 38 | +- `prerequisite_matcher` — Maps coursework against each program's requirements |
| 39 | +- `roi_calculator` — Tuition vs salary NPV analysis |
| 40 | +- `timeline_generator` — Month-by-month application action plan |
| 41 | +- `calibrator` — Model calibration from real admission data |
| 42 | +- `interview_prep` — Question bank by category and difficulty |
| 43 | + |
| 44 | +**Surfaces**: |
| 45 | +- CLI with 15+ commands (`quantpath evaluate`, `list`, `match`, `gaps`, `compare`, `roi`, `whatif`, `portfolio`, etc.) |
| 46 | +- Streamlit web dashboard (6 pages with Plotly charts) |
| 47 | +- PDF report generation |
| 48 | +- Claude AI advisory report (`tools/advisor.py`) |
| 49 | + |
| 50 | +**Data Assets**: |
| 51 | + |
| 52 | +| Dataset | Records | Source | Notes | |
| 53 | +|---------|---------|--------|-------| |
| 54 | +| Admission records | 6,984 | GradCafe, QuantNet | Accepted/rejected with GPA, GRE, bg_type | |
| 55 | +| Offer results | 646 | offer.1point3acres.com API | AD/Reject with exact dates, 12 programs | |
| 56 | +| LinkedIn alumni | 930 | Brave Search (Google-indexed profiles) | Employer, undergrad school, 20 programs | |
| 57 | +| Offer backgrounds | 15 | offer.1point3acres.com modals | Structured GPA, school tier, research, internships | |
| 58 | +| Parsed threads | 22 | 1point3acres forum posts | Regex-parsed admission results | |
| 59 | +| BBS threads | 24 | 1point3acres BBS (logged in) | Forum narrative posts | |
| 60 | +| Program database | 28 | QuantNet 2026 Rankings + official sites | Prerequisites, deadlines, salaries, class profiles | |
| 61 | +| Trained LR models | 21 | Per-program from admission records | Bias-corrected P(admit) with confidence intervals | |
| 62 | + |
| 63 | +**Tools**: |
| 64 | +- `tools/scrape_1p3a.py` — 1point3acres forum scraper + regex parser (handles Chinese + English post formats) |
| 65 | +- `tools/scrape_offer_backgrounds.py` — Playwright-based offer platform scraper |
| 66 | +- `tools/collect_data.py` — QuantNet + GradCafe scraper (requests + BeautifulSoup + Claude parsing) |
| 67 | +- `tools/scrape_gradcafe.py` — Regex-based GradCafe/QuantNet scraper (no AI dependency) |
| 68 | +- `tools/parse_admissions.py` — Chinese forum post parser (regex, no API key needed) |
| 69 | +- `tools/parse_profile.py` — Resume/transcript → YAML parser (Claude-powered) |
| 70 | +- `tools/advisor.py` — Full AI advisory report generator |
| 71 | +- `tools/train_model.py` — sklearn logistic regression training pipeline |
| 72 | +- `tools/clean_data.py` — Data deduplication and cleanup |
| 73 | + |
| 74 | +### What's NOT Built Yet |
| 75 | + |
| 76 | +- Web frontend (Next.js or similar) — currently CLI + Streamlit only |
| 77 | +- User accounts / data submission portal |
| 78 | +- Database backend (PostgreSQL/Supabase) — currently file-based (YAML + CSV + JSON) |
| 79 | +- Multi-feature admission model (planned: GPA + bg_tier + internships + research) |
| 80 | +- Community features (discussion, alumni directory) |
| 81 | +- B2B analytics dashboard |
| 82 | +- Premium subscription system |
| 83 | + |
| 84 | +--- |
| 85 | + |
| 86 | +## Product Architecture (Three Layers) |
| 87 | + |
| 88 | +### Layer 1: Program Database |
| 89 | + |
| 90 | +28 MFE programs with standardized fields. Stored as YAML in `data/programs/`. |
| 91 | + |
| 92 | +```yaml |
| 93 | +# Example: data/programs/cmu-mscf.yaml |
| 94 | +id: cmu-mscf |
| 95 | +name: MSCF |
| 96 | +full_name: MS in Computational Finance |
| 97 | +university: Carnegie Mellon University |
| 98 | +department: Tepper School of Business |
| 99 | +quantnet_ranking: 3 |
| 100 | +acceptance_rate: 0.172 |
| 101 | +class_size: 108 |
| 102 | +avg_gpa: 3.86 |
| 103 | +avg_base_salary: 134259 |
| 104 | +tuition_total: 120000 |
| 105 | +prerequisites: |
| 106 | + required: |
| 107 | + - {category: calculus, level: "I-III"} |
| 108 | + - {category: probability, level: calculus-based} |
| 109 | + - {category: programming, level: introductory} |
| 110 | + recommended: |
| 111 | + - {category: real_analysis} |
| 112 | + - {category: stochastic_calculus} |
| 113 | + - {category: numerical_methods} |
| 114 | + languages: [cpp, python, r] |
| 115 | +deadline_rounds: |
| 116 | + - {round: 1, date: "2026-12-01"} |
| 117 | + - {round: 2, date: "2027-01-15"} |
| 118 | +``` |
| 119 | +
|
| 120 | +### Layer 2: Applicant Profile |
| 121 | +
|
| 122 | +Structured YAML profiles. Current schema in `core/models.py`: |
| 123 | + |
| 124 | +```yaml |
| 125 | +personal: |
| 126 | + name: "Applicant Name" |
| 127 | + university: "University" |
| 128 | + majors: ["CS", "Statistics"] |
| 129 | + gpa: 4.0 |
| 130 | + is_international: true |
| 131 | +
|
| 132 | +courses: |
| 133 | + - {code: "STAT433", name: "Stochastic Processes", category: "stochastic_processes", grade: "A", level: 400} |
| 134 | + # 37 course categories across Math/Stats/CS/Finance |
| 135 | +
|
| 136 | +experience: |
| 137 | + - {type: internship, company: "Firm", title: "Quant Research Intern", duration_months: 3} |
| 138 | +
|
| 139 | +projects: |
| 140 | + - {name: "Project", description: "...", has_paper: true} |
| 141 | +``` |
| 142 | + |
| 143 | +### Layer 3: Matching Engine |
| 144 | + |
| 145 | +Currently implemented as: |
| 146 | +1. **Profile scoring**: 5-dimension weighted evaluation → overall 0-10 score |
| 147 | +2. **Admission prediction**: Per-program logistic regression → P(admit) with CI |
| 148 | +3. **Prerequisite matching**: Course-by-course comparison → match percentage |
| 149 | +4. **Gap analysis**: Identify missing prerequisites + prioritized recommendations |
| 150 | +5. **School ranking**: Reach/target/safety classification based on P(admit) thresholds |
| 151 | +6. **Portfolio optimization**: Greedy selection maximizing expected admits under budget |
| 152 | + |
| 153 | +**Planned upgrade** (see `plans/` directory): |
| 154 | +- Two-stage hierarchical model: per-program GPA base + global soft-feature adjustments (bg_tier, internship, research) |
| 155 | +- LinkedIn data as bg_tier priors per program |
| 156 | +- GRE demoted to threshold gate (not linear feature) |
| 157 | + |
| 158 | +--- |
| 159 | + |
| 160 | +## Data Acquisition Strategy |
| 161 | + |
| 162 | +All acquisition methods are authorized. Current pipelines: |
| 163 | + |
| 164 | +| Method | Source | Records | Tools | |
| 165 | +|--------|--------|---------|-------| |
| 166 | +| GradCafe scraper | thegradcafe.com | 6,700+ | `tools/scrape_gradcafe.py` (regex) | |
| 167 | +| QuantNet scraper | quantnet.com | 250+ | `tools/collect_data.py` (requests + Claude) | |
| 168 | +| 1point3acres API | offer.1point3acres.com | 646 | XHR interception via Playwright | |
| 169 | +| 1point3acres forum | bbs.1point3acres.com | 100+ threads | `tools/scrape_1p3a.py` (Playwright + regex) | |
| 170 | +| LinkedIn search | Google-indexed profiles | 930 | Brave Search API, 7 rounds of targeted queries | |
| 171 | +| Offer modal scraper | offer.1point3acres.com | 15 | Playwright click-through with member login | |
| 172 | +| Chinese forum parser | 小红书, ChaseDream, OfferShow | 7 | `tools/parse_admissions.py` (Claude) | |
| 173 | +| Official program sites | University websites | 28 programs | Manual + structured YAML | |
| 174 | + |
| 175 | +**Cold-start executed**: Started from 0, now at 8,500+ records across 5 sources. |
| 176 | + |
| 177 | +**Next data targets**: |
| 178 | +- ChaseDream MFE 录取汇报 (structured template format, high quality) |
| 179 | +- 小红书 MFE admission posts (public, rich background data) |
| 180 | +- Reddit r/QuantFinance and r/gradadmissions |
| 181 | +- More LinkedIn rounds with new query strategies |
| 182 | +- User-submitted data once web frontend launches |
| 183 | + |
| 184 | +--- |
| 185 | + |
| 186 | +## Target Tech Stack (Web Product) |
| 187 | + |
| 188 | +**Current** (CLI/Local): |
| 189 | +``` |
| 190 | +Python 3.10+ → CLI (argparse + rich) + Streamlit dashboard |
| 191 | +Data: YAML + CSV + JSON files |
| 192 | +Models: sklearn → JSON (no pickle) |
| 193 | +Tests: pytest (465 tests, <1s) |
| 194 | +CI: GitHub Actions (Python 3.11 + 3.12) |
| 195 | +``` |
| 196 | +
|
| 197 | +**Planned** (Web SaaS): |
| 198 | +``` |
| 199 | +Frontend: Next.js 14+ / App Router + TypeScript + Tailwind + shadcn/ui |
| 200 | +Backend: Python FastAPI (ML pipeline) + Next.js API Routes (CRUD) |
| 201 | +Database: PostgreSQL (Supabase) with Row Level Security |
| 202 | +Auth: Supabase Auth (email + Google + LinkedIn OAuth) |
| 203 | +ML: Current sklearn pipeline → FastAPI endpoint |
| 204 | +Hosting: Vercel (frontend) + Railway/Fly.io (FastAPI) |
| 205 | +Analytics: PostHog (product) + Sentry (errors) |
| 206 | +``` |
| 207 | +
|
| 208 | +Why this stack: Next.js for SEO (applicants search "CMU MSCF admission stats"), Supabase for rapid auth/DB, FastAPI for Python ML pipeline compatibility, separate frontend and ML backend for independent iteration. |
| 209 | +
|
| 210 | +--- |
| 211 | +
|
| 212 | +## Monetization |
| 213 | +
|
| 214 | +``` |
| 215 | +Free: Browse programs, basic matching (GPA + GRE), 3 queries/month |
| 216 | +Premium: $15-30/month — unlimited matching, multi-dimensional scoring, |
| 217 | + similar applicant profiles, gap diagnosis, deadline reminders |
| 218 | +B2B: $50K-500K/year — enrollment analytics for MFE programs |
| 219 | + (yield prediction, applicant pipeline insights) |
| 220 | +``` |
| 221 | +
|
| 222 | +Priority: user growth first, monetization later. Free tier must be genuinely useful. |
| 223 | +
|
| 224 | +--- |
| 225 | +
|
| 226 | +## Competitive Landscape |
| 227 | +
|
| 228 | +| Competitor | Strength | QuantPath Advantage | |
| 229 | +|-----------|----------|-------------------| |
| 230 | +| QuantNet rankings | Brand, community | Personalized matching (not just rankings) | |
| 231 | +| GradCafe | 840K+ data points | Structured data (vs free text), course matching | |
| 232 | +| 一亩三分地 | Chinese user base | English-first, global programs, no paywall | |
| 233 | +| Admissionado / consulting | Personal guidance | 100x cheaper, data-driven, instant results | |
| 234 | +| ChaseDream | Chinese MFE community | Automated analysis vs manual forum posts | |
| 235 | +
|
| 236 | +**Moat**: Data network effects — more users submit data → better matching → more users. Course-level prerequisite matching is unique (no competitor does this). |
| 237 | +
|
| 238 | +--- |
| 239 | +
|
| 240 | +## Code Conventions |
| 241 | +
|
| 242 | +- Python: snake_case, type annotations, numpy-style docstrings |
| 243 | +- TypeScript (future): camelCase, functional components, Zod validation |
| 244 | +- Git: conventional commits (feat/fix/docs/refactor) |
| 245 | +- Testing: all core logic must have unit tests (pytest) |
| 246 | +- Privacy: user data anonymized by default, PII only visible to owner |
| 247 | +- Models: JSON format (no pickle), portable across platforms |
| 248 | +- Dependencies: minimize core deps (PyYAML + rich only for engine) |
0 commit comments