✅ Tasks
52 tasks
📋 To Do 4
Build Interview Process ranking — Most Applicant-Friendly Interview
Data in med_schools.med_school_interview (172 schools). Ranking factors: virtual interview availability, MMI vs traditional format, interview duration, closed-file policy. Build: /medical-schools/rankings/best-interview-process. Completely unique — no competitor has this. High SEO value for queries like 'medical schools virtual interview 2026'.
Build Specialty Match Rate rankings — Best Schools for [Specialty]
Build family of ranking pages: /medical-schools/rankings/best-for-dermatology, surgery, psychiatry, internal-medicine, pediatrics, family-medicine, radiology. Data is in med_schools.med_school_specialty (exists). Each page ranks schools by match rate. Ship Dermatology and Surgery first as proof of concept. High SEO value, near-zero competition.
GEO: Build comparison pages /medical-schools/compare/[a]-vs-[b]
Dynamic route for side-by-side school comparisons. Table with key metrics. FAQPage schema. Seed top matchups. Internal links from school pages.
Set up Bird CLI for X search (last30days skill)
Authenticate Bird CLI to enable X/Twitter search in the /last30days skill. Options: 1. Login to X in managed browser (Bob opens x.com, you login) 2. Manually provide auth_token and ct0 cookies from your browser This enables the skill to search X posts in addition to Reddit.
⚡ In Progress 1
Build Design Pipeline Tool (design.widerwings.com)
Guided web app: Q&A brief → inspiration gallery → design system → build → screenshot QA → component polish → delivery. PRD: company/specs/DESIGN_TOOL_PRD.md. Trigger: After MedSchools.ai launch.
👀 Review 0
✅ Done 47
Add noindex meta tag on dev/preview Vercel environments
robots.txt on dev correctly disallows bots but no noindex meta in HTML. Update root layout or MetaTags.svelte to inject <meta name=robots content=noindex,nofollow> when VERCEL_ENV===preview or non-production. Belt-and-suspenders best practice.
Fix llms.txt and llms-full.txt with real URLs
Current llms.txt has empty Medical School Directory section and [state] placeholder. Fix: (1) Add all 50 state hub URLs, (2) Top 10 blog links with real URLs, (3) Add notice: all pages support ?format=md for AI-readable markdown, (4) Add AI Tools section (/chat and /dashboard/interview), (5) Fix school count to accurate 173 US schools. llms-full.txt: populate Medical School Directory with all 173 school profile URLs dynamically from DB.
Build author bio pages with E-E-A-T signals
Create /blog/authors/[slug] pages for each of 6 writer personas. Each page: author name, credentials/expertise, photo/avatar, 2-3 paragraph bio, article list, social links. Cross-link: every article byline links to bio page. Add Person JSON-LD on each bio page. Mandatory E-E-A-T signal for medical content.
Add FAQ schema + Q&A accordion blocks to blog posts
Every blog post needs: (1) 3-5 Q&A pairs as expandable accordion at bottom of post, (2) FAQPage JSON-LD schema in page head. Add qa_pairs JSONB field to content.articles if needed. Highest GEO/citation impact change we can make to blog content. Accordion component already exists (shadcn).
Fix homepage title tag — add brand + primary keyword
Homepage title tag is missing primary keyword. Update to: MedSchools.ai — AI-Powered Medical School Admissions Guide (2026). Meta description should be compelling and keyword-rich. 10-minute fix with real SEO signal.
Filter school directory to US-only — remove Canadian and Caribbean schools
Directory shows Canadian province codes (BC, MB, NL, NS, ON, QC, SK) in state browse list. Add US-only filter to all public-facing queries. Define US_STATE_CODES constant. Do NOT delete records — filter at query level. Verify no non-US schools appear on any public page.
Generate dynamic sitemap.xml with all school/state/ranking/blog URLs
Current sitemap has ~30 URLs. Generate server-side at /sitemap.xml. Must include: all 190+ school profile pages (after 404 fix), 50 state hub pages, all ranking pages, all blog posts, all guides, all glossary pages. Exclude admin/auth routes. Ship after school 404 fix is confirmed.
Fix school profile 404s + ID+slug URL resilience
Root cause: +layout.server.ts queries med_school_admissions and secondary_essay tables which do not exist. Fix: (1) Replace with correct table names (med_school_acceptance or med_school_selection; secondary_essay_questions). (2) Implement ID+slug URL scheme: /medical-schools/california/25727-university-of-california-los-angeles. Server looks up by medical_school_id (NOT inst_id — important!), slug is decorative. (3) Add 301 redirects from old slug-only URLs. All 190+ school profile pages must return 200.
Build Micro-Pullback Signal Detector (Ross Cameron Method)
✅ DONE - Micro-Pullback Signal Detector built. Backend service (rally/pullback detection, entry/exit signals), API endpoints (/detect-signal, /detect-exit, /live, /signals, /stats), Postgres tables, and SvelteKit frontend with live alerts and historical signals. Integrated into main app and navigation.
Build Pre-Market Gap Scanner (Ross Cameron Five Pillars)
✅ DONE - Pre-Market Gap Scanner built. Backend service (5 pillars detection), API endpoints (/scan, /latest), Postgres table for results, and SvelteKit frontend with sortable table. Integrated into main app router and navigation.
GEO: QA validation of all GEO endpoints and schema markup
Validate llms.txt, llms-full.txt, robots.txt AI rules, FAQ schema, format=md, API endpoints, timestamps. Playwright tests where possible.
GEO: Rewrite school intros in answer-capsule format with question headers
Programmatic facts-first intro template (acceptance rate, MCAT, GPA in first 40-60 words). Convert section headers to question format.
GEO: Expand schema markup (ItemList, WebSite+SearchAction, Dataset)
Add ItemList on rankings, WebSite+SearchAction on homepage, CollectionPage on state pages. Update SchemaMarkup.svelte.
GEO: Add Last Updated timestamps to school/ranking/guide pages
Visible Last updated date on school profiles, rankings, guides. Use updated_at from DB. Add dateModified to schema markup.
GEO: Auto-generate FAQ sections on school profile pages
Wire up FAQAccordion component on school pages with auto-generated questions from school data (MCAT, acceptance rate, tuition, interview format, GPA). 5-8 FAQs per school.
GEO: Build public read-only API /api/v1/schools
Unauthenticated read-only API: GET /api/v1/schools (filters), GET /api/v1/schools/[slug], GET /api/v1/rankings/[type], GET /api/v1/stats. Clean JSON with meta. Rate limit 100/hr.
GEO: Add ?format=md Markdown endpoints to school/blog/guide pages
Add ?format=md query parameter to school profiles, blog posts, guides, rankings. Return clean Markdown with YAML frontmatter.
Security: Auto-Logout 30min + 2FA Google Authenticator
Auto-logout after 30min inactivity. 2FA via Google Authenticator. Critical for real money accounts.
Vanguard 401K: Pull Real Data via Plaid
Integrate Plaid for read-only positions, prices, totals from Vanguard 401K.
AI Sidebar: Context-Aware AI Panel on Key Pages
Sliding AI panel on Charts, Screener, Regime Lab. Full API access. Trading pages: recommends + queues trades. Strategy pages: helps create strategies. NO direct trades.
Pattern Phase 3: Regime-Aware Pattern Scoring
Combine rule-based + CNN patterns with regime scores. Pattern strength x regime alignment = signal strength.
Charts: Lightweight Charts + Schwab Real-Time + Pattern Overlays
Replace TradingView widget with Lightweight Charts fed by Schwab data. 70+ indicators, pattern overlays, Fibonacci, S/R, regime band coloring.
Accounts: SSR with Individual URLs
Create /accounts/[id] routes. SSR pages at /accounts/vanguard_401k etc.
Accounts: Show Positions from Portfolio
Each account in /accounts should display positions from /portfolio. Add for 401K and IRA.
401K Scanner: Prioritize Current Holdings
When scanning 401K, start with current holdings from /portfolio. Show signals for holdings first.
Accounts: SSR with Individual URLs
Create /accounts/[id] routes for each account. Server-side rendered. URL like /accounts/vanguard_401k, /accounts/alpaca_paper etc.
Accounts: Show Positions from Portfolio
Each account in /accounts should display positions pulled from /portfolio endpoint. Alpaca accounts already have this, add for 401K and IRA.
401K Scanner: Prioritize Current Holdings
When scanning 401K, start with current holdings from /portfolio. Show signals for holdings first, then opportunities.
Research: Current Stock Trading Strategy Trends (Feb 2025)
Use your Last30days skill to gather intelligence on what stock trading strategies retail and semi-pro traders are currently discussing, praising, and using. **Focus Areas:** 1. **Reddit** (r/wallstreetbets, r/stocks, r/options, r/thetagang, r/algotrading, r/daytrading) - What strategies are people claiming success with RIGHT NOW? - Any backtests or results being shared? - New strategy variations or tweaks trending? - What's working in the current market regime (Feb 2025)? 2. **Sentiment on Classic Strategies** - RSI, MACD, Moving Averages - still popular or falling out of favor? - Options strategies (wheel, covered calls, spreads) - what's hot? - Momentum vs mean reversion - which camp is winning? 3. **New/Emerging Approaches** - Any AI/ML trading strategies gaining traction? - Novel indicators or combinations people are excited about? 4. **What's NOT Working** - Strategies people are complaining about or abandoning - Market conditions making certain approaches fail **Deliverable:** Create a report at `~/clawd/projects/hedge/research/strategy-trends-2025-02.md` with: - Top 5-10 strategies being discussed positively - Key insights on current market sentiment - Any strategy ideas worth implementing in Hedge - Direct quotes/links where valuable
Plaid Integration for Brokerage Accounts
Connect Schwab (IRA + Regular) and Vanguard (401K) via Plaid for read-only portfolio sync. Build AFTER all trading strategies are complete. Cost: ~$0.30-0.50/account/month.
Heartbeat test: Confirm you received this
Simple coordination test. If you see this task: 1. Read the Agent Capability Setup Guide in Second Brain (memory id: 42f30741-c807-4f4a-ab7d-5fd104a7f59e) 2. Confirm you can access: mcporter, gog, gh, web_search, web_fetch 3. Reply to Henry on Telegram confirming receipt + capabilities 4. Mark this task as done This tests your Second Brain polling AND your tool access.
Write blog post: Best MCAT Prep Courses 2026
Turn Mark's research into a publishable blog post. Source: Second Brain memory f06d80db-a031-4492-aec6-839a51f40536 (Top 5 MCAT Prep Resources for 2026) Requirements: - SEO-optimized title and meta description - Comparison table (use existing data) - Clear recommendation tiers (budget/mid/premium) - Internal links to relevant MedSchools.ai pages - CTA to sign up / use our AI advisor Target: 1,500-2,000 words. Publish-ready. DEADLINE: 2 hours from assignment.
Research: Top 5 MCAT prep resources for 2026
Simple research task to test Second Brain coordination. Research the top 5 MCAT prep resources/courses for 2026. Include: - Name of resource - Price range - Key features - Pros/cons When complete, save findings to Second Brain as a memory (type: research) and update this task to done. This is a coordination test between Bob and Mark via Second Brain.
Update How Many Schools article - outdated info + CTAs
1) Remove/update travel expense references for interviews (most schools do online now). 2) Add strategic CTAs referencing MedSchools.ai features (School List Builder, AI Advisor). 3) Link to new cost calculator when ready. Keep natural, not salesy.
Build Contextual AI Assistant Panel (Dashboard)
Major feature: Floating AI icon on right side of dashboard pages. Slides out as panel when clicked. Fully contextual to current page (PS, Activities, School List). Must have access to user data. Chat interface for feedback/guidance. Mobile: full screen. This is the foundation for PS feedback, Activities helper, School List strategist.
Create standalone Application Cost Calculator page
Build /tools/application-cost-calculator page. Inputs: number of schools, primary app fee, secondaries, score reports. Output: total cost breakdown. CTA to log in for personalized calc based on actual school list. Link from How Many Schools article.
Improve blog table styling for readability
Tables in blog articles are hard to read. Improve with: smaller fonts, lighter background colors, visible borders, mobile-responsive (horizontal scroll or stacked). Start with How Many Schools article, then apply to all.
Polish auth email templates
Update Supabase email templates with MedSchools.ai branding.
Set up analytics (Plausible or GA4)
✅ DONE - Analytics research complete. Recommendation: Plausible Analytics (FERPA-compliant, $20/mo, native SvelteKit support). Setup guide with code saved to /home/henryk/clawd/projects/medschools_ai/docs/ANALYTICS_SETUP.md
Set up Google Search Console
Set up GSC for dev.medschools.ai. Verified via HTML meta tag. Sitemap submitted. Note: Will need to add medschools.ai (production) when DNS is pointed to Vercel.
Add OG images and social meta tags
Open Graph and Twitter Card meta tags. Default OG image with branding.
Implement sitemap.xml and robots.txt
Generate dynamic sitemap with all public pages. Add robots.txt.
Create branded 404 and 500 error pages
Add custom error pages matching site design with navigation back to home.
Complete Stripe integration (paywalls + webhook)
Add billing schema, paywalls on features, complete webhook handlers, test payment flow.
Implement coupon/invite code system
For F&F beta: create invite codes that grant free access. Stripe coupon codes or custom invite table.
Configure Google OAuth consent screen branding
Accepted limitation: Supabase free tier shows project URL in OAuth. App name shows correctly. Will fix with Supabase Pro upgrade post-revenue.
Persist pre-signup onboarding data across devices/sessions
Bug: When users answer onboarding questions pre-signup on one device (computer) and confirm email on another (phone), the pre-signup data is lost. Required fix: 1. After email signup initiated, save pre-signup answers to Supabase (linked to email) 2. On email confirmation, retrieve and apply saved data to user profile 3. Verify Google/Apple OAuth flow handles this correctly