diff --git a/README.md b/README.md index 0e38b67..12d8066 100644 --- a/README.md +++ b/README.md @@ -32,9 +32,11 @@ It is not a full multi-tenant SaaS yet because there is no database, authenticat ## What The App Does - compares a resume with a job description in real time -- extracts text from uploaded PDF resumes in the browser -- calculates an overall match score -- groups results into strong, partial, and missing keywords +- features deep AI analysis using a customized "Elite Recruiter" prompt for robust, context-aware scoring +- extracts text from uploaded PDF resumes natively in the browser +- calculates an overall match score and categorizes results (strong, partial, missing) +- dynamically sizes complex AI feedback using robust flexbox/grid UI wrapping (prevents UI blowout) +- provides clean error-handling for API rate-limits and safely parses markdown-polluted JSON - flags ATS issues and resume risks - offers copy, export, and local save actions - works on desktop and mobile @@ -97,10 +99,12 @@ sequenceDiagram ### Product experience +- deep AI integration with graceful fallbacks and user-friendly quota/rate-limit alerts +- robust, dynamic UI that intelligently handles long AI-generated text without breaking layouts - browser-first workflow with no account required - privacy-friendly resume analysis - responsive single-page interface -- local history and export utilities +- dynamic local history that automatically names sessions based on AI-detected job titles ### Delivery discipline diff --git a/server.mjs b/server.mjs index ede5ba7..0d59820 100644 --- a/server.mjs +++ b/server.mjs @@ -422,7 +422,7 @@ async function serveStatic(req, res, pathname) { createReadStream(filePath).pipe(res); } -const server = createServer(async (req, res) => { +export default async function handler(req, res) { try { const requestUrl = new URL(req.url || "/", `http://${req.headers.host || "localhost"}`); const { pathname } = requestUrl; @@ -461,8 +461,11 @@ const server = createServer(async (req, res) => { } catch (error) { json(res, 500, { error: error instanceof Error ? error.message : "Unexpected server error." }); } -}); +} -server.listen(port, () => { - console.log(`MatchlyPro server listening on http://localhost:${port}`); -}); +if (!process.env.VERCEL) { + const server = createServer(handler); + server.listen(port, () => { + console.log(`MatchlyPro server listening on http://localhost:${port}`); + }); +}