Inspiration
I'm a final year CS student actively applying for frontend and fullstack developer roles. Like most job seekers, I was using generic resume feedback tools — and getting generic results. Every tool told me to "use action verbs" and "quantify your impact." Thanks. Very helpful.
What I actually needed was someone brutally honest — a friend who works at Google, reads 200 resumes a week, and will tell me without sugarcoating that my objective statement is "generic buzzword soup" and my bullet points read like a LinkedIn bot wrote them at 2am.
That friend doesn't exist. So I built one.
What it does
ResumeRoast is an AI-powered resume analyzer that gives you the feedback recruiters think but never say out loud.
- 🔥 Cooked Score (0–100) — the higher your score, the worse your resume. Ranges from "Barely Toasted 🥱" all the way to "Absolutely Cooked 💀"
- 📊 Section-by-section scoring — Summary, Experience, Skills, Projects, and Formatting each scored out of 10 with color-coded progress bars
- 💬 Full Roast — a brutal but funny AI roast of your entire resume that reads like a savage friend who actually knows what recruiters want
- 🎓 Roast / Coach Mode toggle — same analysis, two tones. Switch between savage and constructive feedback with one click
- 🎯 JD Matcher — paste a job description and get a match %, missing keywords highlighted, and your bullets rewritten specifically for that role
- ✍️ Before / After Bullet Rewrites — your weakest bullets rewritten with metrics, strong action verbs, and real impact
- 🃏 Shareable Roast Card — download a meme-style card with your Cooked Score and funniest roast line to post on Twitter/LinkedIn
- 📈 Version Tracker — upload v2 of your resume after fixing it and see your score actually improve over time
- 🏆 Public Leaderboard — three tabs: Most Cooked (hall of shame), Most Improved (redemption arc 🙌), Best Projects Section
How we built it
ResumeRoast was built entirely using MeDo — Baidu's AI-powered no-code app builder.
Coming from a fullstack development background (Next.js, TypeScript, PostgreSQL), I was skeptical at first. But I quickly realized that my engineering knowledge gave me a massive edge in how I prompted MeDo. Instead of vague prompts like "make a resume app," I described exact data models, UI states, database schema constraints, and API response shapes — essentially writing technical specs in plain English.
MeDo Plugins Used:
| Plugin | Purpose |
|---|---|
| OCR | Extracts text from uploaded PDF resumes including multi-page documents |
| Large Language Model | Powers all AI analysis — roast generation, section scoring, bullet rewrites, JD matching |
| Stripe Payments | Handles the $3 premium tier unlock for full analysis features |
| AI Search | When a JD is pasted, searches the company name in real-time and adds a "Company Intel" card with recent news and funding context |
Key Technical Decisions:
Session code system instead of user accounts — users get a unique 6-character code to track improvement across resume versions without needing to register. Codes are saved to localStorage automatically for frictionless return visits, with three recovery layers: localStorage auto-fill, optional email delivery, and name-based search as a last resort.
Opt-in leaderboard with explicit consent — users choose to submit their score with a custom display name and must tick a consent checkbox. Raw resume content is never stored — only the score, role, industry, and a single roast highlight line.
Composite unique constraint on (session_code, version_number)
in the database — allows multiple version submissions per
user while preventing duplicate entries.
Challenges we ran into
Database schema bug
The leaderboard's returning user flow was failing with:
duplicate key value violates unique constraint "leaderboard_entries_session_code_key"
The session_code column had a UNIQUE constraint that only
allowed one row per code — but our design needed multiple
rows per code (one per version). I used MeDo's debug panel
to identify the exact constraint, then fixed it by switching
to a composite unique constraint on (session_code, version_number).
DOCX file parsing The OCR plugin handled PDF perfectly but threw errors on DOCX uploads. I had to separate the file handling logic — OCR for PDFs and a dedicated DOCX extraction method for Word documents — then unify the output into the same analysis pipeline.
Prompting like an engineer The hardest challenge was translating precise engineering concepts into natural language MeDo could act on. Describing a "composite unique constraint" or "version increment logic" in plain English while being specific enough for MeDo to implement correctly took real effort and iteration.
Standing out from existing tools roastmyresume.fun already does the basic roast concept. I focused hard on what they don't do — JD-specific matching, version improvement tracking, a session-based identity system without login, and a leaderboard with meaningful categories. Every feature decision was made with "is this better than what already exists?" as the filter.
Accomplishments that we're proud of
- Built a fully functional full-stack app with a real database, authentication-free identity system, payment integration, and AI analysis — entirely through prompting
- The session code + version tracker system is genuinely novel — no other resume tool tracks improvement over time without requiring an account
- The leaderboard turned a solo tool into a community experience — people can see how they rank, get motivated to improve, and come back to submit better versions
- The Roast / Coach mode toggle on the same underlying analysis was a small technical decision that dramatically improves the app's usefulness — same data, two completely different tones
- Used 4 MeDo plugins in an integrated way where each one serves a specific purpose rather than just ticking a checkbox
- Built something I actually needed and will actually use
What we learned
- No-code tools reward engineering thinking — the quality of your output scales directly with the precision of your input. Vague prompts produce vague apps. Technical specs produce real products.
- Product decisions matter more than features — the session code system, the opt-in leaderboard consent flow, and the mode toggle weren't technical challenges. They were product decisions that made the app meaningfully better than a generic resume feedback demo.
- Debug information is everything — adding a visible debug panel during development exposed the exact database error that was causing the leaderboard bug. Without it I'd have been guessing for hours.
- Personal problems make the best projects — I built this because I needed it. That authenticity shaped every feature decision and made the submission story write itself.
What's next for ResumeRoast
- 🔗 LinkedIn URL input as an alternative to PDF upload — paste your profile link and get roasted without downloading anything
- 🏭 Industry-specific roast modes — Big Tech vs Startup vs Finance vs Design, each with tailored scoring criteria
- 👥 Team roast mode — submit your whole team's resumes and see who's most cooked (great for job hunting groups and bootcamp cohorts)
- 🤖 Auto JD fetch — paste a job posting URL instead of copying the full text manually
- 📱 Mobile app — the shareable roast card feature was built for social sharing, a native mobile experience would make it even more viral
- 🌍 Multi-language support using the Google Translation plugin — roast resumes in any language
Built With
- ai
- llm
- medo
- ocr
- parse
- postgresql
- rest
- stripe
Log in or sign up for Devpost to join the conversation.