DEBUG: Raw major_slug = ""
DEBUG: Initial offers_url = "https://www.collegefactual.com/majors/construction-trades/carpenters/offers.json", major_slug = ""
DEBUG: After cleaning major_slug = ""
DEBUG: Before URL cleaning = "https://www.collegefactual.com/majors/construction-trades/carpenters/offers.json"
DEBUG: After TrimSuffix = "https://www.collegefactual.com/majors/construction-trades/carpenters/offers.json"
DEBUG: After HTTPS placeholder = "HTTPS_TEMP_PLACEHOLDERwww.collegefactual.com/majors/construction-trades/carpenters/offers.json"
DEBUG: After slash cleaning = "HTTPS_TEMP_PLACEHOLDERwww.collegefactual.com/majors/construction-trades/carpenters/offers.json"
DEBUG: After URL cleaning = "https://www.collegefactual.com/majors/construction-trades/carpenters/offers.json"
DEBUG: offers_url = https://www.collegefactual.com/majors/construction-trades/carpenters/offers.json
DEBUG: major_slug = ""
DEBUG: offers_url is valid, proceeding to fetch data
DEBUG: offers_data.offers found, count = 8
DEBUG: Specific major detected (cip4 = 46.02), keeping min_relevance at 0.8
DEBUG: Starting relevance filtering - min_relevance = 0.8, max_relevance = 1
DEBUG: Checking offer "Trade & Vocational Programs (Carpenter)" with relevance 1
DEBUG: ✓ Offer "Trade & Vocational Programs (Carpenter)" ACCEPTED (relevance 1)
DEBUG: Checking offer "Trade & Vocational Programs" with relevance 0.8
DEBUG: ✓ Offer "Trade & Vocational Programs" ACCEPTED (relevance 0.8)
DEBUG: Checking offer "Trade & Vocational Programs (Woodworker)" with relevance 0.8
DEBUG: ✓ Offer "Trade & Vocational Programs (Woodworker)" ACCEPTED (relevance 0.8)
DEBUG: Checking offer "MS in Management - Construction Management" with relevance 0.8
DEBUG: ✓ Offer "MS in Management - Construction Management" ACCEPTED (relevance 0.8)
DEBUG: Checking offer "Trade & Vocational Programs (Construction Trades)" with relevance 0.7
DEBUG: ✗ Offer "Trade & Vocational Programs (Construction Trades)" REJECTED (relevance 0.7)
DEBUG: Checking offer "Trade & Vocational Programs (Home Remodeling & Repair)" with relevance 0.7
DEBUG: ✗ Offer "Trade & Vocational Programs (Home Remodeling & Repair)" REJECTED (relevance 0.7)
DEBUG: Checking offer "Construction Management (I Have a HS Diploma or Associate Degree)" with relevance 0.5
DEBUG: ✗ Offer "Construction Management (I Have a HS Diploma or Associate Degree)" REJECTED (relevance 0.5)
DEBUG: Checking offer "Construction Management (I Have a Bachelors)" with relevance 0.5
DEBUG: ✗ Offer "Construction Management (I Have a Bachelors)" REJECTED (relevance 0.5)
DEBUG: relevant_offers count = 4
DEBUG: relevant_offers > 0, checking for ESYOH offers
DEBUG: ESYOH filtering - found 3 ESYOH offers with relevance >= 0.8
DEBUG: esyoh_offers count = 3
DEBUG: ESYOH offers found, rendering ESYOH widget
DEBUG: most_relevant_only = true, filtering for most relevant
DEBUG: Found 1 offers with relevance >= 1.0
Best Schools for Carpentry in Missouri
Below are the schools that deliver the strongest overall carpentry education in Missouri.
Top Schools in Carpentry
Leading the list is Ranken Technical College, our #1 school for carpentry. Set in the city of Saint Louis, Ranken Technical College is a mid-sized private not-for-profit institution. The six-year graduation rate is 31%. Ranken Technical College awarded about 33 carpentry degrees in the most recent data year. Graduates of the carpentry program make about $35,975 in their early career. Ranken Technical College graduates carry a median of $12,000 in student loans.
See the full carpentry program report for Ranken Technical College