Skip to content

Commit 3500b3a

Browse files
docs: add product vision with accurate project status
Three-layer architecture (program DB, applicant profiles, matching engine) with honest assessment of what's built vs planned: Built: 15K LOC engine, 465 tests, 28 programs, 8,500+ data records, 21 trained models, CLI + Streamlit + AI tools, data pipelines for 5 sources (GradCafe, QuantNet, 1point3acres, LinkedIn, forums). Not built: web frontend, user accounts, database backend, multi-feature model, community features, monetization. Includes: data acquisition strategy, tech stack (current vs planned), monetization model, competitive landscape, code conventions. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent 2d1f1d7 commit 3500b3a

1 file changed

Lines changed: 248 additions & 0 deletions

File tree

docs/PRODUCT_VISION.md

Lines changed: 248 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,248 @@
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

Comments
 (0)